【《某光纤保密通信系统的设计与实现案例》7800字】_第1页
【《某光纤保密通信系统的设计与实现案例》7800字】_第2页
【《某光纤保密通信系统的设计与实现案例》7800字】_第3页
【《某光纤保密通信系统的设计与实现案例》7800字】_第4页
【《某光纤保密通信系统的设计与实现案例》7800字】_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

某光纤保密通信系统的设计与实现案例目录TOC\o"1-3"\h\u26699某光纤保密通信系统的设计与实现案例 1287861.1FPGA器件和芯片选择 2319011.2AES算法设计 2104761.2.1S盒模块的硬件设计 3136941.2.2流水线设计 639601.2.3秘钥扩展模块的硬件设计 897001.3AES算法的验证 9192681.3.1测试向量的选取 9246181.3.2AES算法功能仿真及验证 955251.3.3流水线仿真 12203391.3.4综合及结果分析 13123321.4光纤通信设计 14197071.4.1AES算法在光纤链路上的算法移植 14153081.4.2发送端数据帧设计 15227951.4.3接收端数据帧数据恢复 16225051.4.4自动协商功能验证 17236591.5系统综合测试分析 18319421.6小结 20本论文的主要工作是光纤保密通信相关研究,主要解决在物理层1000M光以太网的安全通信问题。论文研究点分为三个:加密算法、光纤通信设计和以太网PHY芯片设计。传统光以太网在对信息安全有较高要求时,通常采用软件的方式或者单独设计硬件子板卡与芯片配合使用从而实现加密的需求。本论文直接将AES加密算法与PHY芯片进行整合,提供了一种新的安全芯片设计思路。将加密技术通过硬件电路的形式直接整合到PHY芯片上,可以很好的应用在安全级别较高的以太网通信设备中,如大型的军工设备,银行交换数据设备,政府机关通信设备等。实际应用中,由于脱离软件加密的束缚,具有更好的便携性和安全性。通过以上的分析,国产以太网PHY芯片已经对其中核心技术进行了研究,并验证了部分逻辑功能,并进行了大量性能仿真。加密算法和光纤通信部分,本设计选择采用在FPGA上实现相关设计和验证工作,实际应用场景下,需要与PHY芯片结合,真正意义上成为一个可商用的物理层安全芯片。FPGA器件和芯片选择本文在硬件设计过程中采用XLINX公司的ARTIX-7系列FPGA芯片,因其电路设计的灵活性和易移植性等特点,在硬件系统中得到广泛的应用,大多用于实现处理运算、片内缓存和控制器间的通信,Artix-7系列FPGA有以下几种,如图4.1所示为Artix-7系列FPGA内部资源情况分布。为了考虑后期可以做多通道高速通信,我们选取GTP数量较多,逻辑资源较为丰富的器件XC7A100T。图4.1Artix-7系列FPGA资源列表AES算法设计AES算法硬件设计上,通常包括FPGA和ASIC两种方式。为了更好的满足定制芯片及算法移植操作,我们在FPGA上进行仿真并设计。在算法设计上使用模块化的设计方法,通过使用VerilogHDL硬件描述语言对加密算法的各个子模块进行设计,仿真和综合操作。算法的硬件系统架构包括4个部分:加密模块、解密模块、密钥扩展模块和顶层Top模块。其中密钥扩展模块的功能是提供轮迭代过程中所需的14个子密钥;加解密模块用来完成加密/解密的功能运算;顶层top模块功能是提供所需的铭文密钥及初始化密钥数据如图3-4所示,搭建完成AES算法设计整体系统的搭建。图4.2AES算法设计内部结构模块化设计S盒模块的硬件设计字节替换步骤的硬件实现,可以通过VerilogHDL语言去实现。根据对应的替换规则,输入A,根据映射关系会有对应唯一的输出B。如果通过可编程逻辑器件编程去实现这个运算过程,会占用大量的硬件逻辑资源,同时运算所使用的时间也会很长,显然这种方式不是最优解。我们从输入和输出映射一一对应关系的角度出发,输入为8位数据(一个字节),那么输出共计2的8次方也就是256种情况,我们可以事先根据对应规则,通过数学运算工具例如matlab,计算出输入所对应相应的输出,建立起我们的置换表:输入的八位数据中,低四位数据代表列地址,高四位数据对应行地址16*16的置换表。通过输入的八位数据,就可以通过上述方式快速查找到所需对应的数据。与加密相对应的解密过程,也可以通过上述构建置换表的方式完成逆字节替换操作。这种方式实现字节替换可以减少硬件逻辑资源的消耗,同时也提高了该步骤的运算速度。如表4.1和4.2所示分别为S盒和逆S盒的构造。4.1S盒构造Y0123456789ABCDEFX0637C7778F26B6FC53001672BFED7AB761CA82C97DFA5947F0ADD4A2AF9CA472C02B7FD9326363FF7CC34A5E5F171D83115304C723C31896059A071280E2E827B275409832C1A1B6E5AA0523BD6B329E32F84553D100ED20FCB1586AC8BE394A4C58CF6D0EFAAF8434D338545F9027F503C9FA8751A3408F929D38F5BCB6DA2110FFF3D28CD0C13EC5F974417C4A77E3D645D1973960814FDC222A908846EEB814DE5E0BDBAE0323A0A4906245CC2D3AC629195E479BE7C8376D8DD54EA96C56F4EA657AAE08CBA78252E1CA6B4C6E8DD741F4BBD8B8AD703EB5664803F60E613557B9B6C11D9EEE1F8981169D98E949B1E87E9CE5528DFF8CA1890DBFE6426841992D0FB054BB16表4.2逆S盒构造Y0123456789ABCDEFX052096AD53036A538BF40A39E81F3D7FB173E339829B2FFF87348E4344C4DEE9CB2547B9432A6C2233DEE4C950B42FAC34E3082EA16628D924B2765BA2496D8BD125472F8F66486689816D4A45CCC5D65B69256C704850FDEDB9DA5E154657A78D9D84690D8AB008CBCD30AF7E45805D8B345067D02C1E8FCA3F0F02C1AFBD0301138A6B83A9111414F67DCEA97F2CFCEF0B4E673996AC7422E7AD3585E2F937E81C75DF6EA47F11A711D29C5896FB7620EAA18BE1BBFC563E4BC6D279209ADBC0FE78CD5AF4C1FDDA8338807C731B11210592780EC5FD60517FA919B54A0D2DE57A9F93C99CEFEA0E03B4DAE2AF5B0C8EBBB3C83539961F172B047EBA77D626E169146355320C7D在具体逻辑设计过程中,我们将输入到S盒的数据,根据上述置换表得到相应的数据输出,具体规则是将输入的八位二进制数的高四位看作一组,并将其作为字节替换置换表对应的行数;同理将输入八位二进制数的低四位看作一组作为字节替换置换表对应的列数。根据行数和列数,我们可以确定S盒中替换后字节数据所在地址,并将对应的数据进行输出。例如我们对输入到S盒的十六进制数“16”进行字节替代操作,高四位为”1”,对应行数为1,低四位为”6”,对应列数为6,根据置换表可以得到唯一行列值,替换后的数据为“47”,S盒模块的硬件原理图如图4.3所示。图4.3S盒模块的硬件原理图设计字节替换模块时,首先我们定义一个信号:wire[7:0]sbox[0:255]。即sbox为一个可存放256个八位bit位宽数据的ROM作为我们的置换表。在处理对一个128位数据进行字节替换操作过程中,我们首先将128位数据拆分成四个32位位宽的数据部分,定义为block_w0_reg,block_w1_reg,block_w2_reg,block_w3_reg,接着对这个四个32位数据通过状态机遍历送入sboxw中,并在字节替换模块中将sboxw拆分成4个八位数据,然后查表整合得到我们new_sboxw数据。流水线设计AES256算法加密过程包括14轮迭代,每轮迭代的组合逻辑模块包括AddRoundkey,SubBytes与ShiftRows,Mixcolumns,KeyExpansion。为了降低算法所引起的延迟,在轮迭代过程中引入流水线结构来提升设计的速度。流水线结构是高速硬件电路设计中常用的一种设计方式。在电路设计中,如果数据的走向是单向的,即没有反馈或迭代过程,前一个模块的数据输出是后一个模块数据的输入,就可以在设计中引入流水线结构。流水线设计的基本结构就是将系统分为多个子模块,并将其连接起来,同时在模块与模块之间插入缓冲寄存器。在子模块中,一个时钟周期内该模块独立处理一个数据的相关运算操作,并在下一个时钟到来后将处理完成的数据送入下一部分。如图4.4。图4.4流水线结构图在进行流水线设计之前,需要选择并确定一种适合于本设计的流水线结构,该结构需要很好的与轮迭代结构中通过硬件逻辑单元实现查找表的设计方式相结合,并达到比较好的优化效果。目前常用的流水线结构有以下三种:分别是轮内循环流水线结构、轮外流水线结构和内外混合流水线结构,三种流水线结构各自有他们的设计特点,接下来对这三种流水线结构分别进行简要的介绍。轮内循环流水线设计结构轮内循环流水线设计的内部设计结构如图4.5所示。该结构对AES算法的轮迭代单元进行了拆解,对各级之间的逻辑单元也做到了相应的均衡[31]。图4.5轮内循环流水线结构轮外流水线结构轮外流水线结构如图4.6所示。轮外流水线结构采用的是轮单元完全展开的方式。在轮迭代过程中的运算单元和密钥扩展单元的内部不进行流水线进一步拆分,并在一个时钟周期内完成对轮迭代单元的运算处理。并且轮迭代单元和密钥扩展单元的输出数据作为下一个运算单元的输入。这种结构可以达到较高的吞吐量,但是由于采用了完全展开的结构,其消耗的逻辑资源和面积相对较大。图4.6轮外流水线结构轮内外流水线结构内外混合流水线结构如图4.7所示。内外混合流水线指的是将前两种流水线结构相结合的一种结构方式。在轮迭代单元内部进行多级流水划分,并在轮迭代单元外部采用完全展开的结构设计方式,将每次轮迭代单元输出的数据后加一级或多级寄存器,输出结果作为下一个轮迭代单元的输入进行运算。这种结构的设计方式可以达到的吞吐量最高,但逻辑资源和面积的资源消耗也最大。为了性能最大化,我们使用该结构进行设计。图4.7内外混合流水线结构秘钥扩展模块的硬件设计在加密和解密的14轮迭代循环过程中,每一轮都需要密钥加操作。我们通过送入初始的256位密钥值,通过密钥扩展模块可以得到14个所需的子密钥,密钥扩展模块的输入输出及内部重要信号如下表4.3所示。表4.3秘钥扩展模块部分内部信号端口位宽input/output/inside功能描述clk1input时钟reset_n1input复位,低电平有效key256input输入256位密钥round_key128output输出的子密钥w0,w1...w732inside子密钥预操作寄存器k0,k1,k2,k332inside四个子密钥k0,k1,k2,k3组成输出子密钥tw32inside字节替换后的数据我们在生成子密钥过程中,内部信号运算的核心数学关系如下:k0=w0^twk1=w1^w0^twk2=w2^w1^w0^twk3=w3^w2^w1^w0^tw在图4.8是密钥扩展模块仿真的部分过程数据。从图中我们可以看到key送入的初始值为256’h0,经过14轮round,在round_key中得到最后密钥扩展模块输出的子密钥数据。图4.8密钥扩展模块仿真图AES算法的验证测试向量的选取为了验证设计后的AES算法功能的正确性,我们编写了测试向量进行验证。通过使用仿真软件ModelsimSE-6410.5对AES算法进行了相关功能仿真,包括算法加密,解密,流水线设计。我们从瑞典相关官方文档中获得参考基本功能测试向量,见表4.2。秘钥部分我们采用循环秘钥值,与单一统一秘钥相比具有更好的加扰效果。表4.2测试向量明文128'h6bc1bee22e409f96e93d7e117393172a(1)128'hae2d8a571e03ac9c9eb76fac45af8e51(2)128'h30c81c46a35ce411e5fbc1191a0a52ef(3)128'hf69f2445df4f9b17ad2b417be66c3710(4)循环密钥值[00]=128'h603deb1015ca71be2b73aef0857d7781;[01]=128'h1f352c073b6108d72d9810a30914dff4;[02]=128'h9ba354118e6925afa51a8b5f2067fcde;[03]=128'ha8b09c1a93d194cdbe49846eb75d5b9a;[04]=128'hd59aecb85bf3c917fee94248de8ebe96;[05]=128'hb5a9328a2678a647983122292f6c79b3;[06]=128'h812c81addadf48ba24360af2fab8b464;[07]=128'h98c5bfc9bebd198e268c3ba709e04214;[08]=128'h68007bacb2df331696e939e46c518d80;[09]=128'hc814e20476a9fb8a5025c02d59c58239;[10]=128'hde1369676ccc5a71fa2563959674ee15;[11]=128'h5886ca5d2e2f31d77e0af1fa27cf73c3;[12]=128'h749c47ab18501ddae2757e4f7401905a;[13]=128'hcafaaae3e4d59b349adf6acebd10190d;[14]=128'hfe4890d1e6188d0b046df344706c631e;加密后密文128'hf3eed1bdb5d2a03c064b5a7e3db181f8(1)128'h591ccb10d410ed26dc5ba74a31362870(2)128'hb6ed21b99ca6f4f9f153e7b1beafed1d(3)128'h23304b7a39f9f3ff067d8d8f9e24ecc7(4)AES算法功能仿真及验证为了更直观的描述本次AES算法硬件设计的正确性,我们通过仿真如和打印数据两种方式去展现,本次设计使用仿真软件ModelsimSE-6410.5进行仿真验证,该工具是逻辑设计中较为权威的仿真器之一,功能强大,仿真效率较好。(1)验证加密过程在测试加密算法的过程中,定义了以下测试信号如表4.2所示:表4.3AES加解密模块部分内部信号信号名称描述round当前内部循环的次数round_key送入的循环密钥值block明文new_block每次迭代输出的128位数据nist_plaintext0,nist_plaintext1nist_plaintext2,nist_plaintext3对应上述测试明文(1),(2),(3),(4)nist_ecb_256_enc_expected0,nist_ecb_256_enc_expected1,nist_ecb_256_enc_expected2,nist_ecb_256_enc_expected3,对应上述测试密文(1),(2),(3),(4)sboxw输入sbox的值new_sboxwsbox的输出值ready本次加密结束,下一次加密的开始信号为了进一步见证算法的功能的正确性,我们对具体加密过程进行分析。图4.9展示了一次加密的过程,我们在round中可以看到,由4’h1到4’he,共进行了14次迭代循环过程,满足AES256的加密迭代操作;为了在图中更好的展示加密数据,我们加密数据设置成了128位,该次明文数据为:128'h6bc1bee22e409f96e93d7e117393172a,加密结果显示ready=1时的new_block数据,数据为128'hf3eed1bdb5d2a03c064b5a7e3db181f8,与测试向量表相吻合,验证了其正确性。每次迭代加密需要消耗5个时钟周期,图中可以看到从第次迭代循环(423ns)开始,到第14次迭代循环(563ns)结束,即每14轮迭代加密(一次完整的加密过程)共消耗70个时钟周期。图4.9AES加密仿真图图4.9中无法展示我们每次迭代循环的一个内部过程,我们通过打印数据到transcript上直观观察算法的内部数据,如图4.10所示。当block=128'h30c81c46a35ce411e5fbc1191a0a52ef时,在加密模拟的第八次的迭代运算中,此次迭代输出结果new_round为0x456b8f97cdc822946dc8aab669a09e42,同时我们可以看到行变换(shiftrows_block),列混淆(mixcolums_block)和最后一次轮秘钥加(addkey_final_block)等加密过程的中间数据变量值。通过上述分析,证明了AES加密算法加密模块的正确性。图4.10第八次迭代(加密)数据(2)验证解密过程同样,为了验证解密算法功能的正确性,我们对具体加密过程进行分析。解密过程的modelsim仿真图(如图4.11),我们在round中可以看到,由4’he到4’h1,共进行了14次迭代循环过程,满足AES算法规定的解密迭代操作;该次密文数据block=128'hf3eed1bdb5d2a03c064b5a7e3db181f8,block_new显示当解密完成时的new_block数据,数据为128'h6bc1bee22e409f96e93d7e117393172a,与测试向量表相吻合,验证了其正确性。每次迭代加密需要消耗5个时钟周期,图中可以看到从第14次迭代循环(421ns)开始,到第1次迭代循环(561ns)结束,即每14轮迭代加密(一次完整的加密过程)共消耗70个时钟周期。图4.11AES解密仿真图图4.12展示了解密迭代循环的一个内部过程,我们通过打印数据到transcript上直观观察算法的内部数据。当block=128'h30c81c46a35ce411e5fbc1191a0a52ef时,第三次的迭代运算中,此次迭代输出结果new_round为0x456b8f97cdc822946dc8aab669a09e42,同时我们可以看到加密过程的一些中间数据变量值。通过上述分析,证明了AES加密算法解密模块的正确性。图4.12第三次迭代(解密)数据流水线仿真在流水线设计的三种方案中,我们采用了完全展开流水线的设计方式,在图4.13中可以看到在电路中同时使用15个加密子模块,分别错位4个时钟周期进行同时加密。图中蓝色箭头所指的是:每个加密子模块完成加密后,整合加密子模块将密文送至integrated_data中缓存。通过该优化方法后可以达到每4个时钟周期得到一个AES加密数据,大大提高了加密算法的效率。从图中可以看出,根据测试向量提供的明文数据经过运算后,整合数据integrated_data与测试向量表的密文数据一致,可以得出结论表明经过优化后的AES加密算法功能是正确的。图4.13AES外流水线设计综合及结果分析我们使用的是XILINXArtix-7a100t器件,内部资源共63400个SliceLUTs和126800个SliceRegisters。我们对加密模块进行资源分析,每次14轮迭代循环加密消耗1037个SliceLUTs和消耗151个SLiceRegisters,其中sbox模块消耗64个LUts。如图4.14加密模块的功耗分析图,我们可以看到,整体功耗为0.816W,其中静态功耗0.092W,占整个功耗的11%;动态功耗为0.723W,占比89%。图4.14功耗分析光纤通信设计AES算法在光纤链路上的算法移植通过上述AES加密仿真,在真正的工程中,我们将AES算法分别封装成加密、解密两个IP核,内部定义一块RAM,写入上述测试向量、密钥等数据。加密后数据为128位位宽,光纤中我们定义传输的数据为16位位宽,故需要设计一个位宽转换模块。AES加密后输出速率与光纤传输速率不一致,为异步信号。我们设计了一个FIFO控制模块,并调用了IP核进行设计。图4.15框出的部分展示了我们128位数据,在FIFO中一次读16位读取8次的操作过程。我们在vivado中编译IP核数据,并使用仿真工具,观察表4.4所示信号。在图4.15框出的部分展示了我们128位数据,在FIFO中一次读16位读取8次的操作过程。表4.4算法移植过程中的部分信号信号名称描述block送入的明文数据new_block每次迭代输出的128位数据DATA_TURE根据ready信号使能取出当前128位加密完成后的数据new_block128位密文fifo_out_r将128位数据转化成16位数据,并从FIFO端输出next_n使能拉高时,表示当前加密完成,可送入新的待明文ready本次加密结束,下一次加密的开始信号图4.15加密过程算法移植发送端数据帧设计光纤传输的传输方式分为流传输和帧传输,而流传输由于其不可靠性,以及不适合控制和定制的特点,我们选择了帧传输,如图4.15为普通的光纤通信帧传输。加密数据为128位位宽数据,而光纤中每次传输16位位宽数据,故八次传输周期传输一个128位的加密数据。如果采用普通的数据流传输的话,一旦中间有丢包,后续所有的数据将会因为错位导致解码错误,这在我们加密通信中是绝不允许的。为了解决该问题,我们针对AES算法定制了一种简易帧结构,如图4.16所示。我们将每一个128位加密数据作为一次传输的帧结构,而每次的前16位作为该帧结构的帧头,接收端通过检测特定脉宽的帧头作为起始数据帧信号,这样做可以保证在某一次传输中即使丢包,不影响后续数据实时解密操作。图4.15普通的光纤通信帧传输图4.16定制后的光纤通信帧传输我们在该项目的测试中,测试向量为上述四个128位加密数据循环发送。我们在原来的帧结构的基础上,又封装了一层光纤链路自带的帧结构,以四个128位数据为光纤传输的一个大帧结构。保证了链路传输的可靠性。图4.16中的tx_d_i信号为我们发送到链路中的数据信号,以b6ed为例,该16位数据为加密后的3号测试向量起始16位数据,后面紧跟7个剩余的16位数据,组成一个完整的128位加密数据。通过我们的帧定制操作,极大的提高了我们加密传输的可靠性。接收端数据帧数据恢复接收端对帧数据进行恢复,并去除定制的帧头帧尾。如图4.17所示,我们将光纤接收端接收到的数据(rx_d_i)接收下来,并将其进行16位转128位操作,输出数据为fifo_out_rx,我们对比测试向量的数据发现,证明在光纤接收端数据的正确性,并成功解码。图4.17:光纤接收端帧恢复自动协商功能验证此处主要验证GMII-光纤模式下的自协商过程以及数据收发过程是否正确。该功能的验证我们通过verdi工具进行仿真测试。操作模式及双工方式分别在芯片硬件配置中的HWCFG_MODE[3:0]和ANEG[3:0]中进行配置。该测试用例的硬件配置详情如下。将寄存器的自动协商使能打开,在硬件配置模式中选择GMII光纤接口。并等待芯片上电复位完成。等待40ms时间后(光纤自协商链路连接成功需要39.3ms),发送数据包,仿真完成后查看相关波形及log文件信息,具体仿真结果如图4.18所示。由以下波形可看出,复位后需要39.3ms芯片linkup,协商完成后观察reg17的值为bc10,根据手册相关信息,该芯片目前工作在1000Mbps且工作在全双工模式下。图4.18光纤自动协商过程在链路Linkup过程中,协商过程发送/C/码流,/C1/和/C2/有序集交替发送,即/K28.5/D21.5/R1/R2/和/K28.5/D2.2/R1/R2交替发送。如图4.19所示为发送协商过程/C/码流的波形,/bc/42/即C2、/bc/b5/即C1(10Bit数据同理),但刚开始的config_Reg的内容为0,也就是此时并未发送有效的/C/码,大约复位后经过13ms开始发送有效的/C/码。图4.19协商过程发送/C/码流在数据传输过程中,协商后工作在全双工模式下,双向同时收发数据。图4.20为dut1_to_d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论