エンドツーエンドの暗号化

HPKE の概要

ハイブリッド公開鍵暗号化(HPKE)は、ペイロードを公開鍵に暗号化するために使用される暗号メカニズムです。ペイロード自体が対称鍵で暗号化され、HPKE が Diffie-Hellman 鍵交換を使用してこの対称鍵を導出するため、「ハイブリッド」と呼ばれます。

HPKE モード

  • ベース: 最も一般的なモード。
  • Auth: 送信者の秘密鍵を使用して認証します。
  • PSK: 認証に事前共有の高エントロピー キーを使用します。
  • AuthPSK: 送信者の秘密鍵と事前共有された高エントロピー鍵を組み合わせて認証を行います。

ベースモードのインタラクション(デバイスと発行機関)

デバイスが発行機関に機密データを送信しようとするシナリオを示す高レベルのフローは次のとおりです。

ステップ 1: 鍵の生成と交換

  • 発行元は暗号鍵ペア IE₍ₚₖ, ₛₖ₎ を作成します。ここで、ₚₖ は公開鍵、ₛₖ は秘密鍵です。
  • 発行機関は公開鍵(IEₚₖ)をデバイスに送信して共有します。

ステップ 2: 暗号化して送信する

デバイスが Hybrid-Encrypt(Data, IEₚₖ, Context) を実行します。

  • デバイスは、暗号化用のエフェメラル非対称鍵ペア ₍Eₚₖ, Eₛₖ₎ を生成します。
  • SS = ExtractAndExpand(Diffie-Hellman(IEₚₖ, Eₛₖ), _Context) という式を使用して、共有シークレット(SS)と呼ばれる対称 AES 鍵を導出します。
  • デバイスはこの共有シークレットを使用してデータを暗号化し、encData を生成します。
  • { encData, Eₚₖ } を共有し、発行元に送信します。

ステップ 3: 復号

現在、発行機関は IE₍ₚₖ, ₛₖ₎ と受け取った { encData, Eₚₖ } を保持しています。Hybrid-Decrypt(encData, Eₚₖ, IEₛₖ, Context) を実行します。

  • 次の数式を使用して、対称 AES 鍵(共有シークレット、SS)を導出します。SS = ExtractAndExpand(Diffie-Hellman(IEₛₖ, Eₚₖ), _Context)
  • SS を使用して encData を復号します。

用語

用語 定義と詳細
DIₚₖ 認証情報鍵証明書チェーン(デバイス ID 証明書): 認証情報を発行元に識別する CredentialKey の X.509 証明書チェーン。
  • 鍵とそのセキュリティ ハードウェアを記述する Android Keystore 構成証明拡張を含みます。
  • 認証情報の所有権を証明するために使用されます。
  • 発行者は、この証明書チェーンを慎重に検証しなければなりません(たとえば、ルート証明書がよく知られていること、Tag::IDENTITY_CREDENTIAL_KEY の存在、チャレンジの存在、正しい Tag::ATTESTATION_APPLICATION_ID、確認付きブートが有効であること、署名/失効ステータスを検証します)。
Aₚₖ 認証キー: 認証を必要とする動的 X.509 認証キー。それぞれ CredentialKey によって署名されます。
  • カード発行会社は、各鍵の静的認証データを生成してデバイスに送信し、デバイスは storeStaticAuthenticationData を介してそのデータを保存します。
  • この鍵は暗号化されるペイロードであり、E2EE に直接使用されるものではありません。
  • 省略不可の X.509 フィールドには、version(INTEGER 2)、serialNumber(INTEGER 1)、signature(ECDSA)、subject(CN を「Android Identity Credential Authentication Key」に設定)、issuer(CN を「Android Identity Credential Key」に設定)、validity(現在から 365 日後まで)、subjectPublicKeyInfo(証明書付き公開鍵を含む必要がある)が含まれます。
IE₍ₛₖ,ₚₖ₎ カード発行会社の暗号鍵ペア: カード発行会社によって生成される非対称鍵。デバイスはこの鍵を使用して、カード発行会社に向けたハイブリッド暗号化を行います。
II₍ₛₖ,ₚₖ₎ 発行者の ID 鍵ペア: 発行者によって生成される非対称鍵。デバイスはこの鍵を使用して、カード発行会社の ID を確認します。
DE₍ₛₖ,ₚₖ₎ デバイス暗号鍵ペア: リクエストごとにデバイスによって生成されるエフェメラル非対称鍵。カード発行会社はこの鍵を使用して、デバイスに向けたハイブリッド暗号化を行います。
FE₍ₛₖ,ₚₖ₎ フィールド暗号鍵: ハイブリッド暗号化中にフィールドごとに生成されるエフェメラル非対称鍵。

Google Digital Credential Provisioning API の E2EE

ステップ 1: 発行者の ID キーと暗号鍵を取得する

  • API エンドポイント: /getIdentityKey/getHybridEncryptionKey
  • 戻り値: IIₚₖIEₚₖ

ステップ 2: デバイス登録ナンスを取得する

  • デバイス参照 ID(deviceReferenceId)を生成します。
  • API エンドポイント: /getDeviceRegistrationNonce(deviceReferenceId) を呼び出します。
  • 戻り値: nonce

ステップ 3: デバイスを登録する

  • Android Identity Credential をセットアップします。
  • nonce が埋め込まれた DIₚₖ を返す IC.getCredentialKeyCertificateChain(nonce) を呼び出します。
  • API エンドポイント: /registerDevice(deviceReferenceId, DIₚₖ) を呼び出します。
  • 発行元は、この証明書チェーンを慎重に検証して、ルート証明書がよく知られていること、チャレンジが存在すること、ATTESTATION_APPLICATION_ID が想定されるアプリと一致すること、検証済みのブートが有効になっていること、署名または取り消しが有効であることを確認する必要があります。
  • 戻り値: ack

ステップ 4a: 校正リクエストを送信する

  • 各フィールドについて、次の操作を行います。
    • Hybrid-Encrypt(Data, IEₚₖ, Context=FieldName) を実行して encDataFEₚₖ を生成します。
    • IC.proveOwnership(SHA-256(Data + IEₚₖ)) を呼び出して、sigData(CredentialKey によって署名され、ペイロードが ProofofOwnership に設定された COSE_Sign1 データ構造)を取得します。
  • API エンドポイント: /proofUser([encData, sigData, FEₚₖ]) を呼び出します。
  • 発行元は DIₚₖ を使用して sigData を検証します。
  • 発行機関は Hybrid-Decrypt(encData, FEₚₖ, IEₛₖ, Context=FieldName) を実行して Data を生成します。
  • 戻り値: ack

ステップ 4b: 校正ステータスの更新

  • deviceReferenceIdproofingId を使用して、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ₚₖ) 経由で発行者に deviceReferenceIdproofingIdcredentialIdsigDEₚₖ を送信します。
  • 発行者側:
    • DIₚₖ を使用して sigDEₚₖ を確認します。
    • 認証情報(PersonalizationData + AccessControlProfiles)を暗号化します。
    • Hybrid-Encrypt(Cred, DEₚₖ, Context=FieldName) を実行して encCredFEₚₖ を生成します。
    • IIₛₖ で COSE_Sign1 SHA-256(Cred + DEₚₖ) に署名して sigCred を作成します。
    • encCredsigCredFEₚₖ を返します。
  • デバイス側:
    • IIₚₖ を使用して sigCred を確認します。
    • Hybrid-Decrypt(encCred, FEₚₖ, DEₛₖ, Context=FieldName) を実行して Cred を抽出します。
    • WC.personalize(Cred) を呼び出して sigCredReceipt(CredentialKey で署名された COSE_Sign1、ペイロード ProofOfProvisioning)を取得します。
    • Hybrid-Encrypt(sigCredReceipt, DEₛₖ, Context=FieldName) を実行して encReceiptFE1ₚₖ を生成します。
    • IC.proveOwnership(SHA-256(encReceipt + IEₚₖ)) を呼び出して sigReceipt(CredentialKey で署名された COSE_Sign1、ペイロード ProofofOwnership)を取得します。
    • 認証キーを生成します [Aₚₖ]。

ステップ 6: MSO と StaticAuthData を生成する

  • デバイス側:
    • 各認証鍵に対して、Hybrid-Encrypt(AuthKey, IEₚₖ, Context=FieldName) を実行して encAuthKeyFEₚₖ を生成します。
    • IC.proveOwnership(SHA-256(AuthKey + IEₚₖ)) を呼び出して sigAuthKey を取得します。
    • API エンドポイント: /provisionMSOs(.., encReceipt, sigReceipt, [encAuthKey, sigAuthKey, FEₚₖ], DEₚₖ, sigDEₚₖ) を呼び出します。
  • 発行者側:
    • sigReceiptsigDEₚₖDIₚₖ と照らし合わせて、領収書を検証します。
    • [encAuthKey, sigAuthKey, FEₚₖ] について、Hybrid-Decrypt(encAuthKey, FEₚₖ, IEₛₖ, Context=FieldName) を実行して AuthKey を抽出します。
    • MSO(AuthKey を含む)を生成し、digestIdMapping と issuerAuth を含む staticAuthData(SAD)を生成します。
    • Hybrid-Encrypt(SAD, DEₚₖ, Context=FieldName) を実行して encSADFEₚₖ を生成します。
    • IIₛₖ を使用して COSE_Sign1 SHA-256(SAD + DEₚₖ) で署名し、sigSAD を生成します。
    • [encSAD, sigSAD, FEₚₖ] を返します。
  • デバイス側(最終):
    • 返された encSAD, sigSAD, FEₚₖ ごとに、sigSADIIₚₖ で検証します。
    • Hybrid-Decrypt(encSAD, FEₚₖ, DEₛₖ, Context=FieldName) を実行して SAD を抽出します。
    • SAD を使用して storeStaticAuthenticationData に電話をかけ、プロセスを完了します。

ローテーションの要件

カード発行会社の ID 鍵は、年 1 回ローテーションする必要があります。ローテーション期間中、カード発行会社は新旧の両方の鍵をホストする必要があり、デバイスは両方の鍵を信頼します。カード発行会社が新しい ID 鍵の使用に完全に切り替えた後は、カード発行会社は古い鍵のホストを停止する必要があります。デバイスは古い鍵を信頼しなくなります。

カード発行会社のハイブリッド暗号鍵は 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 でエンコードされます。このドキュメントの中間値は 16 進数でエンコードされています。
  • このドキュメントの署名形式:
    • デバイス → 発行者、発行者 → デバイス: 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

テスト鍵と証明書

実装時に次のテスト鍵をご参照ください。

発行者のテスト用 ID(署名)鍵

  • 秘密鍵

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

デバイスの ID(署名)鍵(別名: 認証情報鍵)

  • 公開鍵証明書チェーン(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-----