MDN menciona que:
AES-KW não requer um vetor de inicialização (iv)
Mas quando tento criptografar minha chave de criptografia de conteúdo (CEK) usando a chave de criptografia de chave (KEK), como abaixo, o Node.js Crypto createCipheriv(algorithm, key, iv[, options])
gera um erro ERR_CRYPTO_INVALID_IV
. Alguém sabe se o AES-KW requer um iv
? O RFC do algoritmo Key Wrap do Advanced Encryption Standard (AES) não menciona o "vetor de inicialização".
let cipherCEK = createCipheriv('aes256-wrap', keyEncryptionKey, null);
let encryptedCEK = cipher.update(contentEncryptionKey);
encryptedCEK += cipher.final(); //buffer
Não sei por que você diz que a RFC 3394 não menciona um IV. É abordado na seção 2.2.3 e é usado para integridade de dados (ou seja, para garantir que a chave foi descriptografada corretamente). O valor padrão recomendado é A6A6A6A6A6A6A6A6. Não testei com
createCipheriv
, mas recomendo passar esse valor.Espero que o MDN diga que não "requer" um IV porque existe um padrão que a Microsoft usa automaticamente, então você não precisa passá-lo. Espero que o Node.js não seja tão amigável ao desenvolvedor.