什么是哈希?看看軟件中的唯一標識符
在軟件中,術語“哈希”有多種含義,但我們在這里討論的內容大致集中在維基百科所謂的“加密哈希函數”上。
什么是散列?
簡而言之,哈希是字母和數字的字符串,旨在通過更小的、唯一的[1]代碼來識別一組信息。您可能已經其他地方看到過有關散列的文章。如果您看到如下所示的隨機文本字符串,則它可能是“哈希”。
各種哈希格式帶有一長串聽起來很奇怪的名稱,例如:
- MD5
- SHA1
- 漩渦浴缸
- CRC32
......但他們都做類似的事情。哈希是每個人都可以使用的東西,從普通用戶到網絡安全專家。
散列是一種非常簡單的技術
散列處理乍一看似乎很奇怪和復雜,但實際上非常簡單。哈希有點像圖像縮略圖,因為與它們識別的文件相比,它們很小。
該文件可以是從 1 KB 到 100 TB 的任何大小,并且哈希將始終具有相同的大小。并且哈希值始終相同;無論文件有多大或使用什么計算機來計算它。
散列的任務集中在一件事上:分配一個唯一的值。
為什么唯一值在散列中如此重要?
我很久以前就開始使用哈希,同時試圖確保我的公司報告沒有問題。我在一家銀行工作,使用 Microsoft Excel 查找舊數據,首先是查找重復條目。
幸運的是,Excel 有一個簡單的選項來突出顯示重復值:
但是找到單個細胞沒有用。整個過程中有很多相似的數字。
相反,我需要找到重復的行。
有很多技巧可以實現這一點,但當時,我急于抓住這些令人尷尬的附加功能。我決定將整行相乘(如下所示)并檢查結果列是否有重復結果。
將所有單元格相乘以獲得唯一值。
因為結果總是唯一的,所以我可以很容易地標記重復的行。
具有相同輸入和相同輸出的一行(紅色)。
不幸的是,它們并不總是獨一無二的。我遇到了一個問題,兩個非常明顯不同的行碰巧得到相同的乘積結果,或“誤報”。
具有不同輸入但輸出與其他兩行相同的附加行(紅色)。
我需要找到一種方法來為電子表格中的每一行顯示一個絕對唯一的值。
不幸的是,我最終做了很多額外的工作,手動檢查每個重復的行。這比提交糟糕的報告要好,但我知道有更好的方法。
不久之后,我了解到一種可以為每一行提供唯一數字的技巧:散列。這是一種在整個計算過程中使用的技術。
我為什么要使用哈希文件?
首先,無論文件有多大或使用什么計算機計算它,散列值總是相同的。
這些獨特的價值攜帶著有價值的信息,讓您:
- 查找重復文件,例如查找和刪除重復照片。任何具有相同哈希值的文件都是重復的——您無需打開和比較它們。
- 識別文件- 您和同事正在更新同一個文件并將其上傳到服務器。如果服務器不顯示誰發布了什么,您如何在不逐行更改的情況下確定哪一個是您的?只需將您機器的哈希值與遠程文件哈希值進行比較即可。
- 確保您下載的文件是正確的。例如,如果您從某個網站獲取軟件程序,您如何知道該網站或上傳的內容被劫持或損壞?哈希可以幫助檢測問題。
- 為文件分配信譽。如果一個程序的舊版本比最新版本運行得更好,知道散列值可以讓您確定使用哪個版本。
盡管散列法自計算機早期就已存在,但最近它們已被用作在 Internet 上快速提取文件指紋的一種方式。
如何在安全中使用哈希?
安全軟件和專業人員對哈希文件的主要任務是確定文件的狀態,是好是壞。例如,出現在病毒數據庫中的散列應該從您的計算機中被阻止。可以毫無問題地安裝被認為安全且眾所周知的哈希(例如 Firefox 和 Chrome 瀏覽器)。
大多數用于檢查信譽的工具都內置在軟件中,這意味著程序將檢查哈希值作為其正常操作的一部分。
Firefox 在后臺使用哈希來判斷文件是否是惡意的
Sonatype 如何使用哈希
Nexus Firewall為客戶執行的一項重要工作是將不良、過時或惡意軟件排除在開發過程之外。
分析新程序時,會根據我們的數據庫檢查它是否存在問題。如果它是一個已知的好文件,它會照常傳遞。如果文件未知或名聲不好(下面紅色和黃色的對象),它會被阻止。在對它們進行全面分析后,任何具有相同哈希值的文件將始終以相同的方式處理。
無論是作為優秀軟件獲得綠燈還是被禁止使用,散列有助于確保其根據您的政策進行編目和管理。
您還可以在軟件中手動檢查哈希值:
Sonatype 圖像中列出的散列示例。
今天如何使用哈希
雖然許多散列工具通常是內置的,但可以手動檢查結果。
使用哈希的一種方法是檢查來自不受信任網站的下載。一些安全研究人員甚至會檢查來自受信任位置的文件的哈希值,尤其是當保存到關鍵工作站或服務器時。
雖然有許多工具可以執行此操作,但我使用適用于 Windows、Mac 和 Linux 的開源PeaZip 存檔管理器。
要查看哈希,請右鍵單擊文件,選擇文件管理器-文件工具-校驗和/哈希文件,然后選擇“剪貼板”選項卡。
從那里,您可以雙擊 SHA256 值并復制(CTRL+C 或 Apple+C)。這個值是安全分析的標準。
使用 VirusTotal
現在您有了這一長串文本,您可以查看它在 VirusTotal.com 等服務中的聲譽。這將顯示該文件是被認為是好的、壞的還是未知的。只需單擊“搜索”選項卡并粘貼值。
解釋你的分數
良好的聲譽是 0 分,意思是“零威脅”。選擇使用高于 0 分的文件有一些注意事項。如果得分為 1 或 2 可能被視為“誤報”或防病毒工具過于謹慎,則得分高于 3 應采取額外措施。這些可能包括研究作者、在安全沙箱中進行交互或其他預防措施。
如果沒有如下圖所示的信譽(“未找到匹配項”),則可能未評估該文件。
此時,您可以將文件擱置一旁,稍后檢查或假設它不安全并刪除。
哈希與數字簽名、密碼學或加密貨幣相關嗎?
盡管所有這些工具都使用散列作為其操作的一部分,但它們是不同的主題。簡而言之:
- 密碼學和數字簽名使用散列來確保加密文件在發送者和接收者之間不會被更改。
- 加密貨幣使用復雜形式的數字簽名進行交易。
—哈希是一種具有多種用途的簡單工具,包括復制、安全和聲譽。這些功能內置于許多軟件程序和工具中,但您可以使用它們來解決當今的計算問題。
有興趣了解 Sonatype 如何使用 AI 分析來建立文件信譽的軟件開發團隊可以安排今天的演示。
---
注:
[1]本文的一位讀者聯系了我,讓我知道稱其為“獨特”比稱其為“獨特”更為準確。就像一個人只能為他們的銀行賬戶選擇這么多可能的密碼一樣,可能的哈希值也有一個限制(數百萬或更多)。因此,可以將相同的哈希值分配給不同的文件。這稱為“散列沖突”。
處理完全唯一的值的最佳方法是使用使用 SHA 256 的高質量散列工具,這是一種具有 256^32 種可能組合的格式。在這里,勾結是極不可能的。