自动密码生成器开发,以确保网络浏览器的安全

麻省理工学院开发的加密系统菲亚特加密(Fiat Cryptography)通过自动生成优化的加密代码(通常是手工编写的),帮助更好地保护用户的数据和更好地保护网站。

通过罗伯·马西森 2019年6月22日

几乎每次打开安全的谷歌Chrome浏览器时,麻省理工学院开发的加密系统都会帮助更好地保护用户的数据。麻省理工学院的研究人员详细介绍了一个系统,该系统首次自动生成优化的密码代码,通常是手工编写的。该系统于2018年初开发,目前已被谷歌和其他科技公司广泛使用。

为了确保在线通信的安全,加密协议运行复杂的数学算法,对大数进行一些复杂的运算。然而,在幕后,一小群专家手工编写和重写这些算法。

对于每个算法,他们必须权衡各种数学技术和芯片架构,以优化性能。当底层的数学或架构发生变化时,它们基本上是从头开始。除了劳动密集型之外,这种手工过程还可能产生非最佳算法,并经常引入后来被捕获和修复的错误。

计算机科学与人工智能实验室(CSAIL)的研究人员设计了“菲亚特加密”,它可以自动生成并同时验证所有硬件平台的优化加密算法。在测试中,研究人员发现他们的系统可以生成与最佳手写代码性能相当的算法,但速度要快得多。

密码学是通过对大数进行算术来实现的。(菲亚特密码学)使数学算法的实现更加直接……因为我们自动化了代码的构建,并提供了代码正确的证明,”CSAIL研究员、电子工程和计算机科学副教授、编程语言和验证小组负责人亚当·克利帕拉(Adam Chlipala)说。“这基本上就像在人类大脑中运行的一个过程,并对它有足够的了解,从而编写模仿该过程的代码。”

分割比特

密码学协议使用数学算法生成公钥和私钥,它们是一长串比特。算法使用这些密钥在浏览器和服务器之间提供安全的通信通道。椭圆曲线密码算法(ECC)是最流行的高效和安全的密码算法族之一。它通过在图形上沿数字曲线随机选择数字点,为用户生成不同大小的键。

大多数芯片不能在一个地方存储这么大的数字,所以他们把这些数字分成更小的数字,存储在被称为寄存器的单元中。但是它们提供的寄存器数量和存储量因芯片而异。Chlipala说:“你必须将比特分割到不同的地方,但事实证明,分割比特的方式会产生不同的性能结果。”

传统上,编写ECC算法的专家在他们的代码中手动实现这些位分割决策。在他们的工作中,麻省理工学院的研究人员利用这些人为的决定,自动生成一个针对任何硬件的优化ECC算法库。

研究人员首先在C编程和汇编语言中探索了手写ECC算法的现有实现,并将这些技术转移到他们的代码库中。这为每个体系结构生成了性能最佳的算法列表。然后,它使用了一种编译器——一种将编程语言转换成计算机可以理解的代码的程序——一种被称为Coq的校对工具证明是正确的。该编译器生成的所有代码都将经过数学验证。然后对每种算法进行模拟,并为每种芯片架构选择性能最佳的算法。

接下来,研究人员正在研究如何使他们的编译器在搜索优化算法时运行得更快。

优化编译

还有一个额外的创新可以确保系统快速选择最佳的位分割实现。研究人员为基于coq的编译器配备了一种称为“部分求值”的优化技术,该技术可以预先计算某些变量以加快计算速度。

在研究人员的系统中,它预先计算了所有的比特分割方法。当将它们与给定的芯片架构进行匹配时,它会立即丢弃所有不适用于该架构的算法。这减少了搜索图书馆所需的时间。系统定位到最优算法后,完成代码编译。

由此,研究人员积累了一个库,其中包含了为各种芯片架构拆分ECC算法的最佳方法。它现在已经在BoringSSL中实现了,所以用户大多是从研究人员的代码中提取的。该库也可以针对新的体系结构和新的数学类型进行类似的自动更新。

克利帕拉说:“我们基本上已经编写了一个库,它可以一劳永逸地适用于所有可能的数字分割方式。”“您可以自动探索大数可能表示的空间,编译每种表示以衡量性能,并在给定场景中选择运行最快的表示。”

麻省理工学院(MIT)

www.mit.edu

- Chris Vavra编辑,制作编辑,控制工程, CFE传媒,cvavra@cfemedia.com。查看更多控制工程网络安全的故事


作者简介:作者,麻省理工学院新闻办公室