2025년 2월 20일
: Hypertext Transfer Protocol
서로 다른 시스템들 사이에서 통신을 주고받게 해주는 프로토콜. 서버에서 브라우저로 데이터를 전송해 주는 용도로 가장 많이 사용됨.
인터넷의 초기에 모든 웹사이트에서 기본적으로 사용되었던 프로토콜.
기본 포트는 80.
HTTP의 주요 문제는,
보안 취약성: 데이터를 암호화하지 않고 평문으로 전송해서 제 3자가 중간에 네트워크상에서 데이터를 엿볼 수 있고, 개인정보나 민감한 정보가 노출될 수 있는 보안 취약점을 가지고 있었음
무결성 문제: 데이터의 무결성을 보장하지 않음. 데이터가 전송 중에 변경될 수 있기 때문에 정보의 정확성이 보장되지 않음
신원 보증의 부재: 서버의 신원을 확인 하는 기능이 없음. 중간에 서버를 위장해 클라이언트와 통신할 수 있고, 이는 XXS 공격의 가능성을 높임
: Hypertext Transfer Protocol Secure
HTTP 프로토콜의 문제점은 서버에서 브라우저로 전송되는 정보가 암호화 되지 않아 보안 문제로 데이터가 도난당할 수 있는데 HTTPS는 SSL/TLS을 사용해 이 문제를 해결함.
기본 포트는 443.
HTTPS는 위의 HTTP 문제를 해결해준다.
보안 취약성 해결: SSL/TLS 프로토콜을 사용하여 데이터의 암호화를 제공. 클라이언트와 서버간의 통신은 대칭키(세션키)를 사용한 암호화 방식으로 이루어지며, 제 3자가 데이터를 엿볼 수 없도록 함
무결성 보장: 데이터의 무결성을 보장하기 위해 메시지 다이제스트(Message Digest)를 사용한다고 한다. 데이터를 전송할때 각 데이터 블록에 대한 다이제스트 값을 생성하고, 이를 서버에서 검증해 데이터 변조 여부를 확인해 데이터가 전송 중에 변경되었는지 확인해서 무결성을 보장
신원 보증: 인증기관(Certificate Authority)에 의해 발급된 서버 인증서를 사용해 서버의 신원을 확인함. 클라이언트는 서버의 인증서를 검증하고, 서버의 공개키를 획득해 안전한 통신을 위한 대칭키 교환에 사용. 이를 통해 제 3자가 서버를 위장 또는 조작하는 것을 방지하고, 신뢰할 수 있도록함
: SSL(Secure Sockets Layer) / TLS(Transport Layer Security)
네트워크 통신에서 데이터의 보안 및 기밀성을 제공하기 위한 프로토콜.
SSL은 초기 버전, TLS는 SSL의 후속버전이라고 함.
일반적으로 'SSL/TLS'라는 용어를 같이 언급해서 쓰거나 SSL이라고 말하기도 함.
브라우저는 이 인증서를 가지고 수신, 해석하고 진위 여부를 확인하고 확인을 완료하면 보안 연결을 통해 전송된 모든데이터가 암호화됨 (일반 HTTP 요청 및 응답을 암호화 하고, 클라이언트와 서버만 그 암호를 앎)