區塊鏈認證文章原理
① 浠涔堟槸KYC璁よ瘉錛熶竴鏂囪繪噦鍖哄潡閾句腑KYC璁よ瘉
浼楁墍鍛ㄧ煡錛屾垜浠鎯寵佹姇璧勬暟瀛楄揣甯侊紝瑕佸仛鐨勭涓浠朵簨灝辨槸閫夋嫨涓瀹朵氦鏄撴墍榪涜屼拱甯侊紝濡傛灉浣犳槸甯佸湀鑰佹墜錛屽湪閫夋嫨濂戒氦鏄撴墍鍚庡氨浼氱啛緇冪殑鐧誨綍娉ㄥ唽鐒跺悗瀹屾垚KYC璁よ瘉錛屼絾鏄濡傛灉浣犳槸涓涓甯佸湀鏂版墜錛屽逛氦鏄撴墍鐨勬祦紼嬭繕涓嶆槸寰堟竻妤氾紝閭d箞浣犲彲鑳藉氨涓嶅お娓呮氬埌搴曚粈涔堟槸KYC璁よ瘉錛孠YC璁よ瘉瑕佹庝箞鎿嶄綔錛屾垜浠鍙堜負浠涔堣佽繘琛孠YC璁よ瘉錛屽逛簬澶у剁殑榪欑嶇枒鎯戝竵鍦堝瓙灝忕紪閮芥槸鍙浠ョ悊瑙g殑錛屾瘯絝熺涓嬈′氦鏄撴湁涓嶆槑鐧界殑鍦版柟鏄寰堟e父鐨勩傞偅涔堝埌搴曚粈涔堟槸KYC璁よ瘉錛熶笅闈㈠氨璁╁竵鍦堝瓙灝忕紪鏉ュ甫澶у朵竴鏂囪繪噦鍖哄潡閾句腑KYC璁よ瘉銆
浠涔堟槸KYC璁よ瘉錛
韙忓叆鍖哄潡閾句駭涓氱殑鏂版墜鍦ㄥ悇浜ゆ槗鎵娉ㄥ唽浼氬憳浼氶亣鍒頒互寰涓鑸緗戠珯鐨勬敞鍐屼細鍛樻病鏈夌殑KYC瀹炲悕璁よ瘉錛岀涓嬈¢亣鍒伴氬父鍗佸垎涓嶄簡瑙o紝鍦ㄩ獙璇佺殑榪囩▼涓浼氱板埌鍚勫紡鍚勬牱鐨勯棶棰橈紝浣嗘病瀹屾垚KYC瀹炲悕璁よ瘉灝卞湪浜ゆ槗涓婂氨浼氭湁鎵闄愬埗錛屾墍浠ユ柊鎵嬬殑絎涓涓鎸戞垬灝辨槸閫氳繃鍚勫ぇ浜ゆ槗鎵瀹炲悕璁よ瘉銆
KYC璁よ瘉閫氬父鍜孉ML鍙嶆礂閽卞垎涓嶅紑錛屽畠浠鏄閲戣瀺棰嗗煙閲岀殑涓撲笟鏈璇銆侹YC鐨勬剰鎬濇槸浜嗚В浣犵殑瀹㈡埛(Know Your Customer鐨勭緝鍐)錛屼負浠涔堣佷簡瑙d綘鐨勫㈡埛鍛?涓轟簡閲戣瀺瀹夊叏錛岄噾鋙嶅畨鍏ㄩ渶瑕佸弽媧楅挶ALM(鍗矨nti Money Laundering)銆傛墍浠ラ渶瑕佸疄鍚嶈よ瘉錛屽苟瑕佹眰瀹㈡埛鎻愪緵韜浠借瘉鏄庡拰甯鎬綇鍦板潃銆
KYC瀹炲悕璁よ瘉鐨勮嫳鏂囧師鏂囨槸Know Your Customer鐨勭緝鍐欙紝鐭ラ亾浣犵殑淇℃伅錛屼負浠涔堣佽╃綉絝欑煡閬撹嚜宸辯殑鐪熷疄淇℃伅鍛? 涓轟簡閲戣瀺瀹夊叏錛岄噾鋙嶅畨鍏ㄩ渶瑕佸弽媧楅挶闃插埗涓庢墦鍑昏祫鍔╂亹鎬栦富涔夛紝鎵浠ラ渶瑕佸㈡埛鎻愪緵鐩稿叧鐨勮祫鏂欙紝閫氬父浼氳佹眰瀹㈡埛鎻愪緵韜浠借瘉鏄庡拰甯鎬綇鍦板潃絳夈
KYC瀹炲悕璁よ瘉鎵欏葷殑鏂囦歡(鍥藉唴浜ゆ槗鎵涓鑸鍙闇瑕佽韓浠借瘉)
1.韜浠借よ瘉鏂囦歡錛氳韓浠借瘉銆侀┚鐓с佸眳浣忚瘉銆佹姢鐓х瓑鏀垮簻棰佸彂鐨勬湁鏁堣韓浠借瘉浠
2.鍦板潃璁よ瘉鏂囦歡錛氫竴鑸涓轟笉瓚呰繃3涓鏈堝唴鐨勬按鐢點佺噧姘旇處鍗曟垨淇$敤鍗¤處鍗曠瓑
KYC璁よ瘉娉ㄦ剰浜嬮」
1.鎻愪緵鐨勬枃浠訛紝鏃犺烘槸韜浠借瘉榪樻槸鍦板潃璇佹槑錛岄兘瑕佹敞鎰忕収鐗囨槸鍚︽竻鏅般侀湶鍑哄畬鏁寸殑鍥涜掋佽佸鉤鏁
2.鎻愪緵鏈浜轟笌璇佷歡鍚堢収鏃訛紝鎷嶇収鐨勬椂鍊欒佹敞鎰忚瘉浠舵槸鍚︿細鍙嶅厜銆佹槸鍚︽ā緋婏紝鏈浜虹殑鑴告槸鍚﹀畬鏁撮湶鍑恆
鏈浜轟笌璇佷歡鍚堢収鏈変釜鎷嶇収灝忔妧宸э紝銊ц埇浜轟細涔犳儻灝嗚瘉浠墮潬榪戣韓浣撴垨涓嬪反錛岃繖鏍峰規槗閫犳垚鍚堢収鐨勮瘉浠朵笂鐨勬枃瀛椾笉娓呮氾紝琚椹沖洖鏃朵篃涓嶇煡閬撹佹庝箞淇姝o紝鍏跺疄寰堢畝鍗曪紝鎵嬫寔璇佷歡鍚戝墠灝嗚瘉浠墮潬榪戦暅澶達紝瀵圭劍璇佷歡鏂囧瓧紜璁ゆ竻鏅板悗錛岃皟鏁村ご鐨勪綅緗闇插嚭??瀹屾暣鐨勮劯錏嬶紝榪欐牱灝辮兘鎷嶅嚭瀹岀編鐨勬湰浜轟笌璇佷歡鍚堢収銆
緇間笂鎵榪幫紝灝辨槸甯佸湀瀛愬皬緙栧逛簬浠涔堟槸KYC璁よ瘉榪欎竴闂棰樼殑鍥炵瓟錛屽笇鏈涘竵鍦堝瓙灝忕紪鐨勮繖綃囦竴鏂囪繪噦鍖哄潡閾句腑KYC璁よ瘉鑳藉熷府鍔╁悇浣嶆姇璧勮呮洿鍔犲叏闈㈤忓交鐨勪簡瑙KYC璁よ瘉鏄浠涔堛傚叾瀹炵幇鍦ㄦ湁寰堝氫漢璁や負鍔犲瘑棰嗗煙鏄涓嶉渶瑕丩YC璁よ瘉鐨勶紝鍥犱負浠栦滑璁や負鍔犲瘑涓栫晫鏄涓涓鍘諱腑蹇冨寲鍖垮悕鐨勪笘鐣岋紝鍏跺疄浜嬫儏榪滀笉姝㈣繖涔堢畝鍗曪紝闅忕潃鍖哄潡閾炬妧鏈鐨勫彂灞曪紝寰堝氫笉娉曞垎瀛愪篃娉ㄦ剰鍒頒簡鏁板瓧璐у竵鐙鐗圭殑鎬ц川錛屽紑濮嬪埄鐢ㄥ畠鐨勭壒鎬у仛涓浜涢潪娉曠殑琛屼負錛岃繖鏄闈炲父鍗遍櫓鐨勶紝鎵浠ュ湪鍔犲瘑璐у竵棰嗗煙蹇呴』瑕佷弗鏍肩殑鎵ц孠YC瑙勫垯銆
② 區塊鏈技術開發到底是什麼原理
狹義來講,區塊鏈是一種按照時間順序將數據區塊以順序相連的方式組合成的一種鏈式數據結構, 並以密碼學方式保證的不可篡改和不可偽造的分布式賬本。
廣義來講,區塊鏈技術是利用塊鏈式數據結構來驗證與存儲數據、利用分布式節點共識演算法來生成和更新數據、利用密碼學的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分布式基礎架構與計算方式。
工作原理
區塊鏈系統由數據層、網路層、共識層、激勵層、合約層和應用層組成。 其中,數據層封裝了底層數據區塊以及相關的數據加密和時間戳等基礎數據和基本演算法;網路層則包括分布式組網機制、數據傳播機制和數據驗證機制等;共識層主要封裝網路節點的各類共識演算法;激勵層將經濟因素集成到區塊鏈技術體系中來,主要包括經濟激勵的發行機制和分配機制等;合約層主要封裝各類腳本、演算法和智能合約,是區塊鏈可編程特性的基礎;應用層則封裝了區塊鏈的各種應用場景和案例。該模型中,基於時間戳的鏈式區塊結構、分布式節點的共識機制、基於共識算力的經濟激勵和靈活可編程的智能合約是區塊鏈技術最具代表性的創新點。
③ 區塊鏈本質是什麼比特幣原理又是什麼二者究竟有何區別
一枚比特幣價格從2萬多美元狂漲到4萬美元。這不由得引起了我的研究興趣,或者說簡單了解了一下比特幣到底是什麼,它的機理具體是什麼樣子的,揭開它的神秘面紗。因此,簡單搜索了一些資料,也對比特幣有些了解,便把手頭上的資料整理了一下。
(3)目的:去中心化,減少風險
中心式網路只有中央伺服器能夠存儲和處理數據,其缺點是工作量大,一旦癱瘓則整個系統癱瘓;數據存儲量大;中央管理者許可權大。
分布式網路中的所有伺服器均能夠存儲和處理數據,各伺服器之間地位平等,可以存儲更多的數據和具有更高的安全性。
大致的科普內容就是這樣,如果還想多了解一些,可以看看中本聰的論文和下面的官方科普視頻。
④ 【深度知識】區塊鏈之加密原理圖示(加密,簽名)
先放一張以太坊的架構圖:
在學習的過程中主要是採用單個模塊了學習了解的,包括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演算法-Key Agreement)。然後利用該對稱秘鑰對數據進行加密,針對共享秘鑰這里的流程如下:
對於B節點,當接收到傳輸過來的數據時,解析出其中A節點的隨機公鑰,之後利用A節點的隨機公鑰 與 B節點自身的私鑰 計算出對稱秘鑰(KA演算法)。之後利用對稱秘鑰機密數據。
對於以上加密方式,其實仍然存在很多問題,比如如何避免重放攻擊(在消息中加入 Nonce ),再比如彩虹表(參考 KDF機制解決 )之類的問題。由於時間及能力有限,故暫時忽略。
那麼究竟應該採用何種加密呢?
主要還是基於要傳輸的數據的安全等級來考量。不重要的數據其實做好認證和簽名就可以,但是很重要的數據就需要採用安全等級比較高的加密方案了。
密碼套件 是一個網路協議的概念。其中主要包括身份認證、加密、消息認證(MAC)、秘鑰交換的演算法組成。
在整個網路的傳輸過程中,根據密碼套件主要分如下幾大類演算法:
秘鑰交換演算法:比如ECDHE、RSA。主要用於客戶端和服務端握手時如何進行身份驗證。
消息認證演算法:比如SHA1、SHA2、SHA3。主要用於消息摘要。
批量加密演算法:比如AES, 主要用於加密信息流。
偽隨機數演算法:例如TLS 1.2的偽隨機函數使用MAC演算法的散列函數來創建一個 主密鑰 ——連接雙方共享的一個48位元組的私鑰。主密鑰在創建會話密鑰(例如創建MAC)時作為一個熵來源。
在網路中,一次消息的傳輸一般需要在如下4個階段分別進行加密,才能保證消息安全、可靠的傳輸。
握手/網路協商階段:
在雙方進行握手階段,需要進行鏈接的協商。主要的加密演算法包括RSA、DH、ECDH等
身份認證階段:
身份認證階段,需要確定發送的消息的來源來源。主要採用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA簽名)等。
消息加密階段:
消息加密指對發送的信息流進行加密。主要採用的加密方式包括DES、RC4、AES等。
消息身份認證階段/防篡改階段:
主要是保證消息在傳輸過程中確保沒有被篡改過。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。
ECC :Elliptic Curves Cryptography,橢圓曲線密碼編碼學。是一種根據橢圓上點倍積生成 公鑰、私鑰的演算法。用於生成公私秘鑰。
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演算法提供的一套集成(混合)加密方案。其中包括了非對稱加密,對稱加密和簽名的功能。
<meta charset="utf-8">
這個先訂條件是為了保證曲線不包含奇點。
所以,隨著曲線參數a和b的不斷變化,曲線也呈現出了不同的形狀。比如:
所有的非對稱加密的基本原理基本都是基於一個公式 K = k G。其中K代表公鑰,k代表私鑰,G代表某一個選取的基點。非對稱加密的演算法 就是要保證 該公式 不可進行逆運算( 也就是說G/K是無法計算的 )。 *
ECC是如何計算出公私鑰呢?這里我按照我自己的理解來描述。
我理解,ECC的核心思想就是:選擇曲線上的一個基點G,之後隨機在ECC曲線上取一個點k(作為私鑰),然後根據k G計算出我們的公鑰K。並且保證公鑰K也要在曲線上。*
那麼k G怎麼計算呢?如何計算k G才能保證最後的結果不可逆呢?這就是ECC演算法要解決的。
首先,我們先隨便選擇一條ECC曲線,a = -3, b = 7 得到如下曲線:
在這個曲線上,我隨機選取兩個點,這兩個點的乘法怎麼算呢?我們可以簡化下問題,乘法是都可以用加法表示的,比如2 2 = 2+2,3 5 = 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
於是乎得到 2 P = -Q (是不是與我們非對稱演算法的公式 K = k G 越來越近了)。
於是我們得出一個結論,可以算乘法,不過只有在切點的時候才能算乘法,而且只能算2的乘法。
假若 2 可以變成任意個數進行想乘,那麼就能代表在ECC曲線里可以進行乘法運算,那麼ECC演算法就能滿足非對稱加密演算法的要求了。
那麼我們是不是可以隨機任何一個數的乘法都可以算呢? 答案是肯定的。 也就是點倍積 計算方式。
選一個隨機數 k, 那麼k * P等於多少呢?
我們知道在計算機的世界裡,所有的都是二進制的,ECC既然能算2的乘法,那麼我們可以將隨機數k描 述成二進制然後計算。假若k = 151 = 10010111
由於2 P = -Q 所以 這樣就計算出了k P。 這就是點倍積演算法 。所以在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上的例子說明如何生成共享秘鑰,也可以參考 Alice And Bob 的例子。
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 = ka KB = 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-based Message Authentication Code. 其模型如下:
在 以太坊 的 UDP通信時(RPC通信加密方式不同),則採用了以上的實現方式,並擴展化了。
首先,以太坊的UDP通信的結構如下:
其中,sig是 經過 私鑰加密的簽名信息。mac是可以理解為整個消息的摘要, ptype是消息的事件類型,data則是經過RLP編碼後的傳輸數據。
其UDP的整個的加密,認證,簽名模型如下:
⑤ 區塊鏈原理
區塊鏈是一種技術,但它不是一種單一的技術,而是由多種技術整合的結果,包括密碼學、數學、經濟學、網路科學等。你可以把它看做是一個分布式共享記賬技術,也可以看做是一個資料庫,只不過這個資料庫是由在這個鏈上的所有節點共同維護,每個節點都有一份賬本,因為所有節點的賬本一致,不同節點之間可以互相信任,對數據沒有疑問,所以大家都說區塊鏈從技術上實現了信任。詳細的專業技術可以咨詢一些專業的技術公司,例:金博科技,專注開發區塊鏈相關產品,專業研發團隊和完善的售後服務,可以電話咨詢。
⑥ 鍖哄潡閾炬槸浠涔 娣卞叆瑙f瀽鍖哄潡閾炬妧鏈鍘熺悊涓庡簲鐢錛
鍖哄潡閾炬槸涓縐嶅垎甯冨紡銆佸幓涓蹇冨寲鐨勬妧鏈鍜屾暟鎹緇撴瀯錛屽畠鍙浠ョ敤浜庡畨鍏ㄥ湴璁板綍鍜岀$悊浜ゆ槗銆佷俊鎮鎴栦換浣曠被鍨嬬殑鏁版嵁銆傚尯鍧楅摼鐨勬牳蹇冩濇兂鏄灝嗘暟鎹鍒嗘暎瀛樺偍鍦ㄥ氫釜鑺傜偣涓婏紝姣忎釜鑺傜偣閮芥湁鐩稿悓鐨勬暟鎹鍓鏈錛岄氳繃瀵嗙爜瀛﹀拰鍏辮瘑鏈哄埗紜淇濇暟鎹鐨勫畨鍏ㄦс侀忔槑鎬у拰涓嶅彲綃℃敼鎬с備互涓嬫槸瀵瑰尯鍧楅摼鎶鏈鍘熺悊鍜屽簲鐢ㄧ殑娣卞叆瑙f瀽錛
鍖哄潡閾炬妧鏈鍘熺悊錛
鍒嗗竷寮忚處鏈錛 鍖哄潡閾鵑氳繃灝嗘暟鎹鍒嗗竷瀛樺偍鍦ㄥ氫釜鑺傜偣涓婏紝褰㈡垚涓涓鍏變韓鐨勫垎甯冨紡璐︽湰銆傛瘡涓鑺傜偣閮藉寘鍚浜嗗畬鏁寸殑璐︽湰鍓鏈錛岀『淇濅簡鏁版嵁鐨勫幓涓蹇冨寲鍜岄珮鍙鐢ㄦс
鍖哄潡鍜岄摼錛 鍖哄潡鏄鍖呭惈涓瀹氭暟閲忎氦鏄撴垨鏁版嵁鐨勮板綍鍗曞厓錛屾瘡涓鍖哄潡閮藉寘鍚浜嗗墠涓涓鍖哄潡鐨勪俊鎮錛屽艦鎴愪簡涓涓閾懼紡緇撴瀯錛屽洜姝ゅ緱鍚嶁滃尯鍧楅摼鈥濄
鍔犲瘑綆楁硶錛 鏁版嵁鍦ㄥ尯鍧楅摼涓閫氳繃瀵嗙爜瀛︾畻娉曡繘琛屽姞瀵嗭紝紜淇濇暟鎹鐨勫畨鍏ㄦу拰闅愮佹с傛瘡涓鍖哄潡閮戒嬌鐢ㄥ搱甯岀畻娉曞瑰墠涓涓鍖哄潡鐨勫搱甯屽艱繘琛屽姞瀵嗭紝浠ヤ繚鎸佹暟鎹鐨勮繛緇鎬с
鍏辮瘑鏈哄埗錛 鍖哄潡閾劇綉緇滀腑鐨勮妭鐐歸氳繃鍏辮瘑鏈哄埗杈炬垚涓鑷達紝鍗沖備綍紜璁ゆ柊鐨勫尯鍧楀姞鍏ュ埌閾句腑銆傚父瑙佺殑鍏辮瘑鏈哄埗鍖呮嫭宸ヤ綔閲忚瘉鏄庯紙Proof of Work錛孭oW錛夊拰鏉冪泭璇佹槑錛圥roof of Stake錛孭oS錛夌瓑銆
涓嶅彲綃℃敼鎬э細 涓鏃︽暟鎹琚璁板綍鍦ㄥ尯鍧楅摼涓錛屽緢闅句慨鏀規垨鍒犻櫎銆傚洜涓烘瘡涓鍖哄潡閮藉寘鍚浜嗗墠涓涓鍖哄潡鐨勫搱甯屽礆紝涓鏃︽暟鎹琚綃℃敼錛屽皢浼氱牬鍧忔暣涓閾劇殑榪炵畫鎬э紝鍥犳ゆ暟鎹鐨勪笉鍙綃℃敼鎬у緱鍒頒簡淇濋殰銆
鍔犲瘑璐у竵錛 鍖哄潡閾炬渶鍒濅互姣旂壒甯佷負浠h〃鐨勫姞瀵嗚揣甯佽岄椈鍚嶃傚姞瀵嗚揣甯佸埄鐢ㄥ尯鍧楅摼鎶鏈瀹炵幇浜嗗幓涓蹇冨寲鐨勬暟瀛楄揣甯佷氦鏄撳拰綆$悊銆
鏅鴻兘鍚堢害錛 鏅鴻兘鍚堢害鏄涓縐嶈嚜鍔ㄦ墽琛屽悎綰︽潯嬈劇殑紼嬪簭錛屽瓨鍌ㄥ湪鍖哄潡閾句笂銆傚畠浠鍙浠ョ敤浜庡疄鐜拌嚜鍔ㄥ寲鐨勪氦鏄撱佽祫浜х$悊鍜屼笟鍔¢昏緫銆
渚涘簲閾劇$悊錛 鍖哄潡閾懼彲浠ュ炲姞渚涘簲閾劇殑閫忔槑搴﹀拰鍙榪芥函鎬э紝紜淇濅駭鍝佺殑鏉ユ簮鍜岃川閲忥紝鍑忓皯嬈鴻瘓鍜屽亣鍐掗棶棰樸
鏁板瓧韜浠借よ瘉錛 鍖哄潡閾懼彲鐢ㄤ簬寤虹珛鍘諱腑蹇冨寲鐨勬暟瀛楄韓浠界郴緇燂紝鐢ㄦ埛鍙浠ユ洿瀹夊叏鍦版帶鍒惰嚜宸辯殑韜浠戒俊鎮錛屽噺灝戣韓浠界洍紿冨拰鉶氬亣璁よ瘉闂棰樸
鎶曠エ緋葷粺錛 鍖哄潡閾懼彲浠ュ壋寤哄畨鍏ㄣ侀忔槑鍜岄槻綃℃敼鐨勬姇紲ㄧ郴緇燂紝紜淇濋変婦鐨勫叕騫蟲у拰鍙淇″害銆
閲戣瀺鏈嶅姟錛 鍖哄潡閾懼湪鏀浠樸佽法澧冩眹嬈俱佽祫浜х$悊絳夐噾鋙嶉嗗煙鏈夊箍娉涘簲鐢錛岃兘澶熸彁楂樻晥鐜囧拰闄嶄綆浜ゆ槗鎴愭湰銆
鐗╄仈緗戱細 鍖哄潡閾懼彲浠ヤ負鐗╄仈緗戣懼囨彁渚涘畨鍏ㄧ殑韜浠借よ瘉鍜屾暟鎹浼犺緭錛屽炲己璁懼囦箣闂寸殑淇′換鍜屼簰鎿嶄綔鎬с
鏁板瓧鑹烘湳鍜岀増鏉冧繚鎶わ細 鍖哄潡閾炬妧鏈鍙浠ョ敤浜庤瘉鏄庢暟瀛楄壓鏈鍝佺殑鎵鏈夋潈鍜岀増鏉冿紝闃叉㈢洍鐗堝拰渚墊潈闂棰樸
鍖哄潡閾炬妧鏈搴旂敤錛
鎬諱箣錛屽尯鍧楅摼鎶鏈浠ュ叾鍒嗗竷寮忋佸畨鍏ㄣ侀忔槑絳夌壒鐐癸紝鍦ㄥ氫釜棰嗗煙閮芥湁騫挎硾鐨勫簲鐢ㄥ墠鏅銆傜劧鑰岋紝涔熼渶瑕佹敞鎰忓尯鍧楅摼鎶鏈鐨勫矓闄愭э紝濡傚彲鎵╁睍鎬с佽兘婧愭秷鑰楃瓑闂棰橈紝鍦ㄥ疄闄呭簲鐢ㄤ腑闇瑕佺患鍚堣冭檻銆
⑦ 有沒有講區塊鏈講的通俗易懂的書或者文章求推薦
區塊鏈和區塊鏈技術已經被廣泛的人接受和運用,但是對於區塊鏈和區塊鏈技術一直也都是一知半解,對於區塊鏈的工作原理和運營方式更是茫然不知。或許看過很多相關報道,有很多的專業名詞,專業術語,看的還是不甚通透,在這里比特之窗就為你以通俗的方式解釋一下。
區塊鏈是一種分布式數據存儲、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。
這是通常我們看到報道上所說專業的總結,但是具體的形式又是怎麼樣的呢?
首先,無論多大的系統或者多小的網站,一般在它背後都有資料庫。那麼這個資料庫由誰來維護?在一般情況下,誰負責運營這個網路或者系統,那麼就由誰來進行維護。
如果是微信資料庫肯定是騰訊團隊維護,淘寶的資料庫就是阿里的團隊在維護。大家一定認為這種方式是天經地義的,但是區塊鏈技術卻不是這樣。
其次,區塊鏈技術也稱為分布式賬本技術。就是如果我們把資料庫想像成是一個賬本:比如支付寶就是很典型的賬本,任何數據的改變就是記賬型的。資料庫的維護我們可以認為是很簡單的記賬方式。
在區塊鏈的世界也是這樣,區塊鏈系統中的每一個人都有機會參與記賬。系統會在可能是選擇十秒鍾內,也可能十分鍾,選出這段時間記賬最快最好的人,由這個人來記賬,他會把這段時間資料庫的變化和賬本的變化記在一個區塊中。
我們可以把這個區塊想像成一頁紙上,系統在確認記錄正確後,會把過去賬本的數據指紋鏈接這張紙上,然後把這張紙發給整個系統裡面其他的所有人。然後周而復始,系統會尋找下一個記賬又快又好的人,而系統中的其他所有人都會獲得整個賬本的副本。
最後,由於每個人(計算機)都有一模一樣的賬本,並且每個人(計算機)都有著完全相等的權利,因此不會由於單個人(計算機)失去聯系或宕機,而導致整個系統崩潰。
既然有一模一樣的賬本,就意味著所有的數據都是公開透明的,每一個人可以看到每一個賬戶上到底有什麼數字變化。它非常有趣的特性就是,其中的數據無法篡改。因為系統會自動比較,會認為相同數量最多的賬本是真的賬本,少部分和別人數量不一樣的賬本是虛假的賬本。
在這種情況下,任何人篡改自己的賬本是沒有任何意義的,因為除非你能夠篡改整個系統裡面大部分節點。如果整個系統只有幾個節點也許還容易做到,但如果是成千上萬數十萬個,並且還分布在互聯網上的任何角落,除非某個人能控制世界上大多數的電腦,否則不太可能篡改這樣大型的區塊鏈。
這樣通俗的解釋不知道能不能看明白呢?
比特之窗,一家專業提供比特幣新聞資訊服務的網站平台
⑧ 區塊鏈技術原理與應用 介紹一下
1、區塊鏈是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了過去十分鍾內所有比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊。是比特幣的底層技術,像一個資料庫賬本,記載所有的交易記錄。
2、廣義定義:利用加密鏈式結構來驗證與存儲數據、利用分布式節點共識演算法來生成和更新數據、利用自動化腳本代碼(智能合約)來變成和操作數據的一種全新的去中心化基礎架構與分布式計算範式。
3、狹義定義:按照時間順序將數據區塊以鏈條的方式組合成特定數據結構,並以密碼學方式保證的不可篡改和不可偽造的去中心化共享賬戶。
4、區塊鏈的特點:去中心化:區塊鏈數據的驗證、記賬、存儲、維護和傳輸等過程均是基於分布式系統機構,採用純數學方法而不是中心結構來建立分布式節點間的信任關系,從而形成去中心化的可信任的分布式系統。
5、時序數據:區塊鏈採用帶有時間戳的鏈式區塊結構存儲數據,從而為數據增加了時間維度,具有極強的可驗證性和可追溯性。
6、集體維護:區塊鏈系統採用特定的經濟激勵機制來保證分布式系統中所以節點均可參與數據區塊的驗證過程,並通過共識演算法來選擇特定的節點將新區快添加到區塊鏈。
7、可編程:區塊鏈技術提供靈活的腳本代碼系統,支持用戶創建高級的智能合約、貨幣或其他去中心化應用。
8、安全可信:區塊鏈技術採用非對稱密碼原理對數據進行加密,同時藉助分布式系統各節點的工作量證明等共識演算法形成的強大算力來抵禦外部攻擊、保證區塊鏈數據不可篡改和不可偽造,因而具有較高的安全性。
9、區塊鏈應用場景:數字貨幣:以比特幣為代表,本質上是由分布式網路系統生成的數字貨幣,其發行過程不依賴特定的中心化機構。
⑨ 區塊鏈原理是什麼
使看到一些爭論區塊鏈定義的回答, 突然意識到自己這篇解釋原理的回答其實是一直是對著比特幣擼的, 介於區塊鏈的定義業界並沒有一個特別明確和唯一的回答, 這里先給出個人根據所讀論文而總結出的「區塊鏈」應有特質:
1.用了具有 "哈希鏈" (下文有解釋) 形式的數據結構保存基礎數據
2.有多個結點參與系統運行(分布式)
3.通過一定的協議或演算法對於基礎數據的一致性達成共識(共識協議/演算法)。
介於比特幣目前是區塊鏈最典型且最有影響力的應用之一, 理解比特幣如何使用區塊鏈後, 再去理解其他形式各樣的區塊鏈應用就會容易很多。