在软件中,术语“哈希”有多种含义,但我们在这里讨论的内容大致集中在维基百科所谓的“加密哈希函数”上。
什么是散列?
简而言之,哈希是字母和数字的字符串,旨在通过更小的、唯一的[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 种可能组合的格式。在这里,勾结是极不可能的。