뚠뚠멍의 생각들

TLS 톺아보기

  • 작성 언어: 한국어
  • 기준국가: 모든 국가country-flag
  • IT

작성: 2024-10-27

작성: 2024-10-27 21:31

2020년쯤을 기점으로 TLS1.1이 지원종료됨에 따라

오래된 서버들을 점검해야 하는 일이 생겼다.


TLS1.1을 유지할 경우, AWS, Azure 등 클라우드 서비스 간 통신 시 에러가 발생하거나,

결제 등 외부 API 통신 시 에러가 발생하거나, 브라우저 버전에 따라 문제가 생길 여지가 있다.


톰캣

- 6.x 버전 이하는 TLS1.2를 지원하지 않는다는 것으로 보인다. 자바 7 이상의 JRE를 통해 TLS1.2로 바꿔줘야 한다.

Nginx

- 1.1.13버전에서 TLS1.2를 지원한다는 것으로 보인다.


TLS의 원리

Client Hello : 클라이언트가 서버에 연결 요청을 보낸다. (지원하는 TLS 버전과 암호 모음 포함)

Server Hello : 서버는 사용할 TLS 버전과 암호 모음, SSL 인증서를 보내 신뢰성을 증명한다.

키 교환 및 세션 키 생성 : 클라이언트와 서버가 키 교환 알고리즘을 통해 공유 세션 키를 생성한다.

완료 메시지 : 클라이언트와 서버가 각자 키로 암호화된 완료 메시지를 보낸다.

데이터 전송 : 세션 키를 사용하여 데이터를 암호화하고 주고 받는다.

종료 : 데이터 전송이 끝나면 세션 종료 메시지를 주고 받고, 세션 키 정보를 삭제한다.


TLS 1.2와 1.1 무엇이 다를까?

TLS는 전송 단계에서의 보안 프로토콜로, HTTPS의 기반이다. 인증, 무결성, 암호화를 제공한다.

1.2는 1.1대비 보안성, 성능 면에서 뛰어나다고 한다.

- 1.1은 md5와 sha-1 해시 알고리즘을 사용한다.

- 1.1은 BEAST, Man-in-the-middle, Cipher Suite 공격에 노출될 수 있다.

* BEAST : 공격자가 HTTPS 연결을 가로채서 악의적인 내용 주입

* Man-in-the-middle : 공격자가 통신을 가로채서 데이터를 탈취

- 1.2는 sha-256 알고리즘을 사용한다. (더 강력한 보안 알고리즘)

- 1.2는 GCM(Galois / Counter Mode)암호 모음을 지원하며, 암호화와 인증을 동시에 수행하기 때문에 속도도 빠르다.


Cipher Suite(암호 모음)

클라이언트와 서버가 데이터를 주고받을 수 있도록 필요한 모든 암호화 매커니즘으로, 4개로 구성된다.

1. 키 교환 알고리즘

- 공유 비밀키를 안전하게 교환하는 방법 ex) RSA, Diffie-Hellman

2. 인증 알고리즘

- 인증서를 통해 서버가 신뢰할 수 있는지 검증 ex) RSA 등 공개 키

3. 대칭 암호화 알고리즘

- 세션 중에 데이터를 암호화하고, 클라이언트와 서버가 동일한 세션 키로 복호화하는 방법 ex) AES

4. 메시지 인증코드

- 데이터 무결성 검증 ex) HMAC-SHA256

암호 모음은 위 네 가지 요소를 합쳐 표기된다.


댓글0