加密那点事

{公钥,私钥}是全球唯一的一对数据。公钥随意给人看,不保密。私钥牢牢的保存在一个设备的手里,不能泄漏给任何第三方。{公钥,私钥}对是可以通过openSSL等工具成对的生成的。什么你不相信openSSL?也可以学数学,研究RSA算法,研究什么大数分解质因数的什么,自己做。这就是非对称加密。

第一种使用方式: 密文 = 加密算法(  明文,秘钥  )   
                              明文 = 解密算法(  密文,公钥  )

第二种使用方式: 密文 = 加密算法(  明文,公钥  )   
                              明文 = 解密算法(  密文,私钥  )

第一种方式的内部逻辑是:接收方无法否认发送方的真实身份,因为啥呢?用对应的公钥解出来,在现有科技水平下,是不可能有人假冒另一个秘钥冒充发送方的(除非入室盗取发送方办公设备和秘钥)。但是不排除窃听者用公钥偷听内容,因为公钥是公开的。

第二种方式的内部逻辑是:发送方的发出的信息,无法被任何人窃取有用信息,因为只有拥有秘钥的接收方一个人能解出明文。但是,发送方是好人还是坏人,接收方不能通过秘钥逻辑得出结论,发送方有可能是得到公钥的骗子。

两种方式都有漏洞。而且,还有另外一个小问题,非对称加密运算量大且慢,不利信息流通。

为了解决上述问题。我们引入{证书,签名}机制 与 对称加密机制。你说什么?对称加密不是容易被窃听,伪造中间人吗?这不是走死路吗?是的。但是,三个臭皮匠顶个诸葛亮。

证书: 证明我是我的文件。你不是怀疑我是骗子吗?给你个证书,里面白字黑字写了我是我啊!

签名:什么?谁证明这张证书的真实性? 我有官方的红头盖章和签字啊!这就是所谓的“签名”

CA:能证明我是我的官方机构,我交点钱让他给我作证明我是我。

业务流程:
1)我向CA提交我本人的信息(我的公钥,我的域名),别忘了交点钱啊,可能还有保险费。
2)CA通过各种途径和交费多少,对我的身份做验证。有可能我资质不全,不通过我的申请
3)CA通过对我的审核。然后制作一张证书,内容最简为:
      证书正文:颁发者(CA),主体(我),我的公钥,算法相关的配置信息
      签名:签名 = 加密算法(  哈希摘要(证书正文),CA的秘钥  ) 

4)我就直接拿走证书用了,怎么用呢?
5)通讯开始做加密方面的握手,比如就和你通讯吧。我把证书传给你审阅。

你看了一下证书,取出颁发机构的CA公钥。根据算法配置信息取出预先准备的解密算法。
你要计算一个A =  解密算法(签名, CA公钥)。A大概是一个证书正文的哈希摘要的东西。
你还要做个事,计算一个B = 哈希摘要(证书明文)

如果  A==B, 那么可以证明证书为真。因为本质还是CA私钥加密,你无法否认CA的身份,你是信任CA说法的,所以你也承认了证书的真实性。

6) 然后你就相信我是我吧?错!刚才你是看了官方签名,还没仔细看正文内容,正文里写的是:兹证明此人是李二蛋...... 我叫李刚啊,兄弟!如果证书证明我是我(李刚),则进入下一步。

7)你现在接手掌控全局了,你给出一个任意的字符串P

P的密文 = 加密算法(P,我的公钥)               注:我的公钥,是从证书里取出的。
P的明文 = 解密算法(P的密文,我的私钥)
这样没有第三个人能偷取这个P,只有我能解出这个P,而P是你给的,我做不了手脚。

8)本次会话的交互用P做秘钥,采取对称加密方式

信息X的密文 = 对称加密算法(信息X的明文,P)
信息X的明文 = 对称解密算法(信息X的密文,P)

这个P的有效期仅限于本次会话,下次会话又会变。你不相信在这么短的几秒,甚至几十毫秒内,别人破解这个秘钥,所以你相信信息是安全的。也就是没等敌人破解,又变秘钥了。

这个过程叫做SSL握手。它是建立在TCP握手成功之后的。因此可以SSL层看做是传输控制层之上的加密层。其它业务,建立在SSL层之上,例如http建立在SSL层之上,那么我们把SSL+HTTP组合称为https。同理,MQTT建立在SSL层之上,叫做MQTTs

后面有个问题要解决,CA公钥从哪里取?世界上有成千上万的网站,一家CA吃不下来。所以采取了分级CA的方法。例如:国家级CA,省级CA,地市级CA。我找地市级CA给我认证。地市级CA的身份由省级CA认证,省级CA的身份有国家级CA认证。

业务流程如下:
1) 【我的证书】的签发机构是济南市CA,你要下载【济南市CA证书】,里面有济南市CA公钥给你用。你做了验证通过。但是你心里想【济南市CA证书】万一下载了个李鬼怎么办?
2)你查看【济南市CA证书】的签发机构是山东省CA,然后你下载【山东省CA证书】,拿里面的山东省CA公钥给【济南是CA证书】做签名解密验证,发现成功了。但是你还是怀疑【山东省CA证书】下载了个李鬼,然后你就看到【山东省CA证书】的签发机构是国家CA
3)恰好呢,【国家CA】原本就在你的电脑里,你一直用它相信它,你做了最后一次验证,用国家CA的公钥验证【山东省CA证书】的签名。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值