1、关于公钥和私钥
公钥和私钥或者称非对称密钥和对称密钥是密码体制的两种方式。私钥体制指加解密密钥相同或彼此容易推出,因此加解密密钥都是保密的。公钥体制指加解密密钥彼此无法推出,公钥公开,私钥保密。
由上定义可知,公钥私钥是两种不同的密码体制,而不是两个不同的应用或两个不同的密钥。因此在加密和签名应用中,公钥私钥均可以使用。
2、关于加密和签名的实际应用
在实际加密应用中,由于密钥长度和效率问题,公钥很少应用于直接的数据加密,而主要用于加密密钥的分发和协商。真正的加密过程是由私钥体制实现的。
在数字签名应用中公钥私钥体制均可实现。典型的私钥签名体制如kerberos系统。私钥签名系统的优势在于低成本和低复杂性,但需要极高可信度的在线认证服务器,这在复杂的网络环境中往往难以实现。而公钥体制的特性能够很好克服这一弱点,但它的缺点也很明显,投资大,而且多个认证体系之间的交叉认证实现困难。
3、过于公钥体制在加密应用和签名应用中的实现
公钥体制在加密和签名中最直观的区别是:加密用公钥加密数据,私钥解密数据;签名用私钥签名消息,公钥验证签名。
主要的公钥签名体制如RSA签名方案,DSS签名方案等。消息的Hash函数处理不是数字签名必须的,但在实现中,往往先用Hash函数处理消息,以压缩消息长度及提供一定的加密功能。
非对称加密最初可能是为了解决密匙保管与交换难题. 非对称加密过程中用一个密匙加密只能用另一个密匙解密. 由此解决了密匙交换难题: 公匙随意发放; 保管也大为简化: 保护好私匙就可以了. PKI 之所以成为或 "称为" 体系, 是包括了实施中所必需的公匙管理: 认证, 发放, 收回, 查询等.
现在看加密过程. 以加密邮件为例. Alice 发加密邮件给 Bob.
1a. Alice 从 Bob那里或从PKI服务器得到 Bob的公匙
2a. Alice 用 Bob的公匙加密邮件, 发送给 Bob
3a. Bob 受到加密邮件, 用自己的私匙解密.
其他人如果截获加密邮件, 由于没有 Bob的私匙, 无法解密邮件.
签名过程则是非对称加密的另一用法
1b. Alice 在用 Bob的公匙加密邮件前先对邮件产生摘要Ha.
2b. Alice 用自己的私匙加密邮件摘要, 连同加密邮件(2a)发送给 Bob
3b. Bob 将加密邮件摘要用Alice的公匙解密得到解密的邮件摘要Ha. (公匙可以从 Aliceb那里或从PKI服务器得到), 并用自己的私匙解密邮件(3a).
4b. Bob 对解密的邮件产生摘要Hb, 与(3b)解密的邮件摘要Ha比较.
如果无误, 则可确认: 1) 该邮件由Alice 发出, 因为只有Alice 有自己的私匙; 2)邮件在传递过程中未遭篡改, 因为邮件摘要比较结果一致.另外, 因为只有Alice 有自己的私匙, Alice 无法否认该邮件由自己发出.
如果 PKI Service Provider 用 RootCA 对 Alice 的公匙做签名操作, 由于RootCA的公匙可以公开获得, 对 Alice 的公匙进行核实(4b)即可确认该公匙为 Alice 所有. 在解密的邮件中看到对方的证书信息是因为对方对邮件不但加密并且签名, 对方的公匙已经含有有关信息. 既是签名, 当然要你看到才对.
总结:
用对方的公匙加密, 用自己的私匙解密
用自己的私匙签名, 用对方的公匙核实
公钥体制可以签名,密钥量小,可直接在普通信道上传输.
举个RSA的例子,A想发送明文9726给B,那么他计算9726**3533(mod 11413)=5761,这就是密文,而B收到5761后,用自己的私钥d=6597进行解密:5761**6597(mod 11413)=9726,就得到了明文.这里公钥就是3533和11413,私钥是6597和11413分解成的两个质因数101和113.其他人虽然知道x**3353(mod 11413)=5761,但无法倒推回去求x,只有知道了私钥101和113后才能用算法得出6597.可以想象11413若是足够大,那么将其分解质因式会是很困难的,RSA就是建立在对大数分解质因式的困难上的,理论依据是费马定理和欧拉定理