消息认证码的局限性:可以校验消息的整性,但是无法防止否认

数字签名:

1.生成消息签名的行为:由消息发送者进行

2.验证消息签名的行为:由消息接收者进行,也可以由第三方来完成,这是和消息认证码不同的地方

数字签名中的生成签名和验证签名使用的是不同的密钥来完成的,分为签名密钥和验证密钥

与公钥密码相类似,区别在于数字签名就是将公钥密码反过来使用

 

公钥密码和数字签名对比:

 

私钥

公钥

公钥密码

私钥解密

公钥加密

数字签名

生成签名使用(加密)

验证签名使用(解密)

持有密钥

个人持有

任何人可持有

之前也说过,公钥密码耗时,所以一般数字签名的使用:摘要算法+公钥算法 = 数字签名

 在这里我们为了要确定自己获得的公钥合法,需要使用证书,证书就是将公钥当作一条消息,由一个可信的第三方对其签名后所得到的公钥。

公钥证书

证书中的信息,拥有公钥和第三方的数字签名,证书使用过程

1.小A 生成密钥对

2.小A在可信任第三方注册证书

3.小B从第三方下载证书

证书标准规范 x.509

证书拥有的信息:

1.签名前的证书

2.数字签名算法

3.数字签名

 

为什么需要数字签名

答:获取公钥,有可能受到中间人攻击,得到的是攻击者的公钥,为了避免这种情况,从第三方机构的证书中获取公钥。

 

保证消息传输的机密性,完整性,认证的例子

1.小A发送给小B消息不能被窃听  --机密性   解决方案:对称密码

2.小A发送给小B消息不能被串改   --完整性   解决方案:单向散列函数

3.双方要彼此确认是本人     --认证问题   解决方案:数字签名

 

TLS协议

该协议分为TLS握手协议和TLS记录协议,记录协议负责加密,握手协议处理加密外的操作

TLS握手协议

分为四部分:握手协议、密码规格变更协议、警告协议、应用数据协议。

握手协议:负责客户端和服务器之间协商决定密码算法(套件)和共享密钥,证书的认证操作也在这一步执行。

密码规格变更协议:负责向通信对象传达变更密码方式的信号

警告协议:发生错误是将错误传达给对方

应用数据协议:将TLS上面承载的应用数据传达给通信对象的协议。

TLS记录协议

负责消息的压缩、加密以及数据的认证。

                                                                          TLS握手协议中使用的技术

密码技术

作用

公钥密码

加密预备主密码

单项散列函数

构成随机数生成器

数字签名

验证服务器会客户端的证书

伪随机数生成器

生产预备主密码

根据主密码生产密钥

生产初始化向量

主密码

主密码是TLS客户端和服务端之间协商的一个密码数值,TLS机密性和数据认证全部依靠这个数值

通过  预备主密码、客户端随机数、服务器随机数计算出主密码

用于生成:

1.对称密码的密钥 

2.消息认证码的密钥

3.对称密码CBC模式所使用的初始化向量