<div dir="ltr">Mike,<div><br></div><div>Yes, this was in response to your comment.</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>Thank you,</div><div>Greg</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Apr 3, 2021 at 4:38 PM Michael StJohns <<a href="mailto:mstjohns@comcast.net">mstjohns@comcast.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 4/3/2021 11:35 AM, Greg Rubin wrote:<br>
> 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?<br>
><br>
> 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.<br>
<br>
I think this is in response to my comment?<br>
<br>
The wrap function can take a Key as an input and can have the unwrap <br>
method produce a Key as an output - indeed it should be used primarily <br>
for this rather than the more general encrypt/decrypt functions. The <br>
problem is that the encoding of the key may not be known prior to the <br>
attempt to wrap it - hence it's not known whether or not padding need be <br>
applied. This is especially problematic with HSMs. Providing an <br>
AutoPadding mode would allow the wrapping algorithm to decide whether to <br>
use either of the RFC 3394 (AKA KW) Integrity Check Value (ICV) or the <br>
RFC5649 (aka KWP) value and padding length.<br>
<br>
The key thing to remember here is that the IV (initial value - RFC <br>
language) /ICV (integrity check value - NIST language)actually isn't an <br>
IV(initialization vector) in the ordinary meaning, it's a flag, padding <br>
and integrity indicator and will be fixed for all keys of the same <br>
length that use the specified values. E.g. unlike other modes that <br>
require an initialization vector, you don't need to know the ICV to <br>
decrypt the underlying key stream, but you can (and for that matter <br>
MUST) easily test the recovered first block against the expected ICV to <br>
determine whether the output needs padding removed or not.<br>
<br>
FWIW, the actual cryptographic operations between padded data and <br>
non-padded data (of the right multiple length) are identical. It's only <br>
the pre or post processing that's looking for different data.<br>
<br>
Obviously, this doesn't work if someone provides their own IV - but <br>
that's fairly unlikely. CF CCM and its non-normative example formatting <br>
function appendix A - each and every implementation I've seen uses that <br>
formatting function, even though it isn't actually required by the <br>
standard. I'd be surprised if anyone decided to use a different set of <br>
non-standard IV values.<br>
<br>
If an AutoPadding mode were implemented, I'd throw exceptions if someone <br>
tried to set the IV.<br>
<br>
Later, Mike<br>
<br>
<br>
</blockquote></div>