Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mindbeam/keyplace
https://github.com/mindbeam/keyplace
Last synced: 13 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/mindbeam/keyplace
- Owner: mindbeam
- License: apache-2.0
- Created: 2021-02-23T05:50:35.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-02-01T07:01:27.000Z (almost 3 years ago)
- Last Synced: 2024-10-14T06:41:06.468Z (about 1 month ago)
- Language: Rust
- Size: 20.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# KeyPlace
* Human friendly key derivation
* Server-assisted + persisted
* Attack resistant
* Use it in WASM or _wherever_# Why
So, you use paired-key cryptography on the internets, but you're getting fed up with silly humans writing their private keys on cocktail napkins? SAD!
What if I told you there were a way for YOUR server to help manage these keys, but in a not-totally-crappy way?
It slices, it dices:
* Securely derive private keys with no persistant storage on the user's station!
* The server helps, but cannot actually see the keys. If your server gets pwned, you still win!
* You get to change your keys and passwords independently!But wait, there's more:
* Store multiple keys using that one password
* Store each key using multiple passwords
* You can implement secure key recovery techniquesKeyPlace is inspired by the Keybase key derivation algorithm https://book.keybase.io/docs/crypto
```
use keyplace::{AgentKey,PassKey};
let agentkey = AgentKey::create(None);let passkey = PassKey::new("I like turtles");
let custkey = agentkey.custodial_key(passkey);// the custodial key is safe to send to the server
// Never send the passkey to anyone!!let passkey2 = PassKey::new("I like turtles");
let agentkey2 = AgentKey::from_custodial_key(custkey, passkey2).unwrap();
```