SSL 인증서

CTF수상까지...!!·2023년 11월 15일
0

SSL 인증서란?

SSL (Secure Sockets Layer)은 HTTP 프로토콜 위에 구축된 보안 계층이다. (웹 브라우징에 사용.)

Secure Socket Layer로 시스템에서 ID를 확인하고 이후에 Secure Sockets Layer/전송 계층 보안(SSL/TLS) 프로토콜을 사용하여 다른 시스템에 대한 암호화된 네트워크 연결을 설정할 수 있도록 하는 디지털 객체이다.

인증서는 퍼블릭 키 인프라(PKI)로 알려진 암호화 시스템 내에서 사용된다. 양쪽 모두가 인증 기관으로 알려진 타사를 신뢰하는 경우, PKI는 한쪽에서 인증서를 사용하여 다른 쪽의 자격 증명을 설정할 수 있는 방법을 제공한다.

따라서 SSL/TLS 인증서는 네트워크 통신을 보호하고 인터넷을 통한 웹 사이트 및 프라이빗 네트워크의 리소스에 대한 아이덴티티를 설정하는 역할을 한다.

SSL/TLS 인증서의 장점

  • 개인 데이터 보호: 브라우저는 웹사이트의 SSL/TLS 인증서를 확인하여 웹 사이트 서버와의 보안 연결을 시작하고 유지한다. 따라서 SSL/TLS 기술은 브라우저와 웹 사이트 간의 모든 통신을 암호화 하는데 도움이 된다.
  • 고객 신뢰 강화: SSL/TLS로 보호되는 웹 사이트는 그나마 안전하다는 인식이 있음.
  • 규제 준수 지원: 금융이나 카드사의 경우 PCI DSS를 준수해야 하는 등 기밀성에 대한 업계 규정을 준수해야 하기 떄문이다.
  • SEO 개선: SSL/TLS 보호가 되어 있는 웹 사이트 서버가 검색 엔진에서 우선 순위로 적용된다.

SSL/TLS 인증서 주요 기술

  • 암호화
  • 플릭 키: 웹 서버가 SSL/TLS 인증서를 통해 브라우저에 제공하는 암호화 키. 브라우저는 웹 서버로 보내기 전에 이 키를 사용하여 정보를 암호화.
  • 프라이빗 키: 프라이빗 키는 웹 서버에만 있다. 프라이빗 키로 암호화된 파일은 퍼블릭 키로만 복호화할 수 있으며 그 반대의 경우도 마찬가지입니다. 프라이빗 키로 암호화된 파일을 퍼블릭 키로만 복호화할 수 있다면, 해당 파일의 암호를 복호화할 수 있다는 것은 의도한 수신자와 발신자라는 것을 신뢰할 수 있음을 의미한다.
  • 인증: 서버는 SSL/TLS 인증서를 통해 퍼블릭 키를 브라우저로 전송 → 브라우저는 신뢰할 수 있는 서드 파티의 인증서를 확인. 따라서 웹 서버의 신원을 신뢰할 수 있는지 확인한다.
  • 디지털 서명: 디지털 서명은 모든 SSL/TLS 인증서에 대해 고유한 번호이다. 수신자는 새 디지털 서명을 생성하고 원래 서명과 비교함으로써, 외부 당사자가 네트워크를 통해 전송되는 인증서를 조작하지 않았는지 확인하는 것이다.

SSL/TLS 사용성

  • http → https 로 보안되어 있는 웹 사이트.
    • 보안이 필요한 사이트(로그인 등의 기능이 있으면 필요하다.)
    • user 정보가 들어가는 곳.
  • 홈페이지 → 서버로 데이터 데이터 이동 시 패킷을 가로채기가 될 가능성이 있음. 이에 따라서 SSL/TLS 인증서를 사용하여 데이터를 암호화 하여 전송하는 것이다.

인증서 종류

예시.

싱글 인증서: 위의 각각의 dns를 인증한다.

이 두개만 인증서가 작동한다. 나머지 https://m.naver.com (모바일용 사이트)등은 따로 구입해서 연결해주어야 한다.

멀티 인증서:

SSL 동작 방법

SSL 통신에서 공개 키 방식으로만 사용하면, 암호화 → 복호화, 복호화 → 암호화 의 과정에서 트래픽이 많이 발생하여 하이브리드 방식을 사용한다.

SSL은 암호화된 데이터를 전송하기 위해서 공기캐와 대칭키를 혼합해서 사용한다. 즉, 클라이언트와 서버가 주고 받는 실제 정보는 대칭키 방식으로 암호화하고, 대칭키 방식으로 혼홥해서 사용한다.

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

  • 실제 데이터 : 대칭 키 방식으로 암호화 및 복호화
  • 대칭키의 키 : 대칭 키의 키를 공개키 방식으로 설정.

우선, 컴퓨터와 컴퓨터가 네트워크를 이용해서 통신을 할 때에는 내부적으로 3가지 단계가 있다.

  • handshake → 전송 ⇒→ 세션종료.

이 과정에서 SSL 이 어떻게 데이터를 암호화해서 전달하는지 살펴보자.

  1. handshake

    클라이언트(브라우저) ↔ 서버(Big-IP)

    1) client hello:

    • 클라이언트 측에서 생성한 랜덤 데이터
    • 클라이언트가 지원하는 암호화 방식이 다를 수 있으므로 상호 간에 어떤 암호화 방식을 사용할 것인지에 대한 협상을 한다.(클라이언트 측에서 나 이런 암호화 가능해! 라고 보내는 것.)
    • 세션 아이디: 이미 SSK 핸드 쉐이킹을 했다면 기조의 세션을 재활용 한다.

    2) server hello:

    • 서버 측에서 생성한 랜덤 데이터 생성.
    • 클라이언트 측에서 보낸 암호화 방식 중에서 서버 측에서 선택. 선택한 암호화 방식에 따라서 정보를 교환하게 된다. (협상과정.)
    • 인증서를 클라이언트에게 전송한다.

    3) 클라이언트는 서버의 인증서가 CA에 의해서 발급된 것인지를 확인하기 위해서 클라이언트에 내장된 CA 리스트를 확인한다. CA리스트에 존재하지 않으면 사용자에게 경고 메세지를 출력한다.

    • 인증서가 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. 전송(= 세션)

      1) 데이터를 전송하기 전에 세션 키 값을 이용하여 대칭키 방식으로 암호화 하여 전송한다.

    1. 세션 종료.

      간단하게 이해하자면, 원래의 TCP 3way-handshake 로 TCP가 연결된 이후에 SSL/TLS handshake가 이루어져 한번의 인증 과정을 거친다는 것이다. 세션의 종료는 모든 데이터가 전송 된 후에 세션 종료할 때 SSL/TLS 핸드쉐이크의 세션도 종료된다.

      • 사용자 또는 응용 프로그램이 연결을 종료하려고 명시적으로 요청합니다.
      • 세션 타임아웃이 발생하여 서버 또는 클라이언트에서 세션을 종료합니다. 이는 일정 시간 동안 활동이 없을 때 발생합니다.
      • 세션 재협상이 필요한 경우에도 세션 종료와 재협상이 발생할 수 있습니다.

      그러나 세션 티켓이라는 기능을 사용하여 세션 상태를 보존하고 세션을 재사용할 수 있도록 할 수도 있다. 이는 계속 새로운 협사을 맺지 않게 하여 트래픽을 낮게 유지할 수 있다.

IPsec 과의 차이점.

IPsec는 주로 가상 사설망(VPN) 및 원격 액세스 연결에서 사용되며, 기업 네트워크, 인터넷 서비스 제공업체 및 다른 네트워크 환경에서 네트워크 통신의 보안을 강화하기 위해 활용된다.

모두 네트워크 통신의 보안을 강화하는 데 사용되는 보안 프로토콜이라는 것은 같은 점이다. 차이점은 아래와 같다.

  1. 작동 방식:
    • SSL: SSL은 주로 투명한 암호화를 제공합니다. 클라이언트와 서버 간의 개별 연결마다 SSL 핸드셰이크가 수행되며, 데이터가 암호화되고 복호화됩니다.
    • IPsec: IPsec은 네트워크 인터페이스 수준에서 작동하며, 모든 트래픽을 암호화 및 인증합니다. 모든 통신이 IPsec 규격에 따라 암호화됩니다.
  2. 사용 사례:
    • SSL: SSL은 주로 웹 브라우징, 이메일 보안 (SMTP, POP3, IMAP), VPN 클라이언트 및 웹 서비스에서 사용됩니다.
    • IPsec: IPsec는 네트워크에서 보안이 필요한 모든 종류의 통신에 사용될 수 있습니다. VPN 네트워크, 원격 접속, 브랜치 간 통신 및 데이터 센터 간 통신과 같은 다양한 사용 사례가 있습니다.
  3. 프로토콜 스택 위치:
    • SSL: SSL/TLS는 전송 계층 (Transport Layer)에서 작동합니다. 주로 TCP와 함께 사용됩니다.
    • IPsec: IPsec는 네트워크 계층 (Network Layer)에서 작동합니다. 주로 IP 프로토콜과 함께 사용됩니다.

인증서 관리.

Certifocate Manager 등을 사용하여 쉽게 관리할 수 있다.
.
.

참고자료:

SSL이란? SSL인증서 알아보기 - http://와 https://의 차이

02. HTTPS (SSL) 인증서 실제로 살펴보기

SSL 인증서란 무엇인가요? - SSL/TLS 인증서 설명 - AWS

profile
보안 공부...내 공부...

0개의 댓글