第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

新發(fā)現(xiàn)的SHA-1碰撞如何影響Git?

新發(fā)現(xiàn)的SHA-1碰撞如何影響Git?

Git
眼眸繁星 2019-09-06 15:47:23
最近,一組研究人員使用相同的SHA-1哈希生成了兩個文件(https://shattered.it/)。由于Git將此哈希用于其內(nèi)部存儲,這種攻擊在多大程度上會影響Git?
查看完整描述

2 回答

?
素胚勾勒不出你

TA貢獻1827條經(jīng)驗 獲得超9個贊

簡短(但不令人滿意)的答案是,示例文件對于Git來說不是問題 - 但是其他兩個(精心計算的)文件可能是。


我下載這兩個文件,shattered-1.pdf并shattered-2.pdf,并把它們放入一個新的空庫:


macbook$ shasum shattered-*

38762cf7f55934b34d179ae6a4c80cadccbb7f0a  shattered-1.pdf

38762cf7f55934b34d179ae6a4c80cadccbb7f0a  shattered-2.pdf

macbook$ cmp shattered-*

shattered-1.pdf shattered-2.pdf differ: char 193, line 8

macbook$ git init

Initialized empty Git repository in .../tmp/.git/

macbook$ git add shattered-1.pdf 

macbook$ git add shattered-2.pdf 

macbook$ git status

On branch master


Initial commit


Changes to be committed:

  (use "git rm --cached <file>..." to unstage)


    new file:   shattered-1.pdf

    new file:   shattered-2.pdf

即使這兩個文件具有相同的SHA-1校驗和(并且顯示大致相同,但是一個具有紅色背景而另一個具有藍色背景),它們會得到不同的Git哈希:


macbook$ git ls-files --stage

100644 ba9aaa145ccd24ef760cf31c74d8f7ca1a2e47b0 0   shattered-1.pdf

100644 b621eeccd5c7edac9b7dcba35a8d5afd075e24f2 0   shattered-2.pdf

這些是存儲在Git中的文件的兩個SHA-1校驗和:一個是ba9aa...,另一個是b621e...。也不是38762c...。但是 - 為什么?


答案是Git存儲文件,而不是它們自己,而是作為字符串文字blob,空白,十進制文件的大小,ASCII NUL字節(jié),然后是文件數(shù)據(jù)。兩個文件的大小完全相同:


macbook$ ls -l shattered-?.pdf

...  422435 Feb 24 00:55 shattered-1.pdf

...  422435 Feb 24 00:55 shattered-2.pdf

因此兩者都以文字文本為前綴blob 422435\0(其中\(zhòng)0表示單個字節(jié),字符串中的la C或Python八進制轉(zhuǎn)義)。


也許令人驚訝 - 或者不是,如果您知道SHA-1的計算方法 - 將相同的前綴添加到兩個不同的文件中,但之前產(chǎn)生相同的校驗和,導(dǎo)致它們現(xiàn)在產(chǎn)生不同的校驗和。


這應(yīng)該變得不足為奇的原因是,如果最終的校驗和結(jié)果對每個輸入位的位置和值都不是非常敏感,那么通過獲取已知的輸入文件并僅僅重新按需產(chǎn)生沖突將很容易。 - 安排一些比特。這兩個輸入文件產(chǎn)生相同的總和,盡管有不同的字節(jié),但研究人員通過嘗試超過9個quintillion(短程)輸入實現(xiàn)了這個結(jié)果。為了得到這個結(jié)果,他們在他們控制的位置放入精心選擇的原始數(shù)據(jù)塊,這將影響總和,直到他們找到導(dǎo)致碰撞的輸入對。char 193, line 8


通過添加blob標(biāo)題,Git 移動了位置,在一次或多或少的意外打擊中摧毀了110-GPU年的計算。


現(xiàn)在,知道Git會這樣做,他們可以用輸入開始重復(fù)他們的110-GPU年的計算blob 422435\0(假設(shè)他們的犧牲塊不會被推得太多;并且需要GPU的實際計算年數(shù)可能會有所不同,因為這個過程有點隨機)。然后他們會提出兩個不同的文件,可能會blob刪除標(biāo)題。這兩個文件現(xiàn)在彼此具有不同的SHA-1校驗和,但是當(dāng)git add-ed時,兩者都會產(chǎn)生相同的 SHA-1校驗和。


在該特定情況下,添加的第一個文件將“贏”該插槽。(讓我們假設(shè)它的名字shattered-3.pdf。)一個足夠好的Git - 我完全不確定當(dāng)前的Git是否合適; 請參閱Ruben基于實驗的答案,了解Git如何處理blob上的SHA-1碰撞?- 會注意到git add shattered-4.pdf,嘗試添加第二個文件,與第一個但不同的文件發(fā)生沖突,shattered-3.pdf并會警告您并使git add步驟失敗。在任何情況下,您都無法將這兩個文件添加到單個存儲庫中。


但首先,有人必須花費更多的時間和金錢來計算新的哈希沖突。


查看完整回答
反對 回復(fù) 2019-09-06
  • 2 回答
  • 0 關(guān)注
  • 467 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號