韓秋月
(同濟大學軟件學院 上海市 201804)
迄今為止,區塊鏈受到了國內外眾多地區的關注,越來越多的國家政府對于區塊鏈技術在未來公共服務提供、經濟體制變革、社會生活機制優化上存在著巨大的潛在應用價值達成一致認識,并在推動區塊鏈發展方面發揮著極重要的作用。習近平在中央政治局第十八次集體學習時強調,把區塊鏈作為核心技術自主創新重要突破口,加快推動區塊鏈技術和產業創新發展。區塊鏈技術因其在金融、共享經濟、物聯網等方面存在很高的應用價值,也成功吸引了包括微軟、IBM、阿里巴巴、騰訊、摩根大通在內的國內外企業巨頭的一致關注。前不久,百度旗下百度金融正式加入Linux基金會旗下Hyperledger開源項目,成為該項目核心董事會成員。騰訊在2017年4月發布區塊鏈方案白皮書,旨在打造區塊鏈生態。阿里巴巴在2016年3月24日與普華永道達成合作,應用區塊鏈打造透明可追溯的跨境食品供應鏈。可以看出,區塊鏈已成為科技界和金融圈的熱點。
伴隨著區塊鏈的迅速發展,許多安全問題與挑戰也應運而生。近幾年,區塊鏈安全事件頻發,信息傳輸的安全、交易安全等一系列安全問題得不到妥善解決,給企業和個人造成很多安全隱患。學術界和產業界對區塊鏈系統中用戶的隱私保護技術展開了深入研究,目前來說,比較典型的對交易內容進行隱私保護方案主要有:門羅幣所采用隱秘地址與環簽名,Zcash所采用的零知識證明技術,以太坊中智能合約的執行,以及應用較為廣泛的硬件安全模塊、硬件錢包、門限數字簽名等。本文將對上述幾種主要的保護方式進行介紹。
門羅幣是一種專注于隱私保護的數字貨幣,采用多種隱私保護機制,主要有隱秘地址與環簽名。其中,為了防止外部人員從帳本中發現一筆資金的真實去向,門羅幣對交易輸出地址進行加密。在傳統的數字貨幣中,交易輸出地址的內容是接收方的公鑰信息和地址信息,觀察者可以直接發現資金的去向。在門羅幣中,輸出地址是由接收方的公鑰和發送方產生的隨機參數加密后得到的新地址信息,由于隨機參數只有發送方掌握,因此觀察者無法發現新地址信息和接收方之間的關系。通過產生不同的隨機參數,可以保證每一次交易的輸出地址都不同,并且保證這些地址之間沒有關聯。環簽名具體指的是,當用戶直接對一筆交易進行簽名時,這筆交易的來源自然就被確定是該用戶,但是如果用戶另外引進一部分交易,將自己的簽名跟這些簽名進行混合,就又得到了一個新的簽名,這樣別人就無法確定這筆交易是否是來自該用戶,只能判斷來自于那些公鑰組成的集合[1]。
零知識證明是一種證明方法,在證明者不向驗證者泄露任何有效信息的情況下,使得驗證者相信某個論斷是正確的。Zcash是分布式匿名支付方案Zerocash的一種實現[2],是一種去中心化、開源的加密互聯網貨幣,支撐Zcash是名為zk-SNARK的零知識證明技術。隨著區塊鏈的發展,越來越多區塊鏈系統都開始引入零知識證明技術作為安全保護技術。下面以基于分解離散對數困難性的零知識證明為例,簡單介紹該種保護技術,其中涉及到一些代數學基礎,在此不作詳細說明。
基于公共參數(G,g,h),哈希函數H(x),以及證明者的私有參數w,且h=gw,我們構造出零知識證明∏DL,證明了在無證書的情況下,其擁有和公鑰gw對應的私鑰w,具體過程如下:
驗證者選取隨機數e并發送給證明者;
關于正確性,在正常情形下有:
G為q階循環群,正常情形下有:

關于安全性,針對P與V交互過程中可能泄露的傳遞值,給出安全性分析:
其中,H(x)為哈希函數不可逆推,在已知H(x)的情況下,無法推出x的值,也就無法推出r的值;y=r-we(mod q)中,在已知y,e,q的情況下,由于P隨機選取的私有參數r未公開,其他人仍然無法推出r,w。
經歷了以比特幣應用為代表的區塊鏈1.0時代,目前已經進入了以智能合約為標志的區塊鏈2.0時代[3]。以太坊是第一個也是目前全球最活躍的區塊鏈2.0公有鏈,市值超過10億美元。以太坊定位于區塊鏈應用平臺,在這個平臺上,可以發布各種智能合約,并能與其他外部IT系統進行數據交互和處理,從而實現各種行業應用。區塊鏈2.0 因為支持完整的程序運行,可以通過智能合約對發送和接收的信息進行自定義加密和解密,從而達到保護企業和用戶隱私的目的。以太坊采用五層架構實現,從下到上分別是數據層、網絡層、共識層、激勵層、智能合約層。數據層是以太坊最底層的機構,主要實現了相關數據的存儲以及賬戶和交易的安全與實現;網絡層只要實現網絡節點的連接和通信,無中心服務器,依靠用戶群交換信息的互聯網體系。共識層主要實現全網所有節點對交易和數據達成一致,以太坊采用兩種共識機制,初期采用工作量證明機制,待網絡中的以太幣充分流通和分散后,改為采用交易速度更快、無資源消耗的權益證明機制;激勵層主要實現以太幣的發行和分配機制,運行智能合約和發送交易都需要向礦工支付一定的以太幣;智能合約層賦予賬本可編程的特性,區塊鏈2.0通過虛擬機的方式運行代碼實現智能合約的功能,如以太坊虛擬機。同時,這一層通 過在智能合約上添加能夠與用戶交互的前臺界面,形成去中心化的應用[3]。
智能合約是部署在區塊鏈的代碼,區塊鏈本身不能執行代碼,代碼的執行是每個節點在本地通過以太坊虛擬機實現的。以太坊的每個節點都會運行虛擬機,它不僅能夠執行代碼,還可以讀寫區塊中可執行的代碼和數據,校驗數據簽名等。部署在區塊鏈上的智能合約段能夠在本地產生原智能合約代碼的數據串,客戶端通過發起一筆交易,告訴以太坊節點需要調用的函數及相關參數,所有的以太坊節點都會接收到這筆交易,然后從區塊鏈這個數據庫中讀取存儲的智能合約運行代碼,運行出結果,節點運行智能合約的結果將與其他以太坊節點進行對比,最后確認無誤后,才將結果寫入到區塊鏈中,從而實現智能合約的正確執行。總地來說,以太坊能夠讓毫無任何關系的節點互相信任,并達成共識,而不需要任何權威機構作為中介,通過智能合約處理各種事務,減少了人為干預的風險,起到安全保護的作用。
硬件安全模塊(Hardware Security Module,簡稱HSM)是一種能夠安全地生成和存儲密鑰的計算機硬件設備。HSM設備可以通過多種方式用于區塊鏈,利用這種既定的硬件技術來保護密鑰。整體概括起來,HSM主要可通過以下幾種方式來提升區塊鏈系統的安全性:
(1)私鑰的安全存儲 :這是HSM最基本也是最重要的一種功能,在公有區塊鏈中,一旦私鑰遭到泄露,竊取私鑰者可以代表私鑰所有者做任何事情,通過HSM實現私鑰的安全存儲,對于區塊鏈系統來說具有重要意義。
(2)簽署并驗證交易 :用戶通過HSM在區塊鏈系統中簽署交易,并驗證交易的合法性。
(3)加密,解密和使用密鑰數據庫中的密鑰記錄 :在實際應用中,需要使用密鑰數據庫來存儲大量的密鑰。HSM可以接收加密密鑰并在安全環境中使用它來使用它。
硬件錢包作為一種較為安全的手段,廣泛應用于區塊鏈保護技術中。硬件錢包使得用戶的私鑰與聯網的設備相互隔離開來,令私鑰處于離線的環境中,以此保護私鑰的安全。下面介紹幾種近年來,在區塊鏈領域應用比較多的幾種硬件錢包:
Ledger Nano S 是法國加密貨幣硬件錢包公司Ledger于2016年8月推出的設備,該數字錢包支持包括比特幣,以太坊,瑞波幣在內的等數百種加密貨幣,內設安全芯片來保證私鑰的功能。該設備具有很強的易用性,通過USB連接線與電腦相連接。當用戶使用該數字錢包時,將錢包綁定在chrome瀏覽器的插件上,通過點擊按鈕來輸入 PIN碼并簽署交易,Nano S還配置了顯示屏,用于 PIN 碼驗證、種子修復、發送確認等功能,在市面上很受歡迎。
CoolWallet S由CoolBitX公司推出的,全球第一個專為移動裝置設計的硬件錢包,可以通過藍牙與手機app連接,一定程度上避免了聯網帶來的安全威脅。其內部可以存儲多種加密貨幣,重量輕巧,耐折并且完全防水,便于攜帶,成為很多知名人士的首選。
KeepKey是美國KeepKey公司推出的一種用于加密數字貨幣存儲的硬件錢包,在使用過程中,用戶的私鑰永久存儲與Keepkey上。KeepKey采用獨特的恢復機制防止設備丟失或損壞,該機制使得用戶只需使用初始設置時生成的12個恢復單詞就可以恢復設備,除此之外,用戶還可以選擇額外的短語附加在恢復單詞里。由此,KeepKey提供了簡單、安全的硬件錢包解決方案。
Trezor是SatoshiLabs公司推出的硬件錢包,使用過程中,通過USB連接到電腦進而進行數字貨幣交易,操作便捷易懂。Trezor設有恢復備份功能,當用戶的設備丟失的時候,用戶可以使用自身設置的密語來快速重新獲得密鑰、比特幣資金、歷史記錄等。此外,Trezor的還有一個特點是開源,任何人都可以審查代碼其中的漏洞。
一個(n,t)門限數字簽名方案是一種將簽名能力分發給n個簽名者的協議,方案的參數t為隱私門限,即使攻擊者控制了t個玩家,也不能偽造出一條合法的簽名;若想恢復某個合法簽名,至少需要t+1個玩家的協作。由于比特幣、以太坊等熱門的加密貨幣大多使用橢圓曲線數字簽名算法(ECDSA),因此近年來出現了大量的門限ECDSA方案[4, 5]來保護區塊鏈中的私鑰,在此不作詳細說明。
區塊鏈技術是一種全新的去中心化基礎架構與分布式計算范式,正在逐步應用于各個領域當中。對區塊鏈系統中用戶隱私的進行保護是區塊鏈系統安全運行的關鍵所在。近年來已出現多種區塊鏈安全保護技術,隨著區塊鏈技術的不斷發展,提高已有保護技術安全性以及研發新的保護技術是大勢所趨。