SSL (Secure Sockets Layer)은 HTTP 프로토콜 위에 구축된 보안 계층이다. (웹 브라우징에 사용.)
Secure Socket Layer로 시스템에서 ID를 확인하고 이후에 Secure Sockets Layer/전송 계층 보안(SSL/TLS) 프로토콜을 사용하여 다른 시스템에 대한 암호화된 네트워크 연결을 설정할 수 있도록 하는 디지털 객체이다.
인증서는 퍼블릭 키 인프라(PKI)로 알려진 암호화 시스템 내에서 사용된다. 양쪽 모두가 인증 기관으로 알려진 타사를 신뢰하는 경우, PKI는 한쪽에서 인증서를 사용하여 다른 쪽의 자격 증명을 설정할 수 있는 방법을 제공한다.
따라서 SSL/TLS 인증서는 네트워크 통신을 보호하고 인터넷을 통한 웹 사이트 및 프라이빗 네트워크의 리소스에 대한 아이덴티티를 설정하는 역할을 한다.
예시.
싱글 인증서: 위의 각각의 dns를 인증한다.
이 두개만 인증서가 작동한다. 나머지 https://m.naver.com (모바일용 사이트)등은 따로 구입해서 연결해주어야 한다.
멀티 인증서:
SSL 통신에서 공개 키 방식으로만 사용하면, 암호화 → 복호화, 복호화 → 암호화 의 과정에서 트래픽이 많이 발생하여 하이브리드 방식을 사용한다.
SSL은 암호화된 데이터를 전송하기 위해서 공기캐와 대칭키를 혼합해서 사용한다. 즉, 클라이언트와 서버가 주고 받는 실제 정보는 대칭키 방식으로 암호화하고, 대칭키 방식으로 혼홥해서 사용한다.
실제 데이터는 대칭키 방식으로 암호화를 하고, 암호화된 실제 데이터를 복호화 할 때 사용하는 대칭키는 공개 키 방식으로 암호화 해서 클라이언트와 서버가 주고 받는다.
우선, 컴퓨터와 컴퓨터가 네트워크를 이용해서 통신을 할 때에는 내부적으로 3가지 단계가 있다.
이 과정에서 SSL 이 어떻게 데이터를 암호화해서 전달하는지 살펴보자.
handshake
클라이언트(브라우저) ↔ 서버(Big-IP)
1) client hello:
2) server hello:
3) 클라이언트는 서버의 인증서가 CA에 의해서 발급된 것인지를 확인하기 위해서 클라이언트에 내장된 CA 리스트를 확인한다. CA리스트에 존재하지 않으면 사용자에게 경고 메세지를 출력한다.
4) 클라이언트 측과 서버 측에서 왜 랜덤 데이터를 생성하였는가?
서버의 랜덤 데이터와 클라이언트가 생성한 랜덤 데이터를 조합해서 pre master secret 이라는 키를 생성한다. 이 키는 뒤에서 살펴볼 세션 단계에서 데이터를 주고 받을 때 암호화 하기 위해서 사용될 것이다. 즉, 실제 데이터를 암호화 하기 위한 키로 사용하는 것이다. (대칭 키 값이다.)
5) pre master secret 값을 어떻게 서버에 전달하는가?
클라이언트는 pre master secret 값을 서버로 부터 받은 인증서에 있는 서버의 공개 키 정보를 이용하여 암호화 한 후에 서버로 전송한다.
서버의 공개 키로 pre master secret 값을 암호화 해서 서버로 전송하면, 서버는 자신의 프라이빗 키로 안전하게 복호화 할 수 있다. 이렇게 서버와 클라이언트 모두 pre master secret 키를 가지게 된다.
6) pre master secret (=symetric key) 값을 master secret값으로 만들기.
서버와 클라이언트는 모두 일련의 과정을 거쳐서 pre master secret 값을 master secret 값으로 만든다. 이 master secret 값은 세션 키를 생성하는데, 세션 키 값을 이용해서 서버와 클라이언트는 데이터를 대칭키 방식으로 암호화 한 후에 주고 받는다.
7) pre master secret 값을 master secret 값으로 만드는 과정은 무엇인가?
전송(= 세션)
1) 데이터를 전송하기 전에 세션 키 값을 이용하여 대칭키 방식으로 암호화 하여 전송한다.
세션 종료.
간단하게 이해하자면, 원래의 TCP 3way-handshake 로 TCP가 연결된 이후에 SSL/TLS handshake가 이루어져 한번의 인증 과정을 거친다는 것이다. 세션의 종료는 모든 데이터가 전송 된 후에 세션 종료할 때 SSL/TLS 핸드쉐이크의 세션도 종료된다.
그러나 세션 티켓이라는 기능을 사용하여 세션 상태를 보존하고 세션을 재사용할 수 있도록 할 수도 있다. 이는 계속 새로운 협사을 맺지 않게 하여 트래픽을 낮게 유지할 수 있다.
IPsec는 주로 가상 사설망(VPN) 및 원격 액세스 연결에서 사용되며, 기업 네트워크, 인터넷 서비스 제공업체 및 다른 네트워크 환경에서 네트워크 통신의 보안을 강화하기 위해 활용된다.
모두 네트워크 통신의 보안을 강화하는 데 사용되는 보안 프로토콜이라는 것은 같은 점이다. 차이점은 아래와 같다.
Certifocate Manager 등을 사용하여 쉽게 관리할 수 있다.
.
.
참고자료: