Hypertext Transfer Protocol(HTTP)
인터넷에서 데이터를 주고받을 수 있는 프로토콜 (프로토콜: 규칙)
HTTP request의 첫 라인
해당 request에 대한 추가 정보(addtional information)를 담고 있는 부분
Key:Value 값으로 되어있다.
해당 reqeust의 실제 메세지/내용
Body가 없는 request도 많다. 예를 들어, GET request들은 대부분 body가 없는 경우가 많음.
Response의 상태를 간략하게 나타내주는 부분. 3부분으로 구성되어 있다.
HTTP 의 버전
Status code: 응답 상태를 나타내는 코드. 숫자로 되어 있는 코드. 예를 들어, 200
Status text: 응답 상태를 간략하게 설명해주는 부분. 예를 들어, "404 Not Found"
HTTP/1.1 404 Not Found
HTTP Request 의 Header 와 동일하다.
다만, response에서만 사용되는 header 값들이 있다.
ex) User-Agent 대신에 Server 헤더가 사용
HTTP Response 의 body와 일반적으로 동일
Request와 마찬가지로 모든 response가 body가 있지는 않다. 데이터를 전송할 필요가 없을경우 body가 비어있게 된다.
HTTPS = HTTP + SSL
SSL(Secure Socket Layer) = TLS(Transport Layer Security)
인터넷에서 정보를 암호화해서 송수신하는 프로토콜로 넷스케이프가 개발.
국제 인터넷 표준화 기구에서 표준으로 인정받은 프로토콜임.
표준에 명시된 정식 명칭은 TLS이지만 아직도 SSL이라는 용어가 많이 사용됨.
고로 HTTP에 SSL이 첨가된 방식으로 주고 받는 정보가 암호화되어 보안성이 강화된 방식이다.
Secure Socket Layer
SSL 암호화 통신은 비대칭키 방식(암호화에 사용할 키를 교환)
데이터 통신은 대칭키 방식
SSL 적용은 핸드 셰이킹 단계에서 발생이 된다.
핸드 셰이킹 순서
Client hello : 클라이언트가 서버에게 연락
Server hello : 서버가 클라이언트에게 연락
Client key exchange
인증서가 자신이 신용있다고 판단한 CA로부터 서명된 것인지 확인
(또한 날짜가 유효한지, 그리고 인증서가 접속하려는 사이트와 관련되어 있는지 확인)
클라이언트는 미리 주고받은 자신과 서버의 랜덤 데이터를 참고하여 서버와 암호화 통신을 할 때 사용할 키(랜덤 대칭 암호화 키)를 생성한 후 서버에게 전달합니다.
이때 키는 서버로부터 받은 공개키로 암호화되어 보내집니다.
Finished
이후 전송단계로 넘어가서 클라이언트가 생성한 키를 이용하여 암호화된 데이터를 주고받게 됩니다.
핸드 쉐이킹 이후 데이터 전송 과정
당사자 중 한쪽이 비밀 키와 공개 키의 쌍, 공개 키 인프라(PKI) 기반을 갖는다.
공개 키와 개인 키의 개념을 기반
단점
암복호화가 매우 복잡하다는 점이다. 암복호화가 복잡한 이유는, 암호화하는 키와 복호화하는 키가 서로 다르기 때문
양쪽 당사자가 공통 비밀 키를 공유
대칭형 방식은 양쪽 당사자가 공유한 시크릿에 의존
이 방법의 문제는 양쪽 당사자가 서로 물리적인 만남 없이 시크릿을 협상(교환)하는 방법이라서 일종의 보안 통신 채널이 필요하다.
장점
단점
암호화 통신을 하는 사용자끼리 같은 대칭키를 공유해야만 한다는 단점이 있다.
대칭키는 데이터를 전송하는 쌍마다 필요하기 때문에, 통신을 총 n명이 한다면 nC2=n(n-1)/2 만큼의 대칭키 생성작업이 필요하다.
SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서
인증서를 통해 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지를 보장하는 역할
CA(Certificate authority) 혹은 Root Certificate
브라우저의 CA 리스트
확인 결과 서버를 통해서 다운받은 인증서가 내장된 CA 리스트에 포함되어 있다면 해당 CA의 공개키를 이용해서 인증서를 복호화
승운님! 좋은 글 잘 봤읍니다,,, ^^,,,,