Kyber-768

ClassBinu·2024년 4월 9일
0

양자 컴퓨팅

목록 보기
8/17

PQC

Post-Quantum Cryptography, PQC

이 중에서 카이버는 PQC 암호화 표준 후보로 선정

TLS(전송 계층 보안)

Transport Layer Security 프로토콜
기존에는 RSA, ECC와 같은 공개키 암호화 방식을 사용
하지만 양자 컴퓨터에 의해 깨질 수 있다.

그래서 카이버와 같은 양자 내성 알고리즘이 필요함.

TLS 프로토콜에 카이버를 추가하면 양자 내성 키 교환 메커니즘이 구현됨.

TLS 프로토콜

먼저 TCP 핸드 쉐이크로 연결이 수립되면, TLS로 보안 연결 구성
1. 서버가 클라이언트에게 디지털 인증서 제공

  • 서버의 공개키, CA(발급 기관), 서버 신원 정보(도네인 등)이 포함
  1. 클라이언트와 서버가 통신에 사용할 암호화 알고리즘(암호 스위트) 협상
  • 클라이언트가 암호 스위트 목록을 서버에게 전송하면 서버가 선택해서 클라이언트에게 통보
  1. 세션 동안 사용할 임시 세션 키를 교환
  • 세션 키: 대칭키 암호화에 사용될 키
  • RSA: 클라이언트가 서버의 공개키를 사용해서 세션키 암호화하고 이를 서버에 전송, 서버는 복호화해서 세션키 획득
  • Diffie-Hellman 키 교환은 클라이언트, 서버가 각각 동일한 세션키를 독립적으로 생성
    (파라미터(공개키)를 생성하고 교환한 후 키는 각자 생성)
  • 무작위로 개인키를 선택 후, 공개 기본 파라미터와 개인키로 Curve25519 엘립틱 커브 위의 점을 계산해서 공개키를 생성
  • 각자의 공개키를 안전하지 않은 채널로 교환
  • 상대방의 공개키와 자신의 개인키로 세션키를 생성

RSA보다 diffi-hellman이 최근 트렌드임

TLS는 비대칭키가 아니라 대칭키 방식으로 통신한다?

그럼 보안이 약하지 않을까?
비대칭키는 연산 속도가 느리다.

그래서 최초 대칭키를 교환하는 건 보안이 높은 비대칭키 방식을 쓰고,
이걸로 대칭키(세션키)가 교환되면, 그 이후 통신은 대칭키로 해서 성능상의 이점을 가져오는 것

인증서 예시

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:de:50:35:56:d1:4c:bb:66:f0:a3:e2:1b:1b:c3:97
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3
        Validity
            Not Before: Mar 15 12:00:00 2020 GMT
            Not After : Jun 13 12:00:00 2020 GMT
        Subject: CN=example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public Key: (2048 bit)
                Modulus (2048 bit):
                    00:c3:ac:66:87:03:3f:fb:83:0b:.....(생략).....
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         3d:9f:....(생략)....:ce:38:4a:6d:83:03:04:8c:79:3e

X25519

두 통신 당사자가 각자의 공개 키와 개인 키 쌍을 생성,
상대방의 공개 키와 자신의 개인키로 공통의 비밀키를 독립적으로 계산할 수 있음.

  1. 키 쌍 생성: 랜덤한 개인키와 엘립틱 커브 상의 연산을 통해 이와 연관된 공개키 생성
  2. 공개 키를 교환
  3. 상대방의 공개 키와 자신의 개인 키로 공통의 세션 키를 생성(엘립틱 커브 상의 연산을 통해 가능)

엘렙틱 커브(타원곡선암호)

Kyber-768

X25519Kyber768 알고리즘은 타원 곡선 기반 X25519와 Kyber768 포스트 양자 키 교환 체계를 결합하여 HTTPS 통신 보안을 위한 강력하고 양자 저항적인 솔루션을 제공합니다.

기존 TLS에서 클라이언트에서 Kyber 알고리즘이 추가되서 양자 내성 강화

용어 정리

  • 공개키(public key): 비대칭 암호키(서로 교환)
  • 개인키(private key): 비대칭 암호키(교환 안 함)
  • 공유키(shared Key): 대칭 암호키

작동 순서

  1. 클라이언트와 서버가 독립적으로 X25519 및 Kyber 키 쌍 생성
    (X25519는 Diffie-Hellman 키교환 알고리즘임)

  2. 클라이언트가 X25519와 Kyber 공개키를 ClientHello 요청 시 서버로 전송함.

  3. 서버는 Kyber의 공개키로 Keber 공유 키와 캡슐화 생성.
    서버는 캡슐화된 Kyber 공유키와 자기가 별도로 생성한 X25591 공개키를 클라이언트에세 보냄(ServerHello 응답 시)

  4. 클라이언트는 ServerHello 응답에서 X25519 개인 키로 X25519 공유 비밀(공유 키) 도출
    그리고 Keyber 개인 키로 캡슐화된 Kyber 공유 키 캡슐 해제.
    동시에 서버는 자체 X25519 공개 키 계산
    (공유 비밀은 대칭키 계산 시 사용 됨)

공유 비밀(공유 키)은 Diffie-Hellman에서 상대방의 공개키와 개인키를 사용해서 계산 가능.
이 계산 결과로 나온 공유 비밀은 양측이 동일하게 가지데 되며,
세션키 생성에 사용됨.

이렇게 하면 클라이언트와 서버는 각각 X25519와 Kyber768의 공유키를 갖게 됨.

그러나 X25519Kyber768의 공유 키 크기는 기존 X25519보다 훨씬 크기 때문에 키 교환 프로세스의 효율성이 저하될 수 있습니다.

X25519Kyber768

X25519는 키 교환 프로토콜임.
당사자가 안전하게 비밀키를 공유할 수 있게 함.

Kyber768은 암호화 기술임.

TLS 하이브리드 디자인에서 사용되는 Kyber768Draft00 및 X25519 조합에 관한 설명에서, Kyber 키는 각 세션마다 새로 생성되며 일회용으로 사용됩니다. 이는 각 키 교환 세션의 보안을 강화하기 위해 중요하며, 다른 세션들과 키를 공유하지 않습니다. 이러한 방식은 각 세션의 독립성을 보장하며, 한 세션의 키가 손상되어도 다른 세션들은 영향을 받지 않습니다.

TLS 설정에서 X25519와 Kyber768Draft00을 결합할 때, 클라이언트의 공유는 X25519 일시적(ephemeral) 키와 Kyber 공개 키의 조합으로, 서버의 공유는 X25519 일시적 키와 Kyber 암호문의 조합으로 구성됩니다. 이렇게 생성된 공유 비밀키는 세션의 암호화에 사용되며, 두 키에서 파생된 비밀키는 양자 컴퓨터 공격에 대한 강력한 보안을 제공합니다.

이와 같은 일회성 키 생성 방식은 향후 키가 손상되더라도 과거의 통신 내용이 보호받는 포워드 시크릿(forward secrecy) 원칙을 따릅니다. 이 방식은 각 통신 세션의 보안을 강화하는 데 중요한 역할을 합니다.

0개의 댓글

관련 채용 정보