生活中我們對文件要簽名绑咱,簽名的字跡每個人不一樣,確保了獨特性枢泰,當(dāng)然這還會有模仿描融,那么對于重要文件再加蓋個手印,指紋是獨一無二的衡蚂,保證了這份文件是我們個人所簽署的窿克。
那么在區(qū)塊鏈?zhǔn)澜缋铮瑢?yīng)的就是數(shù)字簽名毛甲,數(shù)字簽名涉及到公鑰年叮、私鑰、哈希玻募、加密算法這些基礎(chǔ)概念只损。
首先加密算法分為對稱加密算法、非對稱加密算法七咧、哈希函數(shù)加密算法三類跃惫。
所謂非對稱加密算法,是指加密和解密用到的公鑰和私鑰是不同的艾栋,非對稱加密算法依賴于求解一數(shù)學(xué)問題困難而驗證一數(shù)學(xué)問題簡單爆存。
非對稱加密系統(tǒng),加密的稱為公鑰裹粤,解密的稱為私鑰终蒂,公鑰加密蜂林,私鑰解密遥诉、私鑰簽名拇泣,公鑰驗證。
比特幣加密算法一共有兩類:非對稱加密算法(橢圓曲線加密算法)和哈希算法(SHA256矮锈,RIMPED160算法)
舉一個例子來說明這個加密的過程:A給B發(fā)一個文件霉翔,B怎么知道他接收的文件是A發(fā)的原始文件?
A可以這樣做苞笨,先對文件進(jìn)行摘要處理(又稱Hash债朵,常見的哈希算法有MD5、SHA等)得到一串摘要信息瀑凝,然后用自己的私鑰將摘要信息加密同文件發(fā)給B序芦,B收到加密串和文件后,再用A的公鑰來解密加密串粤咪,得到原始文件的摘要信息谚中,與此同時,對接收到的文件進(jìn)行摘要處理寥枝,然后兩個摘要信息進(jìn)行對比宪塔,如果自己算出的摘要信息與收到的摘要信息一致,說明文件是A發(fā)過來的原始文件囊拜,沒有被篡改某筐。否則,就是被改過的冠跷。
數(shù)字簽名有兩個作用:
一是能確定消息確實是由發(fā)送方簽名并發(fā)出來的南誊;
二是數(shù)字簽名能確定消息的完整性。
私鑰用來創(chuàng)建一個數(shù)字簽名蜜托,公鑰用來讓其他人核對私人密鑰弟疆,
而數(shù)字簽名做為一個媒介,證明你擁有密碼盗冷,同時并不要求你將密碼展示出來怠苔。
以下為概念的定義:
哈希(Hash):
二進(jìn)制輸入數(shù)據(jù)的一種數(shù)字指紋。
它是一種函數(shù)仪糖,通過它可以把任何數(shù)字或者字符串輸入轉(zhuǎn)化成一個固定長度的輸出柑司,它是單向輸出,即非常難通過反向推導(dǎo)出輸入值锅劝。
舉一個簡單的哈希函數(shù)的例子攒驰,比如數(shù)字17202的平方根是131.15639519291463,通過一個簡單的哈希函數(shù)的輸出故爵,它給出這個計算結(jié)果的后面幾位小數(shù)玻粪,如后幾位的9291463,通過結(jié)果9291463我們幾乎不可能推算出它是哪個輸入值的輸出。
現(xiàn)代加密哈希比如像SHA-256劲室,比上面這個例子要復(fù)雜的多伦仍,相應(yīng)它的安全性也更高,哈希用于指代這樣一個函數(shù)的輸出值很洋。
私鑰(Private key):
用來解鎖對應(yīng)(錢包)地址的一串字符充蓝,例如5J76sF8L5jTtzE96r66Sf8cka9y44wdpJjMwCxR3tzLh3ibVPxh+。
公鑰(Public keycryptography):
加密系統(tǒng)是一種加密手段喉磁,它的每一個私鑰都有一個相對應(yīng)的公鑰谓苟,從公鑰我們不能推算出私鑰,并且被用其中一個密鑰加密了的數(shù)據(jù)协怒,可以被另外一個相對應(yīng)的密鑰解密涝焙。這套系統(tǒng)使得你可以先公布一個公鑰給所有人,然后所有人就可以發(fā)送加密后的信息給你孕暇,而不需要預(yù)先交換密鑰仑撞。
數(shù)字簽名(Digital signature):
Digital signature數(shù)字簽名是這樣一個東西,它可以被附著在一條消息后面芭商,證明這條消息的發(fā)送者就是和某個公鑰相對應(yīng)的一個私鑰的所有人派草,同時可以保證私鑰的秘密性。某人在檢查簽名的時候铛楣,將會使用公鑰來解密被加密了的哈希值(譯者注:這個哈希值是數(shù)據(jù)通過哈希運算得到的)近迁,并檢查結(jié)果是否和這條信息的哈希值相吻合。如果信息被改動過簸州,或者私鑰是錯誤的話鉴竭,哈希值就不會匹配。在比特幣網(wǎng)絡(luò)以外的世界岸浑,簽名常常用于驗證信息發(fā)送者的身份 – 人們公布他們自己的公鑰搏存,然后發(fā)送可以被公鑰所驗證的,已經(jīng)通過私鑰加密過的信息矢洲。
加密算法(encryption algorithm):
是一個函數(shù)璧眠,它使用一個加密鑰匙,把一條信息轉(zhuǎn)化成一串不可閱讀的看似隨機的字符串读虏,這個流程是不可逆的责静,除非是知道私鑰匙的人來操作。加密使得私密數(shù)據(jù)通過公共的因特網(wǎng)傳輸?shù)臅r候不需要冒嚴(yán)重的被第三方知道傳輸?shù)膬?nèi)容的風(fēng)險盖桥。
哈希算法的大致加密流程
1灾螃、對原文進(jìn)行補充和分割處理(一般分給為多個512位的文本,并進(jìn)一步分割為16個32位的整數(shù))揩徊。
2腰鬼、初始化哈希值(一般分割為多個32位整數(shù)嵌赠,例如SHA256就是256位的哈希值分解成8個32位整數(shù))。
3熄赡、對哈希值進(jìn)行計算(依賴于不同算法進(jìn)行不同輪數(shù)的計算姜挺,每個512位文本都要經(jīng)過這些輪數(shù)的計算)。
區(qū)塊鏈中每一個數(shù)據(jù)塊中包含了一次網(wǎng)絡(luò)交易的信息本谜,產(chǎn)生相關(guān)聯(lián)數(shù)據(jù)塊所使用的就是非對稱加密技術(shù)初家。非對密加密技術(shù)的作用是驗證信息的有效性和生成下一個區(qū)塊偎窘,區(qū)塊鏈上網(wǎng)絡(luò)交易的信息是公開透明的乌助,但是用戶的身份信息是被高度加密的,只有經(jīng)過用戶授權(quán)陌知,區(qū)塊鏈才能得到該身份信息他托,從而保證了數(shù)據(jù)的安生性和個人信息的隱私性。
公鑰和私鑰在非對稱加密機制里是成對存在的仆葡,公鑰和私鑰可以去相互驗證對方赏参,那么在比特幣的世界里面,我們可以把地址理解為公鑰沿盅,可以把簽名把篓、輸密碼的過程理解為私鑰的簽名。
每個礦工在拿到一筆轉(zhuǎn)賬交易時候都可以驗證公鑰和私鑰到底是不是匹配的腰涧,如果他們是匹配的韧掩,這筆交易就是合法的,這樣每一個人只需要保管好TA自己的私鑰窖铡,知道自己的比特幣地址和對方的比特幣地址就能夠安全的將比特幣進(jìn)行轉(zhuǎn)賬疗锐,不需要一個中心化的機構(gòu)來驗證對方發(fā)的比特幣是不是真的。