HTTPS는 HTTP와는 달리 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS계층을 넣은 신뢰할 수 있는 HTTP를 말합니다. 이를 통해 통신을 암호화합니다.
SSL/TLS
전송 계층에서 보안을 제공하는 프로토콜 클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제3자가 메시지를 도청하거나 변조하지 못하도록 합니다.
SSL/TLS는 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 매커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용됩니다.
보안 세션
보안이 시작되고 끝나는 동안 유지되는 세션을 말하고, SSL/TLS는 핸드세이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유합니다.
클라이언트 -> 서버
{ +keyShare }
클라이언트 <- 서버
{ +keyShare }
클라이언트와 서버가 키를 콩유하고 이를 기반으로 인증, 인증 확인 등의 작업이 일어나는 단 한번의 1-RTT가 생긴 후 데이터를 송수신하는 것을 볼 수 있습니다.
1. 클라이언트에서 사이퍼 슈트를 서버는 받은 사이퍼 슈트의 알고리즘 리스트를 제공할 수 있는지 확인합니다.
2. 제공할 수 있다면 서버에서 클라이언트로 인증서를 보내는 인증 매커니즘이 시작되고 이후
3. 암호화 알고리즘, 해싱 알고리즘 등으로 암호화된 데이터의 송수신이 시작됩니다.
사이퍼 슈트
해싱 알고리즘이 나열된 5가지 규약을 의미한다.
1. TLS_AES_128_GCM_SHA256
2. TLS_AES_256_GCM_SHA384
3. TLS_CHACHA20_POLY1305_SHA256
4. TLS_AES_128_CCM_SHA256
5. TLS_AES_128_CCM_8_SHA256
인증 매커니즘
인증 매커니즘은 CA에서 발급한 인증서를 기반으로 이루어집니다. CA에서 발급한 인증서는 안전한 연결을 시작하는데 필요한 공개키를 제공하고 사용자가 접속한 '서버가 신뢰'할 수 있는 서버임을 보장합니다. 인증서는 서비스 정보, 공개키, 지문, 디지털 서명 등으로 이루어져 있습니다.
CA 발급 과정
자신의 서비스가 CA인증서를 발급받으려면 자신의 사이트 정보와 공개키를 CA에 제출해야 합니다. 이후 CA는 공개키를 해시한 값인 지문을 사용하는 CA의 비밀키 등을 기반으로 CA 인증서를 발급
암호화 알고리즘
키 교환 암호화 알고리즘으로 대수곡선 기반의 ECDHE또는 모듈식 기반의 DHE를 사용합니다. 둘 다디피-헬만 방식을 근간으로 만들어졌습니다.
y = g^xmodp
앞의 식에서 g와 x와 p를 안다면 y는 구하기 쉽지만 g와 y와 p만 안다면 x를 구하기 어렵다는 원리
해싱 알고리즘
해싱 알고리즘은 데이터를 추정하기 힘든 더 작고 섞여 있는 조각으로 만드는 알고리즘입니다. SSL/TLS는 해싱 알고리즘으로 SHA-256 알고리즘을 쓰며, 그 중 많이 쓰며 SHA-256 알고리즘을 설명
SHA-256
해시 함수의 결과값이 256비트인 알고리즘이며 비트 코인을 비롯한 많은 블록체인 시스템에서도 씁니다. SHA-256알고리즘은 해싱을 해야 할 메시지에 1을 추가하는 등 전처리를 하고 전처리된 메시지를 기반으로 해시를 반환
해시
다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값
해싱
임의의 데이터를 입력으로 받아 일정한 길이의 데이터로 바꿔주는 함수
HTTPS 구축 방법
1. 직접 CA에서 구매한 인증키를 기반으로 HTTPS서비스를 구축
2. 서버 앞단의 HTTPS를 제공하는 로드밸런스를 둡니다.
3. 서버 앞단에 HTTPS를 제공하는 CDN을 둬서 구축합니다.
'it 책 > 개발자면접을 위한 CS전공지식' 카테고리의 다른 글
HTTP1과 HTTP2의 차이는? (0) | 2022.05.12 |
---|---|
데이터베이스 인덱스는 왜 효과적일까? (0) | 2022.05.01 |
www.naver.com을 주소창에 치면 어떻게 될까요? (0) | 2022.05.01 |