本月 19 日在北京举办的 LC3 大会 (LinuxCon ContainerCon CloudOpen)应该是全球最顶级的开源大会了,而这一为期两天的开源盛会过去几年在北美、欧洲和日本都举办过,而此次是其首次来到中国。就在同一天,Linux 发布了 4.12-rc6 的 release,而 Linux 基金会在这次大会上也独家透露了一些未来 Linux 内核开发的新特性。
Linux 基金会的执行董事 Jim Zemblin 是本次大会的主持人,他同时也出席了本次大会的发布会,接受了中国媒体的专访,在 19 日上午 Linux Story 记者闻其详的访问中,Jim 透露,未来 Linux 内核可能会引入形式验证(维基百科链接),以获得更好的安全性,如果完成形式验证的话,将大大增加 Linux 在内核安全上的可信赖度,也有利于 Linux 对更多新特性的支持和未来长远发展。但是形式验证是一项艰巨的任务,我们估计 Linux 应该首先对某些相对独立的核心模块完成形式验证。
据悉,形式验证(Formal Verification)含义是根据某个或某些形式规范或属性,使用数学的方法证明其正确性或非正确性。同时逻辑形式验证是一个系统性的验证过程,它使用数学方法来验证设计在实现中是否得以贯彻。目前主要常用的形式验证软件包括 Coq / Isabelle / Metamath / TLA 等。
形式验证过程可以证明一个系统不存在某个 bug 或符合某些规范。而传统软件测试方法的局限在于,有限的测试用例无法覆盖几乎无限的状态空间,测试环境没有考虑到的例外状况往往会成为隐患,在生产环境中造成损失。测试用例再多,也无法保证系统不出现 bug,然而对于一些关键应用场景,我们又非常需要一个没有 bug 的系统。“没有 bug”是一个很难严格定义的概念,更现实的做法是尽力排除“特定类型的 bug”。形式验证方法可以针对业务逻辑或者代码逻辑进行数学证明,证明一个系统符合特定的设计规范,证明系统不存在任何已知类型的 bug,以及证明系统满足特定的功能属性。
形式验证方法有超过 30 年的历史。目前形式验证在芯片设计[1],云计算[2],操作系统[3],编译器[4],区块链[5]等领域都有应用。
如果 Jim 透露的计划能够顺利实施,也许未来可以期待 Docker 之类的轻量级隔离实现跟传统虚拟化媲美的安全级别,这对 Linux 未来在云计算和容器方面的发展大有裨益,而 Docker 也将从 Linux 内核安全性的加强中获益,这也可能是 Linux 未来的发展方向的一部分。不过 Jim 同时也说,这是一个很困难的过程,目前还不能保证形式验证相关工作的具体时间表。
[1] https://www.cl.cam.ac.uk/~jrh13/slides/nasa-14apr10/slides.pdf
[2] http://lamport.azurewebsites.net/tla/formal-methods-amazon.pdf
[3] https://github.com/seL4/seL4