주제
- #TLS
작성: 2024-10-27
작성: 2024-10-27 21:31
2020년쯤을 기점으로 TLS1.1이 지원종료됨에 따라
오래된 서버들을 점검해야 하는 일이 생겼다.
TLS1.1을 유지할 경우, AWS, Azure 등 클라우드 서비스 간 통신 시 에러가 발생하거나,
결제 등 외부 API 통신 시 에러가 발생하거나, 브라우저 버전에 따라 문제가 생길 여지가 있다.
- 6.x 버전 이하는 TLS1.2를 지원하지 않는다는 것으로 보인다. 자바 7 이상의 JRE를 통해 TLS1.2로 바꿔줘야 한다.
- 1.1.13버전에서 TLS1.2를 지원한다는 것으로 보인다.
Client Hello : 클라이언트가 서버에 연결 요청을 보낸다. (지원하는 TLS 버전과 암호 모음 포함)
Server Hello : 서버는 사용할 TLS 버전과 암호 모음, SSL 인증서를 보내 신뢰성을 증명한다.
키 교환 및 세션 키 생성 : 클라이언트와 서버가 키 교환 알고리즘을 통해 공유 세션 키를 생성한다.
완료 메시지 : 클라이언트와 서버가 각자 키로 암호화된 완료 메시지를 보낸다.
데이터 전송 : 세션 키를 사용하여 데이터를 암호화하고 주고 받는다.
종료 : 데이터 전송이 끝나면 세션 종료 메시지를 주고 받고, 세션 키 정보를 삭제한다.
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)암호 모음을 지원하며, 암호화와 인증을 동시에 수행하기 때문에 속도도 빠르다.
클라이언트와 서버가 데이터를 주고받을 수 있도록 필요한 모든 암호화 매커니즘으로, 4개로 구성된다.
1. 키 교환 알고리즘
- 공유 비밀키를 안전하게 교환하는 방법 ex) RSA, Diffie-Hellman
2. 인증 알고리즘
- 인증서를 통해 서버가 신뢰할 수 있는지 검증 ex) RSA 등 공개 키
3. 대칭 암호화 알고리즘
- 세션 중에 데이터를 암호화하고, 클라이언트와 서버가 동일한 세션 키로 복호화하는 방법 ex) AES
4. 메시지 인증코드
- 데이터 무결성 검증 ex) HMAC-SHA256
암호 모음은 위 네 가지 요소를 합쳐 표기된다.
댓글0