RFR: 8248268: Support KWP in addition to KW [v4]

Michael StJohns mstjohns at comcast.net
Wed Apr 7 18:50:24 UTC 2021


*sigh* Minor correction in line.

On 4/7/2021 2:49 PM, Michael StJohns wrote:
> On 4/7/2021 1:28 PM, Greg Rubin wrote:
>> Mike,
>>
>> Yes, this was in response to your comment.
>>
>> I'm aware that the IV really serves more as an integrity check and 
>> mode signalling mechanism than anything else. My concern is that in 
>> the past few years I've seen various issues related to "in band 
>> signalling" where something about the ciphertext (or directly 
>> associated metadata) changes how the data is decrypted and 
>> authenticated. This has reached the level where several cryptographic 
>> forums I participate in are starting to consider it a full anti-pattern.
>>
>> The proposed "AutoPadding" mode is an example of in-band signalling 
>> in which an externally provided ciphertext changes how it is 
>> interpreted. While I cannot personally think of a specific risk in 
>> this case, I would be inclined not to include this mode unless there 
>> is a strong driving need from our users. While I have definitely seen 
>> people not knowing if their data was encrypted with KW or KW+PKCS5/7, 
>> I haven't personally seen uncertainty between KW and KWP. (I also 
>> haven't worked with all possible HSMs, just a few of them.)  So, from 
>> a position of caution, I'd avoid "AutoPadding", but this is a 
>> preference based on current best-practice rather than a strong 
>> objection based on specific concerns or risks.
>
>
> I sent a note off to the original mode inventor - Russ Housley:
>
>> Can you think of any reason why there might be an issue with 
>> providing an autopadding mode for KW/KWP (e.g. select which to use 
>> based on the input data for encrypt and determine which was used 
>> after running the unwrap function but before removing the initial 
>> block and any padding)?
>
> I got back:
>
>> As long as every party supports both modes, you could use KW id [sic 
>> - I think he meant "is"]

"if" not "is"

>> the inout is a multiple of 64 bits, otherwise use KWP.  Of course, 
>> the algorithm identifier needs to be set appropriately.
>
> Which sort of confirms what I thought, but added a question: Are there 
> algorithm OIDs for KW with PKCS5 padding or do people just use the KW 
> OID( 2.16.840.1.101.3.4.1.{5,25,45}?  As far as I can tell, there are 
> no OIDs for KW with PKCS5.
>
> Does there need to be an autopad OID?
>
> If it were me, I'd be avoiding implementing the PKCS5 padding mode 
> here.  I can't actually find a specification that includes it and it 
> looks like a hack that was fixed by the specification of KWP.  I'd 
> prefer not to extend the hack's lifetime, given that  RFC5649 is 10+ 
> years old.
>
> WRT to HSM uncertainty, I ran into problems especially trying to wrap 
> RSA private keys.  Turned out that some encoded as 8 byte multiples 
> and some did not.  In any event, I mentioned HSMs, but I really care 
> about the general model for the JCE. I'd *really* like to avoid having 
> to have to first figure out the private key encoding length (which may 
> be difficult as a provider may not choose to export an unwrapped 
> private key even if its a software provider) before choosing the 
> wrapping algorithm.   Doing it that way just fits the JCE model better.
>
> At some point, there needs to be an RFC written that specifies the 
> default encodings for keys wrapped by this algorithm.
>
> Later, Mike
>
>
>>
>> Thank you,
>> Greg
>>
>> On Sat, Apr 3, 2021 at 4:38 PM Michael StJohns <mstjohns at comcast.net 
>> <mailto:mstjohns at comcast.net>> wrote:
>>
>>     On 4/3/2021 11:35 AM, Greg Rubin wrote:
>>     > I'd advise against the AutoPadding scheme without more careful
>>     analysis and discussion. Have we seen either KW or KWP
>>     specifications which recommend that behavior?
>>     >
>>     > My concern is that we've seen cases before where two different
>>     cryptographic algorithms could be selected transparently upon
>>     decryption and it lowers the security of the overall system. (A
>>     variant of in-band signalling.) The general consensus that I've
>>     been seeing in the (applied) cryptographic community is strongly
>>     away from in-band signalling and towards the decryptor fully
>>     specifying the algorithms and behavior prior to attempting
>>     decryption.
>>
>>     I think this is in response to my comment?
>>
>>     The wrap function can take a Key as an input and can have the unwrap
>>     method produce a Key as an output - indeed it should be used
>>     primarily
>>     for this rather than the more general encrypt/decrypt functions. 
>>     The
>>     problem is that the encoding of the key may not be known prior to
>>     the
>>     attempt to wrap it - hence it's not known whether or not padding
>>     need be
>>     applied.  This is especially problematic with HSMs. Providing an
>>     AutoPadding mode would allow the wrapping algorithm to decide
>>     whether to
>>     use either of the RFC 3394 (AKA KW) Integrity Check Value (ICV)
>>     or the
>>     RFC5649 (aka KWP) value and padding length.
>>
>>     The key thing to remember here is that the IV (initial value - RFC
>>     language) /ICV (integrity check value - NIST language)actually
>>     isn't an
>>     IV(initialization vector) in the ordinary meaning, it's a flag,
>>     padding
>>     and integrity indicator and will be fixed for all keys of the same
>>     length that use the specified values.   E.g. unlike other modes that
>>     require an initialization vector, you don't need to know the ICV to
>>     decrypt the underlying key stream, but you can  (and for that matter
>>     MUST) easily test the recovered first block against the expected
>>     ICV to
>>     determine whether the output needs padding removed or not.
>>
>>     FWIW, the actual cryptographic operations between padded data and
>>     non-padded data (of the right multiple length) are identical.
>>     It's only
>>     the pre or post processing that's looking for different data.
>>
>>     Obviously, this doesn't work if someone provides their own IV - but
>>     that's fairly unlikely.  CF CCM and its non-normative example
>>     formatting
>>     function appendix A -  each and every implementation I've seen
>>     uses that
>>     formatting function, even though it isn't actually required by the
>>     standard.  I'd be surprised if anyone decided to use a different
>>     set of
>>     non-standard IV values.
>>
>>     If an AutoPadding mode were implemented, I'd throw exceptions if
>>     someone
>>     tried to set the IV.
>>
>>     Later, Mike
>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/security-dev/attachments/20210407/4a0fa3fe/attachment.htm>


More information about the security-dev mailing list