Quoth Richard Miller <9f...@hamnavoe.com>: > I'm using a new subject [was: Interoperating between 9legacy and 9front] > in the hope of continuing discussion of the vulnerability of p9sk1 without > too many other distractions. > > mo...@posixcafe.org said: > > If we agree that: > > > > 1) p9sk1 allows the shared secret to be brute-forced offline. > > 2) The average consumer machine is fast enough to make a large amount of > > attempts in a short time, > > in other words triple DES is not computationally hard to brute force > > these days. > > > > I don't know how you don't see how this is trivial to do. > > I agree that 1) is true, but I don't think it's serious. The shared secret is > only valid for the current session, so by the time it's brute forced, it may > be too late to use. I think the bad vulnerability is that the ticket request > and response can be used offline to brute force the (more permanent) DES keys > of the client and server. Provided, of course, that the random teenager > somehow > is able to listen in on the conversation between my p9sk1 clients and servers. > > On the other hand, it's hard to know whether to agree or disagree with 2), > without knowing exactly what is meant by "large amount", "short time", > "computationally hard", and "trivial". > > When Jacob told me at IWP9 in Waterloo that p9sk1 had been broken, not > just theoretically but in practice, I was looking forward to seeing > publication > of the details. Ori's recent claim in 9fans seemed more specific: >
The intial exchange sends across the challenges: C→S: CHc S→C: AuthTreq, IDs, DN, CHs, -, - Because the challenge and IDs are sent as plain text, if I can decrypt the client message with a key and find my known plain text, that key will work to authenticate the client. For example, if I have a ticket, and a trace of the first few packets of the key exchange, I have enough information to do something like this: ticketpair = { Kc{AuthTc, CHs, IDc, IDr, Kn}, Ks{AuthTs, CHs, IDc, IDr, Kn} } cmsg = ticketpair[0] for(k in keyspace){ m = decrypt(k, cmsg) if(m.CHs == CHs && m.IDs == IDs) probably_bingo() } At that point, I need to guess the username, but this often is relatively easy -- often, this is posted publicly; you can probably guess that my user is 'ori' without trouble. With those bits of information, you're able to complete a new exchange as the client, and log in successfully. The EFF was cracking DES keys in 22 hours back in 1998. https://en.wikipedia.org/wiki/EFF_DES_cracker Hardware, in particular GPUs, have gotten quite a bit better since then. ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/T56397eff6269af27-Mbe7e83e1e06339063e6d8e8f Delivery options: https://9fans.topicbox.com/groups/9fans/subscription