2018. 05. 03.
넷스케이프사가 개발한 인터넷 상에서 정보를 암호화하여 송/수신하는 프로토콜이다.
현재 인터넷에서 널리 쓰여지고 있는 WWW나 FTP등의 데이터를 암호화하여, 프라이버시에 관한 정보나 크레딧카드 번호, 기업 비밀등을 안전하게 송/수신할 수가 있다.
SSL의 용도
- 전자상거래, 온라인 뱅킹, 증권거래, 인증기관 등

사진 설명을 입력하세요.
일반적인 HTTP (암호화 과정이 없다.)

사진 설명을 입력하세요.
HTTPS (암호화 과정이 포함된다.)
SSL이 제공하는 3가지 기능
- Site Authentication
= User가 선택한 상대편 Web Site를 인증한다는 것을 의미한다.
- Data Privacy (기밀성)
= 전달되는 데이터가 도중에 누군가에 의해 판독되지 않는 다는 것을 보장한다. SSL은 다양한 암호화 알고리즘을 사용하여
인터넷을 통해 전송되는 개인의 사적인 정보를 외부로부터 불법적인 판독을 막는다.
- Data Integrity (무결성)
= 사용자의 브라우저로부터 상대방 웹서버까지 전달되는 동안 데이터가 도중에 누군가의 의해 변경되지 않도록 보장한다.
SSL은 위와 같은 요소들을 보장하여 보다 안전한 커뮤니케이션을 할 수 있도록 도와주며 또한 MS 익스플로러나 넷스케이프 등과 같이 널리 보급된 대부분의 웹브라우저와 웹서버들에서 지원된다. 웹브라우저가 SSL 통신을 하는지 여부는 브라우저 오른쪽 하단의 잠금쇠 표시를 가지고 판별할 수 있는데 경우에 따라서는 브라우저 대신에 다른 보안 어플리케이션이 대신하기도 한다.
HTTPS 는 SSL 상에서 HTTP 를 구현한 형태로 HTTP 가 포트 80번을 사용하는 대신 HTTPS 는 433번 포트를 사용한다.
SSL은 공개키 암호나 비밀키암호, 디지털 증명서, 해쉬함수등의 보안기술을 조합하여, 데이터의 도청이나 변경, 위장을 방지할 수가 있다. OSI 참조모델에서는 세션계층(Session Layer)과 전송계층(Transport Layer)의 경계에서 동작하며, HTTP나 FTP등의 상위 프로토콜을 이용하는 어플리케이션 Soft에서는 특별히 의식할 필요 없이 투과적으로 이용할 수 있다.
사진 설명을 입력하세요.
SSL이 수행되는 3가지 단계
- SSL 서버 인증 ( SSL Server Authentication )
= 사용자의 웹브라우저가 상대방의 웹서버를 인증하는 단계이다.
SSL을 지원하는 웹브라우저는 표준 공용키 암호화 기법을 사용하여 서버의 인증서와 공용 ID를 실제로 브라우저가 신뢰하는 인증기관
(Trusted CA)으로부터 발급받았는지 여부를 인증하는 기능을 내장하고 있다.
= 사용자는 서버의 신원을 확인하고, 클라이언트와 소프트웨어는 서버의 certificate와 public ID가 정당하며
클라이언트의 신뢰된 인증기관들의 목록에 서버의 인증기관이 포함되었는지를 확인하기 위해 표준 공개키 암호화 기술을
사용할 수 있다.
- SSL 클라이언트 인증 ( SSL Client Authentication )
= 웹서버가 자신에게 요청한 클라이언트를 인증하는 단계이다.
서버 인증 시에 사용했던 동일한 기법으로 인증하는데 서버에 내장된 SSL 지원 소프트웨어나 서버 앞에 배치된 SSL 하드웨어는
클라이언트의 인증서와 공용 ID를 실제로 서버가 신뢰하는 인증기관(Trusted CA)으로부터 발급 받았는지 여부를 인증하는 기능을
내장하고 있다.
= 서버는 클라이언트의 신원을 확인하고, 서버의 소프트웨어는 클라이언트의 certificate와 public ID가
정당하며, 서버의 신뢰된 인증기관들의 목록에 클라이언트의 인증기관이 포함되었는지를 확인하기 위해 표준 공개키 암호화 기술을
사용할 수 있다.
- 암호화된 SSL 연결 ( Encrypt Connection )
= 서로에 대한 인증단계 이후 정상적으로 종결되면 클라이언트와 서버사이에 교환되는 모든 데이터는 사적인 내용을 보호하기 위한
암호화를 요구받는다. 또한 SSL커넥션을 통해 암호화된 데이터 역시 전송 중 변경을 방지(Message Integrity)하기 위해 Hash
알고리즘이라고 불리는 기술에 의해 보호된다.
= 클라이언트와 서버사이에 송수신되는 모든 정보는 암호화되고 복호화된다. 데이터를 암호화하는 기밀성
(confidentiality)은 클라이언트와 서버의 비밀 트랜잭션을 위해 중요하며 암호화된 SSL 연결을 통한 전송 시에 데이터의 변조 여부를
자동으로 인지하는 무결성(Integrity)은 전송 경로상의 위해자를 예방할 수 있다.
실제 구현 순서
( 다음 순서를 진행하기에 앞서 SSL 또한 TCP 프로토콜에 기반을 두고 있으므로 반드시 TCP 3 Way Handshake는 이루어져야 한다. )
① 클라이언트는 서버에게 Client Hello Message를 전송
= 일반적으로 브라우저를 통해 서버에게 SSL 연결 요청을 하기 위한 초기 단계이다.
② 서버는 클라이언트로 Server Hello Message와 서버 인증서를 전송하며, 만약 클라이언트 인증서가 필요한 경우에 인증서 요청도
함께 전송
= 서버는 클라이언트가 자신이 적합한 서버인지를 인증할 수 있도록 공신력 있는 기관으로부터 발급받은 자신의 공인 인증서를
발송한다. 이때 일반적으로 서버 인증서와 함께 서버의 공용키가 클라이언트측에 전달된다. 만약 클라이언트에 대한 인증을
필요로 하는 트랜잭션이라면 이에 대한 요청도 함께 발송한다.
③ 클라이언트는 암호화에 사용되는 세션 키와 함께 클라이언트에서 지원하는 Cipher Suite를 서버로 전송하며, 서버가 인증서를
요청한 경우에는 클라이언트의 인증서도 함께 전송
= 서버의 인증서에 대해 클라이언트는 브라우저내에 저장되어 있는 신뢰기관으로부터의 발급여부를 확인하고 암호화에 사용될
Session Key를 생성해 서버 공용키로 Session Key를 암호화 하여 서버에게 전달한다. 또한 암호화된 Session Key와 함께
브라우저가 지원할 수 있는 Chiper Suite, 즉 암호화 기법 리스트와 함께 서버측에서 클라이언트의 인증서를 요청한 경우 스스로의
인증서를 발송한다.
④ 서버는 Chiper Suite를 받아들이고(또는 거부하고) Finished message를 클라이언트로 전송한 후 데이터 전송단계로 이동
= 서버는 클라이언트로부터 클라이언트 브라우저가 지원하는 암호화 기법 리스트를 받고 클라이언트에게 종결 메시지를 보내고
데이터 전송단계로 돌입한다. 여기까지 정상적으로 완료가 되면 클라이언트가 생성한 Session Key를 클라이언트와 서버가 모두
공유하게 된다.
⑤ 클라이언트는 최종메시지를 서버로 전송하고 데이터 전송단계로 이동
= 위 단계까지 정상적으로 완료되면 클라이언트는 종결 메시지를 서버에 보내고 실제 데이터를 전송하기 위한 단계로 돌입한다.
⑥ 상호 합의한 사이퍼 수트에 의해서 암호화된 메시지를 교환
= 앞 단계에서 서로 나누어 가진 Session Key로 암호화 된 데이터를 교환하게 된다.
SSL 암호화
SSL이 수행되는 단계에서 등장하는 Session Key는 클라이언트 측에서 생성하여 서버로 전달된 하나의 키로, 하나의 동일한 키를 클라이언트와 서버가 각각 보관함으로 이후 전달되는 암호화된 데이터를 복호화 할 수 있도록 한다.
SSL 수행단계에서 교환되는 Session Key는 비밀키 암호화(Secret Key cryptography). 즉 대칭적 암호화에서 사용되는 키로서 하나의 키를 양쪽 상대방이 각기 나누어 가짐으로써 하나의 키로 암호화한 데이터를 송신측에서 전송하면 수신측에서 암호화 시 사용한 동일한 키로 복호화하는 단순한 구조를 가진다.
비밀키 암호화 기법은 그 사용이 간단하고 속도가 빠른 반면 크게 두 가지 문제를 가지고 있다.
① 어떻게 동일한 키를 서버와 클라이언트가 서로 공유하며 가질 것인가
② 서버측에서 볼 때 하나의 클라이언트당 각기 다른 세션키가 필요하기 때문에 어떻게 키를 관리할 것인가
위와 같은 문제 때문에 등장한 것이 공개키 암호화 즉, 비대칭키 암호화 기법이다. 이 암호화 기법은 비밀키와 공개키라고 불리는 각기 다른 키로 구성된 한 쌍의 키를 클라이언트와 서버가 나누어 가지고 비밀키로 암호화된 데이터는 그와 같은 쌍인 공개키로만 복호화되는 알고리즘을 제공하고 있다.
이 암호화 기법은 비밀키 암호화 시 발생하는 키 교환의 문제를 해결해 주었다.
그러나 각기 나누어 갖은 한 쌍의 키를 가진 상대방에 대한 인증에 대한 문제와 암호화/복호화 과정에 많은 부하가 걸리는 단점을 가지고 있다. 따라서 실제로 SSL 수행의 겨우 이 두가지 암호화 기법과 PKI 기반의 디지털 인증서를 사용한 인증을 혼합하여 사용할 수 있다.
먼저 디지털 인증서(Digital Certificate) 교환을 통해 상대방을 인증, 공개키 암호화의 약점을 줄였으며 서버에서 클라이언트로 전달된 서버의 공개키로 클라이언트에서 생성된 세션키를 암호화하여 서버로 전달하는 공개키 암호화 기법을 사용하여 비밀키 암호화의 키 교환 문제를 없앴고 세션키가 전달된 후 세션키를 통해 실제 데이터를 암호화/복호화함으로 공개키 암호화 시 발생하는 부하로 인한 서비스 지연현상을 방지할 수 있다.
참고로 SSL에서 세션키를 통해 암호화하는 암호화 기법으로는 DES, 3DES, RC2, RC4등이 있고 40비트부터 168비트까지 사용된다. 메시지 무결성(Message Integrity) 보장을 위해 사용되는 Hash 알고리즘으로는 MD5 나 SHA1 등이 주로 사용된다.[출처] SSL (Secure Socket Layer)|작성자 Just Blue
'IT Infra .. > OLD' 카테고리의 다른 글
네트워크 장비에 사용되는 용어들 (0) | 2022.03.30 |
---|---|
OSPF 기초 (0) | 2022.03.29 |
DHCP (0) | 2022.03.26 |
OSI 7계층 (0) | 2022.03.25 |
ESM SIEM UTM IDS IPS (0) | 2022.03.24 |