分享

信息安全(ssl、数字证书、数字签名、加密算法)

 联合参谋学院 2019-01-08

1.前言

信息安全包括两点:一是信息的保密性,所谓的保密就是指只有你和你允许的人能看到信息。二是信息的完整性,所谓完整性就是指对方发的信息和你接收到的信息是一致的,中间没有被别人篡改过。

2.加密与算法

加密是保护信息安全的手段之一,对信息加密是需要加密算法的。

1.摘要算法

摘要算法就是把任意一个大小的文档,通过计算得到一个固定大小((比如32))的字符串。并且,这个过程是不可逆的,也就是说,没有办法通过字符串还原那个文档的内容。还有就是任意两个文档得到相同结果字符串的概率很小,几乎为0。

2.对称加密

加密就是把一段文本通过算法计算生成另一段文本。这个过程是可逆的,可逆的过程是解密。目前我们说的加密算法都是基于密钥的。加密算法不能单独工作,需要跟密钥配合。加密算法是公开的,但密钥是保密的。对称加密是指加密和解密需要的密钥是同一个。比如:你写了一篇表白想发给你的女神,但是又不想别人看到内容所以采用加密。然后你跟女神提前约定好加密算法和密钥(比如女神的生日之类的),只有你们两个人知道。在发之前,你用加密算法和密钥给表白加密,然后把加密后的表白发送给女神。女神收到以后用加密算法和密钥对表白进行解密,然后再读取表白的内容。在信息发送过程即使有人拦截了这篇表白,因为没有密钥,所以并不能解密还原表白的原始内容。对称加密的优点是速度快,缺点是安全性差(双方持有的密钥一致,有一方的密钥公开后那么信息将不再安全)。

3.非对称加密

如果了解了对称加密,那么非对称加密就简单了。从字面上理解就是加密和解密用的是不同的密钥,其中一个称为公钥,另一个称为私钥。公钥就是公开的,大家都可以知道,而私钥只有你自己知道。公钥和私钥的联系是:用公钥加密的内容只能由相应的私钥来解密,反过来,用私钥加密的内容只能由相应的公钥来解密。而且很重要的一点是,通过公钥并不能推导出私钥,或者说很困难。还是上面的例子,如果用非对称加密来处理的话就是:你把表白用女神的公钥来加密,然后把加密后的表白发给女神,女神收到后用私钥来解密。在信息发送过程中即使有人拦截了因为并没有女神的私钥,也没有办法看到表白的原始内容。非对称加密的优点是安全性强(因为私钥只有你知道),缺点是加密过程速度慢。

4.数字签名

先来说下现实生活中的签名,比如逛超市刷信用卡,刷完卡之后都要要求签名,这样做的好处就是商家可以通过你的签名来判断刷卡操作是不是你本人来完成的(虽然这对商家意义不大),当然这里面有个前提条件:只有你自己能重现你的签名,其他人做不到(笔迹鉴定)
回到信息世界,还是上面的例子,女神收到表白后对你动心了,但是她不确定表白到底是不是你发出的,或者表白内容是否经过别人修改了。如果表白是用对称加密的,那么其他人拦截到表白后,虽然没有密钥,但是可以随便修改表白的内容,这样女神解密表白后并不知道原始的表白内容被修改了。如果表白是用非对称加密的,那么其他人拦截到表白后,重新写一份表白并用女神的公钥加密后发给女神,这样表白内容也被修改了。以上两种情况,不管是用对称加密还是非对称加密,表白信息都可能被别人修改,那怎么才能知道表白信息有没有被别人修改呢?
数字签名的目的就是为了证明你发的信息并没有被别人修改,原理就是非对称加密(证明是你本人)和摘要算法(证明信息没有被修改)结合,当然这里面也有个前提条件:只有你自己有私钥,其他人没有。还是上面的例子,你写一份表白,写完后用摘要算法计算表白信息的摘要值,计算完之后再用你自己的私钥给摘要值加密,加密后的摘要值跟表白信息一起发给女神,女神收到信息(表白+摘要)后,首先用你的公钥解密摘要信息获取摘要的原始内容A,然后再用相同的摘要算法计算表白信息的摘要值B,最后比对A和B的值是不是一致,如果一致就说明表白信息是你发的并且没有被修改过。如果表白信息被拦截后并且被修改了,只有将修改过的表白信息重新计算摘要值并重新加密才行,虽然表白信息和表白的摘要信息别人都可以改,但是别人并没有你的私钥,这样女神最后得到的A和B的值是不相等的,结果就是女神知道信息被别人修改过并不可靠。
这里有两个疑点可以思考:
一:将摘要信息加密,那表白信息还需要加密么?如果表白信息不想被别人看到,还是需要加密的,那么用对称加密还是非对称加密呢?
二:女神有你的公钥,如果公钥被别人调包了呢?

3.数字证书

1.数字证书的用途

以上“数字签名”例子中,我们都默认了一个前提条件:女神拥有的确实是你的公钥,如果女神的公钥被别人调包了呢?继续上面的实例:如果女神的公钥被你的一个情敌调包换成情敌的公钥了,当你把表白和数字签名发给女神的过程中,情敌把信息拦截了,拦截后重新写了一份表白并用他自己的私钥生成数字签名(重复你的操作,只不过内容已经换成情敌的了)重新发给女神,这时女神并不知道“你”已经换成“情敌”了,那你就悲剧了哦。这时数字证书就起作用了,数字证书就是为了给女神证明发信人的身份的。

2.数字证书包含的内容

在现实生活里,为了证明我们身份,公安机关会给每个人颁发一个身份证。在信息世界里,数字证书就是对方的身份证。同样的,数字证书也有专门的发证机关Certificate Authority,简称CA。发证机关颁发的数字证书里包含以下基本内容:
1.证书颁发机关
2.证书持有者名称/服务器域名
3.证书有效期
4.证书签名算法(摘要算法和加密算法)
5.证书签名值
6.证书所有者加密算法
7.证书所有者公钥

3.如何验证

现实中要验证一个人的身份,首先核对这个人的身份证有效性,然后再核对本人相貌跟身份证上的照片是否一致。数字证书也是一样的验证思路:
1.验证数字证书有效性
数字证书里包含了发证机关对这张证书的数字签名,而浏览器默认内置了发证机关的公钥(暂且这么理解),拿到公钥后先解密证书的数字签名拿到证书的摘要,然后浏览器用证书的摘要算法重新计算下证书的摘要,最后比对这两者的值是否相等,如果相等证明这张数字证书确实是发证机关颁发的有效证书。
2.验证“相貌”
如何验证该证书的所有者就是跟浏览器正在对话的网站呢?
数字证书包含了web网站服务器的一个或者多个域名,浏览器会验证该域名跟正在对话的服务器的域名是否匹配(防止MITM)。

4.数字证书的级联

颁发证书的机构是可以有级联关系的,即A机构可以委派B机构颁发证书,B机构也可以委派C颁发证书,如果网站的证书是C颁发的,那么需要用B的证书去验证C颁发的证书,同理需要用A机构的证书去验证B颁发的证书,这个过程是递归的,A机构的证书被称为“根证书”。“根证书”是配置在我们电脑上,默认是安全的。

4.ssl

前面讨论过信息安全的技术,而ssl就是基于这些技术的一套协议。 ssl全称Secure Socket Layer,它是介于传输层(TCP)和应用层(比如HTTP)的协议,以下简单介绍下ssl的工作原理:

1.握手协议:

第一步:客户端将ssl协议版本信息、客户端支持的加密方法、客户端生成的随机数A发给服务端
第二步:服务端确认双方使用的加密方法,并将服务端的数字证书、服务端生成的随机数B发给客户端,同时有个可选请求,即服务端可以要求客户端发送自己的证书(双方认证时需要)。
第三步:客户端确认数字证书的有效性,然后生成一个新的随机数C,并使用数字证书中的公钥(服务端的),加密这个随机数,发给服务端
第四步:服务端使用自己的私钥,解密获取客户端的随机数
第五步:此时服务端和客户端都拥有三个随机数A、B、C,再根据约定的加密算法,生成一份密钥(对称加密),握手结束的结果就是双方都持有该密钥

2.传输协议:

传输协议是基于上一步产生的密钥对信息进行对称加密的(对称加密的性能比非对称的好)。
传输信息时,除了对信息本身加密外,还对每条信息生成时间戳,再用摘要算法计算信息+时间戳得到摘要值,那每次发送信息时就是:encrypt(message) + hash(message + timestamp)
时间戳的好处:
1.防止篡改信息
2.防止消息重放

5.总结

数字签名是为了证明对方发的信息并没有被更改过,但前提条件是你确认对方是可靠的,即你拥有的公钥确实是对方的公钥而不是其他人的公钥。而数字证书就是为了证明你拥有的公钥确实是对方的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多