将最珍贵、最值钱的东西用什么锁住,是我们不知道从哪一辈祖先那里习得的行为,当然,也许是从锁的诞生开始。
【 图片来源:搜狐 所有者:搜狐 】
现在,世面上的锁越来越高级和复杂,但是,我们也遇到了更难保存和保密的财富——数据。
给数据上锁可能是更难的事情:数据跟普通的物品最大的不同是,它在被人使用的过程中有可能很容易就被复制,而它的“分身”与正主可以毫无分别,只要你想。
【 图片来源:百度百科 所有者:百度百科 】
后来,针对数据隐私的保护,让数据在使用的过程中依然能以“上锁”的状态保持“隐秘”,出现了可信硬件和密码学两个流派。
硬件方面主要是可信执行环境(TEE),而密码学方面有同态加密、安全多方计算和零知识证明。由于很多原因,MPC、同态加密等密码学技术手段尚未取得重大突破,而基于硬件的方案开始有了一些不错的成果。
在可信硬件派中,有一条路径在我国被一些大型互联网企业看中,它就是英特尔开发的新处理器技术 SGX 。
SGX 的思路是,在计算平台上提供一个可信的空间,保障用户关键代码和数据的机密性和完整性。SGX 的保护方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个 enclave中,保护其不受恶意软件的攻击。
“enclave”翻译成中文就是“飞地”,是一种人文地理概念,意指在某个地理区划境内有一块隶属于他地的区域。
所以,在这个特殊的“国中之国”中,执行 SGX 的权限非常高,特权或者非特权的软件都无法访问 enclave。一旦软件和数据位于 enclave 中,即便操作系统管理员和 VMM(Hypervisor)也无法影响 enclave 里面的代码和数据。
能够“号令”enclave 的只有 CPU 和它自己。
把大象装进一个冰箱需要三步,让数据在小黑盒里默默地发生一切也只要三步:
1.把应用程序分为两部分:安全应用程序和非安全应用程序;
2.将合法软件的安全操作封装在一个 enclave 中;
3.当调用 enclave 函数时,只有 enclave 内部的代码才能查看其数据,并始终拒绝外部访问;当调用结束时,enclave 的数据会留在受保护的内存中。
另外,一个 CPU 中可以存在多个“飞地”,大家互不干扰,同时进行自己秘密的操作。
【 图片来源:嘶吼 所有者:嘶吼 】
英特尔是在 2004 年推出这项技术的。那会,英特尔内部有一个叫做技术战略长期布局的计划,这个计划的目的就是让公司的技术人员大开脑洞,大家把各自的脑洞项目拿来比一比,最终的胜利者就可以当面跟 CEO 嘚瑟一下自己的成果,SGX 就是 2004 年的获奖项目。
但是,雷锋网猜想,当时英特尔内部可能都没想到,作为项目成果的 SGX 会在数据加密上发挥这么大的功用。毕竟,亚马逊的一帮人在那几年还在疯狂捯饬 AWS。
在大家看来,传统机房不就可以了吗,还要啥自行车。也许,SGX 可能就能以处理器或者服务器的功能产出一下了吧。
没人想到,有一天,一个叫“云”的东西引发的热潮会让 SGX 成为探索者手里的“安全指南针”。到了云上,安全的边界变成了一个很难把控的东西,虽然数据存储、数据传输时加密问题容易解,但是数据运行时加密依然很难。
这时,一个关键的转折出现了。
2016 年,一个叫李晓宁的人和阿里云的肖力聊了聊。
李晓宁在英特尔全球安全实验室工作了十几年。虽然李晓宁当时并没有直接负责 SGX 技术的应用规划,但是已经在思考硬件安全和云计算的结合。
彼时,阿里云为了做安全,也是蛮拼的。他们做了节点传输中对通信信道的安全,也就是保证数据在传输中是安全的。在这个基础上,他们又做了传统存储加密,所有数据在云上存储时也是安全的。不过,对于数据运行时如何既加密,又能用,这个东西是没有的。
是不是能从硬件入手,解决这个问题?肖力也想到了这一点。
不过,具体怎么做,国内尚无先例。
随后,李晓宁加入了阿里云,探索硬件安全与云的结合,并推动阿里云与英特尔在 SGX 落地上的合作。
让 SGX 落地在云上,还有这么几个难点:
第一,懂 SGX 这项技术的人很少。
第二,要在机型上面通过固件把功能展示出来,比如要修改 BIOS 底层固件,也就是至少要有一个合适的接口能够把这块“飞地”连击起来,还要在操作系统里有支持 SGX 运行的软件。
第三,所有的东西搞定后,这个东西的门槛要低,要让用户用得着。
阿里云当时要搞一个牛逼哄哄的神龙云服务器出来,神龙云服务器的使命是,让 CPU 全部用于真正的计算,成功降低虚拟化损耗。如果说这是神龙云服务器传奇故事的主线,那么李晓宁团队所做的让 SGX 技术以硬件形式呈现在神龙云服务器上,就是神龙云服务器的“安全底线”。
不过,神龙云服务器的 BIOS 由独立的 BIOS 厂商提供, 厂商完全不知道 BIOS 里对 SGX 应该有什么样的操作。
第一个难点和第二个难点同时爆发了。
BIOS 厂商、英特尔这之间需要一个“连接点”,这个“连接点”要站在整个系统的角度梳理 SGX“落地”成硬件的各种问题,尤其要解决操作系统的兼容性,并进行大量用户测试。
当时有个 bug ,BIOS 用了英特尔的工具检查,检查完了不通过,兼容性出现了问题,李晓宁和团队对着 SGX 的标准分析中间对应的每个寄存器操作的含义在哪里,对照相同 BIOS 版本的海外设置。然后找英特尔的人讨论,确认了设置的问题,甚至用 BIOS 关键代码片 debug 给对方看,改了很多遍才通过。
2017年,阿里云和英特尔联合发布了基于 SGX 的加密计算技术后,又在 2018 年推出了神龙云服务器,在这个“落地”的商业化产品上,基于 SGX 的加密计算技术和神龙一起腾云。
如果服务器可以,那么,其他“容器”又有何不可?
就像人类学会了保存火种后,开始了探索利用火的征途,火帮助我们打造刀具,冶炼陶器,现在则用来驱动轮船、飞机、火箭……
阿里云希望还有更多的载体能与 SGX 结合,打造一条更加完整的安全链路。于是,他们解锁了 FPGA 设备和智能网卡,通过 FPGA 加密计算技术让今天主流的机器学习计算模型和数据相关的计算都可以运行在可信环境中,将系统的可信扩展到网络上,通过智能网卡加密计算技术实现可信网络。
而联合英特尔发布了针对云原生 Golang 应用保护的 Graphene Golang 开源解决方案可能算是真正降低了 SGX 的技术门槛,它要做的是让阿里云上基于 Golang 开发的云原生应用可以不经修改即可通过 SGX 技术进行保护,这样一来,更多企业可以用上加密计算的安全能力。
一项新技术的诞生和推广,最开始时都是很不容易的。
SGX 落地到阿里云成为产品之前,在一项关键的灰度测试上选择了两家真正理解 SGX 的测试用户,一家是伯克利的 Oasis Labs,这里有一位炙手可热的安全专家 Down Song,另一家则是清华大学的网络安全实验室教授张超带领的团队。
借助两支顶级安全研究团队用户的“打磨”,基于SGX 的加密计算有了更锋利的刃。
最近,阿里云又为 SGX 加密计算的应用做了更多的尝试,在首届 SGX 应用创意大赛上,他们鼓励更多的前沿科研团队将基于 SGX 的加密技术应用到更多的实际场景中。就像 2017 年 SGX 加密技术腾云之前吸纳的顶尖安全团队的智慧,这一次,他们想看看,SGX 还能用在什么地方。
清华大学团队在机器学习网络上发现了应用点。
联邦机器学习会将模型给到不同数据所有者进行训练,很容易出现参与者不按预期执行训练任务,通过不训练或少训练来骗取奖励,造成模型污染或降低模型准确性。于是,他们利用 SGX 技术提高了联邦机器学习网络的可靠性。
长虹电子启思实验室将 SGX 技术应用到智能电视用户通过声纹完成在线支付的场景中,保障声纹支付的安全性。
SGX 的落地有了更多绚烂的想象,未来呢?SGX 还能做点什么?
各类研究者还在尝试。也许,攻击者也会同步发现更多芯片漏洞以及利用方法,开展新一轮攻守竞赛,也许,基于 SGX 的加密、应用及探索不会是数据加密技术的终局,还会有其他更先进的数据加密技术出现。
在蓬勃的技术文明进程中,总有更先进的技术诞生,但我们不能忘记的是,只有不断探索和尝试才是推动技术文明滚滚向前的最终动力。
火种不灭,探索永存。
【 图片来源:百度知道 所有者:百度知道 】
想了解更多有价值的网络安全内容?欢迎关注雷锋网、雷锋网、雷锋网,重要的事情说三遍。