SnailPass is a simple client-server password manager, that I'm writing with my colleagues to make for ourselves a convenient, custom environment for storing passwords. Now is proposed to make the applications for two platforms. The client for each of the platforms is located in different repositories:
- Windows (you are here now)
- Android
The application also has a server part, where user data will be stored.
The main idea of the application is storing user's passwords and other information in encrypted form. Encryption is carried out using a symmetric algorithm with a hashed master password as a key. At the same time a key is not stored anywhere and is never transmitted via the network, the user just has to remember it. For this reason, the data can be decrypted only locally and the server stores only the cipher.
- AES-CBC as a symmetric-key algorithm.
- Pbkdf2 as a key derivation function.
- SHA-512 as a hash function.
Application written using WPF framework (MVVM) and several external libraries:
- Autofac as DI container.
- Newtonsoft.JSON for simplifying JSON boilerplate.
- Serilog for logging.
- Microsoft.Data.Sqlite for manage data.
I intentionally used common SQL queries instead of EF as an experiment this time. :)