首頁 二次元

七夕緣起

第5.03章 秘鑰交換的策略(上)

七夕緣起 七色瑾林 2060 2021-10-25 01:17:47

  $$ 01 $$

  目前雖然有了不錯(cuò)的加密方法,但這秘鑰,確實(shí)還是個(gè)難題。

  而且,同一個(gè)秘鑰,使用的時(shí)間也不能太長,否則一旦被破解出來,那么通信就會變得很不安全。

  現(xiàn)在,牛郎需要想一種能夠快速安全交換秘鑰的方式。

  ·

  這個(gè)的難點(diǎn)在于,目前要盡量避免使用隱私信息。

  現(xiàn)在牛郎織女不能見面,兩人共同知曉的隱秘信息終是有限的,用一個(gè)少一個(gè),所以,這些最好先留著,作為以后的“王牌”。

  那么,如果使用現(xiàn)有的秘鑰,進(jìn)行加密傳遞呢?

  也不行,那跟明文沒什么區(qū)別。

  ·

  試想,一旦哪一天,這個(gè)舊的秘鑰泄露了或者被破解了出來,那么,王母就能順藤摸瓜,得到新的秘鑰值。

  尤其是現(xiàn)在加密方法剛剛是初級階段,目前只有一個(gè)“見面日期”的秘鑰,破解難度自然沒有那么高,簡直就是明文。

  所以說,這個(gè)新的秘鑰,還不能依賴現(xiàn)有的秘鑰,也就是“絕對獨(dú)立”的。

  而且,加密和解密需要相同的秘鑰,這就是牛郎目前最大的挑戰(zhàn)了:

  ·

  如何在全程明文傳輸?shù)那闆r下,(剛才說了,加密沒有意義),

  讓雙方得到相同的秘鑰,但其他人卻不知道該秘鑰。

  ·

  很顯然,由一方傳遞給另一方,顯然是行不通的了,這樣途中所有的監(jiān)聽者都會知道秘鑰。

  是不是覺得“比登天還難”了?既然都全程明文了,還怎么讓別人“不知道”?

  ·

  ----

  $$ 02 $$

  不過,仔細(xì)想一想,好像還真是有可能的。

  畢竟,我們并不需要像寫加密信件一樣傳遞太多信息。

  要做的,僅僅是需要雙方拿到一個(gè)秘鑰而已,再直白一點(diǎn),那就是個(gè)長度為十位的自然數(shù)罷了。

  ·

  像個(gè)辦法,讓雙方得到一個(gè)相同的十位數(shù),很難么?不難。

  那如何在不使用隱秘信息的情況下,讓別人不知道呢?

  這個(gè)么,其實(shí)也是有可能做到的。

  想想之前加密時(shí),提到的“加密強(qiáng)度”:

  “按目前王母的實(shí)力,只要加密算法在3億次嘗試之內(nèi)無法被解密,那么,就可以認(rèn)為它是安全的?!?p>  ·

  也就是說,如果能有一種方式,將運(yùn)算差異化,讓雙方能夠快速計(jì)算出結(jié)果,

  但是其他人則需要超過3億以上次運(yùn)算,那么,就可以實(shí)現(xiàn)安全的秘鑰交換。

  當(dāng)然,這樣,就不是簡單的加密領(lǐng)域了,而是,需要去想一些數(shù)學(xué)方法。

  ·

  牛郎在喜鵲仙子的幫助下,翻閱了古往今來數(shù)學(xué)領(lǐng)域的各種著作,突然發(fā)現(xiàn)了一種相對單向的運(yùn)算:

  計(jì)算一個(gè)數(shù)的乘方,是有速算方法的,但是,反過來求其逆運(yùn)算,基本沒有速算方式。

  ·

  舉個(gè)例子,計(jì)算2的4次方,正常是4次乘法,2x2x2x2=16,

  但其實(shí)它等價(jià)與2的平方的平方,2x2=4,4x4=16,只要2次乘法就能算出來。

  但如果想計(jì)算2的幾次方等于16,那么要16不斷除以2直到值為1,然后看除了幾次,

  即16/2=8,8/2=4,4/2=2,2/2=1,需要4次除法運(yùn)算,是基本沒有優(yōu)化空間的。

  看來,這應(yīng)該就是本次秘鑰交換的核心了。

  ·

  ----

  $$ 03 $$

  只要能找到一種數(shù)學(xué)方法,形成算法上的隔離,

  讓自己和織女能通過乘方速算法計(jì)算秘鑰,而監(jiān)聽者們只能通過乘方逆運(yùn)算或者枚舉求解,

  當(dāng)兩者的計(jì)算量的差距足夠大時(shí),那么就可以認(rèn)為拿到了一個(gè)相對安全的秘鑰。

  ·

  唉,這個(gè)乘方的逆運(yùn)算,叫起來太不順口了,反正都是對數(shù)字的運(yùn)算,要不就簡稱“對數(shù)”計(jì)算吧。

  現(xiàn)在,算法的思想有了,接下來又出現(xiàn)了另一個(gè)難點(diǎn):怎么去形成這種算法生的隔離呢?

  ·

  如果所有人拿到的信息都一樣,那么所有人肯定可以用相同的算法去計(jì)算,所以,必然要?jiǎng)?chuàng)造信息上的差異。

  讓自己和織女的信息,能夠用乘方速算,但其他監(jiān)聽者,卻只能用較慢的對數(shù)計(jì)算。

  只是,要引入信息差異,但還不能引入雙方都知道的隱私信息,這改怎么辦?

  ·

  哈哈,既然“雙方都知道的信息”很有限,不能隨便用,那“僅有單方知道的信息”,應(yīng)該是近乎無限的吧?

  比如說,引入“只有牛郎知道的信息”,讓織女不知道該信息也能算出秘鑰,但其他人卻不行。

  但是,這可能嗎?

  ·

  這確實(shí)有可能,因?yàn)榭椗小爸挥锌椗赖男畔ⅰ?,也就是牛郎織女比其他監(jiān)聽者知道的多。

  只要像個(gè)辦法,讓“只有單方面知道的信息”,即參與了運(yùn)算,又能互相湮滅,就足夠了。

  而中間的監(jiān)聽者,因?yàn)椴恢离p方信息湮滅后的產(chǎn)物,要計(jì)算秘鑰,或者反推雙方的信息,還是很有難度的。

  那么,這就是個(gè)數(shù)學(xué)上要處理的問題了。

  ·

  ----

  $$ 04 $$

  具體要怎么處理呢?該回到剛才我們說的“乘方運(yùn)算”了。

  比如牛郎想到一個(gè)數(shù)3,織女想到一個(gè)數(shù)4,互不告訴對方。

  約定以2位底數(shù)算乘方,牛郎得到2^3=8,織女得到2^4=16,把這個(gè)數(shù)告訴對方。

  此時(shí),織女無需知道牛郎想到的是幾,只要計(jì)算8^4=4096,而牛郎也只需要計(jì)算16^3=4096。

  由此,雙方不需要知道對方的數(shù)字,卻可以拿到相同的秘鑰:4096。

  ·

  讓我們看看,王母安排的監(jiān)聽者們,會得到哪些信息:雙方約定的底數(shù)2,牛郎發(fā)送的8,織女發(fā)送的16。

  因?yàn)橹挥羞@3個(gè)數(shù)在途中傳遞了,其他信息沒有被傳遞,監(jiān)聽者是不知道的。

  那么,這些監(jiān)聽者們,能通過已知的這3個(gè)數(shù),得到秘鑰4096嗎?

  ·

  答案是“能”。

  因?yàn)?,知道底?shù)2,知道牛郎發(fā)送的數(shù)字8,那么,2的幾次方是8呢?

  這個(gè)很容易計(jì)算,因此他們完全可以反推出,牛郎想到的數(shù)字,是3。

  同理,他們也能反推出,織女想到的數(shù)字是4。

  ·

  那這個(gè)方法有什么用?

  重點(diǎn)來了,剛才監(jiān)聽者們反推牛郎織女的數(shù)字,是需要時(shí)間計(jì)算的。

  我們提供,對數(shù)運(yùn)算基本沒有優(yōu)化空間,所以要得到3和4,他們至少需要3+4=7次計(jì)算。

  這就是監(jiān)聽者比牛郎織女多做的事情,怎么樣,有思路了吧?

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁
返回書頁
指南