표준SSL_server_Identification

Download Report

Transcript 표준SSL_server_Identification

표준 SSL Server
Identification
2012.4.26
유창훈
Table of Contents
1. SSL Server Identification
2. 프로토콜 설명 및 구조
3. SSL handshake
1. SSL Server Identification
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Site는 Site의 공개키와 Site정보를 인증기관에 제출
인증기관은 검증을 거친 후 인증기관의 개인키로 인증서에 서명
인증기관은 Site로 인증서 발급
사용자의 웹 브라우저에는 인증기관의 인증서(공개키)가 내장.
사용자가 site에 접속요청
Site는 발급받은 인증서를 사용자에게 전달
사용자는 내장된 인증기관의 공개키로 Site 인증서 검증
사용자는 Site 정보와 Site 공개키 획득
획득한 Site 공개키로 대칭키를 암호화 하여 Site로 전송
Site는 개인키로 해독하여 대칭키 획득
안전하게 전달 된 대칭키를 이용하여 암호문을 주고 받음
2. 프로토콜 설명
SSL(Secure Socket Layer)은 넷스케이프사에서 전자상거래 등의 보안을
위해 개발됨.
이후TLS(Transport Layer Security)라는 이름으로 표준화됨.
HTTP 뿐만 아니라 FTP, SMTP등 응용계층(Application Layer) 프로토콜
의 종류에 상관없이 사용할 수 있는 장점.
일반적으로는 웹 트래픽 보안을 위해서 사용.
Authentication, Encryption, Integrity를 보장.
2. 프로토콜 설명
• 프로토콜 스택 구조
2. 프로토콜 설명
• SSL Record Protocol
2. 프로토콜 설명
• SSL Record Protocol – 메시지 포멧
2. 프로토콜 설명
• Record 프로토콜
– 상위계층 메시지들이 보안성이 유지되며 전송될 수 있도록 하기
위하여, 메시지 분할, 압축, 메시지 인증, 암호화 등의 작업을 수
행
• Handshake 프로토콜
– 서버와 클라이언트간의 상호인증을 수행하고, 사용할 키 교환 방
식, 대칭키 암호 방식, HMAC 방식, 압축방식 등의 보안속성을 협
상
• Change Cipher Spec 프로토콜
– Handshake 프로토콜에 의해 협상된 압축, MAC, 암호화 방식 등
이 이후부터 적용됨을 상대방에게 알림
• Alert 프로토콜
– 세션의 종료 또는 오류 발생시 이를 상대방에게 알림
• Application Protocol
– 다양한 상위계층에 보안서비스를 제공. HTTP, FTP 등.
2. 프로토콜 설명
• 인캡슐레이션
– ex) SSL Record Protocol – HandShake
3. SSL handshake
1
ClientHello
클
라
이
언
트
5
6
7
ServerHello
2
Certificate or ServerKeyExchange
3
ServerHelloDone
4
ChangeCipherSpec
8
서
ClientKeyExchange
ChangeCipherSpec
Finished
Finished
9
버
3. SSL handshake
• Client Hello
– SSL버전, 난수, 클라이언트가 지원하는 Cipher Suit 리스트 및 압축방법 리스트
정보전송
– cipher_suites : SSL_키교환알고리즘_WITH_암호알고리즘_해쉬알고리즘
예) SSL_RSA_WITH_NULL_MD5,
SSL_RSA_WITH_NULL_SHA,
SSL_RSA_EXPROT_WITH_RC4_40_MD5(Steam Cipher),
SSL_RSA_WITH_RC4_A28_MD5,
SSL_RSA_WITH_RC4_128_SHA,
SSL_RSA_EXPROT_WITH_RC2_CBC_40_MD5(Block Cipher),
SSL_RSA_WITH_IDEA_CBC_SHA,
SSL_RSA_WITH_DES_CBC_SHA,
SSL_RSA_WITH_3DES_EDE_EBC_SHA 등
3. SSL handshake
3. SSL handshake
1
ClientHello
클
라
이
언
트
5
6
7
ServerHello
2
Certificate or ServerKeyExchange
3
ServerHelloDone
4
ChangeCipherSpec
8
서
ClientKeyExchange
ChangeCipherSpec
Finished
Finished
9
버
3. SSL handshake
• Server Hello
– ClientHello메세지에 대한 응답
– 서버 버전, 난수, 서버에서 선택한 cipher_suit 등을 셋팅하여 알려줌.
3. SSL handshake
1
ClientHello
클
라
이
언
트
5
6
7
ServerHello
2
Certificate or ServerKeyExchange
3
ServerHelloDone
4
ChangeCipherSpec
8
서
ClientKeyExchange
ChangeCipherSpec
Finished
Finished
9
버
3. SSL handshake
• Certificate
– 서버의 인증서가 포함됨.
– 서버의 인증서와 인증서를 발급한 CA 인증서가 순서대로 위치
• ServerKey Exchange
– 서버인증을 위한 자신의 공개키 인증서를 가지고 있지 않은경우
– 클라이언트에게 pre-master secret을 공유하는데 필요한 서버의 공개키를 알려
주기 위해 전송됨.
• ServerHelloDone
– 서버에서 보낼 메시지를 모두 보냈음을 의미
3. SSL handshake
3. SSL handshake
1
ClientHello
클
라
이
언
트
5
6
7
ServerHello
2
Certificate or ServerKeyExchange
3
ServerHelloDone
4
ChangeCipherSpec
8
서
ClientKeyExchange
ChangeCipherSpec
Finished
Finished
9
버
3. SSL handshake
• Client Key Exchange
– 세션키를 생성하는 비밀정보(pre-master secret)를 암호화 하여 서버에 전송.
– 이를 기반으로 master_secret 과 키블록을 md5, sha1 함수를 통해 생성.
– 생성된 키 블록이 세션키로 사용.
• Change Cipher Spec
– 클라이언트는 마지막으로 Change Cipher Specs 메시지를 서버에 전송하여 이후
에 전송되는 모든 메시지는 협상된 알고리즘과 키를 이용할 것임을 알림.
• Finished
– 협상된 알고리즘 및 키가 처음으로 적용된 메시지 발송.
3. SSL handshake
3. SSL handshake
1
ClientHello
클
라
이
언
트
5
6
7
ServerHello
2
Certificate or ServerKeyExchange
3
ServerHelloDone
4
ChangeCipherSpec
8
서
ClientKeyExchange
ChangeCipherSpec
Finished
Finished
9
버
3. SSL handshake
• Change Ciper Spec
– 클라이언트는 마지막으로 Change Cipher Specs 메시지를 서버에 전송하여 이후
에 전송되는 모든 메시지는 협상된 알고리즘과 키를 이용할 것임을 알림.
• Finished
– 협상된 알고리즘 및 키가 처음으로 적용된 메시지 발송.
3. SSL handshake