정보보안/네트워크 기초

[암호화 프로토콜] SSL/TLS

록스타★ 2024. 6. 17. 13:54
반응형

SSL/TLS

- 전송 계층 상에서 인증 및 데이터를 암호화하기 위한 프로토콜

- HTTP(HTTPS), FTP(FTPS), TELNET, SMTP 등에서 사용 가능

- 주로 웹 브라우저와 웹 서버 사이의 안전한 보안 채널을 제공하기 위해 사용

 

SSL/TLS 차이점

- SSL v3.0을 참고하여 RFC2246으로 표준화 된 것이 TLS

- SSL과 TLS는 본질적으로 같아 사실상 완전히 다른 프로토콜이라고 볼 수 없음

- 통신 순서는 크게 바뀌지 않았으나 사이퍼스위트 (암호화 방식, 인증 방식, 키 교환 방식, 무결성 알고리즘 등에 대한 정보 집합)에 대한 합의 방법, 합의 과정이 보호 여부 등에서 차이를 보임

 

SSL/TLS 데이터 교환

- TCP 3-Way Handshaking이 맺어진 후 데이터 교환

1. Client Hello : 클라이언트는 서버에게 지원 가능한 방식(암호, 키 교환, 서명, 압축)제공

2. Server Hello : 서버는 클라이언트에게 지원 가능한 방식과 공개키가 포함된 서버 인증서 전송 (클라이언트 인증서 요청 - 선택 사항)

3. 세션키 전송 : 서버 인증서의 발급 여부를 신뢰 기관에 확인하고 암호화 키로 사용될 대칭키를 랜덤으로 생성하여 서버의 공개키로 암호화해서 전송 (클라이언트 인증서 송신 - 선택 사항)

4. 서버 데이터 전송 준비 완료 메시지 전송 : 세션키를 자신의 사설키로 복호화하고 종결 메시지 발송

5. 클라이언트 데이터 전송 준비 완료 메시지 전송 : 종결 메시지 발송

그림(1) TSL Handshake

 

SSL/TLS Protocol

- SSL은 TCP에 의존적인 Protocol 집합으로 이루어져 있음

- Record Protocol과 Handshake 관련 Protocol (HandShake Protocol, ChangeCipherSpec Protocol, Alert Protocol)크 게 두 가지의 그룹으로 구성

 

Record Protocol

- 데이터 교환을 위한 프로토콜, 양단간 통신 연결 시 보안 제공

- 상위 protocol (Handshake, ChangeCipherSpec, Alert Protocol)등의 제어메시지와 Application 메시지를 레코드 단위로 운반

- 분할, 압축, 무결성, 인증, 암호화 등의 기능을 레코드 단위로 제공

- Encrypt를 통한 기밀성과 HMAC을 통한 무결성을 제공

 

Change Cipher Spec Protocol

- 1byte로 구성

- HandShake protocol에 의해 협상된 압축, MAC, 암호화 방식이 이후부터 적용됨을 알려줌

 

Alert Protocol

- HandShake 과정에서 오류 발생 시 상대방에게 오류를 통보하기 위해 사용

- ex) 제시한 암호화 방식을 지원할 수 없을 경우

 

 

결론

사실 TLS 관련을 다루는 포스팅을 할 때 SNI(Server Name Indication) Field도 함께 다뤄볼까 했지만 이건 이후에 포스팅을 해야겠다고 생각이든다. SNI Field가 단순하지도 않고 조금 어려운부분도 있고, 이 부분 같은 경우에는 암호화가 되더라도 SNI Field를 사용하여, 특정 페이지 및 애플리케이션을 특정할 수 있기 때문에 조금 더 자세히 다뤄야하지 않을까 생각이 든다. 

 

 

 

참조

https://www.cloudflare.com/ko-kr/learning/ssl/what-happens-in-a-tls-handshake/

 

반응형