网络安全基础

网络安全基础

内容包括个人整理的公钥/密钥、数据摘要、数字签名

公钥/密钥

两种数据加密的方式:对称加密和非对称加密

对称加密:大概就是数据发送者(client)和数据接收者(server)使用同一个密码打开加密的数据

非对称加密:有server产生一对公钥和私钥,公钥是开放的,私钥仅server自身持有,当client向server发送数据时,利用公钥将数据加密,server用私钥解开加密的数据。这样就完成一次数据的加密传输。

公钥加密的数据只能由私钥解开,同样私钥加密的数据只能公钥解开。公钥是开放的,任何人都可以获得公钥,私钥不对外开放只有server自己知道自己的私钥。

当client需要访问server时,会请求一个公钥,server将公钥发送给client,client使用公钥加密自己要发送的数据,加密后的数据发送到server后,server会用私钥将加密的数据解开。

以上就完成了一个最简单的数据加密流程。

数据摘要、数字签名

数据摘要:Message Digest,使用算法(如MD5)提取一份明文数据的摘要,不同的数据会产生不同的摘要,数据摘要可以唯一标识一份数据,类似于id。

数字签名:Digital Signature,数字签名是数据摘要+密钥组合得到的,可以标识一份数据,即表明这份数据就是‘我’发出的。就好像合同上真正的签名一样。

第二段流程,继续上面简单的流程。

此时server要向client发送响应的数据,这时server会用算法(MD5,HASH等)生成一份数据摘要(digest),且用自己的私钥加密数据摘要,这样就形成了一份数字签名(signature)。

也就是说,数字签名=私钥加密数据摘要。

以上server向client发送的数据为:私钥加密后的数据,以及一份数字签名。

client收到这些数据后,用server的公钥将数字签名解开,能够解开说明数据的确是server发出的,解开数字签名后得到摘要,称其为“摘要1”,client将私钥加密后的数据解开后,利用相同的算法生成一份数据摘要,称其为“摘要2”,将‘摘要1’与‘摘要2’相比较,就可以确定,数据在传送的过程中没有受到中间人的篡改。

稍微总结一下。

在上面简单的流程中,包含几个问题。

首先你不能确认数据在client和server中间传输的时候,有没有经过第三方的劫持或篡改,比较两份数据的摘要,可以解决这个问题。

其次,client如何能够判断这份数据就是由server发送的?数字签名可以解决这个问题。

第三段流程:

如果client的公钥被替换,比如被替换成第三方的公钥(假的公钥),那么第三方就可以伪装成server向client发送自己的私钥加密的数据,client用假的公钥成功解密加密数据。这样第三方就伪装成server,开始与client通信了。

要解决这个问题,即出现了CA(certificate authority),CA生成一对公钥私钥,自身保留私钥,CA用自己的公钥对server的公钥和一些相关信息加密,得到数字证书。

注意数字证书就包含了server的公钥。

server每次向client发送数据的时候,再附上一份CA的数字证书。client用CA的公钥解开数字证书,就得到了server的公钥,这样可以确保这个公钥就是server,没有被替换过。

上面过程就相当于把公钥交给可以信任的CA保管,确保公钥的安全性,避免上述client拿到的公钥被替换、窃取的问题。

最后总结一份完整流程:

server保留自己的私钥,将公钥发送给CA,CA用自己的私钥对server的公钥加密,得到一份数字证书,把数字证书返还给server,server在向client响应数据的时候,会带着数字证书过去,client通过自己拥有的CA的公钥(在浏览器内嵌的CA)解密数字证书,就得到了server的公钥,然后就可以解密数据了。

参考博文:

https://blog.csdn.net/xiaoxiaoley/article/details/82886222

https://www.cnblogs.com/klvchen/archive/2018/11/01/9889040.html

在实际应用中,将对称加密与非对称加密结合,在对server的公钥加密时使用非对称加密,安全性高,对传输的数据使用对称加密,传输速度快。

可以看看这篇博文,总结非常到位:https://www.jianshu.com/p/14cd2c9d2cd2

 

 

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值