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

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

3天内不再提示

在数据完整性方面,我们可以只加密数据吗

星星科技指导员 作者:jwallrabenstein 2023-02-07 11:13 次阅读

为了防止有目的地尝试修改数据的对手,我们需要比错误检测/纠正CRC等代码更强大的解决方案。 理想情况下,任何(计算限制的)对手都不应该能够说服我们非法数据来自我们的设备或在我们没有注意到的情况下修改我们的数据。在介绍两种可能的解决方案之前,我们将回顾一些所需的构建块。首先,我们需要了解对称和非对称密码学之间的高级差异。

可以根据私钥的使用方式将不同的加密解决方案分组到类中。当所有用户共享单个私钥时,他们对密钥材料都有相同的知识。由于每个用户在密钥材料上的信息是对称的,因此此类称为对称加密。在另一个类中,每个用户都有一组两个数学上相关的密钥:一个只有他们知道的私钥,以及一个他们与所有人共享的公钥。由于私钥只有用户知道,因此用户之间的信息现在是不对称的。

需要注意的重要区别是,在对称加密中,每个用户都有同一私钥的副本,并且相同的密钥用于两种类型的操作:加密和解密,以及生成和验证签名。在非对称加密中,只有用户知道其私钥,并且只有该私钥可用于解密或签名数据。

需要的另一个工具是一种创建任意大量数据的简短摘要或“指纹”的方法。由于加密操作的计算成本很高,因此在表示(可能更大)数据量的简短摘要上运行它们会更方便。

加密哈希函数采用任意长度的输入并生成固定长度的摘要或“哈希”,该摘要将用作数据的摘要。由于该函数将任意大的输入映射到固定的输出范围,因此肯定会发生冲突。但是,通过使哈希输出的大小足够大,冲突概率可以忽略不计。

哈希函数的另一个重要属性是,即使输入数据中非常小的变化,例如一位翻转,也会导致输出哈希的实质性变化。平均而言,输入数据中的单个位翻转(即使数TB)将导致大约50%的哈希输出位发生变化。这意味着对原始数据的微小更改将导致生成截然不同的摘要或摘要作为哈希函数的输出。再加上碰撞的可能性可以忽略不计,这将作为我们要保护的数据的指纹。

我们可以只加密数据吗?

在尝试保护数据时,我们通常会想到加密。使用密钥加密数据可以使没有密钥的任何人都无法读取加密的密文。那么,我们为什么不对数据进行加密以保护它呢?

加密本身仅提供机密性,不提供真实性或完整性。让我们研究一种常用的加密方法:计数器模式下的 AES。AES 是一种对称分组密码,它使用共享密钥一次加密 16 字节的数据块。分组密码可以在几种不同的模式下运行(组合每个数据块的方法),一种常用的模式是计数器模式。在这种模式下,有一个单调递增的计数器,该计数器被加密以产生伪随机密钥流。为了加密数据,此密钥流与明文输入进行异或运算以生成密文。

密文可以与使用的初始计数器值(初始化向量)一起存储或发送,以便以后使用相同的密钥解密。解密时,将加载初始计数器值,并使用相同的密钥再次加密以生成相同的密钥流。此密钥流与密文进行 XOR 运算,以取消加密操作并恢复明文。

pYYBAGPhwc2AZULRAAEutl-WBUU068.png

如果对密文的修改也以可预测的方式修改基础明文,则密文称为可延展性。计数器模式下的分组密码(以及其他流密码)具有微不足道的延展性。翻转密文中的单个位将在解密时翻转明文中的相同位,而不会更改任何其他位。这意味着攻击者可以轻松修改加密数据并预测此更改对解密数据的影响,即使他们不知道密钥或基础明文消息也是如此。

考虑有两个系统通过无线发送和接收在计数器模式下使用 AES 加密的消息进行通信的情况。攻击者可能能够拦截通信,即使他们可能无法解密消息,他们也知道他们可以翻转密文中的位以翻转明文中的相同位。在某些情况下,可能很容易猜到明文可能是什么。这些类型的机器对机器通信通常具有结构化和可预测的格式。攻击者可能已经获得了与之相关的文档,或者可能只是能够猜测它或对其进行逆向工程。

在我们的示例中,攻击者想要中断运营中心的订单。攻击者知道交换消息的格式(通过阅读用户手册),处理订单的命令是“fill”,删除订单的命令是“kill”。在上图中,我们可以看到执行订单的命令已正确加密和解密。让我们看看攻击者如何在不被发现的情况下更改此命令,即使消息将被加密!

攻击者知道明文消息中“fill”命令的位置,并希望恶意将命令更改为“kill”,以导致订单被取消,而不是履行。

首先,攻击者计算消息 M = “填充” 和 M' = “kill” 之间的差∆。通过∆包含明文消息“fill”的密文块进行异或运算,解密消息中的字符“f”将更改为“k”!

由于仅加密并不能阻止这些数据被修改,我们可以通过加密消息及其CRC来保护其完整性吗?攻击者不会知道CRC的值,如果他们修改密文,CRC应该检测到修改,对吧?正如我们在上一节中看到的,加密可以是可延展的,不幸的是,加密的CRC也可以。

poYBAGPhwc6AaSvQAAEwDXT9Exk854.png

假设我们有一个加密的消息M,它也包含该消息上的加密CRC,并且我们知道密文中与加密CRC相对应的位置。如果我们想将消息 M 修改为新消息 M',我们还需要修改 CRC。

设 ∆ = M Å M' 是原始消息 M 和新消息 M' 之间的差值。这是两个异或一起,或者已经改变的位(如果∆的每个位是我们翻转的消息中的位,则为 1)。原始 CRC 与新计算的 M' 上的 CRC 不匹配。我们需要修改 CRC,使其在新消息 M' 上有效。

由于CRC是一个线性函数,CRC(M') = CRC(M) Å CRC(∆)。换句话说,为了获得一个新的有效CRC,我们计算∆上的CRC函数(我们已经更改的位的CRC),并使用CRC对这个值进行XOR。正如我们之前看到的,我们甚至可以在密文上完成所有这些操作,甚至不知道消息的真实值或 CRC 的值,我们可以使用有效的 CRC 将消息更改为我们想要的任何内容!

poYBAGPhwc6AGV-EAAGjRVMHQiA522.png

这种弱点不仅仅是理论上的。它存在于有线等效保密 (WEP) 算法中,该算法允许以类似的方式修改 WEP 流量。

因此,仅仅加密数据本身并不能保护它不被修改,加密的CRC也不能。如果明文CRC,加密数据或加密数据及其CRC不能保护我们的数据免受故意修改,那又有什么作用呢?

审核编辑:郭婷

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

    关注

    0

    文章

    191

    浏览量

    29195
  • 计数器
    +关注

    关注

    32

    文章

    2123

    浏览量

    92984
  • AES
    AES
    +关注

    关注

    0

    文章

    97

    浏览量

    33064
收藏 人收藏

    评论

    相关推荐

    基于 FPGA 的光纤混沌加密系统

    的 128 位加密数据。这也是我们设计的一大难点。 3.7 高速通信中时序约束和信号完整性分析 对于 GTP 高速接口,我们对其做时序约束
    发表于 04-26 17:18

    态势数据如何存储在数据库里面呢

    智慧华盛恒辉态势数据存储在数据库中需要遵循一系列原则和步骤,以确保数据完整性、一致性、安全性以及可扩展性。以下是关于态势数据如何存储
    的头像 发表于 04-22 16:46 92次阅读

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

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

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

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

    要画好PCB,先学好信号完整性

    的顶层和底层使用组合微带层时要小心。这可能导致相邻板层间走线的串扰,危及信号完整性。 按信号组的最长延迟为时钟(或选通)信号走线,这保证了在时钟读取前,数据已经建立。 在平面之间对嵌入式信号进行走线
    发表于 02-19 08:57

    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

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

    尽管看似简单,但PCB和高级封装中的功率传输仍然是设计人员面临的最大挑战之一,尤其是在数据中心、边缘计算、移动设备和电信/网络等环境中。在这些环境中,大量数据通过极高的数据速率通道传输,尽管
    的头像 发表于 09-10 07:40 559次阅读
    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

    PCB电源完整性设计指南

    尽管看似简单,但PCB和高级封装中的功率传输仍然是设计人员面临的最大挑战之一,尤其是在数据中心、边缘计算、移动设备和电信/网络等环境中。在这些环境中,大量数据通过极高的数据速率通道传输,尽管
    的头像 发表于 08-24 10:20 682次阅读
    PCB电源<b class='flag-5'>完整性</b>设计指南

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

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

    信号完整性分析科普

    用小的成本,快的时间使产品达到波形完整性、时序完整性、电源完整性的要求;我们知道:电源不稳定、电源的干扰、信号间的串扰、信号传输过程中的反射,这些都会让信号产生畸变,
    的头像 发表于 08-17 09:29 3380次阅读
    信号<b class='flag-5'>完整性</b>分析科普

    在公网上使用ipsec加密数据有哪些优点

    、DES等,这  些算法已经被广泛应用于许多场景,并已经证明其在安全方面的可靠性。 2.数据完整性 IPSec在加密传输数据的同时,还
    的头像 发表于 06-29 16:41 693次阅读

    使用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