加密技术原理一.密钥与算法(一) 密码技术1. 密码技术的必要性必须经过公共通道(如Internet)传输的敏感信息通常不是以明文而是以密文的方式进行通讯传输的。
电子商务特别依赖于加密或秘密代码形式来保护信息。
加密的目的是使黑客在获得通过网络传输的秘密文件时,无法将它恢复为原文,密码技术是保证网络、信息安全的核心技术。
2.加密技术加密是对原来明文信息中的加密为衔文数字信息。
解密是将加密的一段密文信息恢复为原来的明文信息。
加密就是信息的变异,它将某种形式(文本、视频、图像)的信息转变为仅通过解密密钥解密后才可读的形式。
基本的加密方法有:替换加密和转换加密。
3. 替换加密法(1) 单字母加密方法即利用另一个字母表(与正常的字母表符号或顺序不同)中的字母替代明文中的字母。
单字母加密的方法有很多中,这里介绍其中几种。
例1:恺撒(Caesar)密码,这是加密法中最古老的一种,它使用的密码字母表与普通字母表相同,加密时把明文中的每个字母都用字母表中该字母右边移动固定数目后的位置的字母替代,并认为Z 后面是A。
这个固定数目称为偏移量,我们称其为密钥(Key)。
比如,取每个字母其右边第K个字母作为偏移量,则密钥为这个数字K。
举例来说,如果明文为“important”,其偏移量为3,Key=3,第一个字母“i”在字目表上右移 3 个字母后为“L”,照此类推,则密文(记做C)则为“LPSRUWDQW”。
可见,即使算法公开,别人如果不知道偏移量为3,仍然不能解密。
加密者不必担心算法被他人知道,他主要关心密钥不被他人知道。
单字母替换加密法由于是一个明文字母对应唯一一个密文字母。
密码分析者可将密文中字母出现的频率与这些统计相比较,因而容易逐个击破直至最后破译。
(2) 多字母加密方法多字母加密是使用密钥进行加密。
密钥是一组信息(一串字符)。
同一个明文经过不同的密钥加密后,其密文也会不同。
例1:维吉尼亚(Vigenere)密码。
V igenere(维吉利亚)是法国密码专家,以他名字命名的密码是这样的:假设明文m=m1m2m3......mn,密钥Key=K1K2K3......Kn,对应密文C=,则:Ci = mi + Ki mod 26,i = 1,2,......n,其中,26 个字母的序号对应是0------25mi 是明文中第i 个字母的序号,Ki 是密钥Key 中第i 个字母的序号,如果m=informationKey=STAR则C=AGFFJFAKAHN密钥Key 的循环出现使其长度与明文一样,密文中的字母A在明文中是i 和a;而明文中的字母o 在密文中是F 和H。
Vigenere 密码的密钥长度若增加,破译的难度也将增加,若密钥的长度与明文的长度一样,而且是随机的,Vigenere 密码可做到一次一密。
Vigenere 算法可以公开,但是,只要密钥Key=STAR 保密,就不能解密。
可见,密钥是加密技术的关键。
4. 转换加密法在替换加密发中,原文的顺序没被改变,而是通过各种字母映射关系把原文隐藏了起来。
转换加密法是将原字母的顺序打乱,将其重新排列。
如:it can allow students to get close up views 将其按顺序分为5 个字符的字符串:itcanallowstudentstogetcloseupviews再将其按先列后行的顺序排列,就形成了密文:即密文 C 为“IASNGOVTLTTESICLUSTEEAODTCUWNWEOLPS”如果将每一组的字母倒排,也形成一种密文:C=NACTIWOLLAEDUTSOTSTNLCTEGPUESOSWEIV 数据加密是大家熟知的保证安全通信的手段。
由于计算机技术的发展,人们借助于计算机进行分析处理,密码的破译能力也不断提高。
(二) 加密技术分类1. Kerckhoff 原则系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥。
这是著名的Kerckhoff 原则。
算法不是重点保密对象。
密钥是重点保密对象。
因此,加密技术实际上是围绕着密钥展开的。
当前有广泛使用的加密方法。
较老的也是较简单的称为“单钥“或“秘密密钥“加密,。
近来兴起的方法称“公开密钥“加密。
2. 加密技术分类根据信息加密使用的密钥体制的不同,可以将加密技术分为两类:1) 对称加密体制(对称密钥体制、单密钥体制)在专用网络上的安全性较满意,但是在公开的计算机网络使用时受制约。
2) 非对称加密体制(非对称密钥体制、公开密钥体制、公钥体制)。
适合在公开的计算机网络使用。
(三) DES算法概述DES( Data Encryption Standard)算法的入口参数有三个:Key、Data、Mode。
其中Key 为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
DES算法是这样工作的:如Mode为加密,则用Key 去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。
在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。
这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。
通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。
1 算法框架:DES对64(bit)位的明文分组M进行操作,M经过一个初始置换IP置换成m0,将m0明文分成左半部分和右半部分m0=(L0,R0),各32位长。
然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中数据与密匙结合。
经过16轮后,左,右半部分合在一起经过一个末置换,这样就完成了。
在每一轮中,密匙位移位,然后再从密匙的56位中选出48位。
通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作替代成新的32位数据,在将其置换换一次。
这四步运算构成了函数f。
然后,通过另一个异或运算,函数f的输出与左半部分结合,其结果成为新的右半部分,原来的右半部分成为新的左半部分。
将该操作重复16次,就实现了。
具体图所示。
2 DES解密在经过所有的代替、置换、异或盒循环之后,你也许认为解密算法与加密算法完全不同。
恰恰相反,经过精心选择的各种操作,获得了一个非常有用的性质:加密和解密使用相同的算法。
DES加密和解密唯一的不同是密匙的次序相反。
如果各轮加密密匙分别是K1,K2,K3....K16那么解密密匙就是K16,K15,K14 (1)(四)IDEA算法IDEA是International Data Encryption Algorithm 的缩写,是1990年由瑞士联邦技术学院来学嘉i 和Massey提出的建议标准算法称作PES( Proposed Encryption Standard) 。
Lai 和Massey 在1992 年进行了改进强化了抗差分分析的能力改称为IDEA 它也是对64bit大小的数据块加密的分组加密算法密钥长度为128位它基于“相异代数群上的混合运算”设计思想算法用硬件和软件实现都很容易且比DES在实现上快的多。
IDEA自问世以来,已经经历了大量的详细审查,对密码分析具有很强的抵抗能力,在多种商业产品中被使用。
1算法框架输入的64-位数据分组被分成4个16-位子分组:xl,X2,x3和x4。
这4个子分组成为算法的第一轮的输入,总共有8轮。
在每一轮中,这4个子分组相互相异或,相加,相乘,且与6个16-位子密钥相异或,相加,相乘。
在轮与轮间,第二和第三个子分组交换。
最后在输出变换中4个子分组与4个子密钥进行运算。
在每一轮中,执行的顺序如下:(1)X1和第一个子密钥相乘。
(2)x2和第二个子密钥相加。
(3)X3和第三个子密钥相加。
(4)x4和第四个子密钥相乘。
(5)将第(1)步和第(3)步的结果相异或。
·(6)将第(2)步和第(4)步的结果相异或。
(7)将第(5)步的结果与第五个子密钥相乘。
(8)将第(6)步和第(7)步的结果相加。
(9)将第(8)步的结果与第六个子密钥相乘。
(10)将第(7)步和第(9)步的结果相加。
(11)将第(1)步和第(9)步的结果相异或。
(12)将第(3)步和第(9)步的结果相异或。
(13)将第(2)步和第(10)步的结果相异或。
(14)将第(4)步和第(10)步的结果相异或。
每一轮的输出是第(11)、(12)、(13)和(14) 步的结果形成的4个子分组。
将中间两个分组分组交换(最后一轮除外)后,即为下一轮的输入。
经过8轮运算之后,有一个最终的输出变换:(1) X1和第一个子密钥相乘。
(2) x2和第二个子密钥相加。
(3) x3和第三个子密钥相加。
(4) x4和第四个子密钥相乘。
最后,这4个子分组重新连接到一起产生密文。
产生子密钥也很容易。
这个算法用了52个子密钥(8轮中的每一轮需要6个,其他4个用与输出变换)。
首先,将128-位密钥分成8个16-位子密钥。
这些是算法的第一批8个子密钥(第一轮六个,第二轮的头两个)。
然后,密钥向左环移x位后再分成8个子密钥。
开始4个用在第二轮,后面4个用在第三轮。
密钥再次向左环移25位产生另外8个子密钥,如此进行直到算法结束。
2 评价IDEA算法的密钥长度为128位。
设计者尽最大努力使该算法不受差分密码分析的影响,数学家已证明IDEA算法在其8圈迭代的第4圈之后便不受差分密码分析的影响了。
假定穷举法攻击有效的话,那么即使设计一种每秒种可以试验10亿个密钥的专用芯片,并将10亿片这样的芯片用于此项工作,仍需1013年才能解决问题;另一方面,若用1024片这样的芯片,有可能在一天内找到密钥,不过人们还无法找到足够的硅原子来制造这样一台机器。
目前,尚无一片公开发表的试图对IDEA进行密码分析的文章。
因此,就现在来看应当说IDEA是非常安全的。
(五)RSA算法RSA算法是R.Rirest、ASllalnlr和L.Adleman于1977年在美国麻省理工学院开发,于1978年首次公布,其算法如下:找两素数p和q取n=p*q取t=(p-1)*(q-1)取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1)取d*e%t==1这样最终得到三个数:n d e设消息为数M (M <n)设c=(M**d)%n就得到了加密后的消息c设m=(c**e)%n则m == M,从而完成对c的解密。