시드니랩

[Security] 19. Secure Socket Layer (SSL) 본문

랩/Cryptography and Security

[Security] 19. Secure Socket Layer (SSL)

시드니효상 2021. 1. 1. 23:15

 IPSec 이 네트워크 계층에서의 보안을 담당하였다면, SSL은 전송계층에서 보안을 담당한다. IPSec 못지않게 어디에서나 쓰이는 보안 프로토콜로, http 와 SSL 의 결합인 https 의 탄생으로 이제는 쓰지 않을 수 없는 요소가 되었다.

 

SSL 은 NetScape 에서 개발되었으며, 전송계층 중 TCP 위에서 동작한다. UDP 에서는 일반적으로 동작하지 않으며 DTLS 라는 프로토콜로 SSL 비슷하게 적용할수 있다고 한다. 자세한 내용은 OpenSSL 을 참고하도록 하자.

 

 TCP 위에서만 동작하기 때문에, TCP가 기반인 Application(HTTP, FTP, Telnet.. )에 대해서는 SSL이 모두 적용 가능하다. 그리고 당연하지만, Application Independent 하다.

 

 SSL이 제공하는 서비스 또한 IPSec과 크게 다르지 않다.  Data Integrity, Sender Authentication, Data Confidentiality, Client-Server Authentication 이 제공하는 서비스이며, IPSec 과 독립적임을 반드시 잊지말자.

 

✣ SSL 의 Session 과 Connection

 

SSL을 이해하기 위해서는 Session 과 Connection 이라는 개념을 먼저 이해해야 한다. 

 

여러개의 Connection이 하나의 Session 에 속하게 되는 구조인데,

하나의 Session에 속한 Connection 들은 동일한 Encryption Methond, Hash Function, 등의 Cryptographic Parameter 을 공유한다. 

따라서 두 개체가 통신할때 항상 Session을 먼저 Initialize 해줘야 하며 이는 Handshaking Protocol 에서 담당한다.

 

Session 은 참고로 Current state 와 Pending State 을 가지는 Stateful 한 객체이다. 

Current State은 말그대로 양측에서 통신하고있는 활동적인 상태이며, Pending State는 Hand Shaking 같이 세션 자체를 modify 할때 잠시 멈춰 놓는 state 이다. 이 Pending State 에서 Current State 로 바꿀때, SSL Change Cipher protocol 을 사용한다.

 

 

 

 

✣ SSL 의 아키텍쳐

 

 아래 그림과 같이 SSL은 총 4개의 작은 프로토콜들로 이루어져있다. 각각의 핵심 역할은 다음과 같으며, 나머지 3 프로토콜이 모두 Record 프로토콜 위에서 동작한다. (Record 는 보안이므로)

 

SSL Handshake Protocol : 첫 연결 Initiate 시, Key Management 를 담당한다.

SSL Change Cipher Protocol : Synchronization 을 담당한다.

SSL Alert Protocol : 인증실패등의 비상상황 (카테고리가 정해져있음)시 사용한다. 

SSL Record Protocol : Authentication, confidentiality, Data Integrity을 담당한다.

 

4가지 프로토콜을 하나하나씩 살펴보도록 하자. 

 

 

✣ SSL Record Protocol 

 앞서 Record Protocol은 나머지 3개 프로토콜을 모두 보호하며, 전체 메시지의 Data Integrity, Data Confidentiality 그리고 Authentication 을 담당한다고 하였다. 각각의 구현 과정으로 HMAC, Encryption, DSS 가 바로 떠올라야한다. 

 

 우선 메시지를 3개의 Fragment 로 자르고 압축한다. Q. 여기서는 왜 압축을 먼저하지?

그 후, 정해진 Hash (SSL Session State 에서 설정) 로,

HMAC 하여 Data Integrity 를 확보하고,

정해진 Encryption Method 로 메시지를 암호화한다.

마지막으로 부가 내용이 들어갈 헤더를 붙인다.

 

 

✣ SSL Alert Protocol 

 

 프로토콜 규정에 20- 30개 정도의 카테고리가 정리되어있고, 해당하는 이슈 발생시에 해당 비트를 전송한다.

한가지 예를 들면, Sender 과 Receiver 의 Cryptographic parameter 가 맞지 않아서 Alert 를 보내는 경우가 있다. (Sender 은 3DES 인데 Receiver 은 AES)

 

왜 Alert Protocol은 IPSec 에서는 필요 없었는데, SSL 에서는 필요할까?

=> IPSec 에서는 반드시 정해진 Cryptographic Parameter 을 사용했어야 했는데, (예를들어 3-DES) SSL 에서는 그렇지 않다. 또한 IPSec 의 Security Association 은 단방향이기 때문에 Synchronize 가 필요하지 않다.

 

✣ SSL Change Cipher Spec Protocol 

 

✣ SSL Hand Shake Protocol 

 

 

 

Comments