原文:https://medium.com/@noahruderman/a-summary-of-why-iotas-refutation-of-a-vulnerability-by-dci-labs-is-absurd-128e894781b1
作者:Noah Ruderman
譯者:知道創宇404實驗室

DCI實驗室發布報告稱,他們發現了針對IOTA交易簽名方案中存在性不可偽造(EU-CMA)的安全問題,允許攻擊者竊取資金。

而對于密碼學來說,這個漏洞正是密碼學安全研究的向量。如果你不同意這一點,你就是在反對密碼學。

1. 前言

爭議開始于由麻省理工學院旗下的DCI實驗室撰寫的漏洞報告。IOTA開發人員否認密碼學和互聯網安全對漏洞的定義,指控DCI實驗室學術欺詐,并騷擾DCI的安全研究員伊森·海爾曼,威脅說要對這份不利的漏洞報告采取法律行動。

盡管DCI聲稱的漏洞在每一位加密專家、安全研究人員和主要加密貨幣開發人員看來都是正確的,但這很難令常人所理解。在這基礎上,IOTA強烈反對curl-p易受攻擊的觀點,并發布了相關文章

本篇文章的目的:
(a) 向幾乎沒有密碼學知識的人解釋該漏洞的性質;
(b) 為什么IOTA的反駁并不能說服密碼學專家和安全研究人員;
(c) 如何論證哈希函數的安全性。

2. DCI實驗室聲明的摘要

DCI實驗室表示,用于保護交易安全的數字簽名方案不符合EU-CMA的安全概念。該數字簽名方案的安全性之所以能被打破,是因為所使用的哈希函數curl-p沒有抗碰撞的屬性。

3. 什么是curl-p?

Curl-p是一個哈希函數。哈希函數將任意長度的數據轉換為固定長度的輸出。你可以將這些輸出看作數字指紋。哈希函數旨在滿足以下主要特性:

  • 確定性:給定相同的輸入,獲取的哈希值始終相同。
  • 一致性:預期的輸入應盡可能一致地映射到輸出范圍。
  • 不可逆性:給定哈希值,應該很難找到相應的輸入。但“非常困難”的定義很寬泛,因為它取決于許多外部因素,比如隨著時間推移而變化的技術,但專家們對此沒有爭議。在普通硬件上計算沖突是不可能的,并且對于安全的哈希函數來說,任何人都很難找到沖突。如果政府能夠找到沖突,那么哈希函數就不會被認為是安全的。

curl-p的目的是使哈希函數表現出高度隨機的行為,它使我們將哈希值視為唯一的且防篡改的。

4. curl-p的作用是什么?

Curl-p是由Sergey Ivancheglo編寫的自定義哈希函數,他也被稱為Come-from-Beyond。它是數字簽名方案的一部分,用于確保交易的身份驗證的完整性。在消息上構造數字簽名的過程包括將數據哈希并用私鑰加密哈希值。這是加密貨幣的標準做法。詳細解釋如下:

  • 身份驗證:證明消息是由公鑰所有者創建的。如果消息未經過哈希處理,則簽名會更長,則需要更多時間進行驗證。
  • 完整性:防止消息在創建后被篡改,同時仍然在數字簽名下進行驗證。

數字簽名是通過用公鑰解密簽名并將交易數據哈希來進行驗證的。如果未加密簽名和相應的哈希值相同,則認為數字簽名有效。

然而,預期中的數字簽名要求哈希函數表現出高度的隨機行為。如果curl-p表現出足夠的非隨機行為,攻擊者就可以構造一個沒有私鑰簽名但具有相同簽名的消息,因為消息的哈希值是相同的。這意味著數字簽名方案被破壞,攻擊者可能會偽造交易來竊取資金,因此交易的數字簽名(擴展為curl-p)在軟件生產中具有關鍵的安全作用。

5. curl-p必須滿足哪些安全屬性才能防止攻擊?

我們可以簡單的把這個問題歸結為沖突,即兩則不同的消息可以用curl-p哈希得到相同值的頻率。如果兩則消息哈希值相同,那么簽名將是相同的,如果攻擊者的消息是有效的交易,這意味著可能有人通過使用前一個交易的簽名來使用你的Iota幣。任何curl-p的沖突都會對數字簽名方案發起攻擊,因此curl-p應該具有最強的安全性。

用于滿足最嚴格的安全屬性的哈希函數被稱為加密哈希函數。這些安全屬性包括:

  • 抗碰撞性:攻擊者應該無法找到兩則消息m1和m2使得hash(m1) = hash(m2)。
  • 抗原像攻擊:如果提供哈希值h,攻擊者應該無法找到消息m使得m = hash(h)。
  • 抗第二原像攻擊:如果提供消息m1,攻擊者應該無法找到消息m2,使得hash(m1)= hash(m2),m1!= m2。

6. curl-p是加密哈希函數嗎?

IOTA開發人員一直含糊其辭,但更頻繁地聲稱curl-p并非旨在成為加密哈希函數。他們反駁了DCI實驗室關于漏洞的說法,因為他們認為在curl-p中不需要抗碰撞性。換句話說,他們不能因為curl-p是一個不安全的哈希函數而被指責,因為它從來沒有打算保證curl-p是安全的。

然而,curl-p在確保使用擁有超過10億美元生產系統的安全方面發揮了關鍵作用。curl-p的充分非隨機行為可能使資金被盜。除非允許資金竊取是curl-p的預期功能,否則其應該被設計為滿足我概述的最嚴格的安全屬性,這將使其成為加密哈希函數。如果按照IOTA開發人員所說,curl-p并不是一個加密哈希函數,那么這就是一個重大的設計缺陷。

因此,IOTA開發人員要么為其極其糟糕的設計負責,要么認為他們自己構建了一個安全的哈希函數,因為他們無法找到破解它的方法。兩者都表現出極差的判斷力,第一種是健忘,第二種是對其安全性過于自信。

7. 是否存在漏洞?

存在。DCI實驗室發現curl-p并不具有抗碰撞性,他們展示了兩則消息的真實例子,這兩則消息被網絡視為有效交易,但是哈希到相同的值。他們通過利用curl-p中的非隨機行為來改變消息中的一些位以生成哈希值相同的新值。這些位就是交易金額。因此,如果你向某人發送了一些Iota幣,那么你可以通過修改交易來發送不同的金額。

DCI實驗室還展示了理論上的攻擊是如何通過破壞抗碰撞性來實現的。你可以構造兩項哈希值相同的交易來發送Alice的Iota幣,然后讓Alice簽署第一項交易,然后用這個簽名發送第二項交易。

正如密碼學專家、安全研究人員等普遍理解的那樣,漏洞確實存在,原因如下:商用硬件上的curl-p上發生了碰撞;curl-p中被打破的抗碰撞性是用來自同一地址的事務來表示的;使用curl-p來哈希交易數據意味著用戶資金可能被盜;加密哈希函數不可能實現這一點……

但如果我認為這次攻擊沒有那么嚴重呢?

“安全”(secure)一詞用于哈希函數,“漏洞”(vulnerability)一詞用于軟件,它們都有明確的定義,這些定義獨立于任何人對這些攻擊破壞力的感受。密碼學對數字簽名方案的安全性有嚴格的定義,且數字簽名方案的安全性也與個人感受無關。因此,我們完全可以說curl-p是不安全的,并且其存在一個漏洞,但攻擊并沒有那么嚴重。因為攻擊沒有那么嚴重,所以不存在漏洞這種說法是不正確的。

8. 為什么要考慮標準的EU-CMA而不是實際的攻擊呢?

沒有受過軟件工程或密碼學培訓的人最常犯的一個錯誤是,EU-CMA攻擊是一個抽象的游戲,不能很好地轉化為實際的結果。畢竟,IOTA的協調員可能自己做了一些驗證,這肯定會影響概述的攻擊的可行性,而這并不是EU-CMA模擬的一部分。當然也有一些外部組件對攻擊很重要——不建議重用地址。讓我們先把明顯的細節放在一邊,即協調器是一個臨時措施,而且它是閉源的——這意味著沒有人知道它到底做了什么。

如果關于系統安全性的評判標準是“能否在生產系統中演示實際的攻擊”,那么在實際部署這些演示時,會出現一些明顯的問題。首先,黑客攻擊計算機系統是違法的。其次是關于安全漏洞的微妙本質——你真的認為等到商用硬件上的SHA-1被破壞后再將其用于關鍵的互聯網基礎設施是一個好主意嗎?還有一個事實是,閉源代碼是不能進行公開訪問的——你認為我們應該忽略那些閉源系統的安全性嗎?這樣的例子不勝枚舉。

如何解釋安全性的標準,你可以將其視為最佳實踐。最佳實踐就像專家的常識一樣,因為同樣的錯誤往往會重復出現——比如創建自定義的哈希函數。EU-CMA攻擊包含了我們期望從構建了安全方面的最佳實踐的系統中看到的行為。也就是說,如果你實現了EU-CMA關于數字簽名安全的概念,那么你就知道存在某些安全保證,甚至不需要為系統的各個部分創建巨大的流程圖。從另一個角度來看,如果你系統的安全性依靠外部驗證來維護被破壞的協議的完整性,那么你就會有一個過于草率、復雜的系統,它很容易出現安全漏洞。

Sergey說EU-CMA對數字簽名不重要,因為他的系統會做額外的驗證,這就像在說:

  • 你不用擔心把所有的硬幣都放在一個熱錢包里,因為沒有人知道這臺電腦在哪里以及它的密碼。
  • 你不必用VPN來向政府隱藏你的IP,因為他們的隱私政策說他們不保存日志。
  • 你無需為重復使用密碼而擔心,因為密碼的安全性很高。

這些例子聽起來很愚蠢嗎?當然!但它們本質一樣。安全漏洞在技術上可以通過外部因素得到緩解。但是這種緩和因素是非常脆弱的,特別是對那些安全因素至關重要的東西來說。如果與大型熱錢包交易可以獲得10億美元呢?它完全打破了你的安全模式。IOTA開發人員冒著損失用戶10億美元的風險——用他們自己的話說,因為他們不知道有比在生產系統中測試未經同行評審的自定義加密原語更好的方法,也不知道有比只是部署它并查看是否有人破壞了它更好的方法——這極其荒謬。(參見:泄露郵件第4封)

9. 如果現實生活中的攻擊看起來還不那么切合實際,為什么安全研究人員還會擔心呢?

因為哈希函數的歷史給了我們一些教訓,那就是第一個漏洞只是開始,隨著時間的推移,會發現更多的漏洞。DCI團隊非常接近于找到一個原像攻擊,他們先發制人地聲明他們與IOTA進行了私下交流。DCI實驗室表示,他們認為這是有可能的,但還無法對其進行量化。他們還認為curl-p也破壞了抗原像攻擊,而并不難以置信。

如果發現了curl-p的原像攻擊,那么實際的攻擊將十分危急且無法恢復。原像攻擊意味著你不需要為消息簽名攻擊就可以成功。想象一下攻擊者設置了大量的Iota完整節點。現在使用一個輕錢包連接這些節點,并傳播你的交易。該交易不會被傳到網上。相反地,他們會偽造一個假交易,然后用你的簽名進行傳播。

10. 將SHA-1作為哈希函數安全性的案例研究

顯示非隨機行為跡象的哈希函數只是一個開始。SHA-1于1995年被正式指定。2005年,在其規范化整整十年后,漏洞開始被發布,其攻擊力比暴力攻擊更有效。與curl-p不同的是,在2005年的時候還沒有發現實際的碰撞。SHA-1提供的安全性比承諾的要低,差距太小而不容忽視,可能在政府的預算范圍內無法攻破,但這足以讓密碼學界認為它是不安全的。

在接下來的幾年里,打破SHA-1安全性的障礙不斷變小,并且完全在政府的掌控之中。同樣地,盡管沒有發現碰撞事實,但許多組織都建議用SHA-2或SHA-3來代替SHA-1。2017年,終于發現了一次碰撞。這是一次碰撞攻擊,他們證明它可以用來做一些事情,比如構造一個低租金的合同,用具有相同哈希值的高租金合同來交換數字簽名。

SHA-1的歷史總結:

  • 第一個漏洞是在其規范之后整整十年才發現的。
  • 一旦攻擊被證明比暴力更有效時,密碼學家就認為它是不安全的,盡管這是不切實際的。沒有一個密碼學家認為SHA-1是安全的,因為它太難攻擊了。
  • 盡管在2017年之前,沒有人負擔得起在SHA-1中發現碰撞的計算能力,但政府完全有能力做到這一點。
  • 自2005年以來,每年對SHA-1的攻擊都變得越來越高效。換句話說,一旦SHA-1顯示出非隨機行為,對它的嘗試性利用變得越來越好。

與此curl-p比較:

  • 第一個漏洞是在IOTA在交易所上市后一個月內發現的,該項目也因此受到公眾關注,市值超過10億美元。而SHA-1花了10年的時間才得到研究人員的關注。

  • 盡管curl-p在保護簽名完整性方面與SHA-1有類似的作用,但Sergey Ivancheglo并不認為抗碰撞性很重要。整個密碼學界都認為SHA-1的抗碰撞能力非常重要。這種幾乎被破壞的抗碰撞性會導致SHA-1的不安全調用。

  • 根據泄露的電子郵件,IOTA開發人員使用curl-p來處理關鍵的安全應用程序,但并不認為有必要將其提交給密碼學專家的同行進行評審。用他們自己的話來說,他們覺得確保自制的加密技術安全性的唯一方法就是在生產系統中使用它然后看它是否受到攻擊。

  • 根據DCI實驗室的數據,對curl-p的攻擊花費了20個小時。

11. 但你確定真的有漏洞嗎?

根據密碼學的定義,有漏洞。

評估說curl-p不安全是因為它在生產系統中發揮著關鍵的安全作用(意味著它應該是一個加密哈希函數),但是它已經破壞了抗碰撞性(它不是一個安全的加密哈希函數)。

評估認為在交易的數字簽名方案中存在漏洞是因為有不安全的哈希函數,它意味著你可以使用以前交易的簽名來偽造交易。

12. 但你說這是密碼學的定義……

更嚴格地說,DCI實驗室表明,根據EU-CMA,IOTA使用curl-p的交易數字簽名方案失敗了。在這種攻擊中,攻擊者能夠簽署他們選定的任何消息,并可以根據需要重復生成和簽署消息。如果任意兩條消息生成相同的簽名,則攻擊成功。

對于此次攻擊,消息來源是未簽名的IOTA交易。由于交易的簽名實際上是交易數據的curl-p哈希函數的簽名,因此打破curl-p的抗碰撞性就足以贏得這場游戲。DCI實驗室的研究人員通過產生碰撞消息打破了curl-p的抗碰撞性。這些碰撞消息是良構事務,這是一個額外收獲。

但是IOTA反駁說,EU-CMA的安全也被破壞了……

相信我,我們現在都已經習慣了。

泄露的電子郵件中,Sergey反駁了這一說法,理由是對EU-CMA安全的定義過于抽象。(這就是他提到的“真空中的球形簽名方案”。)他的觀點十分令人困惑,部分原因是他反復引用維基百科(Wikipedia)和security.stackexchange.com等網站上的非正式信息來為自己的觀點辯護,他認為這些信息具有權威性。Sergey反復引用安全的定義,但是不考慮加密貨幣協議。其他時候,他對EU-CMA安全的定義提出異議,稱其需要進行原像攻擊。在推特上,他經常挑戰那些認為IOTA很容易受到原像攻擊的人,Heilman反復強調,這對于他們所概述的EU-CMA攻擊來說不是必要的。

Sergey在一篇文章中更仔細地闡述了他的理解。很明顯,他的理解力還很差勁。他努力地從一個非常直截了當的角度來看待EU-CMA安全的各個方面。例如,EU-CMA允許攻擊者獲取從目標生成的任何消息的簽名。因此,DCI實驗室通過使用由他們控制的私鑰來模擬提供這些消息的受害者。Sergey認為這違規了,因為他們模擬的是可以創建密鑰的虛擬受害者,而不是無法創建密鑰的虛擬受害者。

Sergey也誤解了“微不足道”這個詞的概念。他一再強調,如果DCI實驗室不提供在curl-p中查找碰撞的代碼,那么他們就沒有任何可信度,就好像這改變了curl-p在普通硬件上存在碰撞的事實,意味著碰撞對密碼學者來說是微不足道的。

Sergey并不是提出幾個問題而已,而是在質疑密碼學中他所能質疑的一切。如果他不理解這些概念,他應該去上與密碼學相關的課程,在課堂上提出自己的問題,而不是去騷擾撰寫漏洞報告的安全研究人員。如果做不到這一點,他應該聘請密碼學專家來回答他的問題,因為他要求的細節如此之多,以至于DCI實驗室能夠主動滿足其要求變得遙遙無期。

13. 結論

DCI實驗室對IOTA存在漏洞的評估與密碼學的定義一致。每一位密碼學家、安全研究員和主要加密貨幣的開發者都公開發表了言論,他們都同意DCI實驗室的觀點。

IOTA對此提出異議的原因如下:

  • 他們缺乏對密碼學的功能性理解,以至于將security.stackexchange.com上的的非正式答案作為嚴格的定義;
  • 他們缺乏研究安全問題的直覺,以至于在沒有同行評審的情況下,他們就開始使用自己的加密原語并在生產系統上進行測試;
  • 他們缺乏社會技能,無法準確解釋密碼學定義中更定性的方面,比如“微不足道”這個詞的含義。

Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1003/