0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

保护和控制存储在闪存中的软件

星星科技指导员 来源:嵌入式计算设计 作者:Kerry Maletsky 2022-10-24 11:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

许多系统使用外部标准闪存芯片来存储不包括嵌入式非易失性程序存储的处理器的操作程序。这很棒,因为它允许轻松的闪存扩展和软件修改,也许在生产线上作为客户下载或在维护操作期间。缺点是OEM失去了对闪存内容的控制,可能允许未经授权的复制或修改。

然而,这不仅仅是需要担心的收入损失。如果将恶意软件下载到系统中,OEM 的声誉可能会受到影响。对于医疗设备等系统,OEM甚至可能面临责任问题。

夺回安全性

硬件安全芯片可以帮助将控制权带回 OEM。可编程、高度安全的智能卡处理器已经存在了一段时间,但需要写入额外的固件,并且可能会给系统增加不可接受的成本。另一方面,硬件认证芯片是交钥匙设备,不需要内部编程或详细的加密算法知识,价格适中。

这些芯片的工作方式非常简单。系统微处理器向芯片发送质询,然后芯片使用加密算法将质询与安全存储在非易失性存储器中的密钥相结合。然后将响应发送回系统。芯片内部实现的算法的选择方式是,观察总线的观察者可以看到挑战和响应,无法确定秘密的价值。根据芯片存储密钥的安全性,复制这样的个性化芯片可能非常困难。

虽然这些芯片可以以各种方式用于增加系统的安全性,但有两个软件保护功能特别令人感兴趣。第一种安全启动提供了一种方法来确保仅执行真实的程序,同时仍允许进行升级。第二种是反克隆,可防止未经授权的系统构建或设计的直接复制。

安全启动

片上系统(SoC)器件通常包括一个小型引导ROM,其中包含用于在执行外部闪存内容之前初始化芯片操作的程序。该引导ROM可以很容易地重新编程,以与外部认证芯片配合使用。

在系统发货之前,OEM 会将验证值与程序一起存储在闪存中。这是通过将程序摘要与密钥相结合来计算的,其副本存储在身份验证芯片中。哈希算法(如安全哈希算法 1 (SHA-1) 或 SHA-2)用于生成程序摘要。黑客可能能够更改闪存的内容,但在不知道秘密的情况下,无法生成新的验证值。

在引导ROM中执行代码期间,微处理器实时生成存储在闪存中的可执行程序的摘要。然后,此摘要作为质询发送到身份验证芯片。芯片将摘要与其内部存储的机密相结合,响应可以被视为一种程序签名。如果响应与闪存中存储的验证值匹配,则允许继续执行闪存内容;如果没有,微处理器可以循环到下载器,等待加载有效的闪存映像。

如果黑客可以将修改后的软件发送到身份验证芯片,使用逻辑分析仪读取响应,然后将此验证值与修改后的代码一起存储在闪存中,则此方案可能存在安全漏洞。但是,有几种方法可以解决此问题。

最好的解决方案是使用身份验证芯片,该芯片不返回预期的验证值,而是在输入时获取该值并返回真/假以指示匹配。摘要通常太大,芯片太慢,攻击者无法猜测修改代码的正确验证值。为了获得更高的安全性,安全芯片可以加密方式将随机质询(或者可能是当前时间或处理器序列号)与真/假相结合,并将其返回给处理器。这样,一种简单的开关电路修改就不能用来欺骗处理器。

另一种方法是机械地防止访问安全芯片的引脚。对于ASIC SoC,安全芯片可以芯片形式购买,并以多芯片封装集成到主封装中。另一种方法是购买类似于BGA封装的安全芯片,这不允许探测,因为焊盘是完全隐藏的。或者,电路板上的安全芯片可以保形涂上环氧树脂,以防止进入。

在某些情况下,系统可能能够使用引导ROM中的软件计算闪存程序的摘要。但是,在启动时验证整个内存阵列可能过于耗时,特别是对于具有较大闪存的系统。有两种方法可以解决此问题:增量验证或硬件加速。

使用增量验证方案时,仅使用引导ROM代码验证存储在闪存中的模块加载器。在加载每个新模块以执行之前,模块加载程序使用身份验证芯片在该模块上执行相同的验证过程。这些模块还可以在空闲时间提前验证,以提高事件响应性能。

现代处理器并不总是包括硬件哈希引擎,但高级加密标准(AES)或三重数据加密标准(3DES)引擎非常普遍。通过将加密引擎配置为在基于密码的消息身份验证代码 (CMAC) 模式下运行,可以轻松使用这些加密算法以硬件速度生成程序摘要。

反克隆

大多数 OEM 现在使用分包商来构建其设备。因此,系统有时会被过度构建,以便在本地销售或可能在灰色市场上销售。或者,竞争对手或黑客可能会克隆系统并以较低的成本出售,因为他们不必投资软件开发。如果系统仅使用现成的组件,则可以降低制造成本,但这会使未经授权的系统更容易构建。

使用硬件安全芯片可以结束这些克隆,而不会显著增加系统的大小或成本。编译到嵌入式软件中有许多测试,以确保是否存在正确编程的硬件安全芯片。OEM控制编程到芯片中的秘密,并控制编程芯片到分包商的分配。作为另一种选择,芯片供应商可以为 OEM 管理芯片的个性化。

有几种方法可以实现这些软件测试。一种简单的方法是在软件中编译挑战和预期响应。如果安全芯片丢失或具有错误的机密,则响应不匹配,并且可以禁用系统或返回下载模式以获取更正的文件。在程序中的许多地方添加这些检查,黑客可能很难删除它们,特别是当代码在初始加载时由ROM验证时。

这些软件测试的其他选项包括将质询生成和响应检查分布在程序的各个部分。来自安全芯片的响应可用作动态软件模块解密的密钥。响应可以使用单独的常量进行 XOR‘d,然后用作跳转向量。如果安全芯片支持它,则可以从代码的不同部分发送多个质询并组合以生成单个响应。

在典型的实现中,芯片中包含许多不同类型的测试,因此即使一种机制被击败,其他机制仍然可以完成其工作。理想情况下,这些测试依赖于安全芯片中存储的多个密钥,确保即使泄露一个密钥值,也能保持整体系统安全性。

秘密安全

如果很容易从身份验证芯片中获取秘密,那么所有这些都无关紧要。在这种情况下,黑客可以创建正确的软件验证值,或者系统克隆者可以使用简单的微处理器对安全芯片进行建模。认证芯片至少以两种方式保护机密:使用强大的加密算法和使用特殊的硬件芯片设计技术来防止对芯片的直接或间接攻击。

过去,某种形式的线性反馈移位寄存器(LFSR),也称为循环冗余校验(CRC),被用作哈希算法。由于实施成本低,这些算法很常见,但是对于现代高速PC,这些算法通常可以在短时间内进行分析和破解。

如果密钥大小太小,LFSR / CRC算法尤其弱,因为使用相对简单的软件可以进行暴力攻击。对于大小是否足够大,没有通用规则,但大多数现代系统使用 128 位或更长的机密。

目前,SHA 算法是安全启动和反克隆的最佳选择。SHA-1今天已经足够安全,但它有一些已知的弱点,并且已经被SHA-2系列(包括SHA-256和SHA-512等)所取代。由于大多数嵌入式系统的使用寿命以年为单位,因此使用最新算法将确保系统的安全性,即使在其使用寿命结束时也是如此。

也可以购买使用公钥(非对称)算法的身份验证芯片,这些芯片通常更慢且更复杂。系统端的软件也可能要复杂得多。与使用哈希算法的身份验证芯片相比,它们可以提高安全启动方案的安全性,同时对软件克隆提供很少或根本没有额外的好处。

但一个强大的算法是不够的。如今,微探针很容易在eBay上购买,因此对于芯片来说,防止攻击者入侵是很重要的,攻击者可能会蚀刻封装并微探针一些内部节点来获取这些秘密。现代芯片通过在整个芯片上安装有源内部屏蔽,超过三层窄宽度金属,内部模块上的额外加密以及没有暴露的测试垫来防止这种情况。

黑客还可能尝试高或低电压或过高的时钟频率,以使身份验证芯片泄露其秘密。这些攻击可以通过内部篡改检测器来防御,如果尝试在正常工作范围之外进行操作,则会关闭芯片。这些是常见的安全块,大多数芯片制造商在通常的篡改块之外添加其他专有安全组件。

嵌入式实施

嵌入式系统中的认证芯片可以检测对存储在闪存中的系统软件的未经授权的修改或复制。此外,它们还可以以各种其他方式用于交换会话加密密钥,向远程服务器提供节点身份验证,验证序列号存储,安全地存储制造和/或维护历史记录以及各种其他与安全相关的功能。

高安全性认证芯片不需要设计人员具备任何特殊的加密知识,并且可以集成到嵌入式系统中,而不会影响上市时间。它们通常采用小型封装,甚至适用于对空间最敏感的应用。其中一款芯片是阿特梅尔 AT88SA102S。它将SHA-256算法与256位密钥长度和易于使用的单线接口相结合,与所有微处理器兼容。该设计包括一个覆盖整个电路的有源屏蔽、篡改检测器和加密的内部存储器。

审核编辑:郭婷

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

    关注

    68

    文章

    20148

    浏览量

    247052
  • 芯片
    +关注

    关注

    462

    文章

    53534

    浏览量

    458992
  • 微处理器
    +关注

    关注

    11

    文章

    2416

    浏览量

    85330
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    戴尔科技全闪存存储PowerStore有何独特之处

    近日,IDC最新发布的全球企业存储系统季度跟踪报告,戴尔科技集团再度蝉联全闪存存储供应商收入榜首!
    的头像 发表于 10-15 14:19 1409次阅读

    如何将触摸校准存储到 SPI 闪存

    将触摸校准存储到 SPI 闪存
    发表于 09-04 07:06

    Flash闪存-RSUN2M:高性能微型 SPI 闪存,开启智能存储新体验

    万物互联与智能终端飞速发展的时代,存储器件的性能、可靠性与小型化成为设备创新的关键支撑。RSUNTECH重磅推出的RSUN2M串行闪存存储器,以卓越性能、极致设计与全面保障,为各类智
    的头像 发表于 08-19 15:23 1645次阅读
    Flash<b class='flag-5'>闪存</b>-RSUN2M:高性能微型 SPI <b class='flag-5'>闪存</b>,开启智能<b class='flag-5'>存储</b>新体验

    什么是Flash闪存以及STM32使用NAND Flash

    处理三个方面来比较NOR和NAND的可靠性。 耐用性 NAND闪存每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的
    发表于 07-03 14:33

    如何使用闪存来保存 CYBT-343026 的数组等数据?

    您好,我正在尝试使用 CYBT-343026 构建一块电路板。 我想将数据存储一个简单的数组。T 即使断电,数据也应该保留。我可以使用EEPROM,但由于数据非常简单,所以我想使用内部闪存
    发表于 06-25 06:33

    Flash闪存技术是什么?创世SD NAND Flash又有何独特之处?#嵌入式开发 #存储芯片 #闪存

    闪存
    深圳市雷龙发展有限公司
    发布于 :2025年06月05日 17:58:25

    划片机存储芯片制造的应用

    划片机(DicingSaw)半导体制造主要用于将晶圆切割成单个芯片(Die),这一过程在内存储存卡(如NAND闪存芯片、SSD、SD卡等)的生产中至关重要。以下是划片机
    的头像 发表于 06-03 18:11 743次阅读
    划片机<b class='flag-5'>在</b><b class='flag-5'>存储</b>芯片制造<b class='flag-5'>中</b>的应用

    控制器读取闪存软件信息时,软件信息部署在哪里? 是 SRAM 吗?

    我对 PMG1 闪光灯有疑问。 1.微控制器读取闪存软件信息时,软件信息部署在哪里? 是 SRAM 吗? 2.微
    发表于 05-23 06:22

    NXP MCU RT1166如何使用JTAG/SWD工具将数据存储到内部闪存

    我需要使用 JTAG 将数据存储到内部闪存。我能够使用 JTAG/SWD 工具 ARM J-Link 将它们存储 FlexSPI1 连接
    发表于 04-01 06:54

    得一微电子亮相2025闪存市场峰会

    近日,CFMS | MemoryS 2025闪存市场峰会(以下简称“MemoryS 2025”)深圳前海举办。作为国内领先的存储主控芯片设计企业,得一微电子(YEESTOR)聚焦
    的头像 发表于 03-25 09:44 1307次阅读

    NAND闪存的工作原理和结构特点

    NAND闪存是一种非易失性存储技术,广泛用于固态硬盘、USB闪存盘和手机存储,具有高速读写和耐用性强的特点。
    的头像 发表于 03-12 10:21 4582次阅读
    NAND<b class='flag-5'>闪存</b>的工作原理和结构特点

    嵌入式系统存储软件优化策略

    了这个数值的写入量之后,厂商就不再给予质保服务。耐用性两个指标之一。 FW (Firmware) :由于eMMC内部控制器属于软件编程控制器,会需要固件,eMMC
    发表于 02-28 14:17

    EMMC闪存的工作原理解析 EMMC存储的读写速度测试

    EMMC闪存的工作原理解析 结构组成 EMMC是一种基于NAND闪存存储解决方案,它集成了控制器和NAND闪存在一个单一的封装
    的头像 发表于 12-25 09:46 5243次阅读

    EMMC存储在手机的应用

    存储技术,它集成了控制器和NAND闪存在一个单一的封装。这种集成设计简化了手机制造商的设计和制造过程,因为它减少了需要集成的组件数量。EMMC遵循JEDEC标准,支持多种接口,如e
    的头像 发表于 12-25 09:36 2509次阅读

    缓存技术软件开发的应用

    现代软件开发,随着数据量的爆炸性增长和用户对响应速度的高要求,缓存技术成为了提升系统性能的重要手段。缓存技术通过将数据存储离用户更近的
    的头像 发表于 12-18 09:32 1131次阅读