Charles代理

https与非对称加密

对称加密是加密用key1,解密用key1

问题是这个key1必定是其中一方制定的,制定好后,必然有个传输的过程,而这个传输的过程中就可能会被盗窃,以网路来说,甲只能以明文将key1发送给乙,丙可能在某个路由劫持到这个包,得到key1,或者更改key1成key2发送给乙都是有可能的

非对称加密,就是一个人通过某种算法,可以一次生成一对key(称为key1,key2),这对key的神奇之处是将明文加密必须用key1,将密文解密只能用key2。加密解密用的不是同一个key

例如甲生成了一对非对称加密钥,将key1通过网路传递给乙,乙用该key1将明文加密成密文传递给甲,虽然此时,丙能劫持到key1是什么以及乙的密文,但丙无法更改乙的密文,这样乙的密文能正确传送给甲,甲解密成明文,就知道乙的真正信息

如果丙自称乙,然后用key1加密了自己的明文然后传给甲,这该怎么办?

但是至少丙无法修改乙的信息的,乙的信息能正确传递给甲了,这是一个进步了。

但是还有一个问题,如果甲将key1传递给乙,在网路上某个节点必经过丙,无法绕开,这样丙在截获key1后,自己生成了一对非对称加密钥keya,keyb,然后将keya传递给乙,然后乙误认为这是key1,然后甲乙通信时,乙用keya将明文加密,将密文传输到丙时,丙截获该消息,然后用keyb解密,修改信息,用key1加密,传输给甲,这该怎么办?

这里的关键问题就是乙如何知道他得到的公钥到底是甲的key1还是丙的keya?这就需要数字签名了。说起签名,大家都不陌生,小时候在作业本上签,长大了在合同文件上签,如果是明星还会给粉丝签,不管小时候的字写的有多烂,合同上有多中规中矩,明星签名有多龙飞凤舞,我们都要通过签名向世界宣布:这个东西是我的或者是我承认的!如果甲给自己发送出去的信息签上自己的签名,乙收到一看,确实是甲签的,那么信息的内容自然也是甲写的。而且数字签名还有一个功能是防止甲写的内容被丙篡改。

这里需要知道一点,一对非对称密钥,我们可以用公钥key1对明文加密,用私钥key2对密文解密;同样也可以用密钥key2对明文加密,用公钥key1对密文解密。

那这个数字签名怎么生成呢?

1. 首先,甲对自己写的内容用提取关键字方法method1,从内容中提取若干关键字,是为摘要。

2. 然后,对这个摘要用私钥加密成摘要密文,这就是数字签名。

3. 然后,甲将这段摘要密文和内容明文一并发送给乙。

4. 乙收到信息后,将摘要密文用公钥解密,发现得到的摘要明文确实是内容明文的关键字,那么就证明这确实是甲发出来的。(存疑)

5. 乙然后用甲的提取关键字方法method1,对内容明文进行提取,所提取出来的关键字与摘要明文别无二致,就证明内容明文没有被修改过。(存疑)

那么第三者丙的问题解决了吗?并没有哈,还是说keya和keyb,丙由于在甲和乙的网路的必经之路上,那么丙截获所有甲的信息,与甲进行key1,key2的通信;与乙进行keya,keyb的通信。甲的信息到丙后,经过丙的一顿操作,把有key1,key2处理的信息改造成keya,keyb处理的信息,数字签名也没用的。实际上乙对这个公钥key到底是key1还是keya还是不确定的,那怎么办呢?

于是证书起作用了,证书只有权威机构能发,甲到权威机构用权威机构的私钥,将甲的公钥key1和一些信息一起加密,生成一个密文,是为数字证书。

于是甲后面再发送信息时,在内容后面附上这个数字证书,乙收到后,用权威机构的公钥解开数字证书,就可以得到甲的公钥key1了

但是乙怎么知道权威机构的公钥有没有被丙调包呢?实际上权威机构的公钥是预装在电脑里的

但还有一个问题,甲的数字证书,除了甲的公钥key1,还有一些信息,这个信息是什么呢?

这个信息根据使用场景不同随便选的,例如https里,这个数字证书的其他信息就是网址

那么还有一个问题,甲乙通信的信息是否被权威机构截胡呢?

是可以这样的,但反正不是随便一个丙了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值