네트워크를 공부했던 사람이라면 TCP 의 접속 과정인 '3-way handshake', '4-way handshake' 등의 용어를 들어봤을 것이다. CS 스터디를 하던 중 나는 이번에 'SSL/TLS handshake'를 주제로 발표를 맡았다. 처음 들어봤기 때문에 생소했지만 꽤나 흥미로운 내용들이 많았다. 가령 HTTPS 에 접속하는 과정이 어떻게 이루어지는지 등 말이다. 공부하기 전 개념과 과정을 살펴보니 웹 개발자로서 꼭 필요한 내용이라고 생각이 된다. 우리가 단순히 인터넷에 접속하기까지 수 많은 패킷이 오가며 암호화 통신을 한다. 실제로 우리는 기존 인터넷 방식인 'http' 에 보안을 결합한 'https' 를 자주 접하고, 이 때 암호화 통신이 적용 된다. SSL/TLS handshake 를 ..
1. 개념 1) SSL (Secure Sockets Layer) SSL은 '보안 소켓 계층' 이라고 불리는 암호화 기반 인터넷 프로토콜이다. 1995년 Netscape 사에서 처음 개발되었으며, 인터넷 통신에서 개인 정보 보호, 인증, 데이터 무결성을 보장한다. 즉, 네트워크상의 두 디바이스 또는 애플리케이션 간에 보안 연결을 생성한다. SSL은 'Certificate Authority (CA)' 라는 디지털 인증서 발급 엔티티로부터 클라이언트와 서버의 인증을 하는데 사용된다. 특히 OSI 7계층 중 전송계층(4계층)과 응용계층(7계층) 사이에서 보안 관련 역할을 수행한다. 하지만 SSL은 오래된 기술이며, 보안적 결함이 몇몇 발견되어 현재는 이를 개선한 TLS를 사용한다. 2) TLS (Transpor..
1️⃣ HTTP Message 'HTTP Message' 는 서버와 클라이언트 간 데이터가 교환되는 방식이다. 메시지 타입엔 두 가지가 있다. 요청 (Request) : 클라이언트가 서버로 데이터를 전달하여 필요한 동작을 요청한다. 응답 (Response) : 클라이언트의 요청에 대한 서버의 답변이다. HTTP 메시지 는 ASCII 로 인코딩된 텍스트 정보이며, 각각의 정보가 그 역할에 맞게 구분되어 구성된다. 예전 HTTP/1.1 에서는 클라이언트와 서버와의 연결을 통해 공개적으로 전달되었으나, HTTP/2 에서는 최적화와 성능 향상을 위해 HTTP 프레임으로 나누어진다. 위 그림처럼 HTTP 메시지는 다양한 방식으로 제공되는데 API, 설정 파일, HTML 폼 등의 방식이 있다. HTTP/ 의 이진 ..