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

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

3天内不再提示

使用关联数据探索经过身份验证的加密

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

在以前的安全解决方案博客中,我们讨论了数据完整性的重要性,以及为什么加密本身不能提供语义安全性。我们引入了消息身份验证代码 (MAC) 和数字签名作为对数据进行身份验证和保护数据不被修改的方法。

在另一篇博客中,jwallrabenstein启发了我们关于资源受限环境(如物联网嵌入式系统)的轻量级加密技术。这些新的轻量级算法中的大多数都是使用附加数据(AEAD)密码进行身份验证的加密,这些密码既可以通过加密提供机密性,也可以提供数据的完整性(保证数据未被修改)和真实性(保证数据来自特定实体),从而保护其免受修改。在本博客中,我们将更深入地讨论AEAD加密。

什么是AEAD?

加密仅提供机密性,但不提供完整性或真实性。如果可以对密文进行修改,从而导致对生成的明文进行可预测的修改,则密文具有延展性。可以对邮件进行更改,这些更改可能无法检测到。单独加密邮件并不能防止这种情况。

例如,假设爱丽丝想向鲍勃发送 100 美元。金融服务使用流密码加密交易,流密码的工作原理是将明文交易与密钥流进行异或运算。每笔交易都有一个固定的格式,它指定谁是收款人以及要转移的金额。Alice 对 100 美元的交易进行加密,并将密文发送给 Bob。

攻击者拦截加密交易,并希望修改数据而不被检测到。攻击者将数字 9 的密文与事务格式中的千个占位符的位置进行 XOR 运算。尽管攻击者无法解密消息,但了解事务格式会告诉他们在哪里进行修改。

Bob 接收修改后的密文并使用他的密钥流解密。由于对手的修改,Bob 收到一笔金额交易。由于只使用了加密,因此 Bob 无法检测到此修改!

为了保护消息不被修改,我们必须传输其他数据以及可用于验证消息的消息。对于AEAD,这通常采用消息身份验证代码(MAC)的形式。MAC 必须具有在不知道身份验证密钥的情况下难以为任何消息找到有效 MAC 的属性。对于给定的消息和 MAC 标记,还必须很难找到具有相同 MAC 的第二条消息(第二原像电阻)。还必须很难找到导致相同MAC标记(抗碰撞性)的一对消息。

密钥(加密)哈希函数通常用于生成消息身份验证代码。当与加密算法配对时,它们可用于创建AEAD密码系统,该系统可以加密和验证数据。示例包括AES CCM,它将AES CTR模式与AES CBCMAC相结合进行身份验证。另一个例子是AES GCM,它将AES CTR模式与MAC的GHASH算法相结合。在每一个中,一个称为标签的MAC通过传输的消息计算,并与消息一起发送。对于每条消息,标签通常为 16 个字节长,并将此额外开销添加到消息中。消息的接收方可以与消息一起验证标记。如果消息或标签以任何方式被修改,则接收方将拒绝该消息无效。这将防止篡改消息。

poYBAGPhv_eAHhzOAACJ_cwUS4I868.png

2 TinyJAMBU (NIST 轻量级加密决赛入围者) [TinyJAMBU: A Family of Lightwieght Certified Encryption Algorithms, Wu et al]

其他数据

AEAD提供数据的真实性,机密性是可选的。它允许使用其他数据与加密数据一起发送,而无需对其进行加密。额外的明文数据和加密数据都一起进行身份验证:如果其中任何一个部分发生更改,则将导致无效标记。这在许多上下文中都很有用,例如在数据包标头中。如果数据被打包并通过网络发送,则数据包通常包含一个标头,其中包含发送方和接收方地址等元数据。此数据在发送时无法加密,因为路由上的其他节点需要能够读取此信息,以便可以将数据包发送到正确的目的地。我们仍然希望保护此信息不被修改。AEAD 允许此明文数据与消息的其余部分一起进行身份验证,即使消息的某些部分已加密。AEAD 甚至可以用于在不加密任何数据的情况下发送消息,同时仍提供消息的真实性。

易于使用

AEAD 的一个主要好处是身份验证内置于算法中。这使得实施者更难犯错误。

HMAC 是一种键控哈希函数,可以与加密一起使用,以实现经过身份验证的加密。数据可以通过HMAC运行以生成MAC,该MAC可以与数据一起发送以对其进行身份验证。这可以通过任何算法完成,但在组合加密原语时必须小心。一个潜在的错误是没有验证所有必要的数据。例如,加密算法中通常使用初始化向量。这需要包含在经过身份验证的数据中。

需要包括全部数据。如果数据长度可变,这也可能会出现问题。发射器可能会向接收器发送一个字段,其中包含消息的长度。此长度也需要包含在经过身份验证的数据中,以便不会省略消息的某些部分或添加部分。

另一个风险是将接收到的标签与计算的标签进行比较时侧信道泄漏。如果标记是按每个字节计算的字节数,并在达到不匹配时立即退出,则此比较所需的时间取决于匹配或不匹配的字节数。如果使用函数 memcmp() 天真地比较标签,则可能会发生这种情况。这会泄露信息,这些信息可能有助于攻击者测量执行时间并确定匹配或不匹配的字节数。在大多数 AEAD 模式下,这仍然是一个风险,但比较可能会以安全的方式在加密库中实现。

在标准协议中使用现有的 AEAD 模式可降低引入此类漏洞的风险,这些漏洞可能难以预料。

加密协议

AEAD本身也无法抵御整类攻击。这可能包括重播攻击、反射攻击和其他攻击。在重放攻击中,攻击者可以监控受 AEAD 保护的流量并记录它。攻击者稍后可以尝试重新发送它观察到的先前传输的消息,而无需对其进行修改。消息尚未修改,因此将具有有效的 MAC 标记,并且 AEAD 算法不会检测到它是由对手发送的。这些类型的攻击无法在算法级别解决,但可以通过加密协议解决。该协议可能包括类似单调递增的数据包编号之类的内容,接收方在对消息进行身份验证之前会检查该数据包编号。如果接收方已经收到相同的数据包编号(或者可能已经收到更高的编号),它将拒绝该数据包以防止重放。此数据包编号或其他信息也可以包含在其他经过身份验证的数据中。AES CCM 也是 IEEE 802.15.4 下的加密协议,在某些配置中,它还可以防止重放攻击和其他协议级攻击。

总之,加密只能保证机密性,但我们数据的完整性和真实性也很重要。AEAD模式提供了这种保证,并且比单独的结构更容易正确使用。密码学是一个雷区,即使对专家来说也是危险的。采用AEAD加密并仅使用标准加密协议是保护我们数据的最佳实践。

审核编辑:郭婷

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

    关注

    5082

    文章

    19104

    浏览量

    304810
  • 发射器
    +关注

    关注

    6

    文章

    848

    浏览量

    53451
  • 物联网
    +关注

    关注

    2909

    文章

    44557

    浏览量

    372778
收藏 人收藏

    评论

    相关推荐

    无线身份验证的门禁控制系统设计方案

    的网络,可提供身份验证传输框架,实现安全产品和服务的交付。它是一种用于创建、交付和管理安全身份验证的综合性框架。简单来说,该基础架构是一个中央安全库,通过安全的网络连接,并以公开的加密密钥管理安全政策为
    发表于 11-05 11:11

    Vivado和SDK身份验证错误

    尝试运行SDK或Vivado的安装程序时,出现“身份验证错误:发生了未知异常。请验证您的用户ID和密码,然后重试”我可以登录该站点,另一位同事可以登录该站点。我们可以下载安装程序,但是当我们尝试安装
    发表于 01-02 14:55

    是否有支持WSS + websockets身份验证的库?

    加密验证。我没有找到太多关于那个。是否有支持 WSS + websockets 身份验证的库?还是我遗漏了 LINKs 库中的某些内容?
    发表于 02-23 07:26

    PN5180无法使用mifare classic进行身份验证怎么解决?

    ....ok 2. Anticollision CL1.....ok 3. 选择......ok 4. 验证....错误当我发送身份验证命令时,我得到 0x02(等待卡响应超时(卡不存在)。)但是卡存在,我
    发表于 03-23 08:46

    如何使用TapLinx针对Ultralight C进行身份验证

    使用 TapLinx 针对 Ultralight C 进行身份验证
    发表于 04-21 06:08

    如何创建一个经过身份验证的会话以使用DeleteAll函数?

    我想使用 AES 密钥与 se050 创建经过身份验证的会话。nano 包似乎不支持这一点。我的理解正确吗? 这很重要 b/c 我想为特定密钥的安全密钥和数据设置策略。我知道您可以在设置策略时将
    发表于 06-08 08:36

    什么是身份验证和授权

    什么是身份验证和授权 根据RFC2828(Internet Security Glossary,May2000),验证是“校验被或向某系统实体声明的身份的过程”。此处的关键字
    发表于 04-03 16:03 5741次阅读

    什么是询问握手身份验证协议

    什么是询问握手身份验证协议 CHAP(询问握手身份验证协议)是用于远程登录的身份验证协议,通过三次握手周期性的校验对端的身份,在初始链
    发表于 04-03 16:06 2674次阅读

    什么是密码身份验证协议

    什么是密码身份验证协议 PAP是一种身份验证协议,是一种最不安全的身份证协议,是一种当客户端不支持其它身份认证协议时才被用来
    发表于 04-03 16:07 1602次阅读

    ATECC508A加密引擎身份验证器件的详细中文数据手册

    ATECC508A器牛属于Microchip CryptoAuthentication“ 系列加密引擎身份验证器件,具有基于硬件的高度安全密钥存储功能。
    发表于 07-02 08:25 101次下载
    ATECC508A<b class='flag-5'>加密</b>引擎<b class='flag-5'>身份验证</b>器件的详细中文<b class='flag-5'>数据</b>手册

    身份验证和生物识别身份系统应用越加广泛

    身份验证和生物识别身份系统应用越加广泛
    发表于 02-27 14:37 1565次阅读

    PCB身份验证

    电子发烧友网站提供《PCB身份验证器.zip》资料免费下载
    发表于 07-22 10:09 2次下载
    PCB<b class='flag-5'>身份验证</b>器

    基于DS28S60的双向身份验证示例

    本应用笔记详细介绍了DS28S60与Jupyter笔记本配合使用进行双向认证的基本应用。它使用分步方法来演练设置设备和所有相关软件,创建用于通过 ECDHE 密钥交换加密数据的共享密钥,使用 AES-GCM 加密和解密
    的头像 发表于 02-17 11:32 638次阅读

    HDCP 2.2:使用中继器进行局部性检查、SKE和身份验证

    使用的基础加密标准。AKE 是身份验证协议的第一步。在这里,我们将继续探索协议的后续 3 个步骤:位置检查、会话密钥交换 (SKE) 和中继器身份验证
    的头像 发表于 05-29 09:24 2098次阅读
    HDCP 2.2:使用中继器进行局部性检查、SKE和<b class='flag-5'>身份验证</b>

    使用加密身份验证来保护UltraScale/UltraScale+ FPGA比特流

    电子发烧友网站提供《使用加密身份验证来保护UltraScale/UltraScale+ FPGA比特流.pdf》资料免费下载
    发表于 09-13 17:14 1次下载
    使用<b class='flag-5'>加密</b>和<b class='flag-5'>身份验证</b>来保护UltraScale/UltraScale+ FPGA比特流