密钥推算法
密钥是一种参数(它是在明文转换为密文或将密文转换为明文的算法中输入的数据),加密算法是明文转换成密文的变换函数,同样的密钥可以用不同的加密算法,得到的密文就不一样了。
举一个示例,例如凯撒密码,该字母向后旋转n位,该n是密钥, 向后移动的方法称为算法。 尽管使用相同的算法,但是对明文用不同的密钥加密的结果不一样。
例如,Run使用Key = 1(密钥)的凯撒密码,即Svo,而Key = 2(密钥)的加密,则成为Twp,因此密钥和算法存在很大差异。
现在大多数公钥密码系统都使用RSA算法,但是每个人的密钥的密文不同。 通常,该算法是公共的,密钥不是公共的。 加密算法恰好包含两个输入参数,一个是明文,另一个是密钥。
(1)密钥推算法扩展阅读:
1、密钥算法
使用极其复杂的加密算法,即使解密者可以加密他选择的任意数量的明文,也无法找出破译密文的方法。 秘密密钥的一个弱点是解密密钥必须与加密密码相同,这引发了如何安全分配密钥的问题。
2、公钥算法
满足三个条件:第一个条件是指在对密文应用解密算法后可以获得明文。 第二个条件是指不可能从密文中得出解密算法。 第三个条件是指即使任何明文形式的选择都无法解密密码,解密程序也可以加密。 如果满足上述条件,则可以公开加密算法。
2. 什么是密钥分散,有什么用
密钥分散算法简称Diversify,是指将一个双长度的密钥MK,对分散数据进行处理,推导出一个双长度的密钥DK。
推到DK左半部分的方法是:
1、将分散数据的最右8个字节作为输入数据;
2、将MK作为加密密钥;
3、用MK对输入数据进行3DES运算;
推到DK右半部分的方法是:
1、将分散数据的最右8个字节求反,作为输入数据;
2、将MK作为加密密钥;
3、用MK对输入数据进行3DES运算;
3. RAS密码计算方法
RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数
( 大于 100个十进制位)的函数。据猜测,从一个密钥和密文
推断出明文的难度等同于分解两个大素数的积。
密钥对的产生:选择两个大素数,p 和q 。计算:
n = p * q
然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 )
互质。最后,利用Euclid 算法计算解密密钥d, 满足
e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )
其中n和d也要互质。数e和
n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任
何人知道。 加密信息 m(二进制表示)时,首先把m分成等长数据
块 m1 ,m2,..., mi ,块长s,其中 2^s <= n, s 尽可能的大。对
应的密文是:
ci = mi^e ( mod n ) ( a )
解密时作如下计算:
mi = ci^d ( mod n ) ( b )
4. 对称密钥算法与非对称密钥算法有何区别
对称密钥算法与非对称密钥算法的区别
密码学中两种常见的密码算法为对称密码算法(单钥密码算法)和非对称密码算法(公钥密码算法)。
对称密码算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只要通信需要保密,密钥就必须保密。对称算法的加密和解密表示为:
Ek(M)=C
Dk(C)=M
对称算法可分为两类。一次只对明文中的单个位(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组位进行运算,这些位组称为分组,相应的算法称为分组算法或分组密码。现代计算机密码算法的典型分组长度为64位――这个长度大到足以防止分析破译,但又小到足以方便作用。
这种算法具有如下的特性:
Dk(Ek(M))=M
常用的采用对称密码术的加密方案有5个组成部分(如图所示)
l)明文:原始信息。
2)加密算法:以密钥为参数,对明文进行多种置换和转换的规则和步骤,变换结果为密文。
3)密钥:加密与解密算法的参数,直接影响对明文进行变换的结果。
4)密文:对明文进行变换的结果。
5)解密算法:加密算法的逆变换,以密文为输入、密钥为参数,变换结果为明文。
对称密码术的优点在于效率高(加/解密速度能达到数十兆/秒或更多),算法简单,系统开销小,适合加密大量数据。
尽管对称密码术有一些很好的特性,但它也存在着明显的缺陷,包括:
l)进行安全通信前需要以安全方式进行密钥交换。这一步骤,在某种情况下是可行的,但在某些情况下会非常困难,甚至无法实现。
2)规模复杂。举例来说,A与B两人之间的密钥必须不同于A和C两人之间的密钥,否则给B的消息的安全性就会受到威胁。在有1000个用户的团体中,A需要保持至少999个密钥(更确切的说是1000个,如果她需要留一个密钥给他自己加密数据)。对于该团体中的其它用户,此种倩况同样存在。这样,这个团体一共需要将近50万个不同的密钥!推而广之,n个用户的团体需要N2/2个不同的密钥。
通过应用基于对称密码的中心服务结构,上述问题有所缓解。在这个体系中,团体中的任何一个用户与中心服务器(通常称作密钥分配中心)共享一个密钥。因而,需要存储的密钥数量基本上和团体的人数差不多,而且中心服务器也可以为以前互相不认识的用户充当“介绍人”。但是,这个与安全密切相关的中心服务器必须随时都是在线的,因为只要服务器一掉线,用户间的通信将不可能进行。这就意味着中心服务器是整个通信成败的关键和受攻击的焦点,也意味着它还是一个庞大组织通信服务的“瓶颈”
非对称密钥算法是指一个加密算法的加密密钥和解密密钥是不一样的,或者说不能由其中一个密钥推导出另一个密钥。1、加解密时采用的密钥的差异:从上述对对称密钥算法和非对称密钥算法的描述中可看出,对称密钥加解密使用的同一个密钥,或者能从加密密钥很容易推出解密密钥;②对称密钥算法具有加密处理简单,加解密速度快,密钥较短,发展历史悠久等特点,非对称密钥算法具有加解密速度慢的特点,密钥尺寸大,发展历史较短等特点。
5. CPU卡密钥管理系统的相关算法
在本系统,加密算法主要采用非常成熟的、强度比较高的DES算法。为了进一步提高系统安全强度,在实际系统中,采用的是以DES算法为基础的3DES算法。关算法简介如下。 3DES算法用两个密钥(KL和KR)对明文(X)进行3次DES加密/解密[2]。
3DES的加密方式:Y=DES(KL,DES-1(KR,DES(KL,X)))
对应的解密方式为:X=DES-1(KL,DES(KR,DES-1(KL,Y)))
其中DES(K,X)表示用密钥K对数据X进行DES加密,DES-1(K,Y)表示用密钥K对数据Y进行解密(以下同)。 为了支持分级加密传递功能,CPU卡还采用了密钥分散算法,它是指将一个双长度(16字节)的密钥MK,对分散数据进行处理,推
导出一个双长度的密钥DK(DKLDKR)。其算法如下[3]:
推导DK左半部分DKL的方法是:
·将分散数据的最右16个数字作为输入数据;
·将MK作为加密密钥;
·用MK对输入数据进行3DEA运算。
推导DK右半部分DKR的方法:
·将分散数据的最右16个数字求反,作为输入数据;
·将MK作为加密密钥;
·用MK对输入数据进行3DEA运算。 第一步,输入种子A和种子B:由两个独立的人各输入一个16位数(或少于16位),分别作为SeedA和SeedB;
第二步,计算种子C:SeedC=SeedA◎SeedB;
第三步,密钥种子的初始化:
·KEYINIT=常量
·Seed=DES-1(DES(DES-1(KEYINIT,SeedC),SeedB),SeedA)
·设K3=Seed
第四步,密钥种子的生成:
·K0=DES-1(DES(DES-1(K3,SeedC),SeedB),SeedA)K3
·K1=DES-1(DES(DES-1(K0,SeedC),SeedB),SeedA)
·K2=DES-1(DES(DES-1(K1,SeedC),SeedB),SeedA)
·K3=DES-1(DES(DES-1(K2,SeedC),SeedB),SeedA)
第五卡,密钥种子的检验:
·K4=K0+K2不是弱DES密钥;
·K5=K1+K3不是北DES密钥;
·K4不等于K5;
第六卡,主密钥生成:
·A=K0K1
·B=K2K3
·MK=A+B,MK即为生成的原始密钥
重复执行从第四步以第六步,直到所有的原始密钥全部生成。
本系统采用了成熟、安全性高的加密算法和完美的体系结构,其安全性是由CPU的安全性和DES算法的完全强度来保证的。经过国内某单位两年多的实际运行,证明本系统较好地贯彻了“秘密在于密钥”的思想,具有较高的完全性和先进性,主要表现为如下几个特点:
(1)采用完全性高的CPU卡作为密钥的产生、存储和传递介质,保证了密钥数据的安全性;CPU卡独特的安全体系保证了其中的数据不会被非法操作;
(2)利用硬件加密技术,对整个过程中所使用的临时变量进行加密处理,并对传递过程进行线路加密,保证了在生成和传递过程的安全性;
(3)分级传递结构,使系统具有一定的扩展性,既支持独立系统,也可用于分布式系统;
(4)系统具有自愈合功能,对关键数据进行备份,保证了系统具有一定的抗毁能力;
(5)系统结构简单、实现方便、性价比较高。