比特幣中的密碼學(xué)是怎樣一回事
我們一步一步的講,先以最簡單的發(fā)電子郵件為例。
現(xiàn)在A向B發(fā)出一封email,這封郵件是加密的,根據(jù)之前的公鑰加密原理也就是非對稱加密原理,B是收email的,那么,A就拿著B的公鑰加密這個email信息,B收到后用自己的私鑰就可以解開這個email信息,知道里面的內(nèi)容。
大家對這個非對稱加密的流程已經(jīng)比較熟悉了,這里面有一個問題,如果這個email的信息很重要,當(dāng)然,不重要也不需要非對稱加密了。我是說如果這個信息里面是關(guān)于錢的,最直接的說就是A在郵件里寫了,“我欠了B十萬塊錢”,這時候這個email就有了一點點類似欠條的法律效用。
問題來了,欠條都需要有個簽字簽名手印等憑證,這個email有什么憑證呢?沒有,只能說這個email是寫給B的,因為是B的公鑰加密的,也只有B能用自己的私鑰解開看到,但是沒有什么憑證說明是誰寫的。
這個時候就需要一個東西,叫做數(shù)字簽名,就像是現(xiàn)實世界的親筆簽名、按手印。
數(shù)字簽名如同指紋一樣獨一無二。怎么做呢?
A發(fā)信息給B,用自己的私鑰去加密這段信息,這時候B收到后,拿著A的公鑰(公開的),去驗證下是A發(fā)出的,這就是數(shù)字簽名。
這時候結(jié)合之前的方法,A發(fā)出的時候用A自己的私鑰對信息進(jìn)行簽名,然后用B的公鑰進(jìn)行加密,B收到后有B自己的私鑰解密看到信息,又可以用A的公鑰驗證簽名,整個流程就完成了。
用公鑰加密就是上圖,公鑰密碼的基本流程,用私鑰加密就是下圖,其實是一樣的,只不過翻了過來,一個用公鑰,一個用私鑰。
而私鑰加密相當(dāng)于生成簽名,而用公鑰加密相當(dāng)于驗證簽名。
公鑰和私鑰是成對出現(xiàn)的,有嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)邏輯,用公鑰加密的密文只能用與之對應(yīng)的私鑰進(jìn)行解密;同樣的,用私鑰加密的密文需要與之對應(yīng)的公鑰進(jìn)行解密。也就是說用某個公鑰如果成功解密了密文,說明這個密文就是用和這個公鑰對應(yīng)的私鑰加密得到的,而世界上掌握這個私鑰的人只有一個,也就是這個私鑰的主人。
講到這里,你就知道了,比特幣的交易信息傳遞,也是這樣的。
以上摘自比特幣的白皮書(中英文版本都放在上面),相信各位讀者第一次看到這圖的時候,也是比較懵逼的狀態(tài),因為不理解非對稱加密(公鑰加密)的話,理解這個圖有一定困難。
從創(chuàng)始區(qū)塊開始的轉(zhuǎn)賬都在這一個鏈條上,產(chǎn)生新的比特幣的方法就是挖礦,也就是生成貨幣的過程。而每一個交易比特幣的人,或者說轉(zhuǎn)賬,我轉(zhuǎn)給你10個比特幣,這個信息就是我的私鑰對之?dāng)?shù)字簽名,收到比特幣的人拿我的公鑰進(jìn)行驗證,就知道是我轉(zhuǎn)的,而我轉(zhuǎn)給你的信息就是我拿著你的公鑰加密的,這個別人看得到對應(yīng)的地址,別人也知道我這個地址轉(zhuǎn)給你的地址,但是能使用這個地址上的比特幣的只有擁有私鑰的你一個人。地址對應(yīng)的人具體是誰不知道,也就是公開透明的轉(zhuǎn)賬,但是又保護(hù)隱私的原理。
至于私鑰推出公鑰(反過來不行),公鑰推出公鑰哈希(反過來不行),公鑰哈希推出地址(反過來可以),這個過程不是很難的東西,隨意去網(wǎng)上搜索就可以知道。公鑰私鑰加密解密的過程在比特幣網(wǎng)絡(luò)上自動就完成了,你看到的就是比特幣從一個地址轉(zhuǎn)到另一個地址。
所以,整個密碼學(xué)系列文章講到這里就打通了整個知識鏈條,從隱藏法、移位替換法到維基尼亞加密法到恩尼格瑪機(jī),然后講到非對稱加密、哈希函數(shù),以及利用哈希函數(shù)的挖礦原理,利用非對稱加密的數(shù)字簽名。比特幣就是建構(gòu)在這個密碼學(xué)之樹上的一個重要果實。
如果你認(rèn)真讀過這一個系列的文章,相信會超過很多人對密碼學(xué)和比特幣的認(rèn)知,而如果能做到這一點,我的工作就沒有白費,我也希望看到文章的你,當(dāng)有朋友問你比特幣是什么的時候,比特幣怎么轉(zhuǎn)賬的時候甩出一句“你知道非對稱加密法嗎?你知道哈希函數(shù)的作用嗎?我來給你講講吧”,當(dāng)然,你也可以把我的系列文章發(fā)給朋友,先搞清楚基本原理,后面的都好理解。
來源: 加密二鍋頭