HPKE 總覽
混合型公開金鑰加密 (HPKE) 是一種加密機制,可用於將酬載加密為公開金鑰。由於酬載本身是以對稱式金鑰加密,而 HPKE 會使用 Diffie-Hellman 金鑰交換機制衍生這個對稱式金鑰,因此稱為「混合型」。
HPKE 模式
- 基本:最常見的模式。
- 驗證:使用傳送者的私密金鑰進行驗證。
- PSK:使用預先共用的高熵金鑰進行驗證。
- AuthPSK:結合傳送者的私密金鑰和預先共用的高熵金鑰,用於驗證。
基本模式互動 (裝置和發卡機構)
以下是高階流程,說明裝置要將機密資料傳送給核發機構的案例。
步驟 1:產生及交換金鑰
- 簽發機構會建立加密金鑰組:
IE₍ₚₖ, ₛₖ₎,其中 ₚₖ 是公開金鑰,ₛₖ 是私密金鑰。 - 核發機構會將公開金鑰 (
IEₚₖ) 傳送並分享給裝置。
步驟 2:加密及傳送
裝置執行 Hybrid-Encrypt(Data, IEₚₖ, Context)。
- 裝置會產生用於加密的暫時性非對稱金鑰組:
₍Eₚₖ, Eₛₖ₎。 - 並使用
SS = ExtractAndExpand(Diffie-Hellman(IEₚₖ, Eₛₖ), _Context)公式推導出對稱 AES 金鑰,也就是共用密鑰 (SS)。 - 裝置會使用這個共用密鑰加密資料,產生
encData。 - 並將
{ encData, Eₚₖ }分享給核發機構。
步驟 3:解密
發卡機構目前持有 IE₍ₚₖ, ₛₖ₎ 和收到的 { encData, Eₚₖ }。執行 Hybrid-Decrypt(encData, Eₚₖ, IEₛₖ, Context)。
- 並使用
SS = ExtractAndExpand(Diffie-Hellman(IEₛₖ, Eₚₖ), _Context)公式推導出對稱 AES 金鑰 (共用密鑰,SS)。 - 使用 SS 解密
encData。
術語
| 字詞 | 定義與詳細資料 |
|---|---|
| DIₚₖ | 憑證金鑰憑證鏈結 (裝置身分憑證):CredentialKey 的 X.509 憑證鏈結,可向核發機構識別憑證。
|
| Aₚₖ | 驗證金鑰:需要認證的動態 X.509 驗證金鑰,每個金鑰都由 CredentialKey 簽署。
|
| IE₍ₛₖ,ₚₖ₎ | 發行者加密金鑰組:發行者產生的非對稱金鑰。裝置會使用這個金鑰對發行者執行混合式加密。 |
| II₍ₛₖ,ₚₖ₎ | 核發者身分識別金鑰組:由核發者產生的非對稱金鑰。裝置會使用這組金鑰驗證發行者的身分。 |
| DE₍ₛₖ,ₚₖ₎ | 裝置加密金鑰組:裝置為每個要求產生的暫時性非對稱金鑰。發行者會使用這把金鑰對裝置執行混合式加密。 |
| FE₍ₛₖ,ₚₖ₎ | 欄位加密金鑰:在混合式加密期間,系統會為每個欄位產生暫時性的非對稱式金鑰。 |
Google Digital Credential Provisioning API 中的端對端加密
步驟 1:取得簽發者身分識別金鑰和加密金鑰
- API 端點:
/getIdentityKey、/getHybridEncryptionKey。 - 傳回:
IIₚₖ、IEₚₖ。
步驟 2:取得裝置註冊 Nonce
- 產生裝置參考 ID (
deviceReferenceId)。 - API 端點:呼叫
/getDeviceRegistrationNonce(deviceReferenceId)。 - 傳回:
nonce。
步驟 3:註冊裝置
- 設定 Android 身分憑證。
- 呼叫
IC.getCredentialKeyCertificateChain(nonce),這會傳回內嵌隨機值的DIₚₖ。 - API 端點:呼叫
/registerDevice(deviceReferenceId, DIₚₖ)。 - 簽發機構必須仔細檢查這個憑證鏈,確保根憑證為人所知、存在驗證問題、
ATTESTATION_APPLICATION_ID與預期應用程式相符、已啟用驗證啟動,以及簽章或撤銷有效。 - 傳回:
ack。
步驟 4a:傳送校對要求
- 針對每個欄位:
- 執行
Hybrid-Encrypt(Data, IEₚₖ, Context=FieldName)來產生encData和FEₚₖ。 - 呼叫
IC.proveOwnership(SHA-256(Data + IEₚₖ))取得sigData(由 CredentialKey 簽署的 COSE_Sign1 資料結構,且酬載設為 ProofofOwnership)。
- 執行
- API 端點:呼叫
/proofUser([encData, sigData, FEₚₖ])。 - 核發機構會使用
DIₚₖ驗證sigData。 - 核發機構會執行
Hybrid-Decrypt(encData, FEₚₖ, IEₛₖ, Context=FieldName)來產生Data。 - 傳回:
ack。
步驟 4b:更新校對狀態
- 使用
deviceReferenceId和proofingId通知 Google 校對狀態更新。 - API 端點:呼叫
/notifyProofingStatusUpdateAvailable(...)。 - Google 伺服器會呼叫
/getProofingStatus(deviceReferenceId, proofingId),從發行者擷取驗證狀態。
步驟 5:佈建憑證
- 呼叫
IC.proveOwnership(SHA-256(DEₚₖ))以取得sigDEₚₖ(由 CredentialKey/DIₛₖ 簽署的 COSE_Sign1 結構,並包含 ProofofOwnership)。 - API 端點:透過
/provisionCredential(dRId, pId, cId, DEₚₖ, sigDEₚₖ)將deviceReferenceId、proofingId、credentialId和sigDEₚₖ傳送給發卡機構。 - 發卡機構端:
- 使用「
DIₚₖ」驗證「sigDEₚₖ」。 - 加密憑證 (PersonalizationData + AccessControlProfiles)。
- 執行
Hybrid-Encrypt(Cred, DEₚₖ, Context=FieldName)來產生encCred和FEₚₖ。 - 使用
IIₛₖ簽署 COSE_Sign1 SHA-256(Cred + DEₚₖ),建立sigCred。 - 退回
encCred、sigCred、FEₚₖ。
- 使用「
- 裝置端:
- 使用
IIₚₖ驗證sigCred。 - 執行
Hybrid-Decrypt(encCred, FEₚₖ, DEₛₖ, Context=FieldName)即可擷取Cred。 - 呼叫
WC.personalize(Cred)取得sigCredReceipt(由 CredentialKey 簽署的 COSE_Sign1,酬載為 ProofOfProvisioning)。 - 執行
Hybrid-Encrypt(sigCredReceipt, DEₛₖ, Context=FieldName),產生encReceipt和FE1ₚₖ。 - 呼叫
IC.proveOwnership(SHA-256(encReceipt + IEₚₖ))取得sigReceipt(由 CredentialKey 簽署的 COSE_Sign1,酬載為 ProofofOwnership)。 - 產生驗證金鑰 [
Aₚₖ]。
- 使用
步驟 6:產生 MSO 和 StaticAuthData
- 裝置端:
- 針對每個驗證金鑰:執行
Hybrid-Encrypt(AuthKey, IEₚₖ, Context=FieldName)來產生encAuthKey和FEₚₖ。 - 呼叫
IC.proveOwnership(SHA-256(AuthKey + IEₚₖ))即可取得sigAuthKey。 - API 端點:呼叫
/provisionMSOs(.., encReceipt, sigReceipt, [encAuthKey, sigAuthKey, FEₚₖ], DEₚₖ, sigDEₚₖ)。
- 針對每個驗證金鑰:執行
- 發卡機構端:
- 根據
DIₚₖ驗證sigReceipt和sigDEₚₖ,確認收據。 - 針對每個
[encAuthKey, sigAuthKey, FEₚₖ]:執行Hybrid-Decrypt(encAuthKey, FEₚₖ, IEₛₖ, Context=FieldName)來擷取AuthKey。 - 產生 MSO (包括 AuthKey) 和 staticAuthData (SAD),包括 digestIdMapping 和 issuerAuth。
- 執行
Hybrid-Encrypt(SAD, DEₚₖ, Context=FieldName)來產生encSAD和FEₚₖ。 - 使用 COSE_Sign1 SHA-256(SAD + DEₚₖ) 搭配
IIₛₖ簽署,產生sigSAD。 - 回程日期:
[encSAD, sigSAD, FEₚₖ]。
- 根據
- 裝置端 (最終):
- 針對每個傳回的
encSAD, sigSAD, FEₚₖ:使用IIₚₖ驗證sigSAD。 - 執行
Hybrid-Decrypt(encSAD, FEₚₖ, DEₛₖ, Context=FieldName)即可擷取SAD。 - 撥打
storeStaticAuthenticationData,並使用SAD完成設定程序。
- 針對每個傳回的
輪替規定
簽發者身分識別金鑰應每年輪替一次。在輪替期間,發卡機構應同時代管新舊金鑰,裝置則會信任這兩把金鑰。發行者完全改用新的發行者身分識別金鑰後,應停止代管舊金鑰,裝置也不會再信任該金鑰。
發卡機構混合式加密金鑰應每 3 個月輪替一次。在輪替期間,簽發者應開始只代管新金鑰,裝置也會開始使用新金鑰加密。為避免停機,簽發者必須在合理的時間內,同時支援使用新舊金鑰解密。
AAD 值
請使用下列 AAD 的內容值。
| 欄位 | 內容值 |
|---|---|
| preAuthorizationCode | PreAuthorizationCode |
如要瞭解其他證據類型的 AAD 值,請洽詢 Google 代表。
數位憑證端對端加密的測試向量
數位 ID 端對端加密的測試向量是一組預先定義的訊息及其加密版本,用於測試加密演算法的正確性。
HPKE 加密參數:
KEM = DHKEM(P-256, HKDF-SHA256), id = 0x0010 KDF = HKDF-SHA256, id = 0x0001 AEAD = AES-256-GCM, id = 0x0002
- 其他關聯資料 (AAD) 是 HPKE CtxInfo 的輸入內容,AES (對稱) 加密的 AAD 為 NULL (空白)。
- JSON 結構中的二進位資料會採用 Base64 編碼,本文中的中間值則採用十六進位編碼。
- 本文件中的簽章格式:
- 裝置 → 發卡機構、發卡機構 → 裝置:
COSE_Sign1
- 裝置 → 發卡機構、發卡機構 → 裝置:
用戶端 → 發行人、發行人 → 用戶端
雙向通訊的範例。
加密要求欄位範例
Plaintext = "Hello, world!", associated-data = "field1"
{
"field1": {
"encryptedValue": "yGFWT9MkgV6/IZfYUZjqGEf3k2M/HQhz9XnKWyI\u003d",
"encapsulatedKey": "BOpBC2LGh1RWk99iIm6ISsaPbtrNnu9hIgHeby5khXY6PG+ZmDOYmorEUne7uzhDmD6JCVYyME1+A8ueJ0CZvAI\u003d",
"signature": "hEOhASagWE+EcFByb29mT2ZPd25lcnNoaXB4GG9yZy5pc28uMTgwMTMtNS4yMDE5Lm1kbFggTOsHXzsgDgh/2chekltve8rJsFFb6DTtBjY98H58gjb0WEBUnwNT3gvbavE8QoaAKaELqF7JKqh0+ivPisQg6RerTmx8Zsk/tCjW/y1cxhGKatl2EjASemns67r1/lZumEqZ",
"recipientKeyId": "4D7E5D8B9460810A"
}
}深入探討:
>> plaintext = "Hello, world!" 48656C6C6F2C20776F726C6421 >> associated-data = "field1" 6669656C6431 ## AES key = 2831F07355FEAB3A8654EADEEC2E2D497B9FD3C76CB8B5E776DB03583F302332 ## AES initialization vector = 64620929032C85B352156528 ## AES associated data (empty) = >> encrypted-value = HPKE(plaintext, associated-data) C861564FD324815EBF2197D85198EA1847F793633F1D0873F579CA5B22 >> encapsulated-key (ephemeral) = 04EA410B62C687545693DF62226E884AC68F6EDACD9EEF612201DE6F2E648576 3A3C6F999833989A8AC45277BBBB3843983E89095632304D7E03CB9E274099BC 02 >> tbs-data = plaintext || issuer-encryption-key 48656C6C6F2C20776F726C6421044F1FC726AFFFC32EAA1275B5B49D67018ADE 7D8599DE53FE049996C0EC45D26EA3375BF467B631CF8AB0F284E4B628E287C8 99107465529DCA93DCF5F7A7EA5F >> sha-256(tbs-data) 4CEB075F3B200E087FD9C85E925B6F7BCAC9B0515BE834ED06363DF07E7C8236 >> proof-of-ownership (cbor array) 847050726F6F664F664F776E65727368697078186F72672E69736F2E31383031 332D352E323031392E6D646C58204CEB075F3B200E087FD9C85E925B6F7BCAC9 B0515BE834ED06363DF07E7C8236F4 >> signature (cose_sign1) 8443A10126A0584F847050726F6F664F664F776E65727368697078186F72672E 69736F2E31383031332D352E323031392E6D646C58204CEB075F3B200E087FD9 C85E925B6F7BCAC9B0515BE834ED06363DF07E7C8236F45840549F0353DE0BDB 6AF13C42868029A10BA85EC92AA874FA2BCF8AC420E917AB4E6C7C66C93FB428 D6FF2D5CC6118A6AD9761230127A69ECEBBAF5FE566E984A99
發行者或裝置加密金鑰範例
{
"deviceEncryptionKey": {
"publicKey": "BP5vgzZ+UTozzb6cmaZ8tkof2nh2Q2oHVAsggvc8V8SR6C9wWU6W9JEq0AmsGbou3jYw4BLftJP2XQeCB3uD/to\u003d",
"signature": "hEOhASagWE+EcFByb29mT2ZPd25lcnNoaXB4GG9yZy5pc28uMTgwMTMtNS4yMDE5Lm1kbFgg7641tE2UhuT5Tw9p1u9yEDpyYzDf1Jf9m//mIQfd4Kf0WEBB7PvHbfWozCYlFUqMJ6x+QWzoUU/OT10F1J1zoB8MTELPqfC9acF6IX5oMmsgLn2RtPS7QfylRqEAfG0FyYli",
"keyIdentifier": "F29BA6298BC93156D2D50EA7E2233FC4"
}
}深入探討:
>> ec-point 04FE6F83367E513A33CDBE9C99A67CB64A1FDA7876436A07540B2082F73C57C4 91E82F70594E96F4912AD009AC19BA2EDE3630E012DFB493F65D0782077B83FE DA >> sha-256(ec-point) EFAE35B44D9486E4F94F0F69D6EF72103A726330DFD497FD9BFFE62107DDE0A7 >> proof-of-ownership (cbor array) 847050726F6F664F664F776E65727368697078186F72672E69736F2E31383031 332D352E323031392E6D646C5820EFAE35B44D9486E4F94F0F69D6EF72103A72 6330DFD497FD9BFFE62107DDE0A7F4 >> signature (cose_sign1) 8443A10126A0584F847050726F6F664F664F776E65727368697078186F72672E 69736F2E31383031332D352E323031392E6D646C5820EFAE35B44D9486E4F94F 0F69D6EF72103A726330DFD497FD9BFFE62107DDE0A7F4584041ECFBC76DF5A8 CC2625154A8C27AC7E416CE8514FCE4F5D05D49D73A01F0C4C42CFA9F0BD69C1 7A217E68326B202E7D91B4F4BB41FCA546A1007C6D05C98962
測試金鑰和憑證
實作時可參考下列測試金鑰。
測試核發者身分 (簽章) 金鑰
私密金鑰
-----BEGIN PRIVATE KEY----- MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCBSDJqogkjkqD7O8mX5 FcUvwOxFp0CxPOGnMD8BfSbcyw== -----END PRIVATE KEY-----
公用金鑰憑證
-----BEGIN CERTIFICATE----- MIIBkDCCATegAwIBAgIIIi7oI6UIMEYwCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN MjIxMjEyMjAyNDA0WhcNMjMxMjEyMjAyNDA0WjBSMQ8wDQYDVQQLEwZXYWxsZXQx DzANBgNVBAoTBkdvb2dsZTEuMCwGA1UEAxMlVEVTVCBEQVRBIElzc3VlciBJZGVu dGl0eSAoU2lnbmF0dXJlKTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHV9uYlT wGV3UB+SM62fXcW6QzFfSoxq2gU34xG+XVMjxk9JDP9UTE34zX72WIfZ9nqRN9y/ SsbSxw5WrSQdGY2jEjAQMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBE AiBnMgsyJhdfelqpOFvT4H63dWSrNPxyrKEdxTwbYMfCKQIgOh2n2gCETH07tjxR l9HQfUcb6vqQY4EoPz2O0wNs6yc= -----END CERTIFICATE-----
測試發卡機構加密金鑰
私密金鑰
-----BEGIN PRIVATE KEY----- MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCDZMUnwmygUdKXSujXS ye7YbVnk1Zy/qwnQtzlZs3pQFQ== -----END PRIVATE KEY-----
公用金鑰憑證
-----BEGIN CERTIFICATE----- MIIBpjCCAUygAwIBAgIIIVwLEOrrzm0wCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN MjIxMjIyMjA1NzIzWhcNMjMxMjIyMjA1NzIzWjBIMQ8wDQYDVQQLEwZXYWxsZXQx DzANBgNVBAoTBkdvb2dsZTEkMCIGA1UEAxMbVEVTVCBEQVRBIElzc3VlciBFbmNy eXB0aW9uMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETx/HJq//wy6qEnW1tJ1n AYrefYWZ3lP+BJmWwOxF0m6jN1v0Z7Yxz4qw8oTktijih8iZEHRlUp3Kk9z196fq X6MxMC8wDgYDVR0PAQH/BAQDAgMYMB0GA1UdDgQWBBQKFb7K4eZjtp70DLoCHWe7 v/toXzAKBggqhkjOPQQDAgNIADBFAiEAwN1gOwiSx3999Zxc980eKv3p2H8kA4J6 9aWH6jiVaGMCIA7lLkebHFhD0fItGqXv1f5fwiMBV0605KZFh5+RBj/W -----END CERTIFICATE-----
裝置身分 (簽章) 金鑰,又稱憑證金鑰
- 公用金鑰憑證鏈結 (X.509)
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
詳情請參閱 Android 的金鑰認證說明文件。
裝置加密金鑰
私密金鑰
-----BEGIN PRIVATE KEY----- MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCBJY8n7A1v+thMM63np m0wr+rAoMFEYmMZ+mWzBIj2CiQ== -----END PRIVATE KEY-----
公用金鑰憑證
-----BEGIN CERTIFICATE----- MIIBhzCCAS2gAwIBAgIIAyJ+NkzueMUwCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN MjMwMTA5MjMwOTIwWhcNMjQwMTA5MjMwOTIwWjBIMQ8wDQYDVQQLEwZXYWxsZXQx DzANBgNVBAoTBkdvb2dsZTEkMCIGA1UEAxMbVEVTVCBEQVRBIERldmljZSBFbmNy eXB0aW9uMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/m+DNn5ROjPNvpyZpny2 Sh/aeHZDagdUCyCC9zxXxJHoL3BZTpb0kSrQCawZui7eNjDgEt+0k/ZdB4IHe4P+ 2qMSMBAwDgYDVR0PAQH/BAQDAgMYMAoGCCqGSM49BAMCA0gAMEUCIQD9syewRhvK KcyaM7fLwuuCidpiIVd/CZxFCLOo9adCPAIgNd3FMcT710KtYptJBZQ/i7N+C7G5 pLbHmAUoFwNuB2E= -----END CERTIFICATE-----