@@ -425,6 +425,14 @@ received _authentication tag_. If no tag is provided, or if the cipher text
425
425
has been tampered with, [ ` decipher.final() ` ] [ ] will throw, indicating that the
426
426
cipher text should be discarded due to failed authentication.
427
427
428
+ Note that this Node.js version does not verify the length of GCM authentication
429
+ tags. Such a check * must* be implemented by applications and is crucial to the
430
+ authenticity of the encrypted data, otherwise, an attacker can use an
431
+ arbitrarily short authentication tag to increase the chances of successfully
432
+ passing authentication (up to 0.39%). It is highly recommended to associate one
433
+ of the values 16, 15, 14, 13, 12, 8 or 4 bytes with each key, and to only permit
434
+ authentication tags of that length, see [ NIST SP 800-38D] [ ] .
435
+
428
436
The ` decipher.setAuthTag() ` method must be called before
429
437
[ ` decipher.final() ` ] [ ] .
430
438
@@ -2414,6 +2422,7 @@ the `crypto`, `tls`, and `https` modules and are generally specific to OpenSSL.
2414
2422
[ HTML5's `keygen` element ] : https://www.w3.org/TR/html5/forms.html#the-keygen-element
2415
2423
[ NIST SP 800-131A ] : http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-131Ar1.pdf
2416
2424
[ NIST SP 800-132 ] : http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf
2425
+ [ NIST SP 800-38D ] : http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf
2417
2426
[ Nonce-Disrespecting Adversaries ] : https://github.com/nonce-disrespect/nonce-disrespect
2418
2427
[ OpenSSL's SPKAC implementation ] : https://www.openssl.org/docs/man1.0.2/apps/spkac.html
2419
2428
[ RFC 2412 ] : https://www.rfc-editor.org/rfc/rfc2412.txt
0 commit comments