[ 
https://issues.apache.org/jira/browse/NIFI-6669?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Handermann resolved NIFI-6669.
------------------------------------
    Resolution: Won't Do

> Allow arbitrary IV values in EncryptContent processor when running in decrypt 
> mode
> ----------------------------------------------------------------------------------
>
>                 Key: NIFI-6669
>                 URL: https://issues.apache.org/jira/browse/NIFI-6669
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Extensions
>    Affects Versions: 1.9.2
>            Reporter: Andy LoPresto
>            Assignee: Andy LoPresto
>            Priority: Major
>              Labels: encryption, initialization-vector, security
>
> As discussed in the Apache NiFi Slack instance recently:
>  
> {quote}
> [RuthMizzi|https://app.slack.com/team/UN6KDKGMB]  [3 days 
> ago|https://apachenifi.slack.com/archives/C0L9VCD47/p1568103042185700]
> Hello - wondering whether anyone can help me with question I have using the 
> EncryptContent nifi component for decryption of messages received from 
> maxwell daemon .. has anyone ever done this before?
>  
> [Andy LoPresto|https://app.slack.com/team/U0LA8HR55]  [3 days 
> ago|https://apachenifi.slack.com/archives/C0L9VCD47/p1568138070190500?thread_ts=1568103042.185700&cid=C0L9VCD47]
> This won’t work out of the box. Maxwell’s Daemon uses {{AES/CBC/NoPadding}} 
> cipher mode of operation ([https://maxwells-daemon.io/encryption/]), which 
> NiFi does support, but it generates a unique IV and sends both encoded in 
> Base64. The underlying code in NiFi supports unique IVs but it is not 
> currently exposed to the {{EncryptContent}} processor.  I would suggest the 
> following approach:
> 1. Submit a Jira requesting this feature and assign it to me. By adding an 
> optional IV property, we can allow unique input for every decryption 
> operation, and this value can be extracted from the JSON to a flowfile 
> attribute in a preceding {{EvaluateJsonPath}} processor. We will need to 
> eagerly detect Base64 encoding vs. Hex encoding for this input.
> 2. Write an {{ExecuteScript}} processor which consumes the two JSON values 
> and calls simple decrypt logic in Groovy. I can help generate this if you 
> need it.
>  
> [RuthMizzi|https://app.slack.com/team/UN6KDKGMB][9 hours 
> ago|https://apachenifi.slack.com/archives/C0L9VCD47/p1568361404228800?thread_ts=1568103042.185700&cid=C0L9VCD47]
> thanks so much for your detailed response! In the meantime we convinced our 
> data sources to send the data unencrypted but over a secured ssl kafka 
> connection and therefore got around the issue -- but i really appreciate the 
> knowledge shared. Thanks again
> {quote}
>  
> The IV property descriptor should not be required, should support Expression 
> Language, and should detect Base64 and Hex encoded values and validate them 
> against the correct block length for the selected mode of operation via 
> custom validation. 
>  
> We may also want a dropdown of "IV strategies" such as "IV prepended", "IV 
> prepended with delimiter", etc. to handle incoming flowfile content which 
> already has a per-ciphertext IV prepended. 
>  



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

Reply via email to