關(guān)于私鑰如何備份、錢包轉(zhuǎn)賬等知識(shí)點(diǎn),我們每周的O3 Q&A TIME都有介紹。今天主要來看下區(qū)塊鏈背后的基礎(chǔ)技術(shù)「密碼學(xué)」是如何工作,它是如何保障數(shù)字資產(chǎn)安全的?
錢包的生成過程:
首先,通過隨機(jī)數(shù)發(fā)生器生成一個(gè)私鑰。誰擁有了這串私鑰,誰就擁有了對(duì)應(yīng)錢包地址里的資產(chǎn)。
然后,私鑰經(jīng)過橢圓曲線算法生成公鑰。通過私鑰可以得出公鑰,但是通過公鑰是無法計(jì)算出私鑰的。
最后,公鑰經(jīng)過單向散列函數(shù)推導(dǎo)出地址。
整個(gè)過程涉及到了三個(gè)密碼學(xué)知識(shí):隨機(jī)數(shù)、非對(duì)稱加密,單向散列函數(shù)。
1、隨機(jī)數(shù)
在數(shù)字錢包中隨機(jī)數(shù)與安全指數(shù)息息相關(guān),因此隨機(jī)數(shù)用于生成私鑰,且必須具備以下特性:
· 隨機(jī)性:不存在統(tǒng)計(jì)學(xué)偏差,完全雜亂的數(shù)列;
· 不可預(yù)測(cè)性:不能從過去數(shù)列推測(cè)到下一個(gè)出現(xiàn)的數(shù);
· 不可重復(fù)性:除非將數(shù)列本身保存下來,否則不能重現(xiàn)相同的數(shù)列。
上述三個(gè)特性按順序分別命名為“弱偽隨機(jī)數(shù)”、“強(qiáng)偽隨機(jī)數(shù)”和“真?zhèn)坞S機(jī)數(shù)”。關(guān)于這三個(gè)的詳細(xì)解釋,建議通過這篇專業(yè)文章來了解:
https://www.jianshu.com/p/e0d7fbfe6d2a
2、非對(duì)稱加密
非對(duì)成加密是相對(duì)對(duì)稱加密而言,在非對(duì)稱加密中,將密鑰分為加密密鑰和解密密鑰,也就是我們常說的公鑰和私鑰,其最根本的原理:就是利用信息的不對(duì)稱性。
用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私鑰才能解密;如果用私鑰對(duì)數(shù)據(jù)進(jìn)行加密,那么只有用對(duì)應(yīng)的公鑰才能解密。因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的密鑰,所以這種算法叫作非對(duì)稱加密算法。
非對(duì)稱加密經(jīng)典算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)。
區(qū)塊鏈中主要使用的就是非對(duì)稱加密的橢圓曲線算法。
橢圓曲線加密:深?yuàn)W解釋能力有限,也怕大家看不懂,就用曾經(jīng)看過文章里,一句記憶非常深刻的話老解釋:無非是找到了會(huì)乘法不會(huì)除法的場(chǎng)景。
也就是正向求值比較簡(jiǎn)單,但是逆向卻是幾乎不能完成的任務(wù)。在這個(gè)的基礎(chǔ)上,科學(xué)家選取了一條曲線,并命名為secp256k1,如下圖所示:
3、單向散列函數(shù)
單向散列函數(shù),也稱哈希函數(shù)。是一種將任意長度的消息壓縮到某一固定長度(消息摘要)的函數(shù)(該過程不可逆)。哈希函數(shù)可用于數(shù)字簽名、消息的完整性檢測(cè)、消息起源的認(rèn)證檢測(cè)等。
一個(gè)合格的哈希函數(shù)往往具備以下幾個(gè)特點(diǎn):
· 可以根據(jù)任意長度的消息輸出固定長度的散列值;
· 能夠快速計(jì)算出散列值;
· 具備單向性,散列值倒推輸入是不可能的;
· 具備唯一性,消息不同散列值也不同。
總結(jié):
密碼學(xué)由于和數(shù)學(xué)關(guān)系密切,而數(shù)學(xué)課往往又是我們最容易走神打瞌睡的課程,所以我們似乎習(xí)慣了本能地拒絕學(xué)習(xí)密碼學(xué),了解與密碼學(xué)相關(guān)的知識(shí)。
但是區(qū)塊鏈背后的基礎(chǔ)技術(shù)卻與密碼學(xué)緊緊相關(guān),希望通過這篇文章,能夠讓大家了解一些密碼學(xué)的基礎(chǔ)知識(shí),以免再問一些關(guān)于“私鑰如何找回”這種無法讓人回答的問題。