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

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

3天内不再提示

基于FPGA实现AES算法数据加密方案

电子设计 来源:郭婷 作者:电子设计 2018-12-30 09:31 次阅读

1. 引言

随着国际空间任务交叉合作增加,应用地面公共数据网络进行空间任务控制和数据监测越来越多,空间飞行器迫切需要数据安全保护机制。随着计算机技术的迅速发展,原 来卫星(如SPOT 卫星)上使用的DES 加密算法已能够被穷举法破译。为此,美国国家标准 和技术协会(NIST)于2000 年10 月2 日宣布采用Rijndael 作为下一代先进加密标准(AES) 的正式算法[2]。2004 年,CCSDS(国际空间数据系统咨询委员会)建议将AES 作为空间 数据加密算法标准[3][4]。目前,AES 加密算法已在NASA、FBI、CCSDS 等机构得到广泛 应用。

随着我国空间技术的快速发展,未来需要考虑空间数据安全性设计。传统的星上加密 需要一个专门的装置,占用的体积、功耗等资源均较大。AES 算法适用于软硬件资源有限 的应用中,同时与软件加密相比,采用FPGA 进行物理加密具有很好的防攻击性,实时性好, 可实现高速数据处理,资源占用非常小,是空间数据加密的重要发展方向。

本文对AES 算法进行了研究,并在一片FPGA 上进行了仿真分析,确定了适合空间应 用的AES 算法。

2. AES 加密算法及优化实现

2.1. AES 加密算法

AES 是一种可变密钥长度的迭代分组加密算法,明文被分成以128bit 为一块进行加密, 密钥长度可分别为128bit、192bit、256bit。

AES 加密算法包括密钥扩展过程和加密过程。加密过程又包括一个作为初始轮的初始密钥加法(AddRoundKey),接着进行若干次轮变换(Round),最后再使用一个轮变换(FinalRound),如图2.1.1 所示。

基于FPGA实现AES算法数据加密方案

明文可以表示为4*4B 的状态矩阵,加密的每一轮是对状态矩阵进行操作,得到中间结 果状态矩阵。初始变换指的是状态矩阵中每一列与初始密钥进行加运算。轮变换的每一轮 包括字节替换(SubBytes)、行移位(Shiftrows)、列混合(Mixcolumns)、轮密钥加 (AddRoundKey)。最后一轮变换不包括列混合(Mixcolumns)。经过最后一轮变换,中间状 态矩阵将输出4*4B 的密文。

密钥扩展是对给定初始密钥进行运算,得到每个轮变换的轮密钥。主要包括三步:字 替换(Subword)、周期置换(Rotword)、圈常数字序列加运算[2]。AES-128 与AES-192 密 钥扩展的每一轮都包括三个步骤,对于AES-256,并不是每一轮都包括三个步骤,当密钥 替换循环次数小于Nb*(Nr+1)(Nb 数据块长度、Nr 圈数),同时循环次数对Nk(密钥长度) 取模的结果为4 时,只进行字替换(Subword)。

表 2.1.1 给出了三种AES 加密的明文块长度,密钥长度,加密轮变换次数之间的关系。

基于FPGA实现AES算法数据加密方案

2.2. AES 算法优化实现

2.2.1. 字节替换(SubBytes)

SubBytes 主要通过两步来完成,一步是在GF(28)中取乘法逆,另外一步是通过特别 定义的GF(2)上的仿射作用。为了避免复杂的乘法运算,在FPGA 上具体实现时,构造了 16*16B 的置换表,通过查表完成了字节替换,节省了运算时间。

2.2.2. 行移变换(shiftrows)

ShiftRows 与列混合运算相互影响,在多轮变换后,使密码信息达到充分的混乱。行变 换是在状态的每个行间进行的,是状态中的行按不同的偏移量进行循环左移运算[10]。通过 对每个字节的行移位实现该变换。

2.2.3. 列混合(MixColumns)

假设列混合运算输入为a,输出为b,加密的列混合运算可做如下表示:

基于FPGA实现AES算法数据加密方案

式2.1 所示的矩阵运算是伽罗华域上常数乘法运算。伽罗华域上乘以任何常数的乘法 都可以通过反复的乘以02 和异或运算来实现[5]。将GF(28)域中的每一个元素与02 的乘积 存储在一张16*16 B 查找表中,通过异或运算和查表即可实现列混合运算。

2.2.4. 密钥加法(AddRoundKey)

AddRoundKey 是将轮密钥中的各个字节与状态中的各个字节进行逐位异或运算,实现 密码和密钥的混合。轮密钥是由初始密钥通过密钥扩展得到的。

2.2.5. 密钥扩展(KeyExpansion)

初始密钥和扩展后的整个密钥表可以看作是一个字(word)序列。密钥扩展是针对字进 行的,为此又引入了两个对字进行处理的函数:字替代(Subword)和字旋转(RotWord)。字 旋转将字的4 个字节循环右移一个单位。密钥扩展还包括引入轮常数Rcon。字替换和引入 轮常数均可使用查表法完成。字旋转可以用简单的交换字的顺序实现。

在FPGA 的实现过程中,若不进行上述诸如查表法的优化,将会造成资源占用过度,运 行速率低下的情况。 3. AES 算法实现与仿真

3.1. AES 算法实现方案

图3.1 为AES 加密算法实现框图,其中明文有效标志和密钥有效标志输入给控制模块, 初始密钥送给密钥扩展模块,明文输入到初始变换模块。控制模块输出加密完成标志,最 终变换模块输出密文[7]。其中粗箭头为数据线,细箭头为控制线。为满足加密过程的时序 要求,控制模块对输入的明文有效信号及密钥有效信号进行控制。密钥扩展模块在不同轮 数下产生的扩展密钥分别送给初始变换模块,轮变换模块以及最终变换模块。初始变换模 块对明文加了初始轮密钥;轮变换模块进行了四个变换步骤。最终变换模块与轮变换模块 不同在于没有进行混合列操作。

基于FPGA实现AES算法数据加密方案

3.2. 仿真结果

本设计采用VHDL 语言,在Xilinx 公司的一款FPGA 上实现了AES 算法。分别对AES-128、 AES-192、AES-256 加密算法实现进行仿真,在FPGA 资源占用率、数据处理速率等方面进 行了对比分析。

(1) 仿真结果

图3.2.1、3.2.2、3.2.3 分别是AES-256、AES-192、AES-128 的FPGA 实现仿真结果, 从图中可以看出AES-256 可以在15 个时钟周期内完成,AES-192 可以在13 个周期实现加 密算法,AES-128 可以在12 个时钟周期内实现加密算法。

基于FPGA实现AES算法数据加密方案

基于FPGA实现AES算法数据加密方案

(2) 性能分析

在Xilinx 公司的一款X2V 系列FPGA 上所占用的资源情况对比如表3.1.1。

基于FPGA实现AES算法数据加密方案

根据密码学理论,密钥长度越长,其安全性能越好。AES-256 占用硬件资源较AES-128、 AES-192 多,但AES-256 可以提供最好的安全性。三种加密算法占用的资源数相当,数据 吞吐率随着密钥长度加长而变小。

4. 结论

本文对AES 算法进行了研究,提出了面向空间应用的AES 算法的FPGA 实现方案。通过 仿真分析,表明利用FPGA 进行AES 进行数据加密具有占用硬件资源较少,数据吞吐率高, 安全性好的特点,门数在10 万左右的小型FPGA 即可实现该算法。考虑到安全性,在实际 应用中,AES-256 算法是最适合的。

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

    关注

    1627

    文章

    21685

    浏览量

    602321
  • 仿真
    +关注

    关注

    50

    文章

    4054

    浏览量

    133452
  • 卫星
    +关注

    关注

    18

    文章

    1705

    浏览量

    66939
收藏 人收藏

    评论

    相关推荐

    FPGA参赛作品】基于FPGAAES分组加密系统

    。本方案FPGA实现AES加密算法为目的,硬件角度加速AES
    发表于 06-12 23:12

    有木有知道使用RSA算法数据加密滴?

    有木有知道使用RSA算法数据加密滴?本人小小采购员一枚,工程那边说要数据加密,采购加密芯片,还要有RSA
    发表于 11-26 13:59

    最强加密算法AES加密算法的Matlab和Verilog实现 精选资料推荐

    目录背景AES加密的几种模式基本运算AES加密原理Matlab实现Verilog实现Testbe
    发表于 07-28 07:34

    基于AES算法的无线加密数字传输系统

    本文实现了一种基于AES 算法的无线加密数字传输系统,给出了该系统的结构,完成了AES 算法
    发表于 01-22 15:09 5次下载

    基于FPGAAES加密算法的高速实现

    介绍AES 算法的原理以及基于FPGA 的高速实现。结合算法FPGA 的特点,采用查表法优化处
    发表于 01-25 14:26 29次下载

    基于FPGAAES加密算法的高速实现

    介绍AES算法的原理以及基于FPGA的高速实现。结合算法FPGA的特点,采用查表法优化处理了字
    发表于 07-17 18:09 46次下载

    基于FPGA加密芯片的DPA实现与防御研究

    差分功耗分析是破解AES密码算法最为有效的一种攻击技术,为了防范这种攻击技术本文基于FPGA搭建实验平台实现了对AES
    发表于 12-05 14:14 52次下载
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>加密</b>芯片的DPA<b class='flag-5'>实现</b>与防御研究

    基于AES和ECC的混合加密系统的设计

    基于AES加密算法具有速度快、强度高、便于实现等优点和ECC加密算法具有密钥分配与管理简单、安全强度高等优点,采用AES
    发表于 03-20 10:24 42次下载
    基于<b class='flag-5'>AES</b>和ECC的混合<b class='flag-5'>加密</b>系统的设计

    基于AES算法加密模块设计

    文中介绍了高级加密算法AES)的基本原理,并给出了基于AES算法硬件加密模块设计方案。通过Mo
    发表于 02-21 15:52 0次下载
    基于<b class='flag-5'>AES</b><b class='flag-5'>算法</b>的<b class='flag-5'>加密</b>模块设计

    AES加密算法说明

    1 引 言 AES加密算法的一种优化的FPGA实现方法 随着密码分析水平,芯片处理能力和计算技术的不断进步,des的安全强度已经难以适应新的安全需要,其
    发表于 11-30 01:31 2154次阅读

    用matlab实现AES加密算法

    AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美
    发表于 05-25 15:18 11次下载
    用matlab<b class='flag-5'>实现</b><b class='flag-5'>AES</b><b class='flag-5'>加密算法</b>

    使用FPGA实现AES算法的优化设计

    AES算法作为DES算法的替代者应用非常广泛,其硬件实现方法已有不少讨论,主要是通过提高算法频率来提高吞吐量。但是在实际运行中,为了保证整个
    的头像 发表于 04-18 08:15 3521次阅读
    使用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b><b class='flag-5'>AES</b><b class='flag-5'>算法</b>的优化设计

    如何低成本实现AES密码算法的硬件

    Rijndael算法为高级加密标准AESAES密码算法加密速度快,安全级别高,已经成为
    发表于 03-19 17:16 7次下载
    如何低成本<b class='flag-5'>实现</b><b class='flag-5'>AES</b>密码<b class='flag-5'>算法</b>的硬件

    使用FPGA实现AES分组密码统一框架的详细资料说明

    通过将AES算法模块化、运算一般化,给出了类AES算法的统一框架。在此框架下不仅可以同时实现AES
    发表于 03-26 15:58 16次下载

    aes加密的常见错误及解决方案

    的归纳以及相应的解决方案: 常见错误 编码问题 : 在将字节数组转换成字符串时,如果使用了不同的编码格式,可能会导致解密后的数据出现乱码。 密钥长度问题 : AES算法支持128位、1
    的头像 发表于 11-14 15:13 719次阅读