密码学:硬件或软件实现更有效吗

描述

本教程是旨在为产品开发工程师提供密码学快速学习指南的系列教程的一部分。每个部分都采用工程方法而不是理论方法。在本期中,您将了解加密解决方案的硬件和软件实现之间的区别,并深入了解一些常见应用程序。

比较两种加密方法

现代加密算法可以使用专用加密硬件或在通用硬件上运行的软件来实现。由于各种原因,专用加密硬件为大多数应用程序提供了更好的解决方案。表 1 列出了更需要基于硬件的加密解决方案的原因。

表 1.硬件与软件加密比较

 

基于硬件的密码 基于软件的密码学
1.使用专用硬件,因此执行速度更快。 1. 使用共享硬件,因此执行速度较慢。
2. 不依赖于操作系统。由用于操作硬件的专用软件支持。 2. 取决于操作系统和支持的软件的安全级别和功能。
3. 可以使用出厂配置,并将密钥和其他数据安全地存储在专用的安全内存位置。 3. 没有可用的专用安全内存位置。因此,容易受到密钥和数据窃取或操纵。
4. Maxim的硬件实现内置了针对PUF(ChipDNA)等逆向工程的保护。 4. 软件实现可以更容易地进行逆向工程。
5. 在硬件系统中,特别注意隐藏和保护私钥等重要信息,使其更难访问。 5. 在实施软件密码学的通用系统中,有更多的方法可以窥探和访问重要信息。一个例子是拦截计算机系统内传输的私钥。

 

当今密码学中的应用

了解安全启动和安全下载

基于嵌入式硬件的物联网设备已融入我们的日常生活:

家用设备,如 WiFi 摄像头、恒温器和烟雾探测器

医疗器械

可穿戴设备,包括健身追踪器和智能手表

工业机器,如工厂中的机械臂

几乎所有这些设备都包含访问 Internet 的启动固件或可下载数据,因此它们容易受到安全威胁的攻击。启动固件(设备的大脑)基本上保存在设备内部的非易失性存储器中。该软件会定期更新以纠正和增强某些功能,包括为WiFi摄像机添加新的入侵者检测算法,或者从工业机械臂的角度更好地定位焊缝。

在本教程中,我们将介绍安全启动以及在连接的设备中上传新固件所需的所有必要步骤。

保护物联网设备固件或数据的重要性

由于物联网设备必须可信,因此必须验证设备固件和关键数据的真实性。在理想情况下,启动固件和配置数据将在出厂时锁定。实际上,客户已经开始期望通过互联网提供固件更新和重新配置。不幸的是,这为恶意行为者使用这些网络接口作为恶意软件的渠道创造了机会。如果有人获得了对物联网设备的控制权,他们可能会出于恶意目的控制该设备。因此,任何声称来自授权来源的代码都必须经过身份验证,然后才能被允许使用。

攻击者可以通过各种方式将恶意软件传送到 IoT 设备(图 2):

通过对设备的物理访问,攻击者可以通过物理连接(例如USB,以太网等)引入恶意软件。

操作系统通常表现出通过补丁发现时已关闭的漏洞。攻击者可以通过访问未修补的系统来引入恶意软件。

通常,IoT 设备会联系更新服务器,以确定更新的固件或配置数据是否可用。攻击者可能会拦截 DNS 请求,并将 IoT 设备重定向到托管恶意软件或损坏配置数据的恶意源。

正版网站可能配置错误,以允许攻击者控制网站并将正版固件替换为包含攻击者恶意软件的固件。

usb

图2.攻击者可以渗透到未受保护的 IoT 设备与安全的 IoT 设备。

安全启动和安全下载有助于防止渗透并防止恶意软件注入。这意味着物联网设备可以信任从命令/控制中心收到的更新。如果命令/控制中心想要完全信任物联网设备,则需要执行验证物联网设备数据的额外步骤。

固件的身份验证和完整性

身份验证和完整性可以提供一种方法:

确保目标嵌入式设备仅运行授权的固件或配置数据。

确认数据受信任且随后未被修改。

允许使用加密来证明数据既真实又具有完整性。

使用加密数字签名,如信件底部的印章或手动签名。

通过身份验证和完整性,固件和配置数据在制造阶段加载,所有后续更新都经过数字签名。这样,数字签名就可以在设备的整个生命周期内实现信任。数字签名的以下功能对于提供安全性至关重要。

使用的数字签名必须由加密算法计算。

为了带来最高级别的安全性,算法必须是公开的并且经过充分验证。

对于我们的安全解决方案,我们将研究非对称加密算法,特别是FIBS 186 ECDSA。

应用于安全启动/下载的非对称加密

非对称加密使用公钥/私钥对进行算法计算(图 3)。

任何密钥对生成的开始都包括选择要用作私钥的随机数。

随机数被输入到密钥生成器中,计算开始输出公钥。

公钥是公开的(它可以自由分发给所有人,没有任何安全风险)。

但是,私钥是必须保密的关键信息。

usb

图3.非对称加密包括 ECDSA 密钥生成。

非对称加密中安全下载的基本原则是:

固件开发人员使用私钥进行签名。

嵌入式设备(或 IoT 设备)使用公钥进行验证。

非对称密钥加密的优点是什么?

嵌入式设备上不存储私钥。

攻击者无法检索私钥。

选择的算法 (ECDSA) 使得从公钥派生私钥在数学上不可行。

现在让我们看一个使用非对称密钥加密的研发设施必须发生的情况的示例。

我们从完整的固件开始。

固件必须经过 SHA-256 多块哈希计算。

私钥和哈希输入到 ECDSA 签名算法中。输出是一个唯一的签名,只能由私钥签名。

将我们的固件与签名相结合,并根据要求将其发送出去以供现场使用。

图 4 更详细地说明了这些要点。

usb

图4.非对称加密对一组数据或固件进行数字签名。

现在,让我们检查一下在字段使用过程中会发生什么。

嵌入式设备接收固件和签名。

固件将经过 SHA-256 多块哈希计算。

我们的嵌入式设备已经包含在研发设施生成密钥期间创建的公钥。

然后,签名和其他成分将用作ECDSA验证的输入。

ECDSA 验证的结果将确定嵌入式设备是否可以使用该固件。

如果结果是 PASS,则嵌入式设备接受同时具有真实性和完整性的固件。

如果结果为 FAIL,则固件将被拒绝。

观看此视频 “安全简短主题:嵌入式系统的安全固件下载”,了解有关如何将固件安全地下载到远程系统的更多信息。

使用 DS28C36 实现安全启动和安全下载

对于没有安全微控制器的嵌入式设备,DS28C36 DeepCover安全认证器是一种经济高效的基于硬件的IC解决方案(图5)。®

usb

图5.使用DS28C36,在经济高效、基于硬件的解决方案中安全启动和安全下载。

安全启动和安全下载的步骤:

如前所述,在研发设施中建立了用于安全启动或安全下载功能的系统公钥-私钥对。该对的系统私钥用于对固件或数据进行签名,最终由终端系统中嵌入的DS28C36进行验证。此系统私钥永远不会离开受控开发环境。该对的系统公钥安装在DS28C36的密钥寄存器位置,该位置具有“权威密钥”属性,这是DS28C36中的可配置设置。

系统私钥用于计算固件或数据的数字签名。

带有预编程系统公钥的DS28C36位于主机处理器的接口上。

当固件需要由处理器运行时,首先由处理器引导管理器检索,并以64字节的顺序块形式传送到DS28C36,以计算SHA-256哈希。

DS28C36完成SHA-256哈希计算后,处理器提供在开发环境中计算并附加到文件中的固件或数据的ECDSA签名。

DS28C36收到ECDSA签名后,处理器发送命令,使用预装的系统公钥进行签名验证。

如果DS28C36验证签名,则向处理器传送一个传递结果参数字节和一个设置为逻辑0的GPIO引脚。此引脚和参数字节结果的状态充当处理器的通过/不通过结果,以运行现在已知的受信任固件或数据更新。

此外,如果命令/控制中心希望信任DS28C36,可以选择额外的ECDSA签名引擎。

总之,我们展示了一种经过验证的安全解决方案,用于使用DS28C36进行安全启动或安全下载,以解决物联网设备面临的威胁。这款安全认证器IC减轻了繁重的计算数学负担,以证明固件或数据更新的真实性和完整性。

有关Maxim安全启动和安全下载解决方案和服务的更多信息,请参见以下内容:

DS28C36 I2C 接口深盖安全身份验证器

DS28E36 1线接口深盖安全认证器

转至安全实验室工具执行此序列示例,或使用Maxim的其他附加硬件实验室。

双向身份验证以保护您的 IP

双向(或相互)身份验证是安全通信的重要组成部分。沟通双方都应确定他们的对手是可以信任的。这可以通过证明拥有私人信息来实现。这些信息可以在各方之间共享,也可以完全保密,只要存在证明拥有的能力。

对称身份验证系统要求在给定通信中的所有参与者之间共享信息。这些信息通常被称为“秘密”。秘密是只有需要它的人知道的信息。该密钥与对称身份验证算法(如 SHA)以及参与者之间共享的其他数据一起使用。在通信双方生成匹配签名的能力证明拥有机密。

非对称身份验证系统(如ECDSA)使用不在各方之间共享的隐藏信息(称为“私钥”),但用于生成公众可以知道的信息(称为“公钥”)。正确使用公钥证明拥有私钥,因为需要私钥来解锁被公钥锁定的消息,反之亦然。

收件人身份验证

要在发件人-收件人配置中对收件人设备进行身份验证,将向收件人发送一段随机数据(也称为“质询”)。除了设备之间的任何共享数据外,质询还通过具有密钥或私钥的签名操作来运行,以生成“响应”签名。响应签名可以由发送方验证,因为发送方拥有共享密钥或与接收方私钥对应的公钥。此过程的一般流程如图 6 所示。

usb

图6.发件人-收件人系统中的收件人设备身份验证。

身份验证通常取决于生成签名的算法,这些签名证明拥有参与者的隐藏信息,但很难发现信息本身。这些称为单向函数。SHA和ECDSA就是这种算法的例子。

发件人身份验证

为了证明各方都是可以信任的,发件人还必须向收件人证明真实性。下面以经过身份验证的写入形式显示了此过程的示例。

在图 7 中,发送方正在将新数据写入接收方设备。但是,要完成写入,收件人必须通过要求发件人根据该信息以及发件人的隐藏数据(秘密或私钥)生成签名来验证信息的真实性。通过使用共享密钥或与发件人私钥对应的公钥,收件人可以验证签名是否真实。

usb

图7.发送方将新数据写入接收方设备。

使用单向功能可能允许任何窃听者查看正在传输的所有数据,但它会阻止他们确定产生与数据关联的签名的隐藏信息。没有这些隐藏的信息,窃听者就不能成为冒充者。

这种双向身份验证模型可以轻松用于确保存储在设备中的知识产权得到很好的保护,免受造假者的侵害。

TRNG(真随机数发生器)输出和典型用途 Maxim的ChipDNA™安全认证器具有内置TRNG(图8)。这由设备用于内部目的。但他们也有一个命令,如果用户请求,它会发出 TRNG 输出。此时,TRNG 输出长度的最大长度为 64 字节。此硬件 NIST 兼容的随机数源可用于加密需求,例如主机处理器生成“质询(随机数)”。

usb

图8.ChipDNA安全认证器包括一个内置的真随机数生成器。

与TRNG相关的有三种不同的规格

美国国家标准研究院 SP 800-90A

IST SP 800-90B

美国国家标准研究院 SP 800-90C

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分