Сквозное шифрование

Обзор HPKE

Гибридное шифрование с открытым ключом (HPKE) — это криптографический механизм, используемый для шифрования полезной нагрузки с помощью открытого ключа. Он называется «гибридным», потому что сама полезная нагрузка шифруется симметричным ключом, а HPKE вычисляет этот симметричный ключ с помощью обмена ключами Диффи-Хеллмана.

Режимы HPKE

  • Базовый режим: наиболее распространенный режим.
  • Аутентификация: Для аутентификации используется закрытый ключ отправителя.
  • PSK: Использует предварительно согласованный ключ с высокой энтропией для аутентификации.
  • AuthPSK: Объединяет закрытый ключ отправителя и предварительно согласованный ключ с высокой энтропией для аутентификации.

Взаимодействие в базовом режиме (устройство и орган, выдающий сертификат)

Ниже представлена ​​схема работы устройства, описывающая сценарий, в котором устройство хочет отправить конфиденциальные данные в уполномоченный орган.

Шаг 1: Генерация и обмен ключами

  • Орган, выдающий ключи, создает пару ключей шифрования: IE₍ₚₖ, ₛₖ₎ , где ₚₖ — открытый ключ, а ₛₖ — закрытый ключ.
  • Эмитент отправляет и передает открытый ключ ( IEₚₖ ) устройству.

Шаг 2: Зашифруйте и отправьте.

Устройство выполняет Hybrid-Encrypt(Data, IEₚₖ, Context) .

  • Устройство генерирует временную асимметричную пару ключей для шифрования: ₍Eₚₖ, Eₛₖ₎ .
  • Он вычисляет симметричный ключ AES, известный как общий секрет (SS), используя формулу: SS = ExtractAndExpand(Diffie-Hellman(IEₚₖ, Eₛₖ), _Context) .
  • Устройство шифрует данные, используя этот общий секретный ключ, для создания encData .
  • Он передает { encData, Eₚₖ } и отправляет его в эмиссионный центр.

Шаг 3: Расшифровка

В настоящее время эмитирующий центр владеет IE₍ₚₖ, ₛₖ₎ и полученными данными { encData, Eₚₖ } . Он выполняет Hybrid-Decrypt(encData, Eₚₖ, IEₛₖ, Context) .

  • Он вычисляет симметричный ключ AES (общий секрет, SS) по формуле: SS = ExtractAndExpand(Diffie-Hellman(IEₛₖ, Eₚₖ), _Context) .
  • Он расшифровывает encData с помощью SS.

Терминология

Срок Определение и подробности
ДИₚₖ Цепочка сертификатов ключа учетных данных (сертификаты идентификации устройства): цепочка сертификатов X.509 для ключа учетных данных, которая идентифицирует учетные данные для выдающего центра.
  • Содержит расширение для аттестации Android Keystore, описывающее ключ и его аппаратное обеспечение безопасности.
  • Используется для подтверждения права собственности на учетные данные.
  • Эмитент ОБЯЗАН тщательно изучить эту цепочку сертификатов (например, проверить, известен ли корневой сертификат, наличие Tag::IDENTITY_CREDENTIAL_KEY, наличие запроса подтверждения, правильность Tag::ATTESTATION_APPLICATION_ID, подтверждена ли возможность загрузки и статус подписи/отзыва).
Аₚₖ Ключи аутентификации: динамические ключи аутентификации X.509, требующие сертификации, каждый из которых подписан CredentialKey.
  • Эмитент генерирует статические данные аутентификации для каждого ключа, отправляет их на устройство, а устройство сохраняет их через storeStaticAuthenticationData .
  • Этот ключ представляет собой полезную нагрузку, которая будет зашифрована, а не использована напрямую для сквозного шифрования (E2EE).
  • К обязательным полям X.509 относятся: версия (INTEGER 2), серийный номер (INTEGER 1), подпись (ECDSA), субъект (CN установлен на "Ключ аутентификации учетных данных Android"), издатель (CN установлен на "Ключ учетных данных Android"), срок действия (от текущего времени до 365 дней в будущем) и информация об открытом ключе субъекта (должна содержать подтвержденный открытый ключ).
IE₍ₛₖ,ₚₖ₎ Пара ключей шифрования эмитента: асимметричный ключ, сгенерированный эмитентом. Устройство использует этот ключ для выполнения гибридного шифрования в отношении эмитента.
II₍ₛₖ,ₚₖ₎ Пара идентификационных ключей эмитента: асимметричный ключ, сгенерированный эмитентом. Устройство использует этот ключ для проверки личности эмитента.
DE₍ₛₖ,ₚₖ₎ Пара ключей шифрования устройства: временный асимметричный ключ, генерируемый устройством по запросу. Эмитент использует этот ключ для выполнения гибридного шифрования на устройстве.
FE₍ₛₖ,ₚₖ₎ Ключ шифрования поля: временный асимметричный ключ, генерируемый для каждого поля в процессе гибридного шифрования.

Сквозное шифрование (E2EE) в API предоставления цифровых учетных данных Google

Шаг 1: Получите ключ идентификации эмитента и ключ шифрования.

  • API-интерфейсы: /getIdentityKey , /getHybridEncryptionKey .
  • Возвращает: IIₚₖ , IEₚₖ .

Шаг 2: Получите одноразовый код для регистрации устройства (Nonce).

  • Сгенерируйте идентификатор устройства ( deviceReferenceId ).
  • Конечная точка API: Вызов /getDeviceRegistrationNonce(deviceReferenceId) .
  • Возвращает: nonce .

Шаг 3: Регистрация устройства

  • Настройте учетные данные Android Identity.
  • Вызовите IC.getCredentialKeyCertificateChain(nonce) , который возвращает DIₚₖ , встроенный в nonce.
  • Конечная точка API: Вызов /registerDevice(deviceReferenceId, DIₚₖ) .
  • Орган, выдающий сертификаты, должен тщательно проверить эту цепочку сертификатов, чтобы убедиться, что корневой сертификат известен, запрос подтверждения присутствует, ATTESTATION_APPLICATION_ID соответствует ожидаемому приложению, подтвержденная загрузка включена, а подписи или аннулирования действительны.
  • Возвращает: ack .

Шаг 4а: Отправьте запрос на проверку.

  • Для каждого поля:
    • Выполните команду Hybrid-Encrypt(Data, IEₚₖ, Context=FieldName) , чтобы сгенерировать encData и FEₚₖ .
    • Вызовите IC.proveOwnership(SHA-256(Data + IEₚₖ)) , чтобы получить sigData (структуру данных COSE_Sign1, подписанную CredentialKey, с полезной нагрузкой, установленной в ProofofOwnership).
  • Конечная точка API: Вызов /proofUser([encData, sigData, FEₚₖ]) .
  • Выдающий орган проверяет sigData с помощью DIₚₖ .
  • Эмитентный орган выполняет Hybrid-Decrypt(encData, FEₚₖ, IEₛₖ, Context=FieldName) для генерации Data .
  • Возвращает: ack .

Шаг 4b: Обновление статуса проверки

  • Уведомите Google об обновлении статуса проверки орфографии, используя deviceReferenceId и proofingId .
  • Конечная точка API: вызов /notifyProofingStatusUpdateAvailable(...) .
  • Серверы Google получают статус проверки от эмитента, вызывая функцию /getProofingStatus(deviceReferenceId, proofingId) .

Шаг 5: Предоставление учетных данных

  • Вызовите IC.proveOwnership(SHA-256(DEₚₖ)) , чтобы получить sigDEₚₖ (структура COSE_Sign1, подписанная CredentialKey/DIₛₖ с полезной нагрузкой ProofofOwnership).
  • Конечная точка API: Отправьте deviceReferenceId , proofingId , credentialId и sigDEₚₖ эмитенту через /provisionCredential(dRId, pId, cId, DEₚₖ, sigDEₚₖ) .
  • Сторона эмитента:
    • Проверьте sigDEₚₖ с помощью DIₚₖ .
    • Зашифруйте учетные данные (PersonalizationData + AccessControlProfiles).
    • Выполните команду Hybrid-Encrypt(Cred, DEₚₖ, Context=FieldName) , чтобы сгенерировать encCred и FEₚₖ .
    • Создайте sigCred , подписав COSE_Sign1 SHA-256(Cred + DEₚₖ) с помощью IIₛₖ .
    • Возвращать encCred , sigCred , FEₚₖ .
  • Со стороны устройства:
    • Проверьте sigCred с помощью IIₚₖ .
    • Выполните команду Hybrid-Decrypt(encCred, FEₚₖ, DEₛₖ, Context=FieldName) , чтобы извлечь Cred .
    • Вызовите WC.personalize(Cred) , чтобы получить sigCredReceipt (COSE_Sign1 подписано CredentialKey, полезная нагрузка ProofOfProvisioning).
    • Выполнить Hybrid-Encrypt(sigCredReceipt, DEₛₖ, Context=FieldName) сгенерировав encReceipt и FE1ₚₖ .
    • Вызовите IC.proveOwnership(SHA-256(encReceipt + IEₚₖ)) , чтобы получить sigReceipt (COSE_Sign1, подписанный CredentialKey, полезная нагрузка ProofofOwnership).
    • Сгенерировать ключи аутентификации [ Aₚₖ ].

Шаг 6: Сгенерируйте MSO и StaticAuthData

  • Со стороны устройства:
    • Для каждого ключа аутентификации выполните команду Hybrid-Encrypt(AuthKey, IEₚₖ, Context=FieldName) чтобы сгенерировать encAuthKey и FEₚₖ .
    • Для получения sigAuthKey вызовите IC.proveOwnership(SHA-256(AuthKey + IEₚₖ)) .
    • Конечная точка API: Вызов /provisionMSOs(.., encReceipt, sigReceipt, [encAuthKey, sigAuthKey, FEₚₖ], DEₚₖ, sigDEₚₖ) .
  • Сторона эмитента:
    • Для подтверждения получения проверьте значения sigReceipt и sigDEₚₖ по сравнению с DIₚₖ .
    • Для каждого [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ₚₖ : Проверьте sigSAD с помощью IIₚₖ .
    • Выполните команду Hybrid-Decrypt(encSAD, FEₚₖ, DEₛₖ, Context=FieldName) , чтобы извлечь SAD .
    • Для завершения процесса вызовите storeStaticAuthenticationData с использованием SAD .

Требования к ротации

Идентификационный ключ эмитента следует менять раз в год. В течение периода смены эмитент должен хранить старый и новый ключи, и устройство будет доверять обоим. После того, как эмитент полностью перейдет на использование нового идентификационного ключа, он должен прекратить хранение старого ключа, и устройство больше не будет ему доверять.

Гибридный ключ шифрования эмитента следует менять каждые 3 месяца. В течение периода смены эмитент должен использовать только новый ключ, и устройство начнет шифровать с помощью нового ключа. Эмитент должен поддерживать расшифровку с использованием как старого, так и нового ключа в течение разумного периода времени, чтобы избежать простоев.

Значения AAD

Используйте следующие контекстные значения для AAD.

Поля Контекстные значения
код предварительной авторизации Код предварительной авторизации

Для получения информации о значениях AAD для других типов доказательств обратитесь к представителю Google.

Тестовые векторы для сквозного шифрования цифровых учетных данных

Тестовые векторы для сквозного шифрования цифровых удостоверений личности представляют собой набор предопределенных сообщений и их зашифрованных версий, используемых для проверки корректности алгоритма шифрования.

Параметры шифрования HPKE:

  KEM = DHKEM(P-256, HKDF-SHA256), id = 0x0010
  KDF = HKDF-SHA256, id = 0x0001
  AEAD = AES-256-GCM, id = 0x0002
  • Дополнительные ассоциированные данные (AAD) являются входными данными для HPKE CtxInfo; AAD для AES (симметричного) шифрования равен 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-----