密码学的新方向

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

密码学的新方向
Invited Paper
Whitfield Diffie and Martin E. Hellman
摘要:本文讨论了当代密码学的两个发展方向:加密和认证。

随着远程通信的发展,特别是计算机网络的发展,密码学面临着两大难题:可靠的密钥传输通道问题,和如何提供与书面签名等效的认证体系。

文章讨论了这些问题的解决方法。

此外还讨论了怎样开始运用通信理论和计算理论来解决密码学长期存在的密码学问题。

1 介绍
今天我们正处于密码学革命的边缘。

数字硬件的便宜化使得密码学能够从机器计算能力的设计限制中解脱出来,同时,它降低了高程度加密工具的价格,使得这些工具能够被类似远程自动取款机和计算机终端等商业应用所采用。

反之,这些商业应用引发了对新类型的密码系统的需求,即要做到减少对密钥分发渠道的安全性需求和提取一个安全性等同于书面签名的认证体系。

同时,信息理论和计算机科学的发展使得开发安全的密码系统成为可能,也使得密码学从真正意义上变为一门科学,而不再是一项古老的技术。

计算机远程通信网的发展为处于世界两端的人和计算机之间的通信降低了代价,使得远程通信手段取代了大部分的邮件和私人送信等古老手段。

对于很多采用这种手段的计算机通信,要能够做到防范他人对通信内容的窃听和注入。

不幸的是,现在这些安全保障技术的发展远远落后于通信领域的其它技术的发展。

当代密码体制不能满足这些安全性要求,以至于采用了这些密码体制的系统,使用者在使用过程中会感到极为不便利,从而消弱了远程通信处理技术的优越性。

最广为人知的密码难题就是保密机制:为了阻止他人窃取在不安全传输通道上的通信数据,我们要采用加密技术来保护这些通信数据,因而,现在的问题在于通信双方怎样安全共享通信密钥。

采用一些安全的通信渠道,例如私人送信或挂号信等渠道,可以事先共享通信密钥。

但是,两个陌生人之间的商业会话是经常发生的事情。

初始的商业会话被延迟到通信双方通过以上所列举的一些物理手段来共享通信密钥后再发生是不现实的。

这种密钥分发问题所导致的代价和延迟是利用远程通信网络来进行商业通信的一个巨大障碍。

第三部分给出了如何利用公开(即不安全的)通信渠道传输密文而不损害安全性的两种方法。

在公钥密码体制中,加密密钥E 和解密密钥D 是完全不相同的,而且利用E 求解D 是计算上不可行的(计算量为)。

公开加密密钥E 不会损害解密密钥D 的安全性。

因而,网络上的每一个用户可以将他的加密密钥E 放在一个公共加密密钥薄上。

这样网络上用户就可以利用对方提供的加密密钥来给他发送信息,并且只有对方才能解密出这个信息。

因此,公钥密码系统是多路存取密码机制。

两个人,无论熟人还是陌生人,都可以进行一个安全的私人会话。

彼此利用对方提供的公钥来加密所要发送的信息,用自己的私钥对收到的信息进行解密。

100
10 我们建议使用一些技术来改进和发展公钥密码机制,但是,它所存在的问题仍然是巨大的。

公钥分配系统不需要一个安全的密钥传输通道。

在这个系统中,发送方和接受方重复的发送彼此的公钥,直到对方准确收到为止。

第三方即使窃听到了这些信息,想破译双方的私钥在计算上也是不可行的。

在第三部分给出了公钥分发系统存在的一些问题的解决方法,Merkle[1]还提供了不同的解决方案。

第二个阻碍远程事务处理系统取代当代现有商业通信手段的障碍是认证。

现在商业合同
是通过签名来保证其有效性的。

签名的合同是有法律效力的。

然而,一般的签名是在书面合同的传输和存储中使用的。

要用纯粹的数字取代纸张工具,必须做到每个使用者发送的信息,其他人都必须能准确验证它的真实性,并且不能被他人,包括接收者在内伪造。

既然只有一个人能发送信息,其他人只能接收,这就好比是一个广播式密码系统。

现有的数字签名技术不能满足这种需求。

第四部分讨论了在提供一个真实的数字签名时存在的一些问题。

考虑到某些原因,我们认为这是一个单向认证问题。

对于这个问题的一些解决方案已给出,并且说明了怎样将一个公钥密码系统变为一个单向认证系统。

第五部分讨论了密码学不同问题的相关性,并且讨论了更为复杂的陷门问题。

当通信和计算引起新的密码学问题的同时,它们相关的信息理论和计算理论却开始为古典密码学存在的一些问题提供解决工具。

寻找不可破译的密码体系一直是密码学研究的最古老的主题之一,然而,到这个世纪初为止,所有被提出的加密系统都是最终可被破译的。

直到1920年,“一次一密”加密体制才被创建,而且它被证明是不可破译的[2 , pp . 398-400]。

这种加密机制和相关理论依据是建立在25年后的信息论基础上的[3]。

“一次一密”加密机制加密需要很长时间,因而在实际应用时代价很大。

相比之下,大部分密码系统的安全性是建立在密码破译者在不知道密钥的情况下,对其破译的计算复杂性上基础的。

这个问题属于算法复杂度研究领域,即计算复杂性领域和算法分析领域。

运用这些理论的研究结果,在不久将来,将安全性的证明扩充到更有用系统中去将变为可能。

第五部分将研究这些可能性。

2 常规密码体制
密码学是包含两种安全性问题的数学系统的研究:加密和认证。

加密系统用来防止在公共通道传输的信息被非法窃取,即保证发送的信息只能被合法的接收者读取。

认证系统用来防止他人注入非法信息到公开通道里,即保证接收者接受到的信息是发送者发送的。

如果一个通信通道的安全性不能满足用户的需求,那么它就被认为是公开的通信通道。

因而,一个通信通道,例如电话线,可能是保密的也可能是公开的,这取决于它的使用者。

根据使用方式通信通道可能面临着窃听或注入等威胁。

在电话通信中,注入的威胁是巨大的,因为接收电话方不能确定到底是谁在给他打电话。

而窃听需要使用窃听器,因而在技术上更为困难些,而且还要负法律责任。

无线通信情况与之恰恰相反。

窃听是被动的,不需冒违法的危险,而注入则需使用发射机并且容易被发现。

密码学问题包括加密和认证,认证又可分为消息认证和身份认证。

消息认证处理的问题主要是以上讨论的问题,身份认证的任务是确保用户的合法身份。

例如,某人使用了一个信用卡,那么他的身份必须得到证实,但是这个过程没有信息传输。

如果不管在身份认证时明显缺少传输信息,消息认证和身份认证是相同的。

其实在身份认证时,有隐藏信息“我是XX 用户”。

来自威胁环境和加密、认证这两个问题的其它方面不同,有时便于我们区分它们。

图1表明了在使用一般密码系统进行通信时信息的流动。

它包含三部分:发送方,接收方和攻击者。

发送方生成一个将在不安全通信通道上传输的明文。

为了防止攻击者窃取明文,发送方利用一个可逆变换,产生密文C =。

密钥P P K S )(P S K K 通过一个安全的通信通道发给且只发送给接收方。

因为接收方知道密钥K ,他能够利用的逆变换来解密密文,即得到明文。

当然,这种做法适用于传输密钥K S 1
−K S C P P S S C S K K K ==−−))(()(11K 的安全通道因载量或延时等问题不能传输明文。

举个例子,安全通信通道是每周一次的专人送信,不安全通道是电话线。

P 此密码系统有一个可逆变换, K S
(1) }{}{:C P S K →它将明文空间变换为密文空间。

密钥}{P }{C K 属于有限的密钥空间,如果消息空间和相同,那我们标识它们为空间。

当我们讨论不同的加密变换时,我们将不提及具体系统,而仅仅指密钥}{K }{P }{C }{M K S K 的不同。

密码系统的设计目的是为了加密和解密运算经济化,但是要确保密码分析运算是复杂的,以至于破译所要付出的代价是昂贵的。

有两种方法可以实现这种要求。

如果一个系统的安全性是建立在密码分析的计算复杂性上的,且能被穷尽计算破译,那么它是计算安全的;如果一个系统能够抵御任何形式的密码分析攻击,包括蛮力攻击,那么它是无条件安全的。

无条件安全性系统在[3]和[4]中讨论,它属于信息理论的一部分,被称作香农理论,即通过穷尽计算获得最优解。

}{K S 无条件安全性密码体制源于对密文多样意义的处理。

例如,简单替代密文XMD 的明文可能是:now , and , the 等等。

相反,计算安全性密码体制本身就包含足够的信息来最终确定明文和密钥,它的安全性取决于计算它们的代价。

唯一一个广泛使用的无条件安全密码系统是“一次一密”系统。

它使用与消息一样长的随机密钥。

虽然这种系统是不可破译的,但是大量密钥的需求使得它不实用。

本文着重讨论计算安全性密码系统,因为它们更为实用。

我们讨论的开发可证明安全性密码系统,不包括这些不实用的系统,例如“一次一密”密码系统。

我们趋向于开发使用密钥只有几百比特的系统,且要求这种系统无论在小规模的数字硬件上还是在只有几百行代码的软件上都能运行。

如果计算一份作业的内存使用量、运行时间虽然是有限的,然而是无法想象的巨大,那么我们就认为这份作业是计算不可行的。

像纠错码可分为卷积码和分组码一样,密码系统可分为两大类:流密码系统和分组密码系统。

流密码系统将明文划分为一小块一小块(比特或者字符)。

它经常产生一个伪随机比特流,将其模2加到明文的比特中去。

而分组密码是变换大块内容的组合形式。

在这种组合中,输入块的每一个小的变化都将导致输出结果的巨大变化。

本文主要讨论分组密码系统,因为这种系统的差错传播机制对许多认证软件有巨大价值。

在认证系统中,系统要保证接收者收到的信息是真实的。

它不仅仅要能防止攻击者向通信通道中注入貌似真实的新信息,也要能防止攻击者通过组合或者重复他过去拷贝留下的老合法消息等手段制造的新真实信息。

一个仅仅用于信息保密性的密码系统,总的来说,不能防止后者形式的破坏。

为保证消息的真实性,我们需要在传播的消息中添加一些额外的内容。

例如,在消息中添加时间和日期信息,然后对这新消息加密。

这样就确保了只有密钥持有者才能得到正确的日期和时间。

必须注意的是,要采用能够实现密文每一微小的变化都能导致解密后的明文大变化的加密算法。

如果攻击者故意将干扰信息注入到通信通道中,从而将消息”erase file 7”变为消息”erase file 8” ,那么这种刻意的差错传播机制确保了验证信息已被破坏。

这个消息也因非真实性而被拒绝。

评估一个密码系统是否合适,第一步要将其面临的威胁分类。

无论是用于加密还是用于认证的密码系统都可能面临以下的威胁。

惟密文攻击,这种形式的密码分析者只拥有密文。

已知明文攻击,这种形式的密码分析者拥有一定量的明文—密文对。

选择明文攻击,这种形式的密码分析者可以选定任意的明文信息,并且知道其对应的密 文。

以上这些攻击形式,假定了密码分析者已经知道了密码系统的加密算法,因为这个加密算法可以通过研究这个系统得到。

许多密码系统的使用者试图对他们的加密工具对外保密,但是商业应用软件要求加密系统的算法对外公开,而且要求这种算法已成为一个商业}{K S
标准算法。

惟密文攻击在实际中是经常发生的。

密码分析者能利用的信息只有某种语言的统计特性(比如,在英文中,字母“e ”的出现概率是13%)和一些密文单词的可能明文(例如,信件的可能开头“Dear Sir ”)。

惟密文攻击的威胁性最小,如果一个系统抵御不了它的攻击,那么这个系统是彻底不安全的。

如果系统对已知明文攻击是安全的,那么它的使用者可以公开他们以前发送的保密消息,也无需在消息分类之前再对它们进行解释了。

保密以前发送的消息对系统使用者来说是一个无理的负担,特别是通信稿稍候会被公开的商业情况下。

虽然已知明文攻击并不是时常方生的,但如果一个系统无法承受它的攻击,那么这个系统就是不安全的。

选择明文攻击又叫做IFF 攻击,这种叫法源于第二次世界大战时“识别系统”的发展。

一个安装了IFF 系统的雷达能够自动识别自己的朋友和敌人。

这个雷达发送一个随时间变化的频谱给待识别的飞机。

如果这架飞机是本方飞机且在本方上空领域飞行,那么它能在收到信息后,用正确的密钥对其加密,并将密文发送回来。

反之,如果我方飞机在敌人上空,敌人密码分析专家也能向其发送信息,并且希望通过收到的密文来解密我方的密钥,所以这是一个选择明文攻击类型。

有一些针对识别系统的攻击,普通系统是抵御不了的,这就需要使用到我们将在文中介绍的新想法和技术。

泄露识别系统的验证信息的威胁来源于多用户网络环境。

多用户网络中接收方的密码表和其它验证信息安全性比单用户系统的更脆弱。

后面我们将会知道,一些针对这些问题的保护技术也可用于处理发送方和接收方之间的冲突问题。

发送方可能因某些因素拒绝承认他发送了的信息,同理,接收方也可能会拒绝承认他已收到了的信息;第三方冒充发送方发送信息,这些都会引起发送方和接收方之间的冲突。

举个例子,一个不诚实的股票经纪人可能为了自己的利益,伪造客户的命令,未经授权的进行商业买卖;一个客户由于他的错误命令使其遭受了巨大的损失,他事后就拒绝承认这条命令是他发出的。

由于这些问题的存在,数字签名技术就必不可缺了。

稍后我们将介绍一些技术用来帮助接收方验证信息的真实性,同时阻止接收方伪造那些显然真实的信息,即解决接收方验证信息泄露问题和发送方和接收方之间的冲突问题。

3 公钥密码体制
正如图1所示的,密码学源于安全问题。

一旦存在一个能够安全传输密钥的通信通道,那么就得考虑其它高带宽的通信通道的安全性,和怎样快速实现信息加密。

开发一个大型安全的远程通信系统,必须克服以上种种难题。

N 个用户之间相互通信,就的需要个密钥对。

两个陌生人之间的通信,他们通信密钥如果通过一个安全的物理手段传输是不现实的。

把个密钥对预先发送给用户也是不现实的。

在另外一篇论文[5],作者采用了一个保守的方法来实现通信,不需要开发新的密码体制。

但是这种方法降低了安全性、使用便利性,且只适用于遵守初级通信协议的星型网络。

2/)(2
n n −2/)(2n n − 我们建议开发如图2所示的密码系统。

通信双方利用的是一个公开的通信通道,使用的是公开的加密算法,却能建立一个安全的连接。

公钥密码体制包括公钥密码算法和公钥分配算法。

公钥密码算法有利于实现认证机制,而公钥分配算法更接近于实现。

公钥密码算法是指定义在有限信息空间{M}上的,基于算法{}和{}的可逆变换 k E k D }{}{:M M E k →
(2) }{}{:M M D k →
(3)
算法必须满足下列条件:
⑴对任给,是的互逆变换
}{K K ∈k E k D ⑵对任意的和}{K K ∈}{M M ∈,用和进行加密和解密是容易计算的 k E k D ⑶对几乎所有的,从推出在计算上是不可行的
}{K K ∈k E k D ⑷对任意的,从}{K K ∈K 计算和是可行的
k E k D 性质⑶保证了我们可以公开而不损害的安全性,这样才保证了公钥密码算法的安全性。

因此,公钥密码算法可以分为两部分:加密算法和解密算法。

利用加密算法推导解密算法是计算不可行的,反之亦然。

k E k D 性质⑷确保了在对加密和解密函数没有限制的条件下,计算这两个函数的可行性。

实际运用中,公钥加密工具必须包含一个随机数生成器用来生成K ,利用K 计算和。

k E k D 公公钥分配算法是相当简单的。

系统的每一个用户在自己的机器终端产生加密密钥E 和D 。

解密密钥D 必须保密,而且不能在通信通道中传播。

加密密钥E 可以放置在公开的公钥密码薄上,并附上自己的姓名和地址。

任何人都可以利用这个公开的加密密钥E 给用户发送消息。

公钥密码系统可以被认为是一个多路存取密码机制。

要防止公开的加密密钥被他人修改。

这个保护很容易实现。

公开的加密密钥文件使用只读保护机制是不必要的。

既然密钥的修改是偶然性的,那么从经济上考虑,详细地写保护机制更适用。

举个例子,虽然这个例子并不实用,但对解释公钥密码算法是有用的。

以加密二进制维向量为例,加密算法是将明文乘以一个n m n n ×可逆矩阵E ,即密文是,解密则乘其逆矩阵Em 1−=E D ,因此,。

加密和解密算法所需运算时间为。

通过Dc m =2
n E 求涉及到求矩阵的逆矩阵,这是困难的。

理论上讲,寻找一对可逆矩阵比求解给定矩阵的逆矩阵要容易。

可逆矩阵D E 可通过对单位矩阵I 做一系列的行和列的初等变换得到,而其逆矩阵是
经过逆序的行和列的逆变换得到1−=E D 。

任意给定了的二进制位串,决定了一个初等变换。

不幸的是,矩阵求逆的时间代价只有,密码分析者利用3n E 计算用时与正常解密用时之比至多是n ,而理论要求至少在以上。

这个例子不能说明从D 610E 计算比从D I 计算要花费更多的时间。

此外,因为二进制运算没有四舍五入的差错,所以在矩阵求逆过程中数值稳定性是不重要的。

虽然这个例子并不实用,但有助于我们理解公钥密码算法。

D 另外一个能够快速计算可逆运算
E 和,并且从D E 推导是困难的方法是利用机器语言的难读性。

如果一个人的计算机正在运行一个用机器语言编写的算法D E ,那么其他人即使得到了这个算法E ,也很难确定E 的功能。

如果这个人还刻意在算法E 中添加一些无用的变量和代码,那么其他人就更难获得E 的逆变换了。

当然,E 要足够复杂到不能被一些公开的输入—输出信息对破解。

因而我们本质上需要的是一个单向编译器:可以将容易理解的高级语言程序翻译成等价的难以理解的机器语言程序。

编译器是单向的,即它的逆翻译过程是计算上不可行的。

我们基本上无需考虑这种编译器的大小和运行时间的长短,因而只要机器语言的结构能被优化到辅助混淆,那么设计出这种编译器是可能的。

Merkle[1]已经独立研究了如何在不安全通信通道上安全分发密钥。

他的方法不同于我们上面讨论的公钥密码算法,可以被称作是公钥分配算法。

算法的目的是让两个用户A 和B 如何在不安全的通信通道上安全传输密钥。

利用这个密钥,用常规的密码体制对消息进行加密和解密。

Merkle 的算法的时间代价是:合法用户加密、解密时间数量级为n ,而密码分析者的时间数量级为。

不幸的是,因为Merkle 的算法要求用户在使用一个密钥前,必须发送个潜在密钥,这样一来,密钥传输的时间代价和加密、解密的时间代价在一个数量级上。

Merkle 也注意到了密钥传输的高时间代价阻止了算法在实际中的广泛应用。

如果这种算法被应用在一个百万数量级上,那么它的时间代价比大约为10000:1,对于实际应用来说,太小了。

如果高带宽的数据链路通道经济代价不是很大,且能让算法的时间比超过1000000:1,那么它还是有实用价值的。

2n n
我们建议使用一种新的密钥分配算法,这种算法有一些优点:第一,只要传输一个密钥。

第二,密码分析者的时间开销是系统使用者的指数级倍。

第三,算法的公开参数可以放在包含用户信息的公开文件上,这样用户A 和用户B 可以利用它们彼此鉴别对方。

将这个公开文件放在一个只读存储器中,这样用户就容易向其他用户表明自己的合法身份。

这种新算法的有效性依赖于计算有限域中离散对数的困难性。

令是一个素数,有限域为。

计算
q )(q GF q Y X mod α=, 其中11−≤≤q X (4)
其中α是上的一个固定本原元。

然后计算X :
)(q GF q Y X mod log α= ,其中11−≤≤q Y (5)
不难得出由X 计算Y 是较容易的,约需要q 2log 2×次乘法运算[6 , pp . 398-422];例如,X=18,则
(6)
2222218)))(((a a a Y ×=然而用Y 计算X 是困难的。

对于某些精心选定了的,采用最快的算法也需要q 21q 次
运算[7 , pp . 9 , 575-576 ] , [8]。

此密码算法的安全性是建立在求对数模的运算困难性上的。

如果能找到一种求对数模计算量是随着增长的算法,那么这种加密算法就是无效的。

q q q 2log 每一个用户,从中随机的选一个,计算出
]1,,2,1[−q "i X i Y =
(7)
i Y q a Y i x i mod =并将公布,保密。

那么当用户和通信时,使用 i Y i X i j q K j i X X ij mod α
= (8) 作为他们的公共密钥。

此密钥用户i 通过公布的得到,即 j j Y (9) q Y K i X j
ij mod =
(10) q a i j X X mod )(= =
(11) q a a i j i j X X X X mod =用户j 的计算同理。

ij K =
(12) ij K q Y j X i mod 对于第三方要获得此密钥就必须计算 q Y K i Y j
ij mod )(log α= (13) 如果容易计算,那么就容易计算,那么这个系统就会轻易被破解掉。

我们没有证据说明即使被轻易计算出,这个系统也是安全的。

也没有证据说明能够在不知道和
的情况下,能够计算出。

j Y
a log ij K j Y a log i X j X ij K 如果素数小于,那么其它参数都可以用个二进制位来表示。

假设运算需要运算,则求幂运算至多需要次模运算。

密码分析者的运算量相对于系统使用者是指数倍增长的。

如果,那么从计算或者从和计算需要400次运算,然而计算模需要次运算,即大约为。

q b
2b s log 2/12/1)2(b q =b 2q 200=b i X i Y i Y j X ij K s log q 1002
30
10 4 单向认证
相对于如何进行密钥安全分发难题,认证问题是妨碍我们采用远程通信手段进行商业交易的更大障碍。

认证是涉及到使用合同和帐单的密码系统的核心,没有它,商业交易就无法。

相关文档
最新文档