密码学的新方向
Ⅰ简介
随着远程通信的发展,特别是计算机网络的发展,密码学面临着两大难题:⒈可靠密钥的传输通道问题。⒉如何提供与手写签名等效的认证体系。为了解决这些问题,文中提出了公钥密码算法和公钥分配算法,并且把公钥密码算法经过变换成为一个单向认证算法,来解决有效认证问题。此外还讨论了密码学中各种问题之间的相互关系,陷门问题,计算复杂性问题,最后回顾了密码学发展的历史。
Ⅱ常规密码体系
这一部分主要介绍了密码学的一些基本知识,如密钥、加密、解密,算法的无条件安全与计算性安全,三种攻击法,即唯密文攻击、已知明文攻击、选择明文攻击。这些知识课堂上都讲解过了,不再累述。这里需要指出的是,本文给出了密码学的一个定义:研究解决保密和认证这两类安全问题的“数学”方法的学科。还有一点需要指出的是,根据Shannon的理论无条件安全的算法是存在的,但由于其密钥过长而不实用,这也是发展计算上安全的算法的原因。解决安全性与效率间的矛盾!
Ⅲ公钥密码学
公钥密码学主要包括两部分:公钥密码算法和公钥分配算法。
公钥密码算法是指定义在有限信息空间{M}上的,基于算法{}和{}的可逆变换
:{M}{M}
:{M}{M}
满足下列条件:
⑴对任给K{K},是的互逆变换
⑵对任意的K{K}和M{M},用和进行加密和解密是容易计算的
⑶对几乎所有的K{K},从推出在计算上是不可行的
⑷对任意的K{K},从K计算和是可行的
这里K是用以产生和的随机数。性质⑶保证了可公开而不损害的安全性,这样才保证了公钥密码算法的安全性。
以加密二值n维向量为例,加密算法是乘一个nn可逆矩阵,解密则乘其逆矩阵,所需运算时间为n。此可逆矩阵可通过对单位矩阵做一系列的行和列的初等变换得到,而其逆矩阵是经过逆序的行和列的逆变换得到。但是矩阵求逆只需要n的时间,密码分析者用时与正常解密用时之比是n。虽然这个例子并不实用,但对解释公钥密码算法是有用的。一个更实用的方法是利用机器语言的难懂性,把加密算法编译成机器语言公布,而解密算法保密,分析者要理解机器语言的全部运算过程是很困难的,所以要破解是困难的,当然此算法必须足够的复杂以免通过输入和输出对来破解。
公钥分配算法是基于求对数再取模计算上的困难。令q是一个素数,在有限域GF(q)上任取,计算Y=mod q,其中是GF(q)上的一个固定基元。则 X=mod q。不难得出由X计算Y是较容易的,约需要计算次乘法;然而从Y得出X是困难的,因为需要次运算。这样对每一个用户,从[1,2,…,q-1]中随机的选一个,计算出,并将公布,保密。那么当用户i和j通信时,使用作为他们的公共密钥。此密钥用户i通过j公布的得到,即
用户j的计算同理。对于第三方要获得此密钥就必须计算,而这在计算上是不可行的,从而达到了在公共信道上分配私钥的效果。
Ⅳ单向认证
现有的认证体系只能保证不被第三方冒名顶替,但不能解决发送者和接收者之间的冲突,为此引入单向函数的概念,即对定义域中的任意x,f(x)是容易计算的,但对几乎所有的值域中的y,求满足y= f(x)的x在计算上是不可行的。例如已知多项式p(x)和x,求y=p(x)是容易的,但若已知y求出x是困难的。值得注意的是,这里的计算上不可逆与数学中的不可逆是完全不同的。
公钥密码算法可用来产生一个真正的单向认证体系。当用户A要发信息M给用户B时,他用其保密的解密密钥”解密”M并传给B,B收到时用A公布的加密密钥”加密”此消息从而得到信息M。因为解密密钥是保密的,只有A发送的消息才具有这样的性质,从而确认此信息来源于A,也就建立了一个单向认证体系。
Leslie Lamport还提出另一种单向信息认证方法,它是应用在k维二值空间上的单向函数f到其自身的映射来实现的。若发送者发送N比特的信息m,他要产生2N个随机k维二值向量,,,,…,,,并保密,随后把这些向量在f下的像,,,,…,,发送给接收者。当发送信息m=(,,…,)时,当=0发送,=1发送,依次类推。接收者把收到的信息用f映射之,若为则=0,则=1,如此下去便得到了m。由于函数f的单向性,接收者无法从y推出x,因此就无法改动接收到的任何收据。当然在N比较大时这种方法的额外开销是很大的,为此有必要引入单向映射g,用来把N比特的信息映射成n比特(n约为50),但这里要求g有比一般的单向函数更强的性质。
Ⅴ问题的相关性和陷门
⒈一个对已知明文攻击安全的密码算法能产生一个单向函数。设:{P}{C}是这样的一个算法,取P=P,考虑映射f:{K}{C}定义为f(x)=,则f是一个单向函数,因为要由f(x)得到x和已知明文攻击是等价的。Evans还提出过另一种方法,他用的映射是f(x)= ,这增加了破解的难度,但这个单向函数却破坏了对已知明文攻击安全的要求。
⒉一个公钥密码算法可用来产生一个单向认证体系。这一点在Ⅳ中已经讨论过了。
⒊一个陷门密码算法可用来产生一个公钥分配算法。所谓陷门密码算法是指只有知道陷门信息才能正确还原明文,不掌握陷门信息要破解出明文在计算上是不可行的。比如A要和B建立公共私钥,A任选一个密钥,用B公布的含有陷门信息的加密密钥加密之,并将密文发送给B,B由保密的陷门信息解密得到此密钥,于是A和B建立了公共的私钥。不难发现公钥密码算法是一个陷门单向函数。
Ⅵ计算复杂度
现代密码算法的安全性是基于计算上的不可行性,因此就有必要对计算复杂度进行研究。在确定型图灵机上可用多项式时间求解的问题定义为P类复杂度,在非确定型图灵上可用多项式时间求解的问题定义为NP类复杂度,显然PNP。Karp还定义了一个NP完全集,即如果NP完全集中的任何一个问题属于P 类,则NP中的所有问题都属于P。现在大多数的加密算法用的是NP完全集中的问题。关于密码分析的难度有如下定理:一个加密和解密算法若是能在P时间内完成的,那么密码分析的难度不会大于NP时间。
Ⅶ历史回顾
密码学的发展经历了早期的加密过程保密,到60年代对明文攻击安全的算法,到现在算法公开的基于计算复杂度的算法,可见其发展趋势是秘密性越来越弱的。并且随着许多曾经被证明为安全的算法被相继攻破,密码安全性的分析也经历了早期的纯数学证明到后来的密码分析攻击,再到计算复杂度分析。这里还有一个有趣的现象就是密码分析方法大多是由专业人事发现的,而密码算法则主要是由非专业人员提出的。