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