반응형
SSL
SSL 개요
SSL
- 배경
- 1993년 웹 서버와 브라우저간의 안정한 통신을 위해 Netscape 사에 의해 개발
- 특징
- 세션계층에서 적용되며, 응용계층의 FTP, TELNET, HTTP등의 프로토콜의 안전성 보장
- 서버 인증, 클라이언트 인증, 기밀성 보장
- 현황 및 전망
- 현재 많은 전자 쇼핑 몰 업체에서 채택, 운영
TSL
- 배경
- SSL 3.0이 표준화된 이후 IETF는 1996년 6월부터 TLS 프로토콜에 대한 표준화 (SSLv3.1)
- Backward compatible with SSLv3
- 특징
- SSL 3.0을 기반으로 한 업그레이드 프로토콜
- 현황 및 전망
- 현재 TLS 1.0이 발표, 지속적 개발 예상
SSL 기능
서버 인증 기능
- 사용자는 서버의 신원을 확인
- 서버의 certificate와 public ID가 정당 확인
- 클라이언트의 신뢰 된 인증 기관들의 목록에 서버의 인증기관이 포함되었는지를 확인(표준 공개키 암호화 기술을 사용)
클라이언트 인증
- 서버는 클라이언트의 신원을 확인
- 클라이언트의 certificate와 public ID가 정당 확인
- 서버의 신뢰 된 인증기관 들의 목록에 클라이언트의 인증 기관이 포함되었는지를 확인(표준 공개키 암호화 기술을 사용)
암호화된 SSL 연결
- 클라이언트와 서버 사이에 송/수신 되는 모든 정보는 암호화/복호화 + 무결성
SSL 기본 구조 및 동작
SSL 기본 구조
트랜스포트 계층과 응용 계층 사이에 존재
- Connection
- Suitable type of service / Peer-to-peer relationship
- session
- By handshake protocol(SSL Hello)
SSL handshake Protocol |
SSL Change Cipher Spec |
SSL Alert Protocol |
HTTP | Telnet | ... |
SSL Record Protocol | |||||
TCP | |||||
IP |
- HTTP (TCP -> HTTP)
- HTTPS (TCP -> SSL -> HTTP)
- Management of SSL
- Handshake Protocol *Parameters(Session key, cryptography algorithm, authentication)
- Change Cipher Spec Protocol
- Alert Protocol
- Real security service
- SSL Record Protocol *Data encryption/decryption + Integrity
Handshake 프로토콜
- 서버와 클라이언트간의 상호인증을 수행하고, 사용할 키 교환 방식, 대칭키 암호 방식, HMAC 방식, 압축방식 등의 보안 속성을 협상
Change Cipher Spec 프로토콜
- Handshake 프로토콜에 의해 협상된 압축, MAC, 암호화 방식 등이 이후부터 적용됨을 상대방에게 알림
Alert 프로토콜
- 세션의 종료 또는 오류 발생시 이를 상대방에게 알림
Record 프로토콜
- 상위계층 메시지들이 보안성이 유지되며 전송될 수 있도록 하기 위하여, 메시지 분할, 압축, 메시지 인증, 암호화 등의 작업을 수행
SSL 세션과 SSL 연결
구분 | 설명 |
세션 식별자 (Session Identifier) |
활동 상태나 재시작할 수 있는 세션 상태를 임의의 바이트 열 |
대등 인증서 (Peer Certificate) |
대등의 X509.v9 인증서, 이 요소의 상태는 비어(null) 있을 수 있음 |
압축 방법 (Compression method) |
암호화 전 압축에 사용하는 알고리즘 |
암호 스펙 (Cipher spec) |
MAC계산에 사용되는 용량이 큰 데이터에 대한 알고리즘(null, DES 등)과 해시알고리즘을 나타냄 |
마스터 비빌키 (Master secret) |
클라이언트와 서버가 공유하는 48-byte 비밀 |
재시작 여부 (Is sesumable) |
새 연결을 시작하기 위해서 세션을 사용할 수 있는지 아닌지를 나타내는 플래그 |
서버와 클라이언트 랜덤 (Server & Client random) |
각 연결에 사용하려고 서버와 클라이언트가 선택하는 바이트 열 |
서버 기록 MAC 비밀키 (Server Write MAC secret) |
서버가 보낸 데이터로 MAC을 계산할 때 사용하는 비밀키 |
클라이언트 기록 MAC 비밀키 (Client Write MAC secret) |
클라이언트가 보낸 데이터로 MAC을 계산할 때 사용하는 비밀키 |
서버 기록 키 (Server Write key) |
서버가 데이터를 암호화하고 클라이언트가 복호화할 때 사용하는 관용 암호키 |
클라이언트 기록 키 (Client Write key) |
클라이언트가 데이터를 암호화하고 서버가 복호화할 때 사용하는 관용 암호키 |
초기화 벡터 (initialization vectors) |
CBC모드로 블록 암호를 사용할 때 초기화 벡터가 각키에 대해 유지될 맨 처음에는 SSL 핸드 세이크 프로토콜이 이 필드를 초기화, 그 뒤에 각 레코드의 최종 암호문 블록을 초기화 벡터로 사용하기 위해 저장됨(이때 나오는 레코드도 저장함) |
순서 번호 (Sequence numbers) |
각 개체는 각 연결 때마다 전송하고 수신한 메시지에 대해 별도로 순서 번호를 보관한 개체가 암호 명세 변경메시지를 보내거나 받으면 거기에 적합한 순서번호를 0으로 설정(2^64-1초과해서는 안됨) |
SSL 세부 구조
SSL Record protocol
- 응용 데이터 -> 단편화 -> 압축 -> MAC 첨부 -> 암호화 -> SSL 레코드 헤더 붙이기
기밀성
- 핸드 셰이크 프로토콜에 의해 정의 된 공개키와 함께 대칭 암호화 알고리즘 사용
- AES, IDEA, RC2-40, DES-40, DES, 3DES, Fortezza, RC4-40, RC4-128
- 메시지를 암호화하기 전에 압축
무결성
- 공개키와 MAC를 사용
- HMAC와 유사하지만 다른 패딩
SSL Change Cipher Spec. Protocol
- SSL 레코드 프로토콜을 사용하는 3가지 SSL 시정 프로토콜 중 하나
- 한 바이트로 구성 값 1을 갖는 한 개의 메시지로 구성
대등 개체에게 SSL - 관련 경고를 할 때 사용
- SSL과 경고 메시지는 압축되고 암호화
메시지는 2바이트로 구성
- 첫번째 바이트: 경고(Warning1)과 심각(fatal 1) 값을 가짐
- 두번째 바이트: 특정 경고를 나타내는 코드가 있음
SSL Handshake Protocol
- 모든 응용 데이터 전송 전에 사용
- 서버와 클라이언트가 서로를 인증
- 암호화 및 MAC 알고리즘을 협상
- Handshake과정을 통해 공통으로 사용하는 암호화 프로토콜 결정
- 동작
- 보안 기능을 설정 / 서버 인증 및 키 교환 / 클라이언트 인증 및 키 교환 / 종료
1. Client -> WebServer (TCP/IP 연결)
2. Client <- WebServer (TCP/IP 연결, SSL 연결)
1. Client -> Server의 공개키(세션 요청 및 정보) -> WebServer
2. Client <- Client의 공개키(인크립트된 세션키) <- WebServer
반응형