「CS/CRYPTOGRAPHY」- 加密技术分类

  CREATED BY JENKINSBOT

对称密钥(Symmetric Key)

对称密钥技术:对称密钥加密,又称专用密钥加密,加密、解密用同一个密钥,即发送和接收数据的双方必使用相同的密钥对明文进行加密和解密运算。

对称加密算法,也叫传统密码算法(秘密密钥算法、单钥算法),加密密钥能从解密密钥中推算出来。发件人和收件人共同拥有同一个密钥,既用于加密也用于解密。对称密钥加密是加密大量数据的一种行之有效的方法。对称密钥加密有许多种算法,但所有这些算法都有一个共同的目的:以可以还原的方式将明文(未加密的数据)转换为暗文。由于对称密钥加密在加密和解密时使用相同的密钥,所以这种加密过程的安全性取决于是否有未经授权的人获得了对称密钥。

甲与乙事先协商好对称密钥,具体加解密过程如下:
1)甲使用对称密钥对明文加密,并将密文发送给乙;
2)乙接收到密文后,使用对称密钥对密文解密,得到最初的明文;

特别注意

希望使用对称密钥加密通信的双方,在交换加密数据之前必须先安全地交换密钥。

优点缺点

优点是:
1)效率高(加解密速度快),算法简单,系统开销小,适合加密大量数据。

缺点是,实现困难,扩展性差:
1)实现困难原因在于密钥分发问题:当进行安全通信前,需要以安全方式进行密钥交换;
2)扩展性差表现在:每对通信用户之间都需要协商密钥,n个用户的团体就需要协商 n*(n-1)/2 个不同的密钥。

常见的对称加密算法

对称加密算法根据加密的对象不同,主要包括两类:流加密算法(Stream Algorithm);分组加密算法(Block Algorithm);

流加密算法:在算法过程中,连续输入元素,一次产生一个输出元素。典型的流密码算法一次加密一个字节的明文,密钥输入到一个伪随机字节生成器,产生一个表面随机的字节流,称为密钥流。流加密算法一般用在数据通信信道,浏览器或网络链路上。

常见的流加密算法:RC4 是 Ron Rivest 在 1987 年为 RSA Security 公司设计的流加密算法。它是密钥大小可变的流密码,使用面向字节的操作,就是实时的把信息加密成一个整体。该算法的速度可以达到 DES 加密的10倍左右。

分组加密算法:分组加密算法的输入为 明文分组 及 密钥,明文被分为两半,这两半数据通过 n 轮处理后组合成密文分组,每轮的输入为上轮的输出;同时子密钥也是由密钥产生。典型分组长度是 64 位

分组算法包括以下几种:
1)数据加密标准(DES, Data Encryption Standard):DES是由美国国家标准与技术研究院(NIST)开发的。DES是第一个得到广泛应用的密码算法,使用相同的密钥来加密和解密。DES是一种分组加密算法,输入的明文为64位,密钥为56位,生成的密文为64位(把数据加密成64位的block)。因密码容量只有56位,因此针对其不具备足够安全性的弱点,后又提出 3DES。
2)三重数据加密标准(3DES, Triple DES):3DES使用 128位密钥。信息首先使用56位的密钥加密,然后用另个 56 位的密钥译码,最后再用原始的 56 位密钥加密,这样3DES使用了有效的128位长度的密钥。Triple DES最大的优点就是可以使用已存在的软件和硬件,并且在DES加密算法上的技术可以轻松的实施Triple DES。
3)高级加密标准(AES,Advanced Encryption Standard):AES采用128位的分组长度,支持长度为128位、192位和256位的密钥长度,并可支持不同的平台。128位的密钥长度能够提供足够的安全性,而且比更长的密钥需要较少的处理时间。到目前为止,AES还没有出现任何致命缺陷。但由于快速DES芯片的大量生产,使得DES仍能继续使用。但AES取代DES和3DES以增强安全性和效率已是大势所趋。
4)IDEA(International Data Encryption Algorithm):IDEA是对称分组密码算法,输入明文为64位,密钥为128位,生成的密文为64位。应用方面有很多,其中SSL就将IDEA包含在其加密算法库中。
5)RC2 是 Ron Rivest 为 RSA公司设计的变长密钥加密算法,它是种 block 模式的密文,即把信息加密成64位的数据。鉴于其可使用不同长度的密钥,它的密钥长度可以从零到无限大,并且加密的速度依赖于密钥的大小。
6)RC5是由RSA公司的Rivest于1994年设计的一种新型的分组密码算法。RC5类似于RC2,也是block密文,但是这种算法采用不同的block大小和密钥大小。另外此算法中数据所通过的round也是不同的。一般建议使用128位密钥的RC5算法,并运行12到16个rounds。它是一种分组长度、密钥长度和迭代轮数都可变的分组迭代密码算法。
7)RC6不像其它一些较新的加密算法,RC6包括整个算法的家族。RC6系列在1998年被提出在RC5算法提出来后,经调查发现其在对特殊的round上加密时存在于一个理论上的漏洞,而RC6的设计弥补了这种漏洞。
8)国密算法是由国家密码管理局编制的一种商用密码分组标准对称算法,国密算法的分组长度和密钥长度都为128bit。在安全级别要求较高的情况下,使用SM1或SM4国密算法可以充分满足加密需求。
9)目前比较常用的对称密钥加密算法,主要包含DES(Data Encryption Standard)、3DES(Triple Data Encryption Standard)、AES(Advance Encrypt Standard)算法

非对称密钥(Asymmetric Key)

公开密钥技术(公钥加密算法,非对称密钥算法),用两个密钥:一个公共密钥和一个专用密钥。用户要保障专用密钥的安全;公共密钥则可以发布出去。公共密钥与专用密钥是有紧密关系的,用公共密钥加密的信息只能用专用密钥解密,反之亦然。由于公钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大简化了密钥管理。

甲事先获得乙的公钥,具体加解密过程如下:
1)甲使用乙的公钥对明文加密,并将密文发送给乙;
2)乙收到密文后,使用自己的私钥对密文解密,得到最初的明文;

公钥与私钥

这两个密钥在数学上是相关的。在公钥加密中,公钥可在通信双方之间公开传递,或在公用储备库中发布,但相关的私钥是保密的。只有使用私钥才能解密用公钥加密的数据。使用私钥加密的数据只能用公钥解密。

在加密和解密中,使用两个不同的密钥,私钥、公钥:
1)私钥用来保护数据;
2)公钥则由同一系统的人公用,用来检验信息及其发送者的真实性和身份;

除加密功能外,公钥系统还可以提供数字签名。

优点缺点

优点是,密钥安全性高:
1)公钥加密的优点是无法从一个密钥推导出另一个密钥;
2)公钥加密的信息只能用私钥进行解密。

缺点是,加解密对速度敏感:
1)算法非常复杂,导致加密大量数据所用的时间较长,而且加密后的报文较长,不利于网络传输。

基于公钥加密的优缺点,公钥加密适合对密钥或身份信息等敏感信息加密,从而在安全性上满足用户的需求。

常见的非对称加密算法

目前比较常用的公钥加密算法,主要包含DH(Diffie-Hellman)、RSA(Ron Rivest、AdiShamirh、LenAdleman)和DSA(Digital Signature Algorithm)算法。

DH算法一般用于双方协商出一个对称加密的密钥,即加密解密都是同一个密钥。实质是双方共享一些参数,然后各自生成密钥,然后根据数学原理,各自生成的密钥是相同的,这个密钥不会涉及到在链路中传播,但是之前的参数的交互会涉及链路传输。

RSA(Rivest-Shamir-Adleman)加密算法,是种非对称加密算法,RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)、伦纳德·阿德曼(Leonard Adleman)在美国麻省理工学院一起提出和开发的。RSA取名来自开发他们三者的名字,就是他们三人姓氏开头字母拼在一起组成的。。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。是第一个能同时用于加密和数字签名的算法。

DSA(Digital Signature Algorithm,数字签名算法)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。在保证数据的完整性、私有性、不可抵赖性等方面起着非常重要的作用。DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。在DSA数字签名和认证中,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥来验证签名的真实性。DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也
不能进行密钥交换,只用于签名,它比RSA要快很多。