[Math] 对称加密与非对称加密

密码算法和协议,主要可以分为4个领域:
(1)对称加密:用于加密任意大小的数据块,或数据流的内容,包括消息、文件、加密密钥和口令。
(2)非对称加密:用于加密小的数据块,如加密密钥,或者数字签名中使用的 Hash 函数值。
(3)数据完整性算法:用于保护数据块(例如一条消息)的内容免于被修改。
(4)认证协议:有许多基于密码算法的认证方案,用来认证实体的真实性。

对称加密

对称加密,也称传统加密,或单钥加密,是20世纪70年代公钥密码产生之前唯一的加密类型。

对称密码是一种加解密使用相同密钥的密码体制,也称为传统密码。
对称密码利用密钥和加密算法,将明文变为密文,运用相同的密钥和解密算法,可以从密文恢复出明文。

分组密码是一种加/解密方案,它将输入的明文分组当做一个整体处理,输出一个等长的密文分组。
许多分组密码都采用 Feistel 结果,这样的结构由许多相同的轮函数组成。
每一轮中,对输入数据的一半进行代替,接着用一个置换来交换数据的两个等分部分。
扩展初始的密钥是的每一轮中使用不同的子密钥。

DES(Data Encryption Standard,数据加密标准)一直是应用最为广泛的加密算法,
它于1977年被美国国家标准局(NBS),及现在的国家标准和技术协会(NIST)采纳为联邦信息处理标准46(FIPS PUB 46)。
DES 体现了经典的 Feistel 结构,使用64位的分组和56位的密钥。
它将64位的输入经过一系列变换得到64位的输出,解密则使用了相同的步骤和相同的密钥。

56位密钥共有2的56次方种可能,这个数字大概是7.2乘以10的16次方。
1998年7月,电子前哨基金会(EFF)宣布一台造价不到25万美元的特殊设计的机器,破译了DES,
DES终于被清楚的证明是不安全的,这次攻击所花的时间不到三天。
幸运的是,有大量DES的替代算法,最重要的有AES和3DES。

一个有限域就是有有限个元素的域。
可以证明有限域的阶(元素的个数)一定可以写为素数的幂形式p的n次方,n为一个整数,p为素数。
阶为p的有限域,可以有模p算术来定义。
阶为p的n次方(n>1)的有限域,可以有多项式算术来定义。

美国国家标准技术研究所(NIST)在2001年发布了AES(Advanced Encryption Standard,高级加密标准),
AES是一个对称分组密码算法,旨在取代DES称为广泛使用的标准。
其分组长度为128位,密钥长度为128位,192位或256位。
AES未采用 Feistel 结构,每轮由4个单独的运算组成:字节代替,置换,有限域上的算术运算,以及与密钥的异或运算。

DES在穷举攻击之下相对比较脆弱,因此很多人在想办法用某种算法替代它。
一种方案是设计全新的算法,例如AES。
还有一种方案,是对DES进行多次加密,且使用多个密钥,例如三重DES(3DES)算法

多重加密是将一个加密算法多次使用的技术。
在第一使用中,明文通过加密算法转化为密文,然后将该密文作为输入重新执行加密算法。
三重DES,在三个阶段使用DES算法,共用到两组或三组密钥。

流密码是对称密码算法,从明文输入流逐位或逐字节产生密文输出。
使用最为广泛的此类密码是 RC4。
RC4 是 Ron Rivest 为 RSA 公司在1987年设计的一种流密码。它是一个可变密钥长度,面向字节操作的流密码。
它被用于为网络浏览器和服务器间通信而制定的 SSL/TLS(安全套接字协议/传输层安全协议)标准中,
它也应用于作为IEEE 802.11无线局域网标准一部分WEP(Wired Equivalent Privacy)协议和新的WiFi受保护访问协议(WPA)中。

非对称加密

公钥密码学的发展是整个密码学发展历史中最伟大的一次革命,也许可以说是唯一的一次革命。
公钥密码学与其前的密码学完全不同。
首先,公钥算法,是基于数学函数而不是基于代替和置换。
更重要的是,与只使用一个密钥的对称密码不同,公钥密码是非对称的,它使用两个独立的密钥。

非对称加密是一种密码体制,其加密算法和解密算法使用不同的密钥:一个是公钥,另一个是私钥。
非对称密码,也称为公钥密码。
非对称密码使用两个密钥中的一个以及加密算法将明文转换为密文。
用另一个密钥以及解密算法,从密文恢复出明文。

应用最广泛的公钥密码是RSA(Rivest-Shamir-Adleman)。
它是MIT的Ron Rivest,Adi Shamir和Len Adleman与1977年提出并与1978年首次发表的算法,是最早提出的成功的公钥算法之一。
RSA是一种分组密码,其明文和密文均是0至n-1之间的整数,通常n的大小为1024位二进制数,或309位十进制数。

Diffie-Hellman密钥交换是一个简单的公钥算法,这个协议使得通信的双方利用基于离散对数问题的公钥算法建立密钥。
许多商业商品都使用了这种密钥交换技术。
该算法的目的是使两个用户能安全的交换密钥,以便在后续的通信中用该密钥对信息加密。
该算法本身只限于进行密钥交换。

1984年,T.Elgamal提出了一种基于离散对数的公开密钥体制,它与 Diffie-Hellman密钥分配体制密切相关。
ElGamal密码体系应用于一些技术标准中,如数字签名标准(DSS)和S/MIME电子邮件标准。

大多数使用公钥密码学进行加密和数字签名的产品和标准都使用RSA算法。
为了保证RSA使用的安全性,最近这些年来密钥的位数一直在增加,这对使用RSA的应用是很重的负担,
对进行大量安全交易的电子商务来说更是如此。

近来出现的一种具有强大竞争力的椭圆曲线密码学(ECC)对RSA提出了挑战。
与RSA相比,ECC的主要诱人之处在于,它可以使用比RSA短得多的密钥得到相同的安全性,因此可以减少处理负荷。


参考

密码编码学与网络安全

你可能感兴趣的:([Math] 对称加密与非对称加密)