General
rust-keylock is a password manager and its goals are to be:
- Secure
- Simple to use
- Portable
- Extensible
The core logic is written in Rust, but the presentation/User interaction parts are in different languages.
Features
Security
- The data is locked with a user-defined master password, using bcrypt password hashing
- Encryption using AES with CTR mode
- Data integrity checks with SHA3 (Keccak)
- Encrypted bytes blending
- Passwords are kept encrypted in memory
- Encryption keys on runtime are stored in safe, non-swappable memory
- Encryption keys change upon saving, even if the user master password remains the same. This results to different encrypted products, even if the data that is being encrypted is the same.
Application Portability
- Shell implementation running on Linux and Windows
- JavaFX implementation running on Linux and Windows
- Android implementation soon to be published in F-Droid
Thanks to xargo, cross and JNA!
Import/export mechanism
- Export/import encrypted passwords to/from the filesystem
The rust-keylock library and the Editors
The idea is that the rust-keylock library handles the core application logic, whereas the interaction with the rust-keylock users is done via libraries that have presentation responsibilities (aka Editors).
The library is responsible for the encryption/decryption, storing and retrieving encrypted data from the filesystem, taking backups (todo) and synchronizing with rust-keylock instances (todo).
The Editors are driven by the rust-keylock library and are responsible for interacting with the Users and transfer the Users' input to the library.
The documentation can be found here.
Availability
Currently, there are Editors and executables for: