剑客
关注科技互联网

谷歌训练出能安全通信的“人工智能”

随着人工智能技术的发展,人们可以训练神经网络解决越来越复杂的问题。不久之前,基于神经网络和决策树的AlphaGo击败了世界围棋冠军李世石。虽然这一成果极大刷新了世人对人工智能技术的认识,纷纷感慨人工智能摘走了人类智慧王冠上的明珠,但实际上目前还有很多问题领域等着神经网络的研究者们去探索。

在漫长的人类文明发展史中,人们对信息保护的重视程度一直不亚于对信息获取的重视程度。据古罗马随笔作家修托尼厄斯的记载,凯撒经常使用“密文”给他的朋友写信。在传递军事信息时,必须考虑信息被第三方截获的可能性。因此凯撒与他的将军们事先约定好一套变换规则,发信方将正常排列的文字序列变换为另一串文字序列,以此作为通信的文本发送给收信方。收信方收到这样的文本后要根据事先约定的变换规则把它恢复成原来的文字序列。这样,即便这个文本在通信途中被敌人截获,他们得到的也只是一串莫名其妙的文字,无法获悉其中隐藏的信息。

我们在互联网中进行通信时也是依靠类似的机制来保证信息的机密性和完整性。只是随着计算能力的发展,现在所采用的算法和协议要比古代复杂得多。但加解密的机制依然是通过一系列的程序步骤来实现的。

那么神经网络能否学会如何安全的通信呢?毕竟最简单的神经网络连加解密中最基本的亦或运算都不会。带着这个问题,谷歌大脑团队中的Mart́ın Abadi和David G. Andersen建立了一个小型的 生成式对抗网络(GAN) 来模拟传统的通信过程。这个网络由密码界的三个老朋友组成,发信方Alice、收信方Bob、窃听者Eve。

由于目的是探索普通的神经网络能否学会安全的通信,所以这些神经网络的结构能学会异或运算这样的混合函数就足够了。因此,Mart́ın和David采用了“混合与变换”的结构。第一层是一个全连接层,即输出的位数与输入的位数相等;然后是一系列的卷积层,最后一层会输出大小合适的结果。明文和秘钥会输入到第一个全连接层中,然后这些卷积层要学着对前一层给出的混合比特位组应用某种函数,但具体应该是哪个函数没有预先指定,而是让神经网络自己通过学习来确定。

试验是从最简单的场景开始的。Alice要发送一个机密信息给Bob,其输入项是明文P和秘钥K。经过处理后,Alice输出密文C。Bob和Eve都会收到C作为各自的输入项,不过Bob的输入项比Eve多了那个秘钥K,它们的处理结果分别用P Bob 和P Eve 来表示。整个过程如下图所示:

谷歌训练出能安全通信的“人工智能”

通俗地讲,Eve的目标是从C中准确地还原出P,换句话说就是尽量缩小P Eve 跟P的差距;Alice和Bob的目标是顺利地完成通信,即尽量缩小P Bob 跟P的差距,同时让Eve无法获知他们通信的内容。目标确定之后,如果用θ A 、θ B 、θ E 分别表示三个神经网络各自的参数,则可以用下面这些 损失函数(Loss function) 来分别表示Eve、Bob、Alice和Bob的组合各自的目标:

1.Eve的损失函数:

L EAE ,P,K) = d(P,E(θ E ,A(θ A ,P,K)))

函数d(P, P ′) = Σ i=1,N |P i − P i ′| ,即对于长度为N的明文P而言,函数d的结果是Eve得出的结果P Eve ,即E(θ E ,A(θ A ,P,K)),跟明文P之间各位差值的和。这个等式非常直观地表示了当明文为P,秘钥为K时,Eve的处理结果跟明文之间的差距有多大。

此外还基于明文P和秘钥K的分布取期望值定义了一个损失函数:

L EAE ) = E P,K (d(P,E(θ E ,A(θ A ,P,K))))

则在损失函数的结果最小时,就得到了“最优的Eve”:

O EA ) = argmin θ E (L EAE ))

2.Bob的损失函数

Bob的损失函数跟Eve的类似,也是计算从密文中重新构造出来的结果跟明文的偏差,同时扩展到了基于明文P和秘钥K的分布上:

L BAB ,P,K) = d(P,B(θ B ,A(θ A ,P,K)),K)

L BAB ) = E P,K (d(P,B(θ B ,A(θ A ,P,K),K)))

3.Alice与Bob组合的损失函数

用L B 减去L E 的最优值就是Alice与Bob组合的损失函数:

L ABA , θ B ) = L BA , θ B ) − L EA , O EA ))

即Alice与Bob的目标是让Bob从密文中重新构造出来的结果跟明文的偏差尽可能小,而要让Eve从密文中重新构造出来的结果跟明文的偏差尽可能得大。

所以在L ABA , θ B ) 的结果最小时,就得到了“最优的Alice与Bob”:

(O A ,O B ) = argmin(θ AB )(L ABAB ))

从上面设定的目标可以看出,Mart́ın和David并不是分别训练Alice和Bob来学习某种已知的密码系统;而是进行联合训练,让他们成功通信并击败Eve,但并没有预先指定达成这一目标需要使用什么密码系统。对Alice和Bob进行随机的初始化之后,就是训练神经网络从初始状态变为(O A ,O B ),或逼近(O A ,O B )。

基于随机梯度下降的训练方法,Mart́ın和David用学习率为0.0008的TensorFlow的Adam优化器,以256~4096条目的小批量示例对神经网络进行训练。每对Alice/Bob训练一个批次,则对Eve训练两个批次。在明文长度为16位、训练条目为4096时得出的结果如下图所示:

谷歌训练出能安全通信的“人工智能”

理想的结果应该是Bob的错误数下降到0,而Eve的错误数是8(有一半的比特位是错的)。在这个例子中,他们两个的结果一开始错误数都很高,经过一段时间后,Alice和Bob的通信变得非常有效,但Eve的理解能力也同样得到了提升。大概在10000步的时候,情况开始反转,到15000步时,训练目标已经达成了。后续的步骤仅仅轻微增加了Eve的错误数。

这个训练图跟典型的神经网络训练图不太一样,结果跟步数之间的关系是动态的。这种对抗训练所呈现出来的动态变化有点儿像进化。

此外,Mart́ın和David还在这个结果的基础之上研究了选择性保护的情况,即让神经网络只对一部分信息进行加密。他们的研究表明,神经网络确实能够学会如何进行安全的通信。Mart́ın和David表示,接下来他们还会考虑其他任务,比如隐写术、伪随机数生成或完整性检查等。另外,神经网络不仅可用来进行加密保护信息,也能够用于攻击。 虽然看起来神经网络不太擅长密码分析,但他们在元数据和流量分析上可能会大有作为。

更详细的内容请参考他们发表的 论文

感谢冬雨对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址