導航:首頁 > 觀區塊鏈 > 區塊鏈的公私密鑰

區塊鏈的公私密鑰

發布時間:2024-12-31 17:26:03

① 第4課 區塊鏈中的密碼學 學習總結

這是加入公Ulord深度學習第四課,楊博士給大家主講區塊鏈中的密碼學問題,本期課程令讓我弄懂了一個一直困擾著我的關於公鑰和私鑰的問題,他們之間到底是什麼關系?再這次學習中我得到了答案,現在我把我學習到的內容跟大家分享一下。

區塊鏈里的公鑰和私鑰,是非對稱加密里的兩個基本概念。

公鑰與私鑰,是通過一種演算法得到的一個密鑰對,公鑰是密鑰對中公開的部分,私鑰是非公開的部分。公鑰通常用於加密會話,就是消息或者說信息,同時,也可以來用於驗證用私鑰簽名的數字簽名。

私鑰可以用來進行簽名,用對應的公鑰來進行驗證。通過這種公開密鑰體製得到的密鑰對能夠保證在全世界范圍內是唯一的。使用這個密鑰對的時候,如果用其中一個密鑰加密數據,則必須用它對應的另一個密鑰來進行解密。

比如說用公鑰加密的數據就必須用私鑰才能解密,如果用私鑰進行加密,就必須要對應的公鑰才能解密,否則無法成功解密。另外,在比特幣的區塊鏈中,則是通過私鑰來計算出公鑰,通過公鑰來計算出地址,而這個過程是不可逆的。

② 鍦ㄥ尯鍧楅摼涓涓鑸浣跨敤浠涔堝姞瀵嗙畻娉

鍦ㄥ尯鍧楅摼涓錛屼竴鑸浣跨敤涓ょ嶄富瑕佺殑鍔犲瘑綆楁硶錛



  1. 鍏閽/縐侀掗鍔犲瘑綆楁硶錛氳繖縐嶅姞瀵嗙畻娉曚嬌鐢ㄤ竴瀵瑰叕閽ュ拰縐侀掗銆傚叕閽ュ彲浠ュ叕寮鍒嗗彂錛岃岀侀掗闇瑕佷繚瀵嗐傚彧鏈夋嫢鏈夌侀掗鐨勪漢鎵嶈兘瑙e瘑浣跨敤鍏閽ュ姞瀵嗙殑鏁版嵁銆傝繖縐嶅姞瀵嗘柟娉曡騫挎硾鐢ㄤ簬鏁板瓧絳懼悕鍜岃韓浠介獙璇侊紝鍥犱負瀹冨彲浠ョ『璁ゆ暟鎹鐨勬潵婧愬拰瀹屾暣鎬с傚湪鍖哄潡閾句腑錛岀侀掗鐢ㄤ簬紜璁や氦鏄撹呯殑韜浠斤紝鑰屽叕閽ュ垯琚騫挎挱緇欑綉緇滀腑鐨勫叾浠栬妭鐐逛互楠岃瘉浜ゆ槗鐨勬湁鏁堟с

  2. RSA綆楁硶錛氳繖鏄涓縐嶅父鐢ㄧ殑鍏閽/縐侀掗鍔犲瘑綆楁硶錛岀敱Ron Rivest銆丄di Shamir 鍜 Leonard Adleman浜1978騫村彂鏄庛傚畠鏄涓縐嶉潪瀵圭О鍔犲瘑綆楁硶錛屼篃灝辨槸璇達紝鐢ㄤ簬鍔犲瘑鐨勫瘑閽ュ拰鐢ㄤ簬瑙e瘑鐨勫瘑閽ユ槸涓嶅悓鐨勩

  3. ECDSA錛堟き鍦嗘洸綰挎暟瀛楃懼悕綆楁硶錛夛細榪欐槸涓縐嶅熀浜嶳SA綆楁硶鐨勬敼榪涚増錛屼嬌鐢ㄦき鍦嗘洸綰垮瘑鐮佸︼紝浣垮緱絳懼悕榪囩▼鏇村揩閫熶笖鏇村畨鍏ㄣ傚湪鍖哄潡閾句腑錛孍CDSA琚鐢ㄤ簬楠岃瘉浜ゆ槗鐨勬暟瀛楃懼悕銆


鎷撳睍鐭ヨ瘑錛



鍝堝笇鍑芥暟鏄涓縐嶅皢浠繪剰闀垮害鐨勬暟鎹錛堝傛枃鏈銆佹暟瀛楃瓑錛夎漿鎹涓哄滻瀹氶暱搴︼紙閫氬父涓256浣嶆垨512浣嶏級鐨勬憳瑕佺殑鏂規硶銆傚畠浠闈炲父蹇涓旈潪甯稿畨鍏錛屽洜涓烘敼鍙樻暟鎹涓鐨勪竴灝忛儴鍒嗭紙鍗充嬌鏄寰灝忕殑鏀瑰彉錛変細瀵艱嚧鍝堝笇緇撴灉鐨勫彉鍖栭潪甯稿ぇ錛岀敋鑷充笉鍙閫嗐傝繖縐嶇壒鎬т嬌寰楀搱甯屽嚱鏁板湪鍖哄潡閾句腑琚騫挎硾浣跨敤錛屽傚尯鍧楃殑merkle鏍戠粨鏋勩佷氦鏄撶殑鏁板瓧絳懼悕浠ュ強瀵嗙爜瀛﹂挶鍖呯殑瀛樺偍絳夈


姣旂壒甯佸尯鍧楅摼涓昏佷嬌鐢⊿HA-256浣滀負鍏跺搱甯屽嚱鏁幫紝榪欐槸鐢盌avid Chaum鍜孧ayra P. Chilomchik鍦1997騫村紩鍏ョ殑涓縐嶇畻娉曘係HA-256鎻愪緵浜嗕竴縐嶉潪甯稿畨鍏ㄧ殑鏂瑰紡鏉ュ壋寤哄尯鍧楅摼騫剁『淇濅氦鏄撶殑瀹夊叏鎬с傛ゅ栵紝鍖哄潡閾句腑鐨凪erkle鏍戠粨鏋勪篃鏄鍩轟簬SHA-256鐨勫搱甯屽嚱鏁版潵鍒涘緩鐨勩


浠ヤ笂涓ょ嶅姞瀵嗙畻娉曞拰鍝堝笇鍑芥暟鍦ㄥ尯鍧楅摼涓閮芥壆婕旂潃闈炲父閲嶈佺殑瑙掕壊錛屽畠浠淇濊瘉浜嗕氦鏄撶殑瀹夊叏鎬с佸畬鏁存у拰鍖垮悕鎬э紝鍚屾椂涔熺『淇濅簡鍖哄潡閾劇綉緇滅殑鍘諱腑蹇冨寲鍜屼笉鍙綃℃敼鎬с


鍚屾椂錛岀敱浜庡尯鍧楅摼涓鐨勬暟鎹鏄浠ュ尯鍧楃殑褰㈠紡涓嶆柇澧為暱鐨勶紝榪欎簺鍔犲瘑綆楁硶榪樿鐢ㄤ簬鍒涘緩鍖哄潡澶村拰鍖哄潡闂寸殑閾炬帴錛岃繘涓姝ユ彁楂樹簡鍖哄潡閾劇殑鎬ц兘鍜屽畨鍏ㄦс

③ 區塊鏈怎麼驗簽

你必須了解的,區塊鏈數字簽名機制

????區塊鏈使用Hash函數實現了交易信息和地址信息的不可篡改,保證了數據傳輸過程中的完整性,但是Hash函數無法實現交易信息的不可否認性(又稱拒絕否認性、抗抵賴性,指網路通信雙方在信息交互過程中,確信參與者本身和所提供的信息真實同一性,即所有參與者不可否認或抵賴本人的真實身份,以及提供信息的原樣性和完成的操作與承諾)。區塊鏈使用公鑰加密技術中的數字簽名機制保證信息的不可否認性。

????數字簽名主要包括簽名演算法和驗證演算法。在簽名演算法中,簽名者用其私鑰對電子文件進行簽名運算,從而得到電子文件的簽名密文;在驗證演算法中,驗證者利用簽名者的公鑰,對電子文件的簽名密文進行驗證運算,根據驗證演算法的結果判斷簽名文件的合法性。在簽名過程中,只有簽名者知道自己的私鑰,不知道其私鑰的任何人員無法偽造或正確簽署電子文件;在驗證過程中,只有合法的簽名電子文件能有效通過驗證,任何非法的簽名文件都不能滿足其驗證演算法。

????常用的數字簽名演算法包括RSA數字簽名、DSA數字簽名、ECDSA數字簽名、Schnorr數字簽名等演算法。

???我們以RSA數字簽名來介紹:可能人們要問RSA簽名和加密有什麼區別呢?加密和簽名都是為了安全性考慮,但略有不同。常有人問加密和簽名是用私鑰還是公鑰?其實都是對加密和簽名的作用有所混淆。簡單的說,加密是為了防止信息被泄露,而簽名是為了防止信息被篡改。

???例子:A收到B發的消息後,需要進行回復「收到」--RSA簽名過程:

???首先:A生成一對密鑰(公鑰和私鑰),私鑰不公開,A自己保留。公鑰為公開的,任何人可以獲取。

???然後:A用自己的私鑰對消息加簽,形成簽名,並將加簽的消息和消息本身一起傳遞給B。

???最後:B收到消息後,在獲取A的公鑰進行驗簽,如果驗簽出來的內容與消息本身一致,證明消息是A回復的。

????在這個過程中,只有2次傳遞過程,第一次是A傳遞加簽的消息和消息本身給B,第二次是B獲取A的公鑰,即使都被敵方截獲,也沒有危險性,因為只有A的私鑰才能對消息進行簽名,即使知道了消息內容,也無法偽造帶簽名的回復給B,防止了消息內容的篡改。

綜上所述,來源於書本及網路,讓我們了解的有直觀的認識。

區塊鏈電子發票讀取不了簽名怎麼回事

1、在網路上傳過程中,網路異常導致無法讀取。

2、稅局驗簽系統故障也會導致讀取不了簽名。

區塊鏈中的私鑰和公鑰

公開密鑰(publickey,簡稱公鑰)、私有密鑰(privatekey,簡稱私鑰)是密碼學里非對稱加密演算法的內容。顧名思義,公鑰是可以公開的,而私鑰則要進行安全保管。

私鑰是由隨機種子生成的,公鑰是將私鑰通過演算法推導出來。由於公鑰太長,為了簡便實用,就出現了「地址」,地址是公鑰推導出來的。這些推導過程是單向不可逆的。也就是地址不能推出公鑰,公鑰不能推出私鑰。

從中我們可以看出,公鑰與私鑰是成對存在的。它們的用處用16個字來概括:公鑰加密,私鑰解密;私鑰簽名,公鑰驗簽。

公鑰加密,私鑰解密。也就是用公鑰加密原數據,只有對應的私鑰才能解開原數據。這樣能使得原數據在網路中傳播不被竊取,保護隱私。

私鑰簽名,公鑰驗簽。用私鑰對原數據進行簽名,只有對應的公鑰才能驗證簽名串與原數據是匹配的。

可以用鎖頭,鑰匙來比喻公鑰,私鑰。鎖頭用來鎖定某物品,鑰匙來解鎖該物品。鑰匙所有者是物品的所有者。事實上就是這樣,公私鑰對奠定了區塊鏈的賬戶體系及資產(Token等)的所有權,區塊鏈的資產是鎖定在公鑰上的,私鑰是用來解鎖該資產然後使用。比如說我要轉讓資產給你,就是我用我的私鑰簽名了一筆我轉讓資產給你的交易(含資產,數量等等)提交到區塊鏈網路里,節點會驗證該簽名,正確則從我的公鑰上解鎖資產鎖定到你的公鑰上。

我們看到了私鑰的作用了吧,跟中心化記賬系統(支付寶、微信支付等)的密碼一樣重要,擁有私鑰就擁有了資產所有權,所以我們千萬要保管好私鑰,不能泄露。

區塊鏈溯源系統能防偽嗎?是怎麼防偽的?

區塊鏈的最大特點就是不可篡改性,信息只能上傳,但不可以更改。所以企業上傳的信息資料都是不可以被修改的。也就是說,一旦產品出現問題,使用溯源碼就能立刻找出產品問題所在,且這個記錄永久保留。相比於傳統的溯源系統來說,區塊鏈溯源系統的防偽性不是強了一點半點,推薦使用區塊鏈溯源系統。不過市場上好多隻是打了個噱頭,並不是真正的區塊鏈技術,所以要擦亮眼睛識別。你可以用下井鏈溯源平台,這個是真正的區塊鏈溯源平台,我們公司在用的。

④ 加密區塊鏈怎麼設置,區塊鏈的加密技術

【深度知識】區塊鏈之加密原理圖示(加密,簽名)

先放一張以太坊的架構圖:

在學習的過程中主要是採用單個模塊了學習了解的,包括P2P,密碼學,網路,協議等。直接開始總結:

秘鑰分配問題也就是秘鑰的傳輸問題,如果對稱秘鑰,那麼只能在線下進行秘鑰的交換。如果在線上傳輸秘鑰,那就有可能被攔截。所以採用非對稱加密,兩把鑰匙,一把私鑰自留,一把公鑰公開。公鑰可以在網上傳輸。不用線下交易。保證數據的安全性。

如上圖,A節點發送數據到B節點,此時採用公鑰加密。A節點從自己的公鑰中獲取到B節點的公鑰對明文數據加密,得到密文發送給B節點。而B節點採用自己的私鑰解密。

2、無法解決消息篡改。

如上圖,A節點採用B的公鑰進行加密,然後將密文傳輸給B節點。B節點拿A節點的公鑰將密文解密。

1、由於A的公鑰是公開的,一旦網上黑客攔截消息,密文形同虛設。說白了,這種加密方式,只要攔截消息,就都能解開。

2、同樣存在無法確定消息來源的問題,和消息篡改的問題。

如上圖,A節點在發送數據前,先用B的公鑰加密,得到密文1,再用A的私鑰對密文1加密得到密文2。而B節點得到密文後,先用A的公鑰解密,得到密文1,之後用B的私鑰解密得到明文。

1、當網路上攔截到數據密文2時,由於A的公鑰是公開的,故可以用A的公鑰對密文2解密,就得到了密文1。所以這樣看起來是雙重加密,其實最後一層的私鑰簽名是無效的。一般來講,我們都希望簽名是簽在最原始的數據上。如果簽名放在後面,由於公鑰是公開的,簽名就缺乏安全性。

2、存在性能問題,非對稱加密本身效率就很低下,還進行了兩次加密過程。

如上圖,A節點先用A的私鑰加密,之後用B的公鑰加密。B節點收到消息後,先採用B的私鑰解密,然後再利用A的公鑰解密。

1、當密文數據2被黑客攔截後,由於密文2隻能採用B的私鑰解密,而B的私鑰只有B節點有,其他人無法機密。故安全性最高。

2、當B節點解密得到密文1後,只能採用A的公鑰來解密。而只有經過A的私鑰加密的數據才能用A的公鑰解密成功,A的私鑰只有A節點有,所以可以確定數據是由A節點傳輸過來的。

經兩次非對稱加密,性能問題比較嚴重。

基於以上篡改數據的問題,我們引入了消息認證。經過消息認證後的加密流程如下:

當A節點發送消息前,先對明文數據做一次散列計算。得到一個摘要,之後將照耀與原始數據同時發送給B節點。當B節點接收到消息後,對消息解密。解析出其中的散列摘要和原始數據,然後再對原始數據進行一次同樣的散列計算得到摘要1,比較摘要與摘要1。如果相同則未被篡改,如果不同則表示已經被篡改。

在傳輸過程中,密文2隻要被篡改,最後導致的hash與hash1就會產生不同。

無法解決簽名問題,也就是雙方相互攻擊。A對於自己發送的消息始終不承認。比如A對B發送了一條錯誤消息,導致B有損失。但A抵賴不是自己發送的。

在(三)的過程中,沒有辦法解決交互雙方相互攻擊。什麼意思呢?有可能是因為A發送的消息,對A節點不利,後來A就抵賴這消息不是它發送的。

為了解決這個問題,故引入了簽名。這里我們將(二)-4中的加密方式,與消息簽名合並設計在一起。

在上圖中,我們利用A節點的私鑰對其發送的摘要信息進行簽名,然後將簽名+原文,再利用B的公鑰進行加密。而B得到密文後,先用B的私鑰解密,然後對摘要再用A的公鑰解密,只有比較兩次摘要的內容是否相同。這既避免了防篡改問題,有規避了雙方攻擊問題。因為A對信息進行了簽名,故是無法抵賴的。

為了解決非對稱加密數據時的性能問題,故往往採用混合加密。這里就需要引入對稱加密,如下圖:

在對數據加密時,我們採用了雙方共享的對稱秘鑰來加密。而對稱秘鑰盡量不要在網路上傳輸,以免丟失。這里的共享對稱秘鑰是根據自己的私鑰和對方的公鑰計算出的,然後適用對稱秘鑰對數據加密。而對方接收到數據時,也計算出對稱秘鑰然後對密文解密。

以上這種對稱秘鑰是不安全的,因為A的私鑰和B的公鑰一般短期內固定,所以共享對稱秘鑰也是固定不變的。為了增強安全性,最好的方式是每次交互都生成一個臨時的共享對稱秘鑰。那麼如何才能在每次交互過程中生成一個隨機的對稱秘鑰,且不需要傳輸呢?

那麼如何生成隨機的共享秘鑰進行加密呢?

對於發送方A節點,在每次發送時,都生成一個臨時非對稱秘鑰對,然後根據B節點的公鑰和臨時的非對稱私鑰可以計算出一個對稱秘鑰(KA演算法-KeyAgreement)。然後利用該對稱秘鑰對數據進行加密,針對共享秘鑰這里的流程如下:

對於B節點,當接收到傳輸過來的數據時,解析出其中A節點的隨機公鑰,之後利用A節點的隨機公鑰與B節點自身的私鑰計算出對稱秘鑰(KA演算法)。之後利用對稱秘鑰機密數據。

對於以上加密方式,其實仍然存在很多問題,比如如何避免重放攻擊(在消息中加入Nonce),再比如彩虹表(參考KDF機制解決)之類的問題。由於時間及能力有限,故暫時忽略。

那麼究竟應該採用何種加密呢?

主要還是基於要傳輸的數據的安全等級來考量。不重要的數據其實做好認證和簽名就可以,但是很重要的數據就需要採用安全等級比較高的加密方案了。

密碼套件是一個網路協議的概念。其中主要包括身份認證、加密、消息認證(MAC)、秘鑰交換的演算法組成。

在整個網路的傳輸過程中,根據密碼套件主要分如下幾大類演算法:

秘鑰交換演算法:比如ECDHE、RSA。主要用於客戶端和服務端握手時如何進行身份驗證。

消息認證演算法:比如SHA1、SHA2、SHA3。主要用於消息摘要。

批量加密演算法:比如AES,主要用於加密信息流。

偽隨機數演算法:例如TLS1.2的偽隨機函數使用MAC演算法的散列函數來創建一個主密鑰——連接雙方共享的一個48位元組的私鑰。主密鑰在創建會話密鑰(例如創建MAC)時作為一個熵來源。

在網路中,一次消息的傳輸一般需要在如下4個階段分別進行加密,才能保證消息安全、可靠的傳輸。

握手/網路協商階段:

在雙方進行握手階段,需要進行鏈接的協商。主要的加密演算法包括RSA、DH、ECDH等

身份認證階段:

身份認證階段,需要確定發送的消息的來源來源。主要採用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA簽名)等。

消息加密階段:

消息加密指對發送的信息流進行加密。主要採用的加密方式包括DES、RC4、AES等。

消息身份認證階段/防篡改階段:

主要是保證消息在傳輸過程中確保沒有被篡改過。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。

ECC:EllipticCurvesCryptography,橢圓曲線密碼編碼學。是一種根據橢圓上點倍積生成公鑰、私鑰的演算法。用於生成公私秘鑰。

ECDSA:用於數字簽名,是一種數字簽名演算法。一種有效的數字簽名使接收者有理由相信消息是由已知的發送者創建的,從而發送者不能否認已經發送了消息(身份驗證和不可否認),並且消息在運輸過程中沒有改變。ECDSA簽名演算法是ECC與DSA的結合,整個簽名過程與DSA類似,所不一樣的是簽名中採取的演算法為ECC,最後簽名出來的值也是分為r,s。主要用於身份認證階段。

ECDH:也是基於ECC演算法的霍夫曼樹秘鑰,通過ECDH,雙方可以在不共享任何秘密的前提下協商出一個共享秘密,並且是這種共享秘鑰是為當前的通信暫時性的隨機生成的,通信一旦中斷秘鑰就消失。主要用於握手磋商階段。

ECIES:是一種集成加密方案,也可稱為一種混合加密方案,它提供了對所選擇的明文和選擇的密碼文本攻擊的語義安全性。ECIES可以使用不同類型的函數:秘鑰協商函數(KA),秘鑰推導函數(KDF),對稱加密方案(ENC),哈希函數(HASH),H-MAC函數(MAC)。

ECC是橢圓加密演算法,主要講述了按照公私鑰怎麼在橢圓上產生,並且不可逆。ECDSA則主要是採用ECC演算法怎麼來做簽名,ECDH則是採用ECC演算法怎麼生成對稱秘鑰。以上三者都是對ECC加密演算法的應用。而現實場景中,我們往往會採用混合加密(對稱加密,非對稱加密結合使用,簽名技術等一起使用)。ECIES就是底層利用ECC演算法提供的一套集成(混合)加密方案。其中包括了非對稱加密,對稱加密和簽名的功能。

metacharset="utf-8"

這個先訂條件是為了保證曲線不包含奇點。

所以,隨著曲線參數a和b的不斷變化,曲線也呈現出了不同的形狀。比如:

所有的非對稱加密的基本原理基本都是基於一個公式K=kG。其中K代表公鑰,k代表私鑰,G代表某一個選取的基點。非對稱加密的演算法就是要保證該公式不可進行逆運算(也就是說G/K是無法計算的)。*

ECC是如何計算出公私鑰呢?這里我按照我自己的理解來描述。

我理解,ECC的核心思想就是:選擇曲線上的一個基點G,之後隨機在ECC曲線上取一個點k(作為私鑰),然後根據kG計算出我們的公鑰K。並且保證公鑰K也要在曲線上。*

那麼kG怎麼計算呢?如何計算kG才能保證最後的結果不可逆呢?這就是ECC演算法要解決的。

首先,我們先隨便選擇一條ECC曲線,a=-3,b=7得到如下曲線:

在這個曲線上,我隨機選取兩個點,這兩個點的乘法怎麼算呢?我們可以簡化下問題,乘法是都可以用加法表示的,比如22=2+2,35=5+5+5。那麼我們只要能在曲線上計算出加法,理論上就能算乘法。所以,只要能在這個曲線上進行加法計算,理論上就可以來計算乘法,理論上也就可以計算k*G這種表達式的值。

曲線上兩點的加法又怎麼算呢?這里ECC為了保證不可逆性,在曲線上自定義了加法體系。

現實中,1+1=2,2+2=4,但在ECC演算法里,我們理解的這種加法體系是不可能。故需要自定義一套適用於該曲線的加法體系。

ECC定義,在圖形中隨機找一條直線,與ECC曲線相交於三個點(也有可能是兩個點),這三點分別是P、Q、R。

那麼P+Q+R=0。其中0不是坐標軸上的0點,而是ECC中的無窮遠點。也就是說定義了無窮遠點為0點。

同樣,我們就能得出P+Q=-R。由於R與-R是關於X軸對稱的,所以我們就能在曲線上找到其坐標。

P+R+Q=0,故P+R=-Q,如上圖。

以上就描述了ECC曲線的世界裡是如何進行加法運算的。

從上圖可看出,直線與曲線只有兩個交點,也就是說直線是曲線的切線。此時P,R重合了。

也就是P=R,根據上述ECC的加法體系,P+R+Q=0,就可以得出P+R+Q=2P+Q=2R+Q=0

於是乎得到2P=-Q(是不是與我們非對稱演算法的公式K=kG越來越近了)。

於是我們得出一個結論,可以算乘法,不過只有在切點的時候才能算乘法,而且只能算2的乘法。

假若2可以變成任意個數進行想乘,那麼就能代表在ECC曲線里可以進行乘法運算,那麼ECC演算法就能滿足非對稱加密演算法的要求了。

那麼我們是不是可以隨機任何一個數的乘法都可以算呢?答案是肯定的。也就是點倍積計算方式。

選一個隨機數k,那麼k*P等於多少呢?

我們知道在計算機的世界裡,所有的都是二進制的,ECC既然能算2的乘法,那麼我們可以將隨機數k描述成二進制然後計算。假若k=151=10010111

由於2P=-Q所以這樣就計算出了kP。這就是點倍積演算法。所以在ECC的曲線體系下是可以來計算乘法,那麼以為這非對稱加密的方式是可行的。

至於為什麼這樣計算是不可逆的。這需要大量的推演,我也不了解。但是我覺得可以這樣理解:

我們的手錶上,一般都有時間刻度。現在如果把1990年01月01日0點0分0秒作為起始點,如果告訴你至起始點為止時間流逝了整1年,那麼我們是可以計算出現在的時間的,也就是能在手錶上將時分秒指針應該指向00:00:00。但是反過來,我說現在手錶上的時分秒指針指向了00:00:00,你能告訴我至起始點算過了有幾年了么?

ECDSA簽名演算法和其他DSA、RSA基本相似,都是採用私鑰簽名,公鑰驗證。只不過演算法體系採用的是ECC的演算法。交互的雙方要採用同一套參數體系。簽名原理如下:

在曲線上選取一個無窮遠點為基點G=(x,y)。隨機在曲線上取一點k作為私鑰,K=k*G計算出公鑰。

簽名過程:

生成隨機數R,計算出RG.

根據隨機數R,消息M的HASH值H,以及私鑰k,計算出簽名S=(H+kx)/R.

將消息M,RG,S發送給接收方。

簽名驗證過程:

接收到消息M,RG,S

根據消息計算出HASH值H

根據發送方的公鑰K,計算HG/S+xK/S,將計算的結果與RG比較。如果相等則驗證成功。

公式推論:

HG/S+xK/S=HG/S+x(kG)/S=(H+xk)/GS=RG

在介紹原理前,說明一下ECC是滿足結合律和交換律的,也就是說A+B+C=A+C+B=(A+C)+B。

這里舉一個WIKI上的例子說明如何生成共享秘鑰,也可以參考AliceAndBob的例子。

Alice與Bob要進行通信,雙方前提都是基於同一參數體系的ECC生成的公鑰和私鑰。所以有ECC有共同的基點G。

生成秘鑰階段:

Alice採用公鑰演算法KA=ka*G,生成了公鑰KA和私鑰ka,並公開公鑰KA。

Bob採用公鑰演算法KB=kb*G,生成了公鑰KB和私鑰kb,並公開公鑰KB。

計算ECDH階段:

Alice利用計算公式Q=ka*KB計算出一個秘鑰Q。

Bob利用計算公式Q'=kb*KA計算出一個秘鑰Q'。

共享秘鑰驗證:

Q=kaKB=ka*kb*G=ka*G*kb=KA*kb=kb*KA=Q'

故雙方分別計算出的共享秘鑰不需要進行公開就可採用Q進行加密。我們將Q稱為共享秘鑰。

在以太坊中,採用的ECIEC的加密套件中的其他內容:

1、其中HASH演算法採用的是最安全的SHA3演算法Keccak。

2、簽名演算法採用的是ECDSA

3、認證方式採用的是H-MAC

4、ECC的參數體系採用了secp256k1,其他參數體系參考這里

H-MAC全程叫做Hash-.其模型如下:

在以太坊的UDP通信時(RPC通信加密方式不同),則採用了以上的實現方式,並擴展化了。

首先,以太坊的UDP通信的結構如下:

其中,sig是經過私鑰加密的簽名信息。mac是可以理解為整個消息的摘要,ptype是消息的事件類型,data則是經過RLP編碼後的傳輸數據。

其UDP的整個的加密,認證,簽名模型如下:

利用區塊鏈技術實現不記密碼加密存儲驗證,解決離線安全存儲問題

本文介紹一種利用區塊鏈技術配合個人存儲設備進行網路安全驗證的方法

以微嘟為代表的不記密碼快捷加密存儲設備,已經完美做到了快捷安全存儲,但美中不足的是無法通過網路查詢設備何時被使用,以及無法預知極端情況下設備被離線破解等。

利用區塊鏈技術可以解決此問題,具體工作原理:

在設備連接PC端,並檢測到射頻ID驗證通過後,接入設備內的特定硬體,此時自動通過安裝在PC端的程序向特定的區塊鏈網路上廣播設備打開時間的等信息。在得到區塊鏈網路確認後,才授權設備後級存儲用戶重要數據的存儲顆粒接入。因為每次設備打開都需要網路授權及相關的信息都存儲在區塊鏈網路上了,所以有效的避免了不明目的的人在用戶不知情的情況下偷偷地打開設備。

多了一層區塊鏈的網路驗證是不是發現設備的安全性提高了好多?

下面以微嘟鏈安全驗證為示意:

區塊鏈:防篡改的哈希加密演算法

同學A和B在教室里拋硬幣,賭誰打掃衛生,正面朝上,則A打掃,反面朝上,則B打掃,這個策略沒有什麼問題。

然而,如果把情景遷移到網路聊天室,A和B同樣進行拋硬幣的游戲,估計B就不會答應了,因為當A拋了硬幣,B不論是猜

正面還是反面,A都可以說B猜錯了。

怎麼解決這個問題呢?要不先給拋硬幣的結果加密,B再猜?這個方法可以試一下。

假設任意奇數代表硬幣正面,任意偶數代表反面。A想一個數375,然後乘以一個258,把其結果告訴B為96750,並聲明A想的375為密鑰,由他保管。

在接下來驗證結果時,A可以謊稱258為他想的數,375為密鑰,A還是立於不敗之地。那如果A事先把密鑰告訴B呢?B可以直接算出原始數字,失去了保密作用。

這種知道加密方法就知道了解密方法顯然行不通,那有沒有一種方法,知道了加密方法仍然無法恢復原文呢?

顯然是有的,在加密過程中加入不可逆運算就OK了。A設計新的加密方式:

假設A想的數是375,進行加密:

B拿到結果120943,但他幾乎不能根據120943反算出密匙375。

如果B想要驗證A是否說謊:

終於可以拋硬幣了……

這種丟掉一部分信息的加密方式稱為「單向加密」,也叫哈希演算法。

有個問題:

這個是有可能的,但可以解決,就是增加上述演算法的難度,以致於A很難很難找到。

根據以上表述,一個可靠的哈希演算法,應該滿足:

密碼學中的哈希函數有3個重要的性質,即抗碰撞性、原像不可逆、難題友好性。

碰撞性,就是指A同學事先找出一奇一偶使得哈希結果一致,在計算上是不可行的。

首先,把大空間桑拿的消息壓縮到小空間上,碰撞肯定是存在的。假設哈希值長度固定為256位,如果順序取1,2,…2256+1,這2256+1個輸入值,逐一計算其哈希值,肯定能找到兩個輸入值使得其哈希值相同。

A同學,看到這里時,請不要高興的太早。因為你得有時間把它算出來,才是你的。為什麼這么說呢?

根據生日悖論,如果隨機挑選其中的2130+1輸入,則有99.8%的概率發現至少一對碰撞輸入。那麼對於哈希值長度為256為的哈希函數,平均需要完成2128次哈希計算,才能找到碰撞對。如果計算機每秒進行10000次哈希計算,需要約1027年才能完成2128次哈希計算。

A同學,不要想著作弊了,估計你活不了這么久。當然如果計算機運算能力大幅提升,倒是有可能。

那麼完整性還用其他什麼用途呢?

用來驗證信息的完整性,因為如果信息在傳遞過程中別篡改,那麼運行哈希計算得到的哈希值與原來的哈希值不一樣。

所以,在區塊鏈中,哈希函數的抗碰撞性可以用來做區塊和交易的完整性驗證。

因為一個哈希值對應無數個明文,理論上你並不知道哪個是。就如,4+5=9和2+7=9的結果一樣,知道我輸入的結果是9,但能知道我輸入的是什麼數字嗎?

如果,對消息m進行哈希計算時,在引入一個隨機的前綴r,依據哈希值H(r||m),難以恢復出消息m,這代表該哈希函數值隱藏了消息m。

所以,B同學,根據結果想反推出原數據,這是不大可能的事,就猶如大海里撈針。

難題好友性,指沒有便捷的方法去產生一滿足特殊要求的哈希值。是什麼意思呢,通俗的講,就是沒有捷徑,需要一步一步算出來。假如要求得到的哈希結果以若干個0開頭,那麼計算找到前3位均為0的哈希值和找到前6位均為0的哈希值,其所需的哈希計算次數是呈一定數量關系。

這個可以怎麼用呢?在區塊鏈中,可以作為共識演算法中的工作量證明。

主要描述了哈希函數的3個重要性質:抗碰撞性、原像不可逆、難題友好性。

因為這些重要性質,區塊鏈中的區塊和交易的完整性驗證、共識演算法的工作量證明等功能用哈希函數來實現。

[1].鄒均,張海寧.區塊鏈技術指南[M].北京:機械出版社,2016.11

[2].長鋏,韓鋒.區塊鏈從數字貨幣到信用社會[M].北京:中信出版社,2016.7

[3].張健.區塊鏈定義未來金融與經濟新格局[M].北京:機械工業出版社,2016.6

幣安交易密碼在哪裡設置

電腦端電腦端:macbookpromos14打開google版本92.0.4515.131,打開其官網,使用驗證器掃描二維碼/手動輸入密鑰,建議備份密鑰輸入登錄密碼和6位谷歌驗證碼,點擊提交即可。

一、區塊鏈資產的特點

區塊鏈資產的第一大特點就是全球流通。即便是在月球上、火星上,只要有互聯網,就可以進行區塊鏈資產轉賬。相對於傳統轉賬來說,區塊鏈資產到賬也非常快,一般幾分鍾到一小時內就能到賬。

區塊鏈資產的第二大特點是匿名性。區塊鏈資產的匿名性是分不同程度的,誰也無法知道某人的區塊鏈資產有多少,以及和誰進行了轉賬。區塊鏈採用基於協商一致的規范和協議(比如一套公開透明的演算法)使得整個系統中的所有節點能夠在去信任的環境自由安全的交換數據,使得對人」的信任改成了對機器的信任,任何人為的干預不起作用。

區塊鏈資產的第三大特點是記賬去中心化。因為區塊鏈資產的記賬方式是全網共同進行,給別人轉賬記錄的賬本,不會因為轉賬人或者對方的賬本數據丟失而無法統一,因為這個賬本是全網共同維護,每個全節點都存有備份,十分透明,十分公正。

區塊鏈資產的第四大特點就是不可復制。區塊鏈資產的傳遞是通過加密技術而不是拷貝,比如一份價值1000元的區塊鏈資產,甲轉給乙,這1000元資產就從甲的賬戶轉移到乙的賬戶里,甲就不再擁有這些資產。

二、區塊鏈面臨的挑戰

受到現行觀念、制度、法律制約。區塊鏈去中心化、自我管理、集體維護的特性顛覆了人們生產生活方式,淡化了國家、監管概念,沖擊了現行法律安排。對於這些,整個世界完全缺少理論准備和制度探討。即使是區塊鏈應用最成熟的比特幣,不同國家持有態度也不相同,不可避免阻礙了區塊鏈技術的應用與發展。解決這類問題,顯然還有很長的路要走。

區塊鏈中的數據是的加密的那其他節點如何訪問?

「龍龘網路」很高興能夠為您解答。

首先,區塊鏈技術當中的這個加密所指的是,數據在傳輸的時候以一種加密技術進行編譯,而不是說對顯示的數據進行加密,因為區塊鏈還有一個特點,那就是信息公開透明化,所有的儲存在區塊鏈上的交易記錄、資產數量等信息都是可追溯查詢的,當區塊鏈中,每完成一筆交易,都會以發起方為原點向四周進行廣播,將信息同步給周圍的節點,這些收到信息的節點將繼續對四周進行廣播,繼續將信息發送給周圍的節點。最終,這筆交易信息將會擴散至全網,實現全網共同記賬。

因此,這個數據所有人都可見,但是無法修改,也就是相當於「只讀」狀態,這就是區塊鏈的另外一大特點「防篡改」。

區塊鏈當中所使用的是「非對稱加密技術」,就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為「公鑰」和「私鑰」,它們兩個

⑤ 怎麼導入區塊鏈私鑰,怎麼導入區塊鏈私鑰信息

區塊鏈錢包的私鑰如何備份?有哪幾種方法?

????當你在創建一個區塊鏈錢包的時候,創建成功之後,系統會自動生成錢包地址、公鑰、私鑰,然而這些需要你自己去備份,錢包不會幫你保存,那麼大家應該如何備份這些信息呢?又有幾種方法?

????第一,具備雙倍安全性的錢包,並把私鑰導入到Armory客戶端(1)進行冷儲存(2),用戶可以在客戶端中快速從冷儲存中找到所需私鑰,還有一個優點就是方便離線交易轉賬,不必每次都重新導入私鑰。同時電腦的操作系統需要設置密碼。

????第二,可以把錢包的私鑰和公鑰製作成電子版備份,同步到雲端。你可以把它們復制粘貼為一個文檔,標記好名字,文檔可以以拼音的形式命名,可以亂碼,但是要額外的保存在另一個文檔里註明該文件是干什麼用的。但是這樣做的結果就是可能會忘記儲存的文件是哪個,因此你需要在手機備注好信息,同時需要把復習私鑰這件事安排為按時間重復的(如2個月復習一次)日程事件,時間到了手機或電腦提醒復習。而且不僅僅是回憶幾遍就可以了,是要到備份上打開那個生成私鑰的錢包中,重新登錄一遍,看看私鑰(和地址)是否正確。

????第三,用戶可以在文檔上寫下錢包的私鑰和公鑰以及地址,命名的話,你自己看得懂就好,接著就把後綴名為jpg圖片格式,使其看起來就像一個壞掉的打不開的圖片,或者更甚,我們可以把這打不開的假圖片壓縮為zip格式並偽裝為一個真正的圖片,需要的時候再還原出來。具體更改方法可以上網路查找。

???第四,以上三種方法都是電子版的備份方法,還有一種簡單粗暴的方法就是在日記本手抄私鑰公鑰,使其看起來不那麼刻意、唐突,不過大家需要注意的是,抄寫的時候記得要寫得字體清晰、工整,避免字跡潦草而導致輸入私鑰錯誤。同時,保存的地方也是需要注意的,可以藏在家裡隱私的地方(有條件可以存銀行保險櫃)。

備份區塊鏈錢包私鑰的方法有以上4種方法,當然如果你有更好的備份方法,也可以分享出來,不必按部就班地使用上述備份方法的哦。最後,給一個備份建議:可以結合上述2到4種方法來備份私鑰,避免遺忘。

注釋:

(1)Armory客戶端:Armory是一個功能齊全的比特幣客戶端,提供了許多其他客戶端軟體所沒有的創新功能!管理多個錢包(確定性和僅觀看)、列印永久工作的紙張備份、導入或刪除私鑰等。

(2)冷儲存:即比特幣錢包的冷儲存(Coldstorage)。是指將錢包進行離線保存的一種方法。

tokenpocket密鑰是什麼

私鑰是由加密演算法生成的一個64位十六進制的字元組成,就像這樣:

私鑰的生成方式是完全隨機的,隨機生成這樣的字元串會有16的64次方種可能,即:2的256次方,一個錢包只有一個私鑰並且不能修改,正常情況下你所生成的私鑰與他人正好相同的概率幾乎為零。

導入私鑰:打開客戶端進入調試窗口。輸入命令:importprivkey私鑰標簽true(說明,importprivkey空格+後面是你的私鑰+空格+給你導入的這個地址起個名字+空格+true,最後這個true是同步你的交易信息,不加true看不到余額),過幾分鍾之後就會看到的你的收款地址裡面多出一個地址,就是你剛才的導入的地址,而且你的余額也會跟著過來了!

imtoken錢包私鑰導入格式64進16什麼意思

私鑰=銀行卡+銀行卡密碼。

私鑰是一個長度為64位的字元串,一個錢包只能擁有一個私鑰並且不能修改。為什麼說私鑰=銀行卡+銀行卡密碼呢?因為在imToken中直接導入私鑰可以生成新的密碼,將所有的區塊鏈資產全部轉移走。私鑰作為最高保密級別,應該妥善保管在物理設備上,例如抄在紙上,備份多份並且存放在安全的地方,萬萬不可將私鑰在聯網設備上進行傳輸,避免被黑客截取。

助記詞=私鑰。

助記詞又是什麼東西呢?助記詞既然等於私鑰,那麼其應該是私鑰的另外一種表現形式,並且具有私鑰同等的功能。在imToken中創建錢包,會出來一個助記詞,助記詞的個數一般為12、15、18、21個單詞構成。這些詞都取自一個固定詞庫,其生成順序也是按照一定的演算法得到,且助記詞不能修改。助記詞的主要作用是幫助用戶記憶繁瑣的私鑰。同樣助記詞也要妥善保管好,切勿在聯網設備中傳輸,任何人得到了你的助記詞都可以輕松的轉移你的區塊鏈資產。

keystore+密碼=私鑰。

keyStore文件是以太坊錢包存儲私鑰的一種文件格式(JSON格式)。它使用用戶自定義密碼對私鑰進行加密,在一定程度上keystore=加密後的私鑰,拿到keystore和密碼後照樣可以轉移走所有的區塊鏈資產。keystore密碼是唯一不可修改的,那麼錢包密碼修改之後,keystore也會相應修改。一定要記住加密keystore的密碼,一旦忘記密碼,就相當於遺失了該錢包所有的區塊鏈資產。

————————————————

版權聲明:本文為CSDN博主「懶區塊」的原創文章,遵循CC4.0BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:

區塊鏈密匙文件怎麼獲取

1.一種區塊鏈系統密鑰的找回方法,其特徵在於,包括以下步驟:步驟1、創建原始密鑰對;步驟2、根據原始密鑰對演算業務密鑰對;步驟3、根據業務密鑰對演算地址和賬號;步驟4、當業務密鑰丟失,執行步驟2。2.根據權利要求1所述的區塊鏈系統密鑰的找回方法,其特徵在於,所述原始密鑰對包括原始私鑰和原始公鑰。3.根據權利要求2所述的區塊鏈系統密鑰的找回方法,其特徵在於,所述步驟1中,創建原始密鑰對包括以下步驟:步驟11、採用一個隨機數生成一個原始種子;步驟12、由所述原始種子經非對稱加密演算法演算生成原始密鑰對,所述原始密鑰對包括原始私鑰與原始公鑰。4.根據權利要求1中的所述的區塊鏈系統密鑰的找回方法,其特徵在於,所述步驟2中,業務密鑰對包括業務私鑰和業務公鑰。5.據權利要求4中的所述的區塊鏈系統密鑰的找回方法,其特徵在於,所述步驟2中,具體為,根據種子製作數據生成業務種子,根據業務種子生成業務密鑰對,具體包括以下步驟:步驟21、以原始私鑰作為加密密鑰,對種子製作數據進行種子生成運算,得到具有唯一性的密文作為業務種子,;步驟22、由所述業務種子經稱非對加密演算法演算生成業務密鑰對,所述密鑰對包括業務私鑰與業務公鑰。6.據權利要求5中的所述的區塊鏈系統密鑰的找回方法,其特徵在於,所述步驟21中,種子製作數據包括原始公鑰或者其它選定的任何數據。7.據權利要求權利5中的所述的區塊鏈系統密鑰的找回方法,其特徵在於,所述步驟21中,種子生成運算包括hmac加密演算法運算、加鹽哈希加密演算法運算、對稱加密演算法運算或非對稱加密演算法運算。8.據權利要求3或5中的所述的區塊鏈系統密鑰的找回方法,其特徵在於,所述非對稱加密演算法包括rsa演算法、ecc演算法、ecdsa演算法、sm2演算法和sm9演算法的其中任一種。9.據權利要求5中的所述的區塊鏈系統密鑰的找回方法,其特徵在於,所述唯一性的密文如非哈希值則對所述密文進行哈希運算,得到所述密文的哈希值作為業務種子;密文如為哈希值則可直接作為業務種子,或者可再次或多次進行哈希運算,得到的哈希值作為業務種子。10.據權利要求7中的所述的區塊鏈系統密鑰的找回方法,其特徵在於,所述對稱加密演算法包括des演算法、3des演算法、rc2演算法、rc4演算法、rc5演算法、aes演算法、sm1演算法、sm4演算法、sm7演算法和zuc演算法的其中任一種。

⑥ 區塊鏈中的密碼學是什麼(區塊鏈的密碼技術)

區塊鏈的密碼技術有

密碼學技術是區塊鏈技術的核心。區塊鏈的密碼技術有數字簽名演算法和哈希演算法。

數字簽名演算法

數字簽名演算法是數字簽名標準的一個子集,表示了只用作數字簽名的一個特定的公鑰演算法。密鑰運行在由SHA-1產生的消息哈希:為了驗證一個簽名,要重新計算消息的哈希,使用公鑰解密簽名然後比較結果。縮寫為DSA。

?

數字簽名是電子簽名的特殊形式。到目前為止,至少已經有20多個國家通過法律認可電子簽名,其中包括歐盟和美國,我國的電子簽名法於2004年8月28日第十屆全國人民代表大會常務委員會第十一次會議通過。數字簽名在ISO7498-2標准中定義為:「附加在數據單元上的一些數據,或是對數據單元所作的密碼變換,這種數據和變換允許數據單元的接收者用以確認數據單元來源和數據單元的完整性,並保護數據,防止被人(例如接收者)進行偽造」。數字簽名機制提供了一種鑒別方法,以解決偽造、抵賴、冒充和篡改等問題,利用數據加密技術、數據變換技術,使收發數據雙方能夠滿足兩個條件:接收方能夠鑒別發送方所宣稱的身份;發送方以後不能否認其發送過該數據這一事實。

數字簽名是密碼學理論中的一個重要分支。它的提出是為了對電子文檔進行簽名,以替代傳統紙質文檔上的手寫簽名,因此它必須具備5個特性。

(1)簽名是可信的。

(2)簽名是不可偽造的。

(3)簽名是不可重用的。

(4)簽名的文件是不可改變的。

(5)簽名是不可抵賴的。

哈希(hash)演算法

Hash,就是把任意長度的輸入(又叫做預映射,pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,其中散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,但是不可逆向推導出輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。

哈希(Hash)演算法,它是一種單向密碼體制,即它是一個從明文到密文的不可逆的映射,只有加密過程,沒有解密過程。同時,哈希函數可以將任意長度的輸入經過變化以後得到固定長度的輸出。哈希函數的這種單向特徵和輸出數據長度固定的特徵使得它可以生成消息或者數據。

以比特幣區塊鏈為代表,其中工作量證明和密鑰編碼過程中多次使用了二次哈希,如SHA(SHA256(k))或者RIPEMD160(SHA256(K)),這種方式帶來的好處是增加了工作量或者在不清楚協議的情況下增加破解難度。

以比特幣區塊鏈為代表,主要使用的兩個哈希函數分別是:

1.SHA-256,主要用於完成PoW(工作量證明)計算;

2.RIPEMD160,主要用於生成比特幣地址。如下圖1所示,為比特幣從公鑰生成地址的流程。

何謂密碼學(cryptography)?

密碼學是數學和計算機科學的一個交叉。主要有兩個方面的應用:一個就是加密通信,這個方向的主要任務是保證信息在傳送過程中不會被篡改和竊聽,這也是咱們比較容易想到的一個方向。但是,另一個方向其實也同樣重要,那就是數字簽名。數字簽名跟現實世界中的紙筆簽名類似,可以用來認證簽署人身份,防止抵賴。密碼學早期比較常見於軍事領域,民用方面涉及電子商務,銀行支付,數字版權等等社會關鍵領域,所以,說密碼學是當代社會的一個支柱並不為過。最近幾年,區塊鏈和加密貨幣興起,密碼學的發展又進入了一個新的階段,區塊鏈的底層是密碼學技術,但是也涉及到經濟學。

區塊鏈應用什麼技術來實現此功能

區塊鏈應用了以下的技術來實現

第一種是共識機制,常用的共識機制主要有PoW、PoS、DPoS、PBFT、PAXOS等。由於區塊鏈系統中沒有一個中心,因此需要有一個預設的規則來指導各方節點在數據處理上達成一致,所有的數據交互都要按照嚴格的規則和共識進行;

第二種是密碼學技術,密碼學技術是區塊鏈的核心技術之一,目前的區塊鏈應用中採用了很多現代密碼學的經典演算法,主要包括:哈希演算法、對稱加密、非對稱加密、數字簽名等。

第三種是分布式存儲,區塊鏈是一種點對點網路上的分布式賬本,每個參與的節點都將獨立完整地存儲寫入區塊數據信息。分布式存儲區別於傳統中心化存儲的優勢主要體現在兩個方面:每個節點上備份數據信息,避免了由於單點故障導致的數據丟失;每個節點上的數據都獨立存儲,有效規避了惡意篡改歷史數據。

智能合約:智能合約允許在沒有第三方的情況下進行可信交易,只要一方達成了協議預先設定的目標,合約將會自動執行交易,這些交易可追蹤且不可逆轉。具有透明可信、自動執行、強制履約的優點。區塊鏈技術有許多獨特的特點,使它成為一項獨特的發明,並賦予它無限的視野去探索。

第4課區塊鏈中的密碼學學習總結

這是加入公Ulord深度學習第四課,楊博士給大家主講區塊鏈中的密碼學問題,本期課程令讓我弄懂了一個一直困擾著我的關於公鑰和私鑰的問題,他們之間到底是什麼關系?再這次學習中我得到了答案,現在我把我學習到的內容跟大家分享一下。

區塊鏈里的公鑰和私鑰,是非對稱加密里的兩個基本概念。

公鑰與私鑰,是通過一種演算法得到的一個密鑰對,公鑰是密鑰對中公開的部分,私鑰是非公開的部分。公鑰通常用於加密會話,就是消息或者說信息,同時,也可以來用於驗證用私鑰簽名的數字簽名。

私鑰可以用來進行簽名,用對應的公鑰來進行驗證。通過這種公開密鑰體製得到的密鑰對能夠保證在全世界范圍內是唯一的。使用這個密鑰對的時候,如果用其中一個密鑰加密數據,則必須用它對應的另一個密鑰來進行解密。

比如說用公鑰加密的數據就必須用私鑰才能解密,如果用私鑰進行加密,就必須要對應的公鑰才能解密,否則無法成功解密。另外,在比特幣的區塊鏈中,則是通過私鑰來計算出公鑰,通過公鑰來計算出地址,而這個過程是不可逆的。

區塊鏈中現代密碼學

1983年-DavidChaum描述的盲簽

1997年-AdamBack發明的HashCash(工作證明制度的一個例子)

2001年-RonRivest,AdiShamir和YaelTauman向加密社區提出了環簽名

2004年-PatrickP.Tsang和VictorK.提出使用環簽名系統進行投票和電子現金;

2008年-由SatoshiNakamoto出版的Bitcoin白皮書

2011年-比特幣系統中的匿名分析,FergalReid和MartinHarrigan

2012-目的地址比特幣匿名(CryptoNote中的一次性地址)。

安全多方計算起源於1982年姚期智的百萬富翁問題。後來OdedGoldreich有比較細致系統的論述。

姚氏百萬富翁問題是由華裔計算機科學家、圖靈獎獲得者姚啟智教授首先提出的。該問題表述為:兩個百萬富翁Alice和Bob想知道他們兩個誰更富有,但他們都不想讓對方知道自己財富的任何信息。該問題有一些實際應用:假設Alice希望向Bob購買一些商品,但她願意支付的最高金額為x元;Bob希望的最低賣出價為y元。Alice和Bob都非常希望知道x與y哪個大。如果xy,他們都可以開始討價還價;如果zy,他們就不用浪費口舌。但他們都不想告訴對方自己的出價,以免自己在討價還價中處於不利地位。

該方案用於對兩個數進行比較,以確定哪一個較大。Alice知道一個整數i;Bob知道一個整數j,Alice與B0b希望知道究竟i=j還是ji,但都不想讓對方知道自己的數。為簡單起見,假設j與i的范圍為[1,100】。Bob有一個公開密鑰Eb和私有密鑰Db。

安全多方計算(SecureMulti-PartyComputation)的研究主要是針對無可信第三方的情況下,如何安全地計算一個約定函數的問題.安全多方計算在電子選舉、電子投票、電子拍賣、秘密共享、門限簽名等場景中有著重要的作用。

同態加密(HomomorphicEncryption)是很久以前密碼學界就提出來的一個OpenProblem。早在1978年,RonRivest,LeonardAdleman,以及MichaelL.Dertouzos就以銀行為應用背景提出了這個概念[RAD78]。對,你沒有看錯,RonRivest和LeonardAdleman分別就是著名的RSA演算法中的R和A。

什麼是同態加密?提出第一個構造出全同態加密(FullyHomomorphicEncryption)[Gen09]的CraigGentry給出的直觀定義最好:,withoutgivingawayaccesstoit.

這是什麼意思呢?一般的加密方案關注的都是數據存儲安全。即,我要給其他人發個加密的東西,或者要在計算機或者其他伺服器上存一個東西,我要對數據進行加密後在發送或者存儲。沒有密鑰的用戶,不可能從加密結果中得到有關原始數據的任何信息。只有擁有密鑰的用戶才能夠正確解密,得到原始的內容。我們注意到,這個過程中用戶是不能對加密結果做任何操作的,只能進行存儲、傳輸。對加密結果做任何操作,都將會導致錯誤的解密,甚至解密失敗。

同態加密方案最有趣的地方在於,其關注的是數據處理安全。同態加密提供了一種對加密數據進行處理的功能。也就是說,其他人可以對加密數據進行處理,但是處理過程不會泄露任何原始內容。同時,擁有密鑰的用戶對處理過的數據進行解密後,得到的正好是處理後的結果。

有點抽象?我們舉個實際生活中的例子。有個叫Alice的用戶買到了一大塊金子,她想讓工人把這塊金子打造成一個項鏈。但是工人在打造的過程中有可能會偷金子啊,畢竟就是一克金子也值很多錢的說…因此能不能有一種方法,讓工人可以對金塊進行加工(delegateprocessingofyourdata),但是不能得到任何金子(withoutgivingawayaccesstoit)?當然有辦法啦,Alice可以這么做:Alice將金子鎖在一個密閉的盒子裡面,這個盒子安裝了一個手套。工人可以帶著這個手套,對盒子內部的金子進行處理。但是盒子是鎖著的,所以工人不僅拿不到金塊,連處理過程中掉下的任何金子都拿不到。加工完成後。Alice拿回這個盒子,把鎖打開,就得到了金子。

這裡面的對應關系是:盒子:加密演算法盒子上的鎖:用戶密鑰將金塊放在盒子裡面並且用鎖鎖上:將數據用同態加密方案進行加密加工:應用同態特性,在無法取得數據的條件下直接對加密結果進行處理開鎖:對結果進行解密,直接得到處理後的結果同態加密哪裡能用?這幾年不是提了個雲計算的概念嘛。同態加密幾乎就是為雲計算而量身打造的!我們考慮下面的情景:一個用戶想要處理一個數據,但是他的計算機計算能力較弱。這個用戶可以使用雲計算的概念,讓雲來幫助他進行處理而得到結果。但是如果直接將數據交給雲,無法保證安全性啊!於是,他可以使用同態加密,然後讓雲來對加密數據進行直接處理,並將處理結果返回給他。這樣一來:用戶向雲服務商付款,得到了處理的結果;雲服務商掙到了費用,並在不知道用戶數據的前提下正確處理了數據;

聚合簽名由Boneh等人提出,主要是通過聚合多個簽名為一個簽名,來提高簽名與驗證的效率。要對多個用戶的數據進行簽名,聚合簽名能夠極大地降低簽名計算復雜度。CL就是聚合簽名。

零知識證明過程有兩個參與方,一方叫證明者,一方叫驗證者。證明者掌握著某個秘密,他想讓驗證者相信他掌握著秘密,但是又不想泄漏這個秘密給驗證者。

雙方按照一個協議,通過一系列交互,最終驗證者會得出一個明確的結論,證明者是或不掌握這個秘密。

對於比特幣的例子,一筆轉帳交易合法與否,其實只要證明三件事:

發送的錢屬於發送交易的人

發送者發送的金額等於接收者收到金額

發送者的錢確實被銷毀了

整個證明過程中,礦工其實並不關心具體花掉了多少錢,發送者具體是誰,接受者具體是誰。礦工只關心系統的錢是不是守恆的。

zcash就是用這個思路實現了隱私交易。

零知識證明的三條性質對應:

(1)完備性。如果證明方和驗證方都是誠實的,並遵循證明過程的每一步,進行正確的計算,那麼這個證明一定是成功的,驗證方一定能夠接受證明方。

(2)合理性。沒有人能夠假冒證明方,使這個證明成功。

(3)零知識性。證明過程執行完之後,驗證方只獲得了「證明方擁有這個知識」這條信息,而沒有獲得關於這個知識本身的任何一點信息。

只有環成員,沒有管理者,不需要環成員之間的合作,簽名者利用自己的私鑰和集合中其他成員的公鑰就能獨立的進行簽名,不需要其他人的幫助,集合中的其他成員可能不知道自己被包含在了其中。

環簽名可以被用作成一種泄露秘密的方式,例如,可以使用環形簽名來提供來自「白宮高級官員」的匿名簽名,而不會透露哪個官員簽署了該消息。環簽名適用於此應用程序,因為環簽名的匿名性不能被撤銷,並且因為用於環簽名的組可以被即興創建。

1)密鑰生成。為環中每個成員產生一個密鑰對(公鑰PKi,私鑰SKi)

2)簽名。簽名者用自己的私鑰和任意n個環成員的公鑰為消息m生成簽名a

3)簽名驗證。簽名者根據環簽名和消息m,驗證簽名是否是環中成員所簽。如果有效就接收,如果無效就丟棄。

群簽名的一般流程

盲數字簽名(BlindSignature)簡稱盲簽名——是一種數字簽名的方式,在消息內容被簽名之前,對於簽名者來說消息內容是不可見的。1982年大衛·喬姆首先提出了盲簽名的概念。盲簽名因為具有盲性這一特點,可以有效保護所簽署消息的具體內容,所以在電子商務和電子選舉等領域有著廣泛的應用。

類比例子:對文件簽名就是通過在信封里放一張復寫紙,簽名者在信封上簽名時,他的簽名便透過復寫紙簽到文件上。

所謂盲簽名,就是先將隱蔽的文件放進信封里,而除去盲因子的過程就是打開這個信封,當文件在一個信封中時,任何人不能讀它。對文件簽名就是通過在信封里放一張復寫紙,簽名者在信封上簽名時,他的簽名便透過復寫紙簽到文件上。

一般來說,一個好的盲簽名應該具有以下的性質:

不可偽造性。除了簽名者本人外,任何人都不能以他的名義生成有效的盲簽名。這是一條最基本的性質。

不可抵賴性。簽名者一旦簽署了某個消息,他無法否認自己對消息的簽名。

盲性。簽名者雖然對某個消息進行了簽名,但他不可能得到消息的具體內容。

不可跟蹤性。一旦消息的簽名公開後,簽名者不能確定自己何時簽署的這條消息。

滿足上面幾條性質的盲簽名,被認為是安全的。這四條性質既是我們設計盲簽名所應遵循的標准,又是我們判斷盲簽名性能優劣的根據。

另外,方案的可操作性和實現的效率也是我們設計盲簽名時必須考慮的重要

因素。一個盲簽名的可操作性和實現速度取決於以下幾個方面:

1,密鑰的長度;

2,盲簽名的長度;

3,盲簽名的演算法和驗證演算法。

盲簽名具體步驟

1,接收者首先將待簽數據進行盲變換,把變換後的盲數據發給簽名者。

2,經簽名者簽名後再發給接收者。

3,接收者對簽名再作去盲變換,得出的便是簽名者對原數據的盲簽名。

4,這樣便滿足了條件①。要滿足條件②,必須使簽名者事後看到盲簽名時不能與盲數據聯系起來,這通常是依靠某種協議來實現的。

區塊鏈中的密碼學是怎麼應用的?

在區塊鏈技術中,密碼學機制主要被用於確保交易信息的完整性、真實性和隱私性。

?

區塊鏈中的密碼學包括布隆過濾器,哈希函數、加解密演算法,數字證書與數字簽名,同態加密,PKI體系等。

閱讀全文

與區塊鏈的公私密鑰相關的資料

熱點內容
btc礦機能挖bth嗎 瀏覽:679
比特幣和q幣之間的區別與聯系 瀏覽:276
488顯卡算力最高多少 瀏覽:20
光影集團發行數字貨幣 瀏覽:527
最新官方比特幣app下載軟體 瀏覽:727
虛擬貨幣app需要升級嗎 瀏覽:462
以太坊團隊持有的 瀏覽:679
濟南比特幣挖礦機 瀏覽:725
寶二爺談比特幣 瀏覽:345
比特幣成都銷售 瀏覽:318
python中實現比特幣macd 瀏覽:19
比特幣發牌的企業 瀏覽:674
數字貨幣還會 瀏覽:374
映泰b250btc安裝說明 瀏覽:757
區塊鏈革命分布式自律mobi 瀏覽:311
哪些人手裡有比特幣 瀏覽:989
知乎大學生6000買比特幣 瀏覽:961
以太坊價格公眾號查價coindb 瀏覽:173
btc到賬慢 瀏覽:387
談談對比特幣的觀點 瀏覽:70