Quorum介紹(四):Quorum隱私體系之Tessera

Tessera是一個無狀態(tài)的java系統(tǒng)讼油,主要用來保證Quorum中的加密澡匪、解密和私有交易的分布式努溃。

每個Tessera節(jié)點:

  • 生成和保存許多公私鑰對
  • 自我管理劲装,通過公鑰和盡可能少的節(jié)點鏈接凌那,在通過自己鏈接的這些節(jié)點進而發(fā)現(xiàn)整個網(wǎng)絡(luò)的所有節(jié)點
  • 提供公開和私密的API通訊接口:
    • 私密API-主要用于Quorum內(nèi)部的通訊
    • 公開API-主要用于Tessera節(jié)點之間的通訊
  • 基于多種信任模型提供雙向SSL通訊兼雄,包括TLS證書、TOFU(Trust On First Use)帽蝶、白名單赦肋、證書授權(quán)等
  • 支持IP 白名單
  • 可以連接任何支持JDBC的SQL數(shù)據(jù)庫

一、Tessera 工作流程

TesseraPrivacyflow.jpeg

上圖展示的流程是Quorum一筆私密交易的流程励稳,這筆交易只有參與者A與參與者B知道佃乘,C并不是這筆交易的成員。

  1. A 向Quorum節(jié)點發(fā)送一筆交易驹尼,注明具體的交易payload趣避,并且設(shè)置privateFor字段的值為A(可選)和B的公鑰

  2. A的Quorum節(jié)點將這筆交易發(fā)送給自己配套的Tessera Node A的交易管理器,交易管理器存儲交易的payload

  3. Tessera Node A的交易管理器把這筆交易發(fā)給Enclave組件新翎,Enclave組件進行交易發(fā)起者(A)的身份校驗(私鑰簽名和公鑰校驗)并且加密payload

  4. Enclave的加密過程:

    1. 隨機生成一個主鑰 RMK和一個隨機數(shù)

    2. 根據(jù)上一步生成的RMK和隨機數(shù)加密交易payload

    3. 遍歷交易參與方(在本例中是A和B)

      3.1針對每個參與方:根據(jù)Enclave和每個參與方的公鑰程帕,生成共享秘鑰;生成一個隨機數(shù)地啰。

      3.2根據(jù)共享秘鑰和隨機數(shù)加密RMK愁拭。這樣保證了每個加密RMK對每一個交易參與方是獨一無二的,并且只能由該參與方讀取

    4. 返回第二小步生成的加密payload和第三小步生成的所有加密RMKs給交易處理器

  5. A的交易處理器計算加密載荷的哈希值并且在數(shù)據(jù)庫中存儲(加密payload, hash, 加密RMKs)

  6. A的交易管理器通過HTTPS向B的交易管理器發(fā)送加密payload亏吝,和專門給B的共享鑰匙+隨機數(shù)敛苇。B接收到以后回復(fù)Ack/Nack。

  7. A的交易管理器在收到B的接收回復(fù)后顺呕,將交易的hash值發(fā)送給A的Quorum節(jié)點枫攀,Quorum節(jié)點會用hash值替換原有的交易payload并且將交易的V值改為37或38,向其他節(jié)點表明這是一筆私有交易

  8. 隨后這筆交易會利用原有的Etherum P2P通信在節(jié)點之間同步

  9. 一個包含該交易的塊被打包出來株茶,并發(fā)送給網(wǎng)絡(luò)中的所有節(jié)點

  10. 在處理塊時来涨,所有的節(jié)點都會處理這條交易,發(fā)現(xiàn)交易V值為37或38启盛,Quorum節(jié)點會把交易的內(nèi)容(Hash值)發(fā)給自己對應(yīng)的Tessera節(jié)點的交易處理器蹦掐,交易處理器根據(jù)hash值查找自己的數(shù)據(jù)庫技羔,看自己是否能夠解密該筆交易

  11. 因為C不是這筆交易的參與反,所有C的Quorum節(jié)點會收到交易處理器NotARecipient回復(fù)卧抗,然后C會跳過這筆交易藤滥,并且不會改變自己的Priviate stateDB。

  12. A和B的交易處理器會發(fā)現(xiàn)自己能夠處理這筆交易社裆,因此會調(diào)用Enclave拙绊,向其傳入加密payload,加密的秘鑰和交易簽名等泳秀。

  13. Enclave驗證交易簽名标沪,然后用Enclave存儲的私鑰解密獲得RMK,再用RMK解密payload獲得交易明文嗜傅。

  14. A和B的交易處理器將解密后的交易內(nèi)容發(fā)送給EVM執(zhí)行執(zhí)行智能合約金句。本次智能合約的執(zhí)行只會更新Quorum節(jié)點的Private stateDB。(備注:一旦交易被執(zhí)行以后吕嘀,這條執(zhí)行記錄就被廢棄了违寞,如果想要讀取交易內(nèi)容必須重新按上述流程走一遍Quorum私有交易)

二、Tessera節(jié)點配置說明

因為配置文件不涉及本身Tessera的架構(gòu)和概念說明偶房,因此這里不做展開坞靶。感興趣的讀者可以直接閱讀官方文檔,查看每一配置項的說明

Quorum配置說明

三蝴悉、Tessera服務(wù)

本節(jié)會再詳細展開說明關(guān)于交易處理器Enclave相關(guān)的概念

1 交易處理器

交易處理器在整個私有交易流程中起到的作用可以查看本章第一節(jié)瘾敢,這里總結(jié)概括一下拍冠,交易處理器主要有以下幾個作用:

  • Tessera節(jié)點P2P網(wǎng)絡(luò)的基礎(chǔ),Tessera節(jié)點是通過交易處理器模塊進行節(jié)點間通訊的
  • Enclave組件之間進行payload加密/解密的溝通
  • 向數(shù)據(jù)庫存儲和讀取數(shù)據(jù)(注意簇抵,Tessera節(jié)點的數(shù)據(jù)庫是通過JDBC外掛的)
  • 和Quorum節(jié)點進行溝通

注意庆杜,交易處理器必須通過Enclave進行數(shù)據(jù)的加密解密,本身不能訪問任何公私鑰碟摆,也不能進行任何的數(shù)據(jù)加密和解密晃财,最大程度保證了數(shù)據(jù)的安全性。

另外Tessera在啟動時典蜕,可以通過-Dspring.profiles.active=enable-sync-poller指定是否啟用數(shù)據(jù)恢復(fù)功能断盛。啟用該功能以后,Tessera節(jié)點每連接上一個新的節(jié)點都會發(fā)送一個“resend request”請求愉舔,收到該請求的節(jié)點會將自己數(shù)據(jù)庫中的交易數(shù)據(jù)再次發(fā)送給每個交易參與方钢猛。(收到請求的節(jié)點并不會用交易數(shù)據(jù)回復(fù)發(fā)送請求的節(jié)點,因為發(fā)送請求的節(jié)點不一定是交易參與方)

2 Enclave

Enclave更像是一個接收命令處理數(shù)據(jù)的黑盒轩缤,Enclave可以以軟件形式存在也可以以硬件的形式存在命迈,無論是哪一種形式贩绕,其目的都是為了保證信息只在Enclave內(nèi)部,不會被惡意攻擊盜取壶愤。

Tessera Enclave主要的作用是進行數(shù)據(jù)的加密/解密淑倾,已經(jīng)公私鑰對的生成和管理。這就保證了在程序中有一個安全的地方可以進行數(shù)據(jù)的加密解密處理征椒,同時敏感信息不會流入程序內(nèi)存被不必要的參與方讀取娇哆。如果采用硬件Enclave,也保證程序能夠以更小的體積運行在一個安全環(huán)境中陕靠。

Enclava存儲的數(shù)據(jù):

  • 公私鑰訪問
  • 交易參與方的公鑰(這部分信息不涉及敏感數(shù)據(jù)迂尝,其實可以放到交易管理器中)
  • 默認連接節(jié)點(Tessera節(jié)點,不是Quorum)的公鑰

Enclave可以處理的請求:

  • 獲取默認連接節(jié)點(Tessera節(jié)點)的公鑰
  • 為每筆交易提供forwarding keys(推送公鑰)
  • 當前Enclave保存的所有公鑰
  • 為給定發(fā)送者和參與者的交易載荷加密
  • 為給定參與者的交易載荷加密
  • 對指定接受者/發(fā)送者的交易解密
  • 為已經(jīng)存在的交易載荷增加參與者

其實Enclave的安全性主要在于它只能同Tessera節(jié)點的交易管理器通訊剪芥,其他組件無法連接Enclave

Enclave可以和交易處理器部署在本地垄开,Enclave也可以部署在遠程,提供Restful接口税肪,交易處理器通過HTTP連接溉躲。

四、Tessera使用說明

主要包括API和command命令行益兄, 這里不做過多展開锻梳,感興趣的讀者可以自己查看Quorum官方文檔

五、從Constellation的數(shù)據(jù)遷移

Constellation和Tessera實際上起到的是同樣的作用净捅,只不過Constella是基于Haskell的程序而Tessera是基于Java開發(fā)的疑枯。

有關(guān)Constellation的具體內(nèi)容會在下一章節(jié)中介紹。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛔六,一起剝皮案震驚了整個濱河市荆永,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌国章,老刑警劉巖具钥,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異液兽,居然都是意外死亡骂删,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門四啰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宁玫,“玉大人,你說我怎么就攤上這事柑晒∏送常” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵敦迄,是天一觀的道長恋追。 經(jīng)常有香客問我凭迹,道長,這世上最難降的妖魔是什么苦囱? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任嗅绸,我火速辦了婚禮,結(jié)果婚禮上撕彤,老公的妹妹穿的比我還像新娘鱼鸠。我一直安慰自己,他們只是感情好羹铅,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布蚀狰。 她就那樣靜靜地躺著,像睡著了一般职员。 火紅的嫁衣襯著肌膚如雪麻蹋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天焊切,我揣著相機與錄音扮授,去河邊找鬼。 笑死专肪,一個胖子當著我的面吹牛刹勃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嚎尤,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼荔仁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芽死?” 一聲冷哼從身側(cè)響起乏梁,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎收奔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滓玖,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡坪哄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了势篡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翩肌。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖禁悠,靈堂內(nèi)的尸體忽然破棺而出念祭,到底是詐尸還是另有隱情,我是刑警寧澤碍侦,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布粱坤,位于F島的核電站隶糕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏站玄。R本人自食惡果不足惜枚驻,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望株旷。 院中可真熱鬧再登,春花似錦、人聲如沸晾剖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽齿尽。三九已至沽损,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雕什,已是汗流浹背缠俺。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贷岸,地道東北人壹士。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像偿警,于是被迫代替她去往敵國和親躏救。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

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