基于FPGA远程心电监护数据AES加密.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于FPGA远程心电监护数据AES加密

基于FPGA远程心电监护数据AES加密   摘要   本文简单回顾了加密技术的发展,提出远程心电监护数据的加密问题,探讨了在FPGA上实现监护数据的AES加密,重点讨论了S盒变换及密钥扩展两个模块。探讨了在有限资源的FPGA型号上怎样节约资源进行设计,提出为了节约芯片面积,进一步的研究应该以s盒的非查表方式实现为方向。   【关键词】AES S盒 FPGA ECG   远程心电监护系统的数据通过实时记录方式取得之后需要通过有线或无线网络上传数据到服务器。个人的心电数据反应个人身体健康状况,属于个人隐私应当进行保护。而目前通过心电数据采集端获得的数据一般没有经过任何信息隐藏处理,一旦泄露可能对个人造成不良影响,因此这些信息的安全性方面有待提高。   利用密钥对数据进行加密的算法基本可以分为对称密码、非对称密码和杂凑算法。对称密码一般使用相同的密钥,又可分两种类型:a、分组密码;b、序列密码。2002年美国国家标准与技术研究院为了取代被破解的DES算法发布的AES(高级加密标准)采用分组密码体制。   AES算法的密钥长度支持128比特、192比特、和256比特三种,其中分组长度为128比特的算法比较容易在硬件平台上实现。硬件电路实现方式一种是使用半定制的FPGA实现,另一种是使用全定制的ASIC实现。后者速度更快,能更好的满足心电监护的实时性要求,但是成本高昂。   AES-128算法每次将128bit的明文和128bit的密钥经过10轮迭代产生128bit密文。每一轮迭代又分为字节替换(Sub Bytes),行位移(Shift Rows),列混清(Mix-columns)以及轮密钥加(Add Round Key)这几个步骤。   1整体设计   AES加密核整体上按照如图1架构进行设计。   包含一个控制逻辑模块,密钥扩展模块,一个初始化序列模块,一个结束序列模块,一个轮变换模块。其中轮变换模块包含了10次迭代。一次128bit字节的加密可以在12个时钟周期内完成(10个周期用于10轮循环,1个时钟周期用于初始化密钥扩展,1个时钟周期用于输出阶段)。   前级输出经过压缩的ECG数据,同时给AES加密模块控制器一个触发信号,加密核接收到信号,会在ECG明文输入和密钥总线上分别采样128bit明文和密钥。通过加密核的运算,在12个时钟周期后,AES加密核会将完成管脚信号拉高,告诉外部加密完成,后级可以根据该信号的完成情况来读出密文数据使用。   AES算法FPGA实现中将最常用的S盒变换、列变换、密钥扩展模块分别放在单独的文件中实现,把行移位模块放在顶层实现代码中集合实现。加密核顶层包含密钥扩展模块以及S盒模块文件。同时还在顶层模块内实现控制逻辑,以及初始化序列、轮变换、结束序列。子密钥生成模块中调用了行异或(Rcon)模块和S盒模块,用于生成各个轮变换需要的子密钥。   2S-盒变换及其实现   字节变换也叫做S-盒变换,该变换是非线性变换,在有限域GF(28)下进行操作。完整的有限域的概念涉及到近代数学中群的概念,这里不试图阐述清楚复杂的数学概念,浅显地理解为一个集合及在其上定义的一些运算。有限域GF(28)只包含0到255这256个不同的数,可以由一个字节表示。在AES算法中需灵活变换数据的表示形式,比如二进制、十进制、十六进制及多项式表示法。比以表示成如下多项式,如果是GF(2)域,则x=2。   通过文献[1]知,定义了相应的加法乘法运算来保证运算结果也处于GF(28)域内。一种浅显直接的S盒变换描述就是在有限域GF(28)下求逆,然后作仿射矩阵变换和与0×63的加法运。   所以第一步是求逆,求0到255这所有256个数的逆,这里的求逆要用到前面提到的多项式表达形式和多项式乘法运算。比如任意取一个数152∈GF(28),通过循环地与0到255中的数做多项式乘法,再与283做模运算,得到其逆为42(283是AES算法中的一个不可约多项式)。   第二步是将42与仿射变换矩阵相乘然后加上0×63,也可以用如下的公式计算得到相同的?Y果:   31、257都是常数,99即常数0×63。42经过计算得到70,此即152在S盒中的对应值。由此可以形成一个S盒数值表,很多文献中都列出了这个表,这里就不复赘述。   在FPGA中实现时,并不需要进行上述的运算,而是将己经计算出的表存入FPGA中,共计16x16=256个值。当进行S变换时,根据数值到表中的对应位置取值即可获得S盒变换的值。但是,查表的方法会消耗较多的FPGA芯片资源(主要是内存RAM资源),根据文献3的计算,采用256个8bit的ROM来存放S盒矩阵,考虑并行计算需要采用16组S盒变换同时进行,另考虑在密钥

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档