Privy project planning
![](https://cdn3.iconfinder.com/data/icons/message-2-glyph/512/22_Encrypted_Message-512.png)
About
- Privy is a distributed, cryptographically secured chat application
- Decentralized means that there is no central server
- Instead it relies on a peer-to-peer network architecture, where every user is both a client and a server
- Instead of trusting the server for the security of user data, users trust in the security of cryptographic encryption standards (virtually unbreakable at the moment and for a long time to come)
![](https://s3.amazonaws.com/kfai-documents/images/27f500b13b/Screen-Shot-2020-11-03-at-11.38.36-AM.png)
Privy requirements
- Communication:
- users can exchange messages without the need of a relay service such as a server
- Privacy:
- messages are strongly encrypted such that only the participants can read the contents
- Persistence:
- users can login from different devices and still access their previous messages
Privy WBS - top level
- Research
- Feasibility research
- Market research
- Technical research
- Backend - functionality
- Encryption
- Communication
- Persistence
- Frontend - presentation
- Privy CLI
- Privy Desktop
- Privy Mobile
- Documentation
- User manual
- Technical documentation
Privy WBS - backend
-
Encryption
-
Implement symmetric encryption
-
Implement asymmetric encryption
-
Key Exchange
-
Signatures
-
-
-
Communication
-
1 : 1 messaging
-
message sending -publish
-
message handling -subscribe
-
encryption : asymmetric encryption
-
-
group messaging
-
message sending
-
message handling
-
encryption : symmetric encryption with initial key exchange
-
-
-
Persistence
-
persist public data - unencrypted, write all
-
store user info : userId and public key
-
-
persist private data - encrypted write restricted
-
store friends list
-
store messages
-
-
Privy WBS - frontend
-
Privy CLI
- Privy Daemon
- Listen for messages
- Save messages
- Privy CLI parser
- implement commands: login, logout, friend add, friend list, friend remove, send message, show messages, show user info, run privy daemon
- Privy Daemon
-
Privy Desktop
- Create design spec
- Create mockups
- Implement features
- Login page
- Messages page
- Add friends
- Remove friends
- Show messages
- Settings page
- Logout
- View user info
- Delete account
-
Privy mobile
- Privy Android - same as Desktop but optimized for smaller screen size
- Privy iOS - same as Desktop but optimized for smaller screen size
Estimations
- Cryptography module, symmetric key encryption: implementation
- The algorithm is a well defined one (AES), with several reference implementations. Therefore it is only a matter of implementing the algorithm in given target language and fine tuning it to our specific needs (such as key length etc)
- I estimated a maximum of one week for this task, which translates to 40 hours
- Cryptography module, asymetric key encryption : implementation
- This algorithm is also well defined (RSA) but a little more complicated, it involves more steps and more complicated maths. Also, we need to modify it considerably from standard implementation, since instead of generating a random key pair, we want a password seeded keypair. (Same password will generate same keypair, independent of time or place). This implies swapping out the truly random seeded CSPRNG to a seeded CSPRNG.
- Therefore I estimated this task to take at least two weeks. Cryptography is hard and it is easy to get it wrong, so it is better to overestimate here. => 80 hours.
Privy project planning
By Godra Adam
Privy project planning
- 16