1. HTTPS
- HTTP / 2는 HTTPS 위에서 동작
- 애필리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL / TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말함
- 통신을 암호화 함
1) SSL / TLS
- 전송 계층에서 보안을 제공하는 프로토콜
- 클라이언트와 서버가 통신할 때 SSL / TLS 를 통해 제 3자가 메시지를 도청하거나 변조하지 못하도록 함
- 아래 그림처럼 SSL / TLS 를 통해 공격자가 서버인척하며 사용자 정보를 가로체는 네트워크상의
인터셉터를 방지할 수있다
- SSL / TLS 는 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 메커니즘,
키 교환 암호화 알고리즘, 해싱 알고리즘이 사용됨
(1) 보안 세션
- 보안이 시작되고 끝나는 동안 유지되는 세션을 말함
- SSL / TLS 는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보등을 공유
* 세션 : 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간
사용자는 일정 시간 동안 응용프로그램, 자원 등을 사용할 수 있다
- TLS 의 핸드셰이크는 아래와 같다
- 클라이언트와 서버와 키를 공유하고 이를 기반으로 인증, 인증 확인 등의 작업이 일어나는
단 한번의 1-RTT 가 생긴 후 데이터를 송수신하는 것을 볼 수 있다
- 클라이언트에서 사이퍼슈트를 서버에 전달하면 서버는 받은 사이퍼 슈트의 암호화 알고리즘 리스트를
제공할 수 있는지 확인함
- 제공할 수 있다면 서버에서 클라이언트로 인증서를 보내는 인증 메커니즘이 시작되고 이후
해싱 알고리즘 등으로 암호화된 데이터의 송수신이 시작됨
A) 사이퍼 슈트 (cypher suites)
- 프로토콜, AEAD 사이퍼모드, 해싱 알고리즘이 나열된 규격을 말하며 다섯개가 있다
- 예) TLS_AES_128_GCM_SHA256 에는 세가지 규약이 들어있는데 TLS 는 프로토콜,
AES_128_GCM 은 AEAD 사이퍼모드, SHA256 은 해싱 알고리즘을 뜻함
* TLS_AES_128_GCM_SHA256
* TLS_AES_256_GCM_SHA384
* TLS_CHACHA20_POLY1305_SHA256
* TLS_AES_128_CCM_SHA256
* TLS_AES_128_CCM_8_SHA256
B) AEAD 사이퍼 모드 (Authenticated Encryption with Associated Data)
- 데이터 암호화 알고리즘
- 예) AES_128_GCM 은 128 비트의 키를 사용하는 표준 블록 암호화 기술과 병렬 계산에 용이한
암호화 알고리즘 GCM 이 결합된 알고리즘을 말함
(2) 인증 메커니즘
- CA (Certificate Authorities)에서 발급한 인증서를 기반으로 이루어짐
- CA 에서 발급한 인증서는 안전한 연결을 시작하는데 있어 필요한 공개키를 클라이언트에 제공하고
사용자가 접속한 서버가 신뢰할 수 있는 서버임을 보장함
- 인증서는 서비스정보, 공개키, 지문, 디지털 서명등으로 이루어져 있다
- CA 는 아무 기업이나 할 수 있는 것이 아니고 신뢰성이 엄격하게 공인된 기업들만 참여할 수 있다
- 대표적 기업으로는 Comodo, GoDaddy, GlovalSign, 아마존 등이 있다
A) CA 발급 과정
- 자신의 서비스가 CA 인증서를 발급받으려면 자신의 사이터 정보와 공개키를 CA 에 제출해야 함
- 이후 CA 는 공개키를 해시한 값인 지문(finger print)을 사용하는 CA 의 비밀키 등을 기반으로 CA 인증서 발급
* 개인키 : 비밀키라고도 하며, 개인이 소유하고 있는 키이자 반드시 자신만이 소유해야 하는 키
* 공개키 : 공개되어 있는 키
(3) 암호화 알고리즘
- 키 교환 암호화 알고리즘으로는 대수곡선 기반의 ECDHE(Elliptic Curve Diffie-Hellman Ephermeral) 또는
모듈식 기반의 DHE(Diffie-Hellman Ephermeral)를 사용한다
- 둘다 디피 헬만(Diffie-Hellman) 방식을 근간으로 만들어짐
A) 디피 - 헬만 키 교환 암호화 알고리즘
- 암호키를 교환하는 하나의 방법이다
- 아래 식에서 g 와 x 와 p 를 안다면 y 는 구하기 쉽지만 g 와 y 와 p 만 안다면 x 를 구하기는 어렵다는
원리에 기반한 알고리즘
- 위의 그림처럼 처음에 공개 값을 공유하고 각각의 비밀 값과 혼합안 후 혼한 값을 공유한다
- 이후 각자의 비밀 값과 또 혼합한다
- 이후 공통의 암호키인 PSK(PPre-Shared Key) 가 생성됨
- PSK 가 생성된다면 악의적인 공격자가 개인키 또는 공개키를 가지고도 PSK 가 없기 때문에
아무것도 할 수 없다 이를 통해 키를 암호화 할수 있는 것
(4) 해싱 알고리즘
- 데이터를 추정하기 힘든 더 작고, 섞여 있는 조각으로 만드는 것
- SSL / TLS 는 해싱 알고리즘으로 SHA-256 알고리즘과 SHA-384 알고리즘을 쓰며 그중 SHA-256 이 많이 쓰인다
A) SHA-256 알고리즘
- 해시 함수의 결과값이 256 비트인 알고리즘
- 비트 코인을 비롯한 많은 블록체인 시스템에서 쓰임
- 해싱을 해야 할 메시지에 1을 추가하는 등 전처리를 하고 전체리된 메시지를 기반으로 해시를 반환
- 아래 그림처럼 무슨 뜻인지 알아들을 수 없는 문자열로 변환되는 것을 볼 수 있다
- TLS 1.3 은 사용자가 이전에 방문한 사이트로 다시 방문한다면 SSL / TLS 에서 보안 세션을 만들 때
걸리는 통신을 하지 않아도 되는데 이를 0-RTT 라고 한다
* 해시 : 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑 한 값
* 해싱 : 임의의 데이터를 해시로 바꿔주는 일이며 해시 함수가 이를 담당
* 해시 함수 : 임의의 데이터를 입력으로 받아 일정한 길이의 데이터로 바꿔주는 함수
'CS 전공지식' 카테고리의 다른 글
24.01.17 선형 자료 구조 1 (0) | 2024.01.17 |
---|---|
24.01.16 HTTPS 2 와 HTTP / 3 (0) | 2024.01.16 |
24.01.12 HTTP (0) | 2024.01.12 |
24.01.11 IP 주소 (1) | 2024.01.11 |
24.01.10 네트워크 기기 (0) | 2024.01.10 |