Everytime I dig into PAKEs, I find disappointment. If we all used a PAKE from the start of computers, maybe we'd be better off, but that's just because we would have been burned by them a dozen times. Right now the tech is very immature and asking a Dev to use these is essentially asking them to pick a cipher mode and padding for AES. There are no browser native SRP implementations and WebCrytpo doesn't support the primitives. The complexity these add isn't worth it for your vanilla website, IMO.
SRP is a great PAKE (password-authenticated key agreement), it can make certain types of attacks to steal a password (like MITM) nearly impossible.<p>There's also a newer PAKE that improves slightly on SRP, called SPAKE2: <a href="https://datatracker.ietf.org/doc/draft-irtf-cfrg-spake2/?include_text=1" rel="nofollow">https://datatracker.ietf.org/doc/draft-irtf-cfrg-spake2/?inc...</a>
I’ve been following CFRG’s PAKE contest (<a href="https://github.com/cfrg/pake-selection" rel="nofollow">https://github.com/cfrg/pake-selection</a>) with some interest.<p>The various algorithms are fascinating and almost, you might say, fairly approachable.
> What we needed, in this case, is a strong Zero-knowledge proof (without transferring password) system that does mutual authentication on the client & server.<p>I've not heard of SRP before, but it seems like it's trying to solve an already solved problem, and in a seemingly more complicated manner. The W3C's Web Authentication spec[1,2], on the other hand, looks very promising, and I'm hoping all browser vendors will get behind it once it's finished.<p>[1] <a href="https://webauthn.io" rel="nofollow">https://webauthn.io</a><p>[2] <a href="https://www.w3.org/TR/webauthn-1/" rel="nofollow">https://www.w3.org/TR/webauthn-1/</a>
is anyone aware of a pre-existing Python implementation of this that isn't `warrant` (which appears to be unmaintained as it has several significant issues in its underlying crypto stack)?<p>I'm tempted to spend some time writing one (AWS Cognito uses SRP), but also have other things I could do... :)
SRP would be extremely interesting for the web configuration interfaces for IoT devices. We want TLS even locally, but trusting vendor suppled certificates is bad. Implementing SRP on IoT devices would solve these problems, but would need much better support of SRP from the browser vendors.
I feel dumb asking this, but does current industry authentication methods (secure channel via TLS) send the actual password, or a derived challenge-response value through the secure channel? I thought it was the latter.