嵌入式基础– Hash Fundamentals

哈希是计算机科学中非常重要的主题,并提供广泛的功能。对于嵌入式软件开发人员而言,哈希在验证和保护嵌入式系统中起着重要的作用。在本文中,我们将研究密码哈希基础知识,并提供开发人员可以用来开始理解嵌入式安全性的基础。

让’首先看一下哈希的定义。散列是由散列函数基于提供给该函数的输入生成的值。哈希用于提供一个值,该值可用于验证信息的完整性,而无需向执行验证的一方透露该信息。例如,开发人员可以通过哈希函数运行其软件映像,以生成哈希值,客户或最终用户可以使用该哈希值来验证他们是否收到了正确的软件映像。

开发人员应将散列视为数据的唯一数字指纹。散列函数的好处是,最终用户可以通过将其散列与正式生成的散列进行比较来验证他们是否具有正确的软件,但是散列值不能用于生成信息。该过程是单向的。这提供了一种简单的方法来进行验证而不泄漏细节。

有几种不同的哈希函数可用于生成哈希,有时也称为哈希码或哈希值。一些常见的哈希值包括:

  • MD5 (120位)
  • SHA-1 (160位元)
  • SHA-3 (224位,256位,512位)

生成哈希后,将为输入数据生成固定数量的输出位。例如,常用的加密哈希SHA-1(安全哈希算法1)产生一个160位的值。开发人员可以通过将其数据馈入其SHA-1生成器来生成SHA-1哈希,甚至可以使用 在线发电机 去体验。简单数据,例如“Hello World!”生成下面的哈希值:

SHA-1(“Hello World!”)= 2ef7bde608ce5404e97d5f042f95f89f1c232871

哈希在嵌入式系统中扮演着几种不同的角色。首先,引导加载程序可以使用哈希来验证他们收到的软件映像确实是正确的映像。其次,哈希可以用作安全启动序列的一部分,以在启动期间验证固件映像的完整性。如果黑客试图将自己的代码注入到应用程序映像中,则存储的哈希将与存储在闪存中的应用程序不匹配,并表示该应用程序有问题。第三,哈希在服务器身份验证和数字签名中起作用。

嵌入式软件开发人员在选择他们的应用程序中将要使用的哈希算法时需要小心。散列函数可能需要大量计算周期,这意味着它们可能需要一段时间才能在资源受限的设备(例如微控制器)上进行计算。在使用散列函数之前,开发人员应考虑以下几点:

  • 确定他们的微控制器上是否有可以加速哈希计算的硬件加速器
  • 评估最适合其应用的算法。 (如果SHA-1足够,则无需使用SHA3-512

在嵌入式开发人员意识到这一点之前,散列将比CRC在嵌入式系统中更为普遍。’s和校验和。实际上,在某些地区它们可能已经存在!他们’在通用计算系统中已经使用了多年,并且由于安全性已成为许多连接系统中的主要问题,’很自然地,他们也进入基于微控制器的系统。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.