一种基于FPGA的光纤加密方法

文档序号:25614243发布日期:2021-06-25 15:43阅读:548来源:国知局
一种基于FPGA的光纤加密方法
一种基于fpga的光纤加密方法
技术领域
1.本发明涉及一种加密方法,尤其涉及一种基于fpga的光纤加密方法。


背景技术:

2.光纤通信因其具有低损耗,高抗干扰性,从而广泛得到应用。随着对带宽,速率等要求日益增加,高速通信已经成为基本的要求。传统的光通信系统在于保证传输带宽和吞吐量而并未考虑到对信息安全的保护。近几年由于大量用户数据的泄露,造成了极大的损失,使得信息安全成为人们关注的焦点。
3.目前光纤加密的研究多采用量子加密的方法,目前国内外在实际工程上存在很多漏洞,无法做到光纤通信中的绝对安全,实现军用和民用任重道远。华为传输加密解决方案,采用l1层加密技术,对业务层透明,采用高强度的aes256算法,确保各行业的数据安全性。此方案虽然实现简单,但缺点是吞吐量小、端口少、速率低。解放军理工大学的吕游等人研究高级加密标准aes算法的设计原理,其加密模块的最大吞吐率可达到1.326gbits/s。埃及开罗德国大学的mazen ei maraghi,salma hesham等人研究速度与面积优化的aes算法的fpga实现,加密速度为1.33gbits/s。
4.申请人在《基于fpga的aes256光纤加密》竞赛项目中用fpga硬件实现光纤加密,达到5gbps的传输速率。但该项目中采用单一的aes加密,已经有被攻破的实例,而且在帧结构的设计上不完善,数据易丢失,存在全隐患。


技术实现要素:

5.发明目的:本发明旨在解决现有技术的上述不足,提供一种基于fpga的光纤加密方法,解决数据传输速率慢、数据丢失和被攻破的问题。
6.技术方案:本发明所述的基于fpga的光纤加密方法,包括以下步骤:
7.(1)获取明文pt;
8.(2)获得具logistic模型的fpe加密模式的密钥kt;
9.(3)利用密钥kt加密明文pt,获得密文c;
10.(4)流水线加速密文c;
11.(5)转换密文c数据的位宽;
12.(6)采用aurora协议定制的帧结构发送数据;
13.(7)接收端缓存接受的数据并剥离帧结构;
14.(8)接收端解码密文c,获得明文pt。
15.步骤(2)包括以下步骤:
16.(21)获得长度为n的混沌序列x字符串;
17.(22)获得aes加密算法的字节字符串密钥值kt;
18.(23)令v=n

u,u为不小于n/2的最小整数,v为整数;
19.(24)将混沌序列x字符串分配u位和(n

u)位分别给a0和b0,a0=x[1..u],b0=x[u+1..n];
[0020]
(25)拆分feistel结构中的调整因子t为t
l
和t
r
,其中,t
l
=t[0..31],t
r
=t[32..63];
[0021]
(26)获得密钥kt。
[0022]
步骤(21)采用logistic模型获得混沌序列,迭代方程为x
k+1
=ux
k
(1

x
k
),其中,u常数,x
k+1
表示第k+1次迭代循环的值,x
k
表示第k次迭代循环的值,迭代方程的最后输出为混沌序列x字符串。
[0023]
4、根据权利要求2所述的基于fpga的光纤加密方法,其特征在于:步骤(26)中,i表示循环次数,i的初始值为零,包括以下步骤:
[0024]
(261)如果i为偶数,则令m=u,w=t
r
,如果i为奇数,则m=v,w=t
l
,0≤i≤7;
[0025]
(262)获得字节字符串p
i
,其中,rev(b
i
)将字符串b
i
以相反的顺序输出,rev(b
i
)字符串的每一位标记序号,记为0,1,2...len(b
i
),len(b
i
)为最大序号值,num
radix
(rev(b
i
))输出值为rev(b
i
)[j]*radix
j
‑1累加之和,radix为进制数,0≤j≤len(b
i
);
[0026]
(263)获得字符串s
i
,s
i
=revb(ciph
revb(k)
revb(p
i
)),其中,revb(p
i
)将字节字符串p
i
以相反的顺序输出,revb(k)将字节字符串密钥值k以相反的顺序输出,ciph为ciph操作;
[0027]
(264)获得中间变量y
i
,y
i
=num(s
i
),其中,num()为num
radix
()函数在radix为2进制数的情况;
[0028]
(265)获得中间变量c
i
,c
i
=(num
radix
(rev(a
i
))+y
i
)mod(radix
m
),其中,mod()为模运算;
[0029]
(266)获得传递变量cr
i
,其中将c
i
以radix进制输出;
[0030]
(267)令a
i+1
=b
i
,令b
i+1
=cr
i

[0031]
(268)令i=i+1,若i<8则执行步骤(261),若i≥8则执行步骤(269);
[0032]
(269)获得kt=a7||b7。
[0033]
步骤(3)中包括以下步骤:
[0034]
(31)获得密文c的第q个分组c
q
,q=0,1,...,n

2,其中n为c的分组数,c
q
=(pt
q
+kt
q
)modr,其中kt
q
为密钥kt的第q个分组,pt
q
为明文pt第q个分组,r为c
q
的字符串最大允许字符数;
[0035]
(32)获得密文c第n

1个分组c
n
‑1,c
n
‑1=(pt
n
‑1+msb(kt
n
‑1))mod r,其中,msb(kt
n
‑1)为密钥kt第n

1个分组的最高有效符号,p
n
‑1为明文p第n

1个分组。
[0036]
步骤(4)中,流水线加速的方法为同时并行运算e个加密模块,错位f/e个时钟周期输出加密算法结果,其中f为加密一次需要的时钟周期数,e由硬件资源确定的常数。
[0037]
步骤(5)中,密文c数据的位宽由128位输入数据转换成16位输出数据,并采用流水线操作。
[0038]
步骤(6)中,定制的帧结构包括子帧和二次帧,所述子帧包括相位控制码元、位置控制码元、16位加密数据和位置控制码元;所述二次帧包括二次帧控制码元、子帧1至子帧
8、校验控制符和重传机制控制。
[0039]
有益效果:与现有技术相比,本发明的显著优点为有效地保证通信的链路安全性,避免通信数据被破译和窃听;整体的通信速率可达6.25gpbs。
附图说明
[0040]
图1本发明的系统结构图;
[0041]
图2本发明密钥生成流程图;
[0042]
图3本发明加密设计框图;
[0043]
图4本发明子帧和二次帧结构图;
[0044]
图5本发明加密原理图;
[0045]
图6本发明解密原理图;
[0046]
图7本发明迭代200次生成的混沌序列x字符串图;
[0047]
图8本发明改变不同的u值产生的模型仿真图;
[0048]
图9(a)

图9(b)本发明不同参数值时产生的混沌序列的差值变化如图;
[0049]
图10本发明aes256加密的仿真过程图;
[0050]
图11本发明加密效率提高15倍仿真图。
具体实施方式
[0051]
下面结合附图对本发明的技术方案作进一步说明。
[0052]
由图1和图3可知,本发明所述的基于fpga的光纤加密方法,包括以下步骤:
[0053]
(1)获取明文pt;
[0054]
(2)获得具logistic模型的fpe加密模式的密钥kt;
[0055]
(3)利用密钥kt加密明文pt,获得密文c;
[0056]
(4)流水线加速密文c;
[0057]
(5)转换密文c数据的位宽;
[0058]
(6)采用aurora协议定制的帧结构发送数据;
[0059]
(7)接收端缓存接受的数据并剥离帧结构;
[0060]
(8)接收端解码密文c,获得明文pt。
[0061]
由图2可知,本发明步骤(2)采用采用feistel结构,各轮的索引数为0到7。包括以下步骤:
[0062]
(21)获得长度为n的混沌序列x字符串;
[0063]
步骤(21)采用采用logistic模型获得混沌序列,其迭代方程为:x
k+1
=ux
k
(1

x
k
),其中u常数,x
k+1
表示第k+1次迭代循环的值,x
k
表示第k次迭代循环的值,迭代方程的最后输出为混沌序列x字符串。
[0064]
(22)获得aes加密算法的字节字符串密钥值k;
[0065]
(23)令v=n

u,其中,u为不小于n/2的最小整数,v为整数;
[0066]
(24)将混沌序列x字符串分配u位和(n

u)位分别给a0和b0,a0=x[1..u],b0=x[u+1..n];
[0067]
(25)拆分feistel结构中的调整因子t为t
l
和t
r
,其中,t
l
=t[0..31],t
r
=t[32..63];
[0068]
(26)获得密钥kt。
[0069]
由图5可知,步骤(26)中i表示循环次数,i的初始值为零,包括以下步骤:
[0070]
(261)如果i为偶数,则令m=u,w=t
r
,如果i为奇数,则m=v,w=t
l
,0≤i≤7;
[0071]
(262)获得字节字符串p
i
,其中,rev(b
i
)将字符串b
i
以相反的顺序输出,rev(b
i
)字符串的每一位标记序号,记为0,1,2...len(b
i
),len(b
i
)为最大序号值,num
radix
(rev(b
i
))输出值为rev(b
i
)[j]*radix
j
‑1累加之和,radix为进制数,0≤j≤len(b
i
);例如rev(12345)=54321,num5(00011010)=755,运算过程为1*51+1*53+1*54;
[0072]
(263)获得字符串s
i
,s
i
=revb(ciph
revb(k)
revb(p
i
)),其中,revb(p
i
)将字节字符串p
i
以相反的顺序输出,revb(k)将字节字符串密钥值k以相反的顺序输出,ciph为ciph操作;例如revb([1]||[2]||[3])=[3]||[2]||[1];
[0073]
(264)获得中间变量y
i
,y
i
=num(s
i
),其中,num()为num
radix
()函数在radix为2进制数的情况;
[0074]
(265)获得中间变量c
i
,c
i
=(num
radix
(rev(a
i
))+y
i
)mod(radix
m
),其中,mod()为模运算;
[0075]
(266)获得传递变量cr
i
,其中将c
i
以radix进制输出;例如
[0076]
(267)令a
i+1
=b
i
,令b
i+1
=cr
i

[0077]
(268)令i=i+1,若i<8则执行步骤(261),若i≥8则执行步骤(269);
[0078]
(269)获得kt=a7||b7。
[0079]
步骤(3)中包括以下步骤:
[0080]
(31)获得密文c的第q个分组c
q
,q=0,1,...,n,其中n为c的分组数,c
q
=(pt
q
+kt
q
)mod r,其中pt
q
为明文pt第q个分组;kt
q
为明文kt第q个分组;r为c
q
的字符串最大允许字符数;
[0081]
(32)获得密文c第n

1个分组c
n
‑1,c
n
‑1=(pt
n
‑1+msb(kt
n
‑1))mod r,其中,msb(kt
n
‑1)为密钥kt第n

1个分组的最高有效符号,p
n
‑1为明文p第n

1个分组。
[0082]
步骤(4)中,流水线加速的方法为同时并行运算e个加密模块,错位f/e个时钟周期输出加密算法结果,其中f为加密一次需要的时钟周期数,e由硬件资源确定的常数。
[0083]
步骤(5)中,密文c数据的位宽由128位输入数据转换成16位输出数据,并采用流水线操作。
[0084]
步骤(7)中,定制的帧结构包括子帧和二次帧结构,所述子帧包括相位控制码元、位置控制码元、16位加密数据;所述二次帧结构包括二次帧控制码元、子帧1至子帧8、校验控制符和重传机制控制。定制后的光纤通信部分帧结构传输如图4所示。
[0085]
由图6可知,步骤(8)接收端对加密数据解码及恢复原始序列。具体步骤如下:
[0086]
(81)令v=n

u;
[0087]
(82)at=c[1..u],bt=c[u+1..n];
[0088]
(83)令t
l
=t[0..31],t
r
=t[32..63];
[0089]
(84)令h=7;
[0090]
(841)h为偶数,则令m=u和w=t
r
,否则m=v和w=t
l

[0091]
(842)令
[0092]
(843)令st=revb(ciph
revb(k)
revb(pr));
[0093]
(844)令yt=num(st);
[0094]
(845)令ct=(num
radix
(rev(b))

yt)mod(radix
m
);
[0095]
(846)令
[0096]
(847)令bt=at;
[0097]
(848)令at=ct;
[0098]
(849)令h=h

1,如果h<0,则执行步骤(85),否则执行(841)。
[0099]
(85)kt=at0||bt0;
[0100]
(86)将kt分成n+1分组,pt
d
=(c
d

kt
d
)mod r,其中c
d
为c的第d个分组,d=0,1,...,n;pt
d
为明文pt第d个分组;kt
d
为明文kt第d个分组;r为pt
d
的字符串最大允许字符数;
[0101]
(87)将n+1个pt
d
分组按序拼接后组成明文pt。
[0102]
本实施例中,获取明文pt=128’h6bc1 bee2 2e40 9f96 e93d 7e11 7393 172a,因其迭代方程为:x
k+1
=u
·
x
k
(1

x
k
),设置u=4,数据为16进制,迭代方程两边同时乘以2的31次方,即ffff。当x0为32’ha1cac083,选取其中的8组迭代的结果进行拼接组合成256位混沌序列x,x=256'h603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4。
[0103]
将x作为本发明aes加密算法的字节字符串密钥值k。pt和k经过fpe算法后得到kt=128'hb6ed21b99ca6f4f9f153e7b1beafed1d。将pt和kt进行分组,p0=16’h6bc1,p1=16’hbee2,p2=16’h2e40,p3=16’h9f96,p4=16’he93d,p5=16’h7e11,p6=16’h7393,p7=16’h172a,kt0=16’hb6ed,kt1=16’hb6ed,kt2=16’h21b9,kt3=16’h9ca6,kt4=16’hf4f9,kt5=16’he7b1,kt6=16’hbeaf,kt7=16’hed1d。c
q
=(p
q
+kt
q
)mod 2
16
,mod 16’hffff,防止溢出,保证数据格式完整性,c0=(p0+kt0)mod 2
16
,c0=(6bc1+b6ed)mod 2
16
=22af。
[0104]
流水线加速密文。每个c
q
为16位数据,8个16位分组组成一次加密的完整数据。每个分组c
q
组成子帧的数据部分,子帧1=k28.5+序号(0)+16位数据,其中k28.5表示通信中的相位校正码元。该例中子帧1数据为10111100’000’0010001010101111。其中k28.5=8’b1011100;序号(0)=3’b000;c0=22af=16’b0010001010101111。二次帧结构数据=二次帧序号+子帧1至子帧8+crc校验+重传机制控制。其中重传机制控制目的是选择是否开启数据流反馈给发送端重传某个帧。
[0105]
本实施例中在jupyter notebook ide中用python调用matlab库设计logistic模型,u=4时,迭代200次生成的混沌序列x字符串如图7所示。当字符串x的初值x0=0.5时,改变不同的u值产生的模型仿真图8所述。通过观察当u的取值在3.8~4.0左右时模型进入混沌现象。设置字符串x的初值x0=0.631999999983,u=3.899999999906和字符串x的初值x0
=0.631999999284,u=3.899999999906两者产生的混沌序列的差值变化如图9(a),设置初值x0=0.631999999983,u=3.899999999906和x0=0.631999999983,u=3.899999999208两者产生的混沌序列的差值变化如图9(b)。可以看出设置字符串x的初值仅仅只是相差e

10,最后产生的混沌序列相差很大。说明该模型对初值的设置比较敏感。
[0106]
由仿真结果可知,使用logistic模型可以很好的保证aes密钥数据的安全性。将算法移植到fpga平台,包括每次迭代循环的计算模块。为了避免模块的输出直接又作为输入引起实现违规,将每次的输出信号引出,在另一个模块里缓存。等待计算模块计算完成时,将上一次的计算结果作为新的数据作为计算模块的输入。
[0107]
本实施例中ciph操作为使用字节字符串密钥值k,通过fpga工具实现aes256加密算法,对revb(p)进行运算后输出128位数据并进行字节翻转操作revb,记为s。aes256算法加密过程包括14轮迭代,每轮迭代的组合逻辑模块包括addroundkey,subbytes与shiftrows,mixcolumns,keyexpansion。前面在每轮迭代之间引入了流水线,但单次轮迭代内部中仍有3个组合逻辑模块,为了降低延迟,所以在轮迭代内部引入流水线结构提升加密速度。图10是aes256加密的仿真过程。本实施例中使用15个加密模块,分别错开一个周期进行同时加密。即轮迭代内部引入流水线结构提升加密速度。如图11中的箭头所示,每个加密模块完成加密后,将加密数据送至寄存器缓存,使得加密效率提高了15倍。
[0108]
由图4可知,本实施例中,在步骤(6)中对通信链路协议进行选择和定制。协议采用xilinx轻量级的aurora链路协议,并对在帧结构上做了嵌套保护措施。使其适合加密数据的传输。目前针对光纤发送端进行特定的帧结构定制,在头部字节段浪费了较多的资源,头部16位加密数据的校验脉宽较大,且该方法对每帧加密数据的位置及相位偏移均无反馈机制,无法做到高效高有效性传输。针对该问题,本发明在帧结构上做了嵌套保护措施。即子帧和二次帧结构。子帧保证每次迭代循环加密的16位数据的相位及数据的可靠性,子帧中的相位控制单元是通过特殊的有序集码组,在光纤传输过程中在线路编码技术的转化下,会提供了有效的错误检测机制,可以纠正相位错位的情景,位置控制单元可以便于识别目前子帧在整个数据流的位置;二次帧结构通过整合子帧,可以保障一次完整的加密数据的连续和完整性,若校验出错同时可通过接收端通过axi

lite的形式反馈回发送端,以实现相关重传机制。该方案较传统的比特率信号传输有明显的不同。由于加密数据的信号必须保证每一帧的每一位置的数据和相位的绝对正确,较tcp/ip或传统的axi

stream结构在线路编码的角度有明显的优势。
[0109]
本发明在加密层面,设计完成后分析加密效果,采用频数检验、序列检验、扑克检验、自相关检验、游程检验等随机性测试,得到了较好的结果。同时测量了香农熵(se)。在某些情况下,se符合预期甚至是理想值,根据香农熵公其中对于链路上8b/10b数据流映射在0和r

1之间,将其分为n个符号组,符号组我们称为β
n
。通过计算得出理想情况我们的se=log2267=8.0606。但是,随着传输速率降低,se值也会降低。因为当使用低带宽的传输时,充满idles的ifg占用的带宽百分比要大于所传输帧中的有效数据载荷。通过分析可得,该方式加密产生了难以区分的数据流量,从而有效的防止了窃听者获取数据内容。
[0110]
本发明在通信层面,单次加密模块引入的数据延时为192ns,通过流水线加速设计
后,加密数据延时为12ns,实现了吞吐量满足设计需求。链路及信号分析方面,在vivado生成ibert测试工具,对sfp+光口实际发出的数据进行测速和信号完整性分析。观察到该链路的实际速率为6.25gbps,对应于该连续帧传输速率完全满足我们的设计需求;通过观察眼图可以发现,角度张开合理,误码率仅为2.1e

11,远低于官方规定的误码率1.e

10标准,信号完整性分析良好,信号质量传输可靠。
[0111]
本发明具有很高的实用价值,在保密通信领域,视频安防监控领域,军用或民用视频/音频传输领域,都有极强的应用场景。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1