Subject: Re: Suggested changes for DSA2

From: [email-masked] ("Hal Finney")
Date: Tue, 28 Mar 2006 15:50:58 -0800 (PST)

David Shaw wrote:
> On Tue, Mar 28, 2006 at 01:04:12PM -0800, "Hal Finney" wrote:
>
> > I support David's suggestion to include a SHOULD relating hash size to key
> > size.  But it makes sense to me to extend our current key size SHOULD
> > recommendations to include advice regarding subgroup size, hash size,
> > and symmetric cipher key size.  This would correspond to Table 2 on page
> > 63 of NIST's SP800-57:
> > http://csrc.nist.gov/publications/nistpubs/800-57/SP800-57-Part1.pdf
> > 
> > The sizes from that table are:
> > 
> >  1024 /  160 /  80
> >  2048 /  224 / 112
> >  3072 /  512 / 256
> >  7680 /  768 / 384
> > 15360 / 1024 / 512
> > 
> > where the 1st column is the RSA, DSA or DH modulus size, the second
> > column is the hash/subgroup size, and the 3rd column is the symmetric
> > cipher key size (which is also the strength in bits).
>
> Are you sure that table is correct?  I thought it was:
>
>   1024 / 160 /  80
>   2048 / 224 / 112
>   3072 / 256 / 128
>   7680 / 384 / 192
>  15360 / 512 / 256

Yes, sorry, you're right.  I transcribed it wrong and doubled when I
should have halved.

> I'm not sure this is the right way to go about it.  Is balance
> actually what we want, or would it be better to just remind people
> that the weakest parameter constrains the level of security?  There is
> nothing invalid about a 8192-bit RSA key making SHA-1 signatures.  It
> just means that the signature has at most 80 bits of strength.  The
> signer could have used a 1024-bit RSA key and gotten the same 80 bits
> of strength, but that doesn't make the 8192-bit signature wrong (just
> large).  My suggested wording was more to encourage implementors to
> indicate the actual strength, rather than to force balance.
>
> How about this (presumably for the Security Considerations section):
>
>    As OpenPGP combines many different asymmetric, symmetric, and hash
>    algorithms, each with different measures of strength, care should
>    be taken that the weakest element of an OpenPGP message is still
>    sufficiently strong for the purpose at hand.  Implementations
>    receiving messages SHOULD indicate to the user the actual strength
>    of the messages.  While consensus about the the strength of a given
>    algorithm may evolve, at publication time, NIST Special Publication
>    800-57 [SP800-57] recommended the following list of equivalent
>    strengths:
>
>        [ put table here ]

I like this general direction, but I don't think it will work to indicate
to users the actual strength of message encryptions or signatures.
There is no convenient way to express this information that will be
understandable to the layman.  We could say that a DSA1 signature has 80
bits of strength, and a 2048 bit RSA encryption using AES-256 has 112 bits
of strength, but that is too technical and also in most cases too much
information.  It's also non-standard practice in crypto implementations
to provide this information, and I don't feel comfortable putting in
a requirement for something this novel, without having experience to
justify it.

I can see that invalidating 2048 bit RSA key signatures that use SHA-1
is not the right thing to do either, which my earlier language proposal
could be interpreted to recommend.

> I'm still in favor of making the NIST list a SHOULD for generating
> DSA2 keys, of course.

Okay, well, maybe the rest of it is too complex to deal with for now.

Hal

---

From: David Shaw <[email-masked]>
Date: Wed, 29 Mar 2006 11:33:22 -0500

> a requirement for something this novel, without having experience to

I actually think this may well be simpler than what we have now.
Right now GPG says things like "Signature made with 4096-bit RSA key"
and optionally "Hash used was SHA-1" and such.  I don't have a copy of
PGP handy at the moment to check, but I recall it doesn't say either.
Saying something like "This signature is 80 bits strong" would
actually give a single, reasonably accurate number to indicate
relative strength.  I doubt many users can translate "4096 bit RSA
with SHA-1" into a strength value they can compare with other strength
values.

However, you're quite right that it is a large step to make such a
thing a SHOULD without any experience to justify it first.  Certainly
any implementation that wants to experiment down that route can do so
without any special mandate in the standard.

Dropping the notification SHOULD from the change gives this (for the
Security Considerations section):

   As OpenPGP combines many different asymmetric, symmetric, and hash
   algorithms, each with different measures of strength, care should
   be taken that the weakest element of an OpenPGP message is still
   sufficiently strong for the purpose at hand.  While consensus about
   the the strength of a given algorithm may evolve, at publication
   time, NIST Special Publication 800-57 [SP800-57] recommended the
   following list of equivalent strengths:

      [ put table here ]

This is perhaps stating the obvious, but I think still worth
mentioning.

> Okay, well, maybe the rest of it is too complex to deal with for now.

Ok.  I'll roll together a change take 4 and send it to the list.

David