TLS 악수 프로세스

2776 단어 기술

TLS 악수 프로세스


클라이언트와 서버가 통신 키를 상의하는 과정을 TLS 악수라고 하는데 악수 단계에서 통신 내용은 모두 명문이지만 최종적으로 상의하는 키는 클라이언트와 서버만 알고 다른 중간 노드는 알 수 없다.

RSA 악수 프로세스


RSA 악수 절차 설명:
  • "Client Hello", 클라이언트가 서버에 무작위 R1을 보냅니다
  • 서버는 클라이언트에게 무작위 R2와 공개 키를 포함하는 인증서를 답장합니다
  • "Client Key Exchange", 클라이언트는 공개 키로 랜덤 수(premaster secret)를 암호화하여 서버에 보냅니다
  • //  master secret、 master secret session key
    masterSecret = generateMasterSecret(R1, R2, premasterSecret);
    sessionKey = sessionKeyFrom(masterSecret);

    3단계,premaster secret은 클라이언트가 공개 키를 사용하여 암호화한 후에 발송되며, 개인 키를 가진 서버만 복호화할 수 있기 때문에 최종적으로 클라이언트와 서버만 일치하는master secret를 생성할 수 있다.그림의 마지막 세션 키는master serect에서 대칭 암호화 알고리즘으로 파생된 키입니다. 악수 단계가 끝난 후에 통신 내용은 키를 사용하여 암호화하고 서명하기 시작하여 키를 똑같이 아는 사람이 내용을 복호화하여 도청과 왜곡의 위험을 피할 수 있도록 합니다.

    보안 문제


    상술한 악수 과정은 개인 키가 누설되지 않고 인증서가 신뢰할 수 있는 전제에서 통신 내용이 도청되거나 왜곡되는 것을 피할 수 있다.그러나 다음과 같은 경우가 있을 수 있습니다.
    통신 과정에서 클라이언트와 서버 사이의 네트워크 노드는 서버와 관련된 모든 통신 내용(TCP 메시지)을 로컬에 복사본을 저장합니다.당시에는 서버의 개인 키를 몰라서 암호화된premastersecret을 풀 수 없어서 통신 내용을 복호화할 수 없었다.오래된 어느 날, 서버의 개인 키가 유출되어 암호화된premastersecret이 해독되고 통신 내용이 복호화되어 정보가 유출되었다.
    상기 RSA 악수 프로세스는 서버에서 장기간 사용하는 개인 키가 누출되면 세션 키가 누출되어 세션 키를 사용하여 암호화된 내용이 누출됩니다. 즉, 전방향 보안이 없습니다. 전방향 보안이 있는 악수 프로세스를 소개합니다. - THE_RSA.

    DHE_RSA 악수 프로세스


    DHE_RSA 악수 과정은 키 교환 알고리즘인 디피 헤르만 키 교환(Diffie – Hellman key exchange, 줄임말 D-H)에 의존한다. 이것은 쌍방이 상대방의 사전 정보가 전혀 없는 조건에서 안전하지 않은 채널을 통해 키를 만들 수 있는 보안 프로토콜이다.
    DH 알고리즘의 간략한 원리 발췌문:
  • person a has secret a, sends ga to person b
  • person b has secret b, sends gb to person a
  • person a computes (gb)a
  • person b computes (ga)b
  • Both person a and b end up with gab, which is their shared secret

  • DHE_RSA 악수 절차 설명:
  • "Client Hello", 클라이언트가 서버에 무작위 R1을 보냅니다
  • 서버는 클라이언트에게 무작위 R2와 공개 키를 포함하는 인증서를 답장합니다
  • "Server Key Exchange", 서비스 측에서 서버-DH 매개 변수(ga)를 선택하여 클라이언트에게 보내고 개인 키가 내용에 대한 서명을 포함하며 클라이언트는 2단계 인증서의 공개 키 검증 내용이 변경되지 않았습니다
  • "Client Key Exchange", 클라이언트가 클라이언트-DH 매개 변수(gb)를 선택하여 서버에 보냅니다

  • 4단계 후, 쌍방은 모두premastersecret(gab)을 계산하여mastersecret과session 키를 얻을 수 있다.이런 방식으로 서버 개인 키는 3단계에서만 서명하여 사용되며 누설되더라도 통신 쌍방의 비밀(a, b)은 누설되지 않는다.
    TLS 악수에 대해 말하자면 대부분의 인터넷 글은 RSA 방식을 말하지만, 현실에서 단순히 RSA 악수 과정을 사용하는 TLS는 거의 없다. 더 많은 것은 DHE_RSA 또는 ECDHE_RSA,ECDHE_RSA 원리와 DHE_RSA는 타원 커브(Elliptic Curve)를 사용하여 계산량을 줄이고 성능을 향상시키는 데 큰 차이가 없습니다.
    tips: 크롬 디버그 창 Security 탭을 통해 악수 과정의 구체적인 알고리즘을 볼 수 있습니다. 예를 들어 "a strong key exchange(ECDHE_RSA with P-256)"입니다.
    참고 자료: - Keyless SSL: The Nitty Gritty Technical Details
    블로그

    좋은 웹페이지 즐겨찾기