数字签名 : 证明 数据 或 身份的 真实性 ; 需要有以下功能 :
① 报文鉴别 : 用于 证明来源 , 接收者 可以 通过签名 确定 是哪个发送者 进行的签名 ;
② 防止抵赖 : 防止 发送者 否认签名 , 发送者 一旦签名 , 标记就打上了 , 无法抵赖 ;
③ 防止伪造 : 防止 接收者 伪造 发送者 的签名 ;
数字签名实现方式 : 数字签名算法很多 , 公钥算法 是最简单的算法 , 即 发送者 使用 私钥加密数据 , 接收者 使用 对应的公钥 解密数据 ;
( 接收者 持有着大量公钥 )
数字签名 功能 : 以 发送者 使用 私钥 加密密文 , 接收者 使用 公钥 解密密文 为例 ;
① 报文鉴别 : 发送者 持有 私钥 , 使用该私钥 加密密文 , 除了该 发送者之外 , 其它人无法产生该密文 , 接收者 使用 公钥解密出正确的信息 , 因此 接收者 相信 该密文 是发送者 使用私钥加密 并 发出的 ;
② 防止抵赖 : 如果发送者 抵赖 , 接收者可以将 密文 , 公钥 , 明文 , 提供给第三方进行验证 , 将密文通过公钥解密成明文 , 就能证明该密文是指定的发送者发送的 ;
③ 防止伪造 : 接收者 伪造了 密文 , 如果 接收者 将 伪造的 密文 , 公钥 , 明文 , 提供给第三方 , 使用 公钥 , 无法将密文解密成明文 , 证明该签名是伪造的 ;
数字签名弊端 :
① 数据窃取 :
的公钥可能有很多人持有 , 如果一个持有
公钥的一方截获了上述签名数据 , 就会被窃取数据 ;
② 解决方案 签名 + 公钥加密 : 在
数字签名基础上 , 再进行公钥加密 , 就将数据保密了 , 只有对应私钥才能对其进行解密 ;
保密数字签名实现方式 :
① 加密 : 发送者
使用
的私钥
( Secret Key A ) 加密数据 , 然后在 使用 接收者
的公钥
( Public Key B ) 加密数据 ;
② 解密 : 接收者
使用
的私钥
( Secret Key B ) 解密数据 , 然后再 使用 发送者
的公钥
解密数据 , 最终得到明文 ;
保密数字签名实现方式优势 : 接收者
既可以识别 发送者
的身份 , 又能保证数据不会被截获 ;