来源 | Phala可信网络

责编 | 晋兆雨

封图 | CSDN 付费下载自视觉中国

瓮城

公元1268年,忽必烈派刘整与阿术率军攻打襄阳,发起元灭宋之战。史称襄樊之战。拥有“上帝之鞭”称号之一的蒙古军队,在襄阳打了整整六年。1269年,忽必烈又派丞相史天泽助战。蒙古军在襄、樊二城四周修筑城围,并封锁了汉水,多次打退南宋援军。蒙古决定不惜一切代价夺取襄阳,各地的军队也是源源不断地开往襄阳,在短短一年之内围困襄阳的蒙军就增至了10万。

但是,吕文德所建立的守城军队也不容小视。他们凭借襄阳夹汉水,地险城固的有利地形,特别是守备措施充分、物资储备丰富,使得蒙军虽然急切但也在短时间内拿不下襄阳。直到1274,宋朝多次援救襄樊均被击溃且城内粮草耗尽的前提下,守将吕文焕才最终投降。1279年,陆秀夫背着南宋最后一个皇帝跳海,南宋灭亡。

襄阳能守住6年之久的关键,除了蒙古自身因为蒙哥身亡(被杨过击杀)导致的战略不稳、襄阳乃至南宋人民同仇敌忾、南宋战略布局多次出动救围战役外,还有个很有意思的原因:襄阳本身固若金汤,不仅围绕汉水天堑而建,且拥有最宽的护城河,还有继承自北宋开始的“瓮城”设计。

很多人不理解,为什么战争片里不直接攻打城门?通过城门进入城市不就胜利了?

古代人虽然知识水平有限,但是智商和我们是一致的(甚至更高),他们这么做是因为在上千年的攻守经验中演化出了一套硬件、软件层的防御系统。即使你攻入了城门,还有这样的景象等着你,你会深刻理解“瓮中之鳖”的含义:

先民们为了防止城门被突破,又在城内设置了一圈“内城”,因此你打开门后会发现进了一个牢笼。瓮城内部的空间一般都极其有限,队伍在圆形一圈厚厚的城墙里动弹不得,而且弓箭手已经围一圈比赛射击了。

瓮城的设计思路可以总结为:

  • 针对易被攻破的模块,设计单独的双重保护机制

  • 限制不信任对象的行为

  • 构建易于清理不信任对象的结构

这个设计后来应用在计算机防御系统设计中,称为“沙盒模型”。

沙盒

在计算机安全领域,沙盒(英语:sandbox,又译为沙箱)是一种安全机制,为运行中的程序提供的隔离环境。其运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分表演,“沙盒”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。

因此,和瓮城类似,其设计理论上保障了以下几点:

  • 针对易于感染恶意程序的对象,设计双重保护:通过虚拟化环境,能够实现包括系统级别的沙箱和容器级别的沙箱

  • 严格限制不信任对象的行为:沙盒提供用后即回收的磁盘及内存空间,网络访问、对真实系统的访问、对输入设备的读取通常被禁止或是严格限制

  • 一旦发现恶意程序,通过重定向,可以把文件、注册表等路径重定向到其他位置(沙箱指定位置),这样软件本来想操作的资源就不会被访问或者操作,保证资源的安全性。

这种将“假定不信任”模块约束的模型,可以简化为:

但是这种模型依赖检测能力。只要恶意程序能够做到充分掩饰,或以某种方式规避了安全扫描,它们就能自由感染用户的设备,最终侵入到公司网络和关键业务系统。

随着恶意用户的攻击手段变化多端,防护者只能把防火墙越砌越高、入侵检测越做越复杂、恶意代码库越做越大,误报率也随之增多,使得安全的投入不断增加,维护与管理变得更加复杂和难以实施,信息系统的使用效率大大降低,而对新的攻击毫无防御能力。对于检测-响应式的安全策略,只要恶意程序能够骗过瓮城守卫军,他们就能自由入内。

因此,计算机系统还衍生了一种新的安全模型,一般称为“可信执行环境”技术(Trusted Execution Environment,简称TEE)。与"Sandbox"模型恰恰相反,可信计算假定“信任”是稀缺的。TEE是从逻辑正确验证、计算体系结构和计算模式等方面的技术创新,以解决逻辑缺陷不被攻击者所利用的问题,形成攻防矛盾的统一体,确保完成计算任务的逻辑组合不被篡改和破坏。

可信计算技术

可信计算技术的发展

1983年,美国国防部制定了世界上第一个《可信计算机系统评价标准》(TCSEC),第一次提出了可信计算机和可信计算基(Trusted Computing Base,TCB)的概念,并把TCB作为系统系统安全的基础。

1990年,国际标准化组织与国际电子技术委员会ISO/IEC在其发布的目录服务系列标准中基于行为预期性定义了可信性:如果第2个实体完全按照第1个实体的预期行动时,则第1个实体认为第2个实体 是可信的。

1999年,IBM、HP、Intel和微软等著名IT企业发起成立了可信计算平台联盟(TCPA, Trusted Computing Platform Alliance),这标志着可信计算进入产业界。

2003年,TCPA 改组为可信计算组织(TCG, Trusted Computing Group)。目前,TCG已经制定了一系列的可信计算技术规范,如可信PC、可信平台模块(TPM)、可信软件栈(TSS)、可信网络连接(TNC)、可信手机模块等,且不断地对这些技术规范进行修改完善和版本升级。

2009年,OMTP(Open Mobile Terminal Platform)在《omtpadvancedtrustedenvironmentomtptr1v11.pdf》中定义了TEE,定义为“一组软硬件组件,可以为应用程序提供必要的设施”,需要满足两种定义的安全级别中的一种。第一个安全级别目标是应对软件攻击,第二个安全级别目标是同时应对软件和硬件攻击。

下面我们讲几个TEE计算机理论中的重要概念。

信任根与信任链

可信计算的思想是在计算机系统中先建立一个信任根:从信任根开始,到硬件平台、操作系统、应用,一级度量一级,一级信任一级,把这种信任扩展到整个计算机系统,并采取防护措施,确保计算资源的数据完整性和行为的预期性,从而提高计算机系统的可信性。

可信根

通常是可信硬件芯片。可信计算通过芯片厂家植入在可信硬件中的算法和秘钥,以及集成的专用微控制器对软件栈进行度量和验证来确保可信。根据安全芯片和其上运行的可信软件基(Trusted Software Stack)分类,业界目前主流的可信计算标准主要有三种:Trusted Platform Module (TPM)、Trusted Cryptography Module (TCM)和Trusted Platform Control Module (TPCM)。

信任链

主要作用是将信任关系扩展到整个计算机平台,它建立在信任根的基础上。信任链可以通过可信度量机制来获取各种各样影响平台可信性的数据,并通过将这些数据与预期数据进行比较,来判断平台的可信性。

可信主要通过度量和验证的技术手段实现。

  • 度量就是采集所检测的软件或系统的状态

  • 验证是将度量结果和参考值比对看是否一致,如果一致表示验证通过,如果不一致则表示验证失败。

建立信任链时遵循以下3条规则:

  • 所有模块或组件,除了CRTM(信任链构建起点,第一段运行的用于可信度量的代码),在没有经过度量以前,均认为是不可信的。同时,只有通过可信度量且与预期数据相符的模块或组件,才可归入可信边界内。

  • 可信边界内部的模块或组件,可以作为验证代理,对尚未完成验证的模块或组件进行完整性验证。

  • 只有可信边界内的模块或组件,才可以获得相关的TPM 控制权,可信边界以外的模块或组件无法控制或使用可信平台模块。

TPM

一般,可信计算平台由TPM芯片机器密钥和相应软件作为信任根。

TPM本身是一个SOC芯片,由CPU、存储器、I/O、密码协处理器、随机数产生器和嵌入式操作系统等部件组成,主要用于可信度量的存储、可信度量的报告、密钥产生、加密和签名、数据安全存储等功能。通过将密钥封装在芯片内部,让外界无法访问,只有TPM认可的合法应用请求时,TPM才会在芯片内部对数据进行解密,并将解密后的数据送往内存。

TPM的使用一定程度上降低了重要数据被木马等恶意软件窃取的风险,但却无法防御运行时攻击,如果黑客在合法应用运行时进行破解,直接去内存读解密后的数据,这样TPM就形同虚设了。

为了解决这个问题,我们还应该想办法使得黑客无法读取合法应用所使用的内存空间,可信执行环境(Trusted Execution Environment)的提出,正是基于这样的背景。

TEE与REE

2010年,Global Platform 首次宣布了一整套TEE系统体系标准。Global Platform的系列TEE规范,这也是当前许多商业或者开源产品一般都会参考该规范,并按照其定义的各种功能接口进行规范实现。

Global Platform从接口、协议实现层面上对TEE进行了部分的规范定义,以及典型应用规范定义。可以看出,可信执行环境应该有如下几个特征:

  • 软硬件协同的安全机制:隔离是其本质属性,隔离可以是通过软件,也可以是硬件实现,更多的软件、硬件、IP、总线一体的安全机制

  • 算力共享:能使用CPU的同等算力、硬件资源

  • 开放性:有对应的REE侧,才有TEE的必要性,只有在开放性中才需要可信执行环境的保护

到这里,我们大概可以看出,TEE技术与沙盒模型的区别了:一个是有罪推定原则指导的设计,一个是无罪推定原则指导的设计。

在有罪推定的模型中,TEE是相对REE(Rich Execution Environment)而言的。一般称TEE和REE为 Secure World 和 Normal World。比如一个系统平时是跑在Normal World上,但当有些安全性要求比较高的行为,例如人脸数据比对、或支付时用私钥签名等任务,需要运行在Secure World里。

Trust Zone

2006年,ARM从 ARMv6架构 开始引入了TrustZone技术。TrustZone技术将CPU的工作状态分为了正常世界状态(Normal World Status,NWS)和安全世界状态(Secure World Status,SWS)。

支持TrustZone技术的芯片提供了对外围硬件资源的硬件级别的保护和安全隔离。当CPU、处于正常状态时,任何应用都无法访问安全硬件设备,也无法访问属于安全世界状态下的内存、缓存(Cache)以及其他外围安全硬件设备。

在具体的应用环境中,可以将用户的敏感数据保存到TEE中,并由可信应用(Trusted Application,TA)使用重要算法和处理逻辑来完成对数据的处理。当需要用户的敏感数据做身份验证时,则通过在REE侧定义具体的请求编号从TEE侧获取验证结果。

Intel SGX

2013年,英特尔推出了基于TEE的指令集扩展:SGX(全称Intel Software Guard Extension),旨在通过硬件安全为强制性保障, 不依赖于固件和软件的安全状态, 给用户空间提供可信执行环境。

SGX通过一组新的指令集扩展与访问控制机制, 实现不同程序间的隔离运行, 保障用户关键代码和数据的机密性与完整性不受恶意软件的破坏。

与ARM TrustZone的思想不同,SGX采取的方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个Enclave中,保护其不受恶意软件的攻击,特权或者非特权软件都无法访问Enclave。

一旦软件和数据位于Enclave中,即便操作系统也无法影响Enclave里面的代码和数据。Enclave的安全边界只包含CPU和它自身,这一设计避免了基于软件的TEE自身存在软件安全漏洞与威胁的缺陷, 极大地提升了系统安全保障。

目前,Intel SGX已允许第三方利用“远程验证”机制,构建自己的信任证书颁发。因此在商用层面上,Intel SGX相对比较成熟。

SGX的问题

但是目前Intel SGX也存在一些问题:

  • 过于依赖英特尔。也就是所谓“中心化”,这也是MPC的多种方案中TEE常常被抨击的点。

  • SGX提供的enclave可使用内存太小, 当程序数量和规模增大时, 需要换进换出页面.为了保证安全性, 需要对页面进行完整性和机密性保障, 导致系统开销大。

  • 无法抵御侧信道攻击。SGX Enclaves仅保护在围圈中运行的代码。这意味着不受信任的操作系统将保留服务资源管理任务,这为侧信道攻击打开了一个很大的缺口。事实上,最近的研究已经证明了一些针对英特尔SGX的侧信道攻击是有效的。

  • 由于enclave处于用户态, 其自身无法执行系统调用, 需要与不可信区域进行交互(运行库的支持有限, 接口的安全性)。在执行系统调用前需要退出enclave, 执行完成后将结果返回到enclave中, 增大了安全风险和系统开销。

不同的计算机系统设计有不同的对象,就好比我们不能让瓮城承担市民居住的功能一样,我们发现TEE与区块链有可以互相补充的适用场景。

区块链TEE能做到什么

区块链对TEE的价值:

  • 通过去中心化网络和共识机制降低英特尔等厂商的安全风险和作恶可能性,保证可信链(此链非区块链)的可用性

  • 解决Enclave与不可信区域交互的问题。区块链最擅长的即是构建可信网络,不论是BTC还是以太坊,其可信程度都达到了非常好的水平——甚至与TEE的可信程度类似。因此,让TEE通过区块链和区块链智能合约交互是个非常好的互补场景。这也是Phala网络需要跨链能力的重要原因。

TEE对区块链的价值:隐私(机密)保护

一提到隐私保护,大家想到的就是Facebook隐私泄露什么的。其实不只是这样,TEE可以实现的区块链秘密保护更加泛化,还包括通用意义上的“机密”,比如商业类型的、业务沉淀的。

我们常常给隐私保护技术分成三个世代:

第一代技术的典型代表Zcash和门罗币,他们通过零知识证明、环签名、保密转账等技术实现了交易的隐私保护,一个突出的特点就是他们的技术可以保护原生币的交易隐私。

第二代技术的典型代表是Aztec,一个以太坊上的隐私协议,采用和Zcash类似的技术,可以为任何ERC20代币实现交易隐私。第二代技术是第一代的扩展,不过他们都只能实现交易隐私,如果涉及到图灵完备的智能合约就无能为力了。

第三代技术,我们希望把“隐私保护”的概念拓展成“机密保护”,隐私不仅指用户的交易隐私,更应该能保护智能合约中的任何机密数据不被泄漏。目前的智能合约技术,所有的数据都必须完全公开,而我们希望“机密智能合约”(Confidential Smart Contract)可以如同以太坊的图灵完备智能合约一样,可以进行通用的计算,但不必暴露机密数据。

目前机密智能合约技术可以通过多方计算(MPC)与可信执行环境(TEE)实现。前者基于同态加密、零知识证明等纯密码学技术,不依赖硬件,可以高效率的应用在一些特定领域,例如可验证随机数、分布式密钥生成等,但在通用计算上有平均10^6倍的性能损失。后者基于可信计算硬件(主要是Intel的CPU),但已经可以实现非常高效率的通用计算。

推荐阅读
  • 区块链时代的世界宪章:代码即法律

  • 以太坊五周年:从涅槃中苏醒

  • V神演讲内容曝光!Defi、挖矿、行业应用更多主题大揭秘!

  • 微软重启收购 TikTok 讨论;字节跳动称被Facebook抄袭和抹黑;Debian 10.5 发布| 极客头条

  • 谷歌顶级量子科学家详述他为何从谷歌辞职

起源故事:瓮城、沙盒与可信计算相关推荐

  1. 阐述沙盒游戏的历史和理论

    来自 GameRes:http://www.gameres.com/msg_233466.html "沙盒"现在是游戏圈中的热词.与"自由"或"爱&q ...

  2. 代号:生机迟迟不上线?腾讯另一款沙盒生存手游我的起源却今日开测

    我的起源测试激活码怎么获取?代号:生机手游什么时候上线?明日之后大部分玩家已经玩到肝疼,光子的代号:生机手游继去年发布游戏宣传视频之后到现在迟迟没有动静,然而就在今天上午11点,由完美世界研发.腾讯游 ...

  3. 泰拉瑞亚试图加载不正确的_《泰拉瑞亚》评测:像素沙盒游戏中的王者,创造一个属于你的世界...

    相比于<我的世界>,<泰拉瑞亚>可能并没有那么耳熟能详,但同样身为沙盒传奇的它,与<我的世界>所带来的游戏魅力是完全不同的.<泰拉瑞亚>以探险为主,着眼 ...

  4. ios沙箱模式开启_【iOS】苹果IAP(内购)中沙盒账号使用注意事项

    目标 沙盒账号的正确使用方式 沙盒账号使用的注意事项 1.沙盒账号是什么 iOS应用里面用到了苹果应用内付费(IAP)功能,在项目上线前一定要进行功能测试.测试肯定是需要的,何况这个跟money有关. ...

  5. 游戏剧情哪家强?日式RPG与欧美沙盒的优劣

    来自GameRes:http://www.gameres.com/692729.html 文/无垢之黑冢 此前,笔者曾对"日式RPG(角色扮演游戏)现状"进行过一番并不成熟的评析, ...

  6. 流放者柯南rust_《流放者柯南》评测8.0分 胯下生风的沙盒生存游戏

    注:我们将从评论区抽出10位幸运玩家赠送台历.感兴趣的玩家不妨在评论的同时也留下能联系上您的电子邮箱.在这段注释文字消失前发布的评论均在抽奖范围内.请注意,在整个活动过程中,游民星空的工作人员绝不会以 ...

  7. 腾讯沙盒游戏计算机,最好玩的五款沙盒游戏 腾讯新作上榜

    原标题:最好玩的五款沙盒游戏 腾讯新作上榜 沙盒游戏在目前的大环境下属于小众游戏,如果你真的花时间去玩一款沙盒游戏就会爱上沙盒游戏.沙盒游戏的节奏平缓,和MOBA游戏不一样没有什么激动人心的瞬间,不过 ...

  8. rust沙河游戏_Steam上最热销的十款沙盒游戏!好玩的都在这了!

    1 GTA5 常年稳居销售榜TOP1的侠盗猎车手5,这款游戏是以犯罪为主题的动作冒险类游戏,集动作.赛车.枪战.养成.剧情冒险为一体,可玩性非常强,深受各大玩家喜爱. 2 Rust 腐蚀,僵尸生存类游 ...

  9. rust腐蚀网页游戏_玩腻了我的世界?这15款沙盒生存类游戏了解一下

    好啦我知道,玩腻<我的世界>那是肯定不可能的,但是下面这些游戏也是很不错的,有空的时候不如来换换口味啦! 泰拉瑞亚 这款游戏和麦块很相似,不过画面是2D的不怕头晕,游戏内增加了RPG要素, ...

  10. 不仅仅是建模 6个步骤解析沙盒游戏场景设计

    游戏场景是怎么制作的?尤其是沙盒游戏,开放的世界对场景设计的要求更为严苛.场景制作当然需要美术做模型,但这不是问题的根本.从以下几个方面来说: 游戏标准尺寸 地形 路网和区域划分 游戏内容密度 工作量 ...

最新文章

  1. 你太菜了,竟然不知道Code Review...
  2. VMware网络配置详解
  3. spark.kubernetes.file.upload.path的作用
  4. Swift编程语言学习2.1——基础运营商(在)
  5. python中html.parser_在Python中使用HTMLParser解析HTML的教程
  6. [css] body{height:100%}和html,body{height:100%}有什么区别?为什么html要设置height:100%呢,html不就是整个窗口吗?
  7. 随机样本一致性:一种用于图像分析和自动制图的模型拟合模型(3)--(P3P的迭代解)
  8. c++ 函数参数问题
  9. CentOs上docker安装nginx、tomcat、redis
  10. 2021 年最佳开源软件榜单
  11. python爬虫小项目价格_爬虫项目怎么收费?
  12. word参考文献后面空格太大
  13. 命令方式查找ip地址、Mac地址
  14. 北京口袋时尚科技公司-微店内推技术一面
  15. IT帮2019年2月线下活动【定义工作,解读自我】之站桩练习
  16. 国家计算机病毒中心发现篡改IE的恶意木马
  17. 微信小程序服务器该如何选择
  18. Linux最最最常用命令!
  19. 计算机视觉学习1-图像处理
  20. python学习之路0x00

热门文章

  1. 雾霾天出行,如何精确避开“雷区”?2016 SODA数据侠十强
  2. java图书管理系统毕业设计_java图书管理系统毕业论文
  3. 流行学习与拉普拉斯变换的推导
  4. 集体智慧编程(5)——优化
  5. 国内银行卡BIN号速查简表(2016)
  6. 【正点原子MP157连载】第六章STM32Cube固件包-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南
  7. CentOS安装网络驱动
  8. 二分查找算法(Java版)
  9. java常用工具类封装
  10. cudnn下载注意事项