본문 바로가기

Linux

TLS

트랜스포트 레이어 보안 (TLS) 보안 소켓 레이어 (SSL) 암호 규약이다그리고 '트랜스포트 레이어 보안'이라는 이름은 '보안 소켓 레이어' 표준화 되면서 바뀐 이름이다 규약은 인터넷 같이 TCP/IP 네트워크를 사용하는 통신에 적용되며통신 과정에서 전송계층 종단간 보안과 데이터 무결성을 확보해준다 규약은웹 브라우징, 전자 메일, instant messaging, voice-over-IP (VoIP) 같은 응용 부분에 적용되고 있다. TLS IETF표준 규약이다최종 갱신은 RFC 5246이고최종 갱신 버전은 넷스케이프에서 만든 SSL 표준을 바탕으로 했다.
2.     내용
TLS 클라이언트/서버 응용 프로그램이 네트워크로 통신을 하는 과정에서 도청간섭위조를방지하기 위해서 설계되었다그리고 암호화를 해서 최종 단의 인증통신 기밀성을 유지시켜준다.
TLS 3단계 기본 절차:
       i.       지원 가능한 알고리즘 서로 교환
      ii.        교환인증
     iii.       대칭  암호로 암호화하고 메시지 인증
우선  단계에서 서버와 클라이언트는 암호 스위트를 교환한다 단계에서  교환과 인증에사용될 암호화 방법메시지 인증 코드(MAC) 결정된다 교환과 인증 알고리즘은 공개키방법을 사용하거나 미리 공유된 (TLS-PSK) 사용할 수도 있다메시지 인증 코드들은 HMAC 해시 함수로 만든다. SSL에서는  표준 무작위 함수를 사용한다.
일반적인 알고리즘:
ü   교환: RSA, Diffie-Hellman, ECDH, SRP, PSK
ü  인증: RSA, DSA, ECDSA
ü  대칭  암호: RC4, Triple DES, AES, IDEA, DES, Camellia.
ü  해시함수: TLS에서는 HMAC-MD5 또는 HMAC-SHA. SSL에서는 MD5 SHA.
3.     키 교환 과정

Full Handshake

1. 클라이언트는 서버에게 "Client hello" 메시지를 전달한다이때클라이언트는 Cipher suits에서 지원하는 랜덤 값을 같이 첨부하여 보낸다.
2. 서버는 "Server hello" 메시지를 클라이언트에게 전송해 준다이때 서버도 랜덤 값을 같이 보낸다.
3. 서버는 자신의 인증서를 클라이언트에 보내어 클라이언트가 인증할 수 있도록 한다또한 이때클라이언트에게 인증서 양식을 요청할 수 있다.
4. 만약 서버가 클라이언트에게 인증서를 요청하였다면클라이언트는 인증서를 서버에게 전송한다.
5. 클라이언트는 서버가 준 인증서의 공개 키를 가지고 임의의 Pre-Master Secret을 암호화 한 뒤이것을 서버에게 전송한다.
6. 서버가 Pre-Master Secret을 받으면서버와 클라이언트는 이 Pre-Master Secret을 가지고 각각 Master Secret과 세션 키를 생성한다.
7. 클라이언트는 새로 생성된 세션 키를 Hashing 및 메시지 암호화에 사용하기 위해 "Change cipher spec"을 서버에게 전송한다이 때, "Client finished" 메시지도 함께 전송한다.
8. 서버는 "Change cipher spec"을 받은 뒤 클라이언트에게 "Server finished"메시지를 전송한다.
*Change cipher spec : Record Layer에서 데이터를 암호화 할 때클라이언트-서버 간에 약속한 암호화 알고리즘을 사용한다는 것을 알려준다.

Abbreviated handshake

1. 클라이언트는 서버에게 "Client hello" 메시지를 전송한다이 때, session이 재 시작될 세션 ID를 사용한다.
2. 서버는 자신의 세션 캐시 목록에서 클라이언트의 세션 ID와 매칭되는 것이 있는지 확인한다만약 있다면서버는 연결을 재 시작할 수 있으므로 "Server hello" 메시지를 클라이언트에게 전송한다.
만약 세션 ID를 찾지 못한다면서버는 새로운 세션 ID를 생성하며클라이언트-서버 간 새로 연결이 수립될 때처럼 Handshake가 이루어 진다.
3. 클라이언트와 서버는 "Change cipher spec"을 다시 교환해야 하며이어서 "Client finished", "Server finished" 메시지를 주고 받는다.
4. 이제 클라이언트-서버 간에 연결이 다시 이루어 졌고암호화 된 채널을 이용해 데이터를 교환할 수 있다.