텍스트 기반의 통신규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜
클라이언트가 요청을하면 서버가 응답을 하는 형태로 동작한다.
요청
Http 요청은 HTTP 프로토콜을 따르는 일련의 텍스트다.
Get 요청 예시)

응답
서버는 HTTP 요청을 받으면 요청과 유사한 응답을 보낸다.
응답 예시)

출처 : 링크텍스트
이 요청과 응답은 사용자가 아니라도 누구든 읽을 수 있다.
이것은 중요한 정보를 다루기에는 적합하지 않다.
HTTP에 보안을 뜻하는 Secure이 추가된 프로토콜이다.
보안을 위해서 HTTPS는 SSL(Secure Socket Layer)나 TLS(Transport Layer Security Protocol)을 사용하여 데이터를 보호한다.
TLS는 SSL에서 발전하며 이름이 변경 되었는데 SSL이라는 명칭으로 계속 사용되기도 하며 SSL/TLS로 합쳐서 부르기도 한다.
SSL 프로토콜은 SSL 인증서를 사용해 작동한다.
SSL 인증서에는 서비스 정보, 서버키가 들어있고 CA(Certificate Authority, 공개키를 저장해주는 신뢰성이 검증된 민간 기업)에 의해 암호화 된다.
브라우저는 내부적으로 CA리스트를 갖고 있고 각 CA의 공개키를 갖고 있다.
서버는 클라이언트에게 인증서를 제공하고 자신이 갖고있는 CA리스트에 있는 지 확인후 해당 공개키를 이용해 복호화 한다.
복호화가 성공했다면 CA의 비공개키로 암호화 된 것이기 때문에 보안성 검증 완료
신뢰할 수 있으므로 TLS/SSL Handshake를 통해 세션키를 생성하고 통신을 시작

공개키, 개인키를 한쌍으로 각각 암호화/복호화에 사용한다.
일반적으로 공개키로 암호화 한 것을 개인키로 복호화 하는데, 개인키를 먼저 만들고 공개키를 만들기 때문에
같은 쌍이 아니면 암호화 복호화가 불가능하다.
비대칭키라고 불림
장점 : 키 분배가 필요 없다.
단점 : 속도가 느리다.
대표 알고리즘 : 디피-헬만, RSA

하나의 키를 통해 암호화와 복호화를 진행한다.
하나의 키를 클라이언트와 서버가 같이 사용한다.
장점 : 속도가 빠르다.
단점 : 보안이 약하다.
대표 알고리즘 : SEED, DES, 3DES, AES, ARIA

서버의 SSL 인증서 확인
브라우저에 내장 된 CA공개키로 복호화 하고 성공한다면 성공
브라우저는 자신의 난수와 서버의 난수를 사용해 premaster secret 만들기
웹 서버 인증서에 포함된 서버 공개키로 암호화하여 전송한다.
서버는 자신의 비밀키로 브라우저의 premaster secret 복호화
복호화 한 값을 master secret으로 저장 후 Session key생성
세션키는 대칭키 암호화에 사용. 이것으로 데이터를 암호화, 복호화 한다.
HTTPS 통신 시작
장점
단점