密码术的用途-密码术的奥秘

时间:2024-07-01 20:17:01

引言

到目前为止,我们一直假定密码算法是用来保障机密性的。但是,它还有很多其他用途。不论何时,当我们使用密码术时,检验它是否帮助我们达到了预期的目标很重要。下面我们举一个例子来说明对密码术的一种可能的误用。

密码术的用途-密码术的奥秘

1983年,美国米高梅影片公司(MGM)制作了一部叫做《战争游戏》的影片,它曾风靡一时,影片强调了电脑黑客行为的危险性。该电影的一个剧情概要说“人类的命运掌握在一个十几岁的孩子手中,他在玩电脑时不经意地闯入了国防部的战术计算机”。影片开场时,这个男孩非法进入他所在大学的计算机系统,并窜改了他女朋友的分数。当时,很多大学将考试成绩存在可以远程访问的数据库中。毫不奇怪,这些学校担心这些成绩可能会像影片中所描述的那样被越权者改动,因此想要引入适当的保护机制。

有人提议给每个学生的分数加密。然而这实际上是达不到保密目的的,探究其中的原因既重要,又很有趣。不难看出给分数加密可以达到什么样的效果。结果是,不管是谁进入数据库后都看不到任何一名学生的分数,看到的只是每个名字后面毫无意义的数据。很不幸,这种办法并不一定能防止电脑黑客将分数改高。如果一名黑客考试不及格,但他刚好知道有一名学生得了好分数,那么他只须把自己名下那个无意义的数据改成跟那名同学一样即可。当然,如果他不知道那名同学的准确分数,那他也就不知道自己改动后的新分数。但无论如何,他知道现在他是及格了。使用加密而达不到用户目的的情况很多,上面只是其中一例。加密并不能解决人们遇到的所有问题。还要注意,在这个特定的例子中,加密算法并没有被破译,实际上它根本没有受到攻击。之所以发生这种事情,是由于用户未能正确地分析问题。

现在假定,大学不是只对分数加密,而是对整个数据库加密,这是否能达到防止黑客窜改分数的目的呢?在这个例子中,给整个数据库加密就意味着整个文件对黑客来说都是无法识别的。然而,即便如此也不能阻止黑客窜改分数。例如,假设文件的每一行代表一名学生的姓名和分数,如果全班学生姓名是按字母顺序排列的,那么在上一段讨论过的那种攻击仍可能发生。

在我们关注如何使用密码术来保护存储的信息以防别人动手脚之前,我们先花一点时间考虑如下问题:若某个人能够窜改保存在一个特定数据库里的分数,是否真有严重后果?当然,确保每名学生分数的真实性是很重要的。不过,要是被窜改了的数据库不是唯一的可供查阅分数的地方,那么这名黑客学生极有可能无法从窜改那个特定记录中的分数中得到任何好处。关键之处也许在于,应该设立某种机制,使其能够警告所有授权用户,提醒他们分数已被窜改。因此,倘若任何窜改都能被查出来,那么预防窜改也许就不是生死攸关的事了。接到警告的授权用户就不会仅依赖于该数据库而是去查阅权威记录了。在很多情况下,查出越权窜改比预防窜改更有必要。

密码术被普遍用来监测越权者对文件的变更。事实上,至少在商界,提供机密性已不再是密码术的主要用途。除了传统的用于保护隐私外,密码术现在还用于确保:

数据完整性:保证信息不被未经授权的或来历不明的手段所窜改;

实体认证:确认实体的身份;

数据源认证:确认信息的来源;

不可否认性:防止(通常是发信人)对信息内容和(或)发信人身份的否认。

自然,也可采用一些标准的(非密码术的)方法来防止数据遭受意外的损坏,例如,可以利用奇偶校验或更高级的纠错码。然而,由于这些方法只适用于公开的信息,如果要保护数据不受到蓄意的窜改,这些技巧就未必够用了。任何一个蓄意窜改信息的人都会把改变后的信息加以适当编码,以使窜改的内容无人察觉。因此,为了阻止蓄意窜改,必须使用某些仅为发信者和(可能的)收信者所知道的值,比如密码密钥。