比特幣的加密技術終將被破解

2019-09-16     東音社


區塊鏈與密碼、數字簽名、哈希函數等加密技術息息相關,對安全加密技術的要求較高。無論是加密技術,還是加密通信協議,攻擊者一直在提高攻擊手段,加密技術的安全性隨著時間的流逝不斷降低。即使最初區塊鏈使用了安全加密技術,經過一段時間後,加密技術也會不堪一擊,隨時可能成為攻擊的對象。

以比特幣的簽名方式為例,現有的ECDSA(密鑰長度256位)和哈希函數SHA-256技術至少會使用到2030年以後,而比特幣的新幣發行至少持續到2140年,之後作為貨幣繼續使用的可能性也很大。

NationalInstitute of Standards and Technology, SP 800-57 Part 1 Rev. 4, Recommendationfor Key Management, Part 1: General. , NIST, 2016.

區塊鏈技術長期使用後,外界對簽名方式、哈希函數的攻擊也愈演愈烈。在威脅到來之前,我們需要及時更新簽名方式和哈希函數。這兩種技術應用在區塊鏈的各個角落,需要逐一進行考量。本章以比特幣模型為範例,介紹交易中的數字簽名技術、哈希鏈使用的哈希函數技術,並具體介紹了兩種技術的轉移方法。

數字簽名與哈希鏈的作用


如表10-1所示,數字簽名與哈希鏈的作用各不相同,在安全受到威脅和技術轉移時,它們的應對方法也有所不同。



表10-1 數字簽名與哈希鏈的功能和威脅

更新數字簽名技術是未來交易的保護傘,而升級哈希鏈技術是交易和區塊記錄的有力保障。下面我們將依次介紹數字簽名、哈希鏈的轉移問題。

數字簽名轉移面臨的課題


在交易過程中,如果數字簽名技術不堪一擊,攻擊者甚至不用竊取簽名密鑰也可以順利猜出密碼。一旦這種攻擊成為現實,就算用戶安全保管簽名密鑰,也將變得毫無意義。在這種事態發生前,我們必須及時改變簽名方式,或者增加密鑰長度。

區塊鏈的系統軟體、管理簽名密鑰的軟硬體(如錢包等)需要與更新後的簽名方式、密鑰長度一一對應。不過,升級簽名方式和密鑰後,系統運行的負荷加大,交易增多,區塊變大,可能會影響區塊鏈的擴展性。

用戶使用軟體生成新的簽名密鑰後,需要重新將密鑰與加密貨幣關聯起來。很多用戶可能會錯過升級簽名密鑰,或者根本沒有意識到事情的重要性,從而繼續使用原密碼,面臨巨大風險。

為了幫助這些用戶,區塊鏈、錢包軟體以及各種硬體和業界社區論壇應當提供適當指導。



《拷問區塊鏈》

哈希鏈安全性降低的風險


下面我們來了解一下哈希函數轉移對哈希鏈的影響。哈希鏈的升級將波及整個網絡,所以一定要格外慎重。

區塊鏈使用了數字簽名生成(簽名運算前的處理)技術、交易和簽名密鑰(匹配的驗證密鑰)ID和簽名密鑰的生成技術,交易的哈希樹、區塊的哈希鏈等都使用了哈希函數。

在原來數據的基礎上,哈希函數生成新的數值(哈希值),一般來說,主要具有以下特徵:

・同一數據得出同一哈希值,不同數據得出不同哈希值。

·無法從哈希值推導原始數據。

以比特幣使用的SHA-256哈希函數為例,只要輸入數據即可得到256位(32位元組)的固定長度哈希值。人們無須比較數據大小,根據哈希值就可以判斷數據的同一性,哈希值也是數據檢索的關鍵。哈希函數具有安全性和高效性等特點,除了區塊鏈技術外,其在多個領域都有廣泛的應用。

工作量證明(POW)利用了哈希函數的上述特徵,前提是為獲得小於某個數值的哈希值,用戶不得不進行大量計算。

哈希函數可以防止人們篡改數據,安全可靠。安全的哈希函數具有原像計算困難性、第二原像計算困難性、衝突困難性等諸多特性。對於每一個特性來說,當安全性降低時,系統面臨的威脅各不相同,譬如可以從哈希值推測原數據,或者輸入不同的數據卻生成了同一哈希值等。如果出現不同數據生成統一哈希值的情況,作為確認數據一致性的重要手段,哈希函數就失去了可信性。

對區塊鏈來說,其安全性降低後,攻擊者可能都不用修改交易的哈希樹和區塊的哈希鏈,就可以直接篡改交易記錄或區塊(考察篡改交易數據時,如果交易之間存在關聯,如數字簽名的連鎖等,需要將這種關係納入考慮)。

如果這些假設成立,區塊鏈歷經時間錘鍊、成功保持不變的優勢就會大打折扣。在哈希函數變脆弱,以上威脅成為現實之前,我們需要先行升級原有的哈希函數。

哈希函數的轉移線索——長期簽名技術


以比特幣為例,圖10-1簡要介紹了從交易開始到哈希鏈生成的過程。經過多重哈希函數處理,其實每個環節都有可能出現哈希值的衝突,產生威脅,過程較為複雜。



圖10-1 區塊鏈中的哈希鏈生成

為了簡潔地概括重點,我們首先來了解一下長期簽名技術,一起思考一下區塊鏈面臨的難題。

長期簽名技術以「歐洲電信標準化協會(European Telecommunications Standards Institute,以下簡稱ETSI)」為中心,是標準化PKI數字簽名領域的重要技術 ,可以保障數字簽名附帶電子數據(電子簽名格式)長期有效。舉例來說,如果將稅務文件、合同、醫療信息等視作需要處理的數字簽名數據,數據種類不同,法律規定的保存時間也各不相同,作為日後出現糾紛時的重要證據,這些信息往往需要長期保存。

這種情況下,使用數字簽名時,我們需要注意兩個問題:一是證明誰在什麼時間生成了數字簽名;二是確保長期保存後,數字簽名也具有法律效力。

第1點,關於「誰」的問題, PKI認證機構根據簽名本人和簽名密鑰之間的關聯(官方密鑰證明)進行授權。而關於「什麼時間生成」的問題,如圖10-2所示,第三方機構——時間戳記部門逐一標註時間戳(關聯數字簽名和時間信息)。



圖10-2 長期簽名的存在證明(時間戳)

儘管區塊鏈的實際處理和模型有所不同,但對比圖10-1(區塊鏈模型)和圖10-2可以理解為:「電子數據」相當於「交易」,「存在證明(時間戳Token)」相當於「區塊的哈希值」,為生成存在證明而輸入的「時刻信息」相當於「前一個區塊的哈希值」(區塊鏈中,哈希鏈的意義與時間戳提供嚴格的時刻證明不同,是保障數據順序的有力證明)。

長期有效的保障


長期簽名的另一個重要特徵就是「長期有效性的保障」,這是區塊鏈哈希函數轉移的關鍵。隨著時間的流逝,數字簽名和哈希函數(生成存在證明)的安全性逐漸下降,很有可能出現偽造數字簽名和存在證明的情況。面對這些威脅,通過有效性延長的結構,使用長期簽名技術後,即使長時間之後簽名方式和哈希函數可能面臨風險,仍然可以驗證其有效性(PKI的情況下,不僅涉及哈希函數和署名方式的安全問題,還需要考慮官方密鑰證書的有效期等,當然長期簽名已經包括相應對策)。

面對風險,最基本的思路如下:在數字簽名、數字簽名對象的電子數據、數字簽名的存在證明面臨威脅前,用更安全的哈希函數重新建立關聯(圖10-3)。而對於新關聯來說,只要不產生威脅,過去的數字簽名、存在證明(過去得到的部分)依然有效。而一旦出現原有的電子數據、數字簽名、時間戳Token被偽造的情況,也都可以通過新函數生成的哈希值進行檢測。

綜上所述,因為簽名數據的存在證明離不開第三方機構的時間戳Token,相對單一,所以很容易解決;但是對區塊鏈來說,為了保障存在證明真實可靠,需要各節點生成數據,組成系列哈希鏈條。必須充分考慮到兩者的不同,對症下藥,尋找適合的轉移方法,下面我們就來了解一下區塊鏈技術的要點。



圖10-3 長期簽名的有效性延長

區塊鏈哈希函數轉移的注意要點


正如分析長期簽名概念時提到的那樣,轉移的重點是用新的哈希函數強化哈希鏈,而哈希鏈是過去交易和數字簽名的存在證明。圖10-3中,首先向哈希函數輸入電子數據和簽名信息,將區塊鏈中的全部交易數據(包括數字簽名)、時刻信息看作一個整體。換句話說,只要將區塊鏈全部原封不動地轉移到新的哈希函數上,就可以建立一個新鏈。

不過這一方法可能並不現實。結合比特幣的實際情況來說,2017年11月,區塊鏈的容量約為140G位元組。假設2030年左右進行哈希函數轉移,那時的容量預計將達到800G位元組(單調遞增的情況下)。按照常規的區塊驗證方法,相當於每個節點需要完成800G位元組的哈希計算,這是一種低效驗證。而如果委託特定的節點或機構進行驗證,又破壞了去中心化的意義。

此外,選擇哪個階段的區塊鏈作為輸入對象也很有講究,需要確定某一時刻的區塊鏈狀態(哈希轉移前的狀態),需要超出軟體的範疇,由用戶社區投票決定。

所以,整合哈希鏈、進行轉移的方法看起來簡單,卻包括了多種問題。

有人說,可不可以不一次性完成轉移,分別將單獨的交易信息、特定的區塊內容輸入新函數之中,接下來再分批轉移。如果採用這一方法,隨著新塊(基於新的哈希函數)的產生,過去的交易和區塊生成的哈希值會逐漸融合(如圖10-4)。新區塊產生的同時,逐漸使用新的哈希函數去強化過去的交易和區塊,最終完成全部交易和區塊轉移。這種方法的優點是,可以避免一次性轉移時的投票問題。

不過,在逐漸轉移的過程中,需要預估哪個時刻之前的交易和區塊、大約可在什麼時間前完成轉移,儲存在新區塊內的過去交易和區塊的單位等。此外,如何在轉移過程中保持區塊順序、順利完成轉移,也是需要考慮的重要問題。從舊區塊中讀取信息,輸入新的哈希函數,這一過程中,如果排除特定交易和區塊,或者改變排列順序,就會損壞過去存在證明的功能。如果有興趣,各位讀者可以參考「Long-term public blockchain:Resilience against Compromise ofUnderlying Cryptography」,文中詳細介紹了區塊轉移的方法。

Masashi Satoand Shin』ichiroMatsuo,「Long-termpublic blockchain: Resilience against Compromise of Underlying Cryptography」, ICCCN 2017 Workshop on Privacy,Security and Trust in Blockchain Technologies, 2017.



圖10-4 區塊鏈哈希函數依次轉移圖示

實際轉移中的注意事項——PKI


轉移哈希函數和數字簽名時,即使有了強大技術支撐,轉移工作可能也並不一定順利。先於區塊鏈,PKI領域已經開始嘗試這種轉移。在公開密鑰證書、數字簽名、時間戳等方面,由於傳統的哈希函數(SHA-1)和簽名密鑰(RSA1024位)安全性不斷降低,PKI開始向安全性更高的SHA-2函數和RSA2048位以上的密鑰轉移,目前還在進行之中。下面我們就來簡單了解一下PKI轉移帶來的啟示。

首先,要明確方針。比如考慮到政府的獎勵標準,探討原有方式的用途、使用壽命等。

其次,按照上述方針,具體開展轉移。這一過程包括:認證機構重新發行證明(密鑰的再發行),更新系統、應用程式和中間件,改變設置。如果使用了上述長期簽名技術,還需要更新原有簽名數據等。

轉移工作會影響到很多系統和部門。為保持系統正常運轉,順利進行轉移,政府機構、認證機構、時間戳的服務提供者、評價認定機構、系統和應用程式及中間件的供應商應當密切合作,獻言獻策,調整課題,妥善解決。

實際轉移中的注意事項——區塊鏈


區塊鏈也面臨著同樣的問題。區塊鏈技術的提供者、普通用戶、交易所經營者、區塊鏈智能合約的服務提供者……需要與利益關係方協調具體的轉移方針,明確實際操作內容,進行適當調整。

尤其像比特幣這樣的公鏈,此前已經因為擴展性的問題鬧得議論紛紛,實際轉移過程中,調整方向肯定會面臨諸多困難。

數字簽名和哈希函數的轉移是保護用戶資產安全的必要措施。實際轉移時,區塊鏈系統可能會受到巨大衝擊,為順利完成轉移,必須慎重地討論方針和政策。

那麼單以比特幣等公鏈為例,為升級簽名方式和哈希函數,究竟需要經過怎樣的流程呢?下面我想通過兩個例子,與大家共同了解一下具體流程。

例一,已經掌握不法攻擊手法,必須儘早進行轉移。為保證新簽名方式和哈希函數一一對應,必須統一更新軟體,替換掉不兼容的節點,也就是所謂的「硬分叉」方法。不兼容軟體更新的節點將無法繼續進行交易或生成區塊。

比特幣、以太坊已經有過先例,不管如何注意,「硬分叉」的轉移方式始終存在著新舊系統並存的風險。由於沒有成功更新軟體,可能有用戶將直接失去加密資產。

例二,攻擊手段尚未知曉,還在猶豫是否轉移的階段。這種情況下,最好是保持與現有軟體的兼容性,實現共通使用,也就是「軟分叉」的方法。

不應該一刀切掉已有的數字簽名和哈希鏈,直接換成新的哈希函數,應該像長期簽名那樣,利用新的哈希函數,保障數字簽名和哈希鏈的有效性。

長期簽名以第三方機構作為擔保,轉移起來比較簡單。但在區塊鏈體系中,問題的關鍵是誰來擔保。希望學界可以解決這一問題,儘量避免硬分叉,採用軟分叉的方法進行轉移。

數字簽名和哈希函數的轉移是保護用戶資產的必要措施,但是轉移也會給區塊鏈整個系統帶來巨大衝擊。為順利完成轉移工作,必須慎重地討論方針和政策。

文章來源: https://twgreatdaily.com/zh-cn/qrRsOW0BJleJMoPMhWii.html