Tổng quan về HPKE
Mã hoá khoá công khai kết hợp (HPKE) là một cơ chế mã hoá dùng để mã hoá tải trọng thành một khoá công khai. Cơ chế này được gọi là "kết hợp" vì bản thân tải trọng được mã hoá bằng một khoá đối xứng và HPKE lấy khoá đối xứng này bằng cách sử dụng trao đổi khoá Diffie-Hellman.
Các chế độ HPKE
- Base: Chế độ phổ biến nhất.
- Auth: Sử dụng khoá riêng tư của người gửi để xác thực.
- PSK: Sử dụng một khoá có entropy cao được chia sẻ trước để xác thực.
- AuthPSK: Kết hợp khoá riêng tư của người gửi và một khoá có entropy cao được chia sẻ trước để xác thực.
Tương tác ở chế độ Base (Thiết bị và Tổ chức phát hành)
Sau đây là quy trình cấp cao mô tả một tình huống trong đó một thiết bị muốn gửi dữ liệu nhạy cảm đến một Tổ chức phát hành.
Bước 1: Tạo và trao đổi khoá
- Tổ chức phát hành tạo một Cặp khoá mã hoá:
IE₍ₚₖ, ₛₖ₎trong đó ₚₖ là khoá công khai và ₛₖ là khoá riêng tư. - Tổ chức phát hành gửi và chia sẻ khoá công khai (
IEₚₖ) với Thiết bị.
Bước 2: Mã hoá và gửi
Thiết bị thực thi Hybrid-Encrypt(Data, IEₚₖ, Context).
- Thiết bị tạo một cặp khoá bất đối xứng tạm thời để mã hoá:
₍Eₚₖ, Eₛₖ₎. - Thiết bị lấy một khoá AES đối xứng, được gọi là bí mật được chia sẻ (SS), bằng công thức:
SS = ExtractAndExpand(Diffie-Hellman(IEₚₖ, Eₛₖ), _Context). - Thiết bị mã hoá dữ liệu bằng bí mật được chia sẻ này để tạo
encData. - Thiết bị chia sẻ
{ encData, Eₚₖ }và gửi đến Tổ chức phát hành.
Bước 3: Giải mã
Tổ chức phát hành hiện đang giữ IE₍ₚₖ, ₛₖ₎ và { encData, Eₚₖ } đã nhận được. Tổ chức phát hành thực thi Hybrid-Decrypt(encData, Eₚₖ, IEₛₖ, Context).
- Tổ chức phát hành lấy khoá AES đối xứng (bí mật được chia sẻ, SS) bằng công thức:
SS = ExtractAndExpand(Diffie-Hellman(IEₛₖ, Eₚₖ), _Context). - Tổ chức phát hành giải mã
encDatabằng SS.
Thuật ngữ
| Thuật ngữ | Định nghĩa và thông tin chi tiết |
|---|---|
| DIₚₖ | Chuỗi chứng chỉ khoá thông tin xác thực (Chứng chỉ nhận dạng thiết bị): Một chuỗi chứng chỉ X.509 cho CredentialKey xác định thông tin xác thực cho tổ chức phát hành.
|
| Aₚₖ | Khoá xác thực: Các khoá xác thực X.509 động yêu cầu chứng nhận, mỗi khoá được CredentialKey ký.
|
| IE₍ₛₖ,ₚₖ₎ | Cặp khoá mã hoá của tổ chức phát hành: Một khoá bất đối xứng do Tổ chức phát hành tạo. Thiết bị sử dụng khoá này để thực hiện Mã hoá kết hợp cho Tổ chức phát hành. |
| II₍ₛₖ,ₚₖ₎ | Cặp khoá nhận dạng của tổ chức phát hành: Một khoá bất đối xứng do Tổ chức phát hành tạo. Thiết bị sử dụng khoá này để xác minh danh tính của Tổ chức phát hành. |
| DE₍ₛₖ,ₚₖ₎ | Cặp khoá mã hoá thiết bị: Một khoá bất đối xứng tạm thời do Thiết bị tạo cho mỗi yêu cầu. Tổ chức phát hành sử dụng khoá này để thực hiện Mã hoá kết hợp cho Thiết bị. |
| FE₍ₛₖ,ₚₖ₎ | Khoá mã hoá trường: Một khoá bất đối xứng tạm thời được tạo cho mỗi trường trong quá trình Mã hoá kết hợp. |
E2EE trong API cung cấp thông tin xác thực kỹ thuật số của Google
Bước 1: Nhận khoá nhận dạng và khoá mã hoá của tổ chức phát hành
- Điểm cuối API:
/getIdentityKey,/getHybridEncryptionKey. - Trả về:
IIₚₖ,IEₚₖ.
Bước 2: Nhận nonce đăng ký thiết bị
- Tạo Mã tham chiếu thiết bị (
deviceReferenceId). - Điểm cuối API: Gọi
/getDeviceRegistrationNonce(deviceReferenceId). - Trả về:
nonce.
Bước 3: Đăng ký thiết bị
- Thiết lập Thông tin xác thực danh tính Android.
- Gọi
IC.getCredentialKeyCertificateChain(nonce)để trả vềDIₚₖđược nhúng nonce. - Điểm cuối API: Gọi
/registerDevice(deviceReferenceId, DIₚₖ). - Tổ chức phát hành phải kiểm tra kỹ chuỗi chứng chỉ này để đảm bảo
chứng chỉ gốc là chứng chỉ nổi tiếng, thử thách hiện diện,
ATTESTATION_APPLICATION_IDkhớp với ứng dụng dự kiến, đã bật tính năng khởi động đã xác minh, và chữ ký hoặc việc thu hồi là hợp lệ. - Trả về:
ack.
Bước 4a: Gửi yêu cầu chứng minh
- Đối với mỗi trường:
- Thực thi
Hybrid-Encrypt(Data, IEₚₖ, Context=FieldName)để tạoencDatavàFEₚₖ. - Gọi
IC.proveOwnership(SHA-256(Data + IEₚₖ))để lấysigData(một cấu trúc dữ liệu COSE_Sign1 do CredentialKey ký, với tải trọng được đặt thành ProofofOwnership).
- Thực thi
- Điểm cuối API: Gọi
/proofUser([encData, sigData, FEₚₖ]). - Tổ chức phát hành xác minh
sigDatabằngDIₚₖ. - Tổ chức phát hành thực thi
Hybrid-Decrypt(encData, FEₚₖ, IEₛₖ, Context=FieldName)để tạoData. - Trả về:
ack.
Bước 4b: Cập nhật trạng thái chứng minh
- Thông báo cho Google về thông tin cập nhật trạng thái Chứng minh bằng cách sử dụng
deviceReferenceIdvàproofingId. - Điểm cuối API: Gọi
/notifyProofingStatusUpdateAvailable(...). - Máy chủ của Google tìm nạp trạng thái chứng minh từ tổ chức phát hành bằng cách gọi
/getProofingStatus(deviceReferenceId, proofingId).
Bước 5: Cung cấp thông tin xác thực
- Gọi
IC.proveOwnership(SHA-256(DEₚₖ))để nhậnsigDEₚₖ(cấu trúc COSE_Sign1 do CredentialKey/DIₛₖ ký bằng tải trọng ProofofOwnership). - Điểm cuối API: Gửi
deviceReferenceId,proofingId,credentialIdvàsigDEₚₖđến Tổ chức phát hành thông qua/provisionCredential(dRId, pId, cId, DEₚₖ, sigDEₚₖ). - Phía tổ chức phát hành:
- Xác minh
sigDEₚₖbằngDIₚₖ. - Mã hoá thông tin xác thực (PersonalizationData + AccessControlProfiles).
- Thực thi
Hybrid-Encrypt(Cred, DEₚₖ, Context=FieldName)để tạoencCredvàFEₚₖ. - Tạo
sigCredbằng cách ký COSE_Sign1 SHA-256(Cred + DEₚₖ) bằngIIₛₖ. - Trả về
encCred,sigCred,FEₚₖ.
- Xác minh
- Phía thiết bị:
- Xác minh
sigCredbằngIIₚₖ. - Thực thi
Hybrid-Decrypt(encCred, FEₚₖ, DEₛₖ, Context=FieldName)để trích xuấtCred. - Gọi
WC.personalize(Cred)để nhậnsigCredReceipt(COSE_Sign1 do CredentialKey ký, tải trọng ProofOfProvisioning). - Thực thi
Hybrid-Encrypt(sigCredReceipt, DEₛₖ, Context=FieldName)tạoencReceiptvàFE1ₚₖ. - Gọi
IC.proveOwnership(SHA-256(encReceipt + IEₚₖ))để nhậnsigReceipt(COSE_Sign1 do CredentialKey ký, tải trọng ProofofOwnership). - Tạo Khoá xác thực [
Aₚₖ].
- Xác minh
Bước 6: Tạo MSO & StaticAuthData
- Phía thiết bị:
- Đối với mỗi Khoá xác thực: Thực thi
Hybrid-Encrypt(AuthKey, IEₚₖ, Context=FieldName)để tạoencAuthKeyvàFEₚₖ. - Gọi
IC.proveOwnership(SHA-256(AuthKey + IEₚₖ))để nhậnsigAuthKey. - Điểm cuối API: Gọi
/provisionMSOs(.., encReceipt, sigReceipt, [encAuthKey, sigAuthKey, FEₚₖ], DEₚₖ, sigDEₚₖ).
- Đối với mỗi Khoá xác thực: Thực thi
- Phía tổ chức phát hành:
- Xác minh
sigReceiptvàsigDEₚₖdựa trênDIₚₖđể xác minh biên nhận. - Đối với mỗi
[encAuthKey, sigAuthKey, FEₚₖ]: Thực thiHybrid-Decrypt(encAuthKey, FEₚₖ, IEₛₖ, Context=FieldName)để trích xuấtAuthKey. - Tạo MSO (bao gồm AuthKey) và tạo staticAuthData (SAD), bao gồm digestIdMapping và issuerAuth.
- Thực thi
Hybrid-Encrypt(SAD, DEₚₖ, Context=FieldName)để tạoencSADvàFEₚₖ. - Ký bằng COSE_Sign1 SHA-256(SAD + DEₚₖ) bằng
IIₛₖđể tạosigSAD. - Trả về
[encSAD, sigSAD, FEₚₖ].
- Xác minh
- Phía thiết bị (Cuối cùng):
- Đối với mỗi
encSAD, sigSAD, FEₚₖđược trả về: Xác minhsigSADbằngIIₚₖ. - Thực thi
Hybrid-Decrypt(encSAD, FEₚₖ, DEₛₖ, Context=FieldName)để trích xuấtSAD. - Gọi
storeStaticAuthenticationDatabằngSADđể hoàn tất quy trình.
- Đối với mỗi
Yêu cầu về việc luân phiên
Khoá nhận dạng của tổ chức phát hành phải được luân phiên mỗi năm một lần. Trong thời gian luân phiên, tổ chức phát hành phải lưu trữ khoá cũ và khoá mới, đồng thời thiết bị sẽ tin tưởng cả hai khoá đó. Sau khi Tổ chức phát hành đã hoàn toàn chuyển sang sử dụng Khoá nhận dạng của tổ chức phát hành mới, Tổ chức phát hành phải ngừng lưu trữ khoá cũ và thiết bị sẽ không còn tin tưởng khoá đó nữa.
Khoá mã hoá kết hợp của tổ chức phát hành phải được luân phiên 3 tháng một lần. Trong thời gian luân phiên, tổ chức phát hành chỉ nên bắt đầu lưu trữ khoá mới và thiết bị sẽ bắt đầu mã hoá thành khoá mới. Tổ chức phát hành phải hỗ trợ giải mã bằng cả khoá cũ và khoá mới trong một khoảng thời gian hợp lý để tránh thời gian ngừng hoạt động.
Giá trị AAD
Sử dụng các giá trị bối cảnh sau cho AAD.
| Trường | Giá trị bối cảnh |
|---|---|
| preAuthorizationCode | PreAuthorizationCode |
Để biết các giá trị AAD của các loại bằng chứng khác, hãy liên hệ với người đại diện của Google.
Véc tơ kiểm thử cho tính năng Mã hoá hai đầu thông tin xác thực kỹ thuật số
Véc tơ kiểm thử cho tính năng Mã hoá hai đầu mã nhận dạng kỹ thuật số là một tập hợp các thông báo được xác định trước và các phiên bản đã mã hoá của chúng. Các véc tơ này được dùng để kiểm thử tính chính xác của thuật toán mã hoá.
Tham số mã hoá HPKE:
KEM = DHKEM(P-256, HKDF-SHA256), id = 0x0010 KDF = HKDF-SHA256, id = 0x0001 AEAD = AES-256-GCM, id = 0x0002
- Dữ liệu liên kết bổ sung (AAD) là dữ liệu đầu vào cho HPKE CtxInfo, AAD cho mã hoá AES (đối xứng) là NULL (trống).
- Dữ liệu nhị phân trong cấu trúc JSON được mã hoá Base64, các giá trị trung gian trong tài liệu này được mã hoá Hex.
- Định dạng chữ ký trong tài liệu này:
- Thiết bị → Tổ chức phát hành, Tổ chức phát hành → Thiết bị:
COSE_Sign1
- Thiết bị → Tổ chức phát hành, Tổ chức phát hành → Thiết bị:
Ứng dụng → Tổ chức phát hành, Tổ chức phát hành → Ứng dụng
Mẫu để giao tiếp theo cả hai hướng.
Trường yêu cầu được mã hoá mẫu
Văn bản thuần tuý = "Hello, world!", dữ liệu được liên kết = "field1"
{
"field1": {
"encryptedValue": "yGFWT9MkgV6/IZfYUZjqGEf3k2M/HQhz9XnKWyI\u003d",
"encapsulatedKey": "BOpBC2LGh1RWk99iIm6ISsaPbtrNnu9hIgHeby5khXY6PG+ZmDOYmorEUne7uzhDmD6JCVYyME1+A8ueJ0CZvAI\u003d",
"signature": "hEOhASagWE+EcFByb29mT2ZPd25lcnNoaXB4GG9yZy5pc28uMTgwMTMtNS4yMDE5Lm1kbFggTOsHXzsgDgh/2chekltve8rJsFFb6DTtBjY98H58gjb0WEBUnwNT3gvbavE8QoaAKaELqF7JKqh0+ivPisQg6RerTmx8Zsk/tCjW/y1cxhGKatl2EjASemns67r1/lZumEqZ",
"recipientKeyId": "4D7E5D8B9460810A"
}
}Phân tích sâu:
>> 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
Khoá mã hoá thiết bị hoặc tổ chức phát hành mẫu
{
"deviceEncryptionKey": {
"publicKey": "BP5vgzZ+UTozzb6cmaZ8tkof2nh2Q2oHVAsggvc8V8SR6C9wWU6W9JEq0AmsGbou3jYw4BLftJP2XQeCB3uD/to\u003d",
"signature": "hEOhASagWE+EcFByb29mT2ZPd25lcnNoaXB4GG9yZy5pc28uMTgwMTMtNS4yMDE5Lm1kbFgg7641tE2UhuT5Tw9p1u9yEDpyYzDf1Jf9m//mIQfd4Kf0WEBB7PvHbfWozCYlFUqMJ6x+QWzoUU/OT10F1J1zoB8MTELPqfC9acF6IX5oMmsgLn2RtPS7QfylRqEAfG0FyYli",
"keyIdentifier": "F29BA6298BC93156D2D50EA7E2233FC4"
}
}Phân tích sâu:
>> 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
Khoá và chứng chỉ kiểm thử
Bạn có thể tham khảo các khoá kiểm thử sau trong quá trình triển khai.
Khoá nhận dạng (chữ ký) của tổ chức phát hành kiểm thử
Khoá riêng tư
-----BEGIN PRIVATE KEY----- MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCBSDJqogkjkqD7O8mX5 FcUvwOxFp0CxPOGnMD8BfSbcyw== -----END PRIVATE KEY-----
Chứng chỉ khoá công khai
-----BEGIN CERTIFICATE----- MIIBkDCCATegAwIBAgIIIi7oI6UIMEYwCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN MjIxMjEyMjAyNDA0WhcNMjMxMjEyMjAyNDA0WjBSMQ8wDQYDVQQLEwZXYWxsZXQx DzANBgNVBAoTBkdvb2dsZTEuMCwGA1UEAxMlVEVTVCBEQVRBIElzc3VlciBJZGVu dGl0eSAoU2lnbmF0dXJlKTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHV9uYlT wGV3UB+SM62fXcW6QzFfSoxq2gU34xG+XVMjxk9JDP9UTE34zX72WIfZ9nqRN9y/ SsbSxw5WrSQdGY2jEjAQMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBE AiBnMgsyJhdfelqpOFvT4H63dWSrNPxyrKEdxTwbYMfCKQIgOh2n2gCETH07tjxR l9HQfUcb6vqQY4EoPz2O0wNs6yc= -----END CERTIFICATE-----
Khoá mã hoá của tổ chức phát hành kiểm thử
Khoá riêng tư
-----BEGIN PRIVATE KEY----- MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCDZMUnwmygUdKXSujXS ye7YbVnk1Zy/qwnQtzlZs3pQFQ== -----END PRIVATE KEY-----
Chứng chỉ khoá công khai
-----BEGIN CERTIFICATE----- MIIBpjCCAUygAwIBAgIIIVwLEOrrzm0wCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN MjIxMjIyMjA1NzIzWhcNMjMxMjIyMjA1NzIzWjBIMQ8wDQYDVQQLEwZXYWxsZXQx DzANBgNVBAoTBkdvb2dsZTEkMCIGA1UEAxMbVEVTVCBEQVRBIElzc3VlciBFbmNy eXB0aW9uMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETx/HJq//wy6qEnW1tJ1n AYrefYWZ3lP+BJmWwOxF0m6jN1v0Z7Yxz4qw8oTktijih8iZEHRlUp3Kk9z196fq X6MxMC8wDgYDVR0PAQH/BAQDAgMYMB0GA1UdDgQWBBQKFb7K4eZjtp70DLoCHWe7 v/toXzAKBggqhkjOPQQDAgNIADBFAiEAwN1gOwiSx3999Zxc980eKv3p2H8kA4J6 9aWH6jiVaGMCIA7lLkebHFhD0fItGqXv1f5fwiMBV0605KZFh5+RBj/W -----END CERTIFICATE-----
Khoá nhận dạng (chữ ký) của thiết bị, hay còn gọi là Khoá thông tin xác thực
- Chuỗi chứng chỉ khoá công khai (X.509)
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
Tham khảo tài liệu Chứng thực khoá của Android để biết thêm thông tin chi tiết.
Khoá mã hoá thiết bị
Khoá riêng tư
-----BEGIN PRIVATE KEY----- MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCBJY8n7A1v+thMM63np m0wr+rAoMFEYmMZ+mWzBIj2CiQ== -----END PRIVATE KEY-----
Chứng chỉ khoá công khai
-----BEGIN CERTIFICATE----- MIIBhzCCAS2gAwIBAgIIAyJ+NkzueMUwCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN MjMwMTA5MjMwOTIwWhcNMjQwMTA5MjMwOTIwWjBIMQ8wDQYDVQQLEwZXYWxsZXQx DzANBgNVBAoTBkdvb2dsZTEkMCIGA1UEAxMbVEVTVCBEQVRBIERldmljZSBFbmNy eXB0aW9uMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/m+DNn5ROjPNvpyZpny2 Sh/aeHZDagdUCyCC9zxXxJHoL3BZTpb0kSrQCawZui7eNjDgEt+0k/ZdB4IHe4P+ 2qMSMBAwDgYDVR0PAQH/BAQDAgMYMAoGCCqGSM49BAMCA0gAMEUCIQD9syewRhvK KcyaM7fLwuuCidpiIVd/CZxFCLOo9adCPAIgNd3FMcT710KtYptJBZQ/i7N+C7G5 pLbHmAUoFwNuB2E= -----END CERTIFICATE-----