이 글은 보초님 깃허브 레포를 참고해서 공부한 글입니다
HTTP 는 Hyper Text Transfer Protocol 의 약자이며, 처음에는 서버와 브라우저간에 데이터를 주고 받기 위해 설계된 프로토콜이다. 지금은 서버와 서버간의 통실할 때도 많이 이용한다.
클라이언트의 state
를 유지하지 않는다.
state
를 유지한다.Connection Oriented (연결을 유지하는 모델)
Connectionless (연결을 유지하지 않는 모델)
3 way handshake
시간이 추가가 되어 클라이언트 입장에서 속도가 느려진다.기본적으로 Persistence Connection 으로 문제 해결한다. HTTP/2, HTTP/3 에서 더 많은 최적화되어 있다.
대칭키 암호화 방식은 키를 하나만 사용하는 암호화 방식이다.
해당 키를 아는 사람만이 문서를 복호화해 볼 수 있다.
대표적인 알고리즘으로 DES, AES가 있습니다.
속도가 빠르다는 장점이 있지만, 키를 교환해야한다는 문제가 있다. 키를 교환하다 키가 탈취될 수 있는 문제가 있고, 사람이 증가할수록 사람마다 키교환을 해야하기 때문에 관리해야 할 키가 많아진다.
두개의 다른 키 (공개키, 개인키) 로 데이터를 암호화하거나 서명하고 키 중 하나인 공개 키를 누구나 사용할 수 있도록 하는 방법이다.
공개키로 암호화된 데이터는 개인키로만 복호화 할 수 있다.
일반적으로 사용되는 비대칭 암호화 알고리즘은 RSA, DH가 있다.
공개키는 키가 공개 되어있기 때문에 키교환이나 키를 분배를 할 필요가 없다. 중간에 공개키를 탈취 당하더라고 개인키로만 복호화가 가능하기 때문에 보안이 좋다. 하지만 속도가 느리다는 단점이 있다.
인증 : 클라이언트에게 서버의 신원을 확인하는 수단을 제공할 수 있다.
암호화 : 인증서에는 공개키가 포함되어 있어 대칭키를 암호화 할 수 있다.
무결성 : 인증서는 고유한 서명을 생성하여 통신중에 변조되거나 수정되지 않았음을 확인할 수 있다.
신뢰: 클라이언트가 서버에 대한 신뢰를 구축할 수 있다.
SSL 과 TLS 는 HTTPS 통신에 사용되는 암호화 프로토콜이다.
1990 년대 사용되던 프로토콜 이었으나 취약점이 발견되어 현재는 사용되지 않음
SSL 1.0, SSL 2.0, SSL 3.0, TLS 1.0, TLS 1,3 까지 버전이 올라가며 마지막으로 TLS 로 명칭이 변경되었다.
전송 계층에서 보안을 제공하는 프로토콜이다. 클라이언트와 서버가 통신할 때 TLS 를 통해 제 3자가 메시지를 도청하거나 변조하지 못하도록 한다.