簡體   English   中英

如果我在應用程序 A 的 KeyStore 中存儲私鑰,是否可以從應用程序 B 檢索相同的密鑰?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM