系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當前位置:系統(tǒng)之家 > 系統(tǒng)教程 > 檢測Linux系統(tǒng)下載文件的完整性

如何檢測Linux系統(tǒng)已下載文件的完整性

時間:2014-12-29 16:04:53 作者:qipeng 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20141229/33635.html 手機查看 評論

  因為Linux系統(tǒng)安裝軟件較為復雜,如果下載的軟件被修改過的話安裝起來就十分麻煩,校檢Linux系統(tǒng)下載文件的完整性就變得十分重要,下面小編就給大家介紹下如何校檢Linux系統(tǒng)中下載文件的完整性。

 如何檢測Linux系統(tǒng)已下載文件的完整性

  校驗方法當前一般是MD5,SHA1,PGP三種。在Windows那個漫長的歲月里(滄桑有木有),一般只能接觸到前兩種——前提是你會去校驗的話。

  MD5校驗

  原理:對文件進行MD5 Hash,求出文件的MD5哈希值,通過下載后文件MD5哈希值和發(fā)布者提供的MD5哈希值是否一致來判斷文件是否在發(fā)布者發(fā)布之后被篡改過。

  說明:壽命老長的一個Hash算法,適用范圍廣,網(wǎng)站存儲密碼也經(jīng)常使用。不同的文件產(chǎn)生的MD5哈希值是唯一的,但這點已經(jīng)有辦法通過對文件進行少量的修改,讓文件的MD5后的哈希值保持一致。

  使用:在CentOS下,要對文件進行MD5 Hash是很簡單的,一個 md5sum 命令即可:

  代碼如下:

  # $是終端提示符,非輸入。

  # #號是注釋

  # 沒有提示符的是輸出

  #直接輸出MD5 Hash

  $ md5sum your-downloaded-file-name

  fd4a1b802373c57c10c926eb7ac823d8 your-downloaded-file-name《/p》 《p》#將MD5 Hash值保存到md5-hash.txt文件中。

  $ md5sum your-downloaded-file-name 》 md5-hash.txt

  # 顯示輸出的md5-hast.txt內(nèi)容

  $ cat md5-hash.txt

  fd4a1b802373c57c10c926eb7ac823d8 your-downloaded-file-name《/p》 《p》# 通過md5-hash.txt來校驗你下載的文件是否正確

  $ md5sum -c md5-hash.txt

  your-downloaded-file-name: OK

  你是文件的發(fā)布者話,你可以通過md5sum把文件的哈希值發(fā)送給驗證者,這樣下載你文件的人就可以通過MD5哈希值來驗證你的文件正確性。反過來,我們在網(wǎng)站上下載文件之后,同時可以獲取發(fā)布者的MD5哈希值和本地生成的Hash值對比,如果一致,認為文件是正確的。

  SHA1校驗

  原理: 原理同MD5一樣,都是通過對文件進行HASH求值,比對文件發(fā)布者發(fā)布的HASH值,通過是否相等判斷文件是否被篡改

  說明: SHA1 HASH求值方法可以說是MD5的一個升級版本(SHA1 20位,MD5 16位),在HASH求值方面,MD5退出的舞臺將有SHA1占據(jù)。SHA家族有五個算法:SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,后四種有時候稱為SHA2

  使用: CentOS有SHA1的命令: sha1sum

  代碼如下:

  # 說明同上

  # 直接輸出SHA1 Hash

  $ sha1sum your-downloaded-file-name

  12dc96cbd822598c1230c87622f3591461a77227 your-downloaded-file-name《/p》 《p》# 將SHA1 Hash值保存到文件中

  $ sha1sum your-downloaded-file-name 》 sha1-hash.txt

  # 顯示文件內(nèi)容

  $ cat sha1-hash.txt

  12dc96cbd822598c1230c87622f3591461a77227 your-downloaded-file-name《/p》 《p》#通過sha1-hash.txt來校驗我們下載的文件your-downloaded-file-name

  # 注意,文件必須要要通過txt文件中的路徑知道哦

  $ sha1sum -c sha1-hash.txt

  your-downloaded-file-name: OK

  這個SHA1和MD5基本一致,需要補充說明下的是,在使用 md5sum 也好,還是 sha1sum 也罷,校驗文件的時候,務必要讓系統(tǒng)能夠根據(jù)文件中提供的路徑找到文件,如果文件找不到,是沒有辦法進行校驗的。

  如果是做多個文件的Hash校驗,可以通過一個文件保存多個文件的Hash值即可。

  PGP校驗

  原理:使用非對稱加密,程序生成唯一的密鑰對(公鑰和私鑰:Public Key和Private Key/Secret Key)。操作方法如下:

  1.發(fā)布者通過用生成的密鑰對中的私鑰對要發(fā)布的文件進行簽名,得到簽名文件(sign);

  2.發(fā)布者將密鑰對中的公鑰發(fā)布到公鑰服務器;

  3.發(fā)布者將文件和用私鑰生成的簽名一起發(fā)布;

  4.驗證者下載發(fā)布者發(fā)布的文件和簽名;

  5.使用PGP的程序獲取的發(fā)布者第二步發(fā)布的公鑰;

  6.使用公鑰校驗文件簽名

  說明:簽名算法中,密鑰的用處分別是:公鑰用于加密信息和驗證,私鑰用于解密和簽名。私鑰掌握在信息發(fā)布方,公鑰可以任意分發(fā)。信息發(fā)布方用密鑰進行對信息進行簽名,接收方在獲取公鑰后,可以用公鑰對發(fā)布方發(fā)布的信息+簽名進行驗證。如果驗證失敗則認為信息被篡改。在網(wǎng)絡中,我們經(jīng)常碰到的HTTPS協(xié)議,使用了同樣的機制。

  使用:由于PGP是商業(yè)應用程序,在CentOS/Linux中,具有同類功能的是GPG(也就是:GnuPG),同樣遵守OpenPGP數(shù)據(jù)加密標準( RFC 4880 ),沒有安裝可以用 yum install gnupg 安裝,命令是: gpg

  代碼如下:

  # 說明同上

  # 由于過程相對復雜,并且在實際使用中,校驗用的比較多,因此這里只介紹文件的校驗過程。

  # 在獲得文件和簽名時,我們先用gpg校驗簽名,此時文件必須存在

  $ gpg --verify downloaded-file-sign.asc

  這里有多種情況,如果你只有簽名,但生成簽名的文件不存在時(系統(tǒng)沒找到,一般應該放在同目錄下面),返回的是:

  代碼如下:

  gpg: 不含簽名的數(shù)據(jù)

  gpg: can‘t hash datafile: No data

  當你有文件的時候,但還沒有與簽名對應的公鑰時,gpg返回的信息類似下面:

  代碼如下:

  gpg: 于 2013年05月06日 星期一 18時27分27秒 CST 創(chuàng)建的簽名,使用 RSA,鑰匙號 47ACDAFB

  gpg: 無法檢查簽名:No public key

  注意:上面的信息在不同的文件和操作系統(tǒng)上生成的信息是不同的。但在沒有公鑰的時候,你可以發(fā)現(xiàn)gpg提供了一個該簽名對應的鑰匙號:47ACDAFB,這個是我們需要找的公鑰。

  上面已經(jīng)說過,發(fā)布者已經(jīng)將公鑰發(fā)布到公鑰服務器中,供驗證者下載,因此我們需要到公鑰服務器中下載公鑰,要下載公鑰,鑰匙號就很重要了。

  可用的公鑰服務器可以通過wikipedia 上的Key Server條目來查看常用的一些key服務器列表。這里使用hkp://pgp.mit.edu:

  代碼如下:

  # 獲取服務器上的public key

  $ gpg --keyserver hkp://pgp.mit.edu --recv-keys 47ACDAFB

  gpg: 下載密鑰‘47ACDAFB’,從 hkp 服務器 pgp.mit.edu

  gpg: 密鑰 47ACDAFB:公鑰“Stephan Mueller 《Stephan.Mueller@atsec.com》”已導入

  gpg: 沒有找到任何絕對信任的密鑰

  gpg: 合計被處理的數(shù)量:1

  gpg: 已導入:1

  --recv-keys要與--keyserver配合使用,導入密鑰對的公鑰之后,我們就能夠使用這個公鑰來驗證我們的簽名了。

  再次運行我們之前的驗證命令(gpg --verify sign-file),就可以看到驗證的結(jié)果了。

  代碼如下:

  #這時候我們再次驗證我們的簽名,就能得到驗證結(jié)果了

  $ gpg --verify downloaded-file-sign.asc

  gpg: 于 2013年05月06日 星期一 18時27分27秒 CST 創(chuàng)建的簽名,使用 RSA,鑰匙號 47ACDAFB

  gpg: 完好的簽名,來自于“Stephan Mueller 《Stephan.Mueller@atsec.com》”

  gpg: 警告:這把密鑰未經(jīng)受信任的簽名認證!

  gpg: 沒有證據(jù)表明這個簽名屬于它所聲稱的持有者。

  主鑰指紋: B0F4 2D33 73F8 F6F5 10D4 2178 520A 9993 A1C0 52F8

  看到這個結(jié)果,至少確認一個結(jié)果:這個文件是沒有被篡改過的。

  一般我們到這步也就差不多了。

  但注意消息里面有個警告,說明這個是未受信任的簽名認證。因為這個公鑰誰都可以發(fā)布上去的,如果你確實需要進一步認證,可以在簽名認證之前,你能還要聯(lián)系下真正的發(fā)布者,確認這個密鑰的信息——指紋!這個是這個算法的一個弱點。

  如果簽名認證已經(jīng)通過,你也就可以安心的在自己的系統(tǒng)內(nèi)編譯,安裝它了。

  上面就是校檢Linux系統(tǒng)中下載文件的完整性的方法介紹了,相信很多人都沒有校檢下載文件完整性的習慣,如果能夠在安裝前進行檢驗的話,就能夠減少很多不必要的麻煩。如果你還想了解更多Linux系統(tǒng)的相關知識,不妨多多關注系統(tǒng)之家吧。

標簽 文件

發(fā)表評論

0

沒有更多評論了

評論就這些咯,讓大家也知道你的獨特見解

立即評論

以上留言僅代表用戶個人觀點,不代表系統(tǒng)之家立場

其他版本軟件

熱門教程

人氣教程排行

Linux系統(tǒng)推薦

掃碼關注
掃碼關注

掃碼關注 官方交流群 軟件收錄