什么是非對(duì)稱加密和對(duì)稱加密
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在《想要安全地保管資產(chǎn),先要知道錢包的這些知識(shí)》中,我們可以了解到在區(qū)塊鏈的這些錢包中,什么是私鑰,什么是公鑰。
公鑰可以比作是銀行賬戶,而賬戶地址類似于銀行卡號(hào),私鑰可以被看成銀行卡號(hào)以及銀行卡密碼的組合。這樣一類比似乎對(duì)區(qū)塊鏈中的私鑰、公鑰、地址這些名詞有了比較清晰的認(rèn)識(shí),但是其實(shí)在這些名詞的背后的理論支撐是非對(duì)稱加密技術(shù),它是什么樣的技術(shù)呢,今天大白就給大家科普一下。
首先,在講非對(duì)稱加密之前,先簡(jiǎn)單講一下對(duì)稱加密。
對(duì)稱加密也叫做單密鑰加密,指的是用同一個(gè)密鑰對(duì)信息進(jìn)行加密和解密。簡(jiǎn)單講就是上鎖和開(kāi)鎖都是一把鑰匙。
比如在現(xiàn)實(shí)生活中,你想寄一封信給你的朋友,為了信的內(nèi)容不被他人剽竊,你會(huì)想著用一把鑰匙把信件鎖在安全的柜子里,然后再將物品連同柜子一起寄給朋友,而你的朋友只能用你這把鑰匙才能打開(kāi)這個(gè)柜子進(jìn)而取出信件。這樣一來(lái)就保證了信件在郵寄過(guò)程中不被他人看到。在密碼學(xué)中以上過(guò)程可以理解為如下:
在上圖的過(guò)程中,“上鎖”和“開(kāi)鎖”都用的同一把鑰匙,這把鑰匙就相當(dāng)于對(duì)稱加密中的“私鑰”,而“上鎖”和“開(kāi)鎖”過(guò)程就相當(dāng)于“加密”和“解密”過(guò)程,“信件”則是我們要加密的信息,信息加密后則是“密文”,解密后則是“明文”。
但是細(xì)心的小伙伴可能會(huì)想到,信件上鎖放入柜子固然安全,但是開(kāi)這個(gè)柜子必須要用上鎖的那把鑰匙,那么問(wèn)題是這把鑰匙怎么給朋友?鑰匙一旦選擇郵寄,那就存在安全隱患,除非親手把鑰匙給朋友,那這樣的話干嘛不親手把信件直接給朋友。所以對(duì)稱加密的一個(gè)問(wèn)題是密鑰配送困難問(wèn)題。
針對(duì)密鑰配送這一難題,密碼學(xué)史上偉大的發(fā)明——非對(duì)稱加密出現(xiàn)了。
非對(duì)稱加密有一對(duì)密鑰,分別是私鑰和公鑰,公鑰和私鑰一一對(duì)應(yīng),私鑰需要保密,而公鑰則是可以公開(kāi)的。加密和解密不是用同一個(gè)密鑰。
回到之前的例子,你朋友去配了一對(duì)鑰匙(鑰匙A和鑰匙B),鑰匙A上鎖柜子之后,必須要鑰匙B才能開(kāi)鎖柜子。你朋友把鑰匙A郵寄給你,你用這把鑰匙把信件鎖到柜子中,然后將柜子郵寄給你朋友,你朋友用鑰匙B打開(kāi)柜子取出信件。細(xì)心的小伙伴又想到了,朋友把鑰匙A寄給自己的時(shí)候,可能會(huì)被快遞人員偷配鑰匙,但是快遞人員即使持有鑰匙A,他也不能打開(kāi)柜子,因?yàn)殍€匙A上鎖柜子之后,只有鑰匙B才能開(kāi)鎖,整個(gè)過(guò)程,鑰匙B一直在朋友手上,只要朋友不把鑰匙B弄丟,這個(gè)柜子就只能由朋友打開(kāi)。
在非對(duì)稱加密中,鑰匙A就相當(dāng)于公鑰,它被人知道也沒(méi)有關(guān)系,鑰匙B相當(dāng)于私鑰,它需要持有人小心保存,不能丟失?!吧湘i柜子”和“開(kāi)鎖柜子”相對(duì)于“加密過(guò)程”和“解密過(guò)程”,而且在非對(duì)稱加密中,最重要的是加密和解密用的不是同一把密鑰,而是一對(duì)密鑰,即私鑰和公鑰。比特幣公鑰就是通過(guò)私鑰推導(dǎo)而來(lái),公鑰繼續(xù)轉(zhuǎn)換變成賬戶地址,而且是不能反向推導(dǎo)出私鑰的,私鑰和公鑰是一對(duì),用戶需要妥善保管好自己的私鑰,而公鑰和賬戶地址都是可以公開(kāi)的。
上述過(guò)程體現(xiàn)的是公鑰加密,私鑰解密。區(qū)塊鏈中當(dāng)別人給你轉(zhuǎn)賬的時(shí)候,你的收款地址(公鑰)是公開(kāi)給他人的,而轉(zhuǎn)入的資產(chǎn)只有持有私鑰的你才可以“解密”它,對(duì)它自由支配。
還有一種情況是私鑰加密,公鑰解密。典型的應(yīng)用場(chǎng)景就是數(shù)字簽名,A采用自己的私鑰加密文件信息后發(fā)送給B,并將公鑰也發(fā)送給B,B利用這個(gè)公鑰對(duì)信息解密,如果C和D也有這個(gè)公鑰,那C和D也可以解密這個(gè)文件信息,但是只有持有私鑰的A才能加密這個(gè)信息,因此可以確保這個(gè)文件信息確確實(shí)實(shí)是由A發(fā)出的,這就比較適用于一些公司老總做電子簽名,以確保簽名是老總簽的。在區(qū)塊鏈中,你的收款地址就相當(dāng)于公鑰,人人可以看到,但是如果你要轉(zhuǎn)移你的資產(chǎn)給朋友,你需要輸入密碼(私鑰)進(jìn)行數(shù)字簽名,來(lái)表示這個(gè)資產(chǎn)確確實(shí)實(shí)是由你發(fā)出的。