簡體   English   中英

OpenPGP加密中的私鑰存儲問題

[英]Private key storage issue in OpenPGP encryption

我正在嘗試在一個簡單的消息傳遞應用程序上實現 OpenPGP 端到端加密,該應用程序將在 web 和移動設備上訪問。 我一直在決定應該在哪里生成和存儲我的私鑰。 桌面上有以下兩種方法(我不想用方法 2 go 但這看起來是唯一可行的選擇):-

密鑰存儲方法1:-

  1. 當用戶第一次登錄聊天客戶端時,客戶端(web/app)會生成一組公鑰和私鑰。

  2. 用戶的公鑰將被發送到后端服務器。 用戶的私鑰將被加密並存儲在客戶端的本地存儲中。

這種方法的問題:-

  • 如果用戶一次都沒有登錄客戶端,那么發送者將如何加密消息呢? (因為收件人的公鑰目前不可用)

  • 如果用戶登錄到另一個客戶端(另一個瀏覽器或不同的應用程序),他將如何訪問私鑰? (因為需要解密用戶收件箱中的消息)

密鑰存儲方法2:-

  1. 在后端服務器上創建用戶時,在后端本身使用 PGP 為用戶創建公鑰和私鑰。 公鑰可以以純文本形式存儲,但用戶的私鑰應加密並存儲。 我們可以在這里使用帶有客戶端特定密碼的對稱加密。

  2. 當用戶登錄聊天客戶端(web/app)時,登錄時會從后端收到加密的私鑰。 為了解密任何消息,然后可以使用他們的密碼解密他們的私鑰,然后使用私鑰解密收到的消息。

這種方法的問題:-

  • 這並不是真正的端到端加密,因為知道用戶密碼的人可以訪問私鑰。

注冊。 方法 1:如果客戶沒有機會分享他們的公鑰,那么確實,您無法發送加密消息。 目前尚不清楚您將如何解決該問題。 您可以使用密碼加密私鑰並將加密版本上傳到您的后端,以便客戶端可以下載它並使其在其他設備上可用,正如您在第二種方法中所寫的那樣。 或者,您可以進一步 go 並從密碼短語生成私有。

您的方法 2 實際上可能沒有更糟糕的安全屬性,這取決於您如何看待它。 您可能會爭辯說,您無論如何都沒有基礎設施來讓客戶確保他們獲得了正確的密鑰材料。 因此他們無法區分用戶的實際公鑰和服務器提供的惡意公鑰。

當然,如何設計系統取決於您。 我建議你開始列出你的要求。 如果未知用戶不需要接收加密消息,您的問題似乎會變小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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