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

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

3天内不再提示

数据完整性:验证数据未被更改

星星科技指导员 来源:ADI 作者:jwallrabenstein 2023-02-07 11:27 次阅读

我们怎么知道展出的著名艺术品是真实的而不是伪造的?这显然不是一件容易的事,因为艺术品伪造行业估计每年产生约30亿美元的收入。艺术家经常在他们的原创作品上签名,但很难区分原始签名和复制品。

识别伪造品的一种方法是利用原子弹,或者更确切地说,在14年代原子弹试验之后在所有有机材料中发现的高碳-1960同位素比率的特征。如果用于结合油漆中颜料的有机物来自在此期间之前死亡的植物,则碳-14的比例将大大低于更现代油漆中的比例,从而使调查人员能够可靠地识别现代伪造品。

与艺术一样,我们经常更关心数据的真实性,而不是其他人是否能够查看它。例如,我们如何知道设备上运行的代码是真实的?我们并不总是关心隐藏代码 - 任何人都可以查看开源的u-boot引导加载程序代码。但是,在开始执行之前,我们的设备能够验证引导加载程序代码是否未经更改且真实,这一点至关重要。

本博客介绍了消息身份验证代码和数字签名,它们是验证数据的完整性(数据是否已更改?)和真实性(谁生成了数据?)的加密方法。但是,为什么不直接使用校验和或CRC来验证数据是否未被更改呢?正如我们将在下一节中看到的那样,不幸的是,它们无法抵御故意修改数据的对手。

为什么CRC不合适

验证数据是否已被更改的一种众所周知的方法是添加错误检测代码,例如循环冗余校验 (CRC)。例如,考虑由多项式 x+1 生成的 1 位 CRC。这相当于添加一个偶数奇偶校验位,如果数据中的 1 个数为奇数,则在数据后附加 1,否则附加 0。

如果我们10010111输入数据,我们可以看到数据中有一个奇数个 1,所以我们的奇偶校验位将是 1。那么,为什么这种有效的错误检测方案不适合确保完整性和真实性呢?

问题在于CRC相当于艺术家的签名。如果我们像CRC伪造者一样思考,设备怎么会被愚弄,接受更改后的数据不变?首先,让我们采用最简单的情况:假设数据及其CRC一起存储在未受保护的内存(例如闪存)中。攻击者需要做的就是用自己的数据覆盖原始数据,然后计算适当的CRC并将其附加到他们的数据中。当设备读取更改后的数据时,它将计算CRC并验证其是否与攻击者生成的CRC匹配,接受更改后的数据为原始数据!对于此攻击的真实示例,本演练详细解释了黑客如何通过操纵 Linux 内核中的 CRC 来控制 Docker 服务器。

poYBAGPhxR2AOXhOAACVToiOJCA426.png

规避 CRC:(左)原始代码和 CRC 通过验证,(中间)具有对抗性修改和原始 CRC 验证失败的代码,(右)具有对抗性修改和对抗性 CRC 通过验证的代码

为了使攻击者更难,该设备可以将CRC存储在一次性可编程(OTP)存储器中。不幸的是,这并不能消除问题。虽然CRC是检测通道噪声或不稳定单元良性错误的好方法,但它们不能防止主动恶意修改。

假设我们前面的示例数据用于启用或禁用不同的产品功能,具体取决于客户选择的许可证模型。如果高价值功能位于最左侧的位中,则能够更改我们的示例向量10010111将更左侧的位翻转为 1s 将启用这些功能,而无需为价格较高的许可模型付费。对于对手来说,这是微不足道的:

原始数据 修改后的数据
10010111 1 11110111 1

由于 1 位 CRC 在原始数据中为 1(表示数据中的奇数为 1),因此对手只需要确保修改后的数据也有奇数 1。通过将最左边的两个 0 翻转为 1,攻击者启用了两个额外的高价值功能,而无需修改安全存储在 OTP 中的 CRC 检查位。此策略也适用于实际应用中使用的较大 CRC。

重要的一点是,CRC仅提供良性错误保护,例如通信通道上的噪声或不稳定的SRAM单元。当攻击者主动尝试修改数据时,他们可以以一种不会改变从原始数据生成的CRC的方式进行修改。

审核编辑:郭婷

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

    关注

    38

    文章

    7151

    浏览量

    161998
  • 服务器
    +关注

    关注

    12

    文章

    8120

    浏览量

    82522
  • crc
    crc
    +关注

    关注

    0

    文章

    191

    浏览量

    29195
收藏 人收藏

    评论

    相关推荐

    构建系统思维:信号完整性,看这一篇就够了!

    提供了有力的保障。信号完整性将持续引领硬件设计的发展,为创造更稳定、更高效的电子产品奠定坚实基础。 文中提到的华秋DFM软件可以有效帮助大家验证和学习,通过 检查设计规则 ,以确保生产出的PCB能够满足
    发表于 03-05 17:16

    电源完整性设计的重要三步!

    在现代电子设计中,电源完整性是PCB设计不可或缺的一部分。为了确保电子设备有稳定性能,从电源的源头到接收端,我们都必须全面考虑和设计。如电源模块、内层平面以及供电芯片等,通过精心设计和优化,才能实现
    发表于 02-21 21:37

    T10 PI技术确保数据完整性

    电子发烧友网站提供《T10 PI技术确保数据完整性.pdf》资料免费下载
    发表于 11-10 10:39 0次下载
    T10 PI技术确保<b class='flag-5'>数据</b>的<b class='flag-5'>完整性</b>

    信号完整性分析

    手工连线面成的样机同规范布线的最终印制板产品一样都能正常工作。 但是现在时钟频率提高了,信号上升边也已普遍变短。对大多数电子产品而言,当时钟频率超过100MHz或上升边小于1 ns时,信号完整性效应
    发表于 09-28 08:18

    基于PDN共振峰的最坏情况数据模式分析电源完整性对FPGA DDR4存储器接口中的信号完整性的影响

    电子发烧友网站提供《基于PDN共振峰的最坏情况数据模式分析电源完整性对FPGA DDR4存储器接口中的信号完整性的影响.pdf》资料免费下载
    发表于 09-13 09:56 0次下载
    基于PDN共振峰的最坏情况<b class='flag-5'>数据</b>模式分析电源<b class='flag-5'>完整性</b>对FPGA DDR4存储器接口中的信号<b class='flag-5'>完整性</b>的影响

    PCB电源完整性完整指南:从电路板到封装

    关注信号完整性,但如果没有稳定的电源,这些系统都无法工作。 电源完整性发生在元件级和PCB级,正如其他人在本博客中提到的那样,电源完整性问题会造成信号完整性问题(抖动、电源/接地反弹、
    的头像 发表于 09-10 07:40 560次阅读
    PCB电源<b class='flag-5'>完整性</b><b class='flag-5'>完整</b>指南:从电路板到封装

    如何使用NUC1262 CRC对代码完整性进行验证

    应用:本示例代码使用 NUC1262 CRC 对代码完整性进行自我验证。 BSP 版本: NUC1262_Series_BSP_CMSIS_V3.00.001 硬件
    发表于 08-29 06:49

    一个集成端到端数据完整性解决方案来防止沉默的数据损坏

    电子发烧友网站提供《一个集成端到端数据完整性解决方案来防止沉默的数据损坏.pdf》资料免费下载
    发表于 08-21 14:45 0次下载
    一个集成端到端<b class='flag-5'>数据</b><b class='flag-5'>完整性</b>解决方案来防止沉默的<b class='flag-5'>数据</b>损坏

    信号完整性分析科普

    何为信号完整性的分析信号完整性包含:波形完整性(Waveformintegrity)时序完整性(Timingintegrity)电源完整性
    的头像 发表于 08-17 09:29 3383次阅读
    信号<b class='flag-5'>完整性</b>分析科普

    4.1 数据完整性(2)#数据

    数据
    学习硬声知识
    发布于 :2023年07月13日 20:12:14

    4.1 数据完整性(1)#数据

    数据
    学习硬声知识
    发布于 :2023年07月13日 20:11:51

    什么是信号完整性

    业界经常流行这么一句话:“有两种设计师,一种是已经遇到了信号完整性问题,另一种是即将遇到信号完整性问题”。固态硬盘作为一种高集成度的高时钟频率的硬件设备,信号完整性的重要性不言而喻。借着这句话本文主要跟大家聊下信号
    的头像 发表于 06-27 10:43 1292次阅读
    什么是信号<b class='flag-5'>完整性</b>?

    使用SEGGER Linker的完整性检查功能

    在嵌入式产品应用中,为了保证系统数据在存储或者传输过程中的完整性,固件映像中通常包含完整性检查(integrity checks),以检测映像是否损坏。例如,bootloader可以基于完整性
    发表于 05-18 13:50

    DPoC信号完整性调试方法

      起因:   产品执行研发信号完整性一致验证时,DPoC 5.4Gbps Pre-Emphasis Level over the criteria,具体数据如下,4个DP Lane
    发表于 05-16 15:32

    浅析芯片验证中的scoreboard

    在芯片验证中,我们随机发送数据激励,同时使用scoreboard进行数据完整性检查。
    的头像 发表于 05-04 17:32 589次阅读
    浅析芯片<b class='flag-5'>验证</b>中的scoreboard