Mark930.k
Nightcrawler
Mark930.k
전체 방문자
오늘
어제
  • 📚 WWW (102)
    • 🖥하드웨어 (1)
    • ⚡네트워크 (38)
      • Amazon AWS (5)
      • OSI 7 Layer (1)
      • 네트워크 기초 (2)
      • Linux (2)
    • 💻모의해킹 (9)
      • Android (1)
      • Microsoft (7)
      • Linux (0)
      • 침해대응 (1)
    • 🐧리눅스 (0)
    • 🏋️‍♂️운동 (7)
      • 헬스 루틴 (6)
    • 🏎️자동차 (1)
      • BMW (1)
    • 기타 (13)
      • NetScaler 업무 페이지 (8)
    • 📖독서 (1)
      • 경제 (1)

블로그 메뉴

    공지사항

    인기 글

    태그

    • Python test
    • Security
    • 네트워크
    • 정보보안
    • zeroday
    • 웹위변조
    • python
    • CVE-2022-30190
    • 해킹
    • 위변조
    • 보안

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Mark930.k

    Nightcrawler

    SSL Connection (인증과정)
    카테고리 없음

    SSL Connection (인증과정)

    2020. 5. 12. 16:40

    SSL Connection (인증과정) 너무 간단히 잘되어있는 설명

     

    SSL이 수행되는 단계는 총 3가지로 분류된다.

    ○ SSL Server Authentication

    사용자의 웹브라우저가 상대방의 웹서버를 인증하는 단계이다.

    SSL을 지원하는 웹브라우저는 표준 공용키 암호화 기법을 사용하여 서버의 인증서와 공용 ID를 실제로 브라우져가 신뢰하는 인증기관(Trusted CA)으로부터 발급받았는지 여부를 인증하는 기능을 내장하고 있다.

    ○ SSL Client Authentication

    웹서버가 자신에게 요청한 클라이언트를 인증하는 단계이다.

    서버 인증 시에 사용했던 동일한 기법으로 인증하는데 서버에 내장된 SSL 지원 소프트웨어나 서버 앞에 배치된 SSL 하드웨어는 클라이언트의 인증서와 공용 ID 를 실제로 서버가 신뢰하는 인증기관(Trusted CA)으로부터 발급 받았는지 여부를 인증하는 기능을 내장하고 있다.

    ○ Encrypt Connection

    서로에 대한 인증단계 이후 정상적으로 종결되면 클라이언트와 서버사이에 교환되는 모든 데이터는 사적인 내용을 보호하기 위한 암호화를 요구받는다. 또한 SSL커넥션을 통해 암호화된 데이터 역시 전송 중 변경을 방지(Message Integrity)하기 위해 Hash 알고리즘이라고 불리는 기술에 의해 보호된다.

     

    위의 3가지 단계를 기반으로 실제로 구현되는 순서는 다음과 같으며, 다음 순서를 진행하기에 앞서 SSL 또한 TCP 프로토콜에 기반을 두고 있으므로 반드시 TCP 3 Handshake는 이루어져 있어만 한다.




     

    빨간 네모 = (2번~11번)

    1. TCP 3 Way Handshake

    2. 클라이언트는 서버에게 지원 가능한(암호, 키교환, 서명, 압축)방식을 서버에게 알려준다.(Client Hello)

    3. 서버는 클라이언트에게 지원 가능한(암호, 키교환, 서명, 압축)방식을 응답해 준다. (Server Hello)

    4. 서버는 공개키(RSA 암호용)가 포함된 서버 인증서를 클라이언트에게 발송한다.

    5. 만약 서버가 클라이언트 인증서를 요구할 때 이에 대한 요청도 함께 발송한다.

    6. Server Hello 완료

    7. 서버가 클라이언트 인증서를 요구할 경우 인증서를 서버로 전송한다.

    8. 클라이언트는 전송받은 서버 인증서에 대해 브라우저에 내장된 신뢰 기관으로부터 발급 여부를 확인한 후 암호화키로 사용될 세션 키(대칭키)를 랜덤으로 생성하여 공개키로 암호화해 서버로 전송한다.

    9. 서버는 자신의 개인 키로 클라이언트에게 전송받은 세션키(대칭키)를 복호화한다.

    10. 서버는 협상 과정에서 전송된 모든 메시지에 대하여(암호, 키교환, 서명, 압축)방식을 다음부터 적용할 것을 알리는 종결 메시지를 발송한 후 데이터 전송단계로 이동한다.

    - 여기까지 모두 정상적으로 완료된다면, 클라이언트와 서버 모두 동일한 세션키(대칭키)를 공유하게 되는 것이다.

    11. 클라이언트는 협상 과정에서 전송된 모든 메시지에 대하여(암호, 키교환, 서명, 압축) 방식을 다음부터 적용할 것을 알리는 종결 메시지를 발송한 후 데이터 전송단계로 이동한다.

    12. 앞 단계에서 서로 공유된 세션키로 암호화된 전송 과정이 시작된다.

     

     

    4번에 대한 부연설명

    서버는 클라이언트가 자신이 적합한 서버인지를 인증할 수 있도록 공신력 있는 기관으로부터 발급받은 자신의 공인 인증서를 발송한다. 이때 일반적으로 서버 인증서와 함께 서버의 공용키가 클라이언트측에 전달된다. 만약 클라이언트에 대한 인증을 필요로 하는 트랜잭션이라면 이에 대한 요청도 함께 발송한다.

    8번에 대한 부연설명

    서버의 인증서에 대해 클라이언트는 브라우저내에 저장되어 있는 신뢰기관으로부터의 발급여부를 확인하고 암호화에 사용될 Session Key를 생성해 서버 공용키(공개키)로 Session Key를 암호화 하여 서버에게 전달한다. 또한 암호화된 Session Key와 함께 브라우저가 지원할 수 있는 Chiper Suite, 즉 암호화 기법 리스트와 함께 서버측에서 클라이언트의 인증서를 요청한 경우 클라이언트의 인증서를 발송한다.

     

    10번에 대한 부연설명

    서버는 Chiper Suite를 받아들이고(또는 거부하고) Finished message를 클라이언트로 전송한 후 데이터 전송단계로 이동

    서버는 클라이언트로부터 클라이언트 브라우저가 지원하는 암호화 기법 리스트를 받고 클라이언트에게 종결 메시지를 보내고 데이터 전송단계로 돌입한다. 여기까지 정상적으로 완료가 되면 클라이언트가 생성한 Session Key를 클라이언트와 서버가 모두 공유하게 된다.

    출처 : https://soul0.tistory.com/416

    저작자표시 변경금지 (새창열림)
      Mark930.k
      Mark930.k
      Citrix Netscaler / Citrix VDI / KaliLinux / AWS / VMware / Window Svr

      티스토리툴바