티스토리 뷰

SSL이란?

 

안녕하세요~

이번에는 http와 https를 공부하다 보니 SSL에 대해서도 궁금해지더라고요. 그래서 포스팅하면서 공부한 것을 정리해보고자 합니다.

 

목차:

1. SSL에 대해서

2. HTTPS와 SSL의 차이점

3. SSL 인증서란?

4. 공개키와 대칭키

5. SSL을 이용한 통신 방법

 

 

SSL에 대해서

SSL

넷스케이프에서 처음 만들어진 SSL(secure socket Layer) 프로토콜은 사실 현재 TLS(Transfer Layer Security)라고 불립니다. SSL은 과거에 사용했던 명칭이라고 하네요. 또한 컴퓨터 네트워크에 통신보안을 적용하기 위해 설계된 암호 프로토콜입니다. 이 프로토콜은 TCP/IP 네트워크를 사용하는 통신에 적용되며, 웹 서버와 브라우저 사이의 종단 간 보안과 데이터 무결성을 보증합니다. 흔히 다들 'SSL 암호화 통신'이라고 부르기도 합니다.

 

우리가 많이 접하는 브라우저의 url에서 https를 많이 보셨을 거예요. 이는 위에서 언급한 SSL이 적용된, 즉 암호화 통신을 하고 있다는 것입니다. 이렇게 우리가 모르는 사이에 많은 사이트에서 적용되고 있습니다. 또한 데이터를 암호화시켜, 인증된 사용자가 아닌 이상 전송되고 있는 데이터를 볼 수 없습니다.

 

 

 

HTTPS와 SSL의 차이점

HTTPS와 SSL을 같다고 혼동하시는 분들이 많은 거 같아요. 하지만 차이점을 알고 공부하시는 게 중요합니다. SSL응용계층전송계층 사이에 위치하고, HTTPS은 HTTP에 SSL을 적용한 보안된 HTTP 통신을 하는 프로토콜입니다. 또한 SSL은 HTTP 뿐만 아니라 FTP, SMTP에도 적용할 수 있습니다.

 

http와 https에 대해서 더 자세히 알고 싶다면 아래의 포스팅을 참고해주세요.

 

[네트워크 용어] HTTP, HTTPS

안녕하세요~ 이번에 포스팅할 내용은 HTTP입니다. 현재 네트워크에 대해 다시 공부하면서 정리하고자 합니다. 또한 프론트엔드, 백엔드 개발자들 모두 잘 알고 있어야 할 분야라고 생각합니다. HT

puzzle-puzzle.tistory.com

 

 

SSL 인증서란?

SSL 인증서

SSL 인증서는 디지털 인증서라고도 불리는데요. 브라우저 또는 사용자의 컴퓨터와 서버 또는 웹사이트 간에 암호화된 연결을 수립하는 데 사용되며 스니핑 당하더라도 해당 정보를 알 수 없게 됩니다.

 

클라이언트가 서버에 접속하면 서버는 SSL 인증서를 클라이언트에게 전달합니다. 그리고 클라이언트 측에서는 서버가 보낸 인증서가 신뢰할만한 것인지 검증한 다음에, 이후 통신을 진행하게 됩니다.

SSL 인증서 : 클라이언트와 서버 간의 통신을 제 3자가 보증해주는 전자화된 문서

 

여기서 제 3자가 누군지 궁금하실 텐데요. 제 3자는 CA 또는 Root certificate라고 합니다. 이들은 민간기업이지만 신뢰성이 보장된 기업들만 운영할 수 있습니다. SSL을 이용한 암호화 기능을 이용하려면, CA에서 인증서를 구입하셔야 가능합니다. 하지만 개인이 직접 CA 역할을 할 수도 있긴 합니다.

 

우리가 흔히 쓰는 브라우저는 이 CA의 정보들을 가지고 있다고 해요. 나중에 서버가 보낸 인증서를 확인할 때 이용합니다. 예를 들면 인증서를 해당 CA의 공개키로 복호화하여 사용합니다. 더 자세한 설명은 아래의 'SSL을 이용한 통신 방법'을 참고해주세요.

 

 

 

공개키와 대칭키

추후 업데이트하겠습니다.

 

 

SSL을 이용한 통신 방법

SSl에 대해서 간단하게 알아보았는데요. 이번에는 실제로 어떤 방식으로 적용되는지 알아보겠습니다. 먼저 컴퓨터의 통신 방법은 다음과 같습니다.

 

핸드 쉐이크, 세션, 세션 종료

 

여기서 핸드 쉐이크에 대해서 알아보도록 하겠습니다. https 통신에서 SSL 핸드쉐이크가 적용되기 전에 TCP 기반의 TCP 핸드 쉐이크가 먼저 수행된다는 점 알아두시면 되겠습니다. 그림으로 보여드릴 부분은 tcp 핸드쉐이크 이후의 SSL 핸드쉐이크 입니다.

 

 

 

 

client hello

1. 클라이언트가 접속하려는 서버에 랜덤한 데이터와 클라이언트의 브라우저에서 지원할 수 있는 암호화 방식 서버에 전송합니다.

 

 

 

server hello

2. 서버는 클라이언트가 보내준 지원 가능한 암호화 방식 중 하나를 정하여 클라이언트에 알려줍니다. 또한 서버는 랜덤한 데이터와 자신의 인증서를 보내줍니다.

 

 

 

client key exchange

3. 클라이언트는 전자 서명을 활용하여 서버가 보내준 인증서가 CA에 의해 발급된 것인지 확인합니다. 그리고 클라이언트와 서버가 생성한 랜덤 데이터를 가지고 pre master secret 암호키를 생성하고, 인증서에 있는 공개키를 사용하여 pre master secret을 암호화시킨 후 서버에 전송합니다.

 

 

 

client server finished

4. 서버는 클라이언트가 전송한 pre master secret을 서버가 가지고 있는 비공개 키로 복호화합니다. 그리고 pre master secret은 서버와 클라이언트 모두 master secret이 됩니다. master secret은 session key를 생성하고, 이 키를 이용하여 서버와 클라이언트는 데이트를 대칭키로 암호화하여 통신합니다.

 

5. 이렇게 공유된 session key로 데이터를 전송하고, 데이터 전송을 마무리하면 통신이 끝났다는 신호를 클라이언트와 서버에 전송합니다. 그리고 사용했던 session key를 폐기합니다.

 

 

더 세세한 부분들에 대해서는 공부하면서 추가하도록 하겠습니다. 도움이 많이 됐으면 좋겠어요. 감사합니다!

 

 

반응형