본문 바로가기

Network

이제는 보안도 챙깁시다. - https 알아보기

서론

요즘 메타 인지를 통해 내가 알고 있다고 생각했던 지식들을 다시 점검하고, 부족한 부분을 하나씩 채워가고 있다.

오늘은 부족한 지식 중 하나인 https에 대해 공부하려고 한다.

HTTPS

HTTPS는 'HTTP + Secure'의 약자로, 기존 HTTP에 보안 기능이 추가된 프로토콜이라고 이해하면 쉽다.

HTTP 통신에서는 클라이언트와 서버가 데이터를 주고받을 때 평문(텍스트 형태)으로 전송된다.
만약 이 과정에서 데이터가 탈취된다면, 전송되는 중요한 정보들이 그대로 노출될 위험이 있다.

 

이런 문제를 해결하기 위해서 HTTPS가 나오게 되었다.

HTTPS는 데이터를 암호화하여 전달하여 중간에 탈취당해도 노출될 위험이 없다.

SSL / TLS

HTTPS는 SSL / TLS를 활용해 구현되었다.

SSL은 Secure Socket Layer로 암호화 프로토콜이다.

TLS는 SSL의 업그레이드 버전으로 현재는 SSL보다 TLS가 더 많이 사용되지만, 실무에서는 두 용어가 거의 같은 의미로 혼용되기도 한다.

암호화

위의 내용에서 SSL / TLS는 암호화 프로토콜이라고 설명했다.

그러면 어떻게 암호화가 되는 것일까?

바로 대칭키 암호화 방식과 비대칭키 암호화 방식을 사용해 암호화를 진행한다.

대칭키 암호화

대칭키 암호화란 같은 키를 통해서 암호화와 복호화를 하는 것을 말한다.

예를 들어, '나누기' 방식의 암호화가 있다고 가정해보자. 12라는 데이터를 4라는 키로 나누면 암호화된 값은 3이 된다. 다시 복호화할 때는 3에 4를 곱해 원래 값인 12를 얻는다. 이처럼 같은 키를 사용하는 것이 대칭키 방식이다.

 

장점은 암호화 복호화 속도가 빠르다는 장점이 있다.

단점은 키를 탈취당하지 않고 양쪽에서 가져야 하는지(키 분배)에 대한 점이 있다.

비대칭키 암호화

비대칭키 암호화란 암호화를 할 때 사용한 키가 복호화할 때는 사용할 수 없는 암호화 방식을 말한다.

비대칭 키는 기본적으로 2개의 키를 가지고 있다. 각각 A, B 키라고 부르겠다. A키는 암호화가 가능하고 B키로 암호화된 데이터를 복호화할 수 있고  B키는 암호화할 수 있고 A 키로 암호화한 데이터를 복호화할 수 있다.

이렇게 된다면 공개키가 외부에 알려져도, 개인키 없이는 복호화가 불가능하기 때문에 보안상 큰 문제가 되지 않는다.

 

장점은 대칭키의 단점인 키 분배에 대한 문제를 생각하지 않아도 된다는 장점이 있다.

단점은 암호화 복호화 할 때 사용하는 키가 달라서 속도가 느리다는 단점이 있다.

SSL / TLS Hand-Shaking

TCP 3 way, 4 way Hand-Shaking처럼 SSL / TLS도 안전한 통신을 위해 Hand-Shaking을 거친다.

 

1. Client Hello

2. Server Hello

3. Client Key Exchange

4. Finished

Client Hello

클라이언트가 무작위 랜덤 값과, 암호화 방식 종류, SSL / TLS 버전의 정보를 서버로 보낸다.

Server Hello

클라이언트로부터 정보를 받았다면 서버도 무작위 랜덤 값과, 클라이언트가 지원하는 암호화 방식 중 1개를 선택하고, SSL 인증서를 클라이언트로 보낸다.

Client Key Exchange

SSL 인증서는 CA(Certificate Authority)에서 발급했고 CA 개인키로 암호화되어 있어 CA 공개키로만 복호화가 가능하다.(CA 공개키로만 복호화가 가능하다는 것은 CA에서 발급했다는 것을 인증할 수 있는 수단이다. + CA 공개키는 누구나 접근 가능하다.)

SSL 인증서를 복호화했다면 이제 서버의 공개키를 알 수 있다.

이제 서버와의 암호화 통신을 위한 대칭 키를 전에 서로 주고받았던 클라이언트 랜덤값, 서버 랜덤값으로 만들고 서버의 공개키로 암호화를 한다. 그리고 서버로 보낸다. 그러면 서버는 개인키로 복호화하여 대칭키를 탈취될 위험 없이 얻을 수 있다.

Finished

클라이언트와 서버 모두 대칭키를 가지게 되었다면 서로 "Finished" 메시지를 보내고 핸드세이킹을 종료 후 암호화 통신을 시작한다.

 

728x90

'Network' 카테고리의 다른 글

http, tcp/ip, 김주은 let's go  (3) 2024.02.07