2017. 7. 21. 18:56ㆍNetworkHacking/Network
SSL ( Secure Socket Layer ) / TLS ( Transport Layer Security )
· 컴퓨터 네트워크에서 통신보안을 제공하는 암호화 프로토콜입니다 ( 데이터 전송시 평문이 아닌 암호화된 내용을 전송 )
· 웹브라우징, 전자메일, 인터넷 팩스, 인스턴트 메시징 및 VoIP와 같은 응용프로그램에서 널리 사용된다
· 웹 사이트의 경우 TLS를 사용하여 서버와 웹 브라우저 간의 모든 통신을 보호할 수 있다
· 전송계층과 응용계층 사이에 독립적으로 위치한다
· SSL 1.0 => SSL 2.0 => TLS( SSL 3.0 ) 순으로 개발되고 있다
1> 서버와 클라이언트는 연결( 세션 ) 마다 고유한 암호키를 공유하는 DES나 RC4와 같은 대칭키 암호화 알고리즘으로 보안을 제공한다
( 해당 암호키는 SSL Handshake Protocol로 결정된다 )
2> 서버와 클라이언트의 상호 인증이 이루어집니다
( RSA와 같은 공개키 암호 알고리즘, DSS와 같은 전자서명 알고리즘, X.509공개키 인증서가 사용된다 )
3> 메시지 인증 코드를 이용하여 메시지의 무결성을 보장합니다
SSL Handshake Protocol
인증서를 교환해서 서로를 인증하고, 공유키를 생성해서 암호화된 통신을 수행한다
[ 협상 단계 과정 ]
1> Client Hello ( Client -> Server )
- 자신이 사용할 SSL의 버전정보, Cipher suite list, 클라이언트 난수를 생성해서 보낸다
- Cipher suite : 대칭키 암호화시스템 + 공개키 암호화시스템 + 해쉬함수
2> Server Hello ( Server -> Client )
- 암호화 방법을 선택하고 서버난수를 생성해서 보낸다
3> Server Certificate ( Server -> Client )
- 클라이언트는 CA의 공개키로 이 인증서를 해독하여 서버의 공개키를 획득한다
- 클라이언트는 클라이언트와 서버의 난수를 각각 사용해 Pre-Master Secret 값을 생성한다
- PMS를 서버의 공개키로 암호화해서 서버에게 보내면 서버는 개인키를 사용해 해당 암호문을 복호화한다
- 암호문이 복호화가 제대로 이루어지면 서버는 클라이언트에게 인증할 수 있습니다
4> Server Key Exchange ( Server -> Client )
- 인증서가 없거나 인증서가 서명용으로만 사용되어질 때 해당 메시지를 보낸다
5> Certificate Request ( Server -> Client )
- 클라이언트에게 인증서를 요구한다 ( 암호 제품군에 따라 Server의 마음대로 보내도 되고 보내지 않아도 된다 )
6> Server Hello Done( Server -> Client )
- 서버가 클라이언트에게 보낼 메시지를 모두 보냈음을 의미한다
7> Client Certificate ( Client -> Server )
- 클라이언트의 인증서 개인키로 암호화하고 클라이언트 인증서 공개 키를 사용해서 확인한다
8> Certificate Verify ( Client -> Server )
- 클라이언트의 인증서를 서버가 쉽게 확인할 수 있도록 전자서명하여 보낸다
- 해당 메시지를 통해서 서버는 클라이언트의 인증서의 공개키가 유효한지 확인한 후 클라이언트 인증을 마친다
9> Client Key Exchange ( Client -> Server )
- PMS, 대칭 암호화 키, 메시지 인증코드 생성에사용되는 46바이트의 난수, 서버의 공개키로 만든 암호 등이 포함된다
- Pre-Master Secret : 일종의 난수값
- PMS, Client 난수, Server 난수 이 세값을 이용해 암호화키와 메시지 인증 코드용 공유키 를 생성한다
10> Change Cipher Spec ( Client -> Server )
- 이후에 전송되는 모든 메시지는 서버와 협상된 알고리즘과 키를 이용해 암호화 시키겠다고 서버에 알린다
- 그리고 바로 Finished메시지를 생성하여 서버에 전송한다
11> Finished ( Client <-> Server )
- 클라이언트와 SSL서버간의 SSL 핸드쉐이크를 종료한다
# SSL 에서 사용하고 있는 암호 기술
- 공개 키 암호 : 사전 마스터 비밀을 암호화 한다
- 일방향 해시 함수 : 의나난수 생성기를 구성한다
- 디지털 서명 : 서버나 클라이언트의 인증서를 검증한다
- 의사난수 생성기 : 사전 마스터 비밀을 만든다 / 마스터 비밀로 부터 키를 만든다 / 초기화 벡터를 만든다
참고사이트 : http://shayete.tistory.com/
'NetworkHacking > Network' 카테고리의 다른 글
Wireshark 사용법 + 유용한 기능 (1) | 2017.08.02 |
---|---|
SSH Port Forwarding 이해하기 ( 해커의 관점에서의 이론 ) (1) | 2017.08.02 |
FTP서버구축 및 통신하기 ( netcat / ncat ) (0) | 2017.07.21 |
DNS Spoofing 실습 (0) | 2017.07.21 |
DNS Server가 되어보기 실습 (0) | 2017.07.21 |