RE: A New TripleDES Key Wrap Algorithm
19990301 12:30:57
Recall that OAEP (in general) has two arguments: message and parameters.
OAEP provides confidentiality to the message and integrity to the
parameters. It also binds the parameters and the message cryptographically.
It the parameters are modified, the OAEP decoding operation will detect the
change.
The set of parameters can be null, or it may contain information about the
message such as key type in the case that the message is the key.
Thus the conflict between ASN.1 and confidentiality is easily resolved: let
the message be the secret key, and let the parameters specify the type of
key, length, usage, etc. with ASN.1. This is one of the nice features of
OAEP: it is easy to carry nonconfidential attributes about a message.
 Burt

From: Don Johnson[SMTP:djohnson(_at_)certicom(_dot_)com]
Sent: Friday, February 26, 1999 4:46 PM
To: Kevin Kingdon
Cc: Bob Jueneman; housley(_at_)spyrus(_dot_)com; cme(_at_)ACM(_dot_)ORG;
berson(_at_)anagram(_dot_)com;
bschanni(_at_)BayNetworks(_dot_)com; kent(_at_)bbn(_dot_)com;
pcain(_at_)bbn(_dot_)com;
mhetzel(_at_)belllabs(_dot_)com; brickell(_at_)certco(_dot_)com;
djohnson(_at_)certicom(_dot_)ca;
schneier(_at_)counterpane(_dot_)com; daw(_at_)cs(_dot_)berkeley(_dot_)edu;
denning(_at_)cs(_dot_)cosc(_dot_)georgetown(_dot_)edu;
smid(_at_)csmes(_dot_)ncsl(_dot_)nist(_dot_)gov;
omura(_at_)cylink(_dot_)com;
dickie(_at_)EMPIRE(_dot_)eclipse(_dot_)ncsc(_dot_)mil;
carlisle(_dot_)adams(_at_)entrust(_dot_)com; paulv(_at_)entrust(_dot_)com;
Blake(_dot_)greenlee(_at_)greenlee(_dot_)com; ietfsmime(_at_)imc(_dot_)org;
benaloh(_at_)microsoft(_dot_)com;
bfox(_at_)microsoft(_dot_)com; cjwagne(_at_)missi(_dot_)ncsc(_dot_)mil;
jis(_at_)mit(_dot_)edu; Tolga Acar;
merkle(_at_)parc(_dot_)xerox(_dot_)com;
BSnow(_at_)radium(_dot_)ncsc(_dot_)mil; Burt Kaliski; ekr(_at_)rtfm(_dot_)com;
jlinn(_at_)securitydynamics(_dot_)com; ams(_at_)terisa(_dot_)com; Ron Rivest;
balenson(_at_)tis(_dot_)com;
denny(_at_)tis(_dot_)com; acc(_at_)tycho(_dot_)ncsc(_dot_)mil;
jhs(_at_)tycho(_dot_)ncsc(_dot_)mil; smatyas(_at_)us(_dot_)ibm(_dot_)com;
desmedt(_at_)uwm(_dot_)edu
Subject: RE: A New TripleDES Key Wrap Algorithm
Kevin,
Here is what I am saying, I do not think it is not controversial.
1. For any confidentiality method, such as encryption, adding in known
quantities: A) does not keep them confidential, as they are known, and B)
may give an adversary a toehold he would not otherwise have, for example,
with encryption he will know some plaintext and resulting ciphertext (in
the worst case some blocks of known plaintext/ciphertext).
2. For that reason, I resist adding in known data to data that is intended
to be kept confidential. It is not forbidden to add in known data, I just
want to believe that the cost/benefit tradeoff makes it worthwhile. And I
try to keep down the amount of known data if possible.
Don Johnson
Kevin Kingdon <kevin(_at_)rsa(_dot_)com> on 02/26/99 02:57:22 PM
To: Don Johnson/Certicom, Bob Jueneman <BJUENEMAN(_at_)novell(_dot_)com>
cc: housley(_at_)spyrus(_dot_)com, cme(_at_)ACM(_dot_)ORG,
berson(_at_)anagram(_dot_)com,
bschanni(_at_)BayNetworks(_dot_)com, kent(_at_)bbn(_dot_)com,
pcain(_at_)bbn(_dot_)com,
mhetzel(_at_)belllabs(_dot_)com, brickell(_at_)certco(_dot_)com,
djohnson(_at_)certicom(_dot_)ca,
schneier(_at_)counterpane(_dot_)com,
daw(_at_)cs(_dot_)berkeley(_dot_)edu,
denning(_at_)cs(_dot_)cosc(_dot_)georgetown(_dot_)edu,
smid(_at_)csmes(_dot_)ncsl(_dot_)nist(_dot_)gov,
omura(_at_)cylink(_dot_)com,
dickie(_at_)EMPIRE(_dot_)eclipse(_dot_)ncsc(_dot_)mil,
carlisle(_dot_)adams(_at_)entrust(_dot_)com,
paulv(_at_)entrust(_dot_)com,
Blake(_dot_)greenlee(_at_)greenlee(_dot_)com,
ietfsmime(_at_)imc(_dot_)org,
benaloh(_at_)microsoft(_dot_)com, bfox(_at_)microsoft(_dot_)com,
cjwagne(_at_)missi(_dot_)ncsc(_dot_)mil,
jis(_at_)mit(_dot_)edu, Tolga Acar
<TACAR(_dot_)PRV7(_dot_)PROVO(_at_)novell(_dot_)com>,
merkle(_at_)parc(_dot_)xerox(_dot_)com,
BSnow(_at_)radium(_dot_)ncsc(_dot_)mil, Burt Kaliski
<burt(_at_)rsa(_dot_)com>, ekr(_at_)rtfm(_dot_)com,
jlinn(_at_)securitydynamics(_dot_)com,
ams(_at_)terisa(_dot_)com, Ron Rivest
<rivest(_at_)theory(_dot_)lcs(_dot_)mit(_dot_)edu>,
balenson(_at_)tis(_dot_)com, denny(_at_)tis(_dot_)com,
acc(_at_)tycho(_dot_)ncsc(_dot_)mil,
jhs(_at_)tycho(_dot_)ncsc(_dot_)mil,
smatyas(_at_)us(_dot_)ibm(_dot_)com, desmedt(_at_)uwm(_dot_)edu
Subject: RE: A New TripleDES Key Wrap Algorithm
Don,
Are you saying that the input (plaintext) to an encryption operation must
not be structured? I thought that was what encryption was all about 
hiding
the structure / information content of the plaintext. In any case, doesn't
using OAEP as a part of an encryption scheme mask the plaintext structure
just in case the encryption primitive is vulnerable to attacks that take
advantage of that structure?
Kevin
Original Message
From: Don Johnson [mailto:djohnson(_at_)certicom(_dot_)com]
Sent: Friday, February 26, 1999 11:25 AM
To: Bob Jueneman
Cc: housley(_at_)spyrus(_dot_)com; cme(_at_)ACM(_dot_)ORG;
berson(_at_)anagram(_dot_)com;
bschanni(_at_)BayNetworks(_dot_)com; kent(_at_)bbn(_dot_)com;
pcain(_at_)bbn(_dot_)com;
mhetzel(_at_)belllabs(_dot_)com; brickell(_at_)certco(_dot_)com;
djohnson(_at_)certicom(_dot_)ca;
schneier(_at_)counterpane(_dot_)com; daw(_at_)cs(_dot_)berkeley(_dot_)edu;
denning(_at_)cs(_dot_)cosc(_dot_)georgetown(_dot_)edu;
smid(_at_)csmes(_dot_)ncsl(_dot_)nist(_dot_)gov;
omura(_at_)cylink(_dot_)com;
dickie(_at_)EMPIRE(_dot_)eclipse(_dot_)ncsc(_dot_)mil;
carlisle(_dot_)adams(_at_)entrust(_dot_)com;
paulv(_at_)entrust(_dot_)com; Blake(_dot_)greenlee(_at_)greenlee(_dot_)com;
ietfsmime(_at_)imc(_dot_)org;
benaloh(_at_)microsoft(_dot_)com; bfox(_at_)microsoft(_dot_)com;
cjwagne(_at_)missi(_dot_)ncsc(_dot_)mil;
jis(_at_)mit(_dot_)edu; Tolga Acar; merkle(_at_)parc(_dot_)xerox(_dot_)com;
BSnow(_at_)radium(_dot_)ncsc(_dot_)mil;
Burt
Kaliski; ekr(_at_)rtfm(_dot_)com; jlinn(_at_)securitydynamics(_dot_)com;
ams(_at_)terisa(_dot_)com; Ron
Rivest; balenson(_at_)tis(_dot_)com; denny(_at_)tis(_dot_)com;
acc(_at_)tycho(_dot_)ncsc(_dot_)mil;
jhs(_at_)tycho(_dot_)ncsc(_dot_)mil; smatyas(_at_)us(_dot_)ibm(_dot_)com;
desmedt(_at_)uwm(_dot_)edu
Subject: Re: A New TripleDES Key Wrap Algorithm
Bob, Russ,
ASN.1 is very structured and can be considered to have many
known values.
As such, strictly from an info theory viewpoint, use of
ASN.1 and
confidentiality are are in opposition. This does not mean
it should be
forbidden, just that we would want to have very strong
assurances about the
properties provided by the encryption to use ASN.1 or
similar highly
structured formats.
Don Johnson
"Bob Jueneman" <BJUENEMAN(_at_)novell(_dot_)com> on 02/26/99
01:38:19
PM
To: housley(_at_)spyrus(_dot_)com
cc: cme(_at_)ACM(_dot_)ORG, berson(_at_)anagram(_dot_)com,
bschanni(_at_)BayNetworks(_dot_)com,
kent(_at_)bbn(_dot_)com, pcain(_at_)bbn(_dot_)com,
mhetzel(_at_)belllabs(_dot_)com,
brickell(_at_)certco(_dot_)com,
djohnson(_at_)certicom(_dot_)ca,
schneier(_at_)counterpane(_dot_)com,
daw(_at_)cs(_dot_)berkeley(_dot_)edu,
denning(_at_)cs(_dot_)cosc(_dot_)georgetown(_dot_)edu,
smid(_at_)csmes(_dot_)ncsl(_dot_)nist(_dot_)gov,
omura(_at_)cylink(_dot_)com,
dickie(_at_)EMPIRE(_dot_)eclipse(_dot_)ncsc(_dot_)mil,
carlisle(_dot_)adams(_at_)entrust(_dot_)com,
paulv(_at_)entrust(_dot_)com,
Blake(_dot_)greenlee(_at_)greenlee(_dot_)com,
ietfsmime(_at_)imc(_dot_)org,
benaloh(_at_)microsoft(_dot_)com,
bfox(_at_)microsoft(_dot_)com,
cjwagne(_at_)missi(_dot_)ncsc(_dot_)mil,
jis(_at_)mit(_dot_)edu, "Tolga Acar"
<TACAR(_dot_)PRV7(_dot_)PROVO(_at_)novell(_dot_)com>,
merkle(_at_)parc(_dot_)xerox(_dot_)com,
BSnow(_at_)radium(_dot_)ncsc(_dot_)mil,
burt(_at_)RSA(_dot_)COM,
ekr(_at_)rtfm(_dot_)com,
jlinn(_at_)securitydynamics(_dot_)com,
ams(_at_)terisa(_dot_)com,
rivest(_at_)theory(_dot_)lcs(_dot_)mit(_dot_)edu,
balenson(_at_)tis(_dot_)com,
denny(_at_)tis(_dot_)com,
acc(_at_)tycho(_dot_)ncsc(_dot_)mil,
jhs(_at_)tycho(_dot_)ncsc(_dot_)mil,
smatyas(_at_)us(_dot_)ibm(_dot_)com,
desmedt(_at_)uwm(_dot_)edu (bcc: Don Johnson/Certicom)
Subject: Re: A New TripleDES Key Wrap Algorithm
Russ:
You are correct, of course. The question, then, is whether
we should just go to the OAEPtype wrapping and not have
to worry about changing IV's and how to convey them.
That would be my recommendation.
On a slightly different issue, several times I have strongly
urged
that in order to avoid the problem of having Nsquared
algorithm
IDs for all of the various combinations of CEK and KEK
algorithms,
key lengths, and other miscellaneous data, that we first
wrap
the CEK in a descriptive ASN.1 structure that describes the
the CEK algorithm/key, and then do the wrapping operation.
However, although I've raised this issue several times and
indicated
our strong desire to solve the key wrapping issue once and
for all,
you have neither incorporated the idea or argued against it,
so I don't know where you stand.
Obviously anyone who is processing certificates is going to
have to
have an ASN.1 decoder, and Dr. Acar, who wrote ours, assures
me that the performance implications would be negligible
compared to
almost any encryption operation.
Assuming that is the case, the only reason I could see for
not doing
it would be concern about the increase in wrapped key size,
or some lingering notinventedhere bias against
ISO/ITU/X.500
mechanisms. I certainly hope it isn't the later.
Is there anything in the existing protocol that is rigidly
sensitive to
the size of the wrapped key? If so, then that is a problem
that
probably ought to be addressed.
If not, then I believe the architectural benefits would far
outweigh
any increase in the size of the wrapped key.
Bob
>>> Russ Housley <housley(_at_)spyrus(_dot_)com> 02/26/99 10:51AM
Bob:
You raise an interesting point, but I think it can be easily
solved by a
random IV for the first encryption. Of course, this makes
the result one
block longer. And, we would need a different IV for each
wrapping.
Russ
At 10:50 AM 2/22/99 0700, Bob Jueneman wrote:
>Russ,
>
>There is a possible attack on the double encryption wrap
algorithm
>that is a result of the constant IV construction. For that
reason, I would
>strongly prefer the OAEP construction. Although it may look
complicated
>because there are more steps, the number of line of code is
really of no
>consequence at all, but the execution time is important for
performance.
>
>Also, I continue to insist that we should not invent
nsquared algorithm
>IDs for every possible combination of CEK algorithm and key
length
>plus KEK algorithm and key length. Instead, I would
_greatly_ prefer to
>first wrap the CEK in a ASN.1 structure that defines the
CEK algorithm
>and key length, then whiten that structure with OAEP,
encrypt the
resulting
>string with the KEK algorithm, and then provide generic
instructions as
>to how to decode the result, either by wrapping the entire
wrapped key
>blob in ASN.1 (preferably) or some other way.
>
>Here's the attack on the doubleencryption wrapping:
>
>Although most exhaustive search engines divide up the
search process
>across multiple machines in order to find a single key as
quickly as
possible
>(e.g., the series of RSA challenge ciphers), there is
another approach
>based on the use of an associative memory that I wrote up
back
>in the '70's but never published. I call it my
"vacuumcleaner" attack.
>
>Assume for the sake or argument that there are lots and
lots of keys
>that have been or will be used to encrypt a known plaintext
or
>stereotyped message. (This is a standard assumption in
cryptanalysis.)
>Actually, the attack will succeed with a somewhat weaker
condition 
>it isn't necessary to actually know the plaintext  it is
sufficient that
>the plaintext be unvarying.
>
>Let's also assume that each key is used for some
interesting purpose 
>sufficiently interesting that it may not be necessary to
crack each and
every
>key  just a few would be useful. For example, if I were
trying to carry
on
>a credit card attack, I don't have to find the key for Bill
Gates' or
>Donald Trump's credit card  just about anyone's will do,
and the more
>the merrier.
>
>So for every new key that I have the engine try, I contrive
to compare
>the result of encrypting the known plaintext against
millions of valid
>ciphertexts that have been intercepted, looking for a
match. Assuming
>an effectively inexhaustible supply of ciphertexts is
available, this
attack
>multiplies the effectiveness of the key search engine by an
order of a
million
>or more, depending on the size of the associative memory
that is
available.
>
>(The use of an associative memory isn't essential  it was
just a
gedanken
>experiment to speed up the comparison process without
requiring sorting.)
>
>Two things should be noted. First, this attack is
independent of the KEK
>encryption algorithm used, assuming a fixed block size. In
other words,
>this would apply to singleDES, tripleDES, umptyDES,
2048bit RSA,
>or whatever, assuming a constant session key and constant
padding.
>
>Second, the attack is also independent of the length or
type of session
>key that is used, except that the yield is a Birthday
Problem function of
the
>length of the key. But given a fixed input, i.e., no
random whitening or
>changing IV, then two or more matching outputs must imply a
matching
>session key.
>
>This leads to a rather surprising result  even if the KEK
performs
double
>encryption using tripleDES (or any other algorithm without
whitening)
>to wrap a 40 bit key, two matching session keys can be
found with
>approximately 50% probability after only 2^20 or a million
or so session
>keys have been generated.
>
>Perhaps more surprisingly, at least to people who haven't
been down this
path,
>changing session keys more rapidly may hurt more than it
helps  it just
>exposes that many more keys to attack. Changing the session
key often
>in the middle of a session may help limit the ability of
the attacker to
>access the entire message, and hence limits the attacker's
"take," but it
>increases the chances that a potentially interesting
fragment of text
>may be exposed.
>
>I'm sure that someone would observe that sending even a
million content
>encryption key encrypted in a constant KEK would be
extremely unlikely
>in an S/MIME context, but whether that would really be true
would require
>a more subtle, protocoldependent analysis than I would
care to make,
>and in addition I very much want to standardize on one key
wrapping
>algorithm that is protocol independent, and not just for
S/MIME.
>
>Obviously the above attack can be defeated by prepending
some
>additional randomness or by changing the IV. But is also
what the OAEP
>approach does, and rather more elegantly. By the time we
have to add
>either a changing IV or some additional randomness (how
much would be
>required would have to be decided) the length would
probably be close
>to that required for OAEP, which is a much more general
solution.
>
>In my mind, at least, some extra bytes in the wrapped key
is no big deal,
>but I would like the efficiency to be a good as possible.
TripleDES is
>expensive enough in terms of computational efficiency in
software,
>especially in terms of the initial key expansion, and doing
it twice
>would be worse yet.
>
>Because the new export regulations permit the use of double
the key length
>used for data encryption to be used for key encryption, we
are going to be
>using tripleDES in encryptdecryptencrypt mode with only
two keys
(ABA) for
>key wrapping of all exportgrade CEK keys.
>
>This can be optimized by saving the key expansion of the
first encryption,
and
>then reusing it for the final encryption. This technique
could
potentially be
>extended to the double encryption wrapping algorithm, by
saving the key
>expansion used for all three steps, but in order to do that
the
>"doubletripleDES"
>algorithm would probably have to be a single algorithm that
is invoked 
>it would be quite difficult to securely save state across
two separate
>encryption
>operations.
>
>So my preference, as I said earlier, would be to wrap the
CEK in ASN.1,
>whiten with OAEP, and then encrypt using whatever KEK
algorithm and
>key length is required, so we don't have to keep
reanalyzing this problem
>for every new CEK or KEK algorithm or key length.
>
>If we can define appropriate algorithm IDs, I'm willing and
eager to adopt
such
>a standard for _all_ wrapped keys generated and used
within our Novell
>International Cryptographic Infrastructure (NICI), even
before S/MIME v3
>progresses to a full standard. I'd be willing to assign an
algorithm OID
>from the
>Novell tree, or we could probably get one from PKCS if
there would be any
>problem getting one assigned by the IANA.
>
>Regards,
>
>Bob
>
>
>> Russ Housley <housley(_at_)spyrus(_dot_)com> 02/20/99 02:17PM >>>
>All:
>
>Right now, I am leaning toward the double encryption wrap
algorithm. I
>think it will be easy to implement, and it yeilds a shorter
result that
the
>OAEP method. To convince myself that it was easy to
implement, I did an
>implementation. It took me about two hours while watching
an old Jimmy
>Stewart movie. Of course, I already have SHA1 and
TripleDES CBC
>routines. S/MIME v3 will require these algorithms for
other capabilities
>besides key wrapping.
>
>If someone else is willing to do an implementation, I would
like to
compare
>results. This will allow a test vector to be included with
the algorithm
>description.
>
>Does anyone have any strong objections to the double
encryption wrap
>algorithm being selected?
>
>Russ
>
>
>>WRAP ALOGRITHM #1: DOUBLE ENCRYPTION
>>
>>Key Checksum
>>
>>The CMS Checksum Algorithm is used to provide an
contentencryption key
>>integrity check value. The algorithm is:
>>
>>1. Compute a 20 octet SHA1 message digest on the
>> contentencryption key.
>>2. Use the most significant (first) eight octets of the
>> message digest value as the checksum value.
>>
>>TripleDES Key Wrap
>>
>>1. Set odd parity for each of the DES key octets
comprising
>> the contentencryption key, call the result CEK.
>>2. Compute a 8 octet key checksum value on CEK as
described above,
>> call the result ICV.
>>3. Let CEKICV = CEK  ICV.
>>4. Encrypt CEKICV in CBC mode using the keyencryption
key. Use
>> an IV of 0xc302e3c1ad8bb738.
>>5. Reverse the order of the ciphertext octets. That is,
the most
>> significant (first) octet is swapped with the least
significant
>> (last) octet, and so on. Call the result TEMP.
>>6. Encrypt TEMP in CBC mode using the keyencryption key.
Use
>> an IV of 0x61a197e5b132e196. The ciphertext is 32
octets long.
>
>Robert R. Jueneman
>Security Architect
>Network Security Development
>Novell, Inc.
>122 East 1700 South
>Provo, UT 84606
>bjueneman(_at_)novell(_dot_)com
>18018617387
<Prev in Thread] 
Current Thread 
[Next in Thread>

 RE: A New TripleDES Key Wrap Algorithm,
Burt Kaliski <=


