Hoping to get some thoughts on this because I’m happy to build something to support this concept…if it’s possible.
Today, if application data is being encrypted, it is being encrypted with a public key derived from a private key that is app-specific. And when we say app-specific, that means app origin specific. For example, if Graphite is running on https://app.graphitedocs.com and then switches to https://docs.graphitedocs.com, that’s two different app origin which would result in two different keys.
That’s all fine in my book. BUT, the problem comes when we talk about giving users full ownership of their data. I want to do this in Graphite, but as far as I can tell, it’s a promise I can’t make. The user is storing their data in a storage provider of their choice (let’s assume this is enabled and someone is using Box as a simple example). All Graphite data is encrypted. The user is able to encrypt and decrypt based on a key pair that is generated client-side and only accessible when the user logs into the app at that specific app origin.
So, if Graphite goes belly up and the user wants to get ahold of that data they stored in Graphite, they go to Box and boom, it’s all there. One problem…
That data can only be decrypted using a privateKey that is no longer accessible.
I want to make this possible for people not because I’m worried about Graphite going under but because I want to help achieve the full data portability without app reliance.
Would love to get some thoughts on what would be necessary to make decrypting data outside of the app from which it was encrypted possible without sacrificing security.