造冰箱的大熊貓@cnblogs 2019/2/20
emmmm,在這里把文件完整性校驗相關的信息匯總一下
1、什么是文件完整性校驗
所謂文件完整性校驗就是對文件“驗明正身”。攻擊者會將惡意代碼添加到某個受大眾歡迎的軟件中,然后發布到網絡上。當用戶下載並使用這種被篡改過的軟件時,計算機病毒或者木馬程序就會悄然進入用戶的計算機。檢驗文件的完整性,就是檢查下載到的軟件是否被篡改過。
2、基於散列函數的文件完整性校驗
文件完整性校驗的常用方法是使用基於“散列函數”的校驗算法。軟件開發者在發布軟件(比如一個exe文件)前,使用某個校驗算法計算出該exe文件的“特征值”,然后將這個特征值和exe文件一同發布到網絡上。用戶使用相同的校驗算法計算下載到exe文件的特征值,並與軟件開發者發布的特征值比較。如果兩個特征值相同,則認為下載到的exe文件是正確的。如果兩個特征值不同,則認為下載到exe文件是被篡改過的。
以Ubuntu操作系統為例,在Ubuntu的下載網頁上,用戶既能找到Ubuntu安裝鏡像的下載鏈接,也能夠找到“MD5SUMS”、“SHA1SUMS”、“SHA256SUMS”字樣的文件。這些文件就是使用MD5、SHA1、SHA256等校驗算法獲得的Ubuntu安裝鏡像特征值。
點擊右鍵看大圖
校驗算法本質上是建立文件和特征值的映射關系,用長度較短的特征值表征長度較長的待校驗文件。由於特征值和待校驗文件長度不匹配,無法保證兩者的映射關系是唯一的。比如,某個校驗算法使用32bit整數作為特征值,同時我們有232+1個內容互不相同的文件,那么一定有兩個文件的特征值是相同的。當兩個文件的特征值相同時,我們只能認為“這兩個文件內容相同的可能性非常高”。在散列函數的研究領域中,如果兩個不同文件具有相同的特征值,則稱這種情況為“發生碰撞”。顯然,特征值的長度越短,發生碰撞的概率就越高。但無限增加特征值長度,又降低了校驗的可用性。好的散列函數設計,就是要在特征值長度較短的前提下,盡可能地降低碰撞概率。散列函數屬於數學/密碼學的研究范疇,專業性很強,它的可靠性和安全性留給數學大牛們去思考,我們作為一般計算機用戶,只需要掌握以下校驗工具的使用方法。
2.1、方法1:在Windows下使用7-Zip工具
如果Windows計算機上安裝了7-Zip,則
1)右鍵點擊待校驗的文件(或文件夾)。
2)在彈出的菜單中選擇“CRC SHA”。
3)在子菜單中可以看到“CRC-32”、“CRC-64”、“SHA-1”、“SHA-256”和“*”五個不同選項。其中,前4項分別對應采用32位循環冗余校驗(CRC)、64位CRC、SHA-1和SHA-25校驗算法對被選中文件進行校驗。第5項“*”,則輸出被選中文件的CRC-32、CRC-64、SHA-1、SHA-256和BLAKE2sp五種校驗結果以及該文件的基本信息(文件名、文件大小)。
點擊右鍵看大圖
2.2、方法2:在Windows 7下使用certutil命令
在Windows命令行下輸入如下命令計算文件的校驗值
certutil -hashfile FileName HashAlgorithm
其中,FileName為待校驗文件名(路徑)。HashAlgorithm為校驗算法名,可能的取值為MD2, MD4, MD5, SHA1, SHA256, SHA512。certutil命令的詳細使用方法,請參考微軟官網。
Windows XP不支持此命令。
2.3、方法3:在Windows XP下使用FCIV工具
微軟提供了一個名為“File Checksum Integrity Verifier”(簡稱FCIV)的工具。該工具可在Windows 2000/XP/Server 2003上運行,計算某個文件或文件夾下所有文件的校驗值(支持MD5和SHA1),並與之前記錄的校驗值進行比較。該工具的下載鏈接、安裝和使用方法請參考微軟官網頁面。
2.3、方法4:在Windows XP下使用md5sums工具
本節內容2019.4.24補充
從pc-tools.net下載md5sums軟件的壓縮包,解壓縮獲得md5sums.exe,在命令行下執行
md5sums FileName
其中,FileName為待校驗文件名(路徑)。詳細使用方法參見解壓縮獲得的md5sums.txt文件。
2.5、方法5:在Linux下使用xxxsum命令
在Linux命令行下輸入如下命令計算文件的校驗值
xxxsum FileName
其中,FileName為待校驗文件名(路徑)。xxxsum為校驗算法命令,可能的取值為md5sum,sha1sum,sha256sum,sha512sum,crc32。
3、數字簽名:下載文件的身份認證
文件完整性校驗針對的是文件內容是否被篡改。如果黑客攻擊軟件開發者的網站,將網站服務器上的軟件替換為被篡改過、含有惡意代碼的軟件,同時篡改了網站上發布的特征值,那該怎么辦。用戶如何檢查文件來自合法用戶(軟件開發者)還是非法用戶(黑客)呢。為解決這一問題,軟件開發者通常采用數字簽名的方式對發布內容(exe文件、特征值)進行身份標記,用戶對下載文件中的數字簽名進行驗證,檢查下載到的文件是否為軟件開發者發布的。通常很少有人會對下載文件進行身份認證的情況並不常見。有關數字簽名的問題,我們以后單獨討論。