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. 클라이언트 데이터 전송 준비 완료 메시지 전송 : 종결 메시지 발송
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/
'정보보안 > 네트워크 기초' 카테고리의 다른 글
IP(Internet Protocol) 및 게이트웨이(Gateway, GW) (0) | 2024.07.31 |
---|---|
NAT 및 포트 포워딩(Port Forwarding) (0) | 2024.07.29 |
버추얼박스(VirtualBox) NAT Network 설정 (0) | 2024.07.22 |
이중화 및 LLCF, FailOver (초간단 LLCF, FailOver 비교) (0) | 2024.05.29 |
OSI 7계층, 캡슐화 및 역캡슐화 (2) | 2024.05.24 |