Authentication

用於身份驗證的密碼與公鑰?

  • May 14, 2018

就身份驗證而言,密碼和密鑰有什麼區別?

我認為它們可能是相同的。但是,在實踐中,密碼包含一些偏見,因為它是由人類創建的。

另一方面,一些密鑰是由電腦產生的,這導致在一些大的位空間上產生偽隨機性。

誰能解釋何時以及何時不使用密碼和基於密鑰的身份驗證?

我們不想比較密碼和公鑰。密碼需要對試圖冒充其所有者的對手保密,而公鑰旨在自由傳播,而不是身份驗證的手段。

我們想要比較密碼和公鑰/私鑰對(非對稱加密)的私鑰作為身份驗證的手段。核心區別在於密碼不等同於公鑰:可以安全顯示但允許檢查身份驗證資訊的所有權

因此,密碼的一個巨大缺點是每個使用密碼的實體都可以知道它。與 Web 伺服器訪問中通常的做法一樣:只需在註冊或登錄時保留密碼副本;並在任何時候進行更多工作(通過嘗試足夠多的可能密碼並高速應用通常用於檢查密碼是否正確的方法,直到找到正確的密碼;對於典型密碼,發現密碼的風險很高至少對於某些使用者而言,成本高於其價值;這包括很少使用的密碼協議(如SRP)。這就是建議不要對不同伺服器使用相同密碼的原因之一。

此外,按照通常的做法,如果攻擊者只冒充驗證密碼的合法實體一次(例如,通過使假伺服器看起來像原始伺服器),他/她可以從其毫無戒心的所有者那裡接收密碼,然後冒充所有者隨意(包括其他伺服器,如果相同的密碼用於不同的伺服器,這是避免這種情況的另一個原因)。

相比之下,公鑰/私鑰對可以安全地用於對任意數量的實體/伺服器進行身份驗證,即使是粗心或不誠實的。此外,可以從將一個人的公鑰與 ID(域名、電子郵件、名稱..)綁定的權威機構獲得證書;允許向信任該權限的實體驗證與此 ID 相關聯的身份,而無需事先向所述實體註冊。密碼僅在受信任的機構檢查密碼並通過某些線上通信確認它對所述實體所做的情況下才允許使用(例如:使用某人的 Google ID 在 StackExchange 上進行身份驗證)。

公鑰/私鑰對允許私鑰持有者以可根據公鑰驗證的方式離線簽署文件/文件,以便任何人都可以檢查文件是否由私鑰持有者簽名。密碼不允許這樣做。

在信任所使用的設備時,通過密碼或私鑰進行的身份驗證同樣容易受到攻擊:如果操縱密碼或私鑰的使用者電腦被操縱,只要密碼或密鑰對未被撤銷,便可以安全。將私鑰保存在智能卡中會有所改善,因為私鑰在智能卡中是安全的,但只是部分安全:如果電腦不受信任,而智能卡連接到被操縱的電腦,則智能卡可能會被濫用而無需合法使用者知道。

與密碼相比,私鑰有一個嚴重的缺點:它們太長而無法記住或定期輸入,即使我們使用技術來實現這一目標。高級安全性與 44 位XKCD 密碼或使用者願意定期鍵入的任何內容之間存在很大差距;至少在目前的便利設備上,不能通過按鍵加強來方便地彌補這一差距。

順便說一句,使用私鑰作為身份驗證手段需要復雜的計算,而密碼則至少不需要。然而,隨著強大的 CPU 無處不在,這已成為一個較小的問題。


在密碼和私鑰之間有一些東西作為身份驗證手段:密鑰(對稱加密),與對方共享。這結合了私鑰和密碼的所有最差屬性,但有一些例外:

  • 一次身份驗證所需的密碼可能很小(如 6 位),因此可以鍵入。這由身份驗證加密狗使用。
  • 密鑰比典型的私鑰短;但同樣難以想出一種安全方便的方法,以便可以記住它們或定期鍵入它們。
  • 計算比私鑰稍微簡單一些;但它們仍然需要一個 CPU,因此只有在受限於非常損失功率/成本的 CPU 時,這才是一個優勢。

為了獲得最佳的身份驗證安全性,您應該要求使用者提供以下(甚至全部)以下內容的組合:

  1. 它們是什麼(例如生物指紋或視網膜掃描)
  2. 他們擁有的東西(例如令牌、智能卡或包含私鑰的 TPM)
  3. 他們知道的東西(例如密碼或 PIN)

僅僅依靠“你是什麼”的缺點是,一個人可能會被強迫進入他們的身體以造福他人。

僅依賴“您擁有的東西”(密鑰或令牌)的缺點是它可能被攔截/竊取,或者甚至與令牌一樣被複製。

僅僅依靠“你知道的東西”的缺點是很容易猜測它是否容易記住,或者容易被攔截或通過社會工程確定。

但是將這些因素結合在一起會使違規變得更加困難。物理安全性和不可預測性是部署具有上述所有因素的有效身份驗證策略的重要優先事項。

引用自:https://crypto.stackexchange.com/questions/59120