第十一個知識點:DLP,CDH和DDH問題都是什么?


第十一個知識點:DLP,CDH和DDH問題都是什么

這是第11篇也是數學背景的第二篇.主要關注群操作如何被用於設計密碼基礎.

就像你現在知道的那樣,密碼學經常依賴於'難問題'.這也就是說,如果我們假設對手不能在合適的時間內解決某個(數學)問題,那么我們設計的密碼學協議的安全性就得到了證明.這篇推送介紹了安全證明中被廣泛使用的三個這樣的問題.對我來說很幸運,a)這只是群理論,不是計算機科學,同時b)兩天前我參加了一個由Bristol Crypto研究員Susan Thomson主講的客座講座就是恰好這個話題的.(這就是說,下面的任何錯誤都應該歸咎於她!)

The Discrete Logarithm Problem(DLP)

\(G\)為一個阿貝爾群(交換群).首先我們把\(G\)中的二元操作寫成乘法*.對任何\(g \in G\) 和任何整數\(a \gt 1\)\(g^a\)表示\(g*g*g...*g\),其中\(g\)出現了\(a\)次.離散對數問題就是(DLP);

給定\(G,g\)\(h = g^a\),尋找\(a\).

這里\(a\)就叫做\(h\)的以\(g\)為低的離散對數.

一個離散對數問題是難的嗎?有時候是,有時候不是.作為反例,令\(G\)為加法下的整數.所以現在可以把群運算相加,而不是相乘.因此相同的步驟過后,使用相同的元素\(g\),現在寫成了\(g + g + ...+g\),這就是說現在這個表達式的和就是\(h\),即\(h = ag\).因此對\(a\)來說,僅僅需要用\(h\)除以\(g\)就可以計算出來.例如'找出以3為低18的離散對數'.我們僅僅需要用18除以3就可以得到\(a\)的值.我能夠改變這個群運算變成模\(N\)的運算.這個問題不會更難.因為我們只需要去解\(ag=h(mod\space N)\),這個我們可以用多項式算法擴展歐幾里得先算出\(g^{-1}(mod \space N)\),然后\(a = (g^{-1} mod \space N)*h \space mod \space N\).這不是一個好的安全密碼原語.

另一方面,有限域內素數階乘法下的群(在去掉0之后)即橢圓曲線群都被認為是難的.因為我們還不知道多項式時間的算法來在這些群中找到離散對數.舉一個具體的例子,假設我問你'整數模7的乘法群中找到以3為低5的離散對數'.這意味着找到一個整數a,使得\(3a=5 \space mod \space 7\).現在我們暴力枚舉一下:

\(3^3 = (3^2)\times3 \equiv 2\times3 = 6 \not\equiv 5\: (\mathrm{mod} \: 7)\)

\(3^2 = 9 \equiv 2 \not\equiv 5 \: (\mathrm{mod} \: 7)\)

\(3^3 = (3^2)\times3 \equiv 2\times3 = 6 \not\equiv 5\: (\mathrm{mod} \: 7)\)

\(3^4 = (3^3)\times3 \equiv 6\times3 = 18 \equiv 4 \not\equiv 5\: (\mathrm{mod} \: 7)\)

\(3^5 = (3^4)\times3 \equiv 4\times 3 = 12 \equiv 5\: (\mathrm{mod} \: 7)\)

因此\(a = 5\).這樣我們通過反復乘3得到了這種跳來跳去的方法最終獲得了結果,這個會讓你對DLP困難性有一個直觀的認知.如果我們的模數遠遠大於 7,有成千上萬的二進制位,甚至一台電腦要花費很多時間才能解決這個問題.盡管有次指數級的算法,但是沒有證明不存在多項式時間內解決DLP的方法.

The Computational Diffie-Hellman Problem(CDH)

一個和DLP問題相關的問題是由Whit Diffie和Martin Hellman提出的兩方協商密鑰在公共信道上不會被竊取的問題:

  • Alice和Bob共同確定使用的循環群\(G\),和生成器\(q\)
  • Alice選擇一個隨機的密鑰整數\(a\),Bob選擇了一個隨機的整數\(b\)
  • Alice計算\(g^a\)在公共信道上發送給Bob,同時Bob也計算出\(g^b\)在公共信道上發送給Alice.
  • Alice和Bob都計算\(g^{ab}=(g^a)^b=(g^b)^a\)通過知道他們自己的隨機的整數,這個生成的就是他們協商的密鑰.

現在\(g^{ab}\)是一個密鑰能被用於Alice和Bob之間的對稱加密.但是有一些人竊聽了他們之間的交換獲得了\(G,g,g^a,g^b\).因此密鑰取決於的這個問題,就叫做 計算DH問題(CDH).

給定\(G,g,g^a,g^b\),找出\(g^{ab}\)

CDH是和DLP相關的,但是哪個更難呢?如果我能有效率的解決DLP,那么我就可以找出\(a\),然后輕松的計算出\(g^{ab}\)就像Bob做的那樣,因此我們就解決了CDH.所以我們說能解決DLP那么一定能解決CDH,這就是說DLP至少和CDH一樣難.

The Decisional Diffie-Hellman Problem (DDH)

這是另一個離散對數的問題,用於證明難以區分的屬性.假如說Alice和Bob執行如上所述的Diffie-Hellman密鑰協議,那么\(G,g,g^a,g^b\)都是公共的,\(g^{ab}\)是密鑰.直觀上,DDH問題就是是否對手能夠從隨機的\(G\)中的元素區分出Alice和Bob的密鑰\(g^{ab}\).正是來說:

給定\(G,g,g^a,g^b\)\(T_x\)使得\(T_0\)\(G\)中隨機的一個元素,\(T_1=g^{ab}\)同時\(x\)被隨機均勻的從{0,1}中選擇,找出x.

如果對手能夠解決DDH(輸出正確的x的概率大於1/2).那么就是說\(G,g^a,g^b\)一定泄露了一些關於\(g^{ab}\)的信息,使得攻擊者能把它從隨機的元素中分辨出來,盡管不能直接計算出來.而且很明顯,如果對手能解決CDH問題,那么它可以有效率的解決DDH,因為它已經可以得到\(g^{ab}\)的值.這意味着,CDH至少和DDH一樣難.

這就是我們這篇中討論的三個問題,我們給出了一個簡明的證明對他們的困難性進行排序:DLP最難,然后是CDH,最后是DDH.就像我們看到的那樣,DLP有時候是簡單的,會讓CDH和DDH都變簡單.因此群\(G\)和生成器\(g\)的選擇在做密碼學的時候是十分重要的!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM