网络安全之加解密

说在前面

经常看谍战片的小伙伴们都知道,诸如《悬崖之上》,《潜伏》等,好多需要传递的消息都不是直接发送出去的,而是通过加密的方式,收件方通过特定的密码本来对内容进行破译和解读,这是因为发送出去的消息可能会被特务或者其他无线电台拦截,如果不进行加密,消息很快就会被破解。

网络中也是一样,一些商业机密,甚至是悄悄话都可能会被截获,消息会经过公司防火墙、路由器,也可能会有黑客对数据进行拦截,此时将发送的数据进行加密才可以保护隐私,你拦截到了,但是你破解不了!

对称加密

对称加密是最快速,最简单的一种加密方式,加密方和解密方使用同一套密钥(secret key),就好比有一个密码本:

1a : 我    1b : 你    1c : 码头  1d : 见面
2a : 今天  2b : 明天  2c : 后天  2d : 大后天
3a : 上午  3b : 下午  3c : 饭馆  3d : 交易
4a : 1点   4b : 2点   4c : 3点   4d : 4点
...

A,B 双方都有一套密码本,A给B写信 , 2b 3a 4b 1c 1d B拿到信件以后进行破译,就知道A想跟他明天上午2点在码头见面了。当然了,计算机世界的加密与上述过程还是不同的,他会针对二进制进行加密实现。

数据加密标准

网络世界中有自己的加密准则,数据加密标准(DES)算法在1976年被美国国家标准局定为使用标准。DES密钥长64位,其中56位参与运算,其余8位是校验位。目前已经证明,通过暴力破解的方法(遍历所有可能的密钥)是可以破解的,广大的极客爱好者甚至为了破解DES专门打造了破解机,后续陆续有人发明了微分密码分析法、线性分析法来破解DES,言而总之,目前DES已经不足够安全。

上有政策下有对策,DES给我们提供的更多的是一种思路,后续很多组织开始使用3DES,密钥长168位,这种虽然有一定的概率会被攻破,但是成本极高。

为了解决令人担忧的暴力破解问题,美国国家标准局与2001年发布了高级加密标准(AES),目前没有证据能支持AES可以被破解,日常项目开发中,可以使用AES加密。

对称加密的不足

有一个比较大的问题是密钥的管理与分配,比如和一个远在美国的老表想加密通信,我们势必要先把密钥发送到他手里,但是这个过程中很有可能被拦截。

非对称加密

与对称加密最直观的不同,应该就是他使用不同的密钥进行加密和解密。现实生活中常用的场景就是将对称加密的密钥进行非对称加密,然后发送给对方。

网络安全之加解密_第1张图片

非对称加密使用公钥(public key)和 私钥(private key),思考一个问题,密钥的创建者需要如何操作才能做到数据保密呢?回答正确!就是他把公钥发送给用户,用户通过公钥对数据进行加密,然后发送给创建者,创建者用私钥对数据进行解密,如此一来,就算公钥被窃取,也完全不影响数据的私密性。目前使用最广泛的加密算法是RSA算法。

应用场景

除了文初所说的,将对称加密的密钥进行加密,还有一个大家日常生活中更广泛使用的场景,我平时使用git时,喜欢使用ssh的方式进行操作。在此之前我们需要生成一对公钥和私钥。

ssh-keygen -t rsa -C 'your email'

生成了以后,在C:\User\当前用户名.ssh文件夹里面可以看到有这么两个文件:

id_rsa 私钥

id_rsa.pub 公钥

然后我们只需要把公钥上传至git中,后续push或者clone时,都会使用私钥对身份信息进行加密,服务端利用公钥进行解密,如果匹配成功,则完成对应操作。

非对称加密的不足

既然非对称加密不存在密钥丢失的风险(排除敌人派特工来你公司窃取),那么就用非对称加密就好了呀!**他的加密速度远远慢于对称加密。**有热心网友对效率进行了测试,对160bytes的明文进行加密,取10000次结果总和,对称加密算法比非对称加密快了整整1500倍!

摘要

这个摘要某种意义上类似于我们写论文时的摘要,看到摘要,论文内容是由八九也就了然了,换算到日常生活中,一个人的指纹也能唯一确定一个人,比如目前的指纹解锁,指纹破案等等。摘要算法得到的散列值又被称为”数字指纹“。

消息摘要算法有三个很鲜明的特点,

无论输入的消息有多长,计算出来的长度都是固定的

不同的输入必然得到不同的输出,同一个文件,哪怕改变一个标点,输出的结果相差巨大

加密过程中不需要密钥,摘要算法加密的数据是不可逆的

摘要算法有很多种,主要分为三大类MD、SHA和MAC。每种都有各自的衍生算法MD5SHA-1以及HmacSHA1等等,实战中推荐大家使用SHA-1,这个算法至今仍在许多安全协议中广为使用,包括SSH以及为https协议保驾护航的TLS/SSL

摘要的应用

摘要独有的特性就决定了他的价值,实际应用场景中,常见系统中,对于用户密码一般不存储明文,而是存储用户密码的摘要,这样即使数据库被攻破,也不会导致密码泄露。

另一个更重要的用途就是 签名 。上面说过摘要好比一个人的指纹,摁了指纹就没有办法否认自己曾经发送过该消息。其他人可以再伪造一份你发送的文件,但是文件上的指纹却没有办法伪造。上述过程一共涉及了信息安全的两个特性:完整性不可否认性

现在大家结合上面提到的知识想象一下,如何操作才可以让互联网上发送的信息实现这一想法?

假设: A 密钥创建者,将公钥分配给 B,A 发送消息给 B,此时A向B发送了一份文件。

网络安全之加解密_第2张图片

1、A使用摘要算法生成文件摘要;

2、A使用私钥将文件摘要加密;

3、A将加密后的摘要与文件发送至B;

4、B接收到信息后,使用公钥得到摘要信息,并将文件重新生成一遍摘要与解密私钥进行对比,如果一致,说明文件没有被篡改(完整性)。

5、B可以用A的公钥进行解密,所以这份文件就是A发给B的(不可否认性)。

以上。

敬请期待:《HTTPS网站为什么如此值得信赖?》

你可能感兴趣的:(Some,meaningful)