簡體   English   中英

如何在不讀取密碼的情況下存儲第三方密碼

[英]How to store thirdparty passwords without reading them

在無法解決的情況下,我需要幫助。 我需要存儲來自第三方服務的密碼,並且我不希望它是人類可讀的。

我想出了一個(可能很愚蠢的)解決方案:我的服務生成一個加密/解密密碼的秘密密鑰,並在需要訪問第三方服務時使用該密鑰解密密碼,並在需要時加密該密碼。儲存它。

問題是我的解決方案安全嗎? 是好還是壞? 有沒有更好的方法? 您能指點一下方向嗎?

存儲可檢索密碼可能是密碼術中最困難的任務之一。 您的應用程序需要以明文形式獲得這些密碼,並且攻擊者也可以使用足夠的特權來獲得這些密碼。 但是,有一些常見的方法可以解決此問題:

  1. 如果目標網站提供身份驗證服務,則可以將純文本密碼與令牌交換,並存儲此令牌(而不是密碼)以供將來使用。 OAuth2協議以這種方式工作。
  2. 您可以在用戶每次啟動應用程序時請求主密碼。 該主密碼用於加密網站密碼,但從不存儲自身,僅在應用程序運行時才保留在內存中。
  3. 大多數操作系統提供某種形式的密鑰存儲的,在Windows上,它被稱為數據保護API (DPAPI),在Android中它的密鑰庫 密鑰存儲解決了OS級別的問題,即如果沒有主密鑰,就無法加密密碼(這就提出了將主密鑰存儲在何處的問題……)。

上面的系統都不是防彈的,畢竟應用程序本身必須能夠獲得密碼。 這就是為什么要盡可能避免完全存儲密碼(例如存儲哈希)的原因。

如果您能負擔得起專用硬件,則可以將密碼管理外包給無法從Internet訪問的第二台服務器,或者可以考慮購買硬件安全模塊

暫無
暫無

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

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