Enkripsi menyeluruh

Ringkasan HPKE

Enkripsi Kunci Publik Hybrid (HPKE) adalah mekanisme kriptografi yang digunakan untuk mengenkripsi payload ke kunci publik. Disebut "hybrid" karena payload itu sendiri dienkripsi dengan kunci simetris, dan HPKE mendapatkan kunci simetris ini menggunakan pertukaran kunci Diffie-Hellman.

Mode HPKE

  • Dasar: Mode yang paling umum.
  • Auth: Menggunakan kunci pribadi pengirim untuk autentikasi.
  • PSK: Menggunakan kunci pre-shared dengan entropi tinggi untuk autentikasi.
  • AuthPSK: Menggabungkan kunci pribadi pengirim dan kunci pra-bagi dengan entropi tinggi untuk autentikasi.

Interaksi Mode Dasar (Perangkat & Otoritas Penerbit)

Berikut adalah alur tingkat tinggi yang menggambarkan skenario saat perangkat ingin mengirim data sensitif ke Otoritas Penerbit.

Langkah 1: Pembuatan dan Pertukaran Kunci

  • Otoritas Penerbit membuat Pasangan Kunci Enkripsi: IE₍ₚₖ, ₛₖ₎ dengan ₚₖ adalah kunci publik dan ₛₖ adalah kunci pribadi.
  • Otoritas Penerbit mengirim dan membagikan kunci publik (IEₚₖ) ke Perangkat.

Langkah 2: Enkripsi dan Kirim

Perangkat menjalankan Hybrid-Encrypt(Data, IEₚₖ, Context).

  • Perangkat membuat pasangan kunci Asimetris Sementara untuk Enkripsi: ₍Eₚₖ, Eₛₖ₎.
  • Proses ini mendapatkan kunci AES simetris, yang dikenal sebagai rahasia bersama (SS), menggunakan rumus: SS = ExtractAndExpand(Diffie-Hellman(IEₚₖ, Eₛₖ), _Context).
  • Perangkat mengenkripsi data menggunakan secret bersama ini untuk menghasilkan encData.
  • Sistem ini membagikan { encData, Eₚₖ } dan mengirimkannya ke Otoritas Penerbit.

Langkah 3: Mendekripsi

Otoritas Penerbit saat ini memegang IE₍ₚₖ, ₛₖ₎ dan { encData, Eₚₖ } yang diterima. Fungsi ini mengeksekusi Hybrid-Decrypt(encData, Eₚₖ, IEₛₖ, Context).

  • Kunci ini mendapatkan kunci AES simetris (rahasia bersama, SS) menggunakan rumus: SS = ExtractAndExpand(Diffie-Hellman(IEₛₖ, Eₚₖ), _Context).
  • Perangkat mendekripsi encData menggunakan SS.

Terminologi

Istilah Definisi & Detail
DIₚₖ Rantai Sertifikat Kunci Kredensial (Sertifikat Identitas Perangkat): Rantai sertifikat X.509 untuk CredentialKey yang mengidentifikasi kredensial ke otoritas penerbit.
  • Berisi ekstensi pengesahan Android Keystore yang menjelaskan kunci dan hardware keamanannya.
  • Digunakan untuk membuktikan kepemilikan kredensial.
  • Penerbit HARUS memeriksa rantai sertifikat ini dengan cermat (misalnya, memverifikasi bahwa sertifikat root sudah dikenal, keberadaan Tag::IDENTITY_CREDENTIAL_KEY, keberadaan tantangan, Tag::ATTESTATION_APPLICATION_ID yang benar, boot terverifikasi diaktifkan, dan status tanda tangan/pembatalan).
Aₚₖ Kunci Autentikasi: Kunci autentikasi X.509 dinamis yang memerlukan sertifikasi, yang masing-masing ditandatangani oleh CredentialKey.
  • Penerbit membuat data autentikasi statis untuk setiap kunci, mengirimkannya ke perangkat, dan perangkat menyimpannya melalui storeStaticAuthenticationData.
  • Kunci ini adalah payload yang akan dienkripsi, bukan digunakan langsung untuk E2EE.
  • Kolom X.509 non-opsional mencakup: version (INTEGER 2), serialNumber (INTEGER 1), signature (ECDSA), subject (CN ditetapkan ke "Android Identity Credential Authentication Key"), issuer (CN ditetapkan ke "Android Identity Credential Key"), validity (waktu saat ini hingga 365 hari ke depan), dan subjectPublicKeyInfo (harus berisi kunci publik yang dibuktikan).
IE₍ₛₖ,ₚₖ₎ Pasangan Kunci Enkripsi Penerbit: Kunci asimetris yang dibuat oleh Penerbit. Perangkat menggunakan kunci ini untuk melakukan Enkripsi Hybrid ke Penerbit.
II₍ₛₖ,ₚₖ₎ Pasangan Kunci Identitas Penerbit: Kunci asimetris yang dibuat oleh Penerbit. Perangkat menggunakan kunci ini untuk memverifikasi identitas Penerbit.
DE₍ₛₖ,ₚₖ₎ Pasangan Kunci Enkripsi Perangkat: Kunci asimetris sementara yang dibuat oleh Perangkat per permintaan. Penerbit menggunakan kunci ini untuk melakukan Enkripsi Hybrid ke Perangkat.
FE₍ₛₖ,ₚₖ₎ Kunci Enkripsi Bidang: Kunci asimetris sementara yang dibuat per bidang selama Enkripsi Hybrid.

E2EE di Google Digital Credential Provisioning API

Langkah 1: Dapatkan Kunci Identitas Penerbit & Kunci Enkripsi

  • Endpoint API: /getIdentityKey, /getHybridEncryptionKey.
  • Hasil: IIₚₖ, IEₚₖ.

Langkah 2: Dapatkan Nonce Pendaftaran Perangkat

  • Buat ID Referensi Perangkat (deviceReferenceId).
  • Endpoint API: Panggil /getDeviceRegistrationNonce(deviceReferenceId).
  • Hasil: nonce.

Langkah 3: Daftarkan Perangkat

  • Siapkan Kredensial Identitas Android.
  • Panggil IC.getCredentialKeyCertificateChain(nonce) yang menampilkan DIₚₖ yang disematkan nonce.
  • Endpoint API: Panggil /registerDevice(deviceReferenceId, DIₚₖ).
  • Otoritas Penerbit harus memeriksa rantai sertifikat ini dengan cermat untuk memastikan sertifikat root sudah dikenal, tantangan ada, ATTESTATION_APPLICATION_ID cocok dengan aplikasi yang diharapkan, boot terverifikasi diaktifkan, dan tanda tangan atau pencabutan valid.
  • Hasil: ack.

Langkah 4a: Kirim Permintaan Pembuktian

  • Untuk setiap kolom:
    • Jalankan Hybrid-Encrypt(Data, IEₚₖ, Context=FieldName) untuk membuat encData dan FEₚₖ.
    • Panggil IC.proveOwnership(SHA-256(Data + IEₚₖ)) untuk mendapatkan sigData (struktur data COSE_Sign1 yang ditandatangani oleh CredentialKey, dengan payload yang ditetapkan ke ProofofOwnership).
  • Endpoint API: Panggil /proofUser([encData, sigData, FEₚₖ]).
  • Otoritas Penerbit memverifikasi sigData menggunakan DIₚₖ.
  • Otoritas Penerbit menjalankan Hybrid-Decrypt(encData, FEₚₖ, IEₛₖ, Context=FieldName) untuk membuat Data.
  • Hasil: ack.

Langkah 4b: Pembaruan Status Pemeriksaan

  • Memberi tahu Google tentang pembaruan status Pembuktian menggunakan deviceReferenceId dan proofingId.
  • Endpoint API: Panggil /notifyProofingStatusUpdateAvailable(...).
  • Server Google mengambil status pembuktian dari penerbit dengan memanggil /getProofingStatus(deviceReferenceId, proofingId).

Langkah 5: Sediakan Kredensial

  • Panggil IC.proveOwnership(SHA-256(DEₚₖ)) untuk mendapatkan sigDEₚₖ (struktur COSE_Sign1 yang ditandatangani oleh CredentialKey/DIₛₖ dengan payload ProofofOwnership).
  • Endpoint API: Kirim deviceReferenceId, proofingId, credentialId, dan sigDEₚₖ ke Penerbit melalui /provisionCredential(dRId, pId, cId, DEₚₖ, sigDEₚₖ).
  • Sisi Penerbit:
    • Verifikasi sigDEₚₖ dengan DIₚₖ.
    • Enkripsi Kredensial (PersonalizationData + AccessControlProfiles).
    • Jalankan Hybrid-Encrypt(Cred, DEₚₖ, Context=FieldName) untuk membuat encCred dan FEₚₖ.
    • Buat sigCred dengan menandatangani COSE_Sign1 SHA-256(Cred + DEₚₖ) dengan IIₛₖ.
    • Kembalikan encCred, sigCred, FEₚₖ.
  • Sisi Perangkat:
    • Verifikasi sigCred menggunakan IIₚₖ.
    • Jalankan Hybrid-Decrypt(encCred, FEₚₖ, DEₛₖ, Context=FieldName) untuk mengekstrak Cred.
    • Panggil WC.personalize(Cred) untuk mendapatkan sigCredReceipt (COSE_Sign1 yang ditandatangani oleh CredentialKey, payload ProofOfProvisioning).
    • Jalankan Hybrid-Encrypt(sigCredReceipt, DEₛₖ, Context=FieldName) yang menghasilkan encReceipt dan FE1ₚₖ.
    • Panggil IC.proveOwnership(SHA-256(encReceipt + IEₚₖ)) untuk mendapatkan sigReceipt (COSE_Sign1 yang ditandatangani oleh CredentialKey, payload ProofofOwnership).
    • Buat Kunci Auth [Aₚₖ].

Langkah 6: Buat MSO & StaticAuthData

  • Sisi Perangkat:
    • Untuk setiap Kunci Auth: Jalankan Hybrid-Encrypt(AuthKey, IEₚₖ, Context=FieldName) untuk membuat encAuthKey dan FEₚₖ.
    • Panggil IC.proveOwnership(SHA-256(AuthKey + IEₚₖ)) untuk mendapatkan sigAuthKey.
    • Endpoint API: Panggil /provisionMSOs(.., encReceipt, sigReceipt, [encAuthKey, sigAuthKey, FEₚₖ], DEₚₖ, sigDEₚₖ).
  • Sisi Penerbit:
    • Verifikasi sigReceipt dan sigDEₚₖ berdasarkan DIₚₖ untuk memverifikasi tanda terima.
    • Untuk setiap [encAuthKey, sigAuthKey, FEₚₖ]: Jalankan Hybrid-Decrypt(encAuthKey, FEₚₖ, IEₛₖ, Context=FieldName) untuk mengekstrak AuthKey.
    • Buat MSO (termasuk AuthKey) dan buat staticAuthData (SAD), termasuk digestIdMapping dan issuerAuth.
    • Jalankan Hybrid-Encrypt(SAD, DEₚₖ, Context=FieldName) untuk membuat encSAD dan FEₚₖ.
    • Tanda tangani menggunakan COSE_Sign1 SHA-256(SAD + DEₚₖ) dengan IIₛₖ untuk menghasilkan sigSAD.
    • Kembalikan [encSAD, sigSAD, FEₚₖ].
  • Sisi Perangkat (Akhir):
    • Untuk setiap encSAD, sigSAD, FEₚₖ yang ditampilkan: Verifikasi sigSAD dengan IIₚₖ.
    • Jalankan Hybrid-Decrypt(encSAD, FEₚₖ, DEₛₖ, Context=FieldName) untuk mengekstrak SAD.
    • Hubungi storeStaticAuthenticationData dengan SAD untuk menyelesaikan proses.

Persyaratan Rotasi

Kunci Identitas Penerbit harus dirotasi setahun sekali. Selama periode rotasi, penerbit harus menghosting kunci lama dan baru, dan perangkat akan memercayai kedua kunci tersebut. Setelah Penerbit sepenuhnya beralih menggunakan Kunci Identitas Penerbit yang baru, Penerbit harus berhenti menghosting kunci lama dan perangkat tidak akan lagi memercayainya.

Kunci Enkripsi Hybrid Penerbit harus dirotasi sekali setiap 3 bulan. Selama periode rotasi, penerbit harus mulai menghosting hanya kunci baru, dan perangkat akan mulai mengenkripsi ke kunci baru. Penerbit harus mendukung dekripsi menggunakan kunci lama dan baru selama jangka waktu yang wajar, untuk menghindari periode nonaktif.

Nilai AAD

Gunakan nilai konteks berikut untuk AAD.

Kolom Nilai Konteks
preAuthorizationCode PreAuthorizationCode

Untuk nilai AAD jenis bukti lainnya, hubungi perwakilan Google Anda.

Vektor pengujian untuk Enkripsi End-to-End Kredensial Digital

Vektor pengujian untuk Enkripsi End-to-End ID Digital adalah sekumpulan pesan yang telah ditentukan sebelumnya dan versi terenkripsinya yang digunakan untuk menguji kebenaran algoritma enkripsi.

Parameter enkripsi HPKE:

  KEM = DHKEM(P-256, HKDF-SHA256), id = 0x0010
  KDF = HKDF-SHA256, id = 0x0001
  AEAD = AES-256-GCM, id = 0x0002
  • Data Tambahan Terkait (AAD) adalah input ke HPKE CtxInfo, AAD untuk enkripsi AES (simetris) adalah NULL (kosong).
  • Data biner dalam struktur JSON dienkode Base64, nilai perantara dalam dokumen ini dienkode Hex.
  • Format tanda tangan dalam dokumentasi ini:
    • Perangkat → Penerbit, Penerbit → Perangkat: COSE_Sign1

Klien → Penerbit, Penerbit → Klien

Contoh untuk komunikasi dua arah.

Contoh Kolom Permintaan Terenkripsi

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"
  }
}

Pembahasan mendalam:

>> 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

Contoh Kunci Enkripsi Perangkat atau Penerbit

{
  "deviceEncryptionKey": {
    "publicKey": "BP5vgzZ+UTozzb6cmaZ8tkof2nh2Q2oHVAsggvc8V8SR6C9wWU6W9JEq0AmsGbou3jYw4BLftJP2XQeCB3uD/to\u003d",
    "signature": "hEOhASagWE+EcFByb29mT2ZPd25lcnNoaXB4GG9yZy5pc28uMTgwMTMtNS4yMDE5Lm1kbFgg7641tE2UhuT5Tw9p1u9yEDpyYzDf1Jf9m//mIQfd4Kf0WEBB7PvHbfWozCYlFUqMJ6x+QWzoUU/OT10F1J1zoB8MTELPqfC9acF6IX5oMmsgLn2RtPS7QfylRqEAfG0FyYli",
    "keyIdentifier": "F29BA6298BC93156D2D50EA7E2233FC4"
  }
}

Pembahasan mendalam:

>> 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

Kunci dan Sertifikat Pengujian

Anda dapat merujuk ke kunci pengujian berikut selama penerapan.

Kunci Identitas Penerbit (Tanda Tangan) Uji Coba

  • Kunci Pribadi

    -----BEGIN PRIVATE KEY-----
    MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCBSDJqogkjkqD7O8mX5
    FcUvwOxFp0CxPOGnMD8BfSbcyw==
    -----END PRIVATE KEY-----

  • Public Key Certificate

    -----BEGIN CERTIFICATE-----
    MIIBkDCCATegAwIBAgIIIi7oI6UIMEYwCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs
    Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN
    MjIxMjEyMjAyNDA0WhcNMjMxMjEyMjAyNDA0WjBSMQ8wDQYDVQQLEwZXYWxsZXQx
    DzANBgNVBAoTBkdvb2dsZTEuMCwGA1UEAxMlVEVTVCBEQVRBIElzc3VlciBJZGVu
    dGl0eSAoU2lnbmF0dXJlKTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHV9uYlT
    wGV3UB+SM62fXcW6QzFfSoxq2gU34xG+XVMjxk9JDP9UTE34zX72WIfZ9nqRN9y/
    SsbSxw5WrSQdGY2jEjAQMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBE
    AiBnMgsyJhdfelqpOFvT4H63dWSrNPxyrKEdxTwbYMfCKQIgOh2n2gCETH07tjxR
    l9HQfUcb6vqQY4EoPz2O0wNs6yc=
    -----END CERTIFICATE-----

Kunci Enkripsi Penerbit Uji Coba

  • Kunci Pribadi

    -----BEGIN PRIVATE KEY-----
    MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCDZMUnwmygUdKXSujXS
    ye7YbVnk1Zy/qwnQtzlZs3pQFQ==
    -----END PRIVATE KEY-----

  • Public Key Certificate

    -----BEGIN CERTIFICATE-----
    MIIBpjCCAUygAwIBAgIIIVwLEOrrzm0wCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs
    Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN
    MjIxMjIyMjA1NzIzWhcNMjMxMjIyMjA1NzIzWjBIMQ8wDQYDVQQLEwZXYWxsZXQx
    DzANBgNVBAoTBkdvb2dsZTEkMCIGA1UEAxMbVEVTVCBEQVRBIElzc3VlciBFbmNy
    eXB0aW9uMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETx/HJq//wy6qEnW1tJ1n
    AYrefYWZ3lP+BJmWwOxF0m6jN1v0Z7Yxz4qw8oTktijih8iZEHRlUp3Kk9z196fq
    X6MxMC8wDgYDVR0PAQH/BAQDAgMYMB0GA1UdDgQWBBQKFb7K4eZjtp70DLoCHWe7
    v/toXzAKBggqhkjOPQQDAgNIADBFAiEAwN1gOwiSx3999Zxc980eKv3p2H8kA4J6
    9aWH6jiVaGMCIA7lLkebHFhD0fItGqXv1f5fwiMBV0605KZFh5+RBj/W
    -----END CERTIFICATE-----

Kunci Identitas Perangkat (Tanda Tangan), alias Kunci Kredensial

  • Rantai Sertifikat Kunci Publik (X.509)
    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

Lihat dokumentasi Pengesahan Kunci Android untuk mengetahui detail selengkapnya.

Kunci Enkripsi Perangkat

  • Kunci Pribadi

    -----BEGIN PRIVATE KEY-----
    MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCBJY8n7A1v+thMM63np
    m0wr+rAoMFEYmMZ+mWzBIj2CiQ==
    -----END PRIVATE KEY-----

  • Public Key Certificate

    -----BEGIN CERTIFICATE-----
    MIIBhzCCAS2gAwIBAgIIAyJ+NkzueMUwCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs
    Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN
    MjMwMTA5MjMwOTIwWhcNMjQwMTA5MjMwOTIwWjBIMQ8wDQYDVQQLEwZXYWxsZXQx
    DzANBgNVBAoTBkdvb2dsZTEkMCIGA1UEAxMbVEVTVCBEQVRBIERldmljZSBFbmNy
    eXB0aW9uMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/m+DNn5ROjPNvpyZpny2
    Sh/aeHZDagdUCyCC9zxXxJHoL3BZTpb0kSrQCawZui7eNjDgEt+0k/ZdB4IHe4P+
    2qMSMBAwDgYDVR0PAQH/BAQDAgMYMAoGCCqGSM49BAMCA0gAMEUCIQD9syewRhvK
    KcyaM7fLwuuCidpiIVd/CZxFCLOo9adCPAIgNd3FMcT710KtYptJBZQ/i7N+C7G5
    pLbHmAUoFwNuB2E=
    -----END CERTIFICATE-----