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