I only need 2 things.

1) The user to know that only him (not even then admins) can decrypt his data that rely on my server. He will always provide his key to decrypt data.

2) To be able to provide this service to him for many years to come , with any upcoming changes in client side cryptography methods.

Should i go for it or rely only on good https, password strength and server database encryption?

The platform will start as laravel application.

2 Answers 2

He will always provide his key to decrypt data.

Well, if this is sensitive data, and you are keeping it encrypted, it would be nice to avoid transmitting a key he's holding onto via the network. If you mean just encrypting the line, then yes HTTPS will do, but that doesn't ensure that only he can see the data, as you already, you know, have possession of it.

Should i go for it or rely only on good https, password strength and server database encryption?

Https protects the data in transit. Encryption on the database level protects the data at rest. However, the only guarantee that you, or anyone administering the server can't see the data is that you never have the decryption keys at any point in the process. If the user sends you the key, you could be malicious and keep it forever.

Therefore, for the user to be sure, he or she must hold on to the key himself, and you must never see it.

  • This means then only one thing. Client-side js encryption?
    – e4rthdog
    Feb 18, 2015 at 6:30
  • 1
    Or you may have to falter on your promise that you can't read the users data. Depends on how your app is setup, but client side encryption / key storage is its own affair. What if the user loses his key? That would not be a happy day. Feb 18, 2015 at 12:36
  • Thanks. I will not falter on my promises , but i would rather stress the fact that when you go online , by definition you "accept" certain circumstances..
    – e4rthdog
    Feb 18, 2015 at 13:53

Your options and your requirements do not seem to match. If you rely on HTTPS, password strength, and server database encryption, then the admin can, in fact, access the decrypted data. SO, if requirement 1 is actually a requirement, then this option is not viable. If, however, requirement 1 is merely a "nice to have" then this option might work.

So, the question is: Is requirement 1 actually a requirement? If it is, then your only real option is client-side encryption. For any reasonable assurance of integrity, this requires either a client-side application or browser plug-in without automatic update mechanisms. Server-based mechanisms are simply too easy to subvert to be serious contenders.

  • I see. What could be a solution for client-side encrytpion for long term? Imagine if after 5 years i change the client side encryption logic....
    – e4rthdog
    Feb 18, 2015 at 6:31

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .