1.HTTPS?
1-1. 정의
HTTPS는 기존 HTTP레이어에서 SSl 또는 TLS프로토콜을 얹어 평문 데이터를 암호화하고
암호화, 인증, 무결성 보장을 통해 더 안전히 만들어 주는 프로토콜이다.
1-2. 목적
SSL이나 TLS와 같은 프로토콜을 사용하여 인증서를 통해 메시지를 암호화하고, 통신하고자 하는 상대방이 맞는 지 인증하는 것이다.
2.SSL과 TLS
SSL(Secure Sockets Layer)는 TLS(Transport Layer Security)의 과거 명칭이다.
즉, TLS는 SSL을 보다 안전하고, 프로토콜을 더 정확하고 안정성 높이도록 하기 위해 고안되었다.
구체적으로는 TCP,UDP와 같은 일반적인 인터넷 통신에 안전한 Layer(계층)을 추가하는 것이다. 이 기술을 웹 서버에 적용한 것이 우리가 흔히 부르는 SSL/TLS 인증서 라고 한다.
3. 대칭키, 공개키
1-1. 대칭키
대칭키 암호화 방식은 하나의 키로 평문을 암호화하고 다시 암호문을 원래의 평문으로 복호화할 때 사용하는 방식이다.
명칭 그대로 키를 단 하나만 사용하는 것, 키가 대칭인 것이 특징이다.
- 암호화 헀던 키가 노출되면 암호가 해제된다.
1-2. 공개키
공개키 암호화 방식은 공개키, 개인키 두 개의 키를 한 쌍으로 각각 암호화/복호화에 사용하는 것이다. 일반적으로 공개키로 암호화한 것을 개인키로 복호화한다.
- 공개키가 노출되어도 개인키가 없으면 암호를 해제할 수 없다.
* 공개키 방식은 클라이언트와 서버가 서로 인증하려고 교환하기 위한 키를 암호화하고,
대칭키 방식은 서로 인증한 후 메시지를 암호화해서 지속적으로 전송한다.
4. CA 인증기관 (Certificate authority)
공개키 방식은 해당 Public Key가 진짜인지 확인 할 수 없다. 따라서 Public Key가 진짜임을 증명해주는 제 3자 기관을 CA라고 한다.
CA는 아무 기업이나 할 수 있는 것이 아니고 신뢰성이 엄격하게 공인된 기업들만이 참여할 수 있다.
SSL을 통해서 암호화된 통신을 제공하려면 CA를 통해서 인증서를 구입해야 한다.
이렇게 CA가 Public Key라고 인증한 인증서를 SSL인증서라 부른다.
5. CA 인증과정
1. 서버에서 인증 서명 요청서(CSR) 생성
1-1) Server에서 Public Key와 Private Key를 쌍으로 생성한다.
1-2) Server에서 인증 서명 요청서(CRS)를 만든다. (SHA256 같은 해쉬 알고리즘으로 해쉬 수행한다.)
2. CA - SSL 인증서 발급
3. 서버 - SSL 인증서 받음
4. 클라이언트 - SSL Handshake 첫번째 요청
4-1) Client가 요청을 하게 되면, 가장 먼저 Server에 3-Way Handshake를 통해 연결을 시도한다.
→ ex) 브라우저 주소창에서 http://.naver.com을 치면, HTTP는 TCP의 일종이니 TCP 연결을 위한 3-Way Handshake를 먼저 수행한다.
4-2) 3-Way Handshake를 연결이 완료되면, 클라이언트가 Client Hello 단계를 수행
HTTPS를 사용하는 것을 알게 된 클라이언트는 Client Hello 단계에서 밑의 정보를 보낸다.
5. 서버 - SSL HandShake 두번째 요청
5-1) Client가 보내온 Client Hello 패킷을 받아, 밑의 정보를 Client에게 응답한다.
- 브라우저가 지원하는 암호화 방식중에서 하나를 선택해 클라이언트로 전달- 서버가 자신의 ssl인증서를 클라이언트로 전달
6. 클라이언트 - SSL HandShake의 세 번째 단계 : Premaster Secret 생성
6-1) 클라이언트는 서버의 SSL 인증서가 믿을만한지 확인한다.
Client가 SSL 인증서(CA의 Private_key로 해쉬(서버정보))를 CA의 Public Key로 디코딩해본다. 그러면 해쉬(서버정보)의 값을 얻을 수 있다. 그리고 서버에 대한 정보를 Hash화 해서 서로 일치하는 지 체크한다. 이를 통해 SSL 인증서가 위조 됐는 지 여부를 체크할 수 있다.
브라우저 내부에 CA의 Public Key가 저장되어 있다.
7. 서버/클라이언트 - SSL HandShake 종료 & HTTPS 통신 시작한다.
'Computer science > 네트워크' 카테고리의 다른 글
[네트워크] 동기화 예제 (0) | 2023.03.22 |
---|---|
[네트워크] Streaming service (0) | 2023.02.04 |