🔐SSL(Secure Sockey Layer)

웹 서버와 클라이언트의 통신 암호화 프로토콜

SSL이 적용되지 않은 통신의 경우, 위 그림과 같이 평문(Plain Text)가 그대로 전송됨.

만약 제 3자가 어떠한 방식으로 통신 패킷을 탈취할 경우, 그 내용을 쉽게 확인할 수 있음.

 

SSL을 적용한다면 이러한 문제를 해결할 수 있음.

요청을 암호화해서 보내므로 통신 패킷이 탈취되도 복호화 키가 없으면 원래 내용을 알 수 없기 때문!

 

 

🔒TLS(Transport Layer Security)

SSL 3.0의 보안취약점을 보완한 통신 보안 프로토콜

SSL을 보완한 것이 TLS이지만, 인터넷에 적용되는 통신 보안 프로토콜을 전부 통틀어서 SSL이라 부름.

 

❗️SSL 특징

  1. URL 프로토콜은 https 이며, 기본 포트는 443
  2. 통신 데이터가 암호회되어, 패킷이 탈취되는 사고가 발생해도 데이터를 지킬 수 있음
  3. SSL 인증서를 통해 도메인의 신뢰성을 검증할 수 있음
  4. 데이터 송/수신 과정에서 암/복호화가 발생하므로 속도가 느림

 

🔎SSL 원리

SSL의 통신하는 원리는 아래와 같으며, 이러한 일련의 과정을 HandShake라 함.

클라이언트와 서버 간의 요청/응답을 반복하며 통신에 필요한 사전 작업을 하는게 마치 악수 같아 붙여졌다고 함

1. ClientHello 요청

클라이언트가 특정 주소에 접근하면, 해당하는 서버에 요청을 보냄 (Naver에 접근하면 네이버 서버에 요청을 보내게 됨)

이 요청에는 아래와 같은 정보들이 포함되어 있음.

클라이언트의 주요 정보를 서버에 전송하여, 해당 클라이언트를 식별하고, 어떤 암호화를 사용할 수 있는지 등의 정보를 서버가 인지하도록 함.

  • 난수 데이터
  • 암호화 프로토콜 정보 (프로토콜, 버전 등)
  • 클라이언트가 사용 가능한 암호화 기법
  • 세션 아이디
  • 기타 확장 정보

2. ServerHello 응답

서버가 ClientHello 요청을 받으면, 아래의 정보를 담아 클라이언트에게 일종의 화답을 보냄.

  • 난수 데이터 (ClientHello에서 보낸 데이터와 아무런 상관관계가 없는 별개의 데이터)
  • 서버가 사용할 암호화 기법
  • 인증서
    • CA
    • 도메인
    • 공개키

클라이언트가 사용 가능하다고 통보한 암호화 기법 중 서버에서 활용할 암호화 기법을 전달하여 동일한 암호화 기법으로 송수신할 수 있도록 선언함.

인증서 정보와 함께, 서버와의 암호화 통신을 위한 서버 공개키가 전달됨. 서버의 공개키로 데이터를 암호화하면 서버는 이를 받아 개인키로 복호화하여 요청을 분석할 수 있음.

 

3. 인증서 검토

서버가 전달한 인증서가, 실제 해당 서버의 인증서인지. 신뢰할 수 있는 CA에서 발급된 것인지, 실제 해당 CA에서 발급받았는지 등 인증서를 검토함.

 

4. Premaster Secret 송수신

ClientHello, ServerHello에서 송/수신한 난수 데이터를 조합하여 Premaster Secret을 생성함.

이를 ServerHello에서 전달받았던 공개키로 암호화함. 이 데이터는 서버가 가진 개인키로만 복호화 가능!!

즉, 이 데이터는 탈취된다 하더라도 그 내용이 보호됨.

서버는 수신된 데이터를 복호화하여 클라이언트와 동일한 Premaster Secret을 저장할 수 있음.

 

5. 통신 키 생성

보유한 Premaster Secret을 토대로 Master Secret, Session Key를 생성함.

이를 통해 클라이언트와 서버가 동일한 키를 보유하게 되므로 자신들끼리의 암호화 통신이 가능함.

 

6. 데이터 송수신

필요한 데이터는 저장된 Session Key를 통한 대칭키 암호화 방식으로 암/복호화하여 통신함.

 

7. 세션 종료

클라이언트와의 연결이 끊겼을 경우 사용했던 Session Key는 폐기함.

 

 

📚정리

SSL은 통신 패킷을 암호화하여 패킷 탈취, 정보 누출 등을 방지하기 위한 보안 프로토콜.

현재는 모두 TLS로 교체되었지만, SSL 자체가 고유명사가 되어 넓은 의미의 통신 보안 프로토콜을 명칭하는 의미로 쓰임.

'🌐Web' 카테고리의 다른 글

Let's Encrypt란?  (0) 2022.08.22
SSL 인증서  (0) 2022.08.22

+ Recent posts