託肯衛士基於金融級安全晶片開發的區塊鏈硬體錢包

買賣虛擬貨幣
託肯衛士是基於WY1628金融級安全晶片開發的區塊鏈硬體錢包,支援BIP32,BIP39,BIP44標準。防止交易資訊被惡意軟體篡改,防止釣魚網站欺騙,保證數字資產安全。託肯錢包首先基於可證明的安全性上打造的硬體錢包來保護使用者私鑰和數字資產,它憑藉著完善的協議和架構設計,構築了安全、可信的儲存與支付基礎。同時基於託肯錢包的可擴充套件性架構,交易與支付過程不依賴於具體的區塊鏈底層技術,我們提出了一套跨鏈解決方案,本跨鏈解決方案與傳統的跨鏈技術關注資產轉移不同,我們更多關注的是鏈狀態的轉移,以及基於鏈狀態上的智慧合約的設計。
託肯錢包技術設計1.託肯錢包的安全基礎1.1 私鑰生成及儲存的安全性在區塊鏈網路中,唯一能夠證明你擁有數字資產的就是你的私鑰,一旦私鑰丟失或洩露,則你的數字資產會永遠無法找回。以上問題的出現也不能簡單的說是區塊鏈不安全,其核心還是使用者自己忽視了私鑰保護的重要性。可以這麼說,私鑰的安全保護是確保區塊鏈可信的基石。由於私鑰都是以檔案作為載體儲存在使用者自己的電腦上或被託管到某個中心伺服器上。無論是私鑰自己儲存還是被託管,被儲存私鑰檔案的電腦上往往都會執行著大量的其他程式,所以一旦出現電腦故障或程式漏洞,都有可能導致比特幣丟失,而且被託管的私鑰還要面臨著中心伺服器維護人員的道德風險,而這種丟失現象在比特幣或以太幣中發生率都比較高,甚至一下子直接丟失上萬的幣。要想做到私鑰的絕對安全,我們提出以下五個必要條件。也只有我們設計的硬體錢包對私鑰的管理具備了以下五個條件,我們才可以說,我們的錢包是絕對安全的。
(1) 私鑰及地址的生成過程是離線的,且生成的私鑰必須滿足不可重現的特徵及不可預測的特徵。(2) 私鑰的儲存是獨立的,也即私鑰的儲存或使用是一個獨立的物理單元,不依賴於其他的硬體或平臺的。(3) 私鑰的儲存單位不與其他聯網的裝置自動通訊。(4) 私鑰只對滿足特定結構的交易做簽名認證,同時對於外界系統來說,整個簽名過程對於外界來說相當於是一個黑盒子。(5) 私鑰可以安全備份,在一旦私鑰儲存的物理載體出現丟失或不可恢復的物理故障的時候,私鑰是有辦法能安全恢復的。其中第一個條件至關重要,可以這樣說,隨機數是現代密碼學的整個安全的基礎,整個系統的安全性(也即私鑰的安全性)完全依賴於隨機數序列的生成效率和質量,高質量的隨機數的核心即是“不可預測性”。在我們的硬體錢包中,我們的隨機數生成標準採用德國聯邦資訊保安辦公室給出的四個滿足密碼學安全性的隨機數生成條件:
K1,相同序列的概率非常低。K2,符合統計學的平均性,比如所有數字出現概率應該相同,能透過卡方檢驗,超長遊程長度概略非常小,任何長度的同一數字之後別的數字出現概率應該仍然相等。K3,不應該能夠從一段序列猜測出隨機數發生器的工作狀態或下一個隨機數。K4,不應該從隨機數發生器的狀態能猜測出隨機數發生器以前的工作狀態。在我們的硬體設計中,我們拋棄了“時間戳+一組特殊 ID”組合作為種子的方式,我們認為所有事先設定的隨機數種子都會給駭客們一種猜種子的可能,我們直接採集硬體裡的各種真實的熵源來作為隨機數種子的來源。高質量的隨機數生成演算法保障了我們的私鑰是不可用惡意預測且復現的。第二個條件表明只有儲存私鑰的載體是獨立的,不依賴於任何第三方硬體或平臺,私鑰才不會被駭客盜走的可能。
第三個條件保證私鑰的儲存單元不主動聯網,這一點比第二點的條件要弱一些,在正常情況下斷絕了給外界系統侵入到私鑰儲存單位的機會。在需要私鑰簽名的時候,唯一與外界通訊的通道就是輸入需要簽名的交易資訊,輸出為簽名後的資訊。基於現在密碼學裡的安全假設,僅由簽名資訊在計算資源有限的條件下,無法計算出私鑰。第四個條件是從兩個方面來說,私鑰只對滿足特定結構的交易資訊(而不是使用者構造的任意資訊)做簽名認證可以有效地抵抗選擇明文攻擊(這是一種對 ECC 演算法非常有害的攻擊方式),另外在整個簽名過程不暴露於外界,這就相當於在每次簽名時沒有洩露任何私鑰相關的直接資訊。第五個條件獨立於前面四點,主要解決在私鑰丟失(也即儲存私鑰的硬體丟失或發生不可修復性故障)如何找回的問題,託肯錢包主要透過一種經過特殊改造過的助記詞的方法來對私鑰做備份。最早的助記詞設計是由於私鑰 64 位,完全沒有可讀性,於是可以利用某種演算法將 64 位私鑰轉換成十多個常見的英文單詞,這些單詞都來源於一個固定詞庫,再根據一定的演算法來恢復出私鑰,於是助記詞成為了你的私鑰的另一個體現。1.2 簽名過程的安全性在 1.1 中我們介紹了託肯錢包在生成私鑰及儲存私鑰方面的安全性保證,但硬體錢包的安全風險還會有來自向外輸出資訊時產生,也即在做簽名計算時輸出簽名資訊時發生。因為在簽名時,所有輸入的交易資訊以及輸出的簽名資訊都是明文的,可以用任何二維碼掃描軟體來讀取的,如果在簽名計算時直接將私鑰明文形式讀取到記憶體中時,一旦出現某種複製記憶體資料的事件發生時(操作難度極大),私鑰將不再安全。
所以我們在設計相關簽名計算時,會採用經過生成的混淆的指令集來代替直接採用私鑰的做簽名計算的方式。具體就是在1.1節中生成私鑰檔案時不直接生成靜態數字型的私鑰表達,而是生成經過充分混淆的程式碼指令集代替私鑰。在對交易 hash 做私鑰簽名運算時,是直接執行混淆的指令集的方式完成,整個過程是完全在硬體的晶片中完成,理論上在簽名時杜絕了洩漏私鑰的可能性。因為攻擊者即使得到了經過混淆過的指令集,也沒有辦法能推測出具體的私鑰是什麼。在託肯錢包的設計中,我們的助記詞並不來源於任何一個固定詞庫,單詞的構造完全由使用者自由決定,理論上這樣構造的單詞有無窮多種組合。2.託肯錢包的產品工作流程2.1 託肯錢包的賬戶建立首先託肯錢包的賬戶是一個離線賬戶,在生成新賬戶的時候可直接在硬體螢幕的提示下直接操作對應的按鍵。使用者可以根據需要使用的數字貨幣型別(比如比特幣、以太幣等)選擇生成對應的私鑰和地址。
需要特別留意的是,在賬戶生成的時候需要使用者手動輸入 16 個單詞的助記詞,雖然系統提供快捷生成賬戶的的方式(理論上系統快捷方式生成的賬戶也是符合安全標準的),還是強烈建議使用者自己輸入助記詞,因為使用者的助記詞可以輸入非標準的英文單詞詞彙,理論上使用者自己輸入的助記詞具有無限的空間,能較大的提高私鑰的安全性。無論是系統快捷生成的地址還是使用者手動操作生成的地址,都需要使用者用紙抄下對應的助記詞(放到一個比較安全的環境裡),這是非常重要的,因為一旦出現硬體錢包丟失的情況,我們唯一能恢復私鑰和地址的方式就是助記詞。2.2 託肯錢包的交易(支付)發起流程

託肯錢包核心作為一個私鑰安全儲存和簽名的工具,對於完成正常數字貨幣的支付和交易功能,還需要配合 PC 端軟體或移動端 app 來使用。這裡以 PC 端的軟體來描述整個交易過程,移動端的使用情況類似。

在整個流程中,交易客戶端軟體一直是透過 USB 介面與託肯錢包傳輸資料,在交易完成後,建議 PC 端與託肯錢包斷開 USB 連線。


基於託肯錢包的跨鏈交易

1.跨鏈交易的通訊協議模型

區塊鏈之間的通訊協議與傳統的 TCP/IP 協議類似,建立可靠的連線傳遞訊息。訊息一般分為訊息頭(Header)和訊息體(Data)兩部分,其中訊息頭會記錄訊息的源、目的、長度、類別等,在訊息的傳遞過程中,訊息頭會逐層剝離、按協議要求做對應的修改,訊息最終會按訊息頭的資訊傳到目的地。整個訊息在傳遞過程中是具有狀態的,傳送方也可以根據接收方的反饋瞭解當前通訊過程中所處的狀態,並作出正確的反應。

基於對 TCP/IP 協議的原理的分析,我們也構建出一個完整的跨鏈通訊協議,我們的跨鏈通訊協議主要包括兩部分:通訊地址、通訊資料。

通訊地址包括訊息來源鏈或目的鏈的連結串列示(ChainID)和當前鏈的區塊高度(height)。通訊資料則包括了來源鏈的鏈標識(srcChainID)、目的鏈的鏈標識(dstChainID)、資料狀態(Status)、資料(Data)。其中資料在傳遞過程中是不會被開啟的。


跨鏈通訊資料狀態對應的是當前通訊狀態的機制,當一個跨鏈交易的通訊發起的時候,通訊狀態是待接收狀態,當接收方收到訊息時,會返回給傳送方一個傳送成功的狀態,接收方然後回發一個接收成功的狀態,整個過程完成一次成功的跨鏈通訊。

除了上述狀態外,我們還會規定一些如連線超時等異常狀態。比如當一筆交易從第一條鏈發往第二條鏈的時候,會指定以鏈高度為準的存活週期。在到達存活週期之前,鏈路會將通訊結果的狀態返回給第一條子鏈,若超過存活週期,則鏈路直接返回連線超時狀態給第一條子鏈。

與通常的網路通訊類似,跨鏈通訊也可能遭受網路攻擊,尤其是 DDoS 攻擊。因此,我們還需要一套驗證機制,透過設計一套複雜的通訊驗證機制,來防止鏈路上的攻擊。

前面提到,子鏈隨時向鏈路上傳送最新的區塊以及最新的區塊投票,當一筆交易從子鏈向鏈路發來的時候,會在通訊地址中體現出該交易所在的區塊的高度,我們只需要查詢在該區塊高度中是否存在著這筆交易就可以了。因為透過提交最新的區塊及其投票便可以證明一個區塊的真實性。

首先,單靠一個區塊本身是不能孤立的證明其是合法的。因為針對一個已有的區塊,我們完全可以偽造一個不合法但是符合區塊結構的假區塊。比如修改區塊資料的部分交易資訊,並修改位於區塊頭中的交易 hash 值。

在通常的區塊鏈的共識構造中,一個區塊被提議之後也往往會經過兩輪或多輪的投票來達成共識,其中在第二輪或更多輪共識的投票會被暫時存起來,並當做下一輪所生成的區塊的部分。基於此,如果子鏈一次性提交某個區塊及投票資訊後,我們便可以在一輪區塊生成周期內證明這個區塊是可信的。

作為不同子鏈之間的橋樑,我們的鏈路還需要負責維護關於子鏈的公共狀態。

首先,子鏈若希望與託肯鏈路進行通訊,則必須在託肯鏈上進行註冊,這其中包括子鏈的身份標識(chainID),子鏈上驗證節點的資訊,子鏈上的資產種類,以及子鏈的驗證機制等,以此來協助託肯鏈完成通訊轉發和驗證操作。

其次,託肯鏈需要實時收集來自子鏈的最新區塊資訊的通知。以此來維護各個子鏈的基本狀態,幫助輕客戶端來驗證從子鏈發來的交易等。

託肯鏈作為一種跨鏈技術,除了完成基本的鏈間通訊外,還必須要設計一套獨立的共識機制來驗證子鏈上獨立區塊的合法性以及鏈間交易的合法性。


2.跨鏈共識機制

2.1 區塊鏈裡的共識機制簡介

在選擇託肯鏈的共識機制前,我們先簡要回顧一下目前在區塊鏈領域常用的一些其他的共識機制。工作量證明共識(POW)是最早應用在比特幣、以太坊上的一種共識演算法。自比特幣發行至今,工作量證明演算法已經證明了其可靠性,但是它對資源的浪費也是很驚人的。

權益證明機制(POS)是一種為了解決工作量證明機制中對資源嚴重浪費問題而提出來的,它是透過投票人在投票權益池中的權益比重來代替礦工在挖礦時所消耗的算力,再配以相應的懲罰機制來確保投票人的誠信。然而,在算力和權益之間還是有非常大的區別的,透過算力,一個礦工是不太可能在兩條鏈上同時挖到礦,但是擁有一定的權益的投票人則可以對每一個可能的區塊投票,只要任何一個區塊成為將來的勝出者就可以保證自己的權益不受損,這樣也是有很大的安全隱患的,因為這樣可以大大降低作惡者所需要的作惡成本。

股份授權證明機制(DPOS)共識機制透過解耦投票權和記賬權的方式,它的原理是讓每一個持有 token 的人進行投票來產生若干位代表,我們可以把這些代表理解為超級節點,而這些超級節點彼此的權利是完全對等的。從某種角度來看,DPOS 有點像議會制度或人民代表大會制度,如果代表不能履行他們的職責,他們會被除名,網路會選出新的超級節點來取代他們。但是 DPOS 透過模擬人類的權益投票行為來產生記賬權,存在著一種中心化的趨向,而且相比工作量證明的方式來說,DPOS 的作弊行為是沒法提前預防的。

Raft 作為瑞波幣採用的共識機制,也是分散式領域一種常用的高效的共識演算法,但其最大的弊病在於不能防止拜占庭故障節點,一個擁有強大網路配置的拜占庭領導者節點會給 raft演算法帶來毀滅性打擊。

另外目前在聯盟鏈中比較常用的共識機制是實用拜占庭將軍容錯共識(PBFT),如基於 IBM的 HyperLedger Fabric 專案就是採用 PBFT 共識。PBFT 是一種狀態機副本複製演算法,即服務作為狀態機進行建模,狀態機在分散式系統的不同節點進行副本複製。每個狀態機的副本都儲存了服務的狀態,同時也實現了服務的操作,將所有副本組成的集合使用大寫字母 R來表示,使用 0 到| R | -1的整數表示每一個副本,假設系統裡有可能失效的副本個數為 f ,若滿足| R |≥3f+1,系統能滿足最終最終一致性。

2.2 託肯鏈的代理權益拜占庭將軍容錯機制

在託肯鏈中,我們的設計目的是要進行跨鏈交易,這裡與聯盟鏈的模型較為接近。而基於PBFT 的共識機制在聯盟鏈裡是非常受歡迎的,主要原因在於聯盟鏈中,節點間的網路拓撲結構相對較為穩定,節點的進入和退出頻率不會太高。不可否認的是,PBFT 中所使用的拜占庭節點容錯演算法能保證 1/3 以下拜占庭節點的網路的安全。但是在實際使用中,尤其是涉及到跨鏈交易這種與經濟利益相關時,即使驗證人是經過挑選的可靠節點,我們也不能單純的依賴於沒有懲罰機制的 1/3 的安全,這其中的獎賞與懲罰是必須與經濟利益直接相關聯的。在這裡,我們對原有的 PBFT 共識機制進行了修改,以使得驗證人投票的權重與其所抵押在託肯鏈上的代幣權益相對應。

這樣一來,原本在 PBFT 共識演算法中要求的超過 2/3 投票人才能確認生成區塊的機制被修改成超過 2/3 的總權益,此外,在 PBFT 共識演算法中,普通節點僅同步來自領導節點發來的新區塊,並不參與共識,在 PBFT 中的安全性僅僅依賴於驗證節點的數量,因此普通節點的數量的增加並不能提升拜占庭容錯的安全性。因此,我們在託肯鏈的共識機制中增加了非驗證節點的參與。一個驗證節點對應一個驗證人帳號,非驗證人可以透過將權益委託給驗證人,從而授權該驗證人代理投票的方式來獲取屬於自己的利益。

因為利益的關係的引入,在託肯鏈中,非驗證人會非常謹慎的選擇代理驗證人,從而做到了所有人都會參與到共識的行為中,而這又沒有因為所有節點的參與共識而帶來任何效率上的損失。

託肯鏈的共識機制可以用下圖來簡單表示


在託肯鏈的共識協議中,如果 Leader 是誠實者,它可以不斷地推動共識節點就新的交易達
成共識。但是,如果 Leader 是惡意節點,它可能會有意地延遲或丟棄來自其他誠實節點的訊息,並減慢協議。為了懲罰這些惡意的 Leader 節點,託肯鏈會定期透過權益委員會的投票來更改 Leader 節點。這也可以防止惡意節點在無限期的時間內延遲共識。

另外基於託肯鏈所採用委託權益的 PBFT 共識機制,我們可以非常容易打造輕錢包節點。在普通的區塊鏈客戶端中因為需要同步區塊鏈中的所有區塊資料才可以實現驗證交易,這樣的客戶端功能強大,但是由於需要儲存的資料太多導致大量的冗餘。由於託肯鏈是透過驗證人投票實現的 PBFT 演算法,我們的客戶端只需要實時同步某條區塊鏈上的最新驗證組員,就可以對該區塊鏈上的資訊進行驗證。輕客戶端只需要連續同步某區塊鏈區塊頭並更新驗證人資訊,就可以實時跟進並驗證該區塊鏈上的最新的區塊高度、世界狀態等資訊。

3.託肯鏈的隱私保護

在區塊鏈系統中,隱私性一直都是比較強的需求,特別是對於跨鏈結構來說,隱私性保護尤為重要。如果我們僅僅只是做到了保護區塊鏈的交易安全性,而對隱私性的問題避而不談,我們認為失去了保護安全性的意義了。該如何在既保護安全性的前提下,又讓隱私性得到保護呢?

目前在區塊鏈領域的隱私性解決方案主要有以下一些:

混幣方案,這也是起源自早期的基於比特幣或以太幣的混幣服務,後來在門羅幣種有使用到,其目的主要是要讓每個地址都要經過攪拌器和許多其他地址進行混合,從混幣器出來的交易,除了混幣器知道外,別人誰都不知道這個幣真實是由誰轉給誰的。

直接儲存和處理加密資料的方案,這在有些聯盟鏈中使用的比較多,只有交易的參與方才能解密資料。該方案相對較為可靠,隱私效能得到密碼學的嚴格論證,但缺點是驗證節點無法做驗證。

零知識證明,零知識證明是一個非常強大的現代密碼學工具,在零知識證明演算法中,具有私有資訊的一方在不洩露自己私密資訊的情況下,能讓驗證方正確的確認證明方的資訊是對的。不過基於 ZK-Snark 的非互動式零知識證明技巧在業界已表現出效率方面的問題。當前在一臺普通的計算機上建立一個 ZK-Snark 的零知識證明大約需要超過 90 秒的時間。另外基於ZK-Snark 演算法的延展性比較差,不能動態建立安全驗證引數,必須提前設定一些安全引數,這在實際使用中也會帶來一些問題。

環簽名方案,該方案實現了一種無條件匿名性的要求,簽名者可以自由指定自己的匿名範圍,外部攻擊者即使非法獲取了所有可能簽名者的私鑰,他也不能確定出真正的簽名者。很明顯,環簽名方式主要是透過匿名的方式來實現隱私性保護。

透過對以上主流的隱私性解決方案的分析,結合跨鏈的實際需求,託肯鏈採用環簽名的方案來保護交易的隱私性。

環簽名是一種簽名者模糊的簽名方案。在環簽名中不需要建立環,也不需要分配指定的金鑰,無法撤銷簽名者的匿名性,除非簽名者自己想暴漏身份。環簽名方案中籤名者首先選定一個臨時的簽名者集合,集合中包括簽名者自身。然後簽名者利用自己的私鑰和簽名集合中其他人的公鑰就可以獨立的產生簽名,無需他人的幫助。

環簽名沒有可信中心,對於驗證者來說,簽名人是完全正確匿名的。環簽名提供了一種匿名洩漏秘密的巧妙方法。環簽名的這種無條件匿名性在對資訊需要長期保護的一些特殊環境是非常有用的。


環簽名由以下幾部分構成:

(1) 金鑰生成。為環中每個成員產生一對金鑰對(公鑰PKi和私鑰iSK )。
(2) 簽名。簽名者用自己的私鑰和任意n個環成員(包括自己)的公鑰為訊息m生成簽名a。
(3) 簽名驗證。驗證者根據環簽名a和訊息m 驗證簽名是否為環中成員所籤,如果有效則接收,否則丟棄。

同時環簽名必須滿足以下特性:

(1) 無條件匿名性。攻擊者無法確定簽名是由環中哪個成員生成,即使在獲得環成員私鑰的情況下,概率也不會超過1/ n 。
(2) 正確性:簽名必需能被所有其他人驗證。
(3) 不可為造性:環中其他成員不能偽造真實簽名者簽名,外部攻擊者即使在獲得某個有效環簽名的基礎上,也不能為訊息 m偽造一個簽名。


4.基於託肯鏈的智慧合約

我們認為,隨著加密數字貨幣的興起,會極大的加速支付的合約化程序,因為區塊鏈作為架構在網際網路上的基礎設施,可以用智慧合約來實現信用保證、支付結算和激勵機制的完美統一。基於託肯鏈中的資產所有者和工作者,也或者叫託肯鏈中的一個成員,每一個託肯成員都是基於 P2P 的扁平式的協作關係,基於標準無差異的智慧合約參與到整個系統的安全支付通道的建設中來,同時每個成員在整個系統的安全支付通道的建設中會根據其對於的貢獻度獲取相應的回報。

智慧合約的最大的特點和優勢就是透過技術解決了信任問題。在傳統合約達成前,參與者在支付前要了解各方的信用背景和選擇合適的擔保合約。在託肯鏈上的資源是真實透明的,合約內容確定後就無法更改,執行更是不用依賴任何額外操作。

基於託肯鏈的智慧合約跟通常區塊鏈的智慧合約相比,多了一層含義,就是跨資產的特性。因為託肯鏈本身就是基於跨鏈技術來實現通用數字貨幣交易和支付體系,資產在跨鏈交易的時候,就出現更多的應用屬性。比如我們可以允許使用者在以太坊中去驗證比特幣的交易,可以實現多幣種共同完成一次採購活動等。


基於託肯錢包的支付資料模型

託肯鏈透過打造一個通用的數字貨幣支付生態,從長期來看,將會積累大量的數字貨幣支付消費相關的資料。從未來資料貨幣支付發展的角度來看,託肯鏈將利用支付的大資料來改變消費者的支付習慣。

總的來說,基於區塊鏈技術的數字貨幣支付在很多方面與傳統支付是有著相當大的區別的:區塊鏈支付的基礎是去中心化技術,交易雙方不再需要依賴一箇中心繫統來負責資金清算並儲存所有的交易資訊,而是基於一個不需要進行信任協調的共識機制直接進行價值轉移。

隨著區塊鏈支付的發展,區塊鏈分散式賬本技術將區塊鏈上的數字資產流動與現實支付相連線,區塊鏈支付在功能上非常類似於支付寶錢包,但由於其建立在去中心化的 p2p 網路基礎上,超出了國家和地域的侷限,所以在全球網際網路市場上能夠發揮出傳統金融機構無法替代的的高效率、低成本的價值傳遞作用。基於託肯錢包就可以發展成一個自金融平臺,可以用於 P2P 的支付、存款、轉賬、換匯、借貸等。


關於更多託肯衛士資訊:

更多區塊鏈專案:http://www.qukuaiwang.com.cn/news/xiangmu
風險提示:區塊鏈投資具有極大的風險,專案披露可能不完整或有欺騙。請在嘗試投資前確定自己承受以上風險的能力。區塊網只做專案介紹,專案真假和價值並未做任何稽覈。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;