Verificar uma implementação AES-256-GCM com outra ferramenta

Preciso de verificar a correcção de uma ferramenta, que segue a norma FIPS-197. Então eu vou receber um triplo e eu quero descodificar este Triplo (chave, cypher, IV).

Há alguma maneira de fazer isto de forma simples? Existe alguma implementação online que possa ser útil?

acabei de descobrir que nem duas páginas diferentes, que têm AES-256 implementadas, têm os mesmos valores que a saída.

Obrigado pela ajuda.

editar: Preciso de verificar a minha própria implementação. disso, e eu quero fazer isso, por verificação com vetores de teste, que foram verificados por uma ferramenta já verificada.

Edit2: Estou à procura de uma forma de verificar a minha implementação. Então eu pensei em vetores de teste ou outro, já validado, ferramenta. Esta é a parte em que eu preciso de Ajuda: Onde posso encontrar vetores de teste ou tal ferramenta?

Edit3: avaliação com php

Estamos a usar o "openssl_ Encrypt" para avaliação.

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

$cypher = openssl_encrypt($PT, $CM, $key, $options=0, $iv, $tag);
Se queremos avaliar a etiqueta, temos de ... do:

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

Agora podemos ver, se ambos são iguais, em relação a " gcmEncryptExtIV256.rsp " com

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

Contagem = 0

Chave = b52c505a37d78eda5d34f20c22540ea1b58963cf8e5bf8ffa85f9f2492505b4

IV = 516c33929df5a3284ff463d7

PT = AAD = CT =

Tag = bdc1ac884d332457a1d2664f168c76f0

Temos:

$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]);
Isto é injusto. to bdc1ac884d332457a1d2664f168c76f0.

Então, o que fiz de errado?

Author: Shalec, 2018-03-14

1 answers

Https://csrc.nist.gov/Projects/Cryptographic-Algorithm-Validation-Program/CAVP-TESTING-BLOCK-CIPHER-MODES#GCMVS é a página do programa de Validação de algoritmos criptográficos NIST (CAVP) para modos de cifra em bloco, incluindo GCM.

No fundo, contém uma ligação a um corpo de vectores de ensaio.https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/mac/gcmtestvectors.zip

In, por exemplo {[2] } you get cases tipo

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

Assim, com a chave 11754cd72aec309bf52f7687212e8957 (que é especificada em hex) e a IV/nonce de 3c819d9a9bed087615030b65 (ainda hex), o texto simples vazio e os dados associados vazios devem produzir um cifrotexto vazio e uma marca auth de 250327c674aaf477aef2675748cf6971 (sim, ainda hex).

Há um monte de testes desse modo( chaves diferentes ,sem texto simples, sem AAD), então abundância de "Agora com AAD", então "apenas com texto simples", e, eventualmente, casos como

Count = 14
Key = f42c74bcf473f6e923119946a89a0079
IV = 14852791065b66ccfa0b2d80
PT = 819abf03a7a6b72892a5ac85604035c2
AAD = 297007ac9419553a292b0fee3a7ac3c9
CT = 48371bd7af4235c4f11c458f1789192a
Tag = 4f44e0aff49a5a20ab2c69c834
Que te deixou verificar o kit todo e o kaboodle. Um part at a time " tests Falling are probably easier to debug, though.
 2
Author: bartonjs, 2018-03-15 16:58:03