Skip to content
This repository has been archived by the owner on Jan 26, 2023. It is now read-only.

Encryption #6

Open
ghost opened this issue Feb 4, 2016 · 4 comments
Open

Encryption #6

ghost opened this issue Feb 4, 2016 · 4 comments

Comments

@ghost
Copy link

ghost commented Feb 4, 2016

I'd like to suggest end-to-end encryption from the android app to the server and vice versa! I feel like this is an important feature given that the android app uses GCM.

@Mechazawa
Copy link
Member

Would libsodium suffice?

@skorokithakis
Copy link

libsodium would be an excellent choice. I came here to suggest authentication, because, currently, anyone who knows my service's name (which does not seem to be guaranteed to be private) can subscribe to read my (private) notifications), but end-to-end encryption with a symmetric key would be even better.

@skorokithakis
Copy link

As a suggestion, encryption could work like this:

  • Each service accepts an encryption key upon creation (or, even better, an encrypted boolean parameter) and returns the items encrypted=true (or false for plaintext services) and encryption_key in its JSON response.
  • From then on, all notifications sent by that service will be symmetrically encrypted to that key with libsodium.
  • To subscribe to the service, the user does not need to specify the encryption key (to avoid sending it over the wire), but must know it, otherwise they won't be able to decrypt the messages.
  • When subscribing to an encrypted service, a client should specify the secret key to the app or client library.

I think that would work pretty well. How does that sound?

@skorokithakis
Copy link

I have added a PR that implements the above proposal, minus the actual encryption (since that requires client changes as well).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants