Проверьте реализацию AES-256-GCM с помощью другого инструмента.

Мне нужно проверить правильность инструмента, соответствующего стандарту FIPS-197. Таким образом, я получу тройку, и я хочу расшифровать эту тройку (ключ, шифр, IV).

Есть ли способ сделать это просто? Есть ли какая-нибудь онлайн-реализация, которая может быть полезна?

Я только что узнал, что даже две разные страницы, на которых реализован AES-256, не имеют таких же значений, как вывод.

Спасибо за помощь.

Редактировать:
Мне нужно проверить мою собственную реализацию этого, и я хочу сделать это путем проверки с помощью тестовых векторов, которые были проверены уже проверенным инструментом.

Edit2:
Я ищу способ проверить мою реализацию. Поэтому я подумал о тестовых векторах или другом, уже проверенном инструменте. Это та часть, в которой мне нужна помощь: где я могу найти тестовые векторы или такой инструмент?

Мы используем «openssl_encrypt» для оценки.

$CM = "aes-256-gcm"; //cypher mode
$PT = "";//plain
$CT = "";//cypher
$key = "";
$iv = "";

$cypher = openssl_encrypt($PT, $CM, $key, $options=0, $iv, $tag);

Если мы хотим оценить тег, нам нужно сделать:

print(unpack("h*", $tag)[1]);

Теперь мы можем видеть, если оба равны, относительно «gcmEncryptExtIV256.rsp» с

[Keylen = 256] [IVlen = 96] [PTlen = 0] [AADlen = 0] [Taglen = 128]

Количество = 0

Ключ = b52c505a37d78eda5dd34f20c22540ea1b58963cf8e5bf8ffa85f9f2492505b4

IV = 516c33929df5a3284ff463d7

PT = AAD = CT =

Tag = bdc1ac884d332457a1d2664f168c76f0

У нас есть:

$CM = "aes-256-gcm";
$PT = ""; //plain
$CT = ""; //cypher
$key = "b52c505a37d78eda5dd34f20c22540ea1b58963cf8e5bf8ffa85f9f2492505b4 ";
$iv = "516c33929df5a3284ff463d7 ";

$cypher = openssl_encrypt($PT, $CM, $key, $options=0, $iv, $tag);
print(unpack("h*", $tag)[1]);

Это не равно bdc1ac884d332457a1d2664f168c76f0.

Так что я сделал не так?

-2

Решение

https://csrc.nist.gov/Projects/Cryptographic-Algorithm-Validation-Program/CAVP-TESTING-BLOCK-CIPHER-MODES#GCMVS является страницей программы проверки криптографических алгоритмов NIST (CAVP) для режимов блочного шифрования, включая GCM.

Внизу он содержит ссылку на корпус тестовых векторов, https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/mac/gcmtestvectors.zip

Например, в gcmEncryptExtIV128.rsp вы получаете такие случаи, как

Count = 0
Key = 11754cd72aec309bf52f7687212e8957
IV = 3c819d9a9bed087615030b65
PT =
AAD =
CT =
Tag = 250327c674aaf477aef2675748cf6971

Так с ключом 11754cd72aec309bf52f7687212e8957 (который указан в шестнадцатеричном виде) и IV / nonce из 3c819d9a9bed087615030b65 (все еще в шестнадцатеричном виде) пустой открытый текст и пустые связанные данные должны создать пустой зашифрованный текст и тег авторизации 250327c674aaf477aef2675748cf6971 (да, все еще шестнадцатеричный).

Существует множество тестов этого режима (разные ключи, без открытого текста, без AAD), затем множество «сейчас с AAD», затем «только с открытым текстом», и, в конце концов, такие случаи, как

Count = 14
Key = f42c74bcf473f6e923119946a89a0079
IV = 14852791065b66ccfa0b2d80
PT = 819abf03a7a6b72892a5ac85604035c2
AAD = 297007ac9419553a292b0fee3a7ac3c9
CT = 48371bd7af4235c4f11c458f1789192a
Tag = 4f44e0aff49a5a20ab2c69c834

Который позволит вам проверить весь комплект и Kaboodle. Неудачные тесты «по одной части за раз», вероятно, легче отлаживать.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]