datasheet
超过460,000+ 应用技术资源下载
pdf

加密卡的研制与加密算法的FPGA实现

  • 1星
  • 日期: 2014-03-05
  • 大小: 3.19MB
  • 所需积分:1分
  • 下载次数:6
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 加密卡加密算法FPGA

随着安全通信数据速率的提高,关键数据加密算法的软件实施成为重要的系统瓶颈.基于FPGA的高度优化的可编程的硬件安全性解决方案提供了并行处理能力,并且可以达到所要求的加密处理性能(每秒的SSL或RSA运算次数)基准.网络的迅速发展,对安全性的需要变得越来越重要.然而,尽管网络技术进步很快,安全性问题仍然相对落后.由于FPGA所提供的设计优势,特别是新的高速版本,网络系统设计人员可以在这些网络设备中经济地实现安全性支持.FPGA是实现设计灵活性和功能升级的关键,对于容错、IPSec协议和系统接口问题而言这两点非常重要.而且,FPGA还为网络系统设计人员提供了适应不同安全处理功能以及随着安全技术的发展方便地增加对新技术支持的能力.标准加密/解决以及认证算法,如RC-4、DES、三次DES、MD-5以及安全哈希算法-1(SHA-1)被广泛用于全球网络安全系统中.本文介绍了基于PCI总线的加密卡的研制,硬件板卡的结构,着重论述了加密卡上加密模块的实现,即用FPGA实现3DES及IDEA、MD5算法的过程,加密卡的工作原理,加密卡中多种密码算法的配置原理,最后对3DES算法及IDEA、MD5算法的实现进行仿真,并绘制了板卡的原理图,对PCI接口原理进行了阐述.在论文中,首先阐述了数据加密原理.介绍了数据加密的算法和数据加密的技术发展趋势,并重点说明了3DES的算法.由于加密卡的生存空间在于其高速的加密性能与便捷的使用方式,所以,我们的加密卡采用的是基于PCI插槽的结构,遵从的是PCI2.2规范,理解并掌握PCI总线的规范是了解整个系统的重要一环,本文讲述了PCI总线的特点和性能,以及总线的信号.由于遵从高速性的要求,我们在硬件选型的时候,选用的是TI公司高速DSP T M S 3 2 0 C 5 4 x:T I公司新推出的T M S 3 2 0 C 6 x系列D S P功能强,速度也非常快,但目前价格仍然太高,不适合一般加解密使用.而TMS3 2 0 C 5 4 x系列具有性能适中,价格低廉,产品成熟等特点,是较好的选择.FPGA选用的XILINX公司的XC2V3000,在随后的文章中,我们将会对这些器件特性做相应说明.并由此得出电路原理图的绘制.文章的重点之一在于3DES算法及IDEA、MD5算法的FPGA实现,以Xilinx公司VIRTEXII结构的VXC2V3000为例,阐述用FPGA高速实现3DES算法及IDEA、MD5算法的设计要点及关键部分的设计.

电子科技大学 硕士学位论文 加密卡的研制与加密算法的FPGA实现 姓名:郭兰 申请学位级别:硕士 专业:密码学 指导教师:陈运 20040101 加糍卡的研制与加密算法的FPGA实现 摘要 随着安全通信数据速率的提离,关键数掭加密算法的软件实施成为重簧的系 统瓶颈。基于FPGA的高度优亿的可编程静硬件安全往解决方案掇侥了并行焚理 熊力,并髓可以达翔所要求的加密处疆萑髓(每移的SSL藏RSA运彝次数)基准。 嘲络的迅速发展,对安全性的需要交褥越来越重要。然而,尽管网络技术进步很 快,安全性问题仍然稻对落后。由于FPGA掰提供静设计优势,特别是薪兹高速 版本,网络系统设计久受可淤在这垫网络设备中经济建实觋安全洼支持。FPGA 燕实糯设计灵活靛和功能秀缎酶关键,对于容镨、IPSec协议秘系统接翻闷题嚣 玄这两点非常重甏。箍鼠,FPGA逐羚网络系统设计久是提供了逶应不司安全处 壤功能眨及随着安全技术靛发展方便圭逛增热怼毅技术支持的能力。撂准艇密/您 决以及议涯舅法,如RC-4、DES、三次DES、艇D一5以及安全哙蘑算法一1(SHA—1) 被广泛溺子全球网络安全系绞中。 本文介绍了基于PCI总线的加密卡的研箭,磷俘板卡的缩褐,着蓬论述7船 密卡上加密模块的实现,即需FPGA安现3I)ES及IDEA、MD5算法抟过程,葫密卡 的工作原理,加密卡中多稀密码算法的配置淼理,最麓对3DES冀法及IDEA、M酾 簿法的实现避行仿真,并绘制了板卡豹霖理强,对PCI按目源理进行了溺述。 在论文中,前先阐述了数据加密原理。介绍了数据加密的算法和数孺加密的 技术发展趋势,并重点说明了3DES的算法。 出于加密卡的生缮空间在于其高速的加密性能与便攮的使用方式,所以,我 们的加密卡采用的是基予PCI撼槽的结构,遵从的悬PCI2.2规范,理解并掌握 PCI总线的规范是了解熬个系统的重要一环,本文讲述了PCI总线的特点和性 能,以及总线的信号。 蠡j予遴献裹速链瓣要求,我嬲在硬终选型豹时候,选用款是了I公司高速DSP T M s 3 2 G C 5 4 x:T i公嗣耨推文熬Jr M S 3 2 0 C 6 X系列D S P功能 强,速度也菲掌快,但爨蔻馀格仍然太赢,不适合一般搬烬密使用。两T M s 3 2 0 C 5 4 X系捌具有栋毒g适中,馀揍低廉,产品成熟磐特点,是较好的选择。 FPBA选娟的XILINX公司豹XC2V3000,在随艏的文章中,我们将会对这她器件特 性微摆应说明。并出此缛出电路原理图的绘制。 文章的重点之一在于3DES葬法及IDEA、MI)5算法的FPGA实现,以xilinx 公司VIRTEXII结构的VXC2V3000为镪,酒述援FPGA嵩遮实|髭3DES髯法及IDEA、 MD5算法的设计簧点及关键部分静设计。 热密卡的研铡与加密算法的FPGA实现 关键调{殛纛专 FPGA 3DES IDEA MD5密码算法 II 加密卡的研制与加密算法的FPGA实现 ABSfRACT The future ofnetwork security depends on encryption provided in the crucial building blocks,like switches,routers,bridges,and other communication equipment。All broadband applications need hi曲一speed cryptosystems to speed up high-bandwidth data transfers and to protect privacy, All data transfers are carried over networks like LAN,WAN,and ATMs,which are interconnected with routers,switches,bridges,and other network equipment.The growth of virtual private networks(VPNs) and IP security solutions(IPSec)has heightened demand for secure,high performance data transfers That is why"WC need high—speed cryptosystems implemented in hardware.We implemented the cryptosystems in hardware because hardware—based cryptograph promise the high performance and high level security.In this article,we designed a hardware-based cryptograph using PCI bus in considering of the convenience of this design. The article iS written as follows First we describe the encryption theory used in the design since it is the basal thory we need tO understand the design, Second we display the hardware modules used in the design included DSP,FPGA,PCI etc。we also display the interconnection between those III 加密卡的磷翻与鸯嚣密舞法的FPGA安磷 modules. Thirdly we discribe the implentation of the encryption and decryption process in FPGA, Fourthly we simulate the design and get a correct result。 Key words:3des IDEA MD5 implementation PCI FPGA hardware—based cryptograph 独创性声明 本人声明所里交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:垂幺塾 日期:幻砰年年月肋日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 虢吐 (保密的学位论文在解密后应遵守此规定) 如密墨的谤割与加密冀法韵FPGA实现 第~耄序言 1,滓言 t.1。本骥弱熟灌义 瓣络安全瓣实现鸯款子在网络健输豹主要设餐翅:路岿器,交换机上实现加 密算法,所有的宽带蛾务应掰需要裔遮的加密系统去提高速度与保护敏感傣息熊 安全。DES加密算法~般焉予民用翌艇逶谦,网关赧务器及辊臻盒磁臻,VPN搭 建,视频传输及其它许多地方的加密。 许多宽带应用紧随掰络豹离速发袋两琏{璐。搦今,译多毫予亵务交易,金融 交荔,税颁益控都通过两络进行佟输。敷有的数据传输裁逯避路崮器,交换极, ATM连接的LAN,WAN进行传输。VPN及IPSEC的出现筑黼了数掭高遮安全传输的 攥求,阏题在予,这样的安全措施商多安全,这个的安全措施楚否成为了高速两 终健输灼簸颈。 为了保护敏感数据安全,荚国政府维稃了DES和3DES算法,还育英它的算 法例如IDEA,RC4,RC5等,备有宙穗的加密优点精缺点。 随着入销对DES鸯瑶锯算法瓣弱点提线麴置疑,另~霉枣高级搬密算法豹括准已 经如台,可以预觅的楚,没有~种加密箅法是永远安垒韵,随蔫技术懿遴步,撩 密算法也在变,今天缀流行的宓碡密算法氇许在不久就会被弃灞。与此楣反麴是, 由予FPGA的可编程性,用FPGA设计的加密芯片可以随着算法的改避而改进。这 射候,建FPGA设计加密算法是一鼬比较好的选择,~方面兼容了DES算法,一 方嚣具鍪淘AES丹级的功能。虽然AES标猴已缝出台,却没有进入广泛使用的阶 段,雨对DES箨法静浚进敷撵出麴3DES算法仍然被认为比较安全从褥在疑爝市 璐褥到广泛应焉,戈茭是它继承了DES舞法鹤便于硬《睾实现豹魄点,因此,在民 爝卫星通讯,隅关服务器及杭顶盒应用,VPN褡建,褫额传输及其它许多应耀上 仍然是蕾选。 3DES僮蹋三藏两个不瀚瓣密甥慰数据块邀学三次或两次加密。三踅DES的强 度大约和112-bit的密钥强度相警。三黧DES有滔稀模鳖: (8)DES-EEE3蕊弱三令不同密镄颞痔进行三次期密变换 (b)(b)DES—EDE3使用三个不同密髑依次迸衽期鬻一解密一抽密变换 (e)(e)DES~EEE2其中密钥K1---K3颞黪进毒亍三次加密交换 (d)(d)DES—EDE2其中密钥KI=K3依次进行加密一解密一加密变换 { 加密卡斡研锄与青Ⅱ密算法静FPGA实现 刘茜前为止还没有入给出攻溢三重DES的有效方法,对其密诵空闯中密钥避 行暴力搜索,那么f{il于空蝴太大这实际上是不可行的。若用差分攻击的方法相对 于单~DES来说复杂性以指数形式增长。 IDEA算法的密镛长度为128位,针对64僚的数据进行船密或解密搽释.设计 者尽W能使该算法不受差分密码分析的影响,Xuegia Lai融证明IDEA算法在其 8轮迭代的第4圈之后便不受差分密码分析的影响了。假定穷举法攻击有效的话, 那么靼镬设计一秘每秒零孛可以试骏10亿个密绸螅专翅芯片,芳憋lO亿片这榉的 芯片用于此项工作,仍需1013年才能解决问题;另~方面,若用1024片这样的 芯片,有可熊在一天肉找到密镄,不过入稍还无法我载是够懿硅爨子寒稍造这样 一台机器。鞠前,尚无一片公开发表的试图对IDEA进行密码分析的文章。因此, 就现在来看成当说IDEA楚非常安全的。 1,2。数据热密产品烬国内铃凌态 随着信慰化建设在我圈的深入开展,信息嘲络安全已成为普遍关注的课题。 基于圜家政策的大力支持和信息安全行业的市场推动,我国的信怠安全产品也逐 步发鼹残为~个比较完善|l孽产熬髂系。 储息安全产品所依赖的的安全技术主要包括密码技术、身份认证、访问控制、 虚拟专用网(VPN)、公共密钥綦础设施(PKI)等。信怠技术飞遥发震,信息安 全领域也在不断变化,信息安全产品的体系不可能…成不变,面将随着技术和精 场的变化不断完善。 加密产品主要分为软件加密和硬释加密两稀。 软藤密馨是舞l缝较棒方法寒实现软{孛静藤密,主要有密鹚方式、软馋鑫校验 方式、许可证管理方式、钥匙擞方式和光盘加密方式等。 5年前,国内加密市场主要局限衣软件加密,当时业羿相当一部分人认为, 疆{孛麓密终究会被软{孛麴整囊代替。然蠢,陡蓑t995年强努一黢著名熬杰翼密厂 商如彩虹公司、阿拉丁公司等先后进入中国市场,硬件加密有很好的发展势头。 与传统的软件加密相比,硬件加密的主要特点烧:抗解密强度高,稳定性和 蒹客挫较好。囊镬疆热密裁是遴过硬{睾却敦{串结食瓣方式来实玟黠软《串豹热密, 加密后软件执行时需访问相应的硬件,其典戮产品讯括加密卡和密码芯片及加密 狗等。 嚣藏生产杰翼密工具的厂亵莠不是缀多,其中在翻骣上毙较著名幻有以色到的 阿拉丁和美国的彩虹,而在国内则是众天地和深思洛克。需要指出的是,随着硬 2 加密卡酌研制与船密算法的FPGA实现 加密技术静不断成熟和发展,厂商稍已将黧点转刘了硬加密产潞的磷发和生产 上。 目前国内加密卡实现的3DES速度~般不超过1GB/S,IDEA速度不超过1GB/S, 国外有天稻流水线并行细密的方法实蠛IDEA速度霹以达掰8GB/S,德燕对予将 3DES和IDEA综合到一越来说,两种算法如果都用流水线并行加密的话,对FPGA 逻辑资源的占用相当的大,这就要求选用规模非常大的FPGA,赞用也太过昂贵, 毽此,李翔密卡鲍IDEA算法没有矮滚水线并芎亍期塞豹方法实现,但也熊达到1.4 GB/S。3DES算法采用了流水线并行加密的方法实现,而且FPGA芯片选用的怒高 速鹩,掰良,实琥耱3DES算法理论上能这到14.1 6Ws,能应蔫在一些软{警实 现没法达到的应用场合。 1.3.论文的主要结构及内容 在以下的章节中,第一章是概述部分,从总体上对此加密卡进行了说明。第 二章论述了数据黼密原理,尤箕侧重予加密卡中藤蓟龆密算法辩源瑾与描述,第 三章论述了加密卡的硬件结构搭建,各种芯片的选型考虑及电路原理圈。第四章 论述Tan密卡的核心算法3DES算法,IDEA算法,MD5算法的FPGA实现的模块戈《 分及裹速嶷现此算法的考虑。筵五章是文索豹结论部分。 3 加密卡的研制与加糍算法的FPOA实现 2.数据加密原遴 2.1概述 第二露数据加密原理 在论述PCI惑线数据黼密卡原遴和结掏之麓,了解数攥秘密技术麴原理菲 常重黉,它有魏予我们黠整卞鸯羹密系绞馥数疆滚翟鞠实褒漩骥徽受深入熬壤筑。 溺络系统安全性静棱心楚数据懿安全悭。网络系统中豹数撩鸯强蜜、数字签名、身 份认涯、访闷控制、安全簧理、安全审计、灾难恢复、网络安全及其他安全措趟 等都是以保护数摄安全为中心,在网络系统安全中,最高屡的安全就是数搌是否 处予安全状态。 2.{.4粕密鹃由来 鸯硅密律为保障数据安垒的一耱方式,它不是嚣在才寄静,它产生豹掰变耀当 久远,它蔗起源予要遥溺予公元蘸2000年(尼令越纪了),虽然它不是现巍我们 掰讲装鸯蠢密鼓术(甚至不qq加密),毽{乍为~耪加密的概念,确实早在几个世纪 蓠就诞生了。当时埃及人是最先使用特别的氖形文字作为信息编码豹,随鬻对嘲 接移,踺比抡、美索不达米亚和希腊文明郡开始使用一些方法来保护饿们的书磷 信息。 近期力瑟巅技术主骚应髑于霹事领域,如美国独立战争、美国内战和两次世界 大战。最广为人知的编码机器难German Enigma机,在第二次世界大战中德国人 利用它创建了加密信息。此后,由于AlanTuring和Ultra计划以及其他人的努 力,终于对德国人的密码进行了破解。当裙,计算梳的研究就是为了破解德国久 的密鹳,人们并没畜慧委计算掇给今天带来懿僖怠琴愈。随蓉诗箨极瓣发袋,运 算能力静增强,过去舱密璃都变褥十分篱攀了,于是人{}3又不叛蟪磁究出了毅瓣 数据热褰方戏。 2。{。2熬密豹搬念 数攒加密的罄本过程就是对原来为明文的文件鬣数稻按菜稀簿法避行憝毽, 饺荚戏为不胃读瀚一段{弋褐,逸鬻拣为“零文”,馊其只姥在竣入姻应豹密钥之 后刁。憝鼹示嶷本来内容,逶过这捞的途经表达到缳轳数糕不被非法人锈取、阅读 豹爨麴。该过程豹逆过稷为解密,即掺该缡鹳接息转化为其原来数据的过程。 数攒船密 密弼是一缰含套参数的交换; 4 加密卡的研制与加密算法豹FPGA实现 明文(plaintext)作为加密输入的原始信意{ 密文(Ciphertext):明文变换结果; 密钥(key):参与变换的参数 密码休雠 逶攀一个完整密强钵裁要怒括如下五个溪素慰奠霉墨拶 1腮可能明文的有限集称为明文空间 2瘫W能密文的裔限集称为密文空阉 3^是一切可能密钥构成的有限集称为密钥空间 4对于密钥空间的任一密铜有一个加密算法和相应的解密葬法使褥ek:礁一>e 期敦:C->M分别为期密姆鬻蘑数满足dk(ek(蓟)=盖。 一个密码体制要是嶷际可用的必须满足如下特性: 每一个加密函数晰口每一个解密函数甜部能有效玩计算 皴译老取提赛文后将不能在有效的时间内破解出密钥矗或明文X 一个密码系统是安全的必臻条件:穷举密钥搜索将最不可行的,即密钥空间 ≤≥霉大。 密码算法分类 按发展进程分密码的发展经历了古典密码、对称密钥密码、公开密钥密码的 发震阶段。古典密码是基于字符替捩的密确,瑶在已摄少使蔫了,毽楚它代表了 密码的起源,现谯仍在使用的则是对位进行变换的密码弹法,这些算法按密钥管 理的方式W以分为两大类,即对称算法与公开密锻算法。对称算法的加密密绸和 磐塞密锶捐弱这些算法也lq终秘密密钥算法或单密钥算法,按加密模式分,对称 算法又可分为序列密码和分组密码两大类,序列密码每次加密一位或~字节的明 文,也霹落称为滚密稻。淳翻密蕊楚手工窃撬辕密码薅代豹主流。努缝密妈将醒 文分成固定长度的组用同一密钥和算法对每一块加密输出也是阉定长度的密文。 要理解3DES的加密原理,也是本卡实现的加密算法的核心,就必须了解DES 静藤淫,下嚣对DES原壤送行奔绍。 2。2数据加密橼准DES DES(Data Encryption Standard)算法,于1977年得到燕国政府的正式许 可,楚一释孺56谴密锈来赧密64位数据静方法。DES舞法殴被应弱于谗多需要 安全加密的场合。(如:UNIX的密码算法就是以DES算法为基础的)。下面是关 于如何实现DES算法的描述。 5 塑燕:兰塑堑墅兰蛰童茎鎏塑坚至坠塞堡 A-1、变换密锯 取缮64位瓣密锈;每个第8位佟为奇偶梭验位。 妒2、变换密钥。 A一2—1、舍弃64位密钥中的衡偶校验位,根据下表(PC-1)j抉行密钥变换得 到56位的密镝,在交换中,奇偶校验位磷被舍弃。 Permuted Choice l(PC一1) 57 49 4】33 25 17 9 l 58 50 42 3唾26 18 10 2 59 5l 43 35 27 19 1l 3 60 52 44 36 83 55 47 39 3i 23 15 7 62 54 46 38 30 22 14 6 6l 53 45 37 29 2l 13 5 28 20 12 4 A-2—2、将变抉后的镱钥分为两个部分,开始的28位称为C[O],最后的28 位称舞蚤[羽。 A-2—3、生或16个子密钥,孝露始I=l。 A~2—3—1、同时将C(I]、D[I]左移1位或2位,根据I值决定左移的位数。 见下震 I: 1 2 3 4 5 6 7 8 9 10 ll 12 13 l《15 18 左移位数:1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 A-2—3—2、将C[I]D[I]作为~个整体按下表(PC-2)变换,得到48位的K[I] Permuted Choi ce 2(PC-2) 14 17 ll 24 i 5 3 28 15 6 2l 10 23 19 12 4 26 8 i8 7 27 20 13 2 41 52 31 37 47 55 30 40§l 45 33《8 44 49 39 56 34 53 6 黧童主鳖堕塑兰麴童簦遗塑壁壁垒塞銎 《6 42 50 36 2§32 磊~2—3—3、驮A一2—3~l处矮环技嚣,妻翻K[16]羧诗嚣完成。 8、处理64位的数掇 B—l、取得64位的数据,如果数据长度不足64位,应该将其扩展为64位(例 如补零) B-2、将84像数据按下表交换(IP) Initial Permutation(IP) 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 4l 33 25 17 9 l 59 51 43 35 27 19 ll 3 6l 53 45 37 29 2l i3 5 63 55 47 39 31 23 15 7 B一3、将变换艏的数据分为两部分,开始的32位称为L[O],最后盼32位称 为R[0]。 B-4、用16个子密钥加密数据,初始I=1。 B-4—1、将32位的R[I—1]按下表(E)扩展为48位的E[I—1] Expansi 0/1(E) 32 1 2 3 4 5 45 6789 8 9 10 ii i2 i3 12 13 14 15 16 17 16 17 18 19 20 2l 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 3l 32 1 B-4—2、异或E[I—1]和K[I],即E[I一1]XOR K[I] B一4—3、将异或后的结果分为8个6位长的部分,第l位到第6位称为B[1], 7 加密卡的研制与加密算法的FPGA实现 第7位到第12位称为B[2],依此类推,第43位到第48位称为B[8]。 B一4—4、按s表变换所有的B[J],初始J=l。所有在s表的值都被当作4位 长度处理。 B一4—4—1、将B[J]的第1位和第6位组合为一个2位长度的变量M,M作为在 S[J]中的行号。 B一4—4—2、将B[J]的第2位到第5位组合,作为一个4位长度的变量N,N作 为在S[J]中的列号。 B-4—4—3、用S[J][M儿N]来取代B[J]。 SubstitutiOn Box l(S[1]) 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 1 5 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 l 14 8 13 6 2 1l 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 S[2] 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 O 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 】3 8 lO l 3 15 4 2 1l 6 7 12 0 5 14 9 s[3] 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 13 6 4 9 8 15 3 O 11 1 2 12 5 10 14 7 1 10 i3 0 6 9 8 7 4 15 14 3 11 5 2 12 S[4] / 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14 S[5] 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 14 1l 2 12 4 7 13 l 5 0 15 10 3 9 8 6 8 加密卡静研制与船密算法静FPGA实琥 4 2 1 ll 10 13 7 8 15 9】2 5 6 3 0 14 11 8 12 7 1 14 2 t3 6 15 0 9 10 4 5 3 S[6] 12 l 10 15 9 2 6 8 0 13 3 4 14 7 5 11 10 15 4 2 7 12 9 5 6 l 13 14 0 ll 3 8 9 14 15 5 2 8 12 3 7 0 4 10 l 13 ll 6 4 3 2 1 2 9 S 15 10 11 14 l 7 6 O 8 13 S[7] 4 ll 2 14 15 0 8 13 3 12 9 7 5 lO 6 l 13 0 ll 7 4 9 l lO 14 3 5 12 2 15 8 6 l 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 8 l}13 8 l 4 10 7 9§0 15 14 2 3 12 S[8] 13 2 8 4 6 15 1l 1 10 9 3 14 5 0 12 7 l 15 13 8 10 3 7 4 12 5 6 ll 0 14 9 2 7 1l 4 l 9 12 14 2 0 6 10 13 15 3 5 8 2 l 14 7 4 10 8 13 l§12§0 3 5 6 ll B一4—4-4、从B-4-4-1楚德嚣技嚣,直到B[8]被替代完成。 B一4—4~5、将BIt]到B[8]组合,按下表(P)变换,得到P。 Permutatiorl P 16 7 2e 2l 29 12 28 17 1 15 23 26 5 18 3l lO 2 8 24 14 32 27 3 9 19 13 30 6 22 ll硅25 8-4-6、吴或P帮L[I-1]结暴敖在R[I],郅R[i]=P XOR L[I一1]。 B一4—7、L[j]=R[I-1] /3-4-8、从B-4-1处开始循环执行,直到K[16]被变换完成。 9 加鬻卡的研制与加密算法的FPGA实现 B-4—5、缎合交换后的R C16]L[16](注意:R作为开始的32位),按下表(IP-1) 交换缮最后鲍结果。 Final Permutation(IPl) 《O 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 2l 6l 29 36 4 44 12 52 20 60 28 35 3 43 1l 5l l§59 27 34 2 42 10 50 18 58 26 33 l 41 9 49 17 57 25 以上就怒DES冀法静描述。 2.3敬进懿DES箨法:3DES 这耱方法是DES豹黢避翔鬻算法,它壤羯嚣把密钥辩摄文{謦3次DES龆 密,效果相当于将DES密钥的长度加倍。3层DES克服了DES的显籍缺点, 即其§6位的短密锈。本来,3层DES是通过3次使焉DES算法来对数据避 行编码加密,在每l层上都使用不同的密钥,这样就可以用1个3X56=168位 的密钥进行加密;如下图所示,用I表示输入,O表示输国, 趣密:0=‰(D。(&(I))) 解密:O=E。(D。(E。(I))) 蹦2一l 3DES冀法示意豳 10 加密卡的研制与加密算法的FPGA实现 第三章加密卡的硬件结构搭建 3.加密卡的硬件结构搭建 加密卡由大体上由DSP芯片、FPGA芯片、PCI桥接芯片,密铜生成模块组成, 其中PCI芯片霜予完戒PCI接掰豹弱戆,DSP芯冀翅子密镧保存,鸯霾蜜数据初媲 处理,算法的改进升级等其它功能,保证传送到FPGA的数据就是加密算法所需 要的数据格式。板卡的电路原遴圈翔下圈3--1、图3-2繇示。 系统资源的划分: PCI芯片壹接与FPGA芯片穗连,究成32BIT数器交换控镧,遗过PCI的GPIO 实现硬件的加密算法选择与切换,DSP使用HPI总线与随机数序列发生器交换数 据,DSP与FPGA之间通过16位数据总线、16位地址总线相连传递密锈序弼n 图3-1 PCI桥接蕊片与FPGA芯片相连的电路原理鹜 加密卡的研制与加密算法的FPGA实现 图3.2 DSP与FPOA芯片互连的电路原理图 3.1 PCI2.2规范疑PCI芯片选戮 随着计算机系统及应用技术的迅速发展,PCI (Peripheral Component Interconnect)总线已经成为鼹裁最滤孑亍的、也是瀑 有发腱前途的计算机系统局部总线,相应的,计算机应用领域的备种功能扩展卡 也必将逐步发震为PCI标准静扩展攉卡。酲下藏PCI怒蕊瓣特缝徽蘩要概述。 PCI捺议戆主癸内容: PCI总线的基本传送机制是猝发传送。一个猝技传送由一个地址段和一个或 多个数据段组成。它要求舀标设备和总线主设备都必须能理解隐含寻簸,PCI支 持对存镳嚣鄹I/O地址燮闻的狞发。圭娇路农无副像用的情况下可以将多个存储 器写操作合并为一个猝发传送。设备通过设鬣基本地址寄存器中的预取位来表明 没畜戮终臻。褥路露戮逶l霪褪始纯期阕嚣置较借提供豹逢缝范国寒粼凝辫里克诲 合并、哪里不允许。当接下来的是一个不可预取的读或写时,合并数据剿缓存器 必须停止(且缓存器被剩新)。如果在可颈取范围,跟在上述两箨{孛之精的骂传 送可以与后续的霉合并,但不台并前颥的数据。 主桥路通常可以将处理器产生的连续双字按原顺序组合到一个猝发传送中, 例如,当处理嚣写的顺序是鼹字0、双字2、毅字3时,轿鼯可以产生~次游发 传送。该PCI猝发顺序可以是取字0、双字1(无字节允许)、双字2、双字3。 l2 鸯嚣密卡鳃谤鬣与糯密算法静FPGA实褒 组合任侮辩候都傻褥后一令双字豹逸疆篦蓠~令双字酌遗圭壹更意意义。港读棼发 对被寻址的目标设备无副作用时,挢路可以将处理器的单个存储器读请求转换为 读猝发。 鬻为放楚理嚣中发I/O搽佟不能被组合,舞瑷逮释操作将按茏豢清爨只有~ 个数据段。目前尚没有融知处理器和总线主设备能对I/O空间产生猝发操作。但 当I/0猝袋成为现实时,髯标设备和憨线主设备都必须能灌解隐含寻疑。不麓避 行多数据段处理的PCI设备必须在第一个数据段后脱离操作。所有I/o操作必须 正确出现在PCI上犹如处理器产生它那样(如果I/O操作中有目标设备被选中, 毽字节竞诲帮说嚼传送字:毒数丈予该霆标设套赝支持载字节数,则毯撂设备用努 标设备失败终止传送)。 PCI信号线部分 在PCI局部总线麓范信号线定义中,凳总线的掰京信号分为两部分,必备 的和可选的。其实在必镑信号线中有些也是可以省略的,可选信号使用时则更应 仔细。在此只挑选若干条特殊信号线加以说明。 中断信号 中辑弓|脚是恕乎皴发,低蠢散,.照漏极开路输出驱动器驱动,与时镑另步。 PCI为每一个单~功能设备定义一根中断线。 INTA#o/d中断A用于单一功能设备请示~次中断 INTB_|{o/d中断B耀予多功熊设备谤示一次中断 INTB#o/d中断C用于多功能设备请示一次中断 INTB#o/d中鼗D囊予多臻髓设备遴示一次中叛 多功熊设各的任何一静功能都能遴到任何一个中断上。中断引脚寄存器决定 该功能用哪一条中断线击请求中断。如果一个设备只用了~条中断线,贝0这条中 藜绞裁被髂为INTA#,翔栗该设备髑了嚣祭中叛线,那么宅翻裁被穆为INTA# 和INTB#,依次类推。对于多功能设备,W以是所有功能用一条中断线,也可 醣怒每种功能膏螽己的~条中断线(畿多4;睁凌能),还爵良怒上述两转清菠的 综合。一个单功能设备不能用~条以上的中断线去请求中断。 PAR信号 诧信号是主设备和从设备都必须实璐熬信号。需要注意戆怒诧信号是由提供 数据方驱动的,而不论该方是主设备还是从设备。并鼠该信号是地址/数据线 AD[31::ooj和命令/字节使能线c/髓[3::o]共36条信号线的奇偶校验,必须在 13 掬密卡豹岙并稍与蕊密算法的FPGA实现 输警数据的次时钟周期驱麓该信号,按浚数据方在该瀚蓊验证信号提供了奇稻憾 后,下~时钟周期由PERR#信号作出应答,数据正常传输时无效,发生奇偶错时 有效。 SERR#信号 该系统锚误信号线被PCI规范列为必备倍号。但实验证明,该信号列计算机 整个系统影响非常大,一照有效剃造成系统死杭,而该信号的产生梳涮也琵较复 杂,鬟耍较多资源,鼓此继号一般情况可要之不理,扩展撼卡上空置即可。 REQ#和GNT#信号 此两条为总线仲裁信号。虽然被蕊范列为必备信号线,僵若我们设计的擂卡 不用来{乍主设备,就不必浪费资源来实现它们。 PCI功率部分 接口驱动 PCI蕊藏兢定:PcI总线是个CMOS总线,总线的信号驱动采丽反莉波方式, 能力较弱,静态电流很小,因此投卡上的每条馕号线只能有…个门电路负载挂接。 这不仅是指通常的数据/地址总线,而且包括了所有的信号线。因此,用户逻辑 秘PCI卡援联系懿每一条信号线都必须在中烟设置~令双囊三态驱动门,状态枧 和配鼹空间等用户逻辑必须放置在三态门之咸,与总线隔离。否则大多主板无法 启动或工作辩闽一长易浼环主板。 PCI对痔方瑟 PCI总线由于其工作频率在33MHz戏66MHz,每个时钟周期只商30ns蠛15ns, 敌对时序要求十分严格,特别是对数据变化所占时间应特剩注意。PCI蕊定信号 为上嚣浍罴撵,下黪浍数据改变。状态救设诗对要充分考虑接口芯片本是的时跫, 必须保证数据在采样上升沿之前稳定。不同工作速度的FPGA芯片的时延是不同 静,黼纛FPGA芯冀遥型嚣尊一定癸将芯嚣懿露延诗算在痰,越要錾有一定冗余餐。 必要时可在状态机中使IRDY#或TRDY#信号延迟一个时钟周期驱动,即能保证系 统的稳定往。 PCI选臻翡鹣怒PLX9030,PCI 9030 SMARTarget I/o翔逮搽。该芯片具有 以下特性: 符合PCI v2.2规范的32位33MHz目标接口芯片可以获得高达132兆字 节/移耱PCI突发传输逶渡。 14 加密卡的研制与加密算法的FPGA实现 高达60MHz的局域总线操作使突发传输速度高达240兆字节/秒 PCI目标预读取模式。PCI 9030将从局域总线预取可编程数量的数据。预 取的数据可从PCI 9030内部PCI目标读取FIFO在PCI总线上进行突发传 输。预取大小可编程为适合PCI主控器的突发长度或用作PCI目标预读取模式 数据。该特性可增加带宽并减少读取延迟。 PCI目标可编程突发传输。PCI 9030可以为多个突发传输长度进行编程,包 括无限突发传输。 这样可使PCI和局域总线上的传输速率提升到最高水平。 PCI目标写延迟。PCI 9030支持PCI目标写延迟模式。在这种模式下,PCI 目标写操作FIFO中的PCI目标写数据会被延迟,以允许局域总线上的不间断 突发处理。这在PCI时钟频率比局域时钟频率慢或需要局域总线进行突发传输 时可获得较高的吞吐量。 上传存储器写入。PCI存储器写入数据可以上传到PCI 9030以便稍后再传 输到局域总线。这可以将PCI性能提升到最高水平,并避免可能出现的死锁现 象。 可编程局域总线操作,使其运行于高达60MHz的频率,支持非多路复用和 多路复用32位地址/数据协议,并支持动态局域总线宽度控制以通过从属访问 方式访问8位、16位或32位设备。 支持5个PCI到局域地址空间。这些空间(空间0、l、2、3和扩展ROM 空间)允许PCI总线主控器采用个别编程等待状态、总线宽度和突发传输功能, 访问局域存储器空间。 PCI 9030有9个可编程通用目的I/O,可用于多种用途。 四个可编程芯片选择消除解码逻辑。 支持CompactPCI热交换 支持所有操作和数据类型的自动快速Big Endian和Little Endian转换。 中断生成器可从外部和内部来源插入PCI中断。 完全支持重要产品数据(VPD)PCI v2.2扩展,包括新功能结构。为定义了 参数或配置数据的用户或系统提供~种替代访问方法。 PCI电源管理,支持D0、D3热电源和D3冷电源状态。 3.3 V,5V容错PCI信号使其可用于通用PCI适配器 15 加密卡的研黼与鞠密算法静FPGA实现 3+3 V CMOS设备包含在节省空闯的180锋mBGA或176 PQFP封装中 辫搦特拨 5V容错操{乍一PCI 9030要求3。3 Vcc。它在PCI和髑域总线上提供带5v I/O容错功能的3.3V信号传输。 率行EEPROM缓臼 一包括一个弼子可选串幸亍EEPRO§I的接翻,可羯来裁 入配爨信息。 时钟一局域总线根据局域总线时钟信号运行,并产生必要的内部时钟信 号。该时锌与PCI时锌辩步运行。PCI 9030提供PCI缓冲时锌,鲡蠢需要, 可用作局域总线时钟。 3.2 DSP选型与考虑 T I公司新推出的T M S 3 2 0 C 6 x系列D S P功能强,速度也非常快, 值目前价格仍然太高,不适合一般加解密使用。而TMS 3 2 0 C 5 4 x系列矮 有性黢适中,价格低壕,产品成熟等特点,是较好的选择。本文所介绍的P C加 密卡以TM S 3 2 0 C 5 4 X D S P为其主C P U。TM s 3 2 0 C 5 4 X系 捌D S P匏部分产黯具枣H P£搂疆,设计为容易与I S A总线翊连。艇基于{ S A总线的产品已经处于逐渐落伍的状态,P C I总线是当前和今后一段时间P C适醚卡鞠主要开发平台,霞藏需要京P C I总线平台上开发热密卡产懿。 麓 入DSP芯片最重要的功能是因为其算法可升级,并且其扩展的FlashROM可以 存储程序之外,还用于存储密铜和其它重要信息,摊电傈持数据。 3.3 密钥信号产耄模块 密钥信号产生模块的功能蔻产生真正意义上的随机数,两不楚由软{牛通常所 产生的伪随机数。真随执数在密码技术中的用途有:产生工作密钥和会话密钥, 为公钥算法提供生成素数所需的随机数,某魑公钥算法和协议(例如密钥交换 势议等)壹接零要~巾或多令琏援数参与运舅等。模块生藏夔砉;1I数鹣捉遴源予大 自然中永恒的噪声,将元器件(例如雪崩二极管)所固有的噪声加以放大,樽 通过A/D芯片采榉转换,便得到了真正意义上静隧梳数。本卡中该模块饺蔫麓 器件较少,两且采用的A/D芯片MAXl52的转换精度仅为8位,因此成本很低, 而所产生的随机数足以满足对随机数设能的要求。仅采用DO即LSB作为所譬兰 裁蕊隧捉数,其产生速率夯可达100Kbit/s以上。下图是~个麓易两实用的随 机数生成电路的原理图。 16 加密卡的研制与加密簿法的FPGA实现 銎3-3密铺序列产生模块 麴图艨示,雾爱二极罄的反向节电压会随着时间的推移,湿发的变化或外界 复杂环境等的影响产生微弱细小的随机变化,因为其不可预测性,可将这种变化 视为鱼然噪声信号。该信号经过放大后,放大的信号也即成为模拟随机信号,该 髂号经过A/D转换后成为数字信号。由于二极管的反向节电压总体基本保持不 变,所以其采样值也在小范围内变化。其高七位可能几乎不变,但其最低位却会 发生随机变化。用其最低位的值组合产生随机信号做为密钥,必然会是一个随机 序列。 l7 蕊寮卡熬磺稍与热密算法黪FPGA实瑗 第图章加密算法的实现 4+勰密算法的赛臻 4。{选用FPGA实瑗热密算法均拔势 此次加密算法的实现主要采用XILINX公司的VIRTEXII FPGA实现。随着 FPGA(Field Programmable Gate Array)容量、功能以及可靠往的提高,英在蕊 代数字通信系绞中的应用鞠溉广泛。采用FPGA设计数字电路已经成为数字电路 系统领域的主要设计方式之一。在信号的处理和整个系统的控制中,FPGA不但 能太大缩减魄终静髂辍,提高电鼹魏稳定蛙,嚣|i且其先进款开发工具使熬令系缆 的设计调试周期大大缩短。FPGA既继承了ASIC的大舰模、高集成度、高可靠性 的优点,又克服了管逶ASIC设计周翳长、授瓷大、瑟活灌差静缺点,逐步戒为 复杂数字硬件电路设计的理想曹选。FPGA有如下的、特点: 规模越来越大。随着VLSI工艺的不断提商,单~芯片内部可以容纳上百万 个晶体管,FPGA芯片酶麓模遣越来趣大,萃嚣逻辑}j数已l愈酉万,魏XILINX VIRTEX-II XC2V8000已经达到800万门的规模。芯片的规模越大所能实现的功 能就越强,潲时也更适于实现片上系统(SOC)。 开发过弦投资,』、。FPGA芯片在鑫厂之嚣都强遘吾分之露懿溪试,瑟基FPGA 设计灵活,发现错误时可点接更改设计,减少了投片风险,节省了许多潜在花费。 所以不但许多复杂使用FPGA完成,甚歪设计ASIC瓷要把蜜现FPGA功麓棒税徽 为必鼹的步骤。 FPGA一般可以反复的编程、擦除。在不改变外圈电路的情况下,设计不同片 内逻辑就能实现不同的电路功能。所以,焉FPGA试翻功能样稚,髓班簸浃豹速 度占领市场。甚至在有些领域,因为棚关标潍协议发展太快,设计ASIC可能跟 不上技术更新,只能用FPGA完成系统的研制与开发。 僳密往好。在某些场合下,穰摇簧求选溺痴壹及囱技术的FPGA髓缀舞懿{莱 护系统的安全性和设计者冉勺知谚{产权。 FPGA开发工具智能化,功能强大。现在,FPGA开发工具种类繁多、智能化 高、功能强大。应璃各释z其可以完成觚输入、综会、实现蜀配霪芯片等一系剜 功能。还有很多工具可以完成对设计的仿真、优化约束、在线调试等功能。这些 工具易学易用,可以使设计人员更能集中精力迸行电路设计,往产品快速推商市 场。 18 加密卡的研制与加密算法的FPOA实现 4.2 FPaa的选型考虑与配置 考虑到我们的设计是以面积换速度的思想,为了实现3DES算法的高速运算 必须选髑太瘦模豹嚣{譬,为此,逸瘸了XILINX公司兹XC2V3000—6BF957芯片, 这款芯片资源如下; 规模:300万门 Slioes:14336 18x18乘法器:96 独立RAM块:96 芯片凌瑾特淫: 高达420M的内部时钟: 840+Mb/s高速I/O. 12令DCM嚣镑餐壤资源 精确去除时钟抖动; 4,3 芯片的初始化粼置 XINLINX VIRTEX--II的芯片配置通过下载配置数据到芯片内存来实现。通 过对~组特殊功能篱脚的配置来实现,这些管脚有些是专用的,有些是可炭用的, 在配鬣宠或嚣,仍然徽为逶曩{O嬲捷羯。 根据系统的设鬣,有几种可选的配置模式,通过对配霞管脚的不同嚣!位来选 择。其中模式选择臀脚Ml,M2,M0是专用的酉已鼹管脚。HSWAP EN也用来配置, 它决定了I/ON在醚鬟期闻是否蠢上拉电阻。缺省状态下,tlSWAP~EN霉燕(内部 上挝电黼),I/OH程配置期间秃上拉电阻。巍HSWAP EN鬣低靖,T/OH在配置 期间无上拉电阻。蕊它专用管脚煅:CCLK,DONE,PROG B及边界扫描管脚:TDI, TDO,T燃,TCK。根据系统要求选鲻。CCLK可以囱FPGA产生,也可以由外部产生。 通过配置,可酥将这些配鬣麓脚的状态保持住,谴萁在黼置完成焉仍然傈持 住原状态。假如没稍选择这个功能的话,可配鼹的管脚在配濯完成后将做为通用 IO口使粥。这个功能的不包括边界扫描相关的管脚。 XC2V3000的配溅模式有五种,分别为: 串翻从模式 串蕊主模式 19 翻密卡静醑镩与魏密算法静FPGA实班 并溜歇模式 并阴主模式 边界扫描模式 窜口献禳式: 在率翻从模式中,FPGA黼模式接受从外部PROM传来翡醒娶数据。此时, CCLK管脚从外部接受时钟信号,串行数据必须在外部时钟上升沿后的很短时间内 在DIN管辩上建立。率日铁模式{囊是鼗款FPGA豹缺雀醚萋搂式。此摸式支持蔫花 链多片下载模式。 串口主模式: 在串口主模式中,CCLK由内部时钟源产生对井输出时钟信号来驱动外部 PROM,然后PROM将零行配爨数据健到FPGA,FPGA在每个时钟上升沿接收此配置数 据。串口主模式与串口从模式的唯一区剐就在于时钟信号的产生怒由内部还是由 拜部产生。 Con/Jgur&t|on Mode(1) M2 拍, MO M8sfef Se rIal 0 0 O Slave 8er旧l Ⅻ&sler Sg∞l凇p 1 1 1 0 { { Slave 8electMAP ' 1 0 B0un味aⅣScan 1 O ’ CCL较Djrectlon 0m 1rl Ou} ln ㈣ Da抽Widlh ’ 1 e 8 1 阁4-1 FPGA初始化管脚M2、Ml、MO的不同配置 Dou— Serlal Yes Yes Ko No No 并口从模式: 著蠲放模式是袋浃静黧萋模式,一次莛送8BIT黧置数撂,爱一令虻酝恚来控 制数据的传送。外部提供时钟信号,片选信号,写信号,当忙信号变高的时候, 数据传送一逡等到忙信号变低的时候菩继续邋行传送。 并目主模式: 并口主模式与井口从模式的唯一区别就在于时钟由FPGA内部产生。 边界扫描模式: 程边界捆描模式中,专用管脚用于对些模式的配置,VIRTEX--II芯片的边界 扫播模式兼容IEEEl532标准稻IEEEll49。1-1993标壤。 芯片配鼹顺序: 配置分为三个步骡进行: 2n 加密卡的研制与加密算法的F]PGA实现 首先,先将芯片内存清0,然后,配置数据载入芯片内存,最后,这些配置 参数被一个启动进程激活。配置过程在上电的时候将被自动激发除非人为干涉停 止。其中的INI B管脚可以用一个漏极开关置低。 4.4 FPgAII(]电源配置 图4—2 FPGA,*L,片的外部电源电路 加密卡设计由于使用了高速的FPGA芯片,所以电源对调频纹波噪声非常敏 感,为此我们的电源采用专门的外围电路,避免FPGA出现工作失误。这一款设计 为FPGA提供了三个独立的电源供电,分别是:输入电源、输出电源、辅助电源。 2l 加密卡的研制与加密算法的FPGA实现 4.5 FPGAIICj设计流程 一个完整的F'PGA设计流程包括电路设计与输入、功能仿真、综合、综合后 仿真、实现、布线后仿真、实现、布线后仿真和下板调试等主要步骤。 电路设计与输入是根据工程师的设计方法将所设计的功能描述给EDA软件。 常用的设计输入方法有硬件描述语言(HDL)和原理图设计输入方法。原理图设 计输入方法在早期应用得比较广泛,它根据设计要求,选用器件、绘制原理图、 完成输入过程。这种方法的优点是比较直观、便于理解、元件库资源丰富。但是 在大型设计中,这种方法的可维护性较差,不利于模块建设与重用。更主要的缺 点是:当所选用芯片升级换代后,所有的原理图都要做相应的改动。目前进行大 型工程设计时,最常用的设计方法是HDL设计输入法。其中影响最为广泛的HDL 语言有VHDL、VERILOG HDL。它们的共同特点是利于由顶向下设计,利于模块 的划分与复用,可移植性好,通用性好,设计不因芯片的工艺与结构的变化而变 化,更利于向ASIC的移植。波形输入和状态机输入方法是两种常用的辅助设计 输入方法。使用波形输入法时,只要绘制出激励波形和输出波形,EDA软件就能 自动的根据响应关系进行设计。而使用状态机输入法时,设计者只需要画出状态 转移图,EDA软件就能生成相应的HDL代码或者原理图,使用十分方便。但要指 出,后两种设计方法只能在某些特殊情况下缓解设计者的工作量,并不适合所有 的设计。 下图是FPGA的设计流程图。 22 加密卡的研制与加密算法的FPGA实现 Y 23 盍西密卡貔磷稍与翻密算法静FPGA实现 嚷潞设计完成籍,要丽专用瓣仿真工其对设计谶行功能仿真,验证电路功能 是否符合设计要求。功能仿真有时也被称为前仿真。常用的仿真工具有MODEL TECH公司的MODELSIM,SYNOPSYS公司的VCS,CADENCE公镯的NC-VERILOG和 NO—VHDL,ALDEC公司夔ACTIVE HDL等。通过仿真§2及时发理设诗中鲍错误, 加快设计进度,提高设计的可靠性。 综合优化(SYNTHESIZE)是指将HDL语言、原璃图等设计输入翻译成由与、 羲、j#门,RAM,R黼IS王ER等基本逻辑单元组成的逻辑连接(网袭),势根据强 标与要求(约束条件)优化所生成的逻辑连接,输出EDF和EDN文件,供FPGA 厂家翡蠢届布线器避行实堍。 缀台完成后震要检查综合结桨是否与原设计的一样,需要做综合囊仿真。在 仿真时,把综合生成的延时文件反标到综合仿真模戮中去,可估计门延时带来的 影穗。综合菇傍囊整然毙璇能蛰真精确些,毽是只§%镀诗门延曩寸,瑟不戆{吉计线 延时,仿真结果与布线后的实际情况还有一定的差距,并不是十分准确。这种仿 真的主要雷静在于检查综合器静综合结梁是磷与设计输入~致。 练会结袋熬本矮是一擅由与、或、;}}j,RAM,REGISTER等綦本逻姆单元缒 成的逻辑网波,它与芯片实际的配置情况还有较大艘距。此时应该使用FPGA厂 商挺供的工粪软件,禳舔所逛芯片的黧号,将综台输密的逻辑两泼适配蠲其体 FPGA器件上,这个过程就叫做实现过程。XILINX的实现过程分为翻译,映射, 布局布线等3个步骤。因为只有器件开发商墩了解器件的内部结构,所以实现步 骤必须选用器件开发费联提供的工具软{孛。 布局布线之后应该做时序仿真,时序仿真中应该将布局布线的延时到设计 中,使仿真溉包含门延时,又包含线赋时信息。与前面各种仿真相院,这释后仿 真包翕的延8寸信息最为全西、缎确,能较好豹反映芯片的实际工作情况。 设计开发的最后步骤就是在线调试或者将生成的配置文件写入芯片中进行 测试。每个仿真步骤如采岛现闻蘧,就需要穰据错谈的定位返回蠲相应静步骤嚣 改或鬻重新设计。 4。6用摸块化设计FPGA的方法 随着可编程技术的发展,FPGA被广泛应用于电子设计的各个领域。越来越多 复杂的系统的核心电路利用FPGA设计完成,这些复杂系统经常需要使用百万门 24 加密卡的研制与加密算法的FPGA实现 以上的大规模FPGA来设计。另一方面,为了对市场需求做出嫩迅速的反映,就 要求这燃电子产品的设计周期尽攮缩短,只有以第一时间推出成熟稳定的产品, 才璇获缮更大的市场份额。于是一方疆翥要百万门以上的大揽模FPGA以满足设 计需要,另一方面需黉在最短盼时阉内高质量的完成设诗戬满足市场需要,这两 者出现了矛盾。 鼹决这个矛盾的唯一出路是投入更多豹人力,避彳亍著行工{乍、协同设计。并 行工作、协同设计在~般的工业生产中眈较容荔实现,镶鲡生产一部汽车,可以 在不同车间并行生产出汽车的各个配件,然后统一将这些配件组装起来即可。如 果每个零件的制造都能满足图纸的公差标准,那么每个零部件的制造的关联就不 是郡么綮密,完全可以劳嚣送行生产铡造。霞翻邈每个零零{孛之藏懿袋系尽整,J、, 然后运用并行、协同工作方式相对独立的生产每个零部件,激后将这些零部件组 合起来的工作方法就是一种模块化设计方法。 4。7窦瓣3DES粪法的模块霹分 设计的主要重点谯于高速性。我们做了如下考虑:将DES的16轮加镶用流 承线形式寒实现,逶遗大面积的占粥门阵列来换取速度上的炔速。这就是薅速实 现DES冀法的关键所在。同瑾,我稍将3DES豹3次DES盔寮也展开。以下的章 节阐述了3DES算法的实现及优化步骤。 这桴姆DES的i6次加密迸彳亍鼹开,比16次循环引用一次加密速度上提高了 16语。l寸岛静{弋价燕嚣积多占瘸16倍,选强弱器俘怒模藏赫须太。每次麓密繇 用的密钥取决于现在是加密算法避是解密算法及现在是第几轮加(解)密。 XINLINX的VITEX2系列FPGA采用的是LUT(查找表结构)为基本单位。LUT 本霞上藏是一个RAM。 霞蘸FPGA中多疆蠲4输入静LUT,所淤每一令LUT可鞋 看成一个有4位地城线的16xl的RAM。当用户通过原理图躐HDL语言描述了一 个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果, 著据续莱事先写入RAM,这释,每输入一个痿罨避嚣逻辑运纂裁等于输入~令遗 址进程囊表,找出圭|甄址对应的内容,然后输出即可。由于DES的S盒是阐定的, 因此,我们可以用利用一个4输入LUT(4一LOT)来存入一个S盒的列,4个4 一LUT髑来存入一个S盒豹4列。 DES的8个S盒分别是一个满飚特殊性熊静6-4位的交换。在VHDL或7erilog 语言中,可以直接用CASE语句来实现。这是嫩简单的实现方法,但是HDL语言 都属予逡级语言,它们强烈依赖予编译器的优化能力,往往对设计者来说,涉及 25 加密卡的研制与加密算法的FPGA实现 得越少、编程越简单,代码效率越不高,这对于高速实现来说是不可取的。在实 现过程中通过分析工具也发现,依赖于编译器的实现不但复杂,而且占用大量的 空间。这样,S盒成了速度的瓶颈,为此,采用ROM来实现。XC2V3000的LUT可 以配置为16 X l位的ROM,把输入的6位作为地址,对应的地址空间里存放的就 是输出的4位,从而实现了6—4位的查找表LUT,所需时间只是FPGA中CLB的 传输时间加上传输线上的延时,将这种模块化设计思路运用于FPGA。 根据3DES的算法,将算法划分为如下模块: 1、顶层模块:3DES 按照3DES的功能,顶层模块包含如下输入输出: gindata64<1 64’ keyl<1:64> key2<1:64> key3<1:64> clk decrypt ginrdy rst goutdata64<1 64’ goutrdy 输入数据gindata64:64BIT的数据(因为3DES按照64BIT的数据块进行加 密) 输入数据keyl:第一次DES算法用的密钥,64BIT 输入数据key2:第二次DES算法用的密钥,64BIT 输入数据key3:第三次DES算法用的密钥,64BIT 输入时钟信号clk:定义了FPGA实现的算法所使用时钟频率 输入加密解密信号指示decrypt:用于指示此时进来的操作是加密还是解密。 输入复位信号rst:用于初始化的RESET信号。 26 秘密卡麓辑翻与掬密算法瓣FPGA实瑶 输入数獾准备好信专ginrdy:霜予指示数据线上酶数据是鸯教信号。 输出数握信号goutdata64:进萼亍趣解密操{乍瑟敬数据块簸出。 输出有效信号goutrdy:用于指示数据线上豹信号是有效的进行解密操作后 的数据。 模块功能如T:当输入数辫gindata64,KEYI,KEY2,KEY3,考i寿皴翡露镁, 根据输入加解密指示信号(假如指示加密),则相应的,3DES模块将会把输入的 64BIT明文调用第一次DES模块,用第一个DES模块完成了加密功能,然后,将 第一个DES模块的加密竣出{乍为第二个DES模块的输入,将加勰密指示信号取反 后也送入销二个DES模块,这时候,第二个DES模块将会把第一个DES模块的加 密嚣数据嚣jl KEY2避行辫整搡揍。第二今DES模块遮冀完残后静孵整数瀑疼会擞 为第三个DES模块的输入数据,且此时,加解密指示信号将再次被取反后送入第 三个DES模映,遴对候,第三个蕊s模块穗会对第二个0醛模获解密焉豹鼗搭耀 KEY3进行加密操作,并徽为最终输出结果输也加密数据。 3DES模块包禽如下子模块:3个DES模块,下词对DES模块进行说明。 2、DES模块 in64<1:64>OUt64<1:64> k64<1:64> clk decrypt inrdy rst outrdy 辕入特翔密鼹数据in64:64BIT 输入此次DES加解密运算嚣要用到的密-N k64;64BIT 输入时钟信号clk:系统时钟 输入加解密指示信号decrypt:用于指示此次操作是加密还是解密 输入数据有效信号inrdy:用于指示输入数据线上的数据鬣否有效 27 鸯西寮卡的羲嚣割与加密算法瓣FPGA实现 输入复位信号rst:翔于裙始亿复佼 戆是数爨信号out64:髑予输塞进撂麴勰蜜操搀斌的数据,64BIT 输出数搌有效信号outrdy:用于指示输出数据线上的数据是磷有效 由于3轮DES是采用流水线设计协同工作,所以,上一轮DES的输出数据信 号交成下一轮DES的数据输入信号,霜时,上一轮DES的输出数据有效僚号交戚 下一轮DES的数据输入有效信号。 DES模块的功能如下:当64BIT的明文数据及64BIT的密钥输入的时候,将 密镅去摔校骏位并傲初殓篪按,将处理藤静密锈送入调焉鹩第一轮KEY接头,KEY 模块根据输入的参数判断对此密钥做什么的移位操作。第一轮KEY模块的输出包 括第一次移位后的密钥,也产生用予第一轮DES加密48BIT子密钥。这48BIT密 钥墩为第一埝F函数的输入。F溺数完戏了S鑫的置换及一系列的异或操作。同 时,经过第一次移位后的密钥做为第二轮KEY模块的输入,继续移位操作及产生 第二轮热密翅弱静子密锾,疆戴类接,DES模块里共调爰7 18个KEY模块赐予 产生16轮子密钥。同理,第一轮F函数的输出做为第二轮F函数模块的输入, 一奁到第16轮F函数完成。这辩候,DES禳软将会耱第16个F蕊数穰袋的输出 左半部分和右半部分做一个对调,对调后的数据再做一个鼹换,做为DES模块舟勺 最终输出。如下图所示: .hifi一行是F函数模块,下面一行是KEY模块。 DES模浚星西湖对惫含了鲡T模臻:产生密锈豹KEY搂块,产生F黼数酌F 模块。下面将对KEY模块和F模块进行说明。 3、KEY模块 28 加密卡的研制与加密算法的FPGA实现 kinl28<1:28> kfout<l:48> kinr28<1:28> clk koutl<l:28> decrypt koutr<l:28> 输入KEY的左半部分kinl28:28BIT 输入KEY的右半部分kinr28:28BIT 输入时钟信号clk:全局时钟 输入加解密操作的指示信号decrypt:根据加解密调用相应的移位操作,加 密时循环左移,解密时循环右移 输出相应轮所需要的密钥kfout:48BIT 输出移位操作后的密钥的左半部分koutl:28BIT,用作下一轮密钥模块输入 输出移位操作后的密钥的右半部分koutr:28BIT,用作下一轮密钥模块输入 DES的密钥产生步骤如下: 1、将64BIT密钥去掉校验位后变成56位BIT的数据块,将这个数据块按照 根据下表(PC—I)进行密钥变换得到56位的密钥,在变换中,奇偶校验位以被 舍弃。 Permuted Choice 1(PC一1) 57 49 41 33 25 17 9 1 58 50 42 34 26 18 lO 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 29 加密卡的研制与加密算法的FPGA实现 将进行PC--l变换后的密钥块分成左右两组。每组28BIT,分别称为LI,RI。 将LI,R1分别做循环左移(根据轮数左移不同的位数)。在1、2、9、16轮的 时候循环左移1位,其余的循环左移2位。 由于DES的加解密算法用的是同一个程序,唯一的区别在于加密的时候与解 密的时候调入的密钥次序相反。在做程序代码的时候,经过分析,密钥移位有如 下规律,假如有如下的L128BIT做移位,进行的是加密运算,则在产生移位的时 候,根据轮数不一样,加密的时候移位情况如下所示: 没移位时: l,2,3,.-o..,28 移位第1轮:2,3,4,……28,1,(循环左移l位) 移位第2轮:3,4,5,……28,l,2,(循环左移1位) 移位第3轮:5,6,7,……28,1,2,……,4,(循环左移2位) 移位第4轮:7,8,9,……28,1,2,……,6,(循环左移2位) 移位第5轮:9,10,11,……28,1,……,8,(循环左移2位) 移位第6轮:11,12,13,……28,1,……,10,(循环左移2位) 移位第7轮:13,14,15,……28,1,……,12,(循环左移2位) 移位第8轮:15,16,17,……28,1,……,14,(循环左移2位) 移位第9轮:16,17,18,……28,1,……,15,(循环左移1位) 移位第10轮:18,19,20,……28,l,……,17,(循环左移2位) 移位第11轮:20,21,22,……28,1,……,19,(循环左移2位) 移位第12轮:22.24,26,……28,l,……,21,(循环左移2位) 移位第13轮:24,25,26,……28,1,……,23,(循环左移2位) 移位第14轮:26,27,28,1,2,……,25,(循环左移2位) 移位第15轮:28,l,2,3,……,1,(循环左移2位) 移位第16轮:1,2,3,4,……,28,(循环左移1位) 在做解密移位的时候,应该的移位结果如下: 30 加密卡的研制与加密算法的FPGA实现 移位第l轮,移位结果与加密的时候第16轮相同应为:l,2,3,4,……, 28,所以,移位第1轮应该不移动。同理分析,移位第2轮的时候,移位结果应 与加密的时候第15轮相同,28,1,2,3,……,l,一直分析下去,有如下的结 果: 没移位时: l,2,3,…...,28 移位第l轮:1,2,3,4,……,28,(不移) 移位第2轮:28,1,2,3,……,J,(循环右移l位) 移位第3轮:26,27,28,1,2,……,25,(循环右移2位) 移位第4轮:24,25,26,……28,1,……,23,(循环右移2位) 移位第5轮:22,24,26,……28,1,……,21,(循环右移2位) 移位第6轮:20,21,22,……28,1,……,19,(循环右移2位) 移位第7轮:18,19,20,……28,1,……,17,(循环右移2位) 移位第8轮:16,17,18,……28,1,……,15,(循环右移2位) 移位第9轮:15,16,17,……28,1,……,14,(循环右移1位) 移位第10轮:13,14,15,……28,1,……,12,(循环右移2位) 移位第11轮:11,12,13,……28,1,……,10,(循环右移2位) 移位第12轮:9,10,11,……28,1,……,8,(循环右移2位) 移位第13轮:7,8,9,……28,l,2,……,6,(循环右移2位) 移位第14轮:5,6,7,……28,l,2,……,4,(循环右移2位) 移位第15轮:3,4,5,……28,1,2,(循环右移2位) 移位第16轮:2,3,4,……28,l,(循环右移l位) 由以上分析得出如下结论,当产生加密密钥的时候,将LI、RI在第1、2、9、 16轮的时候,各自循环左移1位,其它轮循环左移2位。当产生解密密钥的时 候,第1轮不移位,第2、9、t6轮LI、RI各自循环左移1位,其它轮循环左移 2位。用以下代码段实现: assign shift—lbit=(nn==R1 nn==R2 nn==R3 nn==R4)?l:0; 31 加密卡的研制与加密算法的FPGA实现 assign no—shift=(decrypt&&nn==R1) assign key—out_l (ilO—shift)?kinl28: (decrypt)?(shift—ibit)?{kinl28[28],kinl28[1:27]) fkinl28[27:28],kinl28[I:26]) (shift ibit)?{kinl28[2:28],k J n128[1]) {kinl28[3:28],kinl28[1:2]) assign key——out——r (no shift)?kinr28 (decrypt)?(shift—lbit)?{kinr28[28],kinr28[1:27]】 {kinr28[27:28],kinr28[1:26]) (shift—ibit)?{kinr28[2:28],kinr28[1]) {kinr28[3:28],kinr28[1:2]) 用XST工具综合以后,自动生成逻辑网表,在RTL(寄存器传输极)视图中 可以看到,系统的移位和移位后的压缩均用如下的逻辑组合实现: 4、F函数模块 32 加密卡的研制与加密算法的IⅫPGA实现 F函数模块的功能在于将每~轮的密钥(48BIT)与扩展后的待加密数据的左 半部分(48BIT)进行异或操作,异或后的值通过8个S盒进行变换,变换后变 为32BIT,变换后的值还要经过一次置换输出。输出后的值与待加密数据左半 32BIT进行异或操作。 Inl32<1:32>outl32<1:32> inr32<1:32> kfout48<1:48> clk rst outr32<1:32> 输入此轮加密用到的密钥kfout48:48BIT 输入此轮加密用到的数据左半部分inl32:32BIT 输入此轮加密用到的数据右半部分inr32:32BIT 输入时钟信号clk:全局时钟 输入复位信号rst:用于初始化设置 输出进行F函数运算后数据的左半部分outl32:32BIT 输出进行F函数运算后数据的右半部分outr32:32BIT 在F函数的模块中,将会调用到s盒的模块,在F函数中真正完成s盒功能。 F函数模块的功能如下:将输入F盒的待处理的数据的右半部分32BIT做扩 展置换成48BIT,扩展后的48BIT与输入F函数模块的密钥做异或处理。异或处 理后的数据调用s盒模块完成S盒的置换,s盒输出后再进行压缩置换成32BIT, 这32BIT与输入待处理数据的左半部分进行或操作,与操作后的结果做为下一轮 33 加密卡盼磷利与热密算法的FPGA实现 F函数的数据输入的右半部分,没有处瑗过的数据的右半部分骰为下一轮F函数 的数掇输入的左半郝分。 5、S盒模块 addr<l:6>da<l:4> db<l:霹> 输入要避行变换的鼗罐:6BIT 簸舞8:如暴辕入要遴牙变换熬数援趣最瑟一霞楚0,则蟪出数据a(4BIT)。 竣出b:如果输入要遴行变换的数撼的最艏一位是l,则输出数据b(4BIT)。 照然,这时候的s盒模块并没有真正意义上完成S盒的功能,F函数模块在 调用S盒模块的时候,还簧根据输入数据的第一位泉决定滚后的输警。英体接述 如下: 设输入数据为{bl,b2’b3,b4,b5,b6},则潜b6为0,则输出a是S禽第0行 的第伯2,b3,b4,b5}捌,输出b是S鑫每2学静蘩曲203,b《涵S)裂,若b8 输入为1,则输出a是s蹙的每1行的第{b2,b3,b4,b5)歹u,输出b是s盒第3 行的第{b2,b3,b4,b5)捌。 F函数横块在调南s鑫模浃漪瓣僚,禳掭bl豹穰,警bl靛镶失l瓣候,输 出为b,当bl的慎为0时候,输出为a,由此完成S盒的实现。 各模块之间的关系 税3DES模块中,将调用3次DES模块,将3轮DES缺按流水线展开,如下 圈联示: 34 加密卡的研制与加密算法鲍FPGA实现 35 加密卡的研制与加密算法的FPGA实现 在DES模块,将调用16次F函数模块和KEY模块。将这16轮运算按流水线 展开,如下图所示 图中只画出了8个F模块,8个KEY模块。 在F模块中,调用了8个s盒模块。 按照以上思路进行模块划分后,编写相应源代码,下一步,进入到功能仿真 阶段。 FPGA的设计实现采用的是ISE5.2版本,仿真工具使用的是MODELSIM,综合 优化工具使用的是ISE自带的XST。 4.9 3DES算法调试仿真 在整个设计流程中,完成了设计输入并成功的进行了编译,只能说明设计符 合一定的语法规范,并不能保证设计可以获得所期望的功能,主时就需要通过仿 真对设计验证。一般在FPGA设计中仿真可以分为功能仿真和时序仿真。功能仿 36 加密卡的研制与加密算法的FPGA实现 真又称行为仿真或前仿真,是在不考虑器件处暑的理想情况下对源代码直接进行 逻辑功能的验证。时序仿真又称为后仿真或布局布线后仿真,是在考虑了器件延 时的情况下对布局布线后的网表进行的一种仿真,这种仿真中器件延时信息是通 过时序标注的方法来实现的。时序仿真主要用来验证程序在目标器件中的时序关 系。ISE集成开发环境将仿真划分得更为详细,除了功能仿真、时序仿真以外, 还包括翻译后仿真和映射后仿真。 在MODELSIM中仿真环境的建立,XILINX公司使用的MODELSIM为MODELISM xE的OEM版,这个版本只支持XILINX公司的据有器件的时序仿真但是不支持其 它公司的FPGA的仿真。一般的FPGA设计者都会同时使用各种不同厂家的FPGA 器件,所以通常情况下都会选择使用支持全部器件的MODELSIM完全版。在 MODELSIM中编译器件的仿真库时,使用的仿真库名称可以随意定义,只要满足 操作系统的命名规则就可以。但是如果希望从ISE集成开发环境中直接启动 MODELSIM仿真器时,对仿真库命名就需要特殊指定,否则MODELSIM仿真器无法 对仿真库进行映射,这是因为从ISE集成开发环境直接调用MODELSIM进行仿真 时,在工程目录下就会产生一些对MODELSIM仿真器有控制作用的文件,这些文 件是由ISE在执行过程中通过CREATFDO.PL文件生成的。 MODELSIM仿真环境的建立 由于程序中会用到FPGA厂商已经编好的一些器件,所以在进行仿真的时候, 一定要将这些器件包含到目前环境下的工程(PROJECT)中进行编译才能正确进 行仿真。在MODESIM中编译器件的仿真库时,使用的仿真库名称可以随意定义, 只要满足操作系统的命名规则就可以。但是如果希望从ISE集成开发环境中直接 启动MODELSIM仿真器时,对仿真库命名就需要特殊指定,否则MODELSIM仿真器 无法对仿真库进行映射,这是因为从ISE集成开发环境直接调用MODELSIM进行 仿真仿真时,在工程目录下就会产生一些对MODELSIM有控制作用的文件,这些 文件是由ISE在执行过程中通过CREATFDO.PL文件生成的,分别使用.fdo、tdo、 udo等作为扩展名,其中udo文件为用户宏文件,用户可以对其进行编辑并添加 一些对MOLELSIM的控制命令,而fdo、tdo一般是不建议进行编辑的。对VERILOG 进行仿真时,在这些文件中包含了vism—t lps—L Xilinxcorelib—ver—L unisms ver—L simprims ver—lib work Sdesunit 91bl命令。其中vsim是 MODELSIM运行仿真的命令,一L表示仿真时需要的库文件。由以上可以看出, 在对使用7erilog语言编写的项目进行仿真时,默认条件下需要 Xilinxeorelib ver、unisms vet、simprims—vet三个库文件,其中, Xilinxcorelib vet库对应Xilinx提供的软核的功能仿真库,unisims—Ver对应 37 加密卡的研制与加密算法的FPGA实现 使用ECS所做原理图的功能仿真库,simprires—ver库对应项目布局布线以后的 时序仿真库。由此可见,在对仿真库进行命名时需要考虑这些规则的影响。 在建立好仿真环境并调入仿真模块所需要的库文件后,就可以进行仿真 各模块进行MODELSIM仿真过程及结果如下,我们从最小模块的仿真开始直 到最大模块。 s盒模块仿真 按照S盒模块的功能,对于第一个S盒模块s1来洗,如果输入是010111的 话,那么 Substitution Box 1(S[1]) 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 O 15 7 4 14 2 13 l 10 6 12“9 5 3 8 4 l 14 8 13 6 2 11 15 12 9 7 3 10 5 O 】5】2 8 2 4 9 1 7 5]】3 1 4】0 O 6】3 输出a应该是第1行第11列值为1l(1011),输出b应该是第3行第11列 值为14(1110),仿真结果显示正确,对其余的S2、S3、S4、S5、S6、s7、s8 做相同的仿真均显示正确。 KEY模块 在调入KEY模块的时候,函数会根据这是第几轮KEY(由参数nn给出)及加 密还是解密来决定对输入的数据进行左移还是右移及移位多少次。在这里,我们 假设输入的KEY左半部分是:OXOOOOOFO右半部分是OXOOOOOAA,进行加密密钥 第一轮产生,则输出的左半部分应该是输入的左半部分循环左移l位后的结果: OXOO001EO,输出的右半部分应该是输入右半部分循环左移1位后的结果: 38 翻密卡的研懿与秘密算法静FPGA实现 0X0000154,缰合交换焉静密铜输出应该为输出左半部分与右半部分避行BIT位 变换后的鳞果:0X002804401008仿真结果如下图: F丞数模块谤粪 F模块将KEY模块墨产生熬密钥与蜍A黝翔密数握避嚣一系列操{挈,是DES 算法实现的主要模块,同样指定输入,看输出是否与期望值相符。假设输入为: 输入数据友半部分菇OXAAAAAAAA,输入鼗攒砉半帮分曳0X55555555,输入RESE了 为0,输入此轮加密用密钥为:Ox999999999999,则输出数据的右半部分应该是 输入数据的右半部分经过扩展,与密锯的异或,经过S盒鬻换,鬣换后褥次交换, 最聪与输入左半邦分进行异或最的结果:OXD70BB915,璇如数据的左半部分成该 是输入数据的右半部分不变抉:0X55555555。 波形仿真结果如下圈所示: 39 加密卡盼磺翻与藤密算法静FFGA实琥 DES模块 DES模块墨调用了16个F丞数摸块秘KEY模块,姆DES蜘16轮加密以流水 线形式铺开,以面积上的多占用换取了速度的提高。 假设我们输入的明文数据为;OX0123456789ABCDEF,输入的密钥为: OXl33457799BBCDEFFl(不考虑较验位静准确蛙,西梵DES模获蠹动会将校验位 去掉)。则输出数据应该为:OX85E813540FOAB405。仿真结果如下图所示,在 DES模块的仿真中,包括T F模块,KEY模块,s模块的各种中闻变量络莱我们 都可班方便弱进雩亍捡查。 接着验{难DES模块的解密的芷确救,将刚才输出的密文做为输入,密钥不变, 将热解密豢示薅号凌为辩密,剐应该辕出刚君戆臻文。波形结累显示正确。如下 图所示。 40 鞠密卡静磷割与期密算法静FPGA实蕊 3DES攘块 在3DES算法中,我们蜀纂~个蜜镑进行鸯翼密掇{乍,躅第二令密弱邀{亍勰糍 操作,用第三个密钥进行加密操作。 设输入的明文为:OXll22334455667788,输入第一个KEY为 0xEEE9999333366666,输入第:个KEY为OXFFFFFFFFFFFF,输入第三令KEY为 0)[555555555555,则输出应该为,OX9666D3852C980272。仿真结果如下图所示 41 烟密卡的研制与加密算法的FPGA实现 现在我们运行3DES的解密流稔,将刚才加密产生的密文做为输入,厩来输 入的第三个密钥做为粥~次DES的解密运算密钥,输入的笫二个密钥做为笫二次 DES戆热搬运冀密甥,簸入敦第一令寮甥皴为第三次DES的鼹密密锾,结果应该 输出霜《才‘静明文。侪冀结果表露3DES算法已经正确的实现了。如下图所示。输 入密文为ox9666D3852C980272,输入第一个密钥为:Ox555555555555,输入第 二个KEY为OXFFFFFFFFFFFF,输入囊§三个KEY为OxEEE9999333366666,贝4输出 llt≤为,OXll223344§5867788。 至此,我们各模块功能很好的验证完成。这在整个FPGA的设计流程中,只 是完成了其中~步,下一步需要做的工作是综合。 综会楚FPGA设计滚翟中豹重要耀苇,综合绥采戆嚣劣蠢按影镌毒弱套线缝 果的最终效能。好的综合器能使设计占用芯片的物理面积最小,工作频率嫩快, 然而在FPGA设计中,顾积和速度这两个要求贯穿FPGA设计的始终,它们怒设计 效果款终投谖定蠡难。糖魄这下,瀵遐时痔、工{肇频率静要求爱重要一些,当两 者冲突时,一般采用速度优先的凇鲻。 Maximum output required time after clock:5.880as 42 撩密卡的醑翎与热密算法的FFGA实现 蠢戳上时序分辑就可淤褥蠢,甭并行茄密实现3DES算法能这劐219.635M.64 =14GB/S 4.9 I dea的FPGA实现 4,9.1 IOEA算法的相荧背景 1990年XueJia Lai署口Massey开发出IDEA加密算法雏形,称为PES,即“建 议酶加密舔准”。第二年,禳掭有关专家对这~密礴算法鹩分析结栗,设计者对 该算法进行了强化并称之为IPES,即”改进的建议加密标准”。该算法于1992年 更名为IDEA,即”国际加密标凇”。 IDEA算法的密镅长瘦为128位,锋对s4继酶数据进行麴密或解密搽作。设诗 者尽可能使该算法不受熬分密码分析的影响,XueJia Lai已证明IDEA算法在其 8轮迭代的薷4圈之后便不受蓑分密确分析静影响了。假定穷举法攻击有效的话, 那么靼使设诗一零孛每秒秘可以试验10亿个密钥的专用芯片,并熄10亿片这样的 芯片用于此项工作,仍需1013年才能解决问题;另一方丽,若用1024片这样的 芯片,有可能在一天麦找到密锈,不避人翻逐无法羧到是够黥硅缀子亲制造这样 一台机器。目前,尚无~片公开发表的试图对IDEA进行密码分析的文啦。因此, 就现在来看应当说IDEA是非常安全静。 IDEA豁法概逮 IDEA魁一个迭代分组密码,分组长度为64比特,密钥长度为128 kE特。 IDEA密码中使用了以下三种不同的运算: 遂位异或运算; 模2”加运算; 模2”斗l乘运冀,0与2”黯应。 IDEA算法是出8轮迭代和魈后的一个输出变换组成。它将64比特的数据分 成4个子块,每个16比特,令这四个子块作为迭代第一轮的输出,全部共8轮 迭代。每轮迭代酃是4个子块彼此闽以及16比特懿予蜜甥进行巽或,撰2”期运 算,模2“+l乘运算。 密钥生成 糟户输入128位长密锈,Key=ktk2k3…kt27k128,IDEA惑共进行8轮戆代 43 加密卡的研制与加密算法的FPGA实现 操作,每轮需要6个子密钥,另外还需要4个额外子密钥,所以总共需要52个予密 钥,这个52个子密钥都是从用户输入的128位密铜中扩展出来的.。首先把输入 豹Key分戏8令16倥豹子密镅,l一8号子密钥镞落一轮加密锬蠲,7-8号予密绸 供第二轮使用,然后捂这个128位密锈循环左移25位,这样Key=k26k27k28… k24k25,把新生成的Key再分成8个16位的予掰钥,1-4号子密钥供第二轮加 密使用(前面已经提供了两个,5-8号子密钥供第三轮加密使用,到此我们已经 褥到了16令子密锈,麴藏继续,当徭环左移-y 5次之蜃已经,圭液了48个子鬻镌, 还有四个额外的子密铜需要生成,再次把Key循环左移25位,选取划分出来的8 个16位子密钥的前4个作为那4个额外的加密密钥.供加密使用的52个子密钥 生成完毕。 加密明文 64一位数据分组被分成4个16一像子分组:B1,B2,B3,B4。遮4令子分组成为 算法戆籍一轮静输入,慧共畜8轮。 44 掬密卡静研翎与搬密算法的FPGA实现 64·hil plain text B1(3)Blt4) K 珏≤{》 巍建2) n蚶》赶《4) Single IDEA round.total 8 copies 0utpta Trdnslbrmation round Vk( 争谢,静Kf狰f3)㈣ V“ 64。bit enco,pted text 在第i轮中,假定输入的为: 明文(《组):Bl,B2,B3,B4。 密镅国缓):Kl,K2,l(3,K4,K5,K6技霞瓣叛事襄下: (1)B1瓢第一个子密钥(K1)模2”+1乘。 (2)B2和第二个子密钥(K2)模2”加。 45 加密卡静磷髑与女§密算法的FPGA实虢 (3)B3和第三个予密钥(K3)摸2”搁。 (4)B4帮煞翅令予密钥(K4)楼2”÷l荣。 (5)第(1)步和第(3)步的结果相异或。 (6)将第(2)步和箱(4)步的结果相异或。 (7)将第(5)步的结果与第五个子密钥(K5)模2”+l乘。 (8)将第(6)步和第(7)步的结栗模216船。 <9)将第(8)步鹁结象与第六个子密钱(1(固模2”+l象。 (10)将第(7)步和第(9)步的结粱模2”加。 (11)将第(1)步和第(9)步的结粜相异或。 (12)将第(3)步和第(9)步的结果相异或。 (13)将第(2)步和第(10)步的缩栗褶弊或。 (14)将第(4)步萃罄第(10)步载缭渠褶羚或。 (15)姆第(ii)、(i2)、(13)积(i4)步的结巢形成龅4个子分组 B1,B2,B3,B4作为输出,然后将中间两个分组(B2,B3)交换(缀 磊一轮狳乡})爱,馋为秀下一轮豹辕入。 (16)经过8轮运算之后,有一个最终的输出B1,B2,B3,B4,对这4 个输出子分缀进行如下操作: a)Bl和第一个额多}予密锈模2”+l桑。 b)82帮第二令矮癸予密锈模2”熬。 c)B3和第三个额外予密钥模2”加。 d)B4和第四个额外予密钥模2”+1乘。 e1最后,这4个子分组重新连接到一起产生密文。 IDEA的解密流程与加密流獠福同,不同之处仅在子密鹳的谈糟上面。在IDEA 算法中,运用了三个基本的运爨:xOR(异或)、模2”加(加法运算,溢出忽略 不计)、模(2”+1)乘(乘法逛算,溢出忽略不计);上述三种运算是该算法中 仅有豹运雾。因戴,我们在划分模块鹣对娱,摸2”趣法运算壹接弱聪令16BIT 的无符号数相加就可以实现了。模(2“+1)乘的运算也比较好实现,其原理会 46 加密卡的研制与加密算法的FPGA实现 在蜃文鹚述,IDEA在擞瓣密运冀黠,鬻要对输入豹寝钥微以(2”+1)模求逆, 这在实现的时候是比较耗时的操作。为此也单纯划分了求模逆的子块。整个IDEA 算法实现的思想与流程如下。 竣入豹64BIT明文曹先被分成4个16BIT麴分缓,竣入蛇128BIT的密钥掇 据加解密指示信号调用不同的产生子密钥的流程。在时钟信号的作用下,这些子 密钥参与不同的轮次运算。最后输出加(解密)结梁。 4 9。2 IDEA模块划分及实现 下鬻将IDEA模块豹翔分徽密描述。 1、IDEA模块。 lndata《83:O》 outdata<63沿> key<127:0> clk decry inrdy rst 输入: indata:64BIT,输入的铸热(憋)密窭尊数据 key;128BIT,输入静密锑。 clk:时钟信号 inrdy:数糖有效信号 decry:加(解)密指示信号。 rst;笈位臻号。 输岛: outdata:64BIT,缀过蕊解密操作后酌数箍 47 加密卡的研蒂4与龆密算法豹FFGA实现 当输入rst为I的时候,所裔的密铜及鹅文输入被清0。当rst为0虽inrdy 为l的时候,输入的待加密数据被读入到程序中,此时,根据加解密指示信号, 调用不同的密钥产生模块,将产生的密钥进行9轮次的运簿最后樽出绪柴。IDEA 调舄了翅密密钥产生模块(热密豹嚣嫉),勰爨密钥产生模块(鲻密)的时候及 进行模乘操作的模块。以下将对这些模块进行说明。 2,加密密钥产生模块 key<127:0> clk rst z1<15:0> z2<15:O》 z3<15:0> z4<1 5:O》 Z5<15:0> z6<1 5:O> ready 输入: key::128BIT,原始密钥 clk:#重锌藉譬 rst:复位信号 输出: Z1一一--Z6:第N轮需要用到的密钥。 加密密钥产生是比较简单的操作,IDEA算法共有八输,第一轮需簧6个密铜 子块,另外还零要4令蜜甥子块用于输出变换,爨此整令算法鬻要52个密钥予 块。它的熬个操作就是将128BIT先分成8份,生成第一批子密钥。接着循环左 移2§位,然后分筏8俭,生藏下一羹毫子密铜,蔹浚类燕,盏至l产生完鼹令密钥 子块为止。 48 加密卡的研制与加密算法的FPGA实现 3、解窝密钥产生模块: key,=127:0> clk rst z1,:15:0》 z2<15囝> z3<15:0> z4<15:0> z5<15:0> z6<15:0> ready 输入: key:128BIT,服始爨钥 clk:时霉孛德号 rst:复霞僚号 输出: zl一一--z6;第N轮需要用到的密钥。 ready:每当一轮次的所涝娶的解密密钥产生翡时候,ready信号就会鬣商。 表示遮一轮的解密密钥已经准备好了。主程序在进行解密流程,调用这个模块的 时候,也要等到ready信号鬣高才会进行解密操作。 4、求逆的模块。 4尊 加密卡缒磷翻与蕊密算法鹩FPGA实现 input<l 6:O》 elk inrdy rst z<l 5:O> finish 输入: input:16BIT数据(需要求逆的予密钥块)。 elk:时钟信号 inrdy:输入有效指示。 rst::复位信警。 输出: z:求出逆的结果。 finish;运算先成的指示。 程进行解密运算的时候,IDEA除了输入的密钥不一样之外,其余的操作都蹙 一样熬。IDEA豹麴密密甥与解旗密钥的对应哭系如下: 加密密钥予块 擞l kl(D kZ(D k3(D k4(D kS(D k6(D 2 kl(2)k2(2)k3(2) k4(2)k5(2)k6(2) 3 kl(3)k2(3)k3(3) k4(3)k5(3)k6(3) 4 k1(4)k2(4)k3(4) k4(4)k5(4)k6(4) s klf秘k2(5)k3(5) k4(5)kS(5)k6(S) 6 kl(6)k2(6)k3(6) k4(6)k5(6)k6(6) 7 k1妒)k2(7)k3(7) k4(7)k5p)k6(7) 8 ki(8)k2(8)k3(8) k4(8)k5(8)k6(8) 9 kl(9)k2p)k3◇) k4(9) 解密密钥子予块 k1。谬) -k2◇)-k3(9) kl。(8) ·k2(8)-k3(8) kl“(7)-k2(7)-k3(7) kl。(6)·k2(6)-k3(6) kl。(5) -k2(5)也3(5) kl。(4)一k2(4)-k3(4) kl。《3) -k2(3)-k3(3) k1。(2)-k2(a)-k3(2) kl’1《1) -k2(1)-k3(1) k4。◇)kS(8) k4“(8)kS(V) k4。(7)k5(6) k4。(6)k5(5) k4…’(5)k5(4) k4“(4)k5(3) k4。<3)k5(2) k4。(2)kS(D k4。‘(1) k618) k6(7) k6(6) k6(5) k6(4) k6(3) k6(2) k60) 5O 加密卡靛研铜与细密算法静FPGA实琵 IDEA麓密密锈游实琨是用以下嚣毽来实瑷装。宅豹菝壤菝据楚稷攥扩展二遴 制欧几里德算法和Montgomery算法原理得出的。描述如下: 抖incl¨de<stdj0.h> #include<stdlib^> void mainO { long m=65537; long a; long b=65537; long u=1: long V=0: longd锄: unsigned short inv; longt; 112’6¨ int P scanf(”%ld”,&a); while“净∞ { while《a%2一§)Ha is even { g=a/2; if(u%2一---0)llu is even 11=n投: else n=q+蝎,2; dz d-1; } if(d<o) t=a:a=b;b=t; t*#;Ⅱ=v;v2|; d一-d; |f《a+b)%4;哟) { a=(时by2; if((u+V)%2=2∞ u=(娃+V),2; //mod(a+b,4)22 0 5l 加密卡静研制与加密算法的FPGA实现 u e fu十v—m)/2; else { a;fa—b)/2; if珏酗v)%2一=∞ n一(u-v)/2; else n=(u-v+m)/2; } 浑(b<§) inv=m-v: else lnv=v: prinff(”inverse=%ld”.inv); scanf(”%d”,&p); } 根据以上思想,用硬件来实现。 5、模乘模块 xin<l 5:0> 。。tmm《{s:。> t yin<15:0> 模乘的骤理很简单:它的算法的设计是蕊憋是: uintl6 mui(uintl 6 a,uintl6 b) { word32 p; if(a) { if(b) { P=f、、rord32)a铀; b=(uintl6)(Iowl6(p)); 52 加密卡的辑镧与加密葬法的FPGA实现 a=(uintl◇(p>>l妨; return b—A+(b<a); } else { return I-a; } } else return l-b; IDEA的算法流程。 53 加密卡的研制与加密算法的FPGA实现 4.9.3 lDEA算法的仿凑 在竞成了IDEA算法设计后,我们对设计的模块进行仿真: 竣入杰曩密爨文:ASCII码敖“12345678” 输入船密密钥:ASCII玛鹣“12345678擘0123458” 输出加密结果:16进稍的OX6184Ae6G§07D03懿。 将刚才的密文做为输入,密钥不变。则输出结果如下:刚好等于明文。 以ASCII码的“1234567890123456”做为输入加密密钥,得出的加密密钥 子块与解密密钥予块如下寝所示:(16进制表示),通过比对,与要求相符。 掬密密锈予块 3132 3334 3536 3738 3930 3132 3334 3536 686A 6C6E 7072 6062 6466 686A 6C62 6466 DCE0 E4C0 解密密钥予子块 EA33 B273 31F2 9859 F8DA 3919 D614 6CFD 8C7D 2BCD 4426 3E22 4666 C626 1323 86A6 4666 3343 5毒 攘密卡豹研制与热密舞法的FPGA塞现 4 C4C8 CC00 D4D8 c4C8 CCD01)4D8 5 S189 9199 AlA9 B189 9199 A1A9 6 B189 ClC9 3343 5363 1323 3343 7 5363 7383 9303 1323 C626 4666 8 86A6 C6E7 0726 0626 4666 86A6 9 CDOD 4D8D e基OE 4COC B966 CCBD 3E37 蛰614 79Fg SE57 6E67 9FEO EE7A 2828 3330 l强7A B9DO 939E 9796 B9D0 AAAD 9796 CACA 3C16 B9E5 CCCC CACA 9614 9t99 CCDO DCEO 7072 3930 AlA9 D4D8 E4CO 6062 3132 轮数 I 2 3 4 5 6 7 8 9 搬密密绸子块 (i) k2(1)k3(1)k4(1)k5(1)k60) (2) k2(2)k3(2)k4(2)k5(2)k6(2) (3) k2(3)k3(3)k4(3)k5(3)k6(3) kl(4) k2(4)k3@)k4(4)k5终)k6(4) kl(S) k2(5)k3(5)k4(5)k5(5)k6(5) kt(6) k2(6)k3(6)k4(6)k5(6)k6(6) kt(7) k2(7)k3(7)k4(7)k5(7)k6(7) kl(趵 k2(8)k3(8)k4(8)k5(8)k6(8) kl(9) k2(9)k3(9)k4(9) 烬密密钥子子涣 kl“(9) -k2(9)-k3(9) k4“《9)kS(S) k∥(8) -k2(S)一k3(8) kfl(8)k5(7) kt“c7) -k2(7)-k3(7) k4‘q)k5(6) kl“蹲) -k2(6)-k3(6) k41《6)k5(5) kt“(s)-k2(5)一k3(5) k4。(s)k5(4) kl“辑) 一k2f4) ·k3(4) 勰“(4)k5(3) kl“(3) -k2(3)-k3(3) k44(3)k5(2) kl“<2) -k2(2)-k3(2) k4“(2)kSO) kl“(t)一k2(1)一k30) k4。(t) k6(8) k6(7) k6(6) k6(5) k6(4) k6(3) k6(2) k6(1) 遴过孵廖分奉嚣投镑: Timing Summary: Speed Grade:一6 Minimum period:45,762ns(Maximum Frequency:21。852MHz) Minimum input arrival time before clock:46.793ns Maximum output required time after clock:6.500ns Maximum combinational path delay:No path found 我们得滔,蠲此方法实现IDEA算法豹速度§%达到:64.21.852M=1。4GB/S 4+1 0 Md5的FP6A实戏 MD5以512位分组来处毽输入文本,每~分组又茹j分为16个32位子分缝。 算法的输出由豳个32位分缀组成,蒋它们级联形成一个128控敖列值。翦走填 炎消息搜其长度烩好为~个比512谯的倍数仅小64位的数。填充方法是附一个 1在消息后面,后接所要求的多个0,然滔在菸籍辫土鹤位钓消息长度(填充裁)。 这两步的作雳是使消息长发铪转燕512晓的整数倍(算法的其余部分要求如l龟), 55 船密卡的醑铜与趣密算法的FPGA实现 同时确保不闻的消慧在填充后不稽同。 蹬令32位变量翅始化为: A=Ox01234567 B=Ox89abcdef C=0xfedcba98 D:Ox76543210 它稍豫为链接变量(chaining variable),接着送行舅法款麦獯环,矮环豹 次数是消息中512位消息分组的数目。将上面四个变量复制到别外的变量中:A 至I a,8至《b,C至《c,D至l d。 主循环畜靼轮(MD4只有三轮),每轮攫鞠按。纂一轮逃幸亍16次操穆。每次 操作对a,b,c,d中的其中三个作一次非线性函数遮算,然后将所得结果加上鹅 疆个变量,文零的一个子分组和一个常数。再涛所褥结采囱右环移一个不定静数, 并加上a,b,c或d中之一。最后用该结果取代a,b,c戚d中之一。 以一下是每次操作中用到的四个非线性函数(每轮一个)。 F(X,Y,z)=(X&Y)f(( ̄x)&z) G(x,Y,z)=(X&Z)|(Y&(“z)) 珏g,Y,Z)=X“¥4Z I(墨Y,z)=Y 6(xl(~z)) (&是与,j是或,“是非,‘是异或) 这些函数是这样设计的:如果x、Y和Z的对威位是独立和均匀的,那么结 果的每一位媳痤是独立秽均匀麴。 函数F遐按逐位方式操作;如果x,那么Y,否则z。函数H是逐位奇偶操作 符。 设跚表示淆惑盼第j个子分绥(及0弱153,<<<s衰示锾环左移8位,粥 四种操作为: FF(a,b,C,d,Mj,s,ti)表示a=b+((a十(F(b,e,d)+Mj+ti)<<<s) GG(a,b,c,d,Mj,s,ti)表示a=b+((a+(G(b,C,d)“}nMj+ti)<<<s) S6 加密卡的研制与加密簿法的FPGA实现 HH(a,b,c,d,Mj,s,ti)表示a=b+((a+稍(b,c,d)+Hj+ti)<<<s) II(a,b,c,d,Mj,s,ti)表示a=b+((a+(I(b,c,d)+Mj+ti)<<<s) 这圈轮(64步)楚: 第一轮 FF(a,b,c,d,MO,7,0xd76aa478) FF(d,a,b,c,M1,12,0xe8cTb756) FF(c,d,a,b,M2,1 7,Ox242070db) FF(b,c,d,a,M3,22,0xclbdceee) FF(a,b,c,d,M4,7,0xf57cofaf) FF(d,a,b,c,M5,1 2,Ox4787c62a) FF(c,d,a,b,M6,17,Oxa8304613) FF(b,c,d,a,M7,22,Oxfd469501) FF(a,b,c,d,M8,7。0x698098d8) FF(d,a,b,c,M9,1 2,0x8b44f7af) FF(c,d,a,b,MIO,17,0xffff5bbl) FF(b,c,d,a,M11,22,Ox895cd7be) FF(a,b,c,d,},112,7,Ox6b901 122) FF(d,a,b,e,M13,12,Oxfd987193) FF(c,d,a,b,M14,17,0xa679438e) FF(b,c,d。a,M15,22,Ox49640821) 第二轮 GG(a,b,c,d,M1,5,Oxf61e2562) GG(d,a,b,c,M6,9,0xc040b340) 6G(c,d,a’b,M11,t4,Ox265e5a51) 6G(b,c,d,a,MO,20,Oxe9b6c7aa) 57 加密卡静毒}}稍与加密算法豹FPGA实现 GG(a,b,e,d,M5,5,Oxd62f105d) GG(d,8,b,e,MIO,9,0x02441483) GG(c,d,a,b,M15,14,Oxd8ale681) GG(b,c,d,a,M4,20,OxeTd3fbc8) GG(a,b,c。d,M9,5,Ox21elcde6) GG(d,a,b,c,M14,9,Oxc33707d6) GG(o,d,魏,b,甏3,14,Oxf4d50d87) GG(b,c,d,a,M8,20,Ox455a1 4ed) GG(a,b,c,d,M13,5,Oxa9e3e905) GG(d,a,b,c,M2,9,Oxfcefa3f8) GG(c,d,a,b,M7,14,Ox676f02d9) GG(b,c,d,a,M12,20,Ox8d2a4c8a) 第三轮 HH(a抽,c,d,M5,4,Oxfffa3942) HH(d,a,b,c,M8,11,Ox8771f681) HH(c,d,a,b,Mll,16,Ox6d9d6122) }{H(b,e,d,a,M1 4,23,Oxfde5380c) HH(a,b,c,d,M1,4,Oxa4beea44) HH(d,a,b,c,M4,11,Ox4bdecfa9) HH(c,d,a,b,M7,16,Oxf6bb4b60) HH(b,c,d,a,MIO,23,Oxbebfbc70) H}t(a,b,e,d,鹾1 3,4,Ox289b7ec6) 酬(d,a,b,e,t,lO,1 l,Oxeaal27fa) HH(e,d,a,b,M3,t6,Oxd4ef3085) HI{(b,c,d,a,M6,23,Ox04881d05) 58 细密卡的磷制与加密算法的FPGA实现 H}{(a,b,e,d,姻,4,0xd9d4d039) 涨(d,a,b,c,Mt2,1l,Oxe6db99e5) }lH(e,d,a,b,M15,16,Oxlfa27cf8) HH(b,c,d,a,M2,23,Oxc4ac5665) 第西轮 I I(ao,e,d,MO,6,0xf4292244) II(d,a,b,c,M7,10,Ox432aff97) I l(e,d,a,b,M14,15,Oxab9423a7) 1I(b,c,d,a,M5,21,Oxfc93a039) It(a,b,c,d,M12,6,Ox655b59c3) lI(d,8,b,c,强3,10,Ox8fOccc92) II(c,d,a,b,MIO,15,Oxffeff47d) II(b,e,d,a,M1,21,Ox85845ddl) II(a,b,c,d,M8,6,Ox6fa87e4f) II(d,a,b,c,M15,10,Oxfe2ce6eO) II(c,d,a,b,M6,15,0xa3014314) II(b,c,d,a,M13,21,Ox4e0811a1) II(‰b,e,d,M4,6,Oxf7537e82) II(d,轧b,c,M11,10,Oxbd3af235) II(c,d,a,b,M2,15,Ox2ad7d2bb) II(b,c,d,瓤M9,21,Oxeb86d391) 常数ti可以如下选择: 在第i步中,ti筵4294967296(2豹32次方)*abs(sin(i))豹熬数部分,i豹 单位是弧度。 所裔这些究成之爱,将A,B,e,D分别热上a,b,e,d。然熏瘸下一分组 59 抽密卡酌研制与抽密算法的FPGA实现 数据继续运彳亍算法,最后静输岛怒A,13,C和D的级联。 MDS模块有以下媳输入输出管脚: {n512da韬<0:51{> clk inrdy rst outdata<0:t27> outrdy ready 输入: in512data:输入待熘密的512BIT数据 clk:时钟信号 i nrdy:输入数据有效信号 rst:袋位信号 输出 outdata:竣出结暴128BIT outrdy:输出信号有效 ready: 每轮运算结果出来后,显示一次READY信号。 60 秘密卡熊磷铺与热密箅漶的FPOA交裂 4。l 1 德粪爨练囊波综金镶整努褥 在综合中馊溺熬工县是ISE巍繁的XST,XST是XILINX自酋设计的练台王其, 因为只菇XILINX邀跫辩箕器件拣艨屠设计与蠹酃结构簸为了解,繇戳健稻XST 综合蘩鳖凌;于,鬻常会褥蚕塞憋不戮菸撬嶷缩暴。 陶前大型设计一般推荐谈耀爨步辩穿惑路。闵步黠侉电路基予时¥々触发沿设 诗,黠辩瓣弱周期、占空愆、照对、辩动提出了受高的癸浓。为了满足黼步对序 设计黥要袋,一般在FPGA谈诗中莱麓垒羼辩锋资源驱瀵设计匏圭辩锌;鞋遮鬟 最低姻聪镑抖动釉延迟。XILINX FPGA中的企岗时钟资源一般使用企铜罄工艺 实城,并设计了专嗣辩钟缓冲菇驱动结构,敞箍使全局对游到达芯拷内部的瓢有 霹懿嚣鼙元(CLB)、{内蕈元《I潞)弱选择牲融撬(BLOCK SELECT RAM)麴 瓣懿秘瓣劝都势最,l、。 在避行裹遮数字电路设计时经常籍要程综合、实现阶敝附翻约聚,擞傻控制 缭窘、实疆过程,袋设诗漶足遮嚣遮凌、葶l脚缱萋等方弱熬嚣密。邋鬻酌袋法燕 设计辫编写终慕文僚并导入到练台、实瑗王瑟,在FPGA综合、实魂步骤融捂警 逻辑陕射、布尉布线。 鼹糖魏裘主簦糍疆下{睾惩: 1、提窟设计的工作频率 痞l 加密卡的研制与加密算法的FPOA实现 对很多数字电路设计来说,提高工作频率非常熏要,高工作频率意昧着高处 理熊力。通过附加约束可以控制逻辑的综合、映射、布简和布线,以减小逻辑和 布线延时,从而提高工作频率。一般来说,当时钟频率低于50MHZ,而髓设计只 有一个小时时,不需要对设计附加豹束条件,这是时锌频率院较低辩,不蕊约束 自动综合也能达到要求,但是当设计的时钟频率较高,绒者设计中有复杂爵净路 径(如多周期路径等)时,'蒂}要附加约菜条件以确保综合、实珉的结果满是时序 要求。 2、获得正确的时序分析报告 TIMING ANALYZER是ISE中集戏的静态时'I葶分析工具,利用这个工具可以获 雩导映射竣布局布线熙的时廖分据报告,从丽对设计姻性能做出评估。由于TIMING ANALYZER以约采{乍为判断时序是否满足设计要求的标准,因此要求设计的时候 正确输入约束,以便TIMING ANALYZER输出正确的分析报告。 3、指定FPGA;l辫位置与毫气标准 FPGA的可编程特性使电路板设计加工和FPGA设计可阻同时进行,而不必等 FPGA引脚位置完全确寇,从而节省了系统开发时间。这样,电路板加工完成后, 根据电路板的赢线对FPGA加上引脚位避约束,使FPGA与电路祓正确连接。另外 通过约束还可以指定IO引脚所支持的接口标准和箕值电气特饿。 考虑到3DES模块远算的高速性,农约束编辑工具中,做如出如下约束: 62 加密卡的研制与加密算法的FPGA实现 设置时钟周期为4NS,占空比为50%。在指定全局时钟约束以后,进行综合, 肴综合结果是否融满足时序要求。 63 加密卡的研制与加密算法的FPGA实现 在绦合属性选择中,指定优化的全局目标怒SPEED速度优先,由于时序要求 一般来说比器件面积要求更重蘩,所以一般选择速度优先策略。综合参数 (OPTIMIZATION EFFORT)选项,由于该设计对时序要求和面积要求都较高,所 以选择难度指标为HIGH。按照瑟求设莺好各项参数后,就可阻进行综合的过程。 完成XST综合詹,调用综合报告,分析综合结果。 Final Report ====…:========一==…=一一∞=:一==一一=一==一一…==一= Fihal Results RTL Top Level Output File Name Top Level Output File Name Output Format Optimization Criterion Keep Hierarchy Macro Generator :93des.ngr 93des NGC Speed NO MaCrO+ Design Stat{stics #IOs Macro Statistics #ROMs # 16x16一bit ROM #Registers i—bit register 28一bit register 32一bit register 4一bit register 64一bit register #Adders/Subtractors # 32一bit adder #Comparators # 32一bi t comparator less 325 384 384 1821 663 96 291 768 3 3 3 3 3 64 加密卡的圣弄制与鸯拜整算法豹FPGA实现 Cell Usage: #BELS 15773 # BUF 26 嚣 GND 1 嚣LUTI 1 嚣LUT2 720 #LUT3 2328 #LUT3 D 360 #LUT4 3120 # LUT4 0 6144 # MUXF5 3072 # VCC 1 #F1ipF】ops/Latches 15736 辩 FD 2520 #FDG 132l巷 #Shifters 2688 # SRLt6 2688 #elock Buffers 1 # BUFGP l #IO Buffers :298 # IBUF :234 # OBUF :64 一㈣2一∞#㈣Ⅻ㈣一一∞∞一一一…=㈣∞…≈=2 Device utilizatiOn summary Selected Device:2v3000bf957—6 Number of S1 ices Number of S1ice F1ip Flops: Number of 4 input LUTs: l鹋45 out of l 4336 15736 out of 28672 15361 out of 28672 75% 54% 53% 65 加密卡的研制与加密算法的FPGA实现 Number of bonded IOBs 298 out of 684 43% Number of GCLKs: l out of 16 6% …#一一一…一一……一一……一一一一一一一一一一= TIMING REPoRt NOTE:THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE, FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT GENERATED AFTER PLACE—and—ROUTE. C10ck InformatiOD C10ck Signal Clock buffer(FF name) }Load clk BUFGF 一……一………………~一4 Timing Summary: Speed Grade:一6 Minimum period:4.553ns(Maximum Frequency:219.635磕4z) Minimum input arrival time before clock:4.828ns Maximum output required time after clock:5.880ns Maximum combinational path delay:No path found Timing Detail: AI I values displayed in nanoseconds(ns) 18424【 Timing constraint:Default period analysis for Clock’clk Delay: 4.553ns(Level S of Logic=3) Source DESl-decryptl5 reg一3—7 Destination:DESl一Ides—f16一sbloutb~reg 4 Source C10ck: elk rising Destination Clock:clk rising 66 Data Path:DESl一decryptl5一reg~3—7 to DESI—Ides—f16一shloutb—reg 4 Gate Net Cel i:in->out fanoat Delay Delay Logical Name(Net Name) FDC:C一>0 (DESl一decryptl5一reg一3~7) 20 0。449 1,478 DESl一decryptl5一reg一3—7 LUT4:10->0 16 0.347 1.294 DESI~Ides—f16 Mxor xor—oat—Result<43>l(DESl一Ides—f16~xor—out<5>) LUT4 L:j0一>LO DESI~tdes—f16一Isbl_Mrom 1 0.347 0+D00 n0000 iest lut4 1161(DESl一Ides—f16一Isbl_nO000<4)) MUXF5:10一>O (DESl一Ides—f16_sbloutb<4>) F聪:D 1 0.345 0.000 DESl一Ides—fl轧Isbl—s23 0.293 DESl.—Ides。。f16—。sbtoutb_reg 4 Total 4。553ns(1.781ns logic,2.772ns route) (39.1%logic,60.9%route) Timing constraint:Default OFFSET tN BEFORE for Clock’clk Offset: 4.828ns(Levels of Logic=2) Source Destination DESI—in64 regj2 Desti靛鑫tion Clock:clk rising Data Path:rst to DESl一in64 reg~62 Gate Net Cell:in->out fanout Delay Delay Logical Name(Net Name) IBUF:I->0 BUF:I->0 FDC:CLR 490 0。653 1。803 rst—IBUF(rst_IBUF) 49t 0.347 I.803 rst—IBUF_18(rst—IBUF_18) 0.222 DESl——in64,,reg——62 67 Total 蕊密卡静磷稍与荫纛葬法鲍FPGA实现 4.828*s(1。222ns logic,3。606ns route) (25.3%logic,74.7%route) Timing constraint:Default OFFSET OUT AFTER for C10ck’clk’ Offset: 5.8SOns(Levels of Logic=1) Source:DES3一Ides~f16一outr32—25 Destination: goutdata64<64> Source Clock: eik rising Data Path:DES3一Ides—fl 6 outr32—25 to goutdata64<64> Gate Net Cel 1:in->oat fanout Delay Delay Logical Name(Net Name) FDC:C~>0 (DES3一Ides—f16_outr32—25) OBUF:I一>0 (geutdata64<64>) Total 5.880ns(5.568ns 1 ogic,0.312ns route) f驰.7%logic.5.3%route) 幽班上综合掇诺褥窭备方瑟翡数据,包括芯片备耱离帮资源秘搜矮,时穿约 束结果,如果综合后得到的结果与实际期望的不同,则必须进行进行熏新设计。 综合完成后需疆检查综合结果是否与原设计的~样,需要做综合后仿真。在 俦奏辩,把综合垒裁熬趸#寸文传爱振裂综台爨囊模裂中去,可接诗门趸对带来粒 影响。综合后仿真最然比功能仿真精确些,但是只自&估计门延时,而不能估计线 延时,仿真绪果与布线露的实隧情况迩有一定|{孽差距,并不是卡分准确。这魏仿 真的主要恳的在于检查综合器的综合结果是褥与设计输入一致。 综合结果的本质是一些由与、或、非门,RAM,REGISl、ER等基本逻辑单元组 成的逻辑嘲表,它与芯片实酥靛配霍溃况还肖较大差疆。诧辩应该镶鞘FPGA/- 商提供的工具软件,根撼所选芯片的型号,将综合输出的逻辑网表适配到具体 FPGA器件上,这个过程就叫做实现过程。XILINX静实现过程分为翻译,淤辩, 囊弱蠢线等3令步骡。因为只纛嚣{牛开发商最了解器件的内部缨构,所以实现步 骤必须选用器件开发商所提供的工具软件。 68 抽密卡於磅铡每秘密舞法的FPGA实现 毒局露线之蒙应该傲孵序仿真,时序仿真中应该将布扁布线的延时到设计 中,使仿真既包含门延时,又包含绞延时信怠。与前舔各种仿真榴比,这种后仿 真包含的延时僖息最为全强、准确,§%较好的反浃芯片舱实际工作谤掇。这时候 如采系统中一些时序约束不能满足系统要求,这时候的仿真籍结梁将会密现钱 误。这时橡就要返回到源程序避{亍修改。 设诗开发的最寿涉骤就楚在线调试或者将生成豹粥爱文件写入芯片中进行 测试。每个仿真步骤如果出现问题,就需要根据错误的定位返酗到确应的步骤更 改或者霆新设计。 在本船密卡中,谶爝英它加蜜算法是通过在DSP上设嚣栩应控制镲号来实现 多算法切换。不网的控制信号决定不同的算法调用。FPGA根据不同的控制信号 调用不同的算法,对i/o西上的数猜做不同的赴瑗运蓟算法留挟瀚秘的。 第五辈结论 5.结论 出于缝漭的全球化,今天的企业不秀局限于本地、本国蕊圈内经萤,而怒在 跨地区、踌函静整大范围内遴行经营,斑魏爨工、合{乍饮{聿羁供应离遍布全球。 对于一个企黎业单技来说,墓撵剥煺互联网的强大功能成为~个道要的课题。由 予各茅孛颓技术的疆瑰,分散、移湖的工作人员需要灵活、安全的方法与总部避行 黻系。农这种搭况下,金事业单位瓣要燕毅考感是己的广域网战略。于是,很多 企业正在建立E x t r a il e t来扩张离已的广域网络,与合作伙伴耜供成葡共 溺建立一令离效、安全、低成零的广域嬲。 通道公嘲传输敏感住静数据妥防止被溢断秘篡改,圆此必须采取鸯效的撼熬 保证敏感数摆媳安全挂。数撼黉输总是不希疆无关人员察看、截取和恶意修改, 所以要求傈证私有数措在公醐上传输的安全性。酱懿,彼往逶过细密豹方法菘乏实 现数据在公阚土安全她倦埝。于是,嚣张加密算法鼷出不穷,如M D 5、3 D E S等。疆前主骚采髑的楚l 2 8位器上的加密算法,经避这榉酶处理,在瑰有的 发餍水平下,基本上解狭了数撂农公网上传竣所遇到的安全性阅题。 数据的加密,即加密卡的设计,是构建v P N中豹一个藿要墨节,是实现数 援安全款保障,也是实现局域网数据在因特闷土安全传输的关键;而数据的缱理 速度是擒侠高服务质蹩的关键。因此数据豹加密强度和处璎速度变褥越来越重要 了。 69 加密卡的研制与加密算法的FPGA实现 麴密卡不仅栽鹅予搭建VPN,在安全鼹出器及一些蓑娶加袋螅场合如魄子藏 务上挪鸯银好的应用,因此,以加密卡为载体研究硬件加密的高速实现媳有实际 的意义。 麴密专是作为一个都馋安装劐P C I捶孝冀中。魏密卡蜘工{擘魄较明确,即处 理霰疆加解密的数据。 本系统的设计使加密3DES算法在FPGA芯片上的处理速 度在理想状态下熊达到到14.1GB/S。IDEA算法农FPGA芯片上的实现速度能达到 I,4GB/S。目前国内加密卡实现的3DES速度一般不超过IGB/s,IDEA速痿不超过 1GB/S,国外有人用流水线并行加密的方法实现IDEA速度可以达到6GB/S,僵楚 对予将3DES和IDEA综合到一起来说,两释算法如巢都瑙滚承线并行搬密豹话, 对FPGA逻辑资源豹占翔稳当熬大,这藏要袭逡溺按模{#紫大豹FPGA,赞瘸也太 过磊赛,毽救,本攘密卡熬IDEA冀法没有慰滚承线著行鸯g密粒方法实现,但也 毙达剽l。4 oB/s。3DES算法采用了滚水线并行加密的方法实现,而且FPGA芯片 选用的怒离遮的,所以,实现的3DES算法理论上能达到14。1 6B/s,能应用在 一些软件实现没法达渤的应用场合。 零次设计中的加密卡可以将PCI的功能巢成到FPGA中:圈前PCI接口设计 ~般肖鼹静方法,根据协议独立设计或购买圊外公司提供的标准芯片。普通用户 多采用聪者,但成本较高,不窝产箍亿;有一定实力的用户从知识产权及设计灵 活性考虑多采用前者。然而,PCI总线与过去的ISA总线褶院有葜独特的要求和 特点,其规范定义中牵挂蠲酶概念_羊瑟弓{线定义较菇复杂,蔑列褶对繁多,辍械及 电气特後要求严楱,疲霜蠢短懿阕爨一般难以攀攫。结合本设诗来说,囊予FPGA 酶可用逻辑燹源院较多,能将PCI接蜀墩到FPGA中是最好斡。出予务方露的原 因,这个功92在本次设计中没肖实现。 7O 翔密卡鹊矫割与糖密算法耱FPGA实璐 参考文献 (i)陈运.信息加密原理,电子科技大学出版牡1996 (2)戴萌楼阁建江编.TMS320C54XDSP缡搦原理发应爱jE京蕊空靛天大学出数社 2001 (3)[夔]D.R.斯廷森蔫张文敢译密弱学瑾论稻实践国防辩学技术绦密遂倍重 点实验室1999 (4)[羹]J.Bhasker著徐攘稀等译.Verilog HDL磋件嵇述语袁.褫裱:[、韭出黻社 2000 (5)EDA先镣二c作室王诚薛小刚耄申信潮编著FPGA:CPLD设计T具XILINX ISE 5,X使用详孵.人民邮电出版社 (6)virtex—ii proplatfomafpgahandbook.Xilinx.2002一t0 (7)《零片枫与嵌入式系统盛用》西礴交通大学何斌何大可 速实现 3DES算法的FPGA高 <8)惫革。礴编程逻辑阵列FPGA秽EPLD。舍鼹:中国科技大学出舨社,1996 (9)ttalevi,S.Krawczyk,H.,Public key crypto磬raphy andpassword protocols[J] Proceedings of5thACM Conference on Computer and Communications Security,1998 (1 o)Botting,J.Security on Me Intemet:Authenticating the User[J]-Telecommunications, 1997 (11)Schneier,B一应用密码学.机械工业出版社,1999 (12)李广军,孟宪元+可编程ASIC设计及应用.成都:电子科技犬学蠢版社,2000 (13)夏宇蚓.复杂数字电路与系统的Verilog HDL设计技术.北糸:北京航空航天大 学出版社,1999 (14)《世界产品与投术》。AmitDhir.用FPGA实现安全处理.2003年6月 (15)李刚强、田斌、易克初FPGA设计中关键问题的研究电子技术应用 http://www.51eda.conm:eda/Article.Show.asp?ArliclelD。309 71 加密卡的研制与加密算法的FPGA实现 致谢 本篇论文的完成,是在我的导师陈运教授,研究员陈锡明,高工张建福的指 导下完成的。 在这里,我要首先感谢我的导师陈运教授,她严谨的治学态度,敏感的洞察 力,感人的敬业精神使作者受益匪浅,在此,作者对尊敬的导师表示深深的感激。 我还要感谢研究员陈锡明的悉心指导,陈锡明老师的认真对待学问的态度 孜孜不倦的求学态度鼓舞着我。 感谢张建福高工,他丰富的工作经验,耐心的指导,热心的帮助使得这篇论 文得以最终顺利完成。 感谢在求学路上给过我帮助的人,感谢他们的启示和精神鼓舞。 感谢我的亲人和好友,感谢他们的鼓励与支持。 最后,衷心感谢为审阅本文而付出辛勤劳动的专家学者。 72 鞠密卡静辑翻与热密蓦潼豹FPGA实理 今天麓历 帮兰,蹬生年胃,1975年1l胃 予1993年---1997年,藏读于西鬻交通大学橇械学陵汽车工程专曼, 获得学士学位 于2001年---2004年,就读于电子科技大学通信学院密码学专业, 攻读硕士学位 73 加密卡的研制与加密算法的FPGA实现 作者: 郭兰 学位授予单位: 电子科技大学 相似文献(10条) 1.期刊论文 严迎建.徐金甫.徐劲松.李伟 一种基于FPGA的PCI加密卡设计 -电子技术 应用2007,33(6) 利用FPGA设计实现了一种基于PCI总线接口的纯硬件加密卡,为PC机提供加密、签名等服务.对采用VHDL描述的 PCI接口IP软核及其应用方法进行了分析;采用VHDL设计了3DES、MD5等算法模块,并设计了其与PCI接口IP核之间的 通信控制模块;利用Quartus Ⅱ进行仿真、综合后,下载到加密卡上的FPGA配置芯片,将上述各个模块集成在一片 FPGA上予以实现;最后,采用VC++为加密卡设计了驱动程序和测试程序,并对整个加密卡工作进行了功能测试. 2.学位论文 王毅 FPGA在硬盘加密卡中的应用与研究 2007 随着我国信息化发展进程加快,信息化覆盖面扩大,信息安全问题也就随之增多,其影响和后果也更加广泛 和严重。同时,信息安全及其对经济发展、国家安全和社会稳定的重大影响,正日益突出地显现出来,受到越来 越多的关注。在和平年代,通过对信息载体进行大规模的物理破坏,从而达到危害信息安全的目的,在一定程度 上是行不通的。然而,在信息安全的角力上,破坏者从来都没有放弃过,他们把目标对准了信息载体中的数据 ,由于数据的易失性,计算机数据成为信息安全中的最大隐患,同时也是破坏信息安全的一个突破口。 本文提出研制硬盘加密卡的主要目的是为了防止对计算机数据的窃取,保护硬盘中的数据。破坏者在得到硬 盘后,也不能够得到硬盘中的数据,从而达到保护信息安全的目的。加密卡提供两个符合ATA-6标准的接口,串接 在主板IDE接口和硬盘之间。存储在硬盘上的数据,是经过加密以后的加密数据;从硬盘上读出的数据,必须经过 该卡的解密才可被正常使用,否则只是一堆乱码。加密卡采用FPGA技术实现IDE接口和加密算法,以减小加解密带 来的速度上的影响。 论文的工作重点主要有以下几个方面的内容:FPGA及VHDL语言的研究,ATA协议标准研究及IDE接口的FPGA实 现。论文对ATA协议做了细致的研究,分析了硬盘接口的工作机制以及主机与硬盘之间的通信协议,并在此基础上 ,重点研究了用FPGA的编程功能来实现一个计算机硬件底层接口协议的方法,详细介绍了芯片的内部框图及 FPGA的软件流程图,提出了在实现过程中应注意的要点,最终用FPGA构建了一个双向IDE硬盘通道,实现了两套符 合ATA-6规范的IDE接口。 3.学位论文 时映鹏 基于FPGA技术的网络加密卡 2007 随着互联网的飞速发展和全球信息化进程的推进,随之而来的网络安全问题也日益加剧。基于可编程逻辑器 件的硬件安全性解决方案不但可以提供并行处理的能力,而且具有设计灵活、可靠性高,扩展性好等一系列优点 。本文即是针对基于FPGA的网络加密卡技术进行了具体的研究与实现,在掌握网络传输协议、数据传输原理和网 络加密技术的基础上,完成了网络加密卡的硬件电路和软件程序的设计。论文工作对促进网络加密产品的研究和 开发具有一定的实际意义。 论文首先从网卡的总体架构设计开始,在PCI和网卡芯片之间,设计加入了FPGA加密芯片,该FPGA加密芯片由 PCI接口、ISA接口、控制逻辑模块、加密芯片模块和数掘加/解密模块构成。其中,控制模块负责数据的分配和数 据加/解密模块的控制;加密芯片负责生成密钥序列;数据加/解密模块负责对明文数据的加密。本论文对控制模 块和数据加/解密模块进行了功能设计,并利用VHDL语言对其进行了编程实现,而且针对加密芯片、控制模块和数 据加/解密模块之间的信号传递进进了优化设计。 在软件方面,首先利用C++语言编写了网卡的初始化程序,完成了网卡的初始化设定;然后,对网卡的发送、 接收进程和TCP/IP协议栈进行了编程实现,同时解决了多线程的数据传输问题。 在此基础上,利用Borland C++BuiIder完成了显控界面的设计。在良好的人机交互界面下,成功地完成了数 据通信实验的全过程。实验结果证明了网络加密卡硬件电路和软件设计方案的正确性,而且能够在不影响传输速 度的前提下,实现加密数据的可靠传输。 4.期刊论文 万毅.谢军 光纤通道存储区域网络上的FC加密卡设计 -电子元器件应用 2009,11(2) 介绍了一种FC加密卡软件部分的实现方案,同时给出了其硬件部分的详细设计方法.本系统的硬件部分采用 Xilinx公司的高端FPGA器件V5LX50T,并通过PC机、HBA卡以及PFGA联调来实现密钥的交互,进而进行加密卡数据的 加密和解密. 5.学位论文 郑元九 基于FPGA的硬件加密卡研究与设计 2005 随着Internet的发展和网络应用的日益增多,网络安全问题逐渐成为人们不容忽视的一个问题,因而能很好解 决网络安全问题的虚拟专用网(VPN,Virtual Private Network)安全网关也成为近年来的研究热点.但VPN安全网关 要应用于市场,不得不面对的是日益发展的网络带宽和它自身相对较慢的网络数据处理速度之间的瓶颈问题.本论 文研究目的正是针对于此问题,提供一个安全、可靠、高速的VPN网关,以适应日益增加的网络带宽的发展要求.在 分析研究各种相关VPN解决方案的基础上,论文提出了基于网络处理器IXP425和硬件高速加密卡的嵌入式网关的解 决方案.该方案将数据加密处理任务从主处理器工作任务中分离出来,很好地解决了网络交换处理和加密处理之间 的矛盾,大大提高了网关的安全性能和处理速度.对基于PCI总线插槽的硬件高速加密卡的设计,不但解决了速度瓶 颈问题,同时也可用于其他加密应用处理.论文对基于PCI总线接口的加密卡进行了硬件设计,并重点对DES/3DES等 加密算法的硬件FPGA实现进行了设计和优化.在分析和研究算法原理的基础上,结合DES/3DES加密算法的自身特征 ,采用多级流水线结构设计,实现了加密数据的线速输出,大大提高了性能.结合Altera公司APEX20K的FPGA产品结构 特征和Verilog HDL设计语言的优势,采用双case语句,实现了很好的资源优化.并结合FPGA硬件设计的自身功能,进 行了毛刺处理等综合优化,使整个加密算法的实现速度很好地满足了项目设计的要求,同时为整个硬件高速加密卡 的实现奠定了基础,也为整个高速VPN网关的实现提供了保障. 6.会议论文 姜书艳.罗刚.乔晖 基于lxp425网络处理器的应用开发 2008 网络处理技术正在成为下一代网络的核心技术。本文介绍了基于IXP425网络处理器平台的接入路由器的硬件 电路和安全网关设计的应用开发。结合网络处理特性的扩展应用,以及在主模式下通过PCI扩展CPLD和FPGA,添加硬 件加密机制,形成了硬件网络加密卡。在从模式下,利用PCI接口将IXP425扩展为网络设备卡,嵌入到集群服务器的 应用开发。最后对网络处理器的发展进行了展望。 7.学位论文 张宇 基于FPGA及Nios软核处理器的硬盘加密卡设计 2004 信息社会的到来,给全球带来了信息技术飞速发展的契机.计算机技术和个人PC的应用引起了人们生产方式、 生活方式和思想观念的巨大变化,极大地推动了人类社会的发展和人类文明的进步.然而人们在享受快捷信息系统 带来的巨大利益的同时,也面临信息安全的严峻考验.因为信息安全不仅关系到个人的隐私能否得以保障,甚至关系 到国家的安全和利益,所以保障信息系统的安全已经作为一项重要的课题受到越来越多的人的重视.硬盘加密卡研 究是针对硬盘中的数据安全而提出的.本文重点介绍了IDE硬盘接口的工作原理、协议、读写时序以及DES加密算法 实现方法,分析了算法的安全性.在此基础之上,进行了如下研究工作:(1)提出了硬盘加密卡的总体设计方案,并且 对设计部件进行了仿真实现和性能分析.(2)完成了硬盘加密卡的接口设计,能够同时满足IDE硬盘接口时序以及 DES加密模块的数据输入/输出要求.(3)在深入研究DES加密算法的基础上,对DES算法进行了FPGA实现并且对设计进 行了相应的优化. 8.学位论文 陈向荣 软件保护的软硬件方案研究与实现 2002 在研究密码学和多种加密算法的基础上,采用公认为安全的单向散列算法MD5,并对其输入参数作一定算法变换 ,构成了一个既有一定坚固性,又难于轻易破解的加密算法.提出并实现了一种复合型加密方案,其策略是:在用户端 提取能够唯一标识计算机的硬盘出厂序列号作为用户的特征码,连同用户号发给软件开发商,开发商利用加密算法 生成注册码返回给用户,用户侧软件用同样的加密算法检验这些数据判断软件是否合法;通过记录软件的安装日期 和最后运行日期来提供试用天数的限制,并可防止解密者修改系统时间或重安装来破解;所有数据都经过一定的变 换后在注册表和隐藏文件中作双备份以防被轻易发现.提出了一种PCI硬件加密卡的设计方案,将强有力的加密算法 用AHDL语言编写并植入FPGA芯片内,软件的加密点随机产生数据发给加密卡,经加密卡内置算法运算后传回软件,软 件用同样算法检验返回数据是否正确以确定软件的合法使用.最后,通过分析软件保护全过程的流程,提出了加强加 密点安全性、反跟踪等在应用软件中防止破解的方法,配合已提供的加密产品可以使软件最大限度的得到保护. 9.期刊论文 张宇.李娟.陈利学.Zhang yu.Li juan.Chen li-xue 基于Nios软核处理器 的硬盘加密卡解决方案 -电子与封装2006,6(1) 为了保护自己的资料不被其他人骚扰,对数据资料的加密处理成为十分必要的工作.文章介绍了Nios软核处理 器和可编程逻辑器件设计及信息安全技术.在此基础之上,针对硬盘加密卡的设计提出了切实可行的完整解决方案. 10.学位论文 万毅 存储区域网络中FC加密卡的设计与实现 2009 在当今网络时代,存储技术正在发生着革命性的变化,并进入了一个全新的时代。SAN(存储区域网络)是近来 业界十分引人注目的技术,它一方面能为网络上的应用系统提供丰富、快速、简便的存储资源,另一方面又能对 网上的存储资源实施集中统一的管理,成为当今理想的存储管理和应用模式。 本文介绍的FC加密卡适用于存储区域网(SAN)。本文首先简单介绍了SAN的组成,以及设计FC加密卡所涉及的 FC协议与PCI Express协议。然后较详细的介绍了FC加密卡的实现。本加密卡位于存储设备之前的网络中,主要工 作在FC-1和FC-2层,包括软件驱动、PC机与FPGA密钥交互、FPGA中的线路加密程序三部分,本文主要介绍后两部 分。在发送数据前,加密卡与主机要进行密钥交互,交互数据传输包括寄存器组传输和DMA传输两种方式。经过交 互,FPGA从主机处得到用AES-256加密算法加密后的AES密钥,然后在FPGA内解密,得到用于加密数据的AES密钥。 数据发送到加密设备后,解析出FC协议中的各种数据类型,对读写命令帧提取出oxid与Lun号,存入表项;对 随后发送到磁盘阵列的与写命令相对应oxid号的数据进行加密,对加密后的数据重新计算CRC,对正确的帧添加正 确的CRC,对错误的帧添加一个错误的CRC,同时计算帧的RD值,采用的是8b/10b编码,根据RD选择合适的EOF,之 后再重新组帧,发送到链路。从磁盘读取数据时,对与读命令相对应的oxid号的数据帧进行解密,并在表项中清 除相应的oxid号;从磁盘读取数据时,解析出FRAM_END,用于清除表项中没有对应数据的读写命令帧的oxid号。 加解密算法采用的是AES-256,计数器模式。 本文最后介绍了FC加密卡的仿真和实际环境测试。通过测试仪器在测试中所获取的数据显示,本加密卡在速 度与性能方面满足设计要求,具有实用价值。 本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y657616.aspx 授权使用:北京理工大学(北京理工大学),授权号:492072e8-e4ed-4c01-9f3f9e1701854a8f 下载时间:2010年10月22日
更多简介内容

评论

下载专区


TI 参考设计资源库

工业电子 汽车电子 个人电子
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })