[英]If I store a private key inside KeyStore from app A, is it possible to retrieve that same key from app B?
我正在處理一個Android
多模塊(多個應用程序)項目,遇到了一個用例,我必須保存一些可以被所有這些應用程序訪問的秘密信息。 我的想法是使用保存在KeyStore
的私鑰對機密信息進行加密,並將此信息保存在我計划存儲在設備中的文件中(而不是外部存儲)。 我的問題是,我是否能夠從另一個應用程序訪問KeyStore
這個私鑰,然后使用它來解密保存在設備中的秘密信息?
我正在查看 Android 的KeyStore
文檔,如果我理解正確,我可以使用KeyStore
API 來保存加密密鑰並在同一應用程序中使用它們。 但KeyChain
文檔也說我可以在系統中的多個應用程序中使用這些加密密鑰。 我對如何組合這兩個 API 並使其適用於我的用例感到非常困惑。 任何幫助表示贊賞。 謝謝你。
我的想法是使用私鑰對秘密信息進行加密
您使用公鑰加密,而不是使用私鑰。 私鑰用於解密。
如果您為所有應用程序創建公鑰,那么您可以使用這些應用程序的單獨私鑰進行解密。 當然,您必須事先信任這些應用程序和每個應用程序的公鑰對; 我對您的設置不夠熟悉,無法在這方面提出任何建議。
老實說, KeyChain
API 似乎更多地與 TLS 身份驗證有關,我認為它不適合您的用例。 例如, choosePrivateKeyAlias
的 API 僅討論身份驗證和請求密鑰鏈的服務器。
密鑰庫原則上可以是分布式的。 或者當然,要訪問/解密它們,您仍然需要在每個應用程序中分發一個密鑰。 您只能共享特定簽名應用程序的信息。 可能只是在沒有加密的情況下私下共享數據的安全性已經滿足了您的用例? 畢竟,密鑰管理很棘手。
警告:我對 Android 安全模型不是很了解; 希望我對密碼學和安全性的一般知識能引導您朝着正確的方向前進。
有android:sharedUserId屬性。 從文檔:
具有相同用戶 ID 的應用程序可以訪問彼此的數據,並且如果需要,可以在同一進程中運行。
不幸的是,它在沒有適當替換的情況下在 API 29 中被棄用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.