报文完整性和数字签名

密码散列函数

流行的有MD5,SHA-1算法,将一段明文换算成一个固定长度的散列输出。MD5输出为128bit,SHA-1输出为160bit。
不同输入必须对应不同输出的散列才是有效的散列函数。

报文鉴别码(MAC)

MD5的加盐就属于MAC,用于防止第三方篡改报文,并生成对应的散列。

数字签名

数字签名必须满足可鉴别,不可伪造等特点。
用私钥进行加密,用公钥对加密内容进行解密就可以让接收方验证数据来源,这中间首先有非对称加密的耗时问题,所以首先将明文用散列算法做成固定长度的散列,然后再进行加密验签。
公钥解密的内容,只能是私钥进行加密的,所以这个私钥能作为签名者的标识。
接下来公钥的发放的问题,如何能确定一个公钥确实是某一实体的公钥呢 ?这通常是由认证中心(CA)完成的,CA的职责:

    1. 证实一个实体的真实身份。CA必须有严格的身份验证流程保证一个实体的真实性。
    1. CA会生成一个将身份信息和公钥绑定起来的证书。证书包含这个公钥与其所有者全局唯一的身份标识信息。

端点鉴别

端点鉴别就是一个实体经过计算机网络向另一个实体证明其身份的过程。如密码登陆。
密码口令用于防止IP哄骗,但口令也可能被拦截,即使加密的口令也受制于回放攻击。
于是有了不重数这个解决方案:
不重数:是在一个协议的生存期中只使用一次的数,注意不是周期,即一旦某个协议使用了一个不重数,就永远也不会再使用那个数字了。

    1. 客户端发请求给服务端。
    1. 服务端选择一个不重数发给服务端。
    1. 客户端用对称加密将不重数加密,发送给服务端。
    1. 服务端解密验证不重数,确认客户端身份,并且是活跃的。

你可能感兴趣的:(报文完整性和数字签名)