본문 바로가기

NETWORK Security/보안 프로토콜

TLS1.3 (1) - cipher suite, 키 합의 프로토콜, 완전 순방향 비밀성(PFS)

 

 

 


 

 

TLS 1.3 에 대해 발표 준비를 해야해서

환경 구축부터, 기본 개념, 기존 TLS 들과의 차이를 조사하다보니 양이 꽤 나오게 되었다.

공부한 흐름대로 정리해서 포스팅을 쭉 해보고자 한다.

 

 


TLS (Transport Layer Security ) 란,

TLS 라는 명칭이 사용되기 전에는 SSL (Security Sockets Layer) 로 사용되던 명칭이다.

 

이름에서도 어떤 프로토콜인지 알 수 있듯, 

네트워크 상의 통신 보안을 제공하는 암호 프로토콜이다. 

 

TCP/IP 네트워크 통신의 전송 계층 종단간 보안과 데이터 무결성 등을 보장해준다.

 

한마디로, 네트워크 망의 전송 계층에서 무결성 및 기밀성을 보장해주기 위해 사용하는 암호 프로토콜이라고 정리할 수 있다. 

 

 

 

 

 


 

 

 

 

좀만 더 구체적으로 보면,

TLS 는 이 세가지 보안 목표를 달성하기 위해 사용된다.

 

통신을 하는 두 종단을 각각 앨리스와 밥, 중간에 도청을 시도하는 자를 이브라고 하자.

 

- 인증성 (Authenticity) : 앨리스와 쪽지를 주고 받는 상대가 밥임을 인증하기 위해

- 기밀성 (Confidentiality) : 앨리스와 밥, 서로만이 쪽지를 읽을 수 있고, 이브는 불가능하게 하기 위해

- 무결성 (Integrity) : 앨리스가 쓴 쪽지가 중간에 변경되지 않았음을 보장하기 위해

 

 

 

 

 

 


 

 

 

 

 

위에서 살펴봤듯 TLS 는 암호화 및 무결성 통신을 보장해주기 때문에, 

사용할 블록 암호 모드, 키합의 프로토콜 등의 암호화 기법 조합을 가지게 된다. 

 

그리고 이 조합을 cipher suite 라고 하며, 다음과 같은 형태를 띈다. 

 

TLS_{키 교환 알고리즘}_{인증 방법}_WITH_{암호화 기법}_{데이터 무결성 체크 방법}

 

- WITH 이후는 cipher spec 

- 암호화 기법 : 대칭 암호 알고리즘, 암호키 길이, 블록 암호모드

- 데이터 무결성 체크 방법 : HMAC용 해시 알고리즘

 

 

 

EX> TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 의 경우,

 

- 키 교환 알고리즘 : DHE (Diffie-Hellman)

- 공개키 인증 방법 : RSA - 인증성

- 암호화 알고리즘 : AES - 기밀성

- 키 길이 : 256

- 블록 암호 모드 : CBC

- 무결성 체크 방법 : SHA256 - 무결성

 

이렇게 위에서 살펴본 세가지 보안 목표를 모두 만족하는 cipher suite 를 의미한다.

 

 

 

 

 

 


 

 

 

 

 

그렇다면 암호화 통신을 하기 전 상대방과 키를 교환하기 위해 사용되는 키 합의(교환) 프로토콜에는 어떤 것이 있을까 ? 

 

 

1. RSA 키 합의 프로토콜

: 앨리스가 세션키를 생성한 후, 밥의 공개키로 암호화하고, 밥에게만 전달하면 밥은 자신의 개인키로 복호화

 

* 보안 이슈 존재

- 이브가 둘의 통신을 모두 기록해두었다가, 밥의 개인키를 언젠가 알아내기만 한다면 ?

- 세션키 획득이 가능해지고, 이로 인해 암호화 통신 스니핑이 가능

- 실제로 밥의 개인키가 유출될 수 있었던 버그가 바로 Heartbleed (CVE-2014-0160) 

 

: 즉, 현재 뿐만 아니라 미래에 개인키가 유출되어도 안전한 순방향 비밀성 (Forward Secrecy) 이 보장되지 않음

- 순방향 비밀성 = 완전 순방향 비밀성 (Perfect Forward Secrecy, PFS)

 

 

 

 

 

따라서, 완전 순방향 비밀성을 보장해주는 프로토콜로, DHE 가 있다.

 

2. 디피-헬만 키 합의 프로토콜 (DHE)

DHE

 

 

DHE 에서는 앨리스와 밥이 일방향 함수를 사용하여 결론적으로 공통의 색을 만들어내는 것이 포인트이다.

 

1. 앨리스와 밥이 해당 통신에서 사용할 기저색을 공개적으로 선정 (노랑)

2. 앨리스와 밥은 그 기저색에 각각 비밀색을 혼합 (빨강, 청록)

3. 비밀색을 직접 전송하지 않고 혼합색을 전송 (주황, 하늘)

4. 이제 각자 받아온 혼합색의 각자의 비밀색을 혼합 (하늘 + 빨강 / 주황 + 청록)

5. 앨리스와 밥은 공통의 색을 가지게 됨 (브라운)

 

여기서 이브가 기저색, 혼합색을 가지고 있다 하더라도, 

앨리스와 밥의 개인 비밀색이 없으면 공통의 색을 만들어낼 수 없고

 

또한 이후 이브가 비밀색을 알아낸다면 공통의 색을 만들어 낼 수 있기 때문에,

앨리스와 밥은 통신에 사용한 개인의 비밀색을 바로 버린다.

- 세션 키를 만드는데에 사용한 비밀키를 폐기하여, 이후 탈취가 불가하도록 하는 것

- 이로써 완전 순방향 비밀성(PFS)이 제공

 

 

 

이 외에 ECDH, SRP, PSK 등이 있고, 

 

DHE 프로토콜을 이해하기 쉽게 잘 설명해둔 블로그가 있어 인용해온 것이므로

더 자세히 알아보고 싶다면 다음 블로그를 참고하자.

 

출처 : www.mobiinside.co.kr/2019/02/13/buzzvil-tls/

 

[버즈빌의 누구나 궁금해하는 개발 이야기] 보안 프로토콜, TLS 1.3 - 모비인사이드 MOBIINSIDE

[버즈빌의 누구나 궁금해하는 개발 이야기] 보안 프로토콜, TLS 1.3 - 모비인사이드 MOBIINSIDE

www.mobiinside.co.kr