10.4 适用于因特网的公开密钥加密技术
前面几节讲解的加密技术都属于“对称密钥加密技术”,也称为“秘密密钥加密技术”(如图10.7所示)
这种加密技术的特征是在加密和解密的过程中使用数值相同的密钥。因此,要使用这种技术,就必须事先把密钥的值作为只有发送者和接收者才知道的秘密保护好(如图10.7(1)所示)。虽然随着密钥位数的增加,破解难度也会增大,但事先仍不得不考虑一个问题:发送者如何才能把密钥告诉接收者呢?挂号信?假设有100名接收者,那么发送者要寄出100封信,非常麻烦,而且这样也无法防止通信双方以外的其他人知道密钥,再说寄送密钥也要花费时间。因特网的存在应该意味着用户可以实时地与世界各地的人们交换信息。因为对称密钥加密技术不适合在因特网中使用。
但有些人想到只要让解密时的密钥不同于加密时的密钥,就可以克服对称密钥加密技术的缺点。而这种加密技术称为“公开密钥加密技术”
在公开密钥加密技术中,用于加密的密钥可以公开给全世界,因此称为“公钥”,而用于解密的密钥是只有自己才知道的秘密,因此称为“私钥”。举例来说,假设笔者的公钥是3,私钥是5(实际中会把位数更多的两个数作为一对儿密钥使用)。笔者通过因特网宣布“矢泽久雄的公钥是3!”这之后当诸位要向笔者发送数据时,可以用这个公钥3加密数据了。这样就算加密后的密文被人窃取了,只要他还不知道笔者的私钥就不可能解密,从而保证了数据的安全性,而收到密文的笔者,则可以使用只有笔者自己才知道的私钥5进行解密(如图10.7(2)所示)。怎么样?这个技术很棒吧!
图10.7 对称密钥加密技术和公开密钥加密技术
可用于实现公开密钥加密技术的算法有若干种,这里介绍目前广泛用于因特网中的RSA算法。RSA这个名字是由三位发明者Ronald Rivest、Adi Shamir和Leonard Adleman姓氏的首字母。美国的RSA信息安全公司对RSA的专利权一起持有到2000年9月20日,使用RSA创建公钥和私钥的步骤如图10.8所示。
图10.8 创建公钥和私钥的步骤
无论是公钥还是私钥都包含两个数值,组成的数对儿才是一个完整的密钥。
由图10.8的步骤可以提出:323和11是公钥,323和131是私钥,的确是两个值者不相同的密钥。在使用这对密钥进行加密和解密时,需要对每个字符执行如图10.9所示的运算
图10.9 用公钥加密,用私钥解密
这里参与运算的对象是字母N(字符编码为78)。用公钥对N进行加密得到224,用私钥对224解密可使其还原为78
是不是以为只要了解RSA算法,就可以通过公钥c=323,e=11推算出私钥c=323,f=131了呢?但为了求解私钥中的f,就不得不对c进行因子分解,分解为两个素数a,b,在本例中c的位数很短,而在实际应用公开密钥加密时,建议将c的位数(用二进制数表示时)扩充为1024位(相当于128字节)。要把这样的天文数字分解为两个素数,就算计算机的速度再快,也还是要花费不可估量的时间,时间可能长到不和不放弃破解的程度。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论