David Handermann created NIFI-11022:
---------------------------------------

             Summary: Add Decrypt Processors Compatible with EncryptContent 
Encoding
                 Key: NIFI-11022
                 URL: https://issues.apache.org/jira/browse/NIFI-11022
             Project: Apache NiFi
          Issue Type: New Feature
          Components: Extensions, Security
            Reporter: David Handermann
            Assignee: David Handermann


The {{EncryptContent}} Processors supports a wide variety of configuration 
options, enabling both encryption and decryption using various algorithms. Many 
of these algorithms are not secure according to modern cryptographic analysis, 
and existing secure options use a custom encoding format. New Processors should 
be added that support decrypting content according to these legacy and custom 
formats, which will enable deprecating {{EncryptContent}} for removal and 
replacement with other approaches.

The majority allowable values for the {{Encryption Method}} property in 
{{EncryptContent}} come from the PKCS #5 Password-Based Cryptography 
Specification, described in [RFC 8018|https://www.rfc-editor.org/rfc/rfc8018]. 
These algorithm names start with {{PBE}} and incorporate a message digest 
function along with a cipher algorithm. Although these methods include AES, the 
key derivation process for all PBE algorithms follows the {{PBES1}} 
specification from RFC 8018, which is not secure or suitable for modern 
applications. The ability to decrypt older content is useful, but new content 
should not be encrypted using these methods.

The PBE algorithms can be configured together with either the {{NiFi Legacy}} 
or {{OpenSSL EVP BytesToKey}} option for key derivation. The {{NiFI Legacy}} 
option derives from the [Jasypt|http://www.jasypt.org/] library, which provides 
a standard wrapper for PBE algorithms that defaults to 1000 iterations of a 
selected digest algorithm. The {{OpenSSL EVP}} option supports compatibility 
with encryption operations implemented in the {{OpenSSL}} library and command.

Advanced Key Derivation Functions include Argon2, bcrypt, PBKDF2, and scrypt, 
which can be used together with AES in Galois/Counter Mode (GCM) for 
authenticated encryption. These options provide much better security than the 
legacy PBE methods, but they rely on custom file encoding using byte delimiters 
that are specific to Apache NiFi. In addition, these Key Derivation Functions 
generate keys of 16 bytes, which supports AES with 128 bit keys, but not AES 
with 256 bit keys. NiFi 0.5.0 added bcrypt, PBKDF2, and scrypt, and NiFi 1.12.0 
added Argon2. Decrypting content according to the custom NiFi encoding should 
be supported, but other options should be evaluated separately for encryption 
in new flows. The salt parameter bytes associated with Argon2, bcrypt, and 
scrypt allow for detection of file encoding, which can enable new decryption 
processors to be configured without reference to a specific Key Derivation 
Function.

Adding new decryption processors will enable clear separation of encryption and 
decryption operations, providing a compatible transition path for historical 
usage of {{EncryptContent}} without the need to continue supporting insecure 
encryption methods.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to