[
https://issues.apache.org/jira/browse/NIFI-1257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15132788#comment-15132788
]
ASF GitHub Bot commented on NIFI-1257:
--------------------------------------
Github user mattyb149 commented on a diff in the pull request:
https://github.com/apache/nifi/pull/201#discussion_r51919714
--- Diff:
nifi-commons/nifi-security-utils/src/main/java/org/apache/nifi/security/util/EncryptionMethod.java
---
@@ -26,37 +26,43 @@
*/
public enum EncryptionMethod {
- MD5_128AES("PBEWITHMD5AND128BITAES-CBC-OPENSSL", "BC", false),
- MD5_192AES("PBEWITHMD5AND192BITAES-CBC-OPENSSL", "BC", false),
- MD5_256AES("PBEWITHMD5AND256BITAES-CBC-OPENSSL", "BC", false),
- MD5_DES("PBEWITHMD5ANDDES", "BC", false),
- MD5_RC2("PBEWITHMD5ANDRC2", "BC", false),
- SHA1_RC2("PBEWITHSHA1ANDRC2", "BC", false),
- SHA1_DES("PBEWITHSHA1ANDDES", "BC", false),
- SHA_128AES("PBEWITHSHAAND128BITAES-CBC-BC", "BC", true),
- SHA_192AES("PBEWITHSHAAND192BITAES-CBC-BC", "BC", true),
- SHA_256AES("PBEWITHSHAAND256BITAES-CBC-BC", "BC", true),
- SHA_40RC2("PBEWITHSHAAND40BITRC2-CBC", "BC", true),
- SHA_128RC2("PBEWITHSHAAND128BITRC2-CBC", "BC", true),
- SHA_40RC4("PBEWITHSHAAND40BITRC4", "BC", true),
- SHA_128RC4("PBEWITHSHAAND128BITRC4", "BC", true),
- SHA256_128AES("PBEWITHSHA256AND128BITAES-CBC-BC", "BC", true),
- SHA256_192AES("PBEWITHSHA256AND192BITAES-CBC-BC", "BC", true),
- SHA256_256AES("PBEWITHSHA256AND256BITAES-CBC-BC", "BC", true),
- SHA_2KEYTRIPLEDES("PBEWITHSHAAND2-KEYTRIPLEDES-CBC", "BC", true),
- SHA_3KEYTRIPLEDES("PBEWITHSHAAND3-KEYTRIPLEDES-CBC", "BC", true),
- SHA_TWOFISH("PBEWITHSHAANDTWOFISH-CBC", "BC", true),
- PGP("PGP", "BC", false),
- PGP_ASCII_ARMOR("PGP-ASCII-ARMOR", "BC", false);
+ MD5_128AES("PBEWITHMD5AND128BITAES-CBC-OPENSSL", "BC", false, false),
+ MD5_192AES("PBEWITHMD5AND192BITAES-CBC-OPENSSL", "BC", true, false),
+ MD5_256AES("PBEWITHMD5AND256BITAES-CBC-OPENSSL", "BC", true, false),
+ MD5_DES("PBEWITHMD5ANDDES", "BC", false, false),
+ MD5_RC2("PBEWITHMD5ANDRC2", "BC", false, false),
+ SHA1_RC2("PBEWITHSHA1ANDRC2", "BC", false, false),
+ SHA1_DES("PBEWITHSHA1ANDDES", "BC", false, false),
+ SHA_128AES("PBEWITHSHAAND128BITAES-CBC-BC", "BC", false, false),
+ SHA_192AES("PBEWITHSHAAND192BITAES-CBC-BC", "BC", true, false),
+ SHA_256AES("PBEWITHSHAAND256BITAES-CBC-BC", "BC", true, false),
+ SHA_40RC2("PBEWITHSHAAND40BITRC2-CBC", "BC", false, false),
+ SHA_128RC2("PBEWITHSHAAND128BITRC2-CBC", "BC", false, false),
+ SHA_40RC4("PBEWITHSHAAND40BITRC4", "BC", false, false),
+ SHA_128RC4("PBEWITHSHAAND128BITRC4", "BC", false, false),
+ SHA256_128AES("PBEWITHSHA256AND128BITAES-CBC-BC", "BC", false, false),
+ SHA256_192AES("PBEWITHSHA256AND192BITAES-CBC-BC", "BC", true, false),
+ SHA256_256AES("PBEWITHSHA256AND256BITAES-CBC-BC", "BC", true, false),
+ SHA_2KEYTRIPLEDES("PBEWITHSHAAND2-KEYTRIPLEDES-CBC", "BC", false,
false),
+ SHA_3KEYTRIPLEDES("PBEWITHSHAAND3-KEYTRIPLEDES-CBC", "BC", false,
false),
+ SHA_TWOFISH("PBEWITHSHAANDTWOFISH-CBC", "BC", false, false),
+ PGP("PGP", "BC", false, false),
+ PGP_ASCII_ARMOR("PGP-ASCII-ARMOR", "BC", false, false),
+ // New encryption methods which used keyed encryption
+ AES_CBC("AES/CBC/PKCS7Padding", "BC", false, true),
+ AES_CTR("AES/CTR/NoPadding", "BC", false, true),
+ AES_GCM("AES/GCM/NoPadding", "BC", false, true);
private final String algorithm;
private final String provider;
private final boolean unlimitedStrength;
+ private final boolean compatibleWithStrongKDFs;
- EncryptionMethod(String algorithm, String provider, boolean
unlimitedStrength) {
+ EncryptionMethod(String algorithm, String provider, boolean
unlimitedStrength, boolean compatibleWithStrongKDFs) {
--- End diff --
Can this be a straight override or do we need to keep the original method
and deprecate it?
> Provide additional KDFs for EncryptContent
> ------------------------------------------
>
> Key: NIFI-1257
> URL: https://issues.apache.org/jira/browse/NIFI-1257
> Project: Apache NiFi
> Issue Type: Improvement
> Components: Core Framework
> Affects Versions: 0.4.0
> Reporter: Andy LoPresto
> Assignee: Andy LoPresto
> Priority: Critical
> Labels: encryption, security
> Fix For: 0.5.0
>
>
> Currently, the two key derivation functions (KDF) supported are NiFi Legacy
> (1000 iterations of MD5 digest over a password and optional salt) and OpenSSL
> PKCS#5 v1.5 (a single iteration of MD5 digest over a password and optional
> salt).
> Both of these are very weak -- they use a deprecated cryptographic hash
> function (CHF) with known weakness and susceptibility to collisions (with
> demonstrated attacks) and a non-configurable and tightly coupled iteration
> count to derive the key and IV.
> Current best practice KDFs (with work factor recommendations) are as follows:
> * PBKDF2 with variable hash function (SHA1, SHA256, SHA384, SHA512, or
> ideally HMAC variants of these functions) and variable iteration count (in
> the 10k - 1M range).
> * bcrypt with work factor of 12 - 16
> * scrypt with work factor of (2^14 - 2^20, 8, 1)
> The salt and iteration count should be stored alongside the hashed record
> (bcrypt handles this natively).
> Notes:
> * http://wildlyinaccurate.com/bcrypt-choosing-a-work-factor/
> * http://blog.ircmaxell.com/2012/12/seven-ways-to-screw-up-bcrypt.html
> *
> http://security.stackexchange.com/questions/17207/recommended-of-rounds-for-bcrypt
> *
> http://security.stackexchange.com/questions/3959/recommended-of-iterations-when-using-pkbdf2-sha256/3993#3993
> *
> http://security.stackexchange.com/questions/4781/do-any-security-experts-recommend-bcrypt-for-password-storage/6415
>
> *
> http://web.archive.org/web/20130407190430/http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know-about-s.html
> *
> https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2015/march/enough-with-the-salts-updates-on-secure-password-schemes/
> * http://www.tarsnap.com/scrypt.html
> * http://www.tarsnap.com/scrypt/scrypt.pdf
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)