- 데이터 무결성과 IP 패킷의 인증을 제공 (MAC 기반) - Replay Attack으로부터 보호 - 인증 시 MD5, SHA-1 인증 알고리즘 사용 - 수신자는 같은 키를 이용하여 인증 값 검증
ESP
- 전송 자료를 암호화하여 전송하고, 수신자가 받은 자료를 복호화하여 수신 - AH와 달리 암호화를 제공(대칭키, DES, 3DES 알고리즘) - TCP/UDP 등의 Transport Layer까지 암호화할 경우, Transport Mode - 전체 IP 패킷에 대해 암호화할 경우, Tunnel Mode
SSL(Secure Socket Layer), TLS
- 보안 소켓 계층을 이르는 말로, 인터넷에서 데이터를 안전하게 전송하기 위한 인터넷 통신 규약 프로토콜이다.
- SSL V3.0을 공식적으로 표준화하여 이름을 붙인 것이 TLS 이다.
- 기존 통신이 TCP/IP Protocol을 이용하는 것이라면, SSL 통신은 SSL/TLS Protocol을 사용하여 실제 데이터를 암호화 하여 통신하는 것을 말한다.
- 대표적으로 HTTPS는 SSL 통신중 일부이며, 그 외 SSH, SFTP등 여러 종류의 SSL 통신이 존재한다.
SSL Handshaking
TCP 연결 후 웹 브라우저는 443 포트를 호출하여 3-way handshaking을 수행하며, 그 과정은 아래와 같다.
1) Client -> Server
- 'Client Hello' 메시지를 전송하는데, 웹 브라우저에서 지원하는 SSL 버전, 암호화 알고리즘 등의 정보가 포함됨
- 'Random'을 전송하는데, 이는 Replay Attack을 방지하기 위한 임의적인 숫자임
2) Server -> Client
- 서버가 지원할 수 있는 알고리즘과 함께 'Server Hello' 메시지를 전송
- 웹 서버도 'Random'을 전송
3) Client -> 공인 또는 사설 CA
- 전달받은 서버 인증서를 CA를 통해 신뢰할 수 있는 서버인지 확인
*공인 CA 인증서: 인증서의 공개키로 복호화
* 사설 CA 인증서: 브라우저에 저장된 CA 리스트에 없기 때문에 https 경고 표시
4) Client -> Server
- 암호 통신에 사용할 Session Key 생성 후 서버의 공개키로 암호화해 Pre-master Key를 만들어 서버에 전송 (Change Cipher Spec)