舌头上有一个小黑点:密码学

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 01:22:40
一. 密码学简介
据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密 码机,密码学在战争中起着非常重要的作用。
随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准 (DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了 AES、ECC等。我国也相应提出了自己国家的ECC、SCB2、SCH等加密算法。
使用密码学可以达到以下目的:
1.       保密性:防止用户的标识或数据被读取。
2.       数据完整性:防止数据被更改。
3.       身份验证:确保数据发自特定的一方。
二. 加密算法介绍
根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。
两者的区别在于:
对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的私密性。
非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。
2.1 对称加密算法
对称加密算法用来对敏感数据等信息进行加密,现在,通常使用分组密码(block cipher)或序列密码(stream cipher)实现对称密码,由于序列密码算法不常用,所以本文将只讨论分组密码,常用的分组密码算法包括:
1.       DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
2.       3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
3.       AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。
分组密钥常见术语
置换(Permutation)与替代(Substitution)
置换与替代是对称密钥中常用的两种手段。置换是对数据重新进行排列,而替代是将一个数据单元替换为另一个。通常替代要借助非线性查找表来进行,即 DES和AES中所称的S-Box。
轮(Round)
对称密钥中经常对输入进行多轮迭代,这些迭代通常操作相同,只是具体上有些许差异,对称密钥的这种特性使得对称密钥适于用流水结构实现,因而数据吞吐量 大,容易实现高速加解密。
2.1.1  DES
DES算法全称为Data Encryption Standard,即数据加密算法,它是IBM公司于1975年研究成功并公开发表的。DES算法有三个输入:Key、Data、Mode。其中 Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密 或解密。
算法原理
DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其算法主要分为两步:
1 初始置换
其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长3 2位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输 出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0= D57D49……D7。
2 逆置换
经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。
2.1.2      3DES
3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模 块,通过组合分组方法设计出分组加密算法。3DES一共有两种,一种是使用两个56位长度的密钥key1和key2,这样密码强度提高到了112位;另一 种是使用三个56位长度的密钥key1、key2和key3,这样密码强度提高到了168位。
使用两个密钥的3DES:
加密过程:用key1加密,用key2解密再用key1加密
解密过程:用key1解密,用key2加密再用key1解密
使用三个密钥的3DES:
加密过程:用key1加密,用key2解密再用key3加密
解密过程:用key3解密,用key2加密再用key1解密
2.1.3   AES
2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准。Rijndael被选中成为将来的 AES。 Rijndael是在 1999 年下半年,由研究员 Joan Daemen 和 Vincent Rijmen 创建的。AES 正日益成为加密各种形式的电子数据的实际标准。
美国标准与技术研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高级加密标准 (AES) 规范。
算法原理
AES 算法基于置换和替代运算。AES 使用几种不同的方法来执行置换和替代运算。
AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位长度的密钥,并且用 128 位(16字节)分组密钥(轮密钥)加密和解密数据。数据长度为128位。通过分组密码返回的加密数据长度与输入数据长度相同。迭代加密使用一个循环结构, 在该循环中重复置换(permutation)和替代(substitution)输入数据。
密钥扩展(Key Expansion)
AES对原始密钥进行密钥扩展操作,将其扩展并应用到每轮迭代加密中。
State矩阵
AES将输入和每轮迭代的中间结果表达为4×4矩阵,矩阵中每个元素为8位。AES算法的主循环对State矩阵执行四种不同的操作,分别为 SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换)、AddRoundKey(轮密钥相加)。
SubBytes:将State矩阵中的字节用S-box中相应字节替换
ShiftRows:为置换操作,它将State矩阵每行中的字节向左移位。
MixColumns:为替代操作,它用State矩阵每列字节的值进行GF(28)域中的加法和乘法操作,并替代对应字 节。
AddRoundKey:用KeyExpansion中生成的KeySchedule前四行对State矩阵执行字节异或(XOR)操作,并用轮密 钥表中相应值对State矩阵进行操作,得到新的State矩阵
AES与3DES的比较
算法名称
算法类型
密钥长度
数据长度
AES
对称block密码
128、192、256位
128位
3DES
对称feistel密码
112位或168位
64位
2.1.4      分组密码工作方式
分组密码每次加密一个数据分组,这个分组的位数可以是随意的,一般选择64(DES、3DES)或者128位(AES)。
2.1.4.1    ECB(Electronic Code Book:电码本)
ECB是最简单的模式,同样的明文分组总是加密成相同的密文分组。这对于发送单一的块数据来说是非常好的,如密钥。但对执行一个加密的信息流来说不 是很好,因为如果相同的明文多次发送以后,同样的密文也会被多次发送。
ECB最大的弱点是对每一个块用相同的方式进行加密。如果我们的密钥或者数据不断发生变化,ECB是完全安全的。但是如果类似的块经过同样的密钥加 密发出以后,攻击者可能获得一些我们并不想让别人知道的信息。
优点:
1.简单;
2.有利于并行计算;
3.误差不会被传送;
缺点:
1.不能隐藏明文的模式;
2.可能对明文进行主动攻击;
2.1.4.2    CBC(Cipher Block Chaining:密码分组链接)
CBC模式改变了加密方式,同样的明文分组不一定加密或解密同样的密文块,因此解决了ECB存在的主要问题。CBC使用前一分组的信息加密当前分 组。因此 和ECB模式大不相同。这个方法依然存在问题,那就是相同的信息仍然加密成相同的密文,因为所有的分组是同时变成密文分组的。为了解决这个问题,我们引入 一个Initialization Vector(IV,初始化向量),也就是前不久有人问到的IV问题。IV仅仅是一个初始化加密程序的随机数。它无需秘密保存,但队每一个信息来说它都是 不同 的,通过这个方式,即使有两条相同的信息,只要他们有不同的IV,那么他们加密后的密文也是不同的。从这个意义上来说,初始化向量无疑就和口令加密过程中 使用的盐值是一样的。
CBC很适合文本传输,但它每一次都需要传送一个完整的数据块,一般选8个字节。
优点:
1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。
缺点:
1.不利于并行计算;
2.误差传递;
3.需要初始化向量IV
CFB(Cipher FeedBack:密码反馈)
CFB的工作方式与CBC类似,但它可以执行更小的数据块,典型的有8位,这非常适合加密像聊天对话这样的信息,因为每次可以发送单一的字节数据 块。
和CBC一样,CFB也需要一个IV,且相同及钥发送的每条信息的IV都必须是唯一的。
优点:
1.隐藏了明文模式;
2.分组密码转化为流模式;
3.可以及时加密传送小于分组的数据;
缺点:
1.不利于并行计算;
2.误差传送:一个明文单元损坏影响多个单元;
3.唯一的IV;
OFB(Output FeedBack:输出反馈)
OFB除了在传输中能给数据提供更好的保护,防止数据丢失外,其他和CFB类似。密文中一位出错,也只造成明文中的一位出错,其他的方式会造成整个 块丢失。
和CBC以及CFB一样,OFB也需要一个IV。
优点:
1.隐藏了明文模式;
2.分组密码转化为流模式;
3.可以及时加密传送小于分组的数据;
缺点:
1.不利于并行计算;
2.对明文的主动攻击是可能的;
3.误差传送:一个明文单元损坏影响多个单元;
2.1.4.3    分组密码的填充方式
分组密码算法在ECB和CBC工作方式下需要明文输入为分组大小的整数倍。如果要加密的明文不为分组大小的整数倍,就需要在加密之前使用填充位串对 明文进行填充。当解密时,接收方需要知道如何没有二义性地移除填充位串。
方法1:将需要填充字节的个数作为填充值填充到分组中
这个方法适用于任何明文,ASCII或者二进制。对于DES,分组大小为64位,所以填充值应该在1到8之间,对于AES,分组大小为128位,所 以填充值在1到16之间。这也可以提供对解密是否正确进行的一个额外校验(如果该值不对,则解密不对,但是如果该值对,也不保证解密一定是对的)。
方法2:用0x80后接数个0x00作为填充位串填充到分组中
这个方法适用于任何明文,ASCII或者二进制。智能卡更倾向于使用这种填充方法。这也是NIST 800-38a中推荐的方法。
方法3:用0x00填充,最后一个字节用填充字节的个数作为填充值填充
这个是方法1的变形。在解密后,读最后一个字节的值,如果在正确区间内就扔掉最后一个字节所描述的那么多个字节。该方法适用于任何明文,ASCII 或者二进制。
方法4:用全0填充
该方法局限性很大,在处理ASCII文本时没有问题,但是在处理可能包含0x00值的二进制明文时会不适用。
方法5:用空格字符0x20填充
该方法也只适用于简单ASCII文本。
如果使用的是CFB或者OFB工作方式,那么密文可以与明文具有相同大小,不需要填充。序列加密算法如RC4或者PC1也不需要填充。
2.2公钥密码算法
公钥密码中的加密与解密过程如下图所示:
公钥密码中的签名与验证过程如下图:
1.确实是用户B在文件上签了名(身份认证)
2.别人无法伪造用户B的签名(不可抵赖)
3.所签的信息在传输过程中没有被篡改或替换(数据完整)
公钥密码中的密钥交换过程:
1.数字信封:用公钥密码加密对称密钥
2.密钥协商:根据双方交互的信息各自计算出相同的对称密钥(ga, gb, gab)
2.2.1 RSA算法
2.2.1.1 简介
当前最著名、应用最广泛的公钥系统RSA是在1978年,由美国麻省理工学院(MIT)的Rivest、Shamir和Adleman在题为《获得 数字签名和公开钥密码系统的方法》的论文中提出的。它是一个基于数论的非对称(公开钥)密码体制,是一种分组密码体制。其名称来自于三个发明者的姓名首字 母。 它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。 RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。
RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密 接受。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。
该算法基于下面的两个事实,这些事实保证了RSA算法的安全有效性:
1) 已有确定一个数是不是质数的快速算法;
2) 尚未找到确定一个合数的质因子的快速算法。
2.2.1.2工作原理
1)  任意选取两个不同的大质数p和q,计算乘积r=p*q;
2)  任 意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。注意:e的选取是很
容易的,例如,所有大于p和q的质数都可用。
3)  确定解密密钥d: d * e = 1 modulo(p - 1)*(q - 1) 根据e、p和q可以容易地计算出
d。
4)  公开整数r和e,但是不公开d;
5)  将明文P (假设P是一个小于r的整数)加密为密文C,计算方法为:
C = Pe modulo r
6)  将密文C解密为明文P,计算方法为:
P = Cd modulo r
然而只根据r和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行
加密,但只有授权用户(知道d)才可对密文解密。
2.2.1.3优点
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻 击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。该算法的加密密钥和加密算法分开,使得密钥分配更为方便。它特别符合计算机网络环境。对 于 网上的大量用户,可以将加密密钥用电话簿的方式印出。如果某用户想与另一用户进行保密通信,只需从公钥簿上查出对方的加密密钥,用它对所传送的信息加密发 出即可。对方收到信息后,用仅为自己所知的解密密钥将信息脱密,了解报文的内容。由此可看出,RSA算法解决了大量网络用户密钥管理的难题,这是公钥密码 系统相对于对称密码系统最突出的优点。
2.2.1.4缺点
1) 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
2) 安全性, RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度
与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NPC问题。目前,人们已能分解140多个十进制位的大素数,这就要求使用更长的密 钥,速度更慢;另外,目前人们正在积极寻找攻击RSA的方法,如选择密文攻击,一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。 然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:
( XM )d = Xd *Md mod n
前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。 但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签 名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash Function对文档作HASH处理,或同时使用不同的签名算法。除了利用公共模数,人们还尝试一些利用解密指数或φ(n)等等攻击.
3) 速度太慢,由于RSA 的分组长度太大,为保证安全性,n 至少也要 600 bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目 前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。为了速度问题,目前人们广泛使用单,公钥密码结合使 用的方法,优缺点互补:单钥密码加密速度快,人们用它来加密较长的文件,然后用RSA来给文件密钥加密,极好的解决了单钥密码的密钥分发问题。
2.2.2 ECC算法
2.2.2.1 简介
1985年Neal Koblitz和Victor Miller分别独立提出基于ECDLP(椭圆曲线离散对数问题)的ECC密码系统,自此ECC在密码学界数学界引起了广泛的越来越热烈的研究兴趣。经过 诸多知名密码学家和数学家近二十年的研究表明,ECC所基于的ECDLP较IFP和DLP(离散对数问题)更难解,目前人们能找到最有效的求解ECDLP 的算法(Pollard rho)也是指数级时间复杂度的。而近几年数学家和密码学家们已经证明的一些结论暗示着ECDLP甚至可能不存在亚指数时间复杂度的求解算法,这暗示着 ECC可能是唯一无法用亚指数算法破解的公钥密码。
在已知的公钥密码体制中,椭圆曲线密码体制具有每bit 最高强度的安全性,最快的处理速度和最低的开销,至今解决椭圆曲线离散对数最好的算法是完全指数时间算法。 而IFP 和DLP 都有亚指数时间算法,这意味着随着长度的增加,求解ECDLP 的难度比求解IFP 和DLP 的难度增加得快得多。 因此ECC仅需要更小的密钥长度就可以提供跟RSA 和DSA 相当的安全性。 研究证明 ,基于椭圆曲线上的密码体制使用160bit 的密钥提供的安全性相当于RSA 和DSA 使用1024bit 密钥提供的安全性,210bit 与2048bit 相当。 而且在私钥运算(签名和解密) 方面椭圆曲线上的密码体制要比RSA 和DSA 快很多,但它的签名验证和加密速度太慢。 另外,ECC 系统的密钥生成速度比RSA 快百倍以上。 同时,椭圆曲线资源丰富,同一个有限域上存在着大量不同的椭圆曲线,这为安全性增加了额外的保证。
另外,ECC从实现的角度来看也有更高的效率。因为其具有密钥短这一天然的优势,就比RSA有着更多的应用领域。由于椭圆曲线密码的密钥较短(如 160位ECC的私钥长度仅为1024位RSA的1/6。4,160位公钥长度仅为1024位RSA的1/3。2),这可以为智能卡这类资源极度受限的嵌 入式系统节省较多的存储空间,使得其它程序可利用更多的存储器来完成复杂的任务。而对于像芯片这样的实现方式,密钥短也能使整个生产的成本下降。在使用的 过程中也会由于密钥短而得到更高的速度。
2.2.2.2原理——椭圆曲线上的难题
椭圆曲线上离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q 的情况下求出小于p的正整数k。可以证明由k和P计算Q比较容易,而由Q和P计算k则比较困难。
将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,将椭圆曲线中的乘法运算与离散对数中的模幂运算相对应,我们就可以建立基于椭圆曲线的对应的 密码体制。
例如,对应Diffie-Hellman公钥系统,我们可以通过如下方式在椭圆曲线上予以实现:在E上选取生成元P,要求由P产生的群元素足够多, 通信双方A和B分别选取a和b,a和b 予以保密,但将aP和bP公开,A和B间通信用的密钥为abP,这是第三者无法得知的。
对应ELGamal密码系统可以采用如下的方式在椭圆曲线上予以实现:
将明文m嵌入到E上Pm点,选一点B∈E,每一用户都选一整数a,0<a<N,N为阶数已知,a保密,aB公开。欲向A送m,可送去下面一对数偶: [kB,Pm+k(aAB)],k是随机产生的整数。A可以从kB求得k(aAB)。通过:Pm+k(aAB)- k(aAB)=Pm恢复Pm。同样对应DSA,考虑如下等式:
K=kG  [其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数]
不难发现,给定k和G,根据加法法则,计算K很容易;但给定K和G,求k就相对困难了。
这就是椭圆曲线加密算法采用的难题。我们把点G称为基点(base point),k(k2.2.2.3 RSA与ECC的比较
ECC和RSA相比,在许多方面都有对绝对的优势,主要体现在以下方面:
1)抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。
2)计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。
3)存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用 具有特别重要的意义。
4)带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络 领域具有广泛的应用前景。
ECC的这些特点使它必将取代RSA,成为通用的公钥加密算法。比如SET协议的制定者已
把它作为下一代SET协议中缺省的公钥密码算法。
下面两张表示是RSA和ECC的安全性和速度的比较。
攻破时间(MIPS年)
RSA/DSA(密钥长度)
ECC密钥长度
RSA/ECC密钥长度比
104
512
106
5:1
108
768
132
6:1
1011
1024
160
7:1
1020
2048
210
10:1
1078
21000
600
35:1
RSA和ECC安全模长得比较
功能
Security Builder 1.2
BSAFE 3.0
163位ECC(ms)
1,023位RSA(ms)
密钥对生成
3.8
4,708.3
签名
2.1(ECNRA)
228.4
3.0(ECDSA)
认证
9.9(ECNRA)
12.7
10.7(ECDSA)
Diffie—Hellman密钥交换
7.3
1,654.0
RSA和ECC速度比较
2.3 散列算法(Hash)
2.3.1简介
散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始 信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具 有这些特性的散列结果就可以用于验证信息是否被修改。
2.3.1.1 Hash算法的功能和安全特性
1.输入报文的长度没有限制;
2.相同的输入产生相同的输出;
3.对输入任何报文,能生成固定长度的消息摘要(数字指纹);
4.从报文能方便地算出摘要。
5.随机性:消息摘要看起来随机,难以确定输入/输出的关系;
6.唯一性:几乎不可能找到两个消息产生相同的消息摘要;
7.单向性:即如果给出输出,则很难确定出输入消息。
2.3.1.2 hash算法用途
1)计算消息摘要
2)用于数字签名或公开信息的完整性验证。计算MAC(Message Authentication Code)
将保密信息和双方共享的密钥一起计算摘要,用于保密信息的完整性验证。
2.3.2 SHA-1
在1993年,安全散列算法(SHA)由美国国家标准和技术协会(NIST)提出,并作为联邦信息处理标准(FIPS PUB 180)公布;1995年又发布了一个修订版FIPS PUB 180-1,通常称之为SHA-1。SHA-1是基于MD4算法的,并且它的设计在很大程度上是模仿MD4的。现在已成为公认的最安全的散列算法之一,并 被广泛使用。
NIST 发布了三个额外的 SHA 变体,每个都有更长的讯息摘要。以它们的摘要长度 (以位元计算) 加在原名后面来命名:"SHA-256", "SHA-384" 和 "SHA-512"。它们发布于 2001年的 FIPS PUB 180-2 草稿中,随即通过审查和评论。包含 SHA-1 的 FIPS PUB 180-2,于 2002年以官方标准发布。这些新的散列函数并没有接受像 SHA-1 一样的公众密码社群做详细的检验,所以它们的密码安全性还不被大家广泛的信任。2004年2月,发布了一次 FIPS PUB 180-2 的变更通知,加入了一个额外的变种 "SHA-224",定义了符合双金钥 3DES 所需的金钥长度。
三、加密算法的选择
前面的章节已经介绍了对称解密算法和非对称加密算法,有很多人疑惑:那我们在实际使用的过程中究竟该使用哪一种比较好呢?
我们应该根据自己的使用特点来确定,由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算 法,提高加解密速度。
对称加密算法不能实现签名,因此签名只能非对称算法。
由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。
在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的 优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。
如果在选定了加密算法后,那采用多少位的密钥呢?一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来 说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。
四、密码学在现代的应用
随着密码学商业应用的普及,公钥密码学受到前所未有的重视。除传统的密码应用系统外,PKI系统以公钥密码技术为主,提供加密、签名、认证、密钥管 理、分配等功能。
保密通信:保密通信是密码学产生的动因。使用公私钥密码体制进行保密通信时,信息接收者只有知道对应的密钥才可以解密该信息。
数字签名:数字签名技术可以代替传统的手写签名,而且从安全的角度考虑,数字签名具有很好的防伪造功能。在政府机关、军事领域、商业领域有广泛的应 用环境。
秘密共享:秘密共享技术是指将一个秘密信息利用密码技术分拆成n个称为共享因子的信息,分发给n个成员,只有k(k≤n)个合法成员的共享因子才可 以恢复该秘密信息,其中任何一个或m(m≤k)个成员合作都不知道该秘密信息。利用秘密共享技术可以控制任何需要多个人共同控制的秘密信息、命令等。
认证功能:在公开的信道上进行敏感信息的传输,采用签名技术实现对消息的真实性、完整性进行验证,通过验证公钥证书实现对通信主体的身份验证。
密钥管理:密钥是保密系统中更为脆弱而重要的环节,公钥密码体制是解决密钥管理工作的有力工具;利用公钥密码体制进行密钥协商和产生,保密通信双方 不需要事先共享秘密信息;利用公钥密码体制进行密钥分发、保护、密钥托管、密钥恢复等。
基于公钥密码体制可以实现以上通用功能以外,还可以设计实现以下的系统:安全电子商务系统、电子现金系统、电子选举系统、电子招投标系统、电子彩票 系统等。
公钥密码体制的产生是密码学由传统的政府、军事等应用领域走向商用、民用的基础,同时互联网、电子商务的发展为密码学的发展开辟了更为广阔的前景。
五、加密算法的未来
随着计算方法的改进,计算机运行速度的加快,网络的发展,越来越多的算法被破解。
在2004年国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做的破译MD5、HAVAL-128、MD4和 RIPEMD算法的报告,令在场的国际顶尖密码学专家都为之震惊,意味着这些算法将从应用中淘汰。随后,SHA-1也被宣告被破解。
历史上有三次对DES有影响的攻击实验。1997年,利用当时各国 7万台计算机,历时96天破解了DES的密钥。1998年,电子边境基金会(EFF)用25万美元制造的专用计算机,用56小时破解了DES的密钥。 1999年,EFF用22小时15分完成了破解工作。因此。曾经有过卓越贡献的DES也不能满足我们日益增长的需求了。
最近,一组研究人员成功的把一个512位的整数分解因子,宣告了RSA的破解。
我们说数据的安全是相对的,可以说在一定时期一定条件下是安全的,随着硬件和网络的发展,或者是另一个王小云的出现,目前的常用加密算法都有可能在 短时间内被破解,那时我们不得不使用更长的密钥或更加先进的算法,才能保证数据的安全,因此加密算法依然需要不断发展和完善,提供更高的加密安全强度和运 算速度。
纵观这两种算法一个从DES到3DES再到AES,一个从RSA到ECC。其发展角度无不是从密钥的简单性,成本的低廉性,管理的简易 性,算法的复杂性,保密的安全性以及计算的快速性这几个方面去考虑。因此,未来算法的发展也必定是从这几个角度出发的,而且在实际操作中往往把这两种算法 结合起来,也需将来一种集两种算法优点于一身的新型算法将会出现,到那个时候,电子商务的实现必将更加的快捷和安全