5

YT 筆記 - 資安科普:為什麼 MD5 不再安全?

 1 year ago
source link: https://blog.darkthread.net/blog/why-md5-not-safe/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

YT 筆記 - 資安科普:為什麼 MD5 不再安全?

2023-07-29 03:56 PM 1 10,704

若你跟業內人士說你在系統裡使用了 MD5 雜湊,多半會得到以下反應:

  • 茄~ MD5 雜湊早在八百年前就被證實為不安全,你居然還在用?
  • 自從差分攻擊法問市,MD5 安全性已蕩然無存,幾秒就能破解

道理我都懂,但心中仍有疑問:

  • 即使 EXE 檔附上 MD5 碼驗證,駭客都能輕鬆能做出一植入木馬,檔案大小相同且 MD5 相同的執行檔?
  • 在系統內部用 MD5 比對內容重複性,也會有風險嗎?

在 YouTube 滑到很棒的科普影片,用極淺白的方式把 MD5 原理、攻擊方式及風險講到通透,看完算是徹底了解所謂的 MD5 不安全是怎麼一回事。

MD5为何不再安全

摘要如下:

  1. MD5 於 1992 由美國數學家羅納德·李維斯特(Ronald Linn Rivest)設計,將任何內容對映成 128 Bit 長度的數值,跟所有雜湊演算法一樣,具有內容相同雜湊一定相同、內容稍變雜湊截然不同、由無法由雜湊反推內容等特性。
  2. MD5 計算分為三步:填充對齊為 512 Bit 整數倍大小(保留最後 64 Bit 表原始長度大小)、以 512 Bit 為單位分塊,用 0x67452301、0xEFCDAB89、 0x98BADCFE、0x10325476 當初始值跟第一個區塊的資料進行一系列 AND、OR、NOT、位移計算得到 128 Bit 結果,用第一區塊計算結果作為初值對下一塊 512 Bit 作計算得到新的 128 Bit,處理完全部區丟的最終結果即為 MD5。
  3. MD5 計算但不複雜,就算用 Java 寫 100 行就能打死。
  4. 雜湊計算過程資訊會損失,故不可能反推結果(中間有 OR 運算,0 或 1 都得到 1,無法由 1 反推 );任何長度的內容計算結果固定為 128 Bit 表示每個 MD5 都對映到無窮多的來源內容。鴿巢原理,三隻鴿子放進兩個鴿籠,至少有一個籠子有兩隻。對映到 MD5,即所謂碰撞。
  5. 對 MD5 的攻擊方式:
    • 原像攻擊:知道 MD5,找出任意一個結果為該 MD5 的原始內容
      辦不到,來源數量高 2 ^ 128 要進行暴力攻擊類似在鄱陽湖中找到特定水分子
    • 第二原像攻擊:已知內容及 MD5,找到第二個 MD5 相同的內容
    • 抗碰撞性:找出任意兩個 MD5 相同的內容,難度最低,軟柿子
  6. 2004 中國密碼學家王小雲與其團隊找到方法能快速找到大量相同 MD5 的原始內容。原理基於模組化差分,先找到局部碰撞,分析差分如何傳遞,找出差分路徑,透過訊息修改技術得到能產生碰撞的訊息對。最早的研究可在 15 分鐘到一小時內找到碰撞。註:2009 由中國科學院學者提升到普通電腦執行只需要數秒鐘。
  7. 破解抗碰撞性代表可以快速找到 MD5 相同的碰撞對,但其訊息內容如同亂碼,無法真的拿來做壞事。
  8. 2007 年,密碼學者 Marc Stevens 在碩士論文中展示實際可執行的程式碼,用一份原始文件產生兩份有些許差異但 MD5 相同的文件。此稱為「相同前綴碰撞」,兩張照片貌似相同,最後不易察覺的細節不同,但 MD5 相同。(產生只需 6 秒)
    Fig1_638262142925104726.png
  9. 相同前綴碰撞就真的可以拿來做壞事了! 準備兩個 EXE,最後幾個 Byte 不同但 MD5 相同,程式邏輯依據最後幾個 Byte 決定要不要發動攻擊。送正常版交付審查測試,放行後再設法調包成 MD5 相同的惡意版本,轟!
  10. 不過,審核過程防毒軟體有可能偵測到其中埋的惡意邏輯,Marc Stevens 研究成果的另一項武器是「選擇前綴碰撞」,可以做到前面內容也不同但 MD5 相同的程式,故可安排一完全無害的內容送審,未來再換成 MD5 相同的惡意程式。展示:兩個 MD5 相同的 EXE,一個顯示 Hello, World!,一個顯示 Goodbye World! (製作需數十小時)
  11. 選擇前綴碰撞也能讓數位簽章的有效性徹底互解 (10 元支票跟 1000 元支票的簽章相同) 註:2011 年 RFC 6151 禁止 MD5 作為 HMAC (Keyed-Hash Message Authentication Code,金鑰雜湊訊息鑑別碼) 使用的雜湊。
  12. MD5 面對原像攻擊及第二原像攻擊仍具備相當的安全性,但「君子不立於危牆之下」,既然都被貼上不安全標籤了,還是別自找麻煩。

看完,我心中疑問也獲得解答:

  1. 針對一個已存在 EXE 做出 MD5 相同的惡意版本屬第二原像攻擊,仍很有難度。必須要提防的是惡意人士可以拿出兩個 MD5 相同的程式檔,一個正常版,一個有毒。
  2. 用 MD5 比對重複性,若內容都為自家產生,且無人能因仿造 MD5 相同內容獲利,那 MD5 沒什麼問題且省空間。

但,「君子不立於危牆之下」,能不用則不用,想想省掉必須向別人解釋「用在這裡風險不高」的麻煩,無價!!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK