位置:51电子网 » 技术资料 » 通信网络

多规格S盒的硬件实现方法

发布时间:2007/4/23 0:00:00 访问次数:623


 
引言

在信息领域中,密码算法用于保护信息的保密性、完整性和安全性,简单地说就是防止信息的伪造与窃取。密码算法可分为对称密码算法和非对称密码算法。对称密码算法的特点是速度快、安全强度高,主要用作数据加密算法。对称密码算法根据加密模式又可分为分组密码算法和序列密码算法。分组密码算法目前在商业领域使用较多,广泛应用于信息的保密传输和加密存储。S盒是大多数分组密码算法中唯一的非线性结构,它的密码强度直接决定了密码算法的好坏。

本文介绍用硬件实现的两种规格的S盒变换,它能实现8×8和6×4两种规格S盒的任意布尔函数变化。文中最后给出了电路仿真结果及其电路规模和延时估计。S盒的设计原理

S盒的功能就是一种简单的“代替”操作。一个n输入、m输出的S盒所实现的功能是从二元域F2上的n维向量空间F2n到二元域F2上的m维向量空间F2m的映射:F2n——>F2m,该映射被称为S盒代替函数。构造S盒常用的方法有如下3种:随机选择、人为构造和数学方法构造。为保证S盒的密码强度,S盒应越大越好。一般来讲,n和m越大,随机性越好,S盒的密码强度就越大。但n和m越大,S盒的规模和可控编码的宽度也就越大。S盒的随机性可以通过可控编码来实现,通过改变可控编码,一个n×m的S盒能够实现:F2n——>F2m的所有的代替函数。
输入为
740)this.width=740" border=undefined>
的n×m S盒布尔函数的通式为
740)this.width=740" border=undefined>
其中,系数ci∈{0,1},
740)this.width=740" border=undefined>
通项记为
740)this.width=740" border=undefined>

740)this.width=740" border=undefined>
从式中可以看出,输入数据后,pi(x)作为最小项就确定下来了,对输出f(x)产生影响的只有最小项系数ci,通过改变ci就可以使S盒实现任意布尔函数的变换。
S盒的硬件实现方法

S盒代替变换实际上就是一组布尔逻辑函数,S盒的输入X就是布尔逻辑函数的自变量,S盒的输出f(x)就是函数值。不同的加/解密算法所使用的S盒代替变换是不同的,为了S盒能够支持不同的加/解密算法,必须能够通过编程改变S盒模块实现的函数关系。在电路规模允许的条件下,应该使S盒模块实现的函数个数尽可能多,最好能够实现输入变量任意的布尔函数。下面给出一个n输入m输出的可编程S盒的设计方法,该S盒能够实现n个输入变量的任意布尔函数。

设x1,x2,…,xn是n个布尔变量,f1(x1,x2,…,xn)、f2(x1,x2,…,xn)、…、fm(x1,x2,…,xn)是x1,x2,…,xn的m个布尔函数,则f1(x1,x2,…,xn)、f2(x1,x2,…,xn)、…、fm(x1,x2,…,xn)都可以表示为下列最小项之和的形式:
740)this.width=740" border=undefined>
其中,740)this.width=740" border=undefined>是n个变量的2n个最小项,kij∈{0,1},i=1,2,…,m,j=1,2,…2n。

对于任意的布尔函数fi(x1,x2,…,xn)(1≤i≤m),其2n个最小项(n项之积)是固定不变的,其表达式的结构(2n项之和)也是不变的,其函数关系的改变完全依赖于最小项系数(即控制编码)ki=(ki1,ki2,…ki2n)(1≤i≤m)的改变。因此,在设计逻辑电路时,应该把“n项之积”和“2n项之和”作为固定的电路结构,而把控制编码所对应的电路结构作为可变结构。通过给ki=(ki1,ki2,…ki2n)(1≤i≤m)赋以不同的值,就可以实现不同的布尔逻辑函数。该子模块的电路图如图1所示。

对每个fi(x1,x2,…,xn)(1≤i≤m),通过改变控制编码能够实现n个变量的全部(共22n个)布尔逻辑函数,因此上述电路能够实现任意的n输入、m输出的函数:f(x1,x2,…,xn)=(f1(x1,x2,…,xn),f2(x1,x2,…,xn),…fm(x1,x2,…,xn)),其个数为2m2n。

当取n=8、m=8,上述电路就能实现1组8×8的S盒代替变换。通过电路设计,这套电路资源可以兼容4组6×4 的S盒代替变换。
电路功能描述与VHDL实现

功能描述

本文用VHDL硬件描述语言在ModelSim上实现了1组8×8的S盒,并在MAXPLUSII上通过了功能仿真。

S盒的外观电路如图2所示。X是输入,OP是功能选择输入,K0、K1、K2、K3、K4、K5、K6、K7是控制编码,Y是输出。当OP=1时,电路实现1组8×8的S盒;当OP=0时,电路能同时实现4组6×4的S盒。通过改变控制编码K1、K2……K7,S盒就可以实现8×8、6×4规格的任意布尔函数的变化,实现不同算法中要求不同的S盒功能。用表格说明更能清晰地看出它的功能和实现方式,如表1所示。

VHDL实现方法

S盒电路是一个组合电路, 1组8×8的S盒有256个最小项,而1组6×4的S盒有64个最小项,因此1组8×8 S盒的资源可以实现4组6×4的S盒,这就是设计中的资源复用,即一套资源实现多种规格的S盒功能。上面给出了具体的电路实现单元,如图3所示。

在电路实现中,共分为4组,1组有64个最小项,由64个相同的电路单

 
引言

在信息领域中,密码算法用于保护信息的保密性、完整性和安全性,简单地说就是防止信息的伪造与窃取。密码算法可分为对称密码算法和非对称密码算法。对称密码算法的特点是速度快、安全强度高,主要用作数据加密算法。对称密码算法根据加密模式又可分为分组密码算法和序列密码算法。分组密码算法目前在商业领域使用较多,广泛应用于信息的保密传输和加密存储。S盒是大多数分组密码算法中唯一的非线性结构,它的密码强度直接决定了密码算法的好坏。

本文介绍用硬件实现的两种规格的S盒变换,它能实现8×8和6×4两种规格S盒的任意布尔函数变化。文中最后给出了电路仿真结果及其电路规模和延时估计。S盒的设计原理

S盒的功能就是一种简单的“代替”操作。一个n输入、m输出的S盒所实现的功能是从二元域F2上的n维向量空间F2n到二元域F2上的m维向量空间F2m的映射:F2n——>F2m,该映射被称为S盒代替函数。构造S盒常用的方法有如下3种:随机选择、人为构造和数学方法构造。为保证S盒的密码强度,S盒应越大越好。一般来讲,n和m越大,随机性越好,S盒的密码强度就越大。但n和m越大,S盒的规模和可控编码的宽度也就越大。S盒的随机性可以通过可控编码来实现,通过改变可控编码,一个n×m的S盒能够实现:F2n——>F2m的所有的代替函数。
输入为
740)this.width=740" border=undefined>
的n×m S盒布尔函数的通式为
740)this.width=740" border=undefined>
其中,系数ci∈{0,1},
740)this.width=740" border=undefined>
通项记为
740)this.width=740" border=undefined>

740)this.width=740" border=undefined>
从式中可以看出,输入数据后,pi(x)作为最小项就确定下来了,对输出f(x)产生影响的只有最小项系数ci,通过改变ci就可以使S盒实现任意布尔函数的变换。
S盒的硬件实现方法

S盒代替变换实际上就是一组布尔逻辑函数,S盒的输入X就是布尔逻辑函数的自变量,S盒的输出f(x)就是函数值。不同的加/解密算法所使用的S盒代替变换是不同的,为了S盒能够支持不同的加/解密算法,必须能够通过编程改变S盒模块实现的函数关系。在电路规模允许的条件下,应该使S盒模块实现的函数个数尽可能多,最好能够实现输入变量任意的布尔函数。下面给出一个n输入m输出的可编程S盒的设计方法,该S盒能够实现n个输入变量的任意布尔函数。

设x1,x2,…,xn是n个布尔变量,f1(x1,x2,…,xn)、f2(x1,x2,…,xn)、…、fm(x1,x2,…,xn)是x1,x2,…,xn的m个布尔函数,则f1(x1,x2,…,xn)、f2(x1,x2,…,xn)、…、fm(x1,x2,…,xn)都可以表示为下列最小项之和的形式:
740)this.width=740" border=undefined>
其中,740)this.width=740" border=undefined>是n个变量的2n个最小项,kij∈{0,1},i=1,2,…,m,j=1,2,…2n。

对于任意的布尔函数fi(x1,x2,…,xn)(1≤i≤m),其2n个最小项(n项之积)是固定不变的,其表达式的结构(2n项之和)也是不变的,其函数关系的改变完全依赖于最小项系数(即控制编码)ki=(ki1,ki2,…ki2n)(1≤i≤m)的改变。因此,在设计逻辑电路时,应该把“n项之积”和“2n项之和”作为固定的电路结构,而把控制编码所对应的电路结构作为可变结构。通过给ki=(ki1,ki2,…ki2n)(1≤i≤m)赋以不同的值,就可以实现不同的布尔逻辑函数。该子模块的电路图如图1所示。

对每个fi(x1,x2,…,xn)(1≤i≤m),通过改变控制编码能够实现n个变量的全部(共22n个)布尔逻辑函数,因此上述电路能够实现任意的n输入、m输出的函数:f(x1,x2,…,xn)=(f1(x1,x2,…,xn),f2(x1,x2,…,xn),…fm(x1,x2,…,xn)),其个数为2m2n。

当取n=8、m=8,上述电路就能实现1组8×8的S盒代替变换。通过电路设计,这套电路资源可以兼容4组6×4 的S盒代替变换。
电路功能描述与VHDL实现

功能描述

本文用VHDL硬件描述语言在ModelSim上实现了1组8×8的S盒,并在MAXPLUSII上通过了功能仿真。

S盒的外观电路如图2所示。X是输入,OP是功能选择输入,K0、K1、K2、K3、K4、K5、K6、K7是控制编码,Y是输出。当OP=1时,电路实现1组8×8的S盒;当OP=0时,电路能同时实现4组6×4的S盒。通过改变控制编码K1、K2……K7,S盒就可以实现8×8、6×4规格的任意布尔函数的变化,实现不同算法中要求不同的S盒功能。用表格说明更能清晰地看出它的功能和实现方式,如表1所示。

VHDL实现方法

S盒电路是一个组合电路, 1组8×8的S盒有256个最小项,而1组6×4的S盒有64个最小项,因此1组8×8 S盒的资源可以实现4组6×4的S盒,这就是设计中的资源复用,即一套资源实现多种规格的S盒功能。上面给出了具体的电路实现单元,如图3所示。

在电路实现中,共分为4组,1组有64个最小项,由64个相同的电路单
相关IC型号

Warning: Undefined variable $stockkeys in G:\website_51dzw\www.51dzw.com\code\tech\view.php on line 152

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式