區塊鏈是技術集大成者的創新應用,在區塊鏈上,你可以看到密碼學,博弈論,共識理論等等眾多的技術應用,而密碼學則是區塊鏈技術的核心之一,區塊鏈使用公私鑰體系來界定資產的所有權,所以私鑰的應用和安全性是重中之重,又因為區塊鏈去中心化的特性,如果使用者的私鑰丟失,則意味著資產丟失,不存在中心化機構可以幫忙找回這樣的路徑。
而每一條區塊鏈都是一個與外界隔離的自執行系統,金鑰是區塊鏈系統唯一與外界弱關聯的渠道。不同區塊鏈系統的自定義金鑰使用與管理模式不僅給使用者使用區塊鏈帶來了複雜性而且也為鏈與鏈之間的身份互動帶來了難度。導致使用者在管理不同鏈上的資產時,需要管理不同型別的私鑰,增加了複雜度,也容易造成安全問題(丟失,洩露等等)。
因此,比原鏈基金會和其他的一些技術夥伴在電子標準院的協助下,組織起人馬,針對相關技術展開了深入研究,並提出了標準草案。
其中,IEEE標準Standard for Blockchain Identity Key Management Requirements已經立項,我們作為該標準工作組發起組織,將針對該標準進行一些介紹。
私鑰的管理維度
在區塊鏈系統中,大多采用 私鑰 -> 公鑰 -> 地址,這樣逐級生成的方案,使用者使用地址來暴露對外的收款地址,私鑰多用於交易簽名。 不論是地址還是公鑰,最後都可以由私鑰進行推導得出,我們一般關心以下的幾點:
1)金鑰的生成方法;
2)金鑰儲存模式;
3)多層分級的私鑰派生規則;
4)多密碼學公鑰對應協議;
5)和金鑰地址轉換規則制定標準。
金鑰生成和派生
在區塊鏈中私鑰在本質上是一個隨機數,關鍵的問題就在於如何安全的生成這個隨機數。比特幣軟體使用作業系統底層的隨機數生成器來產生256位的熵(隨機性)。
一般都建議使用成熟的密碼學庫來生成隨機數,因為經受過大量密碼學專家的驗證,不要自己造輪子,其安全性完全得不到保障。
公鑰是透過從私鑰計算得到的,在區塊鏈領域大多都採用橢圓曲線,橢圓曲線是一個不可逆的過程,無法從公鑰推得私鑰,從而保證私鑰的安全性。比特幣協議使用Secp256k1.比原鏈協議使用ED25519.
在金鑰生成中,比特幣遵從的是BIP32協議,而以太坊目前官方錢包採用 KDF 的形式,也就是我們常說的 Keystore 的形式。
BIP32協議
BIP32協議是比特幣使用的金鑰生成協議。使用者可以透過一個隨機種子生成一個擴充套件私鑰,然後透過這個擴充套件私鑰生成N多私鑰、公鑰對和N多子擴充套件私鑰。定義了分層確定性錢包(或“HD錢包”)
分層確定性錢包——由一個種子生成擴充套件金鑰(私鑰,鏈碼),擴充套件金鑰可以生成多個金鑰對還可以生成多個字擴充套件金鑰
私鑰的儲存
私鑰的儲存和使用一般分為軟實現和硬實現。
軟實現即儲存和使用都以軟體形式。金鑰生成後作為檔案或字串儲存在使用者終端或者託管到伺服器,使用時直接或透過簡單的口令控制讀取到私鑰明文到記憶體,透過CPU完成私鑰計算。這種儲存和使用方式顯然有很多安全風險,容易被駭客或內鬼複製、竊取、暴力破解等。
硬實現一般是依託專用密碼安全晶片或者密碼裝置作為載體,一般有物理保護、敏感資料保護、金鑰保護等機制,確保私鑰必須由專用硬體產生。在任何時間、任何情況下,私鑰均不能以明文形式出現在密碼裝置外;密碼裝置內部儲存的金鑰應具備有效的金鑰保護機制,防止解剖、探測和非法讀取。私鑰不可匯出,僅可計算輸出簽名值。比如金融領域常見的U盾(UKEY)、金融IC卡、加密機等均屬於此類方式。
標準的工作
針對上述較為混亂的方案和未經統一的標準,我們提出了當下的這個針對身份的私鑰管理系統標準,將從以下幾個方面開展工作:
1)支援多種非對稱密碼學的金鑰生成模式與儲存模式的規範:使用一個隨機數種子對應生成不同鏈不同密碼演算法的金鑰,比如RSA演算法,橢圓曲線ED25519.國密演算法等等,同時對隨機種子採取特定的對稱加密演算法進行加密儲存,規定相關的加密引數。
2)將根金鑰在不同密碼學的區塊鏈系統上使用的多層分級賬戶的派生與使用規範:針對不同的鏈統一規範的密碼派生方法。
3)不同密碼學生成的公鑰/地址進行相互身份錨定的協議規範:透過不同鏈的私鑰加密進行自證,確定多條鏈上的公私鑰對應同一身份。
該標準適用於:
1)為計劃使用區塊鏈和分散式賬本技術的組織建設區塊鏈和分散式賬本系統提供金鑰的使用與管理參考;
2)指導區塊鏈和分散式賬本服務提供組織建立區塊鏈和分散式賬本系統金鑰管理模組;
3)為區塊鏈和分散式賬本系統建設過程的中介軟體服務組織提供金鑰管理參考。
遵循本標準,可以達到如下的目的:
1)降低金鑰管理難度
區塊鏈的使用者可以使用一把私鑰在不同的鏈控制多個不同的賬戶/地址,降低使用者使用/管理金鑰的難度。
2)降低差異,打破孤島
在任意遵循標準的鏈上建立的金鑰可以直接在所有其他遵循標準的鏈上使用,減少區塊鏈專案金鑰管理模組的差異性。 比如遵循該標準的錢包A和錢包B,使用者只需要掌控一把私鑰,即可無縫切換兩個錢包,無需再管理兩套助記詞或者Keystore
3)打通身份證明
區塊鏈使用者可以在不同密碼學的多條鏈上證明身份的唯一性,為去中心化身份認證提供底層支援。當前因為金鑰管理的割裂,使用者在各條鏈上的身份無法打通,無法證明多個私鑰歸屬於一個使用者,從而為身份識別增加了障礙,透過遵循該標準,使用者只需一把私鑰即可管理多個鏈上資產,從而更好的對使用者的身份進行識別。
關於比原鏈基金會
在新加坡會計與企業發展局(ACRA)的批准下,比原鏈基金於2017年8月10日在新加坡註冊成立,比原鏈基金會屬於非盈利性基金會。負責規範管理比原鏈技術開發和應用開發,宣傳推廣比原鏈品牌等。比原鏈基金會牽頭成立區塊鏈身份金鑰管理規範工作組,並提出了一項能夠在不同的鏈上透過遵循該標準的金鑰管理方式來識別使用者身份的新標準。