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

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

3天内不再提示

嵌入在FPGA中的AES静态与动态数据

星星科技指导员 来源:嵌入式计算设计 作者:Paul Dillien 2022-10-20 10:29 次阅读

考虑 AES 加密数据沿以太网链路以 1G、10G 或更高的速率流式传输的位置。攻击者可以拦截并存储传递的消息,以便在尝试破解加密之前进行后续分析。他将快速生成大量数据包,并且只有源地址和目标地址可用于过滤掉感兴趣的消息。这些可能都使用相同的加密密钥,但在组织良好的加密系统中,加密密钥将经常更改,从而限制了任何安全故障的规模。

那么攻击者可以使用哪些方法来破解加密呢?说实话,攻击者通常更容易通过破坏物理或人类安全性来访问密钥或明文来访问机密数据而不会破解加密。数据仅以明文形式有用(例如,您无法观看加密视频或阅读加密文档)。同样,密钥需要以未加密的形式存储才能使用,并且保护它的物理安全性可能比加密算法更容易破坏。

或者,攻击者可能让内部人员提供密钥。假设必须破解加密算法,那么用于破解早期DES系统的方法称为蛮力。在这里,攻击者使用巨大的计算能力来尝试密钥的每个组合。随着计算能力的提高,这种技术对于资金充足的组织(如敌对政府)变得可行。然而,AES最少使用的128位密钥组合的绝对数量是惊人的(5.79E + 76)。

另一种常见的攻击方法依赖于攻击者对包含密钥的设备有足够的访问权限,以允许使用实验室设备。请记住,我已经说过,嵌入式加密核心永远不应该靠近设备的引脚。在这种类型的攻击中,称为差分功率分析(DPA),电源电流的测量是在器件的引脚上进行的,因此具有不同密钥的加密将具有略微不同的能量使用。这导致功耗模式,可以使用信号处理进行分析以推断出密钥。

微处理器上实现的公钥算法比AES更容易受到这种攻击。这就是理论,一些学者已经从完全控制的AES实现中梳理出关键点,使用带有慢速时钟的DPA和定制电路板,旨在促进功率测量。

DPA基本上是关于从噪声中提取信号。通过使测量结果难以获得,可以使其更具挑战性。这包括物理安全性,例如在检测到篡改时将密钥清零。诸如使用表面贴装封装(引脚不可访问)的电路板布局和具有封装内去耦电容器的器件等因素将阻碍功率毛刺的测量。

使用低电源电压、较高频率以及芯片上相关电路产生额外噪声的设计将不那么容易受到攻击。此外,加密器中的设计技术可能会影响对 DPA 攻击的敏感性,并且通过频繁更改密钥,使得攻击者无法在更改密钥之前捕获足够的数据来确定密钥,从而无法做到这一点。我并不是说这是不可能的,但与使用FPGA实现AES的典型应用相比,DPA对智能卡,公钥算法和微处理器实现的威胁更大。也就是说,与没有加密相比,向系统添加加密的安全性是向前迈出的一大步。

静态数据存在不同的问题。机密数据显然可以在磁盘上被攻击者访问和更改。加密存储的两个重要标准是数据的大小不变,并且相同的明文加密并存储在多个位置应始终具有不同的密文。还希望对扇区进行随机访问,而不是坚持加密和解密完整文件。

不扩大数据的要求是,磁盘可以存储相同数量的数据,无论是否加密。如果没有数据扩展选项以包含额外的完整性检查值(ICV),则很难提供身份验证,即保证加密数据未被篡改。

磁盘上相同的数据应该总是不同的原因是它可能会揭示数据的结构(类似于上一篇博客中提到的ECB模式问题)。它为攻击打开了漏洞,其中系统被指示加密已知的所需数据(例如,指示某人在其银行帐户中有1,000,000美元的记录),然后将其复制到磁盘上的另一个位置(在这种情况下,通过攻击者自己的银行帐户记录)。避免这种情况的方案是一种称为AES-XTS(IEEE标准1619)的变体。XTS IP 核比基本的 AES 设计更复杂,它使用两个不同的密钥来加密数据。它考虑了数据的扇区地址,以确保相同的数据不会重复。

另一个考虑因素是,虽然加密可确保数据的机密性,但它不会提供有关邮件是否损坏或恶意更改的任何信息。这对于金融交易等应用程序至关重要,其中消息中更改的数字可能会将付款从$ 1,000更改为$ 9,000。AES有一个解决方案 - 它在加密数据时对数据执行“哈希”,然后在消息末尾包含完整性检查值(ICV)。这会扩展数据包长度,但会增加用户的值,因为可以检测到并拒绝被篡改的消息。

用于身份验证和加密的最流行的 IP 核称为 AES-GCM。AES-GCM的好处是整个操作可以流水线化,FPGA可以支持100G数据速率。这是用FPGA不动产换取性能的又一个例子。AES-GCM内核比基本的AES实现更复杂,但构成了更广泛的加密子系统的基础,正如我们将在第3部分中看到的那样。

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

    关注

    1606

    文章

    21344

    浏览量

    594171
  • 以太网
    +关注

    关注

    40

    文章

    5117

    浏览量

    166423
  • 微处理器
    +关注

    关注

    11

    文章

    2146

    浏览量

    81564
收藏 人收藏

    评论

    相关推荐

    浅析CMOS电路的静态功耗和动态功耗

    CMOS电路功耗主要由动态功耗和静态功耗组成,动态功耗又分为开关功耗、短路功耗两部分
    的头像 发表于 04-01 16:16 1411次阅读
    浅析CMOS电路的<b class='flag-5'>静态</b>功耗和<b class='flag-5'>动态</b>功耗

    fpga嵌入式吗

    FPGA(现场可编程门阵列)不是嵌入式系统,但FPGA嵌入式系统中有着重要的应用。
    的头像 发表于 03-14 17:19 764次阅读

    FPGA分类

    FPGA :通常具有少于10,000个逻辑单元。这类FPGA适用于简单、低成本的设计。 规模FPGA :通常具有10,000到100,000个逻辑单元。它们适用于更复杂的设计,如
    发表于 01-26 10:09

    静态电流什么意思 静态电流和动态电流的区别

    静态电流什么意思 静态电流和动态电流的区别  静态电流是指电荷在不发生移动的情况下所产生的电流。在静电场中,电荷通过金属导线或其他连续的导电体产生
    的头像 发表于 12-19 14:02 1257次阅读

    动态BGP与静态BGP的区别

    动态BGP与静态BGP的区别 动态BGP与静态BGP的区别 1.静态BGP功能简单,其带宽功能,可以实现多网接入,但路径上只有通向几大运营商
    发表于 12-01 16:55

    网络静态ip和动态区别

    网络静态IP和动态IP是指在网络中分配给设备的唯一标识符,下面将详细探讨网络静态IP和动态IP的区别。 一、定义 静态IP地址: 网络
    的头像 发表于 11-27 14:46 557次阅读

    静态IP与动态IP的区别

    静态IP和动态IP是计算机网络中常用的两种IP地址分配方式,它们在分配方式、使用范围、安全性和适用场景等方面存在一些区别。 一、静态IP的定义与特点 静态IP(Static IP)是指
    的头像 发表于 11-27 14:44 737次阅读

    静态线性度的动态效应

    电子发烧友网站提供《静态线性度的动态效应.pdf》资料免费下载
    发表于 11-27 11:03 0次下载
    <b class='flag-5'>静态</b>线性度的<b class='flag-5'>动态</b>效应

    7段LED静态显示和动态显示硬件连接上分别具有什么特点?

    7段LED静态显示和动态显示硬件连接上分别具有什么特点?实际设计时应如何选择使用?
    发表于 11-01 06:59

    基于嵌入式WEB的电站数据动态监控软件设计

    电子发烧友网站提供《基于嵌入式WEB的电站数据动态监控软件设计.pdf》资料免费下载
    发表于 10-24 10:01 0次下载
    基于<b class='flag-5'>嵌入</b>式WEB的电站<b class='flag-5'>数据</b><b class='flag-5'>动态</b>监控软件设计

    动态电路和静态电路的区别

    动态电路和静态电路的区别 动态电路和静态电路是电路的两种基本类型,它们在电子设备中的作用与应用不同。本文将详细介绍动态电路和
    的头像 发表于 09-17 10:47 3494次阅读

    HarmonyOS实现静态动态数据可视化图表

    ;gt; 五.动态显示数据 在上一章节讲解了switch组件实现切换按钮,接下来实现switch组件的点击事件。回调方法设置chart组件静态
    发表于 09-06 14:21

    custom_aes函数如何实现将128位的数据输出?

    如图,custom_aes函数,得到的结果是一个128位的数据,但是C却不能定义这么大的数据,从而只定义32位的变量来接收这个结果,但是
    发表于 08-16 07:53

    动态库和静态库的制作步骤

    库是一种可执行的二进制文件,是编译好的代码。使用库可以提高开发效率。在 Linux 下有静态库和动态库。 静态库在程序编译的时候会被链接到目标代码里面。所以程序在运行的时候不再需要静态
    的头像 发表于 07-27 11:00 575次阅读

    数码管的静态动态显示原理及编程方法(2)

    “掌握数码管的静态动态显示原理及编程方法。--综合案例”
    的头像 发表于 06-28 11:41 1041次阅读
    数码管的<b class='flag-5'>静态</b>、<b class='flag-5'>动态</b>显示原理及编程方法(2)