【本文由贊我(zaneds.com)獨(dú)家冠名】
01
在說非對稱算法之前竣灌,我們先了解下什么是對稱算法岸军?通俗的解釋是一個字符串可以通過某一個密鑰進(jìn)行加密和解密企锌。比如說某原字符串是abcd辟狈,密鑰(解釋:秘密的鑰匙叹誉,在密碼學(xué)中强霎,密鑰是在明文轉(zhuǎn)換為密文或者密文轉(zhuǎn)換成明文的算法中輸入的參數(shù))是key忿项,通過密鑰key加密后是密文U2FsdGVkX18Uf4BsqpVyFHbYtcWrUNDt。反之此密文通過密鑰key解密可得出原字符串a(chǎn)bcd。即對稱算法是通過一個密鑰進(jìn)行加密和解密轩触。比如諜戰(zhàn)片里寞酿,發(fā)電報(bào)一般都是用的對稱加密算法,這種算法的優(yōu)點(diǎn)就是速度快效率高脱柱,缺點(diǎn)就是不安全伐弹,如果密鑰和加密方法泄露,那就能根據(jù)密鑰解密出原文榨为;再就是如果存在較大數(shù)目的密鑰難以管理等等惨好。
02
而非對稱算法有兩個密鑰,即公鑰和私鑰(從字面意思可以了解公鑰即公開的密鑰随闺,私鑰即私有的密鑰)日川,這倆密鑰是成對的。有兩種方式矩乐,即公鑰加密私鑰解密龄句,私鑰加密公鑰解密。通常公鑰加密私鑰解密用的居多散罕。
那這種加密方式的實(shí)現(xiàn)過程是怎樣的呢分歇?舉個例子:A方生成一對密鑰,將公鑰公開笨使;B方得到公鑰后卿樱,對數(shù)據(jù)進(jìn)行加密然后發(fā)送給A方僚害,A方拿到數(shù)據(jù)后通過私鑰解密硫椰。此種加密算法的優(yōu)點(diǎn)是保密性好,缺點(diǎn)是加密和解密花費(fèi)的時間長萨蚕、速度慢靶草。這種是對數(shù)據(jù)加密的實(shí)現(xiàn)方式屡拨,即公鑰加密幢哨,私鑰解密。
03
今天大概介紹下常見的兩種加密算法:RSA和ECC(橢圓曲線加密算法)先改。
RSA是以它的三個發(fā)明者的Ron Rivest浩蓉、 Adi Shamir 和 Leonard Adleman的名字首字母命名派继。RSA可以說是最常見的非對稱加密算法,它即能用于數(shù)據(jù)加密捻艳,也能用于數(shù)字簽名驾窟,是目前最流行的公開密鑰算法。RSA的安全程度基于大質(zhì)數(shù)分解的難度认轨。因?yàn)镽SA的公鑰和密鑰就是一對質(zhì)數(shù)绅络,如將想要傳遞的信息在編碼時加入質(zhì)數(shù)AB,編碼之后傳給收信人,即使數(shù)據(jù)被截取恩急,如果沒有收信人的私鑰杉畜,則解密其實(shí)就是分解兩個質(zhì)數(shù)的過程。
由此看來衷恭,RSA的算法過程是比較簡單的此叠,關(guān)鍵的是要找到足夠大的質(zhì)數(shù)(質(zhì)數(shù)越大則解密過程越復(fù)雜)。
橢圓曲線加密算法是基于橢圓曲線數(shù)學(xué)的一種公鑰密碼算法随珠,其主要的安全性是利用了橢圓曲線對數(shù)問題的困難性拌蜘。
在區(qū)塊鏈中,常用的是橢圓曲線數(shù)字簽名算法牙丽,它是利用橢圓曲線加密算法對數(shù)字簽名算法的模擬简卧。橢圓曲線密碼算法實(shí)現(xiàn)了數(shù)據(jù)加解密、數(shù)字簽名和身份認(rèn)證等功能烤芦,該技術(shù)具有安全性高举娩、生成公私鑰方便、處理速度快和存儲空間小等方面的優(yōu)勢构罗。相對于RSA算法铜涉,在實(shí)際的開發(fā)使用中,橢圓曲線加密使用得更廣泛遂唧,比如比特幣就是使用了橢圓曲線中的SECP256k1芙代,可以提供128位的安全保護(hù)。
04
那加密算法在區(qū)塊鏈中到底都有哪些應(yīng)用呢盖彭?今天舉幾個例子說明一下纹烹。
賬戶地址的生成 ?大家現(xiàn)在應(yīng)該有創(chuàng)建過錢包了,那是否注意錢包的地址是一個串不規(guī)則的字符串呢召边?這些字符串是怎么生成的呢铺呵?沒錯,就是公鑰和私鑰隧熙,我們對外的地址一般都是取的公鑰前的20個字符串作為公開的錢包地址片挂,而私鑰則用于驗(yàn)證。
價值轉(zhuǎn)移保衛(wèi) ?其實(shí)不管是區(qū)塊鏈還是互聯(lián)網(wǎng)贞盯,在做價值轉(zhuǎn)移的時候音念,都要解決兩個問題。其一就是證明數(shù)據(jù)的準(zhǔn)確性躏敢,即保證發(fā)出者和價值是真實(shí)的闷愤,不是被篡改和偽裝的。其二就是只有接收者才能對這部分?jǐn)?shù)據(jù)進(jìn)行解密父丰。怎么實(shí)現(xiàn)的呢肝谭?來走個流程:
首先掘宪,發(fā)送者和接收者分別持有對方的公鑰和自己的私鑰。
第二步攘烛,發(fā)送者使用自己的私鑰加密簽名魏滚,在用對方的公鑰加密;
第三步坟漱,接收者拿到數(shù)據(jù)后使用發(fā)送者的公鑰進(jìn)行身份驗(yàn)證鼠次,使用自己的私鑰解密。
通過以上流程芋齿,就能保證數(shù)據(jù)不被截獲腥寇,即使被截獲也沒關(guān)系,因?yàn)闆]有私鑰也是拿不到原文的觅捆。
05
總而言之赦役,非對稱加密算法其實(shí)就是用了一對密鑰,公鑰對外公開栅炒,私鑰自己留著掂摔。如果要傳送數(shù)據(jù)就用對方的公鑰加密,接收者用私鑰解密赢赊。如果要簽名就用自己的私鑰加密乙漓,對方用公鑰驗(yàn)證。密碼算法在區(qū)塊鏈中的應(yīng)用是非常重要的释移,這里只是做了簡單的理論介紹叭披,列舉了幾個常用的應(yīng)用點(diǎn)。但是在實(shí)際應(yīng)用并不止如此玩讳。