在客戶端設備上,同步的Realm可以使用加密密鑰進行設置,該加密密鑰對用戶是唯一的,並存儲在設備密鑰鏈中,因此數據在客戶端進行加密存儲。 (相關問題:Can "data at rest" in the Realm Mobile Platform be encrypted?)Realm移動平臺可以實現端到端的加密嗎?
Realm對象服務器和客戶端可以通過TLS進行通信,因此數據在傳輸過程中進行加密。
但由於管理員用戶能夠通過Realm Browser(https://realm.io/docs/realm-object-server/#data-browser)訪問所有數據庫內容,所以Realm對象服務器似乎不使用加密存儲數據。
是否有可能設置Realm移動平臺,以便用戶數據端對端加密,如沒有人但用戶(甚至服務器管理員)無權訪問解密密鑰?
端到端加密與靜態加密之間存在差異。想想你的Whatsapp聊天:有e2e加密,聊天中的兩部分都能看到內容。如果您不希望服務器管理員訪問您的數據,那麼在離開它之前應該在設備上加密數據。這樣加密密鑰將保留在設備上,並且數據在服務器上不可用。 – Orlando
所以看起來,實現這一目標的唯一方法是使用存儲在設備鑰匙串上的密鑰手動加密我的Realm模型中的所有字段?但是,這將破壞Realm Mobile Platform的「同步」功能,除非我還可以在用戶設備之間同步該加密密鑰(使用第三方安全同步機制,如iCloud Keychain)。也許可行但不太實際。 – ewerx
這取決於您正在存儲的數據的類型。如果你正在用戶之間進行聊天,那麼e2e加密是有道理的。在任何其他情況下,我認爲您的報價可以使用設備上的密碼加密數據,並且在其他設備上需要使用相同密碼才能解密數據。我不知道這是否可擴展。無論如何,這是加密筆記在Evernote時間前工作的方式(我不再是Evernote用戶)。請檢查您的選項。你必須選擇。 – Orlando