2023年6月27日发(作者:)
信息安全(ssl、数字证书、数字签名、加密算法)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机构的证书被称为“根证书”。“根证书”是配置在我们电脑上,默认是安全的。 前⾯讨论过信息安全的技术,⽽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.总结 数字签名是为了证明对⽅发的信息并没有被更改过,但前提条件是你确认对⽅是可靠的,即你拥有的公钥确实是对⽅的公钥⽽不是其他⼈的公钥。⽽数字证书就是为了证明你拥有的公钥确实是对⽅的。 参考:
发布者:admin,转转请注明出处:http://www.yc00.com/web/1687804682a46523.html
评论列表(0条)