您的位置:首页 >评测 >

“三清”博士与支付宝机密计算背后的故事

时间:2020-04-17 19:30:00 来源:网络整理

在坊间,对于本科、硕士、博士都出自清华的人有一个称呼,叫“三清团”,他们是招聘市场上炙手可热的天团。在支付宝的机密计算团队,也有这样一位同学,他就是田洪亮。今天,我们就来聊聊他的故事。

多重身份,是顶尖Coder也是Rust布道师

2019年10月24日,支付宝大楼的一个会场里,十名选手面对电脑,或运指如飞,或苦苦思索,空气里弥漫着紧张的气氛。

原来,这是支付宝“超级MA力大赛”的决赛现场。

每年的10月24日是支付宝的“代码节”, “You are your code.” 以匠心精神对待coding,就是支付宝代码文化的一部分。2019年的代码节,支付宝在公司内部举办了一个最强coder大赛,从全公司数万名研发人员海选出100名参赛者,经过多轮PK,最后10名实力强劲的选手进入决赛。

田洪亮正是十名选手之一,说起这个,还有一段小插曲。

在支付宝Java技术栈是主流,而他则是Rust语言的忠实拥趸,虽然公司允许他用Rust开展工作,但知音难觅,有点小郁闷。

Rust是Mozilla公司发布的一种系统编程语言,同时具备高性能和易读性,同时又注重安全,程序bug少,被广泛认为是C++语言的继任者。在田洪亮看来,这么好的语言却没有人讨论和尝试,实在是太遗憾了。

不过很快,他的机会来了,正是“超级MA力大赛”。

100名参赛者里面只有他一个人用Rust参加比赛,其他人要么用Java要么用Python,从性能上来说,要比Rust慢很多。这一下他相当于开挂,当然是大杀特杀。

(中间者为田洪亮)

但是,正是因为这个优势,让他有些轻敌,没有优化算法性能,在决赛中与冠军失之交臂,最终屈居亚军。这也说明支付宝内部牛人辈出,并不是只有他一个人有绝活。

不过,Rust的名声却在公司内打响了,有不少人对Rust表示兴趣。趁热打铁,田洪亮在公司内分享了关于Rust的公开课,还成为阿里云的Rust布道师。

(田洪亮正在向大家分享Rust)

“国内大学CS的科班教育一直都缺失一个重要的环节,即对工程能力的培养。”本科硕士博士都就读于清华计算机系的田洪亮,对这句话当然有发言权。

大学强调的是算法竞赛(比如ACM)和科研能力(发paper),但公司需要的是能写架构合理、实现健壮、代码可读的合格工程师。在赛后的分享中,他推荐了《可读代码的艺术》以及《代码大全》。前者培养对好代码的品味,后者指导如何做好的软件设计。

至于代码为什么能写的这么好,要从他所研究的领域说起。

五年如一日,专注机密计算

在博士期间,田洪亮研究的方向是操作系统领域,这一领域又被称为计算机科学皇冠上的明珠,我们耳熟能详的Linux和它的创始人Linus的传奇经历,激励着人们进入这一领域。

系统领域的研究不仅注重理论功底,还重视编程动手能力。想出了一个新的idea,还要把它实现出来,跑一跑benchmark看和之前有多少提升,这样才会得到业界的认可,这也正是田洪亮代码基本功扎实的原因。

不过,操作系统领域已经发展多年,相关的理论和实践都很成熟,想要找到创新的突破口并不容易,田洪亮把目光投到了更底层的硬件上。

“新的硬件能够带来新的能力,但要发挥这种能力需要系统软件与之配合,然后上层应用就可以通过操作系统利用这个能力。”田洪亮解释道。从硬件到系统再到应用,这就是计算机技术的发展之道。

经过一番探索,他很快锁定了Intel x86 CPU芯片上的一个小小的指令集扩展Software Guard Extensions,简称SGX。

SGX由英特尔于2013年提出,是为了解决软件运行过程中的安全问题。通常,一个应用程序在运行过程中,需要信任硬件,比如CPU、内存都是没有问题的;还需要信任操作系统,程序所调用的系统接口没有被篡改;同时还需要相信系统里没有恶意的特权程序在一旁虎视眈眈。如果需要用到网络,那么要操心的安全问题就更多了。

在过去,为了解决这些基础安全问题,除了安全软件外,还发展出了可信执行环境技术TEE

,CPU作为计算机的心脏,在这项技术中扮演着重要角色。SGX正是英特尔的TEE实现,极大的缩小了需要信任的范围,只需要信任CPU,甚至是CPU上的一小块地方,这个地方被形象的称为“飞地”,英文叫Enclave.

(SGX Enclave原理图)

Enclave可以锁定一段内存,将需要保护的数据放到受保护内存里进行计算,这样的技术叫做机密计算。

SGX和机密计算的出现,将系统安全带到了一个新的高度,对于云计算更是有非凡的意义——因为云上运行着不同归属的系统和程序,无法确认它们是否恶意,而一旦云的安全被攻破,损失将无法承受。

在了解了一番SGX之后,田洪亮很快就意识到这项技术拥有改变世界的潜力,于是决定研究的方向转到机密计算上,没想到这一转,就是五年时间。

当时SGX刚出现不久,还停留在理论实验阶段,洪亮对其进行了一番理论修补和实验研究,很快临近毕业,他干脆加入了英特尔,在这个SGX发源的地方继续研究。

时间转瞬即过,2017年英特尔第六代Skylake架构的CPU发布,其中内置了SGX技术,SGX终于正式走向大众。

不过,这样平静的生活某天突然被打破,已经加入支付宝的前主管闫守孟有一天突然找到他,伸出了橄榄枝:“支付宝正在落地机密计算,急需人才,不来产业界看一看吗?”

读书时的田洪亮,曾以为技术是创新驱动的;工作后,才发现技术是需求驱动的。支付宝正有着机密计算技术创新的土壤。金融行业极为重视数据安全,支付宝在向云原生架构迁移的过程中,需要保障整个系统和数据绝对不能出问题,而机密计算正符合相关的需求。另外,支付宝的另一个技术投入方向是区块链,区块链也有机密计算的需求。

对于工程师和研究者来说,有机会亲眼看着自己的劳动成果惠及大众,当然是很有吸引力的,而随后闫守孟的主管,支付宝操作系统领域负责人何征宇和他的谈话,让他下定了决心:“机密计算未来一定会是云计算的主流技术,而我们将是这一潮流的开创者!”

“连续创业”,带领学弟冲刺顶会论文

在清华的时候,田洪亮还参加过不少创业训练营,也读过不少相关书籍,其中《精益创业》对他的影响最大。

书中提到,创业最重要的就是要减少不确定性,用最少的代价去不断的探索产品的可行性,也就是所谓的“最小可行产品”。田洪亮将这套理论用到了他参与的一个个项目中。

由于他一直从事前沿的技术创新,而创新的方向是非常重要的,如果方向错误,很可能花了很大力气,最后还是一无所获。

田洪亮将自己的项目视为创业,像打造产品一样,在不断完善项目的同时,他也在不断的与外部互动,获取反馈。

他近几年的方向是Enclave libOS,但并不是一次就完工,在英特尔他有了这个想法后,发了一篇小论文,在和业内同行交流中,获得了肯定的反馈。

于是,他开始编写具体代码,在代码框架雏形搭建好之后,在征得公司同意后将之开源,看是否有类似想法的人。

在加入支付宝后,他需要能在生产环境中运行的代码,同时也需要在学术界完整的阐述他的理念和相关实现,这次,他找到了清华的学弟。

在找学弟的过程中,最让他感动的就是母校的支持。在和陈康、陈渝两位教授聊过之后,教授们很支持他的想法,将他的课题加入到本科生的毕设选题中,最终吸引了三位学弟来参与。

经过几个月的紧张开发,他们终于如期完成了项目,也就是Occlum,并且将成果投递到ASPLOS会议,结果高分录用!

ASPLOS大会全称是ACM编程语言和操作系统大会,是计算机系统领域的顶级国际会议,注重体系结构、编程语言、和操作系统之间的交叉。大会无论在学术还是工业界都具有巨大的影响力,也一直属于中国计算机学会(CCF)推荐的A类国际会议。ASPLOS 论文遴选非常严格,录用率长期维持在20%以下。

论文所介绍的Occlum,也就是Enclave libOS,可以让应用直接管理和调用硬件资源,而不需要对应用进行大规模的调整和修改,从而解决了之前SGX落地的最大难点,因为大量的存量应用很难进行这样的修改。

对于新应用的开发,Occlum也可以大幅降低开发成本。以一个最简单的 Hello World 为例。使用 Intel SGX SDK 开发的Hello World工程包含 10 个左右的文件,300 行左右的代码。相比之下,Occlum 不增加任何额外的代码,只需三行命令即可将 Linux 版的 Hello World 程序运行于 SGX enclave 中。

(3 行命令让代码在 Enclave 里跑起来)

展望未来,机密计算前景广阔

Occlum已经加入到支付宝打造的机密计算中间件SOFAEnclave当中,会在运行XGBoost、TensorFlow等程序时保护用户的数据。并且Occlum已经对外开源:

https://github.com/occlum/occlum

SOFAEnclave则和其它安全技术一起,成为支付宝构建“可信原生”的基石。

随着企业对于机密计算的尝试,它也逐渐引起了业界的重视,在研究机构Gartner发布的2019年云安全技术成熟度曲线报告中,首次将机密计算列入其中,并作为云安全技术模型中最初始的一环出现,说明了机密计算在整个云安全链路中起到的根本性作用。阿里云等云厂商也推出了自己的机密计算服务。

学术界也给予了机密计算极高的评价,来自加州伯克利大学的Dawn Song教授表示:“保守估计,10年内绝大多数的芯片都将支持机密计算能力。”

支付宝的机密计算也正处于大规模落地前夕,田洪亮和他的小伙伴们急需各类人才加入,欢迎应届同学踊跃投递简历,和大牛一起,攻关这个世界前沿课题!

加入支付宝机密计算

团队介绍:

蚂蚁金服安全计算团队,致力于打造金融级的可信基础设施,研发独创性的安全底层技术,为了亿万客户和海量数据保驾护航。

* 这是一个成立不久的团队,因此你有机会随团队一同快速成长,在项目中扮演重要角色;

* 这是一个有战斗力的集体,技术骨干均毕业于国内外顶尖高校;

* 这是一个原创技术的摇篮,团队成员曾多次在顶级学术会议上发表学术论文。

如果你热衷系统软件,或熟悉底层技术,或深谙安全之道,欢迎加入我们!

岗位要求:

如果你将于2020.11~2021.10期间毕业,且满足以下条件,请尽快联系我们。

* 大学本科或以上学历,计算机或相关专业;

* 熟悉如下编程语言语言中的至少一种:C/C++、Java、Go和Rust;

* 熟悉如下技术领域中的至少一种:操作系统、容器、虚拟化、编译器、体系结构、程序分析、形式化验证、安全攻防、可信计算等;

* 现有研究成果优秀者优先。

工作地点:

北京、上海、和杭州。

简历投递:

[email protected]


郑重声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。