軟件來源的鑑別

概述
互聯網已經廣泛普及。帶寬越來越高,網絡上可供下載的軟件越來越多。這些軟件方便我們的生活與工作,解決我們的問題的同時,也包含着誤碼和帶毒的風險。相同軟件,往往存在多個可用下載地址。網絡傳輸有時會出錯,導致下載到的軟件不可用。用含有錯誤的軟件光盤映像刻盤的結果是白白浪費時間和光盤。***也利用網絡,將***、病毒等隱藏在看起來有用的網絡軟件中。當然,從官網下載一般比較不會含有惡意代碼,但是一些遠隔重洋的官網常常會很慢,而且由於傳輸距離可能很遠導致誤碼較多。使用散列值(也稱爲哈希,Hash)校驗,可以確認就近下載到的文件與官方來源一致,防止下載到無用或者被惡意篡改的文件。如果軟件含有數字簽名,則能夠確認其是否未經篡改的來自特定的發行者。
散列值
散列函數(或散列算法,Hash Function)是從任何長度數據創建小的數字“指紋”的方法。散列將數據打亂混合計算,得到一個稱爲散列值的結果。散列值看起來通常是一個短的隨機字母和數字組成的字符串。用作校驗目的的散列函數是一個“單向”操作:對於給定的散列值,沒有實用的方法可以計算出一個原始輸入,也就是說很難僞造。被廣泛使用的這類散列函數包括MD5,SHA-1,SHA-256等。許多軟件在官網下載頁面上提供了散列值。軟件下載完成後,使用散列工具計算下載到的文件的散列值,與官網上的散列值(如圖1所示)比對後即可確認所下載的軟件與官網發佈的是否完全一致。
wps_clip_image-25456
圖 1 網站上給出的軟件對應散列值(Hash)
數字簽名
數字簽名就是附加在數據單元上的一些數據,或是對數據單元所作的密碼變換。這種數據或變換允許數據單元的接收者用以確認數據單元的來源和數據單元的完整性並保護數據,防止被人(例如接收者)進行僞造。
數字簽名(Digital Signature)技術是不對稱加密算法的典型應用。數字簽名的應用過程是,數據源發送方使用自己的私鑰對數據的散列值進行加密處理,完成對數據的合法“簽名”,數據接收方則利用對方的公鑰來驗證收到的“數字簽名”。由於只有使用與公鑰對應的私鑰產生數字簽名值能通過驗證運算,所以數字簽名是不可篡改,不可抵賴的。
公鑰和簽名者的身份標識一起構成了證書,可信任的證書被可信任的證書頒發機構所簽署。如果軟件被篡改,或者證書被篡改,都會導致簽名的驗證呈現無效的狀態(如圖6所示)。
計算散列的工具和方法
雖然Windows系統內部廣泛使用MD5、SHA-1等常用散列算法,但是系統並沒有提供一個計算MD5的程序或者命令。網絡上有大量的計算散列的軟件可供下載,可以在搜索引擎上搜索並參考口碑選擇一個。使用Cygwin的相關dll,可以在Windows中運行Linux環境下的md5sum,sha1sum這兩個命令,本文附帶有其下載。將壓縮包中所有文件解壓到C:\Windows\System32下,即可在開始->運行->cmd.exe所打開的命令行窗口中使用這兩個命令計算文件的散列值,如圖2所示。
wps_clip_image-16324
圖 2 使用md5sum.exe和sha1sum.exe命令計算散列值
Linux內置有md5sum, sha1sum這兩個命令。在終端中運行md5sum <filename>,或者sha1sum <filename> 即可得到相應的散列值。
檢驗數字簽名的方法
含有數字簽名的軟件在系統中可以通過右鍵打開文件屬性對話框。在數字簽名頁,點擊詳細信息,即可查看其數字簽名的有效性。下面圖3-圖5是檢查有效的Adobe Reader 安裝包的數字簽名示例。圖6是使用工具篡改內容之後的呈現無效結果的示例。
wps_clip_image-29646
圖 3 查看文件屬性
wps_clip_image-23957
圖 4 文件屬性-數字簽名
wps_clip_image-11200
圖 5 有效的數字簽名示例
使用二進制文件編輯工具,故意修改文件中的一個比特後,檢驗結果如下:
wps_clip_image-1840
圖 6 無效的數字簽名示例
小結
通過散列或數字簽名對網絡下載的軟件進行校驗,充分利用豐富的互聯網資源的同時,拒絕散列值不一致的文件,拒絕數字簽名無效的文件,將有效的提高效率和維護系統的安全。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章