早在N个世纪前,人们就开始想办法加密传输自己想要表达的东西。随着科技的发展,加密的方式也在不断变化着,而且作用也渐渐由加密信息演变出了身份验证与消息完整性验证。
一、扯扯加密
加密其实无外乎两种:对称加密与非对称加密。对称加密的好处在于速度快,而缺点在于密钥的分发和身份验证。非对称加密的优缺点当然也不用废话了。
1、对称加密
所谓对称加密,就是两面很对称的使用一个密钥进行加密和解密。我密码本加密完,把密文给你的同时,还得把密码本给你。这里就出现了一个很严重的问题——密文+密码本岂不是等于明文了!?对啊,所以如何把密码本安全的交给你就是关键了——密钥分发。这个机制有很多种,这里就不说了。
2、非对称加密
两头使用不同的密钥进行加密和解密就是非对称的。既然不同,那密钥的分发就好办了。网络上飞一个,本地存一个。 本地的这个永远不会飞到网络上去。这样,密钥就安全了。密钥安全了,信息也就安全了。而且,只有成对的密钥才能加解密,那就有了身份验证的功能,很好的回避了中间人攻击。
那有没有一种加密能回避它们的缺点,却继承它们的优点呢?还真有,充满智慧的人们将两种加密方式混合在一起使用。用对称密钥加密数据,然后用非对称密钥加密对称密钥。这样避免了分发过程中的密钥被破解,也可以快速加密数据,顺便还带上了身份验证——你不是“你”就甭想解密。
二、扯扯破解
破解,就是找到密钥。密钥一旦被找到,就宣布被破解。密钥可以是某个函数生成的,如果这个函数被破解或者可被逆向,那也算是被破解。罗圈话说回来——找密钥或找到能找到密钥的东西就算破解。
如何去找呢?可以搜集密文猜,可以密文明文对比,可以代数……好多,总之,想能猜出来的办法就好了。
三、扯扯散列函数
散列函数用来验证消息的完整性。完整性无法保证的话,数据的秘密也就谈不上了。目前大家接触最多的就是MD5了。
四、数字签名
这真是一个好东西,有点像在猪肉上盖章。盖了章的就是安全肉,不盖的就很危险。有了数字签名,数据就有了可溯源性,不可被否认。而且很多时候,你也可以用这个东西来宣告版权。
加密的安全在于密钥的管理,密文的完整性,与来源的不可否认性。当3者同时具备的时候,就是安全的。