数学——保障信息传输安全的核心技术( 二 )


“这一突破显著改变了互联网的安全性 。它创造了成千上万的就业机会,并使做出这一发明的数学家成为百万富翁 。这是一个非凡的突破 。但问题是,如何制作数学挂锁?显然,在互联网上人们没法使用物理世界的挂锁,你需要用某种软件算法来制作挂锁 。
“解决这个问题的方法,是去询问一个数学家,挂锁有什么特别之处?特别之处在于它很容易被锁上但很难打开 —— 这就是数学中的单向函数(One-way function),容易正向运算但难以逆向运算 。整数相乘是一个经典的单向函数 。将两个数相乘得到一个乘积很容易 。但直接给出一个很大的数,要找出与它对应的两个因数则很难 。这就是数学挂锁的核心 。”例如,17 乘以 7 相当容易计算,但是你能快速计算出哪两个数相乘得到 143 吗?
今天,互联网上使用的数学挂锁类型被称为 RSA 公开密钥密码系统(Rivest–Shamir–Adleman),它以其发明者 Ronald Rivest,Adi Shamir 和 Leonard Adleman 的名字命名 。

数学——保障信息传输安全的核心技术

文章插图

▲ 从左到右依次为 Ron Rivest, Adi Shamir, Len Adleman (200
一个RSA挂锁由两个数字组成:加密密钥e和与数学原理相关的模数N 。例如,让我们使用加密密钥e = 3和模数N = 55的挂锁 。在加密信息之前,首先通过标准方法,将信息转换为数字,如将字符替换为二进制数的ASCII 。然后为了安全地加密数字消息m,假设m = 14,通过执行以下计算,把它转变为另一个数字c,c被称为密文:

数学——保障信息传输安全的核心技术

文章插图

49是2744除以55时的余数 。因此,密文c就是49 。
然后可以使用一个密钥对该密文进行解密,在本例中,密钥d = 27,解密方式如下:

数学——保障信息传输安全的核心技术

文章插图

我们看到,借助密钥d,我们将密文解密出了初始信息14 。为了使如上所述系统运作,我们需要找到数字e,N和d,使得解密密文c的过程对于任何初始信息都是可行的 。因此,对于任何信息m:

数学——保障信息传输安全的核心技术

文章插图

因此,为了使RSA系统运作,你需要找到数字e,N和d,使得将任何信息m先做指数为ed的幂运算,然后对N做取模运算,等价于对数字m做指数为1的幂运算 。
RSA系统提供了一种计算这些数字的方法,使得只有知道N的因数时,你才能使用挂锁e和N计算得到密钥d 。这是系统安全性的根基 。我们选择使用N等于两个大素数乘积的挂锁 。1999年8月,一个由数学家组成的大型团队花费了超过35个计算年,才完成了一个155位数字的素因数分解,而根据RSA网站,目前的技术无法实现230位数字的素因数分解 。因此,如果你选择两个足够大的素数,使得它们的乘积N的数位长度超过230位,则在现有计算能力下通过对N做素因数分解来破解密钥是不可行的 。只要对这两个素数保密,挂锁——e和N——就可以安全地分发出去,因为人们不可能从这些信息中破解出来密钥d 。
计算RSA挂锁和密钥并不简单,但值得注意的是它使用了一些非常古老的数学成果 。计算过程中某一步使用了欧拉在十八世纪发现的欧拉函数,而另一步使用了公元前300年《几何原本》中记录的欧几里得算法的一个扩展版本 。
实践中,RSA并不被用于加密实际信息,而是被用于加密另一个编码系统的密钥,例如DES或3DES(加密速度快) 。原因在于 RSA 加密效率极低,难易用此算法来加密大量的数据 。所以人们将两种算法结合来用,DES 来加密较长的信息,RSA 来只对 DES 的密钥加密,这样来弥补 RSA 的缺点 。

数学——保障信息传输安全的核心技术

文章插图

所以目前,RSA 使得信息处于安全的境况,但黑客是否会找到破解 RSA 挂锁的方法?辛格猜测 RSA 几乎是不可破解的 。“目前没有人证明破解是不可能的,说不定明天就有人想出一个非常聪明的方法来破解 RSA,但我认为不会发生这种情况 。”素因数分解是一类难题——NP 问题——中的一个 。许多数学家相信 NP≠P,尽管他们还没有证明这一点 。
▌现代隐写术
因此,只要使用足够长足够大的密钥,RSA 就会保持安全,而衡量是否足够长足够大的标准,随着计算能力的提高在变化 。然而,在某些情况下,仅使用足够长的密钥不足以使加密保证安全 。有时你需要隐藏自己使用了加密技术这一事实,或者隐藏自己正在发送信息这一事实 。隐写术(Steganography) —— 一种隐藏信息的做法,是与密码学一起发展的保密科学领域 。它已经从最早吞下隐藏有信息的蜡球或使用隐形墨水,发展到今天可以在互联网上使用的方法 。