Non-cipher preferences (Was: Re: --override-session-key $PASS simple brute force attack vulnerability?)
Brian M. Carlson
karlsson@hal-pc.org
Wed Jul 17 02:01:02 2002
--rPgHZmYkQ+bUEpVC
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On Tue, Jul 16, 2002 at 06:57:01PM -0400, David Shaw wrote:
> On Tue, Jul 16, 2002 at 10:21:45PM +0000, Brian M. Carlson wrote:
> > On Mon, Jul 15, 2002 at 11:44:23PM -0400, David Shaw wrote:
> > > On Tue, Jul 16, 2002 at 12:10:47AM +0000, Brian M. Carlson wrote:
> > > > On Mon, Jul 15, 2002 at 05:55:49PM -0400, David Shaw wrote:
> > >=20
> > > > > Look at it in terms of functionality. Let's say I'm encrypting a
> > > > > message to you, and the question arises whether to compress it, a=
nd
> > > > > what algorithm to use. I consult your compression preferences an=
d see
> > > > > that you allow ZLIB only. My implementation can only do ZIP. No=
w we
> > > > > cannot communicate. The answer is, of course, to not to compress=
-
> > > > > which would violate your interpretation of the RFC. Again: if I =
do
> > > > > not use the implied "uncompressed" setting at the end of your lis=
t,
> > > > > then we cannot communicate at all.
> > > >=20
> > > > You have a valid point. However, 12.2.1 goes on to say, "Additional=
ly, an
> > > > implementation MUST implement this preference to the degree of
> > > > recognizing when to send an uncompressed message. A robust implemen=
tation
> > > > would satisfy this requirement by looking at the recipient's prefer=
ence
> > > > and acting accordingly. A minimal implementation can satisfy this
> > > > requirement by never generating a compressed message, since all
> > > > implementations can handle messages that have not been compressed."=
I
> > > > think this solves that problem. The implied uncompressed setting
> > > > should be at the end of this list when there is a conflict so a mes=
sage
> > > > can be generated.
> > >=20
> > > Indeed, this is my point, and this is exactly what GnuPG does. If
> > > there is no "uncompressed" anywhere in the list, it is added to the
> > > end.
> >=20
> > But this should not be displayed if the user did not choose such an
> > algorithm. That is lying to the user.
>=20
> If the user selects "showpref", GnuPG shows what the preferences are
> *in effect*. That is, including 3DES/SHA1/Uncompressed if they are
> not already present. This is because GnuPG is going to act on those
> pseudo-preferences whether or not they are physically present.
=20
> If the user selects "pref", GnuPG shows what the preferences are *on
> the key*. If the key owner hates SHA1, then they can leave it out and
> it won't sully their display. Either way, it doesn't change that
> GnuPG is going to use the implied preferences if all else fails.
This should be documented.
=20
> > SHA1 is MUST-implement, yes. There are times when there are no mutually
> > agreeable hashes, yes. If there is a mutually agreeable hash, it should
> > be chosen. Adding SHA1 gives preference to a hash that was never there.
>=20
> Preference is perhaps the wrong word here. The implied "preference"
> for SHA1 does not imply that SHA1 is favored or even a good choice.
> All it means is that **if all else fails**, we still have a hash
> algorithm.
I think a different algorithm for choosing the last-ditch hash algorithm
would be better.
> What exactly are we arguing about here? That I'm calling it a
> "preference", that the user can see it, or that it is used as the
> last-ditch hash choice?
I think we're arguing about using it as the last-ditch hash choice.
=20
> Anyway, we're going in circles now, so let me summarize with the
> example again:
>=20
> 1) All OpenPGP programs have SHA1.
> 2) Your implementation has RIPEMD160, TIGER192, and SHA1.
> 3) Your preferences are RIPEMD160 and TIGER192.
> 4) My implementation has only SHA1.
Ok.
> Now, I want to encrypt and sign a message to you. What does my
> implementation do:
It uses SHA1.
=20
> a) fail (unacceptable)
> b) use SHA1 (remember - I know you have it because ALL OpenPGP
> programs have it by definition)
> c) other (??)
>=20
> I won't do a), and you seem to fear b). I'm all ears if you have a
> good c). Bear in mind that in OpenPGP, the SENDER controls what hash
> algorithms are used. NOT THE RECEIVER. The most the receiver can do
> is say (via the preference list): "please use one of these
> algorithms". You don't get to tell other users they can't use SHA1.
> That's their choice.
I quite understand that I can't dictate to other users what hash
algorithms they can or can't use. That's not what I'm trying to
do. Should there not be a compatible algorithm, I have a whole host of
suggestions:
c) use the first algorithm on the SENDER's list.
d) use the intersection of personal-digest-preferences and the
RECIPIENT's list if it (the intersection) is non-null, otherwise c).
e) print a warning message, and use SHA1 anyway.
I think d) is courteous, c) is pragmatic, and e) is to let people know
that negotiation failed. The reason I prefer e) over b) is because we
warn people when cipher algorithm negotiation failed, and I see no reason
not to do so with hash algorithms also. I much prefer d), then somewhat
c), then less e).
--=20
Brian M. Carlson <karlsson@hal-pc.org> <http://decoy.wox.org/~bmc> 0x560553=
E7
"Don't worry about people stealing your ideas. If your ideas are any good,=
=20
you'll have to ram them down people's throats."
-- Howard Aiken
--rPgHZmYkQ+bUEpVC
Content-Type: application/pgp-signature
Content-Disposition: inline
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.1.90 (GNU/Linux)
Comment: Ubi libertas, ibi patria.
iQFKBAEBAwA0BQI9NLPqLRpodHRwOi8vZGVjb3kud294Lm9yZy9+Ym1jL29wZW5w
Z3AvcG9saWN5LnRleAAKCRDlkf/JVgVT52XMB/sHKMoazOBj1npqrVIZZXJb2Zei
dtiFuKTjzgokwpNX8lWnklhylRgQwoZRm7Opk2AbqIuXbZYcA0wX/jfHEhT0Juqu
APUuL46x9OrN/a4yH7x+ptirabrkqrcn6JU3tbliqDbctmfpZcL44skRMk7SWfZv
NYuz5Sg3n5ncq77/Nfa6Wv7sxo0UVmvNcMALCFLtjrvFVNIhYFTVH5XG/k1nMGSW
uj+9keGk+DwlIefDnXS5S+k62UiLeuf/JbwGuzQhxhG4LDqJwz5W7Mtc8W5l6YeD
IDYvR9yWMAqvmqo2gbagQzPnPmwDGaJaKadNKJfz9max9xeq4d43dckACh8a
=eqg/
-----END PGP SIGNATURE-----
Signature policy: http://decoy.wox.org/~bmc/openpgp/policy.tex
--rPgHZmYkQ+bUEpVC--