在某些情况下,我们在沟通时,并不想让这个资讯让他人截获。比如男女主人公约会时,会说老地方见(除了他们俩,鬼知道老地方是哪里);两个山寨头子第一次见面时,先对一下暗号,”天王盖地虎,宝塔镇河妖” 等等。
于是自然而然就有了密码学最开始的状态。

古典时期的密码学

两千年前,古罗马名将恺撒为了防止敌方截获情报,将罗马字母建立一张对应表,这样如果不知道密码本,即使截获一段信息也看不懂。 这种编码方式史称 “恺撒密码” 。

如对应表如下:
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如:

明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ

但是这种简单的对照表,只要多截获一些一些情报,就可以破解出来。比如B字母出现的概率为4.5%,那么概率在其上下浮动的密文字母就很有可能指向B。
所以电视剧里面那些,根据一组数字,这些数字对应圣经/康熙字典的页码和位置的加密方式,是很容易通过统计学的方法破译出来的。

现代密码学

现代密码学从古典时期发展至现在已经经历了成千上百的发展以及沉淀, 现代密码学以及没办法用传统模式找到明文与密文直接的规律转换,这样使得一些破解人员没法轻易的破解,保证了很多工业,企业乃至国家的通讯安全。

现代密码学不止关注信息的保密问题,还涉及到信息的完整性校验,以及信息发布的不可抵赖性(还衍生了一些数字签名算法)。
密码学主要有三个分支:哈希密码学(Hash) 非对称密码学 对称密码学。

对称加密

又称对称秘钥算法,私钥加密,共享秘钥加密。

这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。

常用的对称加密算法有:DES、3DES、AES、Blowfish、IDEA、RC5、RC6、RC4等
**
image.png
图中就是典型的对称加密算法的过程

他的加密过程只会使用一个私密密钥,这个私密密钥同时用在对数据的加密跟解密上面,也就是说如果破解者或者逆向者拿到这个密钥就能对数据做一系列处理,这就要求双方必须互相沟通保存好私密密钥,正因为有私密密钥的存在使得对称密码体系开放性变得非常差。

优点: 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。

缺点: 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

非对称加密

常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

image.png
指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。假设A用B的公钥加密消息,用A的私钥签名,B接到消息后,首先用A的公钥验证签名,确认后用自己的私钥解密消息。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得 十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以通过信息发送者的公钥来验证信息的来源是否真实,还可以通过数字签名确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。

非对称加密与对称加密的区别简单来说,就是处理数据的加密解密的方式不同,
解密有专门的解密密钥,加密也有专门的加密密钥。也就是说这样会大大提高了破译者的难度使得我们传授的文件或者文本更加安全。

优点: 非对称密码体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

缺点: 算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

image.png

image.png

哈希算法

Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。

常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1

加密算法的效能通常可以按照算法本身的复杂程度、密钥长度(密钥越长越安全)、加解密速度等来衡量。上述的算法中,除了DES密钥长度不够、MD2速度较慢已逐渐被淘汰外,其他算法仍在目前的加密系统产品中使用。
加密算法的选择:

由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。
对称加密算法不能实现签名,因此签名只能非对称算法。

由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。
在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。

那采用多少位的密钥呢? RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。