AWS KMS와 함께 하이브리드 포스트 양자 TLS 사용 - AWS Key Management Service

AWS KMS와 함께 하이브리드 포스트 양자 TLS 사용

AWS Key Management Service(AWS KMS)에서는 전송 계층 보안(TLS) 네트워크 암호화 프로토콜에 대한 하이브리드 포스트 양자 키 교환 옵션을 지원합니다. AWS KMS API 엔드포인트에 연결할 때 이 TLS 옵션을 사용할 수 있습니다. 포스트 양자 알고리즘이 표준화되기 전에 이 기능을 제공하므로 이러한 키 교환 프로토콜이 AWS KMS 호출에 미치는 영향을 테스트할 수 있습니다. 선택 사항인 이 하이브리드 포스트 양자 키 교환 기능은 적어도 우리가 현재 사용하는 TLS 암호화만큼 안전하며 보안 이점을 추가로 제공할 수도 있습니다. 그러나 현재 사용 중인 클래식 키 교환 프로토콜과 달리 지연 시간 및 처리량에 영향을 미칩니다.

사용자가 AWS Key Management Service(AWS KMS)로 전송하는 데이터는 전송 중에 TLS(전송 계층 보안) 연결에서 제공하는 암호화로 보호됩니다. AWS KMS가 TLS 세션에 대해 지원하는 클래식 암호 제품군으로 인해 현재 기술로는 키 교환 메커니즘에 대한 무차별 암호 대입 공격이 불가능합니다. 그러나 앞으로 대규모 양자 컴퓨팅이 실용화된다면 TLS 키 교환 메커니즘에 사용되는 클래식 암호 제품군은 이러한 공격에 취약해질 것입니다. TLS 연결을 통해 전달되는 데이터의 장기 기밀성에 의존하는 애플리케이션을 개발 중인 경우 대규모 양자 컴퓨터가 실용화되기 전에 포스트 양자 암호로 마이그레이션할 계획을 고려해야 합니다. 이러한 미래를 준비하기 위해 노력하고 있는 AWS는 고객님도 이에 대비하시기를 바랍니다.

미래에 있을 수 있는 공격으로부터 오늘날 암호화된 데이터를 보호하기 위해 AWS는 암호화 커뮤니티와 함께 양자 내성 또는 포스트 양자 알고리즘 개발에 참여하고 있습니다. AWS에서 AWS KMS 엔드포인트에 하이브리드 포스트 양자 키 교환 암호 제품군을 구현했습니다. 클래식 및 포스트 양자 요소를 결합한 이 하이브리드 암호 제품군을 통해 TLS 연결은 적어도 클래식 암호 제품군과 동등한 수준으로 강력해집니다.

이러한 하이브리드 암호 제품군은 대부분의 AWS 리전에서 프로덕션 워크로드에 사용할 수 있습니다. 그러나 하이브리드 암호 제품군의 성능 특성 및 대역폭 요구 사항은 클래식 키 교환 메커니즘의해당 요구 사항과 다르기 때문에 여러 조건에서 AWS KMS API 호출에 대해 이 제품군을 테스트하는 것이 좋습니다.

피드백

오픈 소스 리포지토리에 대한 여러분의 피드백과 참여를 언제나 환영합니다. 특히 인프라가 이 새로운 TLS 트래픽 변형과 어떻게 상호 작용하는지에 관한 여러분의 의견을 듣고 싶습니다.

  • 이 주제에 대한 피드백을 제공하려면 이 페이지의 오른쪽 상단 모서리에 있는 피드백(Feedback) 링크를 사용하세요. GitHub의 aws-kms-developer-docs 리포지토리에서 문제 또는 pull 요청을 생성할 수도 있습니다.

  • AWS에서 GitHub의 s2n-tls 리포지토리에 이러한 하이브리드 암호 제품군을 오픈 소스로 개발하고 있습니다. 암호 제품군의 사용성에 대한 피드백을 제공하거나 새로운 테스트 조건 또는 결과를 공유하려면 s2n-tls 리포지토리에서 문제를 생성하세요.

  • aws-kms-pq-tls-example GitHub 리포지토리에서 AWS KMS와 함께 하이브리드 포스트 양자 TLS를 사용하기 위한 코드 샘플을 작성 중입니다. 하이브리드 암호 제품군을 사용하도록 HTTP 클라이언트 또는 AWS KMS 클라이언트를 구성하는 방법에 대해 질문하거나 아이디어를 공유하려면 aws-kms-pq-tls-example 리포지토리에서 문제를 생성하세요.

지원되는 AWS 리전

AWS KMS에 대한 포스트 퀀텀 TLS는 AWS GovCloud(미국 동부), AWS GovCloud(미국 서부), 중국(베이징), 중국(닝샤)을 제외하고 AWS KMS가 지원하는 모든 AWS 리전에서 사용할 수 있습니다.

각 AWS 리전에 대한 AWS KMS 엔드포인트 목록은 Amazon Web Services 일반 참조AWS Key Management Service 엔드포인트 및 할당량 을 참조하세요. FIPS 엔드포인트에 대한 자세한 내용은 Amazon Web Services 일반 참조FIPS 엔드포인트를 참조하세요.

TLS의 하이브리드 포스트 양자 키 교환 소개

AWS KMS는 하이브리드 포스트 양자 키 교환 암호 제품군을 지원합니다. AWS SDK for Java 2.x 및 AWS 공통 런타임(CRT)을 사용하여 Linux 시스템에서 이러한 암호 제품군을 사용하도록 HTTP 클라이언트를 구성할 수 있습니다. 이렇게 하면 HTTP 클라이언트를 사용하여 AWS KMS 엔드포인트에 연결할 때마다 하이브리드 암호 제품군이 사용됩니다.

이 HTTP 클라이언트는 TLS 프로토콜의 오픈 소스 구현인 s2n-tls를 사용합니다. s2n-tls에는 pq-crypto 모듈이 포함되어 있고, 이 모듈은 전송 중 암호화를 위한 하이브리드 포스트 양자 알고리즘 구현을 포함합니다.

s2n-tls의 하이브리드 암호 제품군은 직접 데이터 암호화가 아닌 키 교환을 위해서만 구현됩니다. 키 교환 중 클라이언트와 서버는 유선상의 데이터를 암호화하고 암호화 해독하는 데 사용할 키를 계산합니다.

s2n-tls가 사용하는 알고리즘은 Elliptic Curve Diffie-Hellman(ECDH)(현재 TLS에서 사용 중인 전형적인 키 교환 알고리즘)과 Kyber(National Institute for Standards and Technology(NIST))가 첫 표준 포스트 퀀텀 키–일치 알고리즘으로 지정한 퍼블릭-키 암호화 및 키-설정 알고리즘)을 결합한 하이브리드입니다. 이 하이브리드는 각 알고리즘을 독립적으로 사용하여 키를 생성합니다. 그런 다음 두 키를 암호화 방식으로 결합합니다. s2n-tls을 사용하면 선호도 목록에서 ECDH와 Kyber를 첫 번째로 배치하는 암호 선호도 설정을 사용하여 HTTP 클라이언트를 구성할 수 있습니다. 클래식 키 교환 알고리즘은 호환성을 보장하기 위해 선호도 목록에 포함되어 있지만 선호도 순위는 낮습니다.

진행 중인 연구에 따르면 Kyber 알고리즘이 예상 포스트 양자 강도가 부족하다는 것이 밝혀진다 해도 하이브리드 키는 적어도 현재 사용 중인 단일 ECDH 키만큼 강력합니다. 포스트 퀀텀 알고리즘에 대한 조사가 완료될 때까지 포스트 퀀텀 알고리즘만 사용하는 대신 하이브리드 알고리즘을 사용하는 것이 좋습니다.

AWS KMS와 함께 하이브리드 포스트 양자 TLS 사용

AWS KMS에 대한 호출에 하이브리드 포스트 양자 TLS를 사용할 수 있습니다. HTTP 클라이언트 테스트 환경을 설정할 때 다음 정보에 유의하십시오.

전송 중 데이터 암호화

s2n-tls의 하이브리드 암호 제품군은 전송 중 암호화에만 사용됩니다. 이 제품군은 데이터가 클라이언트에서 AWS KMS 엔드포인트로 이동하는 동안 데이터를 보호합니다. AWS KMS는 AWS KMS keys에서 데이터를 암호화할 때는 이 암호 제품군을 사용하지 않습니다.

대신 AWS KMS는 KMS 키에서 데이터를 암호화하는 경우 256비트 키를 이용한 대칭 암호화와 이미 양자 내성인 갈루아/카운터 모드의 고급 암호화 표준(AES-GCM) 알고리즘을 사용합니다. 256비트 AES-GCM 키로 생성된 암호화 텍스트에 대한 이론적인 미래의 대규모 양자 컴퓨팅 공격은 키의 효과적 보안을 128비트로 감소시킵니다. 이 보안 수준으로도 충분히 AWS KMS 암호 텍스트에 대한 무차별 암호 대입 공격을 불가능하게 만들 수 있습니다.

지원되는 시스템

s2n-tls의 하이브리드 암호 제품군을 사용하는 것은 현재 Linux 시스템에서만 지원됩니다. 또한 이러한 암호 제품군은 AWS와 같이 AWS SDK for Java 2.x 공통 런타임을 지원하는 SDK에서만 지원됩니다. 예시는 하이브리드 포스트 양자 TLS를 구성하는 방법 섹션을 참조하세요.

AWS KMS 엔드포인트

하이브리드 암호 제품군을 사용할 때는 표준 AWS KMS 엔드포인트를 사용하세요. s2n-tls의 하이브리드 암호 제품군은 AWS KMS용 FIPS 140-2 검증 엔드포인트와 호환되지 않습니다. 검증된 암호화 모듈에서는 포스트 양자 알고리즘이 허용되지 않습니다.

s2n-tls에서 하이브리드 포스트 양자 암호 선호도를 사용하여 HTTP 클라이언트를 구성할 경우 포스트 양자 암호는 암호 선호도 목록에서 1순위입니다. 그러나 선호도 목록에는 호환성에 대한 선호도 순위가 더 낮은 클래식 비하이브리드 암호가 포함됩니다. AWS KMS FIPS 140-2 검증 엔드포인트와 함께 이 암호 선호도를 사용하려는 경우 s2n-tls은 클래식 비하이브리드 키 교환 암호를 협상합니다.

각 AWS 리전에 대한 AWS KMS 엔드포인트 목록은 Amazon Web Services 일반 참조AWS Key Management Service 엔드포인트 및 할당량 을 참조하세요. FIPS 엔드포인트에 대한 자세한 내용은 Amazon Web Services 일반 참조FIPS 엔드포인트를 참조하세요.

예상 성능

초기 벤치마크 테스트에 따르면 s2n-tls의 하이브리드 암호 제품군이 클래식 TLS 암호 제품군보다 더 느립니다. 효과는 네트워크 프로필, CPU 속도, 코어 수 및 호출 속도에 따라 달라집니다. 성능 테스트 결과는 Kyber로 하이브리드 포스트 퀀텀 암호화를 위해 TLS를 튜닝하는 방법을 참조하세요.

하이브리드 포스트 양자 TLS를 구성하는 방법

이 절차에서는 AWS 공통 런타임 HTTP 클라이언트의 미리 보기 릴리스에 대한 Maven 종속성을 추가합니다. 그런 다음 하이브리드 포스트 양자 암호 선호도를 사용하는 HTTP 클라이언트를 구성합니다. 그런 다음 HTTP 클라이언트를 사용하는 AWS KMS 클라이언트를 생성합니다.

AWS KMS에서 하이브리드 포스트 양자 TLS를 구성하고 사용하는 방법의 전체 작업 예시를 보려면 aws-kms-pq-tls-example 리포지토리를 참조하세요.

  1. Maven 종속성에 AWS 공통 런타임 클라이언트를 추가합니다. 사용 가능한 최신 버전을 사용하는 것이 좋습니다.

    예를 들어 이 문은 AWS 공통 런타임 클라이언트의 2.17.69-PREVIEW 버전을 Maven 종속성에 추가합니다.

    <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> <version>2.17.69-PREVIEW</version> </dependency>
  2. 하이브리드 포스트 양자 암호 제품군을 활성화하려면 AWS SDK for Java 2.x를 프로젝트에 추가한 후 초기화하세요. 이어서 다음 예와 같이 하이브리드 암호 제품군을 활성화합니다.

    이 코드는 사용자가 하이브리드 암호 제품군을 지원하는 시스템에서 작업 중인지 확인합니다. 그런 다음 이 코드는 Kyber 하이브리드 암호 제품군과 함께 ECDH를 우선적으로 처리하는 TLS_CIPHER_PREF_PQ_TLSv1_0_2021_05 암호 선호도를 사용하여 HTTP 클라이언트를 생성합니다. 마지막으로 데이터 전송을 위해 HTTP 클라이언트를 사용하는 AWS KMS 클라이언트를 생성합니다.

    이 코드에서는 AWS KMS를 비동기식으로 호출하는 AWS KMS 비동기 클라이언트인 KmsAsyncClient를 사용합니다. 이 클라이언트에 대한 자세한 내용은 KmsAsyncClient Javadoc을 참조하세요.

    이 코드가 완료되면 AWS KMS 비동기 클라이언트의 AWS KMS API 요청이 TLS용 하이브리드 암호 제품군을 사용합니다.

    TlsCipherPreference tlsCipherPreference = TLS_CIPHER_PREF_PQ_TLSv1_0_2021_05; // Check platform support if(!tlsCipherPreference.isSupported()){ throw new RuntimeException("Hybrid post-quantum cipher suites are not supported on this platform"); } // Configure HTTP client SdkAsyncHttpClient awsCrtHttpClient = AwsCrtAsyncHttpClient.builder() .tlsCipherPreference(tlsCipherPreference) .build(); // Create the AWS KMS async client KmsAsyncClient kmsAsync = KmsAsyncClient.builder() .httpClient(awsCrtHttpClient) .build();
  3. 포스트 양자 TLS를 사용하여 AWS KMS 호출을 테스트합니다.

    구성된 AWS KMS 클라이언트에서 AWS KMS API 작업을 호출하면 호출은 하이브리드 포스트 양자 TLS를 사용하여 AWS KMS 엔드포인트로 전송됩니다. 구성을 테스트하려면 간단한 AWS KMS API 호출(예: ListKeys)을 실행하세요.

    ListKeysReponse keys = kmsAsync.listKeys().get();

AWS KMS에서 하이브리드 포스트 양자 TLS 테스트

AWS KMS를 호출하는 애플리케이션에서 하이브리드 암호 제품군을 사용하여 다음 테스트를 실행하는 것을 고려하십시오.

  • 로드 테스트 및 벤치마크를 실행합니다. 하이브리드 암호 제품군은 기존 키 교환 알고리즘과 다르게 작동합니다. 핸드셰이크 시간이 길어지도록 연결 제한 시간을 조정해야 할 수도 있습니다. AWS Lambda 함수 내에서 실행 중인 경우 실행 제한 시간 설정 값을 늘리세요.

  • 다른 위치에서 연결해 보세요. 요청이 지나는 네트워크 경로에 따라 DPI(심층 패킷 검사)가 있는 중간 호스트, 프록시 또는 방화벽으로 인해 요청이 차단됨을 알 수 있습니다. TLS 핸드셰이크의 ClientHello 부분에서 새 암호 제품군을 사용하는 것 또는 키 교환 메시지가 더 큰 것이 원인일 수 있습니다. 이러한 문제를 해결하는 데 문제가 있는 경우 보안 팀 또는 IT 관리자와 협력하여 관련 구성을 업데이트하고 새 TLS 암호 제품군을 차단 해제하세요.

AWS KMS의 포스트 양자 TLS에 대해 자세히 알아보기

AWS KMS에서 하이브리드 포스트 양자 TLS 사용하는 방법에 대한 자세한 내용은 다음 리소스를 참조하세요.