BOX(Enterprise Token Safe Box)是一個企業級數字資產保險柜應用,它利用區塊鏈、密碼學、通信安全等領域的公理性技術對各類數字資產的私鑰、操作指令進行保護,從原理上解決了私鑰、指令的盜取、篡改等問題。
設計思想
BOX是一套企業自主擁有的數字資產銀行系統。通過BOX系統統一管理企業所擁有的各類數字資產錢包做到集中管理,通過將私鑰加密運行在內存中的方式讓其永不暴露,通過企業自主擁有的私有區塊鏈網絡保證操作指令和資產數據的存證和驗真,通過順序性私鑰簽名方式構建企業訂制化資產管理業務流,通過 SSL/TLS 加密保證通信通道的絕對安全。BOX 從原理上做到了防范外部黑客、內部黑客、單人誤操作等當前個人錢包普遍存在的漏洞,同時,BOX 具有入侵鎖死、系統重置等安全機制,以此保證企業數字資產的高安全性。
私鏈節點數量為 2n+1(n≥1),私鑰 APP 數量最少為 3 個,具體數量由各企業內部自主定制,簽名機是一***立的物理服務器,應用服務器為云端服務器,不會與簽名機有任何通信,簽名機僅能夠與私鏈通信,僅有簽名機才能向熱錢包發出轉賬指令,員工 APP 為轉賬指令發起方,管理 APP 執行審批。
BOX系統可以接入所有支持離線簽名的數字貨幣。首次發行版將接入以太坊及 ERC20 代幣。在未來的版本中,將陸續接入其他幣種。
私鑰安全機制
1. 私鑰的存儲
私鑰儲存在簽名機的內存中,不會做持久化存儲。在極端情況簽名機被入侵之后,入侵者很難在短時間內尋找到私鑰,大大降低私鑰暴露的風險。
簽名機是一***立存放的服務器,建議存放在安全級別非常高的地點,例如金融級機房、企業自己控制的高安全性機房、某個私密地點。該簽名機需要有 24 小時不間斷供電和網絡接入及固定 IP 地址,該簽名機應該不能輕易地被任何人接近和操作,包括企業的 IT 主管人員。
企業的數字資產實際存儲在各個數字貨幣公鏈上(本文內指代為“熱錢包”),如果該數字貨幣的官方錢包支持離線簽名,則私鑰可以被存儲在簽名機的內存中,通過離線簽名實現在不暴露私鑰的前提下,完成確權并轉賬。
2. 私鑰的生成
為了防止私鑰的生成被模擬,我們采用 RFC6979 協議的變形形式:k= SHA256(d + SHA256(m1) + SHA256(m2) + SHA256(m3) + … ), d 為服務器隨機數,m 為私鑰 APP 輸入的關鍵句。私鑰的生成由三個私鑰 APP分別輸入關鍵句的方式生成,關鍵句是由任意的字母和數字組合而成的字符串。三個或多個私鑰 APP 依次輸入關鍵句后,由三個關鍵句生成的私鑰即被存放在簽名機的內存中,同時由此私鑰生成的公鑰地址將被注冊在公鏈上,即生成公鏈熱錢包。私鑰 APP不會存儲該關鍵句,該私鑰 APP的源代碼也將同步開源。
私鑰 APP的所有傳輸過程都需要雙向認證,私鑰 APP的授權方式為限制分發方式,即服務器分發的證書只有 N 個(N 為私鑰 APP 的個數),并且會將證書與其設備 ID 綁定,其他的連接請求都會被拒絕。
如果私鑰 APP丟失,因為 APP里并不記錄任何關鍵句和密碼,所以沒有安全風險。擁有關鍵句的控制人可以重新安裝私鑰 APP,并使用原關鍵句重新獲取服務器證書,然后簽名機重新綁定新的私鑰 APP 的設備 ID。
3. 私鑰的恢復
由于簽名機一旦停機,內存中的私鑰會立即消失,所以當簽名機需要重啟時,需要所有私鑰 APP重新輸入正確的關鍵句。如果某個私鑰 APP持有人無法輸入正確的關鍵句,此時需要啟用私鑰關鍵句的冷備份,由于此流程屬于實際企業管理流程,本文僅給出冷備份的建議方案。
私鏈
1. 私鏈的作用及優勢
私鏈在整個BOX系統中起到存證和驗真的作用。利用區塊鏈的不可篡改的特性,將審批流程和轉賬審批流程上鏈保存,為程序實現轉賬自動化提供可靠依據。BOX系統首次發行版本采用以太坊搭建私鏈,未來計劃支持更多的搭建私鏈的方案。
在企業內部部署一套私鏈,企業不僅獲得一套存證和驗真的系統,而且可以獨立自主控制其全部節點,通過設置節點參數,來控制每個區塊最大可打包交易數量、出塊時間間隔和參與節點的數量。這些參數決定了單位出塊時間窗口內,可以接受的交易筆數——即審批流轉處理的吞吐量。
由于是私鏈,使得gas消耗可以忽略不計,同時對上層應用弱化gasPrice 的消耗,使得在區塊鏈上驅使合約的代價降低。
私鏈采用PoA(Proof of Authority)共識機制,直接指定哪些私鏈節點擁有記賬權限,沒有記賬權限的節點將作為備份節點存在。
2. 伴生程序
伴生程序就是以太坊 DAPP。每個私鏈節點都會配備同一個伴生程序,被用于處理傳統的 CS(客戶端-服務器)應用程序請求、處理數據上傳私鏈、執行智能合約、監聽智能合約事件、發送狀態通知、協調上層應用和授權服務之間的交互等功能。
伴生程序之間是對等的,且只與處于同一臺服務器上的私鏈節點通信。伴生程序之間沒有直接的網絡連通。每個伴生程序都會對應一個私鏈的賬戶,該賬戶用以執行智能合約的方法。
伴生程序協調接入層與授權層之間的交互。發生一筆轉賬交易要經過以下四個過程:1.發起交易;2.服務受理;3.交易成功;4.通知結果。我們將這四個過程劃分為四個象限,如下圖所示。伴生程序處于私鏈層這一象限維度,通過將數據上鏈實現對現實中的轉賬交易進行存證和驗真,同時將成功的結果通知到簽名機,由簽名機根據最終結果操作公鏈資金賬戶。伴生程序隔離了交易發起者與公鏈資金賬戶之間的直接關聯,整個過程由程序根據審批流自動執行。
3. 智能合約的共識機制
上鏈存證的數據存放在智能合約內。智能合約采取投票的方式來確認一筆上鏈存證的數據,每一筆數據都必須通過 51%的私鏈節點投票,且每次投票的內容一致才被確認為有效存證。每個節點分別對應一個操作同一合約的賬戶,除非超過 50%的節點被全部攻陷,否則上鏈存證的數據是可以被保證有效的。
智能合約投票系統需要分配合理的權限給正確的賬戶。所有私鏈賬戶在私鏈搭建完成后即被確定下來。當需要增加私鏈節點時,必須由所有私鏈賬戶授權新帳號,系統將自動重新平衡 51%策略,無須重新部署新合約來適應其變化。
存證的數據分為審核流程和轉賬申請。如下圖所示:在提現之前,需要設置審核流程;審核流程用于確定企業內部在使用數字貨幣時需要參與審核的部門,參與審核的部門需要多少人確認;審核流程需要由掌握企業管理最高權限的所有私鑰 APP 來授權;授權過后的審核流程可以用來發起轉賬申請。
接入層
接入層采用權力離散式的構架方式。
整個系統的權力被離散在了各個 APP 端,接入層服務器雖然承擔了各種業務的轉承并合,但是卻對信息所行使的權利無法修改和執行。權力離散式的實現,依賴于基礎算法 ECDSA( Elliptic Curve Digital Signature Algorithm )。 算法中 ECC(Elliptic curve cryptography)則采用比特幣經典曲線 secp256K1。
轉賬過程為:由員工 APP 和管理 APP 產生簽名,然后在接入層完成轉移,并在私鏈層得到確認,最后簽名機在公鏈上進行實施。
接入層業務分為兩大部分:1、審批流的構建和修改。 2、審批流的執行。
1. 審批流的構建和修改
在執行轉賬前需要先構建企業轉賬審批流,該審批流為多級審核模型,最底層為員工管理組,其上可以有多級審核,每級審核可以有多個審核人,需要指定最小審核人數。
舉例說明,企業審批流如下圖所示:
當企業確認了審批流,則可以通過管理 APP 錄入系統,構建成系統可識別的協議格式,該協議格式在 BOX 系統中被命名為 boxflow。
boxflow 建立完成之后為未授權狀態,如果需要授權,則轉交給接入層,接入層檢查格式并哈希上私鏈,由私鏈所有節點投票存證,存證后通知簽名機。由私鑰 APP 授權簽名機將審批流哈希寫入公鏈,公鏈確認后,將私鏈上審批流的哈希狀態設置為有效,則 boxflow 授權成功(關于私鑰APP 的安全性及重要性,見私鑰安全和指令安全章節),企業可以通過該boxflow 進行轉賬。
boxflow 的修改流程需要私鑰 APP 先取消當前 boxflow 的授權,再重新建立 boxflow。
2. 審批流的執行
當 boxflow 授權成功后,需要先建立員工賬號,才能進行基于該boxflow 的審批流轉賬。
在 BOX 系統里員工賬號由員工管理組分配公私鑰。當 boxflow 授權成功后,員工 APP 將獲取到當前 boxflow,員工選擇員工管理組申請私鑰,員工管理組衍生出子私鑰,分配給該申請員工 APP。
員工 APP 獲取私鑰后,可以發起轉賬申請。申請格式如下:
{ balance: 100E18,
timestamp: 1512719484736,
destination: ‘0x6E9483f00cCd685c5F12709Fd542Da1FB20c4d2e’,
miner: E16,
currency: ‘ETH’,
applicant:
{ username: ‘bluce’} }
此時生成的申請為未簽名狀態,需要將該申請使用 SHA256 算法進行哈希,并將哈希簽名放入申請中,格式如下:
{ balance: 100E18,
timestamp: 1512719484736,
destination: ‘0x6E9483f00cCd685c5F12709Fd542Da1FB20c4d2e’,
miner: E16,
currency: ‘ETH’,
applicant:
{ username: ‘bluce’,
sign:
‘474w3zgKRLwaddG6LadzKQ3ut1JyQUc4HpVLkydR6xdk2TwS7zEXKf4E5AyGH
xQkfLYxJsccxhqdY5Qm5352P2H4’ } }
該員工的申請,只能由其對應的員工管理組賬號審核。
員工管理組審核通過后,對申請(包括簽名)進行哈希并簽名。簽名完成后交給上級審核人進行審核,上級審核人對下級簽名信息驗證后,對哈希進行簽名。以此類推直至最上層審核人簽名完成。
最后生成的轉賬審核流視為一次記賬,稱之為 transbox。
該 transbox 哈希后為該次交易的交易 ID,當接入層收到 transbox 并校驗其匹配對應的 boxflow 后,將交易 ID(哈希)進行上私鏈存證。私鏈通過投票確認交易 ID 后通知簽名機進行驗證和簽名。
簽名機收到原始信息后,從 transbox 中提取 boxflow 并在賬戶里驗證是否合法,然后依次檢驗簽名是否完整, 驗證通過 后說明為合法transbox,進行公鏈轉賬,并將公鏈交易 ID 上私鏈存證。接入層可以根據交易 ID 在公鏈上實時查詢結果。
3. 多審批流的支持
在第一個公開發行版本中,BOX 僅支持單一審批流,在后續升級版本中,將支持多審批流。
審批流安全機制
自動化轉賬的安全有兩個重要部分,其一是私鑰本身的安全(已在私鑰安全性章節中闡述),其二是使用權(審批流)的安全。
1. 審批流的有效性
一個合法的審批流需要經過私鏈存證、私鑰 APP 授權和公鏈確認。由于私鑰 APP 是由 N 位企業管理人員掌控,因此審批流是否有效是由 N 位企業管理人員共同確認,并且寫進公鏈私鏈,該審批流有效性無法篡改。
2. 轉賬的生成
轉賬由員工 APP 發起并簽名,經過員工管理組及各層審核人員依次驗證無誤后簽名,轉賬即生成。因為公私鑰只有 APP 上存在,其他任何人在傳輸的過程中都無法篡改轉賬信息。
3. 轉賬的有效性
轉賬的有效性分為兩個部分,其一是本身簽名的有效性,其二是其對應的審批流的有效性。由于 BOX 采用的是嵌套簽名的方法,因此只需要按照順序依次驗證簽名,即可知道簽名本身是否有效。轉賬本身是對應一個審批流,需要提取對應的審批流,并在賬戶中驗證該審批流是否有效。如果兩個條件均滿足,證明該次轉賬是由有效審批流指定的 APP 確認的,并且是無法篡改的。
通信安全機制
1. 簽名機與私鏈的通信
簽名機即授權層中的服務所在的服務器。簽名機與私鏈的通信即授權層的服務與私鏈層服務之間的通信。服務與服務之間的通信使用 gRPC +SSL/TLS 雙向證書認證。gRPC 是一個高性能 RPC 框架,基于 HTTP/2 協議標準設計,基于 ProtoBuf(Protocol Buffers)序列化協議開發,HTTP/2 協議標準本身要求對數據進行加密傳輸(SSL/TLS)。BOX 系統將針對所有公鏈開發授權服務模塊。由于 SSL/TLS 雙向認證證書的存在,將極大程度保證信息安全,服務器之間一旦有異常連接就會立即拒絕請求,可以防止中間人攻擊的風險。
2. 員工 APP 與接入層的通信
所有與接入層通信的 APP,都采用 HTTPS 的方式。員工簽名用的私鑰是通過管理 APP 頒發的。處理步驟如下:
A) 管理 APP 生成員工私鑰,并生成對稱加密用的隨機數密碼;
B) 管理 APP 用密碼以對稱加密的方式將員工私鑰加密;
C) 管理 APP 通過線下方式將密碼告知員工;
D) 管理 APP 將加密后的員工私鑰發送給接入層暫存;
E) 員工 APP 從接入層下載加密數據并用給定密碼解密。
3. 接入層與私鏈節點的通信
接入層與私鏈之間屬于內部通信,采用 TCP/IP 協議連接。此時接入層傳遞到私鏈的數據已經經過了簽名授權,并產生了信息摘要,私鏈只需要使用簽名校驗程序對其驗真,如果校驗失敗,拒絕服務。接入層向所有私鏈節點發送請求,每個私鏈節點對應一個帳號,每個帳號將驗證后的請求數據以投票機制上鏈存證,私鏈上的智能合約被超過 50%帳號確認之后,數據上鏈成功。接入層提供簽名和摘要供私鏈確認,私鏈通過投票向接入層提供投票結果。以上過程可以歸納為兩個公式:
signature = sign(hash)
public key == recover(hash, signature)
私鑰的冷備份
為了防止某個私鑰 APP 持有人的意外情況導致私鑰無法重置,我們建議將所有關鍵詞進行物理備份。例如在每個私鑰 APP 持有人輸入關鍵詞后,私鑰 APP 所運行的手機可以連接一臺不聯網的迷你型打印機,采用打印的方式將該關鍵詞自動以二維碼的方式打印到紙條上,并且將打印兩份,所有關鍵詞紙條將被分為兩份,封存在兩個信封內,建議企業將此迷你打印機與兩份關鍵詞備份件分別存放于兩家銀行保險箱中,保險箱的其中一把鑰匙可以委托給企業律師持有,并約定僅允許在企業董事會決議的同意下才可以啟封此備份。
關于加密令牌 BOX 的分發
1. 令牌分發簡介
2. 分發比例及組成
3. 經濟模型
BOX 作為一種 BaaS(Blockchain as a Service)解決方案,將以ERC20 代幣 BOX Token(縮寫符號為 BOX)作為 BOX 系統的價值中介及社區中的投票權。BOX Token 總量 1 億枚,永不增發。
BOX 系統將會全部開源,任何組織和個人均可以無償部署并使用該系統,對項目團隊有增值服務的需求時可以使用 BOX Token 購買官方的技術支持服務,服務的價格會依市場供需關系動態調整。
團隊收取的 BOX Token 將會鎖定,在每年的 12 月 26 日 UTC 倫敦時間 00:00:00 釋放,釋放方式為定向出售,價格為釋放開啟時間之前的最近7 日均價的 90%,所獲取資金全部用于團隊發展運營使用。
BOX 開源社區中的代碼更新、選舉、網絡參數變更等投票權重取決于錢包地址中 BOX Token 的數量。
評論
查看更多