區(qū)塊鏈安全—區(qū)塊鏈P2P網(wǎng)絡(luò)詳細(xì)分析

image.png
本文首次發(fā)布在先知社區(qū)止状,鏈接為:https://xz.aliyun.com/t/2965
區(qū)塊鏈技術(shù)大量依賴(lài)于P2P網(wǎng)絡(luò),可以說(shuō)沒(méi)有P2P就沒(méi)有區(qū)塊鏈現(xiàn)在的發(fā)展攒霹。而區(qū)塊鏈擁有去中心化的應(yīng)用理論怯疤,所以對(duì)P2P的過(guò)程有著近似嚴(yán)苛的安全要求。本文圍繞P2P網(wǎng)絡(luò)的基礎(chǔ)架構(gòu)以及安全協(xié)議展開(kāi)論述催束。內(nèi)容是通過(guò)我的大量文獻(xiàn)閱讀之后進(jìn)行的提煉集峦。希望大家多多交流!

一抠刺、概述P2P網(wǎng)絡(luò)

1 何為P2P塔淤?

P2P(peer-to-peer)網(wǎng)絡(luò)又稱(chēng)為對(duì)等式網(wǎng)絡(luò),或者點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)速妖。這是一種無(wú)中心的服務(wù)器高蜂、完全由用戶(hù)群進(jìn)行交換信息的互聯(lián)網(wǎng)體系,P2P網(wǎng)絡(luò)的每一個(gè)用戶(hù)即是一個(gè)客戶(hù)端罕容,同時(shí)也具備服務(wù)器的功能备恤。在P2P技術(shù)之前稿饰,我們所有的網(wǎng)絡(luò)應(yīng)用都采用C/S或者B/S架構(gòu)來(lái)實(shí)現(xiàn)的,然而在之前C/S架構(gòu)的應(yīng)用程序中烘跺,客戶(hù)端軟件向服務(wù)器發(fā)出請(qǐng)求湘纵,服務(wù)器然后對(duì)客戶(hù)端請(qǐng)求做出響應(yīng),在這種情況下滤淳,如果客戶(hù)端越多梧喷,此時(shí)服務(wù)器的壓力就越大。然而采用P2P技術(shù)實(shí)現(xiàn)的每臺(tái)計(jì)算機(jī)既是客戶(hù)端脖咐,也是服務(wù)器铺敌,他們的功能都是對(duì)等的。對(duì)于安裝了P2P軟件(如迅雷屁擅,QQ等)的計(jì)算機(jī)加入一個(gè)共同的P2P網(wǎng)絡(luò)偿凭,網(wǎng)絡(luò)中的節(jié)點(diǎn)之間可以直接進(jìn)行數(shù)據(jù)傳輸和通信。

那么有讀者可能會(huì)提問(wèn):那我傳統(tǒng)的P2P架構(gòu)與C/S或者B/S架構(gòu)有什么異同點(diǎn)呢派歌?

2 P2P架構(gòu)和C/S架構(gòu)的比較

相比于C/S弯囊,P2P有其自己獨(dú)特的優(yōu)勢(shì):所有的客戶(hù)端都能夠提供資源,包括帶寬胶果、存儲(chǔ)空間已經(jīng)計(jì)算能力匾嘱。所以其網(wǎng)絡(luò)容量可以遠(yuǎn)超其他模式。具體來(lái)說(shuō):

  • 1.對(duì)等模式

P2P系統(tǒng)中的客戶(hù)端能夠同時(shí)扮演客戶(hù)端和服務(wù)器的角色早抠,使兩臺(tái)計(jì)算機(jī)之間能夠不通過(guò)服務(wù)器直接進(jìn)行信息分享霎烙。也就是說(shuō)信息的傳輸分散在各個(gè)節(jié)點(diǎn),無(wú)須經(jīng)過(guò)某個(gè)中心服務(wù)器蕊连,用戶(hù)的隱私信息被竊聽(tīng)和泄露的可能大大減少悬垃。

    1. 網(wǎng)絡(luò)資源的分布式存儲(chǔ)

在C/S架構(gòu)中,所有客戶(hù)端都直接從服務(wù)器下載所有數(shù)據(jù)資源甘苍,這樣勢(shì)必會(huì)加重服務(wù)器的負(fù)擔(dān)尝蠕,而P2P則改變了以服務(wù)器為中心的狀態(tài),使每個(gè)節(jié)點(diǎn)可以先從服務(wù)器上個(gè)下載一部分载庭,然后再相互從對(duì)方或者其他節(jié)點(diǎn)下載其余部分趟佃。采用這種方式,當(dāng)大量客戶(hù)端同時(shí)下載時(shí)昧捷,就不會(huì)形成網(wǎng)絡(luò)堵塞現(xiàn)象了闲昭。

而C/S架構(gòu)有下面的缺點(diǎn):

    1. 服務(wù)器負(fù)擔(dān)過(guò)重。當(dāng)大量用戶(hù)訪問(wèn)C/S系統(tǒng)的服務(wù)器時(shí)靡挥,服務(wù)器常常會(huì)出現(xiàn)網(wǎng)絡(luò)堵塞等現(xiàn)象序矩。
    1. 系統(tǒng)穩(wěn)健性和服務(wù)器關(guān)聯(lián)密切。指的是——如果服務(wù)器出現(xiàn)了問(wèn)題時(shí)跋破,整個(gè)系統(tǒng)的運(yùn)行將會(huì)癱瘓簸淀。

3 區(qū)塊鏈中的P2P

解釋了這么多內(nèi)容瓶蝴,那么我們現(xiàn)在就將區(qū)塊鏈中的P2P技術(shù)單獨(dú)拿出來(lái),具體的分析下其中蘊(yùn)含的道理租幕。

從技術(shù)方面來(lái)分析舷手,區(qū)塊鏈技術(shù)就是——P2P+共識(shí)機(jī)制+密碼學(xué)。具體來(lái)說(shuō)劲绪,區(qū)塊鏈就是P2P的網(wǎng)絡(luò)架構(gòu)男窟,通過(guò)密碼學(xué)來(lái)保證數(shù)據(jù)的安全,通過(guò)共識(shí)算法來(lái)保證數(shù)據(jù)的一致性贾富。對(duì)于其他架構(gòu)來(lái)說(shuō)歉眷,故障是不可避免的。但是對(duì)于區(qū)塊鏈的分布式P2P網(wǎng)絡(luò)來(lái)說(shuō)颤枪,其基本不存在單點(diǎn)故障汗捡。就算節(jié)點(diǎn)頻繁的進(jìn)退也不會(huì)對(duì)整個(gè)系統(tǒng)產(chǎn)生影響。

而我們知道區(qū)塊鏈的落地項(xiàng)目有許多畏纲,但是我們可以將這些內(nèi)容大致的分為三類(lèi)——公鏈扇住、私有鏈、聯(lián)盟鏈盗胀。而公鏈?zhǔn)蔷哂型耆_(kāi)放的特性的台囱,所以其決定了它不回在網(wǎng)絡(luò)中采用P2P加密。而對(duì)于其余的兩者來(lái)說(shuō)(尤其是聯(lián)盟鏈)读整,其節(jié)點(diǎn)間互相合作卻又不完全信任的情況使P2P網(wǎng)絡(luò)顯的尤為重要。

二咱娶、P2P的分類(lèi)

P2P 網(wǎng)絡(luò)自身有多方面優(yōu)點(diǎn)米间,在區(qū)塊鏈的應(yīng)用如下:

  • 1 去中心化

區(qū)塊鏈的資源和服務(wù)分布在所有參與節(jié)點(diǎn)上,通過(guò)共識(shí)機(jī)制維護(hù)區(qū)塊鏈網(wǎng)絡(luò)一致性膘侮,無(wú)須中心系統(tǒng)的存在屈糊。

  • 2 可擴(kuò)展性。

區(qū)塊鏈節(jié)點(diǎn)可以自由加入琼了、退出逻锐,網(wǎng)絡(luò)系統(tǒng)根據(jù)節(jié)點(diǎn)自由擴(kuò)展。

  • 3 健壯性雕薪。

區(qū)塊鏈網(wǎng)絡(luò)沒(méi)有中心節(jié)點(diǎn)昧诱,也就沒(méi)有了攻擊對(duì)象。參與節(jié)點(diǎn)分布在網(wǎng)絡(luò)中所袁,部分節(jié)點(diǎn)遭到破壞對(duì)區(qū)塊鏈系統(tǒng)無(wú)影響盏档。(我們知道許多協(xié)議均是依靠CA來(lái)進(jìn)行處理的,這也就成為了許多黑客攻擊的對(duì)象燥爷。然后區(qū)塊鏈并沒(méi)有CA這種機(jī)制蜈亩,所以也就規(guī)避了風(fēng)險(xiǎn))懦窘。

  • 4隱私保護(hù)。

區(qū)塊信息采用廣播機(jī)制稚配,無(wú)法定位廣播初始 節(jié)點(diǎn)畅涂,防止用戶(hù)通信被監(jiān)聽(tīng),保護(hù)用戶(hù)隱私道川。

  • 5 負(fù)載均衡午衰。

區(qū)塊鏈通過(guò)限制節(jié)點(diǎn)連接數(shù)等配置,避免資源負(fù)載愤惰、網(wǎng)絡(luò)阻塞苇经。

針對(duì)區(qū)塊鏈應(yīng)用特點(diǎn),按照 P2P 網(wǎng)絡(luò)是否去中心化宦言、節(jié)點(diǎn)地址是否結(jié)構(gòu)化兩個(gè)方面扇单,將 P2P 網(wǎng)絡(luò)分為如下四類(lèi)。

1 中心化 P2P 網(wǎng)絡(luò)

在中心化網(wǎng)絡(luò)中存在“中心服務(wù)器”奠旺,而其作用為保存接入節(jié)點(diǎn)的地址信息蜘澜。倘若兩個(gè)peer之間想要進(jìn)行通信,那么它們可以通過(guò)中心服務(wù)器進(jìn)行對(duì)方地址的索要响疚。例如:

將音樂(lè)文件與 保存文件的節(jié)點(diǎn)相互關(guān)聯(lián)鄙信,用戶(hù)查找某個(gè)音樂(lè)時(shí),中心服務(wù)器告知儲(chǔ)存節(jié)點(diǎn)地址忿晕,用戶(hù)點(diǎn)對(duì)點(diǎn)連接以獲得音樂(lè)装诡。

由此可知,中心服務(wù)器是用來(lái)提供地址索引的(其他架構(gòu)的中心服務(wù)器是提供所有的服務(wù))践盼。倘若其出現(xiàn)故障鸦采,那么整個(gè)系統(tǒng)就出現(xiàn)癱瘓了。

image.png

對(duì)小型網(wǎng)絡(luò)而言咕幻,中心化拓?fù)淠P驮诠芾砗涂刂品矫嬲家欢▋?yōu)勢(shì)渔伯。但鑒于其存在的上述缺陷,該模型并不適合大型網(wǎng)絡(luò)應(yīng)用肄程。

2 全分布式非結(jié)構(gòu)化 P2P 網(wǎng)絡(luò)

因?yàn)樗鼪](méi)有中央索引服務(wù)器锣吼,每臺(tái)機(jī)器在網(wǎng)絡(luò)中是真正的對(duì)等關(guān)系,既是客戶(hù)機(jī)同時(shí)又是服務(wù)器蓝厌。

全分布 P2P 節(jié)點(diǎn)可以自由加入退出玄叠,并且沒(méi)有中心節(jié)點(diǎn), 節(jié)點(diǎn)地址沒(méi)有結(jié)構(gòu)化統(tǒng)一標(biāo)準(zhǔn)拓提,整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)呈隨機(jī)圖的結(jié)構(gòu)诸典, 無(wú)固定網(wǎng)絡(luò)結(jié)構(gòu)圖。然而完全的自由意味著新節(jié)點(diǎn)無(wú)法得知 P2P 網(wǎng)絡(luò)節(jié)點(diǎn)信息,從而無(wú)法加入網(wǎng) 絡(luò)狐粱。全分布式 P2P 網(wǎng)絡(luò)更加自由化的同時(shí)也帶來(lái)節(jié)點(diǎn)管理的問(wèn)題舀寓,節(jié)點(diǎn)頻繁加入、退出使得整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)無(wú)法穩(wěn)定肌蜻, 大量的廣播消息不僅造成資源浪費(fèi)互墓,甚至?xí)枞W(wǎng)絡(luò)。

而比特幣采用的就是這種 P2P 網(wǎng)絡(luò)結(jié)構(gòu)蒋搜,全分布式使得任 何人任何節(jié)點(diǎn)都可以參與篡撵,非結(jié)構(gòu)化使得節(jié)點(diǎn)間既可以通過(guò)區(qū) 塊鏈 P2P 協(xié)議同步區(qū)塊數(shù)據(jù),又保持匿名隱私保護(hù)豆挽。

舉例如下:

當(dāng)一臺(tái)計(jì)算機(jī)要下載一個(gè)文件育谬,它首先以文件名或者關(guān)鍵字生成一個(gè)查詢(xún),并把這個(gè)查詢(xún)發(fā)送給與它相連的所有計(jì)算機(jī)帮哈,這些計(jì)算機(jī)如果存在這個(gè)文件膛檀,則與查詢(xún)的機(jī)器建立連接,如果不存在這個(gè)文件娘侍,則繼續(xù)在自己相鄰的計(jì)算機(jī)之間轉(zhuǎn)發(fā)這個(gè)查詢(xún)咖刃,直到找到文件為止。為了控制搜索消息不至于永遠(yuǎn)這樣傳遞下去憾筏,一般通過(guò)TTL (Time To Live)的減值來(lái)控制查詢(xún)的深度嚎杨。
image.png

3 全分布式結(jié)構(gòu)化 P2P 網(wǎng)絡(luò)

全分布式最大的問(wèn)題在于節(jié)點(diǎn)地址管理,節(jié)點(diǎn)間沒(méi)有固定規(guī)則約束氧腰,無(wú)法精確定位節(jié)點(diǎn)信息枫浙,只能通過(guò)洪泛查詢(xún)方式進(jìn)行查找,對(duì)網(wǎng)絡(luò)的消耗很大古拴。而結(jié)構(gòu)化網(wǎng)絡(luò)采用分布式哈希表 (distributed Hash table, DHT)箩帚,通過(guò)如 Hash 函數(shù)一類(lèi)的加密散列函數(shù),將不同節(jié)點(diǎn)地址規(guī)范為標(biāo)準(zhǔn)長(zhǎng)度數(shù)據(jù)斤富。

結(jié)構(gòu)化模型與非結(jié)構(gòu)化模型相思,但結(jié)構(gòu)化模型的節(jié)點(diǎn)管理有固定結(jié)構(gòu)圖锻狗。例如:

以太坊將節(jié)點(diǎn)橢圓加密算法的公鑰轉(zhuǎn)換為 64 Byte 長(zhǎng)度的 NodeID 作為唯一標(biāo)志符來(lái)區(qū)分節(jié)點(diǎn)满力,使得以太坊可以在沒(méi)有中心服務(wù)器的情況下實(shí)現(xiàn)節(jié)點(diǎn)地址精確查找。

4 半分布式 P2P 網(wǎng)絡(luò)

結(jié)合中心化和分布式模型各有的優(yōu)點(diǎn)轻纪,半分布式 P2P 網(wǎng)絡(luò)將節(jié)點(diǎn)分類(lèi)成普通 節(jié)點(diǎn)和超級(jí)節(jié)點(diǎn)油额,從而構(gòu)成了半分布式網(wǎng)絡(luò)結(jié)構(gòu)。

超級(jí)節(jié)點(diǎn)維護(hù)部分網(wǎng)絡(luò)節(jié)點(diǎn)地址刻帚、文件索引等工作潦嘶,超級(jí)節(jié)點(diǎn)共同實(shí) 現(xiàn)中心服務(wù)器功能。超級(jí)節(jié)點(diǎn)本身卻是分布式崇众,可以自由擴(kuò)展退出掂僵,具備分布式網(wǎng)絡(luò)優(yōu)點(diǎn)航厚。

超級(jí)賬本 hyperledger fabric 采用的 P2P 網(wǎng)絡(luò)結(jié)構(gòu)就如此。其將節(jié)點(diǎn)分為普通用戶(hù)節(jié)點(diǎn)和超級(jí)節(jié)點(diǎn)(排序锰蓬、背書(shū)節(jié)點(diǎn)等)幔睬。超級(jí)節(jié)點(diǎn)可以由普通節(jié)點(diǎn)選舉,也可以自行配置芹扭,單獨(dú)一個(gè)超級(jí)節(jié)點(diǎn)停機(jī)不影響系統(tǒng)運(yùn)行麻顶。

image.png

三、密碼協(xié)議解決方案分析

我們?cè)谏厦娴膬?nèi)容中介紹了P2P網(wǎng)絡(luò)中的幾種類(lèi)型舱卡。下面我們?cè)敿?xì)介紹下關(guān)于區(qū)塊鏈中的具體安全加密算法辅肾。

在描述協(xié)議前,我們先討論下我們?yōu)樯秱円褂肞2P加密轮锥?

我們?cè)趨^(qū)塊鏈的節(jié)點(diǎn)之間矫钓、客戶(hù)端之間需要建立安全的加密隧道,并防止在信息傳輸?shù)倪^(guò)程中將敏感信息暴露給外人交胚。除此之外份汗,其也可以減少網(wǎng)絡(luò)安全監(jiān)管工作,提高安全性蝴簇。

1 傳統(tǒng)通用SSL服務(wù)

簡(jiǎn)單來(lái)說(shuō)杯活,在比特幣“錢(qián)包”的應(yīng)用中,早起其應(yīng)用使用了SSL進(jìn)行客戶(hù)端之間數(shù)據(jù)的加密熬词。而SSL/TLS可以結(jié)合HTTP協(xié)議組合成HTTPS來(lái)加密web的內(nèi)容旁钧,也可以與一些常用的FTP等協(xié)議進(jìn)行組合來(lái)保證P2P網(wǎng)絡(luò)中應(yīng)用數(shù)據(jù)層的安全。

具體來(lái)說(shuō)如下:

image.png
image.png
1. 客戶(hù)端發(fā)出一個(gè) client hello 消息互拾,攜帶的信息包括:

    所支持的SSL/TLS 版本列表歪今;支持的與加密算法;所支持的數(shù)據(jù)壓縮方法颜矿;隨機(jī)數(shù)A;

2. 服務(wù)端響應(yīng)一個(gè) server hello 消息寄猩,攜帶的信息包括:

    協(xié)商采用的SSL/TLS 版本號(hào);會(huì)話(huà)ID骑疆;隨機(jī)數(shù)B田篇;服務(wù)端數(shù)字證書(shū) serverCA;

    由于雙向認(rèn)證需求箍铭,服務(wù)端需要對(duì)客戶(hù)端進(jìn)行認(rèn)證泊柬,會(huì)同時(shí)發(fā)送一個(gè) client certificate request,表示請(qǐng)求客戶(hù)端的證書(shū)诈火;

3. 客戶(hù)端校驗(yàn)服務(wù)端的數(shù)字證書(shū)兽赁;校驗(yàn)通過(guò)之后發(fā)送隨機(jī)數(shù)C,該隨機(jī)數(shù)稱(chēng)為pre-master-key,使用數(shù)字證書(shū)中的公鑰加密后發(fā)出刀崖;

    由于服務(wù)端發(fā)起了 client certificate request惊科,客戶(hù)端使用私鑰加密一個(gè)隨機(jī)數(shù) clientRandom隨客戶(hù)端的證書(shū) clientCA一并發(fā)出;

4. 服務(wù)端校驗(yàn)客戶(hù)端的證書(shū)蒲跨,并成功將客戶(hù)端加密的隨機(jī)數(shù)clientRandom 解密译断;

    根據(jù) 隨機(jī)數(shù)A/隨機(jī)數(shù)B/隨機(jī)數(shù)C(pre-master-key) 產(chǎn)生動(dòng)態(tài)密鑰 master-key,加密一個(gè)finish 消息發(fā)至客戶(hù)端或悲;

5. 客戶(hù)端根據(jù) 同樣的隨機(jī)數(shù)和算法 生成master-key孙咪,加密一個(gè)finish 消息發(fā)送至服務(wù)端;

6. 服務(wù)端和客戶(hù)端分別解密成功巡语,至此握手完成翎蹈,之后的數(shù)據(jù)包均采用master-key進(jìn)行加密傳輸。

詳細(xì)內(nèi)容參考 SSL/TLS算法流程解析

然而男公,由于比特幣官方的理念為“錢(qián)包”用戶(hù)的身份應(yīng)該是嚴(yán)格限定的荤堪,所以其在設(shè)計(jì)之初就保證了用戶(hù)的身份是合法的,所以其SSL在后續(xù)的版本中并沒(méi)有進(jìn)行維護(hù)枢赔。

2 站間協(xié)議(station to station)

由于P2P之間的信息傳遞不可避免的要進(jìn)行TCP連接澄阳,所以保證其連接的安全性是尤為重要的。然而我們?nèi)绾伪WC會(huì)話(huà)的前向安全性呢踏拜?具體的算法流程是如何實(shí)現(xiàn)的呢碎赢?

站間協(xié)議(station to station)是秘鑰協(xié)商方案,其基于經(jīng)典的DH秘鑰交換算法速梗,提供了秘鑰與實(shí)體的認(rèn)證肮塞。

也保證了秘鑰的前向安全性。

對(duì)于前向安全性姻锁,我們簡(jiǎn)單總結(jié)為:A與B之間的所有會(huì)話(huà)均有一個(gè)公共秘鑰枕赵。但是假如我的這個(gè)公共秘鑰丟失了那么我之前的所有會(huì)話(huà)均會(huì)被泄密。所以我們?cè)诿看螘?huì)話(huà)過(guò)程中需要根據(jù)公共秘鑰來(lái)生成一個(gè)“會(huì)話(huà)秘鑰”位隶,而需要根據(jù)這個(gè)會(huì)話(huà)秘鑰來(lái)進(jìn)行當(dāng)前會(huì)話(huà)拷窜。
image.png
  • 1 建立連接之前,A與B雙方需要設(shè)置好共享的數(shù)據(jù)(Diffie-Hellman算法)涧黄,包括雙方的公鑰篮昧、大素?cái)?shù)n、發(fā)生器g弓熏。

  • 2 節(jié)點(diǎn)A生成隨機(jī)數(shù)x恋谭,計(jì)算并將指數(shù)g^x發(fā)送給節(jié)點(diǎn)B糠睡。

  • 3 節(jié)點(diǎn)B生成隨機(jī)數(shù)y挽鞠,計(jì)算指數(shù)g^y。

  • 4 節(jié)點(diǎn)B計(jì)算共享秘鑰 `K = (gx)y。

  • 5 B計(jì)算(g^y , g^x)信认,并用B的私鑰簽名材义,然后用共享秘鑰K加密(這里是兩層)。然后將密文嫁赏、g^y發(fā)送給A其掂。

  • 6 節(jié)點(diǎn)A使用B的公鑰驗(yàn)證B的簽名。

  • 7 A將(g^x , g^y)使用A的私鑰簽名潦蝇,然后用K加密款熬,傳送給B(跟步驟5相似)。

  • 8 B用A的公鑰驗(yàn)證信息的來(lái)源是否是A攘乒。

  • 9 至此贤牛,A與B互相認(rèn)證過(guò),并且有共同的秘鑰则酝。之后就可以使用K進(jìn)行會(huì)話(huà)加密殉簸。

image.png
image.png

由于傳統(tǒng)的DH秘鑰交換協(xié)議沒(méi)有設(shè)計(jì)驗(yàn)證部分,所以很大可能會(huì)存在中間人攻擊的情況沽讹。但是STS就很好的經(jīng)過(guò)協(xié)商設(shè)計(jì)添加了對(duì)對(duì)方身份驗(yàn)證的過(guò)程般卑,來(lái)避免了中間人攻擊的可能。

而協(xié)議中使用密碼學(xué)“離散對(duì)數(shù)問(wèn)題”來(lái)保證其安全性爽雄。即正向計(jì)算C = F(M)容易蝠检,但是在不知道秘鑰K的情況下計(jì)算M = F^-1(C)是困難的。

例如上述圖中盲链,a蝇率,b不泄露只是傳遞x與y的話(huà),任何人是沒(méi)有辦法通過(guò)結(jié)果x刽沾,y來(lái)推出秘密a本慕,b。

3 Sphinx協(xié)議

Sphinx是由學(xué)術(shù)研究者George Danezis和Ian Goldberg設(shè)計(jì)的一種協(xié)議侧漓,用于在一種點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)上轉(zhuǎn)播匿名信息锅尘。這種解決方案于2009年5月首次被提出,最初與閃電網(wǎng)絡(luò)甚至比特幣沒(méi)有任何關(guān)系布蔗。閃電實(shí)驗(yàn)室的Olaoluwa Osuntokun意識(shí)到Sphinx可以被利用藤违,他與Blockstream的Christian Decker合作對(duì)這種協(xié)議進(jìn)行了修改從而更好地適配閃電網(wǎng)絡(luò)。

Sphinx與著名的匿名化通信工具Tor(洋蔥路由)具有很多相似之處纵揍。與Tor一樣顿乒,使用Sphinx發(fā)送的所有數(shù)據(jù)包都可以進(jìn)行加密——包括接收的IP地址。然后這種加密要進(jìn)行好幾次泽谨,直到產(chǎn)生多個(gè)‘加密層’(所以用‘洋蔥’來(lái)比喻Tor)璧榄。

通過(guò)使用聰明的加密技巧特漩,所有的加密層都被應(yīng)用,從而每個(gè)沿著路由朝向最終加密包目的地的中介都只能打開(kāi)一個(gè)‘加密層’骨杂。這一層會(huì)向中介展示要將這個(gè)加密包轉(zhuǎn)向何處涂身。(與Tor相比,Sphinx使用經(jīng)過(guò)改進(jìn)的加密算法搓蚪,并創(chuàng)建了一種大小固定的數(shù)據(jù)包來(lái)更好地模糊路由中節(jié)點(diǎn)的位置蛤售。)

簡(jiǎn)單來(lái)說(shuō),Sphinx協(xié)議是中間傳話(huà)的人并不知道起點(diǎn)和終點(diǎn)妒潭,它們只知道上一個(gè)人已經(jīng)下一個(gè)人悴能。

例如我們兒時(shí)在教室向其他人傳紙條。假設(shè)兩個(gè)人隔的很遠(yuǎn)雳灾,那么我傳遞紙條的時(shí)候要在中間經(jīng)過(guò)許多人的手搜骡。但是我紙條的內(nèi)容又不能讓其他人看到,所以此時(shí)我就要想辦法既能傳出去佑女,又不會(huì)泄露记靡。

下面請(qǐng)看我分析。

假設(shè)A要給D傳紙條团驱,那么中間有 A B C D E摸吠。

這里要用到公鑰的思想,假如我的ABCDE均會(huì)配合我傳遞信息嚎花。那么我A首先要計(jì)算路徑寸痢,嗯,紊选,A說(shuō):“我發(fā)現(xiàn)最近的傳遞方法是經(jīng)過(guò) B C D到E”啼止。于是他就要開(kāi)始處理自己的消息了。
假設(shè)消息為M兵罢。公鑰分別為Pa Pb Pc Pd Pe献烦。地址分別為Addr_a,Addr_b卖词,Addr_c巩那,Addr_d,Addr_e此蜈。

之后A進(jìn)行倒序操作即横,先使用E進(jìn)行處理。Pe(M)---對(duì)M用e的私鑰加密裆赵。之后用D的消息處理东囚。 Pd(Addr_e , Pe(M))........直到最后用B的私鑰簽名Pb(xxxxxxx)。
至此战授,A就可以將處理過(guò)的消息以此傳遞页藻,首先給B抛蚁,B解密后發(fā)現(xiàn)地址是C,所以B傳遞給C惕橙。C解密后給D.........直到到了E處,E解密得到消息钉跷。每個(gè)參與者只知道各自這一跳的前一個(gè)和下一個(gè)節(jié)點(diǎn)弥鹦。

四、區(qū)塊鏈中P2P的應(yīng)用

根據(jù)我們上述的內(nèi)容可以知道爷辙,像比特幣彬坏、以太坊這樣的公鏈?zhǔn)切枰?jié)點(diǎn)自由進(jìn)出的,所以其不存在使用P2P加密的可能膝晾。

但是比特幣其匿名性不足的缺點(diǎn)區(qū)塊鏈安全—匿名性以及隱私性

對(duì)于處理區(qū)塊鏈隱私性的問(wèn)題栓始,現(xiàn)在比較有前景的解決方案是閃電網(wǎng)絡(luò) + Sphinx協(xié)議。

閃電網(wǎng)絡(luò)的本質(zhì)是在比特幣主鏈外建立可以雙向流動(dòng)的微支付通道血当,幣可以跨節(jié)點(diǎn)傳遞幻赚。將大量小額放到閃電網(wǎng)絡(luò)上,減少主鏈的負(fù)荷并提高小額交易的速度臊旭。

閃電網(wǎng)絡(luò)實(shí)現(xiàn)了一種基于稱(chēng)為Sphinx的方案的洋蔥路由協(xié)議落恼。該路由協(xié)議確保支付發(fā)送者可以通過(guò)閃電網(wǎng)絡(luò)構(gòu)建和通信路徑,使得:

  • 中間節(jié)點(diǎn)可以驗(yàn)證和解密其部分路由信息离熏,并找到下一跳佳谦。

  • 除了上一跳和下一跳,他們不能了解作為路徑一部分的任何其他節(jié)點(diǎn)滋戳。

  • 他們無(wú)法識(shí)別支付路徑的長(zhǎng)度钻蔑,或者他們自己在該路徑中的位置。

  • 路徑的每個(gè)部分被加密奸鸯,使得網(wǎng)絡(luò)級(jí)攻擊者不能將來(lái)自路徑的不同部分的數(shù)據(jù)包彼此關(guān)聯(lián)咪笑。

  • 不同于Tor(互聯(lián)網(wǎng)上的洋蔥路由匿名協(xié)議),沒(méi)有可以被監(jiān)視的“退出節(jié)點(diǎn)”娄涩。付款不需要傳輸?shù)奖忍貛艆^(qū)塊鏈蒲肋,節(jié)點(diǎn)只是更新通道余額。

而將Sphinx與閃電網(wǎng)絡(luò)結(jié)合后钝满,將網(wǎng)絡(luò)中的數(shù)據(jù)包進(jìn)行多次加密兜粘,閃電網(wǎng)絡(luò)中間層只能打開(kāi)相應(yīng)的加密層,這一層主要是展示這個(gè)包的路由信息弯蚜。這樣就實(shí)現(xiàn)了在網(wǎng)絡(luò)上隱藏詳細(xì)的交易細(xì)節(jié)孔轴。

五、參考鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末碎捺,一起剝皮案震驚了整個(gè)濱河市路鹰,隨后出現(xiàn)的幾起案子贷洲,更是在濱河造成了極大的恐慌,老刑警劉巖晋柱,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件优构,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡雁竞,警方通過(guò)查閱死者的電腦和手機(jī)钦椭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)碑诉,“玉大人彪腔,你說(shuō)我怎么就攤上這事〗裕” “怎么了德挣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)快毛。 經(jīng)常有香客問(wèn)我格嗅,道長(zhǎng),這世上最難降的妖魔是什么唠帝? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任吗浩,我火速辦了婚禮,結(jié)果婚禮上没隘,老公的妹妹穿的比我還像新娘懂扼。我一直安慰自己,他們只是感情好右蒲,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布阀湿。 她就那樣靜靜地躺著,像睡著了一般瑰妄。 火紅的嫁衣襯著肌膚如雪陷嘴。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天间坐,我揣著相機(jī)與錄音灾挨,去河邊找鬼。 笑死竹宋,一個(gè)胖子當(dāng)著我的面吹牛劳澄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜈七,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼秒拔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了飒硅?” 一聲冷哼從身側(cè)響起砂缩,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤作谚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后庵芭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體妹懒,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年双吆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了眨唬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伊诵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出回官,到底是詐尸還是另有隱情曹宴,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布歉提,位于F島的核電站笛坦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏苔巨。R本人自食惡果不足惜版扩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侄泽。 院中可真熱鬧礁芦,春花似錦、人聲如沸悼尾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)闺魏。三九已至未状,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間析桥,已是汗流浹背司草。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泡仗,地道東北人埋虹。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像娩怎,于是被迫代替她去往敵國(guó)和親吨岭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容