Encryption

新手問題:密碼學中的單向函式

  • October 18, 2018

我正在閱讀這篇關於密碼學基礎的文章,它說主要原理是採用這樣一種算法,知道最終結果和算法,竊聽者將無法確定初始數據。

他們舉了一個例子:

在此處輸入圖像描述

假設我知道第二行和第三行的數字,但不知道x,無法推導出x。但我可以:我需要做的就是做這樣的事情:

for (int i=0; i<100_000_000; i++)  {
     if (i%7==5)  {    
       if (getPower(i, 3)!=-1)  {
           System.out.println(i+", " + getPower(i, 3));
       }
     }

}

它給了我:

243, 5
177147, 11

意思是,243 和 177147 分別是 3^5 和 3^11,除以 7 時也給出殘差 5。所以對我來說它看起來不像是單向函式。

所以對我來說它看起來不像是單向函式。

您缺少的是密碼學中使用的規模和基本思想。即以下三個事實:

  • 離散對數的密碼指數具有數千位而不是問題中的範例*3 。*因此,一次僅嘗試一個值,至少需要數十億年的時間。
  • 在密碼學中,您只能看到模約減的求冪結果(圖形的第三行),因為有有效的算法可以在實數上找到對數。
  • 在密碼學中使用這些系統時,我們實際上並沒有執行 $ 2^{1000} $ 左右乘法,而是使用重複的平方和乘法,這將其減少到幾千次乘法。請注意,此算法需要完全了解要應用的指數。

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