You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OPAQUE is an augmented password-authenticated key exchange protocol. It allows a client to authenticate to a server using a password, without ever having to expose the plaintext password to the server.
Augmented Password Authenticated Key Exchange (aPAKE) protocols are designed to provide password authentication and mutually authenticated key exchange without relying on PKI (except during user/password registration) and without disclosing passwords to servers or other entities other than the client machine.
OPAQUE is a PKI-free aPAKE that is secure against pre-computation attacks and capable of using a secret salt.
Documentation
The API can be found here along with an example for usage. More examples can be found in the examples directory.
Installation
Add the following line to the dependencies of your Cargo.toml:
opaque-wasm, a WebAssembly package for this library. A comparison between @serenity-kit/opaque and opaque-wasm can be found here
react-native-opaque, a React Native package for this library matching the API of @serenity-kit/opaque
Contributors
The authors of this code are Kevin Lewi
(@kevinlewi) and François Garillot (@huitseeker).
To learn more about contributing to this project, see this document.
Acknowledgments
Special thanks go to Hugo Krawczyk and Chris Wood for helping to clarify discrepancies and making suggestions for improving
this implementation. Additional credit goes to @daxpedda for adding no_std support, p256 support, and making other general
improvements to the library.
License
This project is dual-licensed under either the MIT license
or the Apache License, Version 2.0.
You may select, at your option, one of the above-listed licenses.
About
An implementation of the OPAQUE password-authenticated key exchange protocol