[curves] PAKE use cases
Brian Warner
warner at lothar.com
Fri Feb 6 18:57:15 PST 2015
On 10/8/14 5:08 PM, Trevor Perrin wrote:
> If anyone knows other protocols where PAKE would be useful, that would
> also be helpful.
I've been working on PAKE recently, so I thought I'd resurrect this
four-month-old thread to mention the use-cases that I've cared about at
various times in the last several years:
Firefox Sync (1):
The original design used J-PAKE to transfer long-term encryption keys
(for bookmarks/history/etc) from one user's browser to another. (see my
RWC2014 slides: http://www.lothar.com/presentations/fxa-rwc2014/, or
https://www.youtube.com/watch?v=G16rOGmpBUc for why we stopped). The
human transcribed a short random code from one browser to the other,
then the browsers performed PAKE to build a session key for the
credential transfer, without giving any special trust to a server. So
the desired properties are:
* balanced is fine, no need for augmented
* named sides are ok (we know which side is which, one side displays
code, the other accepts it), no need for a fully symmetric protocol
Firefox Sync (2):
A later, abandoned design (also mentioned in that RWC presentation)
used SRP to prove knowledge of the user's password (to a server), and
to protect transfer of a wrapped long-term encryption key from the
server back to the client. The client would feed the user's password
through scrypt(), use the stretched form as input to SRP, use the SRP
session key to protect delivery of a stored wrapped key, then the
client would use a different scrypt() derivative to unwrap that key. An
attacker who steals the backend database would get a dictionary attack
on the user's password limited by the scrypt() step, but a mere MitM
would only get a single guess, and a passive eavesdropper would get
nothing.
* augmented is necessary
* we really wanted extra-augmented: a work factor more than a single
group exponentiation. As discussed elsewhere, this is maybe
impossible
Petmail/Pond/Panda:
Clients are introduced to each other by means of a short "invitation
code", transcribed by humans or cut-and-pasted over pre-existing
channels like email or IM. Clients then find a way to rendezvous and
exchange messages, and PAKE is used through that channel to protect
exchange of long-term identity and encryption keys (including the
initial set of keys for a DH ratchet).
* balanced is fine
* named sides are a nuisance: there's no obvious difference between the
two sides, and asking users to remember arbitrary labels would hurt
usability
cheers,
-Brian
More information about the Curves
mailing list