单向陷门函数的详解
1976年,美国学者Diffie和Hellman为解决密钥的分发与管理问题发表了著名论文《密码学的新方向》New Direction in Cryptography,提出一种密钥交换协议,允许在不安全的媒体上通过通讯双方交换信息,安全地传送秘密密钥,并提出了建立“公开密钥密码体制”(Public Key)的新概念。这篇文章中提出的公钥密码的思想:若每一个用户A有一个加密密钥ka,不同于解秘密钥ka’,加密密钥ka公开,ka’保密,当然要求ka的公开不至于影响ka’的安全。若B要向A保密送去明文m,可查A的公开密钥ka,若用ka加密得密文c,A收到c后,用只有A自己才掌握的解密密钥ka’对c进行解密得到m。当时他们还没有实现这种体制的具体算法。公开密钥密码基于单向陷门函数。
所谓单向函数,人们认为有许多函数正向计算上是容易的,但其求逆计算在计算上是不可行的,也就是很难从输出推算出它的输入。即已知x,我们很容易计算f(x)。但已知f(x),却难于计算出x。
在物质世界中,这样的例子是很普遍的,如将挤出的牙膏弄回管子里要比把牙膏挤出来困难得多;燃烧一张纸要比使它从灰烬中再生容易得多;把盘子打碎成数千片碎片很容易,把所有这些碎片再拼成为一个完整的盘子则很难。类似地,将许多大素数相乘要比将其乘积因式分解容易得多。数学上有很多函数看起来和感觉像单向函数,我们能够有效地计算它们,但我们至今未找到有效的求逆算法。我们把离散对数函数、RSA函数作为单向函数来使用,但是,目前还没有严格的数学证明表明所谓这些单向函数真正难以求逆,即单向函数是否存在还是未知的。
在密码学中最常用的单向函数有两类,一是公开密钥密码中使用的单向陷门函数、二是消息摘要中使用的单向散列函数。
单向函数不能用作加密。因为用单向函数加密的信息是无人能解开它的。但我们可以利用具有陷门信息的单向函数构造公开密钥密码。