我們從密碼學(xué)角度來聊聊助記詞。
隨著區(qū)塊鏈錢包的發(fā)展和分層確定性(HD)錢包技術(shù)的普及,越來越多的用戶開始熟悉了一個(gè)叫“助記詞”的概念,很多人都已經(jīng)習(xí)慣了從一開始使用一個(gè)錢包的時(shí)候,就先抄好單詞認(rèn)真保管,并且他們對(duì)于助記詞的重要性也有了很深刻的理解。
說到助記詞,有人可能會(huì)問了,為什么有些錢包是12個(gè)單詞,另一些則是24個(gè)單詞的助記詞呢?是不是單詞越多就越安全呢?
其實(shí),與大部分人的直覺相反,從密碼學(xué)的角度上講,12單詞的安全強(qiáng)度和24個(gè)單詞是一樣的,12個(gè)單詞已經(jīng)足夠安全,增加單詞數(shù)并不能提高安全級(jí)別。
雖然按照比特幣BIP32/44/39規(guī)范,從 2048個(gè)單詞詞庫中選擇24個(gè)助記詞的概率空間>2^256,而選擇 12 個(gè)助記詞的概率空間>2^128,從概率空間上看起來24個(gè)助記詞的安全強(qiáng)度好像是要高很多,但本文將從密碼學(xué)的角度給你澄清這一事實(shí),即“12個(gè)助記詞和24個(gè)助記詞的密碼學(xué)安全強(qiáng)度是一樣的”。
首先我們需要理解一個(gè)很著名的數(shù)學(xué)理論,叫“生日悖論”(Birthday Paradox)。
問大家一個(gè)問題,假設(shè)一個(gè)班級(jí)里有 23 個(gè)人,問這個(gè)班里有兩個(gè)生日相同的人的概率有多大?直覺上,大家可能會(huì)覺得概率很低,幾乎不可能,一年有 365 天呢,兩個(gè)人同一天生的概率得是多小啊。但數(shù)學(xué)往往就是反直覺的,其真實(shí)概率要大于 50%,如果是 30 個(gè)人的班級(jí),概率則會(huì)大于 70%, 60 個(gè)人則大于 99% ,也就是幾乎肯定有兩個(gè)人生日相同,你敢信不?
這就是著名的“生日悖論”
生日悖論這一簡(jiǎn)單的概率理論對(duì)于密碼學(xué)的影響是巨大的,因?yàn)榛谶@一理論產(chǎn)生了一種名為“生日攻擊”的密碼學(xué)攻擊手段,基于這一攻擊手段,所有的哈希函數(shù)(Hash)的密碼學(xué)安全強(qiáng)度都會(huì)降低到其概率空間位數(shù)的1/2,即 2^n 概率空間的密碼學(xué)安全強(qiáng)度為 2^(n/2),如果是 2^256,則其安全強(qiáng)度為 2^128。
好了,在進(jìn)一步講述生日攻擊之前,我們還要做點(diǎn)科普,學(xué)習(xí)幾個(gè)密碼學(xué)基本概念:
-
原像攻擊:我們都知道哈希函數(shù)是不可逆的,y=hash(x),知道y,我們是無法得到x的。如果有一種攻擊方式能使得您得到x,那這種攻擊方式就叫做原像攻擊;
-
次原像攻擊:如果有一種攻擊方式能讓你找到另一個(gè)x’,使得 hash(x’) 也等于 y,即y=hash(x)=hash(x’),這種找到了另一個(gè)x’的攻擊方式叫做次原像攻擊;
-
碰撞攻擊:碰撞攻擊的意思是,雖然我們找不到原像,也找不到次原像,但通過一定范圍內(nèi)的計(jì)算,能夠找到一對(duì)兒碰撞hash(z)=hash(z’),就像雖然一年有365天,但每23個(gè)人就有50%的概率出現(xiàn)一次生日的碰撞,這使得我們不需要遍歷365次,而只需隨機(jī)抽取23個(gè)數(shù)就有50%的可能性找到一對(duì)兒碰撞,這就是碰撞攻擊;
對(duì)原像攻擊、次原像攻擊和碰撞攻擊有了基本的理解了之后,您就應(yīng)該能明白,原像或次原像攻擊都很難,因?yàn)閹缀跻闅v整個(gè)概率空間,如果算法沒有漏洞的話,對(duì)于 2^256 的概率空間,您就需要遍歷幾乎 2^256 次才有希望找到一個(gè)原像或者次原像。而對(duì)于碰撞攻擊來說,您只需要遍歷 2^128 次,就能找到一對(duì)兒碰撞。
那對(duì)于密碼學(xué)簽名的碰撞攻擊又該如何進(jìn)行呢?
我們假設(shè)你要對(duì)一個(gè)消息m做密碼學(xué)簽名,攻擊者知道m(xù)是正確的消息,并且準(zhǔn)備了一份偽造的消息m’,毫無疑問,hash(m)<>hash(m’),拿著m’是騙不了你的。
現(xiàn)在,攻擊者準(zhǔn)備了大量的稍做修改的m,又準(zhǔn)備了大量的稍做修改的m’,這里所提到的“稍作修改”并不影響m的正確性和m’的偽造性。
然后,攻擊者再從大量的m和大量的m’中找到一對(duì)兒hash(m)=hash(m’),其難度是2(n/2),也就是說,對(duì)于2256的概率空間,攻擊者需要準(zhǔn)備2128份正確消息m和2128份偽造消息m’,從中就能找到一對(duì)兒碰撞hash(m)=hash(m’)。
最后,攻擊者拿碰撞到的m讓你做密碼學(xué)簽名,并將m替換為m’,攻擊成功。文章來源:http://www.zghlxwxcb.cn/news/detail-517522.html
好了,現(xiàn)在大家應(yīng)該基本上理解了生日悖論和生日攻擊的基本原理了,對(duì)于密碼學(xué)貨幣來說,2256的概率空間其密碼學(xué)安全強(qiáng)度為2128,12個(gè)單詞的助記詞的概率空間也是2^128,增加助記詞的概率空間并不能提高密碼學(xué)安全強(qiáng)度,對(duì)于錢包助記詞來說,12個(gè)單詞和24個(gè)單詞一樣安全的。文章來源地址http://www.zghlxwxcb.cn/news/detail-517522.html
到了這里,關(guān)于比特幣/以太坊/加密貨幣/網(wǎng)絡(luò)/區(qū)塊鏈/錢包助記詞:密碼學(xué)的角度上,24個(gè)單詞比12個(gè)單詞更安全嗎的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!