{"id":13532373,"url":"https://github.com/facebook/opaque-ke","last_synced_at":"2025-05-14T08:08:53.235Z","repository":{"id":37337394,"uuid":"269256421","full_name":"facebook/opaque-ke","owner":"facebook","description":"An implementation of the OPAQUE password-authenticated key exchange protocol","archived":false,"fork":false,"pushed_at":"2025-05-05T11:12:54.000Z","size":1329,"stargazers_count":328,"open_issues_count":8,"forks_count":49,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-05-08T00:10:04.902Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facebook.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-04T04:00:12.000Z","updated_at":"2025-05-05T11:12:58.000Z","dependencies_parsed_at":"2024-11-20T06:15:16.742Z","dependency_job_id":null,"html_url":"https://github.com/facebook/opaque-ke","commit_stats":{"total_commits":263,"total_committers":16,"mean_commits":16.4375,"dds":0.7034220532319392,"last_synced_commit":"4e525560c77476ef57e700a3514f05a021552656"},"previous_names":["novifinancial/opaque-ke"],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fopaque-ke","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fopaque-ke/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fopaque-ke/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fopaque-ke/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebook","download_url":"https://codeload.github.com/facebook/opaque-ke/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101558,"owners_count":22014908,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T07:01:10.489Z","updated_at":"2025-05-14T08:08:48.175Z","avatar_url":"https://github.com/facebook.png","language":"Rust","funding_links":[],"categories":["Cryptography","Libraries"],"sub_categories":["Others","Cryptography"],"readme":"##  The OPAQUE key exchange protocol ![Build Status](https://github.com/facebook/opaque-ke/workflows/Rust%20CI/badge.svg)\n\n[OPAQUE](https://eprint.iacr.org/2018/163.pdf) 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.\n\nThis implementation is based on the [Internet Draft for OPAQUE](https://github.com/cfrg/draft-irtf-cfrg-opaque).\n\nBackground\n----------\n\nAugmented 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.\n\nOPAQUE is a PKI-free aPAKE that is secure against pre-computation attacks and capable of using a secret salt.\n\nDocumentation\n-------------\n\nThe API can be found [here](https://docs.rs/opaque-ke/) along with an example for usage. More examples can be found in the [examples](./examples) directory.\n\nInstallation\n------------\n\nAdd the following line to the dependencies of your `Cargo.toml`:\n\n```\nopaque-ke = \"3\"\n```\n\n### Minimum Supported Rust Version\n\nRust **1.74** or higher.\n\nAudit\n-----\n\nThis library was audited by NCC Group in June of 2021. The audit was sponsored by WhatsApp for its use in [enabling end-to-end encrypted backups](https://engineering.fb.com/2021/09/10/security/whatsapp-e2ee-backups/).\n\nThe audit found issues in release `v0.5.0`, and the fixes were subsequently incorporated into release `v1.2.0`. See the [full audit report here](https://research.nccgroup.com/2021/12/13/public-report-whatsapp-opaque-ke-cryptographic-implementation-review/).\n\nResources\n---------\n\n- [OPAQUE academic publication](https://eprint.iacr.org/2018/163.pdf), including formal definitions and a proof of security\n- [draft-irtf-cfrg-opaque-17](https://datatracker.ietf.org/doc/draft-irtf-cfrg-opaque/17/), containing a detailed (byte-level) specification for OPAQUE\n- [\"Let's talk about PAKE\"](https://blog.cryptographyengineering.com/2018/10/19/lets-talk-about-pake/), an introductory blog post written by Matthew Green that covers OPAQUE\n- [@serenity-kit/opaque](https://github.com/serenity-kit/opaque), a WebAssembly package for this library\n- [opaque-wasm](https://github.com/marucjmar/opaque-wasm), a WebAssembly package for this library. A comparison between `@serenity-kit/opaque` and `opaque-wasm` can be found [here](https://opaque-documentation.netlify.app/docs/faq#how-does-it-compare-to-opaque-wasm)\n- [react-native-opaque](https://github.com/serenity-kit/react-native-opaque), a React Native package for this library matching the API of `@serenity-kit/opaque`\n\nContributors\n------------\n\nThe authors of this code are Kevin Lewi\n([@kevinlewi](https://github.com/kevinlewi)) and François Garillot ([@huitseeker](https://github.com/huitseeker)).\nTo learn more about contributing to this project, [see this document](./CONTRIBUTING.md).\n\n#### Acknowledgments\n\nSpecial thanks go to Hugo Krawczyk and Chris Wood for helping to clarify discrepancies and making suggestions for improving\nthis implementation. Additional credit goes to @daxpedda for adding no_std support, p256 support, and making other general\nimprovements to the library.\n\nLicense\n-------\n\nThis project is dual-licensed under either the [MIT license](./LICENSE-MIT)\nor the [Apache License, Version 2.0](./LICENSE-APACHE).\nYou may select, at your option, one of the above-listed licenses.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Fopaque-ke","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacebook%2Fopaque-ke","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Fopaque-ke/lists"}