Hyper Text Transfer Protocol Secure(HTTPS)를 사용 하는 HTTP 프로토콜의 보안 버전
HTTP 의 단점 - 보안
브라우저 와 서버를 연결해주는 심플한 기술 이지만 통신중에 데이터가 암호화되지않고 전송되어진다는점
HTTP의 단점 을 극복하기위해 HTTP에 SSL이나 (TLS) 이라는 기술을 더한것
SSL 이란?
디지털 인증서 라고하 하는 SSL(보안 소켓 계층)인증서는 브라우저 또는 사용자의 컴퓨터와 서버 또는
웹사이트 간에 암호화된 연결을 수립하는데 사용되는것
SSL연결은 인증되지않은 사용자의 공격으로 부터 각 세션중에 교환된 중요 데이터를 보호
SSL 작동
최종 사용자가 볼수없는 SSL Handshake라는 프로세스를 통해 서버와 브러우저 간에 안전한 연결이 수립
3가지 키를 사용하여 대칭세션키를 만들며 이 세션키는 전송중인 데이터를 암호화 하는데 사용된다.
위 그림
1.서버에서는 비대칭 공개 키의 복사본을 브라우저로 전송합니다.
2.브라우저에서는 대칭 세션 키를 만들어 서버의 비대칭 공개 키로 암호화한 다음 이를 서버로 전송합니다.
3.서버는 대칭 세션 키를 얻기 위해 비대칭 비공개 키를 사용하여 암호화된 세션 키를 해독합니다.
4.이제 서버와 브라우저에서 대칭 세션 키를 사용하여 전송된 모든 데이터를 암호화 및 해독합니다.
브라우저와 서버에만 대칭 세션 키에 대한 정보가 있으며 세션 키는 해당하는 특정 세션에만 사용되기 때문에 채널 보안이 보장됩니다.
다음날 브라우저가 동일한 서버에 다시 연결되면 새로운 세션 키가 생성됩니다.
TLS란?
Transport Layer Security
인터넷 통신을 보호하도록 설계된 암호화 프로토콜
TLS 핻드셰이크는 TLS암호화를 사용하는 통신세션을 시작하는 프로세스
1.'client hello' 메시지: 클라이언트는 서버에 "hello" 메시지를 전송하여 핸드셰이크를 시작합니다.
메시지에는 클라이언트가 지원하는 TLS 버전, 지원되는 암호 제품군 및 "클라이언트 랜덤"으로 알려진
임의의 바이트 문자열이 포함됩니다.
2.'server hello' 메시지: 클라이언트 hello 메시지에 대한 응답으로 서버는 서버의 SSL 인증서 ,
서버가 선택한 암호화 제품군 및 서버에서 생성한 또 다른 임의의 바이트 문자열인
"server random"이 포함된 메시지를 보냅니다.
3.인증: 클라이언트는 서버의 SSL 인증서를 발급한 인증 기관으로 확인합니다.
이것은 서버가 누구인지 확인하고 클라이언트가 도메인의 실제 소유자와 상호 작용하고 있음을 확인합니다.
4.premaster secret: 클라이언트는 "premaster secret"이라는 임의의 바이트 문자열을 하나 더 보냅니다.
프리마스터 비밀은 공개 키로 암호화되며 서버에서만 개인 키로 해독할 수 있습니다.
(클라이언트는 서버의 SSL 인증서에서 공개 키 를 가져옵니다.)
5.사용된 개인 키: 서버가 사전 마스터 암호를 해독합니다.
6.생성된 세션 키 : 클라이언트와 서버 모두 클라이언트 랜덤,
서버 랜덤 및 프리마스터 비밀에서 세션 키를 생성합니다. 그들은 같은 결과에 도달해야 합니다.
7.클라이언트 준비 완료: 클라이언트가 세션 키로 암호화된 "완료" 메시지를 보냅니다.
8.서버 준비 완료: 서버는 세션 키로 암호화된 "완료" 메시지를 보냅니다.
9.안전한 대칭 암호화 달성: 핸드셰이크가 완료되고 세션 키를 사용하여 통신이 계속됩니다.
(notion에서 표 가져오는거 실패해서 캡쳐)
SSL과 TLS는 모두 TCP와 응용 프로그램 간의 연결에 보안과 암호화를 제공하여 동일한 목적을 수행하는 프로토콜입니다. SSL 버전 3.0이 처음 설계되었으며 모든 SSL 기능으로 구성되지만 일부 고급 보안 기능도 포함하는 SSL의 선행 버전 또는 최신 버전 인 TLS 버전 1.0이 설계되었습니다.