搭配 AWS KMS 使用混合式後量子 TLS - AWS Key Management Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

搭配 AWS KMS 使用混合式後量子 TLS

AWS Key Management Service (AWS KMS) 支援適用於 Transport Layer Security (TLS) 網路加密通訊協定的混合式後量子金鑰交換選項。連線至 AWS KMS API 端點時,您可使用此 TLS 選項。在後量子演算法標準化前,我們會提供此功能,以便您可以開始測試這些金鑰交換通訊協定對於 AWS KMS 呼叫的影響。這些選用的混合式後量子金鑰交換功能至少與現今使用的 TLS 加密功能同樣安全,且還能提供其他長期安全優勢。不過,與現今使用的傳統金鑰交換通訊協定相較之下,這些功能會影響延遲和輸送量。

傳送至 AWS Key Management Service (AWS KMS) 資料會在傳輸中受到 Transport Layer Security (TLS) 連線提供的加密保護。AWS KMS 支援可用於 TLS 工作階段的傳統密碼套件會使得暴力破解攻擊在現今的科技下變得毫無用武之地。不過如果大規模量子運算在未來變得可行,那麼用於 TLS 金鑰交換機制的傳統密碼套件將容易遭受這些攻擊影響。如果您正在開發仰賴透過 TLS 連線傳遞之資料的長期機密性的應用程式,則應在大規模量子電腦問世可用之前,考慮遷移到後量子加密法的計畫。AWS 正在努力為此未來做好準備,而且我們也想要讓您做好充分準備。

若要保護現今加密的資料防範潛在的未來攻擊,AWS 正在與密碼編譯社群攜手合作開發抵禦量子或後量子演算法。我們已在 AWS KMS 中實作混合式後量子金鑰交換密碼套件,它們結合了傳統與後量子元素,能夠確保您的 TLS 連線至少與使用傳統密碼套件一樣堅強。

這些混合式加密套件可用於大部分 AWS 區域中的生產工作負載。然而,由於混合式密碼套件的效能特性與頻寬要求的緣故,我們建議您在不同的條件下對 AWS KMS API 呼叫測試這些套件

意見回饋

我們總是歡迎您提供意見回饋,並參加我們的開放原始碼儲存庫。我們特別想要了解您的基礎設施如何與此新版的 TLS 流量互動。

  • 若要提供有關此主題的意見回饋,請使用本頁右上角的意見回饋連結。

  • 我們正在開放原始碼中開發這些混合密碼套件。s2n-tls GitHub若要提供密碼套件可用性的意見回饋,或分享新的測試條件或結果,請在 s2n-tls 儲存庫中建立問題

  • 我們正AWS KMS在撰寫程式碼範例,以便在aws-kms-pq-tls-example GitHub儲存庫中使用混合式後量子 TLS。若要提出問題或分享有關如何設定 HTTP 用戶端或 AWS KMS 用戶端以使用混合式加密套件的想法,請在 aws-kms-pq-tls-example 儲存庫中建立問題

支援 AWS 區域

AWS KMS 的後量子 TLS 可用於所有 AWS KMS 支援的 AWS 區域,但中國 (北京) 與中國 (寧夏) 除外。

注意

AWS KMS 不支援 AWS GovCloud (US) 中 FIPS 端點的混合式後量子 TLS。

如需各 AWS 區域 的 AWS KMS 端點清單,請參閱《Amazon Web Services 一般參考》的AWS Key Management Service端點與配額。如需有關 FIPS 端點的詳細資訊,請參閱《Amazon Web Services 一般參考》的 FIPS 端點

關於 TLS 中的混合式後量子金鑰交換

AWS KMS 支援混合式後量子金鑰交換密碼套件。您可以在 Linux 系統上使用 AWS SDK for Java 2.x 和 AWS 通用執行時間來設定使用這些加密套件的 HTTP 用戶端。然後每次將 AWS KMS 端點連接到 HTTP 用戶端時,則會使用混合式密碼套件。

此 HTTP 客戶端使用 s2n-tls,這是 TLS 協定的開源實作。s2n-tls 使用的混合式密碼套件僅針對金鑰交換實作,而非針對直接資料加密。在金鑰交換時,用戶端與伺服器會計算其用於加密與解密線路上資料的金鑰。

s2n-tls 使用的演算法是混合演算法,結合橢圓曲線 Diffie-Hellman (ECDH),這是目前 TLS 中使用的經典金鑰交換演算法),以及 Kyber,這是美國國家標準與技術研究院 (NIST) 已指定作為其第一個標準後量子金鑰協議的公有金鑰加密和金鑰建立演算法。此混合會獨立使用各演算法,以產生金鑰。然後以密碼編譯方式結合兩個金鑰。使用 s2n-tls,您可以將 HTTP 用戶端設定為偏好後量子 TLS,將具有 Kyber 的 ECDH 置於偏好清單的首位。為了確保相容性,傳統金鑰交換演算法仍包含在偏好設定清單中,但偏好設定順序較低。

如果持續的研究顯示,Kyber 演算法欠缺預期的後量子強度,則混合式金鑰至少仍根目前使用的單一 ECDH 金鑰同樣堅強。在後量子演算法的研究完成之前,我們建議使用混合型演算法,而不要單獨使用後量子演算法。

搭配 AWS KMS 使用混合式後量子 TLS

您可以將後量子演算法 TLS 用於對 AWS KMS 的呼叫上。設定 HTTP 用戶端測試環境時,請注意下列資訊:

傳輸中加密

s2n-tls 中的混合式密碼套件僅用於傳輸中加密。這些套件會在資料從用戶端傳輸至 AWS KMS 端點時保護資料。AWS KMS 不會使用這些加密套件,以 AWS KMS keys 來將資料加密。

而是當 AWS KMS 以 KMS 金鑰將資料加密時,它會採用對稱金鑰加密法,使用 256 位元金鑰和 Galois 計數器模式 (AES-GCM) 演算法中的進階加密標準,而此方法足以抵禦量子攻擊。在理論上,未來針對以 256 位元 AES-GCM 金鑰建立的加密文字所做的大規模量子運算攻擊,會將金鑰的有效安全性降低到 128 位元。這種安全等級足以讓針對 AWS KMS 加密文字所做的暴力破解攻擊變得不可行。

支援的系統

目前僅支援在 Linux 系統上使用 s2n-tls 中的混合式密碼套件。此外,這些加密套件僅在支援 AWS 常用執行時間 (如 AWS SDK for Java 2.x) 的軟體開發套件中獲得支援。如需範例,請參閱 如何設定混合式後量子 TLS

AWS KMS 端點

使用混合式密碼套件,請使用標準 AWS KMS 端點。s2n-tls 中的混合式密碼套件不相容於 適用於 AWS KMS 的 FIPS 140-2 驗證端點

將 HTTP 用戶端設定為偏好使用 s2n-tls 的後量子 TLS 連接時,後量子密碼在密碼偏好清單中排在首位。不過,為了確保相容性,偏好設定清單包括在偏好設定順序中較低的傳統、非混合式密碼。當您將 HTTP 用戶端設定為偏好使用 AWS KMS FIPS 140-2 驗證端點的後量子 TLS 時,s2n-tls 會協商傳統、非混合式金鑰交換密碼。

如需各 AWS 區域 的 AWS KMS 端點清單,請參閱《Amazon Web Services 一般參考》的AWS Key Management Service端點與配額。如需有關 FIPS 端點的詳細資訊,請參閱《Amazon Web Services 一般參考》的 FIPS 端點

預期效能

我們的早期基準測試指出,在 s2n-tls 中的混合式密碼套件比傳統 TLS 密碼套件還慢。cipher suites。此影響會隨著網路設定檔、CPU 速度、核心數,以及您的通話費率而改變。如需效能測試結果,請參閱如何使用 Kyber 針對混合後量子密碼學調整 TLS

如何設定混合式後量子 TLS

在此處理程序中,為 AWS 通用執行時間 HTTP 用戶端新增 Maven 相依性。接下來,設定偏好後量子 TLS 的 HTTP 用戶端。然後,建立使用 HTTP 用戶端的 AWS KMS 用戶端。

若要查看設定與搭配 AWS KMS 使用混合式後量子 TLS 的完整可用範例,請參閱 aws-kms-pq-tls-example 儲存庫。

注意

AWS 通用執行時間 HTTP 用戶端已作為預覽版提供,於 2023 年 2 月正式推出。在該版本中,tlsCipherPreference 類別和 tlsCipherPreference() 方法參數由 postQuantumTlsEnabled() 方法參數取代。如果您在預覽期間使用此範例,則需要更新程式碼。

  1. 將 AWS 通用執行時間用戶端新增至 Maven 相依性。我們建議使用最新的可用版本。

    例如,這項陳述式將 AWS 通用執行時間用戶端的版本 2.20.0 新增至 Maven 相依性。

    <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> <version>2.20.0</version> </dependency>
  2. 若要啟用混合式後量子密碼套件,請將 AWS SDK for Java 2.x 新增至專案並初始化它。然後如下列範例所示在 HTTP 用戶端啟用混合式後量子密碼套件。

    此程式碼使用 postQuantumTlsEnabled() 方法參數來設定 AWS 通用執行時間 HTTP 用戶端,該用戶端偏好推薦的混合式後量子加密套件,具有 Kyber 的 ECDH。然後,其會使用已設定的 HTTP 用戶端來建置 AWS KMS 非同步用戶端的執行個體,KmsAsyncClient。完成此程式碼之後,KmsAsyncClient 執行個體上的所有 AWS KMS API 請求都會使用混合式後量子 TLS。

    // Configure HTTP client SdkAsyncHttpClient awsCrtHttpClient = AwsCrtAsyncHttpClient.builder() .postQuantumTlsEnabled(true) .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 的詳細資訊,請參閱下列資源。