반응형

SSL(Secure Socket Layer)이란? 


SSL이란 보안 소켓 계층을 이르는 것으로, 인터넷 상에서 데이터를 안전하게 전송하기 위한 인터넷 암호화 통신 프로토콜이며 데이터 보안을 위해서 개발한 통신 레이어다.


SSL은 표현계층의 프로토콜로 응용 계층 아래에 있기 때문에, 어떤 응용 계층의 데이터라도 암호화해서 보낼 수 있다. 

HTTP는 기본적으로 평문 데이터 전송을 원칙으로 하기 때문에 개인의 프라이버시가 오가는 서비스들(전자상거래, 전자메일, 사내문서)에 사용하기 힘들다. 

따라서 HTTPS를 이용하게 되고 HTTPS는 SSL 레이어위에 HTTP를 통과 시키게 된다. 

즉 평문의 HTTP 문서는 SSL 레이어를 통과하면서 암호화 돼서 목적지에 도착하고, 

목적지에서는 SSL 레이어를 통과하면서 복호화 돼서 웹 브라우저에 전달된다.


SSL 프로토콜은 OSI 7계층 모델의 어느 한 계층에 속해서 동작하는 것이 아니라

응용계층과 전송계층 사이에 독립적인 프로토콜 계층을 만들어서 동작하며, 

이 때, 응용계층의 프로토콜들은 외부로 보내는 데이터를 TCP가 아닌 SSL에 보내게 되고, SSL은 받은 데이터를 암호화하여 TCP에 보내어 외부 인터넷으로 전달하게 된다. 

전달 받을 때 역시, TCP로부터 받은 데이터를 복호화하여 응용계층에 전달하게 되는데, 이 과정에서 Application은 SSL을 TCP로 인식하고, TCP는 SSL을 Application으로 인식하기 때문에, Application과 TCP사이의 데이터 전달 방식은 기존 전달 방식을 그대로 사용하게 된다.







HTTP와 다른 점


1. HTTPS URL은 "https://"로 시작한다. 기본 포트번호는 443이다. HTTP URL은 "http://"로 시작한다. 기본 포트번호는 80이다.


2. HTTP는 평문 데이터를 기반으로 하기 때문에, 유저정보와 같은 민감한 정보가 인터넷 상에 그대로 노출된다. 이 정보는 수집되거나 변조될 수 있다. HTTPS는 이러한 공격을 견딜 수 있도록 설계돼 있다.


3. HTTPS는 인증서를 이용해서, 접속 사이트를 신뢰할 수 있는지 평가할 수 있다.


4. 일반적으로 HTTPS는 HTTP에 비해서 (매우 많이)느리다. 많은 양의 데이터를 처리할 경우 성능의 차이를 체감할 수 있다. 많은 웹 사이트들이 민감한 정보를 다루는 페이지(로그인 혹은 유저정보) 페이지를 HTTPS로 전송하고, 기타 페이지는 HTTP로 전송하는 방법을 사용한다. 하드웨어 SSL 가속기를 이용해서 암/복호화 성능을 높이는 방법을 사용하기도 한다.





SSL(Secure Socket Layer) 통신 원리 


 

1. 클라이언트가 서버에 접속하면 서버 인증서(서버의 공개키를 인증기관이 전자서명으로 인증한 것)를 전송받는

(이때, 클라이언트 인증을 필요로 할 경우 클라이언트의 인증서를 전송하게 된다.)



2. 클라이언트는 받은 서버 인증서를 분석하여 신뢰할 수 있는 인증서인지를 검토한 후, 서버의 공개키를 추출한다.


3. 클라이언트가 세션키로 사용할 임의의 메세지를 서버의 공개키로 암호화하여 서버에 전송합니다.


4. 서버에서는 자신의 개인키로 세션키를 복호화하여 그 키를 사용하여 대칭키 암호방식으로 메시지를 암호화하여 클라이언트와 통신하게 됩니다.(https://)


즉, 비대칭키 암호 방식은 대칭키 암호방식보다 상당히 느리다.
따라서 SSL은 암호화된 데이터를 전송하기 위해 대칭키/비대칭키 암호화 방식을 혼합하게 된다.
채널을 수립할 때는 공개키, 비공개키를 통해 안전한 채널을 설립하고 그 이후에는 대칭키를 통해 데이터를 암호화하여 주고 받는다.




위의 사진에 대해 자세한 내용을 알기 위해서는 아래 내용을 펼쳐보자






SSL에서 사용하는 암호 알고리즘 종류

구분

알고리즘

전자서명, 키 교환 알고리즘

RSA, DH/DHE-DSS/RSA, DH, Fortezza

암호 알고리즘

RC4, RC5, IDEA, DES, 3DES, Fortezza

Hash 함수(MAC)

MD5, SHA-1



참고 :: https://opentutorials.org/course/228/4894

https://m.blog.naver.com/xcripts/70122755291

반응형