密码算法(精选8篇)
密码算法 篇1
随着计算机网络的发展,网络通信信息安全越来越受到人们的关注。同时,作为保护信息安全重要手段的密码技术得到广泛应用,如:数据加密,数字签名,身份验证,信息鉴别,秘密分享等[1,2,3,4]。然而各种密码机制都存在着一些缺陷,例如:古典密码算法简单,但容易破解;现代密码包括RSA和3DES等具有很高的安全性,但加解密处理的效率较低;目前许多基于一次一密方案的随机密码算法存在密钥分配和信息同步的问题。由于这些自身的缺陷,使得密码技术受到了黑客们特别是密码破译者的挑战。
本文采纳各类密码算法的长处,摒弃它们各自的缺点,设计了一个基于多种简单运算、安全性高、加解密处理效率高的随机密码算法,相对有效地解决了当前各种密码算法存在的问题。
1 密码理念和设计方案
1.1 密码理念
密码技术可以保证信息的机密性、完整性和责任性。所有密码算法的加密目标都在于,“即使未经授权的人获得加密的信息并知道用来加密它的算法,要想获得对信息的访问也会非常困难。”[5]。
密码体制的实用性应该从以下两点考虑:
1)加解密算法的通用性和处理效率。
2)“体制的安全性只依赖于密钥的保密”[6],而不在于算法的保密。
1.2 设计方案
基于以上的密码理念,本文着重从加解密算法的安全性、通用性、经济指标及其处理效率出发,结合目前各种强有力的密码分析技术如差分密码分析、(非)线性密码分析和基于统计特性的密码分析等,同时吸取多种经典密码算法的优点,设计出一种不同于其他随机密码技术的基于一次一密的密码算法。
1)为了保证算法的安全性,即能够抵抗各种密码分析,应该使密文尽可能地复杂化,这里乘积密码技术(即以某种方式连续执行两个或多个密码,以使得所得到的最后结果或乘积从密码编码的角度比其任意一个组成密码都更强)是一个很好的典型。
2)密码算法的经济指标和处理效率需要从算法的计算量、加解密的速度、软硬件实现条件等方面去考虑。
3)算法的通用性侧重于算法的表达能力。
2 密码算法的描述
2.1 基本概念和符号约定
1)余数用S表示;除数用D表示;乘数用M表示。
2)密钥K由四个子密钥组成,即k1k2k3k4,而且顺序不能改变。其中,k4是余数S;k3表示除数D或乘数M;k2是表示换位方式的函数T(l1,l2)或R(l1,l2,---,lm),这里T(l1,l2)表示把某字符串中的l1和l2位置所指向的字符进行交换,R(l1,l2,---,lm)表示把某字符串中的l1,l2,---,lm各个位置所指向的字符进行循环交换,即l1=l2,l2=l3,---,lm=l1,其中l1,l2,---,lm大小可以随机排列,以增大破译的难度。k1是用来表示与余数S进行异或运算的各子串的起始位置的定位函数I(li,lj,---,lx)。
2.2 加密过程
1)假设明文P=p1p2---pn,把它表示为ASCII码值。先随机选择一个数作为余数S,即k4。为了使密文具有较高的保密性,S位数一般在4位以上且各位数尽量相异。然后根据n的大小来选择第一次加密采用除法还是乘法运算,除数D和乘数M的位数根据明文的长度来合理选择。具体实现过程如下:
#define N 30//N值可以根据具体情况来设定
这样产生了第一次密文C。
2)从C中随机选择需要换位的位置以及换位方式,通过换位产生第二次密文C’。可用C语言表示如下:
l1,l2,---,lm散布范围尽量大些且相邻位置所指向的数字要相异,这样才能有效地保证密文的安全性。
3)在C’中随机选择一些子串的起始位置,产生k1=I(li,lj,---,lx),li,lj,---,lx散布范围也应该尽量大些,并按从左到右的顺序依次与余数S进行异或运算,则C’转化为C’’,C’’为待发送的密文。C’’要用十六进制表示,这是因为异或运算的结果若仍用ASCII码表示就可能出现溢位,这样会使接收方无法正确解密。
同时产生密钥K=k1k2k3k4,为了减少密钥长度,可以简化K的格式,即省略k1,k2,k4的首字母和双括号,但为了接收方能够正确判断第一次密文C进行的是何种运算,k3的首字母不可省略,不过可以省略其双括号。同时在子密钥间用分号隔开。即:K=li,lj,---,lx;l1,l2(,---,lm);D(M);S。
最后把密钥K通过安全信道发送给接收方,并将密文C’’通过普通信道发送到接收方。
2.3 解密过程
接收方收到发送方传送过来的密钥K和密文C’’后,使用K按照与加密完全相反的运算顺序对密文进行解密。
1)首先利用k1=I(li,lj,---,lx)按从右到左的顺序与k4进行异或运算,产生C’。值得注意的是,由于各子串间可能部分重叠(其实这种情况会增大了破译密码的难度),因此必须按与加密时相反的运算次序进行异或运算,以保证C’’准确无误地转化成C’。
2)然后根据k2=T(l1,l2)或R(l1,l2,---,lm)将C’中各位还原到原来的位置,得到C。
3)最后依据k3的首字母,判断原文P进行何种运算,如果采用乘法,则有:
P=(C-S)/M
如果采用除法,则有:
P=(C-S)*D
这样接收方就可以得到明文P,即发送方要表达的信息。
3性能分析
1)与其他的密码算法不同,该算法不是在加密前就事先选定某密码,而是在加密过程中根据合理的方案逐步产生子密钥,从而具有一定的随机性和高安全性。
2)由于该算法只采用了三个非常简单的运算,便于软硬件的实现,因此加解密的处理速度比许多经典的密码算法要快得多。
3)此算法采用了综合三个不同运算的技巧,不但掩盖了语言的统计特性,如在英语中最常用的是字母e,其次是t,a,o,n等,避免了基于语言统计特性的密文分析;而且满足严格的雪崩效应;更重要的是,它给出了对于穷举攻击的高复杂度。例如,在一个待发送密文长度为100位(十六进制)、余数为8位数,除数为6位数、换位位数为5、进行异或运算的子串数为6的信息中,即使密码破译者知道了它们各自的位数和子串数,其穷举攻击的复杂度是非常高的,即约为9*107*9*105*P(100,5)*P(100,6),约为1037。
4 示例验证
假定要加密的信息为:P={PLEASE GO TO THE BANK}。为了方便起见,这里假设的明文长度较短。该明文的ASCII值为:{8076 69 65 83 69 71 79 84 79 84 72 69 66 65 78 75}。
1)令S=5136,因为P长度较短,所以宜采用乘法运算,令M=20。根据C=P*M+S得到C={16 15 33 93 16 73 94 35 96 9596 94 53 93 33 16 26 36}。
2)由于S位数较少,为了加强保密性,宜采用循环交换R(l1,l2,---,lm),令R(6,16,27),即把第6位的3换作5,把第16位的5换作9,把第27位的9换作3,这样得到C’={16 15 35 9316 73 94 39 96 95 96 94 53 33 33 16 26 36}。
3)令I(1,3,23,31),即将100F(1615的十六进制)与3324(5136的十六进制)进行异或运算得到的结果是232B,再将2B23与3324异或得到1807,接着把5E35(9453的十六进制)与3324异或得到6D11,最后把101A(1626的十六进制)与3324异或得到233E。则产生待发送的密文C’’={23 18 07 5D 10 49 5E27 60 5F 60 6D 11 21 21 23 3E 24}。
4)同时生成密钥K=1,3,23,31;6,16,27;M20;5136。发送方把密钥K通过安全信道发送给接收方,并将密文C’’通过普通信道发送到接收方。
5)接收方收到发送方传送来的密钥K和密文C’’后,先利用k1=I(1,3,23,31)和k4,把C’’转化为C’={16 15 35 9316 73 94 39 96 95 96 94 53 33 33 16 26 36}。
6)接着利用k2=R(6,16,27),把C’变换为C={16 15 3393 16 73 94 35 96 95 96 94 53 93 33 16 26 36}。
7)最后利用k3和k4把C还原为明文P={80 76 69 65 8369 71 79 84 79 84 72 69 66 65 78 75},亦即PLEASE GO TO THE BANK。
由于本示例中明文长度很短,因此从密钥长度跟明文长度差不多的角度来看,此算法没能体现出它的优点。然而在现实通信中,信息明文长度一般比较长,此时该算法就体现出其强大的优越性。
5 结束语
本文通过比较分析各类密码技术的优缺点,设计出一个综合性能好的基于三种简单运算的随机密码算法。它有效地防御各种密码分析,具有很高的安全性和较好的实用性。然而该算法也是属于对称密钥密码体制,有它自身的一些缺点,如密钥管理与分配等问题。因此,密钥必须通过安全的信道来传送。
摘要:本文着眼于密码体制的实用性,设计了一个基于四则运算、换位、异或等多种运算的具有一定的随机性的密码算法。它在具有高效率的加解密处理的同时给出了对于穷举攻击的复杂度,保证了算法对各种密码分析的安全性。
关键词:简单运算,随机密码,加解密,密钥,算法
参考文献
[1]袁家政.计算机网络安全与应用技术[M].北京:清华大学出版社,2002.
[2]卢开澄.计算机密码学[M].北京:清华大学出版社,2003.
[3]罗毅.信息安全与密码算法[J].湖北教育学院学报,2006,23,(08):37-39.
[4]戚君贤,周建钦.密码理论算法综述[J].电讯技术,2006,(05):18-22.
[5]Maiwald.E著.马海军,王泽波,等译.网络安全基础教程[M].北京:清华大学出版社,2005.
[6]肖军模,刘军,周海刚,等.网络信息安全[M].北京:机械工业出版社,2006.
密码算法 篇2
关键词:分组密码DES轮算法
随着科学技术的不断进步,计算机网络得到了普及和推广,进而推动通信技术的发展。同时,用户信息的安全性受到严重的冲击和考验,为了确保用户的信息安全,通过借助先进的密码技术对用户信息进行保护。在这种背景下,分组密码凭借速度快,标准化简单,以及软硬件实现容易的优势,进而在信息和网络安全中实现数据加密、数字签名、认证以及管理密钥等,在信息安全领域得到推广和使用,其诞生和发展无论对理论还是实践都具有重要的价值。
1 分组密码的设计原则
通过寻找一种算法来完成分组密码的设计,在密钥的控制下该算法能够从一个置换子集中简单快捷地选出一个置换,进而对输入的明文完成加密变换。通常情况下,一个良好的分组密码要具备难破译和易实现双重优点,借助加密函数E(·,k)和解密函数D(·,k)是可以计算的。但是,想通过利用方程y=E(x,k)和x=D(y,k),进而解出密钥k却是十分困难的。分组密码的设计原则分为:
1.1 实现原则 所谓实现原则就是分组密码可以通过软件和硬件实现。其中,软件实现的优点具有很强的灵活性、代价比较低;硬件实现的优点是速率高。在性质方面由于软硬件之间存在的差异较大,通常情况下借助预定的实现方法对分组密码设计原则进行考虑。①软件实现的原则。密码的简单运算是借助字块来实现的。由于在字块上实现密码的运算,所以,在长度方面要求子块要与软件编程彼此相互适应,比如8B、16B、32B等。在通过软件实现的设计原则中,利用比特置换实现起来存在一定的难度,因此在实践中尽量少用它。通过子块进行的密码运算从根本上说利用软件是容易实现的,其中较为理想的借助标准处理器自身所具备的如加法、乘法和移位等指令。②硬件实现的原则。通常情况下,加密盒解密的相似性,实际上就是对加密盒进行解密的过程仅在于使用密钥的方式不同而已,也就是采用同样的器件完成加密和解密的双重功能。一般情况下硬件实现依靠规则结构,通过标准化组件结构与超大规模集成电路相互适应。
在设计原则方面,迭代密码与上述原则相似。通过简单的轮函数便可实现迭代密码,通过选择适当的轮函数,必要的混乱和扩散经过若干次迭代后可以实现。
1.2 安全原则 分组长度、密钥长度等因素都会对安全构成一定的影响。有关实用密码的两个一般的设计原则为:①混乱原则。通常情况下,人们设计的密码应确保密钥和明文、密匙和密文之间存在相当复杂的依赖关系,密码分析者无法利用依赖关系。②扩散原则。密码设计者设计的密码,在一定程度上密钥的每一位数字影响密文的多位数字,进而在最大限度上,避免逐段破译密钥。对于密文的许多数字也要影响明文的每一位数字,进而隐蔽多位数字的统计特性。
另外,在攻击方面,密码体制必须对所有攻击方法能具备抵抗作用。
2 分组密码的整体结构
Feistel网络由Horst Feistel在设计Lucifer分组密码时发现的,因DES的使用而广为流行,Feistel网络又称Feistel结构,其功能是将函数(轮函数)转化为一个置换,Feistel型密码的实现的优点是加密与解密相似。另外,Feistel型密码算法需要两轮才能改变输入的每一比特,因此,在扩散方面比较慢。Feistel网络经Schneier B和Kelsey J推广到非平衡Feistel网络(又称非平衡Feistel结构),简记为UFN。所谓UFN就是Feistel网络左边和右边长度不一样。与此相对应的原始的Feistel网络又称平衡Feistel网络,简记为FN。
3 S盒的设计准则和构造
3.1 设计准则 在Lucifer算法中首次出现S盒,随着DES的使用S盒变得广为流行。在许多密码算法中S盒是唯一的非线性部件。因此,整个密码算法的安全强度受到S盒密码强度的影响。在本质上可以将S盒看作S(X)=(f1(x),…,fm(x)):F2n F2m的映射,通常情况下可以简称S是一个n×m的S盒。当选择的参数m和n比较大时,所有的S盒几乎都是非线性的,而且难以发现某些攻击所用的统计特性。同样,过大的m和n将增加算法的存储量,给S盒的设计带来许多困难。当前,比较流行的S盒是8×8的。S盒的功能是为分组密码算法提供混淆作用,设计S盒的准则为:①非线性度。②差分均匀性。③代数次数及项数分布。④完全性和雪崩效应。⑤扩散特性。⑥可逆性。⑦没有陷门。
3.2 构造S盒的方法 ①随机选取并测试。通过随机选择的小规模的S盒,其安全性并不高。但也有实践表明,随着S盒规模的增大,其随机产生的密码性能就越好。随着n值的不断增大,F 上的置换均是非退化置换,特别是当S盒一方面既随机,另一方面对密钥构成依赖时,那么S盒的强度就会越高。通过进行随机选取,利用测试对某些特定需求进行筛选。在时间和计算能力允许的情况下,设计者利用该方式可以构造所需的S盒,而且使用户坚定没有陷门的信心。②按规则构造并测试。借助已有的“好”的S盒,进而在一定程度上对满足需要的S盒进行构造,通过这种构造方式,利用DES的S盒生成Serpent算法所用的S盒。并且通过此种方法构造的S盒使用户相信没有陷门。
4 P置换的设计准则及其构造方法
4.1 P置换准则 一般情况下,通过将若干个S盒进行并置,进而构成SP网络中的混淆层,P的目的是制造雪崩效应,而一个置换P可以实现扩散层。由于在软件实现中难以实现比特置换,因此,如果m个n×n的S盒并置而成混淆层,一般将P设计成(F2n)m→(F2n)m的一个置换,其中(F2n)m=F2n×…×F2n。
4.2 P置换的构造方法 ①分支数最佳的置换P的构造。②多维2-点变换扩散器(multi-dimensional 2-point
transform diffuser)。其中,上述两种构造方法各具优势,方法①实现起来比较困难,但是构造的P的分支数是最佳的;相对①而言方法②实现起来相对容易,但是所构造的P的分支数比较少。
5 轮函数的设计准则及其构造
5.1 设计准则 ①安全。②速度。③灵活。
5.2 构造轮函数 在当前的密码算法中,轮函数分为:①有S盒的,例如,DES、LOKI系列、E2等。②没有S盒的,例如,IDEA,RC5、RC6等。对于没有S盒的轮函数,通过借助加法运算、乘法运算、数据依赖循环等实现“混淆”。
6 密钥扩展算法的设计
所谓密钥扩展算法就是由种子密钥生成的子密钥的算法,子密钥统计的独立和灵敏性是密钥扩展算法理论设计的目标。子密钥统计独立在密码算法设计中是不可能做到的,在设计的过程中,设计者只能使子密钥趋于统计独立。对于密匙扩展算法的灵敏性是指密钥更换的有效性,即对种子密钥的少数几比特进行改变,在较大范围对子密钥进行改变。为了实现上述目标,设计密钥扩展算法应遵循:①实现简单。②速度。③没有简单关系。④每个子密钥比特受种子密钥所有比特的影响相似。⑤在计算上难以实现从一些子密钥比特获得其他的子密钥比特。⑥没有弱密钥。
参考文献:
[1]冯登国,吴文玲.分组密码的设计与分析[M].清华大学出版社,2009.
[2]Adams C,Tavares S.The structured design of cryptographically good S-boxes.Journal of Cryptology,1990.3(1):27-
41.
[3]Detombe J,Tavares S.Constructing large cryptographically strong S-boxes.In:Advances in Cryptology-Auscrypt’92 Proc,Berlin:Springer-Verlag,2008.,165-181.
[4]O,Connor L.Enumerating nondegenerate permutations. In:Advances in Cryptology-Eurocrypt’91,Berlin:Springer-Verlag,2010,368-377.
密码算法 篇3
随着互联网技术与多媒体技术的快速发展, 人们之间的多媒体通信逐渐成为信息交流的重要手段。人们通过网络交流的各种信息往往与自身利益相关。因此, 信息的保密与安全显得日益重要。图像在人们用于交互的多媒体信息占有较大比重。传统的加密技术将其作为普通数据流进行加密, 而不考虑图像数据的特点, 因此有一定的局限性[1]。
Hill密码是一类替代密码, 其优点有可隐藏明文字母频率, 表示简洁, 易于计算机实现, 可使用可逆矩阵加密解密等。可将之应用于图像加密。Hill密码的关键在于加密矩阵。如果加密矩阵不可逆, 密文将无法还原成明文。Bibhudendra等人提出应用构造自逆矩阵[2]对信息进行加密以克服这一弱点。其自逆矩阵的构造采用伪随机数并且元素之间具有很强相关性, 因此易于破解。文献[1]就此提出使用混沌序列来构造加密矩阵, 但是其构造方法较为复杂。
文中应用低阶方阵构成的序列来对图像进行加密, 其计算简易, 可轻松解决加密矩阵的可逆性控制问题;又应用混沌映射产生序列中方阵的元素, 使方阵之间的相关性较低, 从而使密文难于破解。
2 图像的矩阵模型
对于任一大小为m×n的图像I, I中的每个像素Pij (i=0, 1, 2, …m;j=0, 1, 2, …n) 的颜色都由三原色红、绿、蓝 (R、G、B) 组成。像素的任意原色在计算机中表示为一个整数x, 取值范围为x∈[0, 255]。依上所述, 整个图像I可视为一个m×n的矩阵pij∈∈, 矩阵中每个元素Pij可视为以R、G、B为元素的小矩阵。在此提出两种矩阵模型。
2.1 像素的2×2矩阵模型
每个像素Pij视为一个2×2的小矩阵, 表示如下:矩阵中序列可取任意一种排列。排列方式作为密钥的一部分。为论述简易, 下文中序列取默认排列方式。
Eij是一个取值于[0, 255]的整数, 其取值视加密者的需要而定。Eij可以存储加密者的数字签名, 与R、G、B一起参与加密运算;或者取随机数作为密钥的一部分参与及密运算;或者取一个常数 (不建议这样做, 因为会增加密文被破解的危险) 。
2.2 像素的1×3矩阵模型
每个像素Pij可视为一个1×3的小矩阵 (向量) , 表示如下:
矩阵中序列可取任意一种排列。排列方式作为密钥的一部分。为论述简易, 下文中序列取默认排列方式。
3 Logistic映射
混沌现象是在非线性动力系统中出现的确定性的、类似随机的过程, 这种过程既非周期又不收敛, 并且对切始状态有极其敏感的依赖性[3]。
Logistic映射是一类简单又被广泛研究的动力系统, 其定义如下:
混沌动力系统的研究工作指出, 当递推公式中参数) 时, Logistic映射工作于混沌状态。其在混沌状态下对和初值具有极强的敏感性, 而且生成的混沌序列具有白噪声的统计特性[3]。所以该映射非常适合用于信息加密, 尤其是生成加密序列。
4 基于Hill密码的图像加密算法
4.1 算法原理
在传统的Hill密码系统中, 明文转换成对应数字, 而后与作为密钥的加密矩阵相乘, 运算结果即作为密文。加密矩阵是实现密码映射的关键。高阶矩阵的计算较为繁杂, 低阶矩阵计算简易, 也利于加密实现。针对上述的两种像素矩阵模型, 分别提出两种加密矩阵, 并预先设定了的矩阵的构造, 使矩阵具有可控的可逆性;通过设定不同的参数, 降低矩阵之间的相关度。
4.1.1 2×2加密矩阵
形如:
根据2.1中像素的2×2矩阵模型, 按Hill密码原理, 利用A作为加密矩阵, 实现加密映射
式中即Pij加密后的像素矩阵, , , 即加密后像素三原色的值, Aij为像素Pij所使用的加密矩阵。显然Aij的元素是由rij唯一决定的。利用Logistic映射生成混沌序列, 进而生成矩阵, 即可得出所有的Aij。
4.1.2 3×3加密矩阵
形如:
根据2.2中像素的1×3矩阵模型, 按Hill密码原理, 利用作为加密矩阵, 即实现加密映射:
同4.1所述, 式中即Pij加密后的像素矩阵, , , 即加密后像素三原色的值, Aij为像素Pij所使用的加密矩阵。显然Aij的元素是由sij, tij唯一决定的。利用Logistic映射生成混沌序列, 进而生成矩阵和, 即可得出所有的Aij。
4.2 算法步骤
4.2.1 加密算法步骤
基于Hill密码的图像加密算法包括如下步骤。
(1) 根据2中描述的图像矩阵模型, 确定所使用的像素矩阵的规模 (2×2或1×3) 以及矩阵元素的排列方式, 排列方式作为密钥的一部分使用。
(2) 设定参数和初始值, 利用Logistic映射生成混沌序列。由于加密矩阵的参数rij, sij, tij为[0, 255]之间的整数, 故令, [x]是取整函数, 。sij, tij与之类似。值得注意的是, 在生成的矩阵和中, 对任意i, j, , 否则Aij将不可逆。并且解密时, 因为取模运算的存在, 的初等因式, 的值应当与模256互质, 否则将可能得到错解[4] (见4.2.2) 。简单的解决办法是, 令为奇数, 令为偶数。利用rij或sij, tij生成加密矩阵Aij, , 作为密钥的一部分使用。 (3) 按公式计算图像I加密后图像各像素的颜色, 加密即完成。
4.2.2 解密算法步骤
解密算法就是作加密的逆运算, 包括如下步骤。
(1) 确定密钥, 包括像素矩阵的排列方式、Logistic映射的参数和初始值。为简化描述, 不妨设像素矩阵为默认排列方式。生成混沌序列, 同4.2.1的步骤2, 生成rij或sij, tij。
(2) 对于使用2×2矩阵加密的图片, 利用rij生成加密矩阵Aij, 按公式计算图像解密后图像I各像素Pij的矩阵;对于使用3×3矩阵加密的图片, 因为矩阵的模不为1, 应按如下步骤计算Pij。
1) 根据式 (2) , 易知
可求得, 因为sij+2tij与256互质, 所以是Kij唯一解[4]。
2) 综合式 (2) 、 (4) 得
因为sij-tij与256互质, 所以可求得式 (5) 唯一解Rij。同理可求得Gij, Bij。
3) 得出图像I各像素Pij的颜色, 解密即完成。
5 实验结果
采用文中方法对多幅图像进行试验。以256×192的金字塔图片 (如图1) 为例, 采用上述的Hill加密算法对其加密。
应用2×2加密矩阵得到加密图片[如图2 (a) ];应用3×3加密矩阵得到加密图片[如图2 (b) ]。两者的密钥中像素矩阵都采用默认排列方式, 混沌序列参数=3.96, 初始值=0.527863。
图2 (a) 解密后得到图3 (a) ;图2 (b) 解密后得到图3 (b) 。
经检验, 解密后的图3 (a) 、 (b) 与原始图像图1完全相同, 说明加密、解密算法是完全互逆的。该算法不会导致图像失真。
下列图片分别是图1、图2 (a) 、 (b) 的灰度分布直方图。
由图4可知, 加密图片的灰度接近于正态分布, 信息熵较大, 具有较强的抗统计攻击的功能。
6 结语
提出了一种基于古典的Hill密码的图像加密算法。在建立图像像素矩阵模型的基础上, 利用混沌映射理论, 提出了两种低阶加密矩阵对图像加密的应用, 并给出了相应的解密步骤。算法具有计算简单、效率较高、对密钥极为敏感等特点, 并具有极大的密钥空间。实验表明, 该算法具有较强的抗攻击能力, 且在一般情况下不会使加密图像失真, 具有较强的安全保护性能和较大的加密强度。
参考文献
[1]曹光辉, 鄂旭, 戴勃, 等.基于混沌理论改进希尔加密系统密钥矩阵[J].辽宁工业大学学报 (自然科学版) , 2009, 29 (4) :221-224.
[2]Bibhudendra Acharya, Sarat Kumar Papa, Ganapati Panda.Image Encryption by Novel Cryptosystem Using Matrix Trans-formation[C]//2008First International Conference on E-merging Trends in Engineering and Technology, Chikhli, In-dia, 2008:77-81.
[3]吕金虎, 陆君安.混沌时间序列分析及其应用[M].武汉:武汉大学出版社, 2002.
替换密码算法在C++中的实现 篇4
实验目的:实现单表、多表、多字母和置换等密码的加、解密程序。
实验要求:编写加、解密程序,并检验加、解密的正确性,即解密的明文与加密前的明文一致。
1 实验步骤及过程
实验步骤如下:
(1)查找相关资料,了解这四个加解密的算法原理。
(2)本程序采用C++语言编写,分别为四种加密算法设计了四个模块(类):kaesar类、vigenere类、hill类和substitute类,并为每个类设计了加、解密的成员函数(encipher和dencipher函数)和必要的数据成员。主函数模块的主要功能是对算法的选择和加解密选择。
(3)各个类的数据成员和成员函数
实验所得结果符合要求,完全正确。
2 实验总结
要做好本次实验,首先要对加密解密的算法有一定的了解,然后进行分析并用C++语言实现。在对四个类进行设计时,要给出必要的数据成员(明文、密文和密钥)和成员函数(加解密函数)。本次实验难度较大,通过完成本次实验的同时,加深了对加、解密算法的进一步的了解,也加深了对信息安全的兴趣,了解了信息系统安全的重要意义。
参考文献
[1]林柏钢.网络与信息安全教程[M].北京:机械工业出版社,2004.
密码算法 篇5
随着信息技术的不断发展,信息已成为重要的战略资源,在现代社会的进程中发挥着举足轻重的作用。但在信息快速发展的同时,信息安全问题也日益彰显,特别是在国计民生的社会领域,网络所存在的安全问题已日益突出,如病毒感染、黑客攻击等,对社会经济发展、人们生产生活造成较大影响。对于信息安全技术,其主要涉及计算机、密码知识、网络架构和安全技术等。旨在通过采取有效的安全策略,实现网络信息的安全可靠的保护。
当前,网络安全领域的相关技术。
(1)防火墙技术。防火墙作为安全网关,构建在Internet与内部网络之间,实现对内网的有效控制。其实,防火墙系统主要的防护机制是决定外界可以访问哪些内部资源,反过来,内部人员可以访问哪些外界资源。也就是说,防火墙通过对相关信息的过滤、授权,实现对网络的安全保护。
(2)入侵检测技术。该技术作为一种主动防御技术,主要针对用户系统行为的监视、系统漏洞的设计,及系统数据完整性评估等功能,也就是说,入侵检测系统可以有效地实现对系统监视、审计、评估等工作,实现了对网络系统的主动保护。
(3)漏洞扫描技术。该技术主要针对主机的安全脆弱点的技术。通过查询相关的TCP/Ip端口,并收集某些特定的有用信息。该项技术的具体实现是依托于安全扫描程序。安全扫描程序可以对检测的数据进行分析,进而快速获取系统的脆弱点。
(4)加密技术。加密技术是最传统也是最有效的保护措施之一,主要针对信息加密。加密技术的特征非常突出,主要利用现代数据加密技术,实现对网络系统的安全保护。并且,加密数据的翻译,只有指定的用户、网络设备方可执行。
对于数据加密技术而言,其是网络安全的核心,承担着高安全性密码算法的寻找,以实现信息资源的加密。本文就针对网络安全中,两种典型加密算法进行研究。
2 相关理论
信息保密通信系统具体如图1所示。
基于通信行为不同,该网络系统可氛围发送方和接收方,就图1中所对应的相关内容定义如见表1。
3 典型的密码体制
3.1 对称密码体制
早在上世纪70年代,公钥密码还未出现。所以在那时,加密的方法就比较唯一,多采用对称加密。直至现在,对称加密的使用仍旧非常广泛。如图2所以,对称加密机制主要包括:密钥、加密算法、明文和密文等基本内容。
就对称密码体制而言,其最大的特点在于加密和解密使用一样的密钥。所以,这种密码机制比较单一,其保密性主要依托于密钥的保密性。并且,对称密码的保密性与加密算法的保密性无关,也就说,即使知道了解密算法和密文,也是无法获得明文。
在对称加密算法中,DES和AES算法使用广泛,具有典型的代表性,以下就这两种对称算法进行论述。
3.1.1 DES算法
DES算法采用了56位的密钥长度,并具有64位分组长度。对于该法,其主要将64位输入明文,并在一系列的运算处理下,得到64位的密文进行输出。在对密码解密时,采用同一密钥。其实,左右两边是在相互交换的机制下进行预输出。并且最后预输出的IP与相互作用,进而产生出密文(64位),在实际中,我们可以清楚地知道56位密钥的使用情况。密钥在相关置换作用之后,在循环和置换等操作下,获得一系列的子密钥。同时,在每次迭代置换的过程中,使用相同函数,且密钥的循环作用,使得子密钥之间是不相同的。
3.1.2 AES算法
对于AES算法,其具有高效加密和解密的突出优点。因为密钥的长度是128或192位,这样就可以在计算机的作用下,实现高速的处理。同时,该密码算法具有良好的安全性,在短时间内很难对其进行破译。
在AES算法中,以128位加密算法输入和输出。在输入分组中,是以字节为单位的矩阵来表示,且矩阵中的字节需要按照相关的规定进行排列,如从上之下,从左到右的方式排列。该分组复制到State数组后,在对进行加密或解密的过程中,都会对数组进行改变,直到State复制至输出矩阵。在对128位的密钥描述时,采用以字节为单位的矩阵。
3.2 非对称密码机制
3.2.1 非对称密码机制
在1976年,Hellman和Diffie首先引入非对称密码机制。在使用非对称密码机制时,用户需要选定以对密钥:一个密钥是可以公布的;另一个密钥则需要用户保密。所以,该密码体制又称之为公钥体制。其实,对于密码史而言,公钥体制的出现就是重要的里程碑。在公钥体制中,最著名的有AIGamal算法、Mc Eliece密码和RSA系统等内容。
与先前的密码学相比,公钥密码学存在一定的本质区别。(1)公钥算法是基于数学函数,而非先前的置换和替换。(2)公钥算法的使用,是针对非对称且独立的密钥,而传统的对称密码则只需要一个密钥。同时,公钥密码体制主要包括加密算法、公钥、明文、密文等。
3.2.2 RSA算法
在非对称加密算法中,RSA比较具有代表性。就当前的公钥密码算法来看,RSA是最成功的公钥密码算法之一。该算法的安全机制主要依托于计算机复杂性理论和数论中的相关素数求算。在至今的数学领域,仍未多项式时间内破解RSA的最佳方案。
3.3 其他典型密码机制
目前,传统密码机制以逐渐完善,并广泛适用于网络安全构建中。对于传统密码,均只有计算安全性和一次一密的特性。也就是说,网络攻击者的计算功能无限强大,理论是可以对该些密码系统进行破译。随着信息技术的不断发展,新兴智能计算的涌现,对传统密码的破译提供了更加有效的新途径。同时,诸多的职能生物算法已用于传统密码的破译,并取得了实际效果,这就对加密技术提出了更高的要求。
在面对传统密码技术日益暴露出缺陷时,DNA加密计算法出现在人们视线。目前,DNA加密技术已成为密码学的前言领域,是新时期的密码。对于DNA密码而言,其具有突出的特点,特别是以DNA为信息的载体,依托于现代生物技术为工具,很大程度上利用了DNA的相关有点。这样一来,可以有效的实现加密、认证等一系列密码学功能。其中,其主要包括DNA隐写、DNA加密和认证等三个方面。从DNA密码的本质来看,其实是数学密码的有益补充,对于夯固网络信息安全保护具有重要的现实意义。
3.4 算法分析
对于对称密码体制而言,其可以用于加解的密钥是相同的或是从加密密钥中推解而出。其中,典型的AES和DES算法的密钥长度均较短,密钥的可靠性较弱,以至于安全性能较低。但是,算法简单、加密速度快,计算开销小。要想构建更安全的网络安全体系,需要以安全方式进行密钥交换。
对于非对称密码体制而言,其可以用于加密的公钥,但与私钥是不相同的。此外,相比较于传统密钥,公钥和私钥的长度较长,在安全性能上交优越。对保密信息进行多人形式下的传输,所需的密钥组和数量相对较小。但是,加密算法相对比较复杂,计算的工作量较大。所以,私有密钥加密比公开密钥加密在解密时的速度要快。
4 结束语
在网络信息时代,网络技术的不断发展,也突显出日益严重的网络安全问题。在网络安全技术中,主要通过相关的加密技术,对信息资源进行安全保护。
其实,网络安全是相对的,也就是说,安全性越高其实现就越复杂。面对快速发展的计算机网络技术,新的网络安全问题也不断闯入人们的视野。同时,一些新的密码体制也不断的研发,构建起网络安全的防护墙。所以,审视计算机网络技术的发展,网络安全形势依旧非常严峻,促使我们不断地创新技术,迎接新的网络安全问题。
参考文献
[1]丁素英.密码算法在网络安全中的应用[J].潍坊学院学报,2008(03).
[2]Zhao G.Advances in modern information security and chaotic secure communication application research[J].Progress in Physics,2012(06).
[3]Malo K o.Application of cryptography technology in network information security[J].Technology Square,2011(09).
[4]薛冰.密码学在网络信息安全中的应用[J].福建电脑,2009(09).
[5]周溢辉.RSA算法在信息安全中的应用分析[J].科技信息(科技教研),2008(08).
[6]滕萍.云计算技术发展分析及其应用研究[J].信息网络安全,2012,(11):89-91.
常见密码算法分析及C语言实现 篇6
1 计算机密码学发展历史
密码学在人类发展历史中有着不可代替的作用,从2000多年前古埃及发生战争,密码就出现在了人类中,起初的密码就是简单的记录符号。随着时代的推移,在两次世界大战中人们开始意识到密码的重要性。
密码学真正成为一门学科是在二十世纪七十年代。美国国家标准局在1977年对DES(数据加密标准)进行了公布,并批准在非商业和非机密单位中对其进行应用,从此解开了密码的神秘面纱。早在1975年“密码学的新方向”一文中就提出了适用于网络的公钥密码理念,这也是人们对公钥密码进行研究的开始。受“密码学的新方向”影响,各种公钥密码体制被提了出来,在众多体制中,RSA成为了密码学研究的一个里程碑。不夸张的说,“没有公钥密码的研究也不会有近代密码学”。现代社会是一个信息高速发展的社会,随着科技的发展,密码学也取得了巨大进步,而且也成为了许多学科发展的基础。
2 常见的密码算法
2.1 密码系统保密机理
计算机及互联网在人们的日常生活中越来越普及,随之而来的,人们对信息安全方面的要求也越来越高。在网络环境中确保信息完整性、准确性和机密性都需要密码技术来实现。图1为密码系统保密机理。
在图1中key1表示的是加密密钥,key2表示的是解密密钥,密钥系统依据key1与key2是否相同,将密码算法分为对称密码算法和非对称密码算法。非对称密码算法在应用过程中既要使用公钥也要使用私钥。图1中的EK1(M)和DK2(C)就是在加密和解密过程中使用的密码算法。
密码技术是密码算法的核心,算法主要通过软件实现,少数算法可以通过硬件完成,软件实现算法的主要优势在于可优化和可维护,因此在编写上通常使用C语言。
2.2 对称密码算法
KP与KS在实质上是相同的,也就是说可以由KP导出KS。从加密模式上对对称加密模式进行分类,可以将其分为分组密码和序列密码两大类。在对称加密系统中,加密和解密过程中使用的密钥都是相同的,因为加密和解密需要使用相同的密钥,因此加密方和解密方都需要对他们使用的密钥进行保存,同时加密和解密方都需要严格的保存密钥,避免泄露,也只有这样才能实现密码的完整性和机密性[1]。
2.3 非对称密码算法
非对称密码算法也叫做双钥密码算法,在此算法中KP同KS之间有着很大差别,KP是公开密钥,也叫公钥,KS则是必须需要保密的密钥,也叫私钥。在公钥密码算法中可以较容易的由KS推导出KP,但很难实现反向推导,这种单向性的实现,主要是具有单向函数,其中单向函数满足以下条件:1) 指定x值,很容易完成y=kk(x)的计算;2) 指定y,对x进行计算,使x=f-1k(y)无法实现。3) 存在数值k,如果k为已知,给出任意一个y,如果存在相应的x,则很容易完成x=f-1k(y)的计算[2]。
2.4 两种算法的对比
对称密码与非对称密码算在实际应用中各有各的特点,将两者进行对比,优缺点如表1所示。从目前的应用情况来看,对称密码经常被应用在大量数据的加密。非对称密码经常应用在关键性数据加密。例如会话密钥。
3 常见密码算法分析
3.1常见的对称密码算法
IBM公司首先开发了DES算法,并在1977年被美国采纳,作为“非密级”使用标准,并且被广泛应用到生产中,DES曾经是世界上应用最为广泛的密钥算法。在对DES算法进行应用时,将明文分成块,运用8个S盒与8个P盒进行置换,在16轮迭代后,生成比特密文(64bit),在每一轮的迭代中运用的密钥都是由最初的56比特生成的[3]。在加密和解密过程中采用DES加密和解密,那么加密和解密流程以及密钥都完全相同,其中仅有的区别就是解密与加密中应用的子密钥序列是相反的。DES算法主要存在以下问题:1) DES密钥空间无法满足实际需求(256bit)。2) DES里刨除S盒其余计算都是线性的,然而在实际应用中,S盒的密码算法对安全性影响巨大,而NIST(美国国家标准局)并没有将S盒设计原则公布于众,因此,并不排除S盒中藏有“陷门”,同时因为空间问题DES密钥的组合形式有限,在被攻击时,如果攻击人员采用穷举法很可能在短时间内获取成功。因此在实际应用中,为了使DES算法安全性能够得到增加,从事密码设计的工作中虽然又提出了独立密钥方法、基于DES的Triple算法,但在应用中起到的效果并不明显[4]。
在对称密码算法中IDEA算法是由我国学者莱学嘉和美国著名密码专家James L.Massey共同提出的,在IDEA数据加密算法中密文和明文都是64比特,但密钥长度则为128比特。IDEA算法需要建立在群运算的基础之上对密钥和数据进行运算,最后得到解密结果或密文输出。
IDEA算法品质优良,2128比特的密钥空间对其安全性予以了有利的支持,而且无论在硬件上还是在软件上都可以较快的实现。从本质上来看,IDEA算法算是一种“强”加算法,从目前情况来看,还没有出现对其产生有效供给的算法。
3.2非对称加密算法
RSA与上述的DES算法最大的区别就是它的密钥算法被相对完整的公开,在加密过程中使用的加密密钥并不是私密的,在必要时可以通过广播或网络的形式对密钥进行公布,这也就是在加密过程中使用的公钥。在解密过程中应用的密钥则具有私密性,也就是我们常说的私钥。RSA的安全性基于大整数素因子分解的困难性,大数因子分解在数学界一直都是一道难题,到目前还没有人发现合理的解决方法。目前在最快的算法就是参数对照,然而完成1024比特的一个整数因子分解所需要的时间是巨大的。RSA在应用过程中不仅能够用于加密,而且也能用于认证和数字签名和密钥发布[5]。
3.3 ECC算法
ECC算法早在1985年就被提出,是非对称密码算法的一种。其安全性主要源于椭圆曲线离散对数问题求解难度大。建设Q是W(JR)(椭圆曲线)上的一点,点F是W(JR)上为Q倍数点,则存在整数Y大于0,使F与YF相等,椭圆曲线离散问题就是由给出的Q和F来确定出Y的值。依据目前的研究结果来看,对椭圆曲线上的离散对数问题处理要比离散对数处理难度更大,也就是说在椭圆曲线公钥密码上运用较小的数就可以实现同大区域相同的安全性。
4 密码算法的C语言实现
4.1 数据与逻辑运算
在DES算法中,多数为逻辑运算,密钥和明文都需要依照按ASCII码标准统一转化为十进制码,然后再进行密钥置换和IP置换,明文在完成置换后,要进行非线性置换,在DES算法中涉及到的置换都应当为按位逻辑运算。运算过程中的数据类型十分重要。
4.2 随机最大数的生成
无论是使用什么密码算法,在应用中随机最大数都是不可或缺的。一般来说一个能够被应用的密码随机数发生器应当具有以下特性:1) 产生的数值应当是无法预测的。2) 产生的数应当平均分布。3) 拥有一个大范围的取值范围,也就是在使用中能够获取到不同的数值。rand()函数经常用于C语言中随机函数的生成,但如果对信息的安全要求较高则不建议使用rand()函数。这主要是因为rand()具有一定的可预测性,rand()函数是以之前产生的随机数作为种子,然后再生成下一个随机数。
正确的做法是在系统中选取一个高级的函数方法Crypt-Gen Random,该方法具有平均分布和不可预测的特点,此函数已经在Winerypt.h中进行了声明,因此可使用于任意Windows平台。但在对该方法进行调用时需要C++中的CCryp Random类的支持,Crypt Gen Random主要从Windows系统中获取以下随机资源:当前进程、时钟数、内部CPU计数器、当前时间等。
4.3 大数运算
RSA加密需要有大数运算予以支持,目前主流RSA算法需要512位以上作为支持,而从目前情况来看,多数计算机中使用的编译器,仅支持64位,因此无法满足RSA加密的使用需求,为了解决这一问题则需要建立大数运算数据库,数据库中应当包含加、减、乘、除等。
大数表示一种思想:用数学完成对数据的存储,也就是利用10进制数对数组加以表示,然后函数进行编写,这样做的最大优点是符合人们长期以来养成的思维习惯,便于人们对其进行理解;主要弊端是效率低,而且在处理过程中需要优化,而且对该思想进行运算需要许多额外空间。另一种思路是将大数当作一个二进制流进行处理,使用各种移位和逻辑操作来进行加减乘除运算,这样做的最大弊端是代码的可读性差、调试难度大。
4.4 C语言代码的实现
以求模为例,算法流程如下:
int mod(int* arrayA, int* arrayB,int arrayA_Length,int ar-rayB_Length)
{if(arrayA_Length<arrayB_Length)
{for(i=arrayA_Length-l ;i >=0;i—)
{modend[i]=a[i];
}return arrayA_Length;
}
else
{for(i=arrayB_Length;i < arrayA_Length;i++)
{arrayC[j]=arrayA[i]; j=j+1;
}
arrayC_Length = multiply(arrayC,arrayB);
sub(arrayA,arrayC,arrayB,arrayA_Length,arrayC_Length,ar -rayB_Length);
while(arrayA_Length>arrayB_Length)
{sub(arrayA,arrayB,arrayA_Length,arrayB_Length);
}
for(i=arrayA_Length-l ;i >=0;i—)
{modend[i]=a[i];
}
return arrayA_Length;
}}
5 结束语
现代社会是信息社会,计算机技术、网络技术发迅速,信息安全已经成为当今社会的热点话题。尤其是网络信息安全已经成为了信息安全领域亟待解决的问题。使用密码算法是保证网络信息安全的一个重要手段。计算机密码学在解决信息安全上有无可代替的作用,而伴随着计算技术被应用到社会的各个领域,密码技术的应用领域也得到了进一步扩大,因此在日后的研究过程中要加强对密码学的研究,使其能够更好的为人类服务。
摘要:计算机的高速发展使信息安全面临着巨大的挑战。在计算机应用中要想确保信息安全,就必须要对密码算法进行合理应用。基于此,该文对密码算法进行了分析,并将密码算法的C语言实现进行了简单介绍和说明。
关键词:密码算法,C语言,随机数
参考文献
[1]胡小敏.密码算法专用描述语言多项式和大数运算的设计与实现[D].陕西:西安电子科技大学,2012.
[2]陈曼.分组密码算法能量与错误分析攻击及其防御对策研究[D].山东:山东大学,2013.
[3]张晓新,仲丛久.基于C语言实现的数据加密DES算法[J].沈阳航空工业学院学报,2004,21(2):48-49.
[4]张文质,郝鹏翼.Huffman编码和解码的C语言实现[J].洛阳大学学报,2005,4(12):37-41.
密码算法 篇7
随着我国信息化建设的快速发展,信息传输的安全性日益引起各方的高度关注。企业服务总线( Enterprise Service Bus,ESB) 产品作为实现面向服务架构( Service Oriented Architecture,SOA) 的重要技术手段,在信息化建设实践中得到了日益广泛的应用,因此ESB产品的信息传输安全性显得尤为关键。目前商用的ESB产品大多使用国际标准的加解密技术,例如DES( Data Encryption Standard ) 算法、RSA ( Rivest Shamir Adleman) 算法,其具体实现很难做到安全、自主、可控; 而国产加解密技术受其效率问题影响,更多采用硬件实现,很少有采用软件成功应用的案例。为确保密码算法的自主可控,降低敏感信息泄露和信息系统遭受攻击的风险,国家密码管理局制定并发布了国产加密算法及相关密码行业标准。2006 年我国公布了无限局域网产品使用的国密对称密码算法( SM4) ,这是我国对外公布的第1 个商用密码算法,并于2012 年3 月被国家密码管理局批准为行业标准[1]。SM4 密码算法的安全性更高,软、硬件实现难度相对较低,且无论是基于软件还是硬件实现,其加解密性能均相对较高。
ESB产品需要适配各种业务场景,不同的业务场景对数据的传输需求、加解密性能和安全性能等方面侧重不同。本文介绍了在信息安全领域中比较重要的5 种SM4 密码算法模式的实现机制,对其优缺点及适用场景进行了分析,并将基于电文密码本( ECB) 模式的SM4 密码算法应用于宝钢集团有限公司ESB平台与基于云存储技术的网络文件保护系统之间消息传输的双向加解密,效果良好。
1SM4 密码算法模式实现机制
SM4 密码算法是一种分组密码算法,采用非平衡Feistel架构,具有较强的抗差分攻击能力,安全性已经达到欧美分组密码的标准[2,3]。利用SM4 密码算法进行加密时分组的长度( 128 b)是固定的,而实际应用中待加密消息的数据量不定,数据格式可能多种多样。若待加密消息的数据量比较大,超过SM4 密码算法的分组长度时,就需要进行消息填充( Padding) 以及选择合适的加密算法模式。一种加密算法模式通常由基本加密算法、某种可选的反馈机制以及一些算术或者逻辑运算组成,它构成了安全性算法的基础[4]。SM4 密码算法模式有5 种: 电文密码本( ECB) 模式、密文分组链接( CBC) 模式、密文反馈( CFB) 模式、输出反馈( OFB) 模式、计数器( CTR) 模式,下面对其实现机制进行分析。
1 . 1ECB模式
ECB( Electronic Codebook) 模式也可称为电文密码本模式,使用此模式加密时,明文分组加密之后的结果将直接成为密文分组,其工作原理如图1 所示。
ECB模式加密时相同的明文将产生相同的密文,明文与加密后密文长度相同,因此可以将该模式视为一个明文分组到密文分组的映射表。当最后一个明文分组的内容小于分组长度时,需要用一些特定的数据进行填充。在本文所述的5种模式中,ECB模式加密过程最简单,处理速度最快,同时支持并行计算,但安全性最低,明文中的重复排列会直接反映到密文中。
1 . 2CBC模式
CBC( Cipher Block Chaining ) 模式也称为密文分组链接模式,使用此模式加密时,首先将明文分组与前一个密文分组执行XOR( 异或) 运算,然后再进行加密操作,其工作原理如图2 所示。
CBC模式引入一个称为初始化向量( Initialization Vector,IV) 的比特序列做为第1 个明文分组加密时的 “前一个密文分组”,一般而言,每次加密时都会随机产生一个不同的比特序列作为初始化向量。在CBC模式中无法单独对一个中间的明文分组进行加密,但支持并行解密,可以解密任意密文分组,且安全性高于ECB模式。
1 . 3CFB模式
CFB( Cipher Feedback) 模式也称为密文反馈模式,在此模式下,前一个密文分组会被反馈到密码算法的输入端,明文数据可以被逐比特加密,其工作原理如图3 所示。
与CBC模式一样,此模式同样需要引入初始化向量IV。因为密钥流是由加密操作生成的,所以该模式的特殊在于其解密时分组密码算法依然执行加密操作。CFB模式不需要填充,支持并行解密,可以解密任意密文分组。
1 . 4OFB模式
OFB( Output Feedback) 模式也称为输出反馈模式,在此模式下,密码算法的输出会反馈到密码算法的输入中,其工作原理如图4 所示。
OFB模式是CFB模式的一种改进[5],它实质上就是一个同步流密码,通过反复加密一个初始向量IV来得到密钥流。OFB模式克服了CBC模式和CFB模式的错误传播带来的问题,但同时也带来了序列密码具有的缺点,对密文被篡改难以进行检测。
1 . 5CTR模式
CTR( Counter) 模式也称为计数器模式,通过将逐次累加的计数器进行加密来生成密钥流的流密码。在此模式下,最终的密文分组通过将计数器加密得到的比特序列与明文分组进行XOR运算得到,其工作原理如图5 所示。
CTR模式不需要填充,其加密和解密使用完全相同的结构,易于编码实现。另外CTR模式可以以任意顺序对分组进行加密和解密,可以实现加密和解密的并行计算,在支持并行计算的系统中,CTR模式的速度非常快。
2SM4 密码算法模式差异性分析
5 种SM4 密码算法模式的优缺点对比如表1所示。
综合各密码算法模式的差异特性,各模式适用的业务场景如表2 所示。
3SM4 密码算法多模式统一接口调用过程
为统一多模式编程接口,方便上层业务调用,笔者对SM4 操作流程进行了JCE( Java Cryptography Extension,Java里用以提供消息加解密以及密匙生成功能的开发包) 化封装,接口调用过程如图6 所示。使用SM4 密码算法实现数据加密、解密操作流程与JCE标准流程完全一致,很大程度上降低了开发人员学习成本。
4实际应用
2011 年9 月,宝钢集团有限公司通过了《信息安全专项规划》,按照“适度安全”、“管理与技术并重”原则,规划建设基于云存储技术的网络文件保护系统。2015 年初,根据国资委要求,集团公司进一步加强了商业秘密保护工作力度,对系统提出了更高的要求。结合系统传输数据量较大、时效要求较高等需求,在宝钢集团有限公司ESB平台与之集成时,采用基于ECB模式的SM4 密码算法实现消息传输的双向加解密,防止了数据在传输过程中被恶意截听、窃取,满足了集团公司“低成本、高扩展、高效率、体系安全”的整体要求。
5结束语
通过将SM4 密码算法引入ESB产品的数据安全传输过程,充分发挥了SM4 密码算法软件实现加解密效率高、安全性好的特点,有效提升了数据传输过程的安全性。为了适应并行计算、高频传输、高安全性等不同业务场景需求,除ECB模式以外,笔者同时实现了CBC、CFB、OFB、CTR等迭代模式,弥补了ECB模式安全等级较低的缺点。
参考文献
[1]国家密码管理局.国家密码管理局公告第23号[EB/OL].(2012-03-21).http://www.oscca.gov.cn/News/201204/News_1227.htm.
[2]GAO Xianwei,LU Erhong,XIAN Liqin.FPGA implementation of the SMS4 Block Cipher in the Chinese WAPI Standard[C]//Proc.of International Conference on Embedded Software and Systems Symposia.[S.l.]:IEEE Press,2008:104-106.
[3]JIN Yier,SHEN Haibin,YOU Rongquan.Implementation of SMS4 Block Cipher on FPGA[C]//Proc.of the 1st International Conference on Communications and Networking in China.Beijing:IEEE Press,2006:1-4.
[4]SPILLMAN R J.Classical and Contemporary Cryptology[M].Upper Saddle River:Prentice-Hall Inc.,2004.
密码算法 篇8
随着计算 机技术的 发展 、社会信息 化程度的 不断提高 , 安全问题 越来越受 到人们的 广泛重现 , 因此各种 形式的专 用密码电 路和密码 算法处理 器被广泛 地应用于 各类产品 中 。 分组密码 算法是一 种最常用 的加密手 段 , 具有速度 快 、易于标准 化和便于 软硬件实 现等特点 。 目前比较 流行的分 组密码算 法有DES算法 、AES算法等 , 其中DES[1]是目前使 用非常广 泛的数据 加密方法 , 它于1977年被美国 国家标准 局作为第46号联邦信 息处理标 准而采用 。
传统的密 码分析方 法是采用 数学的分 析手段 。 近年来随 着测量分 析方法的 进步 ,各种分析 攻击方法 也不断发 展 ,差分功耗 攻击和故 障攻击是 具有代表 性且对智 能卡芯片 威胁性较 强的两种 攻击方法 。 差分功耗 攻击是1998年由Paul Kocher等[2]提出 , 它利用了 密码设备 运行期间 泄露的侧 信息与密 码算法的 中间值有 一定的相 关性 , 通过多次 测量侧信 息后进行 统计分析 , 进而获得 密钥信息 。 故障攻击 的基本原 理是将密 码芯片置 于强磁场 中 , 或者改变 芯片的电 源电压 、 工作频率 、 温度等 , 使密码芯 片中的寄 存器 、存储器在 加解密过 程中产生 随机错误 , 某些输出 比特从原 来的0变成1或1变成0。 通过对正 确密文输 出和错误 密文输出 的比较 ,经过理论 分析得到 芯片内部 的秘密数 据信息 。
国内外对 于差分功 耗攻击和 故障攻击 防御方面 的研究和 技术方法 也不断涌 现 ,防御差分 功耗攻击 的方法包 括 : 随机掩码 、 动态双轨 电路技术 、 随机伪操 作等 , 防御故障 攻击的方 法主要包 括对相同 的数据计 算多次后 比较运算 结果是否 一致 。 但有的防 御方法往 往会增加 实现代价 ,而计算多 次比较运 算结果又 会降低算 法运算效 率 。 本文以DES算法为例 ,提出了分 组密码算 法的一种 有效防护 方法 , 可以同时 抵御差分 功耗攻击 和故障攻 击 。 采用流水 线技术同 一时钟周 期内有不 同的轮运 算操作叠 加 , 增加了正 常加解密 运算的噪 声 , 可以抵抗 侧信道攻 击 , 同一明文 依次进入 不同级的 流水线进 行运算 , 最后比较 运算结果 是否一致 ,可以抗故 障攻击 。 通过对电路 的仿真和 分析 ,验证了其 良好的抗 攻击性能 。
1DES差分功耗分析及故障攻击
DES是一个分组算法 , 使用长度 为56 bit的密钥加 密长度为64 bit的明文 ,获得长度 为64 bit的密文 。 它的加密 过程如下 :
( 1 ) 给定明文m , 对m进行一个 固定的初 始IP置换 。
( 2 ) 然后进行16轮完全相 同的运算 , 将数据与 密钥相结 合 。 在16轮操作的 每一轮中 ,DES都会进行8次S盒查表操 作 。 这S盒的输入 为6 bit的密钥与E扩展后的6 bit R寄存器的 异或值 , 输出为4 bit。 32 bit的S盒输出经 过P置换 , 然后与L寄存器的 值进行异 或 , 接着将L和R的值进行 交换 。
( 3 ) 进行初始 置换的逆 置换 , 得到密文 。 具体过程 如图1所示 。
1.1差分功耗分析
目前绝大 多数集成 电路均采 用CMOS工艺制作 , CMOS门级电路 的功耗模 型[3]为 :
其中Pswitch为逻辑门 翻转引起 负载电容 充放电导 致的功耗 ;Pshort_circuit为短路电 流导致的 功耗 ;Pleakage为泄漏电 流导致的 功耗 。 其中Pswitch是电路功 耗的主要 部分 ,功耗
大小与逻 辑门是否 翻转有密 切关系 ,因此电路 中运算数 据的0、1状态与电 路的功耗 必然具有 一定的相 关性 ,这个特性 是DPA攻击的物 理基础 。
以DES算法为例 ,DPA攻击的主 要步骤如 下 :
( 1 ) 随机生成 大量明文 , 加密这些 明文并记 录下加密 操作时的 功耗曲线 。
( 2 ) 关注第一 轮第一个S盒输出的 第一比特b , 猜测第一 个S盒对应的6 bit密钥 , 并用其与 相应的明 文计算出b。
( 3 ) 根据b的值 , 将能耗曲 线按照b = 0和b = 1分为两类 。
( 4 ) 计算出这 两类的平 均能耗曲 线 , 并将二者 相减求得 差分能耗 曲线 。
( 5 ) 观察步骤 ( 4 ) 生成的能 量曲线 。 若密钥猜 测正确 , 则步骤 (3) 的分组就 是正确的 , 差分能耗 曲线中将 出现明显 的峰值 。 因此攻击 者通过观 察峰值来 判断密钥 的猜测是 否正确 。
( 6 ) 重复步骤 ( 2 ) ~ ( 5 ) , 得到其他 的子密钥 。
这样 , 通过差分 迹中的尖 峰 , 就可以确 定出完整 的48 bit密钥信息 。 再使用穷 举搜索或 继续分析 下一轮等 方法 ,可以很容 易地确定 出剩下的8 bit密钥 。
1.2故障攻击
故障攻击 是通过将 故障引入 到芯片中 , 如改变芯 片的工作 频率或工 作电压 , 使得芯片 工作不正 常 , 从而获得 芯片内部 关键信息 。
Biham和Shamir提出了对DES算法的差分故障分析[4], 该攻击的 基本方法 如下 : 攻击者对 同一明文 加密两次 , 其中一次 正常加密 , 另外一次 在加密的 第15轮运算时 引入故障 ,使得芯片 输出错误 运算结果 。 攻击者通 过记录正 确加密结 果和错误 结果并对 这两个结 果进行数 学分析 ,即可获得 密钥的相 关信息 。
如图2所示 ,攻击者在 第15轮的f函数运算 期间注入 故障 ,则有 :
其中R16′ 和R15′ 分别是R16和R15对应的错 误值 , 通过对上面 的两个等 式两边异 或可以得 到 :
在该等式 中只有K16是未知的 , 通过解方 程即可获 得密钥信 息 。
2DES算法抗差分功耗攻击和故障攻击设计
流水线的 概念在数 字电路中 应用得很 广 , 它是加快 数字电路 的有效手 段 ,在分组密 码算法中 应用得同 样很广泛 , 如DES、AES等分组加 密算法都 有相关的 流水线实 现方案 。
本文通过 把流水线 技术与抗 差分功耗 分析和故 障攻击相 结合 , 同一明文 进入不同 级的流水 线进行运 算 , 其他级流 水线的输 入为随机 数 ,这样在同 一时钟周 期内有不 同的运算 操作叠加 , 增加了正 常运算的 噪声 , 可以抵抗 差分功耗 攻击 ;通过比较 同一明文 的运算结 果是否一 致 , 来检测运 算过程中 是否有故 障注入 , 可以抵抗 故障攻击 。
如图3所示 ,DES算法采用 四级流水 线 , 每级流水 线进行4轮运算 。 图中虚线 部分表示 随机数参 与该级流 水线运算 。
首先产生 所需的随 机数 , 一个随机 数用于确 定这四级 流水线中 哪两级的 输入为真 实的明文P, 两个随机 数作为随 机明文进 入另外两 级流水线 ,两个随机 数分别作 为密钥用 于为两个 随机明文 产生随机 轮密钥 。
这里不妨 假设前两 级流水线 的输入为 真实的明 文 , 后两级输 入为随机 数 。 待真实明 文的两级 流水线运 算完成后 对这两个 密文进行 比较 ,若一致则 说明运算 过程中没 有注入故 障 ,可输出正 确密文 ;否则返回 错误信息 。
当然 , 为增加抗 攻击能力 , 本文的方 法可以与 其他防护 方法相结 合 ,如每一级 的流水线 在实现时 可以引入 随机掩码 ,这样抗差 分功耗攻 击的效果 会更好一 些 。
3实验仿真及分析
以DES算法中轮 输出的寄 存器为攻 击点 ,采用汉明 距离模型 ,通过仿真 实验对本 文防护方 法的有效 性进行验 证 。
对标准的DES算法和本文的防护方法分别进行VLSI设计 ,采样后采 用Riscure公司的Inspector侧信道分 析平台对 其FPGA实现进行 分析 , 结果如图4所示 。 对于标准 的DES算法 , 分析第一 轮中的第 一个S盒 , 当猜测到 密钥为0x00时会出现明显的尖峰,这说明密钥猜测正确 ; 对于本文 的防护方 法 ,当猜测到 密钥仍为0x00时没有出 现明显的 尖峰 ,说明本方 法可以有 效的抵抗 功耗分析 。
4结论