SSL은 보안 소켓 계층을 이르는 말로 인터넷 상에서 데이터를 안전하게 송수신 하기 위한 암호화 통신 프로토콜입니다.

HTTP는 평문 데이터를 전송하기에 암호화가 필요한 서비스들 이를테면, 사내문서, 전자메일 등에서 사용하기에는 어려움이 있습니다. 이를 해결하기 위해서 SSL layer를 거쳐 HTTPS가 되도록 합니다.

 

HTTP -> SSL(Layer) -> HTTPS

 

 

 

SSL 동작원리

SSL프로토콜은 응용계층과 전송 계층 사이에 프로토콜 계층을 만들어서 동작합니다.

응용계층의 프로토콜들은 외부로 보내는 데이터를 TCP가 아닌 SSL에 보내고 SSL은 받은 데이터를 암호화하여 TCP를 거쳐 외부로 전달합니다.

 

 

SSL Layer는 TCP가 아닌 데이터가 전송될 경우 SSL Layer를 거쳐 TCP로 전달되어 외부로 데이터가 전송됩니다.

해당 데이터를 전달 받을시, 암호화된 데이터를 수신 받게 되는데 이는 수신측  SSL Layer에서 복호화를 통해 데이터 처리가 이루어집니다. 수신할때 TCP로 받은 데이터는 복호화하여 응용계층에 전달됩니다.

Application은 SSL을 TCP로 인식 TCP는 SSL을 Application으로 인식 하기에 기존 전달방식을 그대로 사용합니다.

 

SSL 계층

SSL TCP 위에서 Record Protocol을 통해 실질적인 보안서비스를 제공하고, Handshake Protocol, Change Cipher Spec Protocol, Alert Protocol을 통해 SSL 동작에 관한 관리를 합니다.

 

 

 

Handshake Protocol

암호 알고리즘 결정, 키 분배, 서버 및 클라이언트 인증을 수행하기 위해 사용되는 프로토콜입니다.

Handshake Protocol

 

 

 

Record Protocol 

데이터의 압축을 수행하여 안전한 TCP패킷으로 변환시킵니다. 데이터 암호화 및 무결성을 위한 메시지 인증을 수행합니다.

 

Record Protocol

총 5가지 단계를 거칩니다.

Fragmentation : 메시지 즉, 데이터는 작은 블록으로 조각화가 이루어집니다.

Compression : 조각이 된 블록에 대하여 압축이 진행됩니다.

Add MAC : SSL-Handshake 프로토콜에 설정된 비밀키를 사용하여 MAC를 계산합니다.

Encryption : MAC을 포함한 데이터를 SSL-Handshake에 설정된 대칭키를 사용하여 암호화를 진행합니다.

Append header : SSL Header가 암호화된 블록에 추가되며 Header에는 각종 필드가 포함되어 있습니다. 

 

 

 

Change Cipher Spec Protocol

암호화 알고리즘과 보안 정책을 조율하기 위해 사용하는 프로토콜입니다. Handshake 과정에서 데이터 암호화용 대칭키 생성이 완료되고 나면 그 이후부터 데이터를 암호화하라는 신호를 보내는데 사용됩니다.

 

 

 

Alert protocol

Clinet or Server side에 오류가 발생할시 상대방에게 경고 메시지를 보내며 오류가 critical 할시에 SSL 연결을 닫습니다.

 

Unexpected message : 부적절한 메시지가 수신될 때 발생

Bad record MAC : 잘못된 MAC으로 메시지가 수신될 때 발생합니다.

Handshake failure : 보낸 사람이 옵션에서 허용되는 보안 매개변수 집합을 협상할수 없을시에 발생합니다.

Decompression failure : 압축 해제에 실패할때 발생합니다.

Iligal parameters : Handshake 메시지의 필드가 범위를 벗어날 때 발생합니다.

 

 

'Basic Concepts > Network' 카테고리의 다른 글

curl(Clinet URL)  (0) 2020.03.17
SSL Strip Attack & SSL MITM Attack  (0) 2020.02.27
HSTS(HTTP Strict Trasport Security)  (0) 2020.02.25
IPS/IDS  (0) 2020.02.08
방화벽 (FireWall)  (0) 2020.01.23

+ Recent posts