在软件中,“ hash”这个词有多种含义,但是我们在这里讨论的是维基百科所谓的
“cryptographic hash function”.。
hash是什么
简而言之,hash是字母和数字的字符串,意味着通过一个较小的、唯一的代码来识别一组信息。您可能在其他地方看到过关于hash的文章。如果您看到了类似下面这样的随机文本字符串,那么它可能是一个“ hash”
各种hash格式都有一长串听起来奇怪的名字,比如:
- MD5
- SHA1
- Whirlpool
- CRC32
但是他们都做相似的事情。哈希是每个人都可以使用的东西,从普通用户到网络安全专家。
Hash技术
hash一开始可能看起来很奇怪和复杂,但实际上它非常简单。hash有点像图像缩略图,因为与它们标识的文件相比,它们非常小。
文件的大小可以是1KB 或100TB,hash的大小总是相同的。hash值总是相同的; 不管文件有多大,也不管用什么计算机来计算它
hash的任务集中在一件事情上: 分配一个唯一的值。
为什么独特的值在hash中如此重要?
很久以前,我开始使用哈希表,同时试图确保我的公司报告没有问题。我当时在一家银行工作,使用 MicrosoftExcel 查找旧数据,一开始是寻找重复的条目。
幸运的是,Excel 有一个突出显示重复值的简单选项:
但是发现单个文本框是没有用的,整个过程中有很多类似的数字。相反,我需要找到重复的行。
要做到这一点有很多技巧,但当时,我急于抓住这些令人尴尬的数字。我决定将整行相乘(如下所示) ,然后检查结果列是否有重复的结果。
因为结果总是唯一的,所以我可以很容易地标记重复的行。
不幸的是,他们并不总是独一无二的。我遇到了一个问题,两个非常明显不同的行碰巧得到相同的乘法结果,或“假阳性。”
我需要找到一种方法来显示电子表格中每个唯一行的绝对唯一值。
不幸的是,我最终做了很多额外的工作,手动检查每个重复的行。这总比提交一份糟糕的报告要好,但我知道还有更好的方法。
不久之后,我学到了一个技巧,它可以为每一行输出一个唯一的数字: hash。这是一种贯穿整个计算过程的技术。
我为什么要用hash文件?
首先,无论文件有多大,或者使用哪台计算机来计算它,hash值总是相同的。
这种唯一性带来了有价值的信息,让你:
- 查找重复的文件,如查找和删除重复的照片。任何具有相同hash的文件都是重复的-您不需要打开和比较它们。
- 确定一个文件-您和同事正在更新同一个文件并将其上传到服务器。如果服务器不显示谁发布了什么内容,那么如何在不逐行进行更改的情况下确定哪个内容是您的?只需将您的计算机hash与远程文件hash进行比较。
- 确保您下载的文件是正确的。例如,如果你从一个网站得到一个软件程序,你怎么知道该网站或上传被劫持或损坏?hash可以帮助检测问题。
- 将权重分配给文件。如果一个程序的旧版本比最新版本工作得更好,了解hash可以让您确定使用哪一个。
尽管哈希算法在计算机出现的早期就已经存在,但是最近它们已经被用作在互联网上快速指纹识别文件的一种方法。
如何在软件安全中使用hash?
安全软件和专业人员对哈希文件的主要任务是确定文件的状态,无论是好的还是坏的。例如,病毒数据库中显示的hash应该从您的计算机上被阻止。哈希被认为是安全的和众所周知的(如 Firefox 和 Chrome 浏览器)可以安装没有问题。
这些检查声誉的工具大部分都内置在软件中,这意味着程序检查哈希作为其操作的一个正常部分。
如何使用hash
虽然许多hash工具通常是内置的,但是可以手动检查结果。
使用hash的一种方法是检查来自不受信任的网站的下载。一些安全研究人员甚至会检查来自受信任位置的文件的哈希值,尤其是在保存到关键工作站或服务器时。
虽然有很多工具可以做到这一点,但我使用的是用于 Windows、 Mac 和 Linux 的开源 PeaZip 归档管理器。
要查看哈希,右键单击一个文件,选择文件管理器-文件工具-校验和/哈希文件,并选择“剪贴板”选项卡。
从那里,您可以双击 SHA256值并复制(CTRL + C 或 Apple + C)。此值是安全性分析的标准。
unisca如何使用hash
unisca为我们的客户执行的一项重要工作就是将坏的、过时的或恶意软件排除在早期开发过程之外。尽可能的将安全左移,避免SDLC后期的巨大修复成本。
当分析一个新程序时,unisca会根据我们的数据库检查是否存在问题。如果它是一个已知的良好文件,它将像正常情况下一样传递。如果一个文件是未知的或者风险分析结果不良 ,它就会被阻止。完全分析之后,任何具有相同hash的文件都将以相同的方式处理。