下页 上页 目录

1. 概念

1.1 公钥加密

加密的传统方法只用一把密钥加密。发出讯息者用这把钥匙对讯息加密。接收讯息者需要有完全相同的钥匙才能将加密了的讯息解密。这把钥匙必须以一种其他人没有机会得到它的方式给予接收讯息者。如果其他人得到了这把钥匙,这种加密方式就没用了。

使用一种称为"公开钥匙"的方法可以解决这个问题。公开钥匙的概念涉及两把钥匙。一把钥匙称为"公开钥匙"(公钥),可以以所有方式传递,任何人都可以得到。另一把钥匙称为"隐密钥匙"(密钥)。这把钥匙是秘密的,不能传递出去。只有它的拥有者才能接触和使用它。如果正确实施了这种方法,从公钥不能得出密钥。发出讯息者以接收讯息者的公钥将讯息加密,接收者则以自己的密钥解密。

这个概念的关键之处在于密钥必须保持秘密,不能随便给出或让任何除了密钥拥有者之外的人得到。请千万不要将你的密钥通过Internet寄出!另外,通过telnet使用GnuPG是非常不明智的(基于使用telnet的高风险,你可以考虑绝不使用telnet)。

1.2 数字签名

为证明一则讯息确实是宣称发出讯息的人所发,发明了数字签名的概念。正如其名称显示,发出讯息者数字化地在讯息上签名。别人可以通过这个签名检验这个讯息的真实性。使用这种方法,可以减少中"特洛伊木马计"的风险(即一则讯息宣称是对某个问题的补丁,实际却包含病毒或乱动你计算机上的数据),同时信息或数据可以被确认是来自正当合法的来源,而被认为属实。

一个数字签名是通过密钥和讯息本身而得来。讯息可以通过发出讯息者的公钥来验证。这样,不仅可以验证讯息是正确的发出讯息者所发,而且内容也得到验证。这样,得到讯息者可以确认:讯息来自该发出讯息者,而且在传递过程中其内容没有改变。

1.3 信任网

公开钥匙算法的一个弱点在于如何传播公开钥匙。有可能有用户传递一把有虚假身份的公开钥匙。如果别人不知就里,用这把公钥加密讯息,持有该虚假钥匙的侵入者就可以解密而读到讯息。如果侵入者再将解密的讯息以真正的公开钥匙加密,然后传送出去,这种进攻无法被发现。

对此问题,PGP的解决方法(因此也自动是GnuPG的解决方法)是对公开钥匙签名。每把公开钥匙都有一个相应的用户身份。一个人的公开钥匙可以由别人来签名。这些签名承认这把钥匙确实属于它所宣称的用户。至于有多信任这些签名,完全取决于GnuPG用户。当你信任给这把钥匙签名的人时,你认为这把钥匙是可信的,并确信这把钥匙确实属于拥有相应用户身份的人。只有当你信任签名者的公开钥匙时,你才能信任这个签名。要想绝对确信一把钥匙是正确和真实的,你就得在给予绝对信任之前,通过可靠渠道比较钥匙的"指纹"。

1.4 安全边界

如果你有数据想要保密,你所需做的远不止选择加密算法这一件事。你应该统筹考虑你的系统安全。一般我们认为PGP是安全的。在作者写本文时,尚未听说任何PGP被破译的事例。但这并不表示所有用PGP加密的讯息都是安全的(举例说,如果NSA--美国国家安全局破解了PGP,它绝不会通知我。别的为真正邪恶目的破译密码的人也不会)。反过来说,即使PGP是完全"无法破译"的,也可以用别的方法来损害安全。今年二月初,发现了一种"特洛伊木马",它寻找硬盘上的密钥,然后将其FTP出去。如果密码选得不好,这些被盗的密钥可以被轻易破解。

另一种可能的技术(虽然更难做到)是使用一种"特洛伊木马"程序,它可以传出用户所敲的键。也可以(但非常困难)传出屏幕显示的内容。使用这些技术,就根本不需要破译加密的讯息了。针对以上这些危险,需要制定一个好的,深思熟虑的安全计划并付诸实施。

提到上述这些,目的并非想让人们怀疑一切,而是想指出需要采取很多措施才能达到更安全。最重要的是意识到加密只是安全的一个步骤,而不是全部的解决方案。正如在一九九九年三月Melissa病毒事件中所显示,许多公司并未准备好应付这类特洛伊木马式病毒。


下页 上页 目录