现代密码学出现之前,历史上就已经存在过很多的加密技术。如公元前7世纪的斯巴达加密棒、16世纪数学家卡尔达诺发明的栅格密码、猪圈密码和恩格玛加密机等,这些传统加密技术都是直接作用在传统字母、数字上的,所以人们很快就找到了有效的破解方法。在第二次世界大战时,计算机科学领域发展出更复杂的密码,不再受限于书写的文字,而是可以加密任何二进制形式的数据,然而计算机的发展也使破解工作变得更加容易。1977年美国国家标准局公布的DES(Data Encryption Standard)加密标准,代表了现代密码学的诞生。从那时开始,密码学的各类加密算法应运而生,出现了RSA、SHA、MD5、AES、ECC等各种加密强度不断提高的加密技术。
加密算法和密钥是加密技术中最重要的两个元素。加密算法,是用于加密和解密的数学函数(通常是两个关联的函数,一个用于加密,一个用于解密)。密钥是加密和解密算法中的一种输入参数,也只有特定的通信方才会知道。一个加密系统的安全性在于密钥的保密性,而不是加密算法的保密性。
在数据传输中会存在三种角色——发送方、接收方和窃听方,窃听方是不被期望能获得传输数据的真实内容的。发送方首先对数据进行加密,接收方收到后再进行解密,这样即使其他人窃听了数据也无法解密。另外,窃听方如果想伪造发送数据,也需要提前对数据进行加密和签名。
图19.1.1 加密技术中的加密算法和密钥
图19.1.2 数据传输过程中的发送方、接收方和窃听方(www.xing528.com)
为了进行加密以及通信,人们发明了很多公开的算法,如对称算法与非对称算法(加密和解密使用不同的密钥进行)等。对于选择加密算法的一个常识是使用公开的算法,一方面是因为这些算法经过实践检验,另一方面是因为这样做对破译难度、破译条件和破译时间都有预估。理论上,对任何加密技术都可以通过一定的手段进行破解,不同的是破解难度和破解所需要的时间。
加密技术可以分为单向加密和双向加密。单向加密算法,是指在加密过程中不使用密钥,将数据加密处理成加密数据,使其无法被解密。因为无法通过加密数据反向得到原来的内容,所以单向加密算法又称为不可逆加密算法。单向加密算法一般使用哈希算法(Hash值)来生成密文,因此也称为哈希加密算法。
图19.1.3 单向加密技术
单向加密算法一般应用于用户密码验证。用户输入明文密码后,经过加密算法处理,将得到的相同加密密码数据在后台系统中进行认证。
根据密钥类型,双向加密技术可以分为对称加密算法、非对称加密算法和数字签名等,下面将对这几种概念进行介绍。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。