개발

[보안] SSL(Secure Sockets Layer) 이란?

김나나_ 2024. 1. 19. 14:27

📌 인증서를 사용하는 이유는?

  • 우리가 특정 서버에 요청을 주고 받을 때 수 많은 라우터와 스위치를 거치게 되는데, 그 중간에서 누군가가 우리의 패킷을 훔쳐 (Sniffing) 볼 수 있다. 패킷을 훔쳐 본다는 것은 비밀번호와 같이 민감한 정보를 제 3자가 열람 할 수 있다는 뜻이다.
    만약 네트워크 데이터가 암호화 된다면, 중간에 공격자가 패킷을 열람하더라도 데이터가 유출되는 것을 막을 수 있다.
  • 오늘날 가장 널리 쓰이고 있는 암호화 방식이 SSL/TLS1 라는 것인데, 이 방식은 '인증서'라고 하는 일종의 서명을 사용한다.

* TLS (Transport Layer Security)
: 인터넷에서 정보를 암호화 해서 송수신하는 프로토콜

넷스케이프 커뮤니케이션스사가 개발한 SSL 에 기반한 기술로, 국제 인터넷 표준화 기구에서 표준으로 인증받은 프로토콜이다. 표준에 명시된 정식 명칭은 TLS 이지만 아직도 SSL 이라는 용어가 많이 사용되고 있다. 

흔히 SSL 이라 부르는 것들은 대부분 TLS 이다. TLS 를 사용해 암호화된 연결을 하는 HTTP를 HTTPS(Secure) 라고 하며, 웹사이트 주소는 HTTPS로 시작한다. 기본 포트 또한 80번이 아닌 443번을 쓴다.

 

TLS와 HTTPS는 유사하지만 다른 개념이다.

- TLS: 다양한 종류의 보안 통신을 하기 위한 프로토콜 (TLS 는 HTTP 뿐만 아니라, FTP, SMTP와 같은 프로토콜까지 포함한다)

- HTTPS: TLS 위해 HTTP 프로토콜을 얹어 보안된 HTTP 통신을 하는 프로토콜

 

  • 인증서 = '당신이 신뢰할 수 있는 사람이냐' 라는 것을 확인하기 위한 용도이며 이것이 패킷 데이터를 암호화 하기 위한 첫 단계라고 생각하면 된다.
  • 인증서가 신뢰할 수 있다는 검증 작업을 거치고 나서야 비로소 데이터 암호화 작업이 수행된다. 그 과정이 SSL 보안 통신으로 불린다.

 

📌 SSL 이란?

- SSL(Secure Socket Layer) 프로토콜은 웹서버(서버)와 브라우저(클라이언트) 사이의 보안을 위해 만들었다.

- SSL은 Certificate Authority(CA)라 불리는 서드 파티로부터 서버와 클라이언트의 인증을 하는데 사용된다.

 

* SSL 인증서의 역할
1. 클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장한다.

2. SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.

 

*CA (Certivicate autority)

인증서의 역할은 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지를 보장하는 역할을 한다. 이 역할을 하는 민간기업들이 있는데 이런 기업들을 CA 혹은 Root Certificate 라고 부른다. CA는 아무 기업이나 할 수 있는 것이 아니고 신뢰성이 엄격하게 공인된 기업들만 참여할 수 있다.

 

* SSL 인증서의 내용

1. 서비스의 정보(인증서를 발급한 CA, 서비스의 도메인 등)

2. 서버 측 공개키(공개키의 내용, 공개키의 암호화 방법)

 

- 서비스의 도메인, 공개키와 같은 정보는 서비스가 CA로 부터 인증서를 구입할 때 제출해야 한다.

- CA는 자신의 CA 공개키를 이용해서 서버가 제출한 인증서를 암호화 한다. CA의 비공개키는 절대로 유출되어서는 안된다.

- 브라우저는 내부적으로 CA의 리스트를 미리 파악하고 있다.

=> 브라우저가 미리 파악하고 있는 CA의 리스트에 포함되어야만 공인된 CA가 될 수 있다.

 

* SSL 인증서가 서비스를 보증하는 방법 (CA와 브라우저가 특정 서버를 인증하는 과정)

- 엡 브라우저가 서버를 접속할 때 서버는 제일 먼저 인증서를 제공한다.

- 브라우저는 이 인증서를 발급한 CA가 자신이 내장한 CA의 리스트에 있는지 확인한다.
확인 결과, 서버를 통해서 다운받은 인증서가 내장된 CA리스트에 포함되어 있다면 CA의 공개키를 이용해서 인증서를 복호화한다.

- CA의 공개키를 이용해서 인증서를 복호화 한다 = 이 인증서가 CA의 비공개키에 의해서 암호화 되었다.

=> 서버가 제공한 인증서가 CA에 의해서 발급된 것! = 해당 서비스는 신뢰할 수 있다

 

📌 SSL의 동작방법

- SSL은 암호화된 데이터를 전송하기 위해서 공개키와 대칭키를 혼합해서 사용한다.

- 클라이언트와 서버가 주고받는 실제 정보는 대칭키 방식으로 암호화

대칭키 방식으로 암호화된 실제 정보를 복호화 할 때 사용할 대칭키는 공개키 방식으로 암호화 해서 클라이언트와 서버가 주고 받게 된다.

실제 데이터: 대칭키

대칭키의 키: 공개키

 

 

 

 

 

참고: https://m.blog.naver.com/alice_k106/221468341565

 

154. [Security] SSL과 인증서 구조 이해하기 : CA (Certificate Authority) 를 중심으로

이번 포스트에서는 인증서의 구조와 동작 원리에 대해 알아보고, 이것이 실제 SSL 기반의 보안 연결에서...

blog.naver.com

https://12bme.tistory.com/80

 

[정보보안] SSL(Secure Socket Layer) 이란

현재 근무 중인 업체에서 SSL 인증서 적용 작업이 필요하다고 합니다. SSL 인증서관련 필요한 것이 무엇인지에 대한 요청이 있었습니다. 간단하게 SSL에 대해 정리해보겠습니다. 1. SSL 개념 잡기 SSL

12bme.tistory.com

https://captcha.tistory.com/51