Используйте ключ AWS KMS AES-GCM с алгоритмом AES-CBC от iOS CommonCrypto - PullRequest
1 голос
/ 24 сентября 2019

Насколько я могу судить, ключи данных AWS KMS являются ключами AES-GCM.(источник: https://d0.awsstatic.com/whitepapers/KMS-Cryptographic-Details.pdf стр. 13)

Означает ли это, что я должен использовать AES-GCM для шифрования данных с ними, или будет работать алгоритм AES-CBC?Я пытаюсь использовать эти ключи KMS для шифрования данных на iOS без учета внешних зависимостей.

Я нашел CommonCrypto и написал код, который, кажется, работает с ключами данных KMS, но, насколько мне известно, только CommonCryptoподдерживает AES-CBC.

Я также не могу написать рабочий код на каком-либо языке, чтобы затем расшифровать сгенерированный зашифрованный текст.Это потому, что мой алгоритм GCM key + CBC выводит мусор?Почему мой код шифрования не жалуется?

Кроме того, возможно ли шифрование AES-GCM на iOS без CryptoKit?

1 Ответ

1 голос
/ 24 сентября 2019

AES-GCM внутренне использует режим CTR, который превращает блочный шифр в потоковый шифр и не требует заполнения.Режим AES-GCM - это режим шифрования с аутентификацией, который обеспечивает не только конфиденциальность, но также целостность и аутентификацию.

Режим CBC, тогда как требует заполнения, и он удален из TLS.Устаревшие и весьма проблематичные BEAST , битовые атаки с переворотом , набивающие атаки оракула и т. Д.

примечание: GCM не совершенен. Повторное использование GCM IV может быть катастрофическим.

GCM и CBC - совершенно разные схемы шифрования.Вы не можете дешифровать зашифрованный AES-GCM зашифрованный текст с помощью AES-CBC и наоборот.Вы можете поставить любой блочный шифр вместо AES в предыдущем предложении.

Вы должны придерживаться того же алгоритма и схем шифрования.

Как указано в документации AWS

Все команды шифрования симметричного ключа, используемые в HSM, используют Расширенные стандарты шифрования (AES) 4 , в режиме счетчика Галуа (GCM) [5] с использованием 256-битных ключей.Аналогичные вызовы для расшифровки используют обратную функцию.

Вы должны использовать AES-GCM.

...