[OTR-dev] Flaw in OTR Protocol (with workaround!)

Greg Troxel gdt at ir.bbn.com
Thu Aug 4 10:39:27 EDT 2005


Ian Goldberg <ian at cypherpunks.ca> writes:

> > Well, there's really only one Free implementation...  Of course I'm
> > using gnupg.
> 
> Today, that's true.  Are more people using gpg on, say, Windows, than
> pgp?  How would we know?  Do we care?

This raises the issue that programs should be able to invoke openpgp
operations in a portable way.  Gnome would have a corba service, and
while complicated it's semantically sensible.

> > I have gpg set up, and public/private ring, for normal email use.  I
> > have cross-signatures with my friends and colleagues, who are, not
> > super coincidentally, the same people I want to do OTR with.
> 
> Well, first note that approximately everyone who uses OTR is not in this
> situation (having already done the work of manually verifying the
> fingerprints of friends' keys), but go on.

You are saying that most OTR users do not use PGP?  I can believe that.

> > I run OTR on the same computer, and generate an OTR public/private
> > keypair.
> > 
> > Somehow, I:
> >   export my OTR public key to gnupg
> >   sign my OTR public key with my regular gpg key
> >   import that signature back to OTR
> > 
> > For machines where I don't have my pgp private keys, perhaps this is a
> > bit harder, but still not that bad.
> 
> There's a highly non-trivial beast hiding in "somehow".

Yes, but it's not amazingly hard.  click on "export OTR signing key to
file", gpg --import, gpg --edit-key, sign, gpg --export, "import OTR
signing keys from file".

> > My client sends not only my public key, but also the signatures.  My
> > client receives the other person's public OTR key and signatures.  My
> > client asks gnupg (somehow) to verify the signature, and the trust
> > path from a PGP WoT viewpoint.  If acceptable to PGP (i.e., would be
> > used to send mail w/o warning), I don't get a popup, or I get
> > different status.
> 
> Surely you don't want the gpg signature to be transmitted on *every*
> key exchange?  You only need to send it once.  The CVS version has an
> explicit step for "verify fingerprint"; *technically*, a plausible thing
> to do would be to allow the user to choose between

i meant on initial conversation, but we could have a 'sigs available'
TLV with a 'send sigs' request.

> 1) manual fingerprint comparison with an out-of-band source
>    [the only method currently supported]
> 2) preshared secret
> 3) gpg
> 4) fleem-based protocols, etc.
> 
> But someone will have to come up with a UI for this which is highly
> non-sucky.

sure, but I'm trying to suggest putting the hooks in the protocol so
that can happen without a protocol change.

> > For this I need the public part of my keyring, but not the private
> > keyring.
> 
> So the gaim-otr app should go looking on your disk for your public
> keyring, parse it, and do the verification?  Or just spawn gpg itself in
> some invocation?

The right way probably involves some on-machine RPC to a PGP service,
which could involve spawning gpg, especially at first.

> > The result is that I can use the long-term signing keys to verify OTR
> > signing keys.  This has two advantages:
> > 
> >  * it leverages the work I've already done for PGP key exchange (which
> >    is hard, and we know most people aren't as rigorous about this as
> >    they perhaps should be)
> > 
> >  * because of the leverage, it makes it far more likely that OTR
> >    signing keys will be actually verified somehow
> 
> But only in the event that you *have* done the work with pgp/gpg
> already.  Which almost everyone has not.

But if they haven't, they probably aren't checking OTR signing key
hashes either.

> There's certainly a place in the "verify fingerprint" part of the
> protocol for gpg signatures.  But both integration and UI are likely to
> be nightmarish.

If you think that if the UI part is addressed the protocol can handle
gpg sigs w/o an incompatible wire change, then that's what matters for now.

> [Check out the CVS version to see the new "verify fingerprint" mechanism.]

will put on copious spare time list :-)

-- 
        Greg Troxel <gdt at ir.bbn.com>



More information about the OTR-dev mailing list