数字签名

为了支持https ,所以有必要弄清楚数字签名的概念。

参考阮一峰大神的博文进行学习:
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

1 加密方法

加密方法可以分为两大类。
- 单钥加密(private key cryptography)
- 双钥加密(public key cryptography)
前者的加密和解密过程都用同一套密码,后者的加密和解密过程用的是两套密码。
而我们主要用到的就是第二类

双钥加密的原理如下:
a) 公钥和私钥是一一对应的关系,有一把公钥就必然有一把与之对应的、独一无二的私钥,反之亦成立。
b) 所有的(公钥, 私钥)对都是不同的。
c) 用公钥可以解开私钥加密的信息,反之亦成立。
d) 同时生成公钥和私钥应该相对比较容易,但是从公钥推算出私钥,应该是很困难或者是不可能的。
目前通用的双钥加密算法为RSA

2 数字签名

2.1 双匙加密在消息传输中的使用。

实现两个用户间的加密通信。
公钥用来加密信息,私钥用来数字签名。
这里写图片描述

2.1.1 公匙加密

用户A 有自己的公匙 私匙,用户A想和用户B 加密通信,所以用户A将自己的公匙给了用户B ,用户B使用用户公匙对传输信息加密,发送给用户,用户A用私匙解密后得到信息,即实现用户B到用户A的加密通信。
这里写图片描述
这里带来了一个困惑:用户A到用户B的加密传输该怎么处理?
结论:使用用户B的公匙和私匙,把用户B的公匙交给用户A 重复上面的过程。
原因:因为有你的公匙给的可能不止一个人,即用户B,用户C,用户D,都可能有你的公匙,所以不能保证用户A与用户B的加密传输。

2.1.2数字签名(认证身份)

RSA的两个密钥是对称的,随便哪一个加密,可以用另一个解密。所以可以用公钥去验证私钥。这就为该种设计带来一个功能:数字签名。
用户A于用户约定好数字签名的内容(比如摘要),用户A对想要签名的内容(摘要)使用私匙加密得到签名,然后与message一同发送给用户B,用户使用公匙解密签名然后与约定好的签名内容(摘要)进行对比,一致则可以认定用户A身份。(因为用户A的公匙才能解密用户A私匙加密的内容)
这里写图片描述

2.2 数字证书

上述过程中,如果用户A的公匙被掉包了,即用户B就会和假的用户A通信。
这里就存在一个问题:如何确定公匙真的来自用户A?
用户A可以去找”证书中心”(certificate authority,简称CA),为公钥做认证,证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成”数字证书”(Digital Certificate)。

使用数字证书的流程:
就是用户A 将数字证书给用户B ,用户B使用证书中心的公匙(可以通过网络获取)对数字证书进行解密,成功得到用户A公匙,即可进行下一步。(而不是用户A直接把公匙给用户B),这里就可以确保用户A公匙的合法性。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值