鸣谢:VSRC感谢业界小伙伴——mcvoodoo,投稿精品原创类文章。
最近这些年,大家一直在用加密技术对数据、用户进行加密、签名和认证。但云计算出现后,企业从传统的封闭式架构变成开放共享、外部管理的架构,攻击面进一步扩大,另外安全和隐私的法律合规要求也逐渐增强。而加密的核心基础就是对密钥的安全存储和管理,一旦暴露则整个加密方案都形同虚设。在这种不断变化的环境中,加密技术越发重要。
01 挑战
1、大数据挑战
大量的数据被创建、存储、处理和交互,安全和隐私问题更突出。同时IT基础设施也更加开放和互联,数据更容易被访问,被攻击的几率也更大。为了解决数据安全需求,需要更多的密钥量和扩展性、灵活性,需要处理更大范围、复杂度更高的应用,例如应用级加密、数据库加密、强身份验证、Hadoop加密、字段级加密等等。
2、边界挑战
企业上云,混合云环境的情况越来越多。有个报告提到全世界84%的组织使用了IaaS,34%的组织使用超过50个的SaaS应用。此外BYOD和物联网也大量接入使用。随着这些基础设施的多样化,在开放和不受控的情况下保护密钥是一个挑战。由此衍生一个新问题,不同平台的约束和需求不同,原来公司的安全策略可能难以覆盖到云,因此密钥保护还要具备高度分布式的能力。
3、开发交付挑战
新的开发实践和工具,比如DevOps、持续集成交付、容器、微服务在国内大型互联网公司也开始有更多的应用,这些都是用来支持更快更频繁的发布周期。把安全集成到这些实践中叫做DevSecOps,这对传统安全是个重大改变。
密码学实现必须适应这些新的开发实践,不仅要提供应用的加密和数字签名,而且需要应用安全技术,类似敏捷环境代码签名这种能力来满足安全上的需求、验证、容器保护。从技术角度来看,对敏捷和云环境来说,密钥管理和保护机制需要更灵活、更自动化。
4、新加密服务
比如加密货币钱包和交换,更需要高级加密方案实现可靠密钥保护。
02 密钥安全原则
密码学的核心其实就是:保护密钥不被暴露和未授权使用。因此有几个原则:
1、不可萃取
密钥保护的作用就是防止人和机器窃取、未授权使用密钥。由于密钥始终在原始位置上保持完整,所以很难发现攻击,通常都是在发生事件后才能发现。而对密钥的保护也无非是软件和硬件层。
攻击有以下几种:
硬件侧信道攻击:
攻击者接近密钥设备,最普遍的则是基于硬件的侧信道攻击,通过测量硬件特征(比如功耗和噪声级别变化)来推断,功耗和噪声都会随着数据处理量发生变化。
软件侧信道攻击:
利用软件的侧信道提取关键信息,例如通过软件从cpu或缓存中获取关键信息。在虚拟化环境中,同一主机的两台不同VM(其中一台存储密钥),也可能会发生这种协同定位攻击。
软件攻击:
入侵保护密钥的机器,掌握root账号或者后门,这种危害最大,因为可以长期持续。例如进程注入,在合法密钥保护软件进程中插入恶意代码,提取私钥。
就现在的情况而言,数据中心和云中心的物理安全性都比较有保障,但计算和存储是共享的,因此软件攻击比物理攻击更值得关注。
2、KEY使用控制
即使不窃取密钥,受保护环境中也可以非法使用密钥,比如破坏私钥所在机器或应用,使用被盗的客户端证书创建伪应用。例如一个颁发代码签名,用于屏蔽恶意软件的证书颁发机构被攻击,又或者加密货币被盗,敏感账户被盗。使用控制的保护包括访问控制,漏洞的快速检测快速止血。
3、敏捷性
要满足新的应用需求,需要在密钥保护实现中更灵活,例如:对新的加密算法协议的支持,比如加密货币签名的椭圆曲线。
对未来新加密算法支持,例如:后量子加密设计。
修复危及加密算法的漏洞,例如:padding oracle、攻击TLS中CBC模式加密的Lucky13,针对SSL3.0的POODLE攻击,CVE-2017-15361的ROCA等等也层出不穷。
修复密钥保护机制本身的漏洞,例如:硬件侧信道,openSSL心脏出血,PKCS#11的API攻击等。
4、信任
除了上面提到的之外,还需要考虑提升安全的信任水平。我们都知道没有百分百的安全,但信任对于用户来说是很重要的。
在这方面能做的:
已有措施的加强,例如HSM是位于全球各地且受到严格物理保护,或者在数学上能够证明的算法保证。
供应商的安全证明和实力,以及项目管理记录。
安全测试和认证。
如果是云厂商,则要考虑责任模型,服务和密钥是谁在管理;如果是外部供应商,这些公司是否值得信任,即使值得信任也有可能在将来被攻击,监测和响应能力也是有限的。法律责任和保险也是解决方案的一部分。
03 密钥管理技术
从硬件到软件,再到混合云,都有不同的解决办法,但每种都有自己的安全性和可用性,需要根据自己的情况来实施。
1、专用硬件
这是最常见的,使用特别加固的设备来创建生成和存储密钥,在设备内部进行加密操作,防止密钥被泄漏。各大云厂商都有这种HSM的机制。
不可萃取性:
加密硬件提供了物理隔离的保证,物理上至少是专用加固机箱,防拆设置。逻辑上要保证密钥不能被导出,任何其他软件都不能在此系统运行。而这里则包括硬件安全模块、密钥管理系统、可信模块、智能卡令牌等等,这些密码模块都有国内外的认证标准可参考。
从历史上来看,智能卡和令牌是这里的薄弱环节,主要是低端设备容易被攻击。17年黑帽大会就展示了韩国公交卡侧信道攻击,可以成功的充值。(https://www.blackhat.com/docs/asia-17/materials/asia-17-Kim-Breaking-Korea-Transit-Card-With-Side-Channel-Attack-Unauthorized-Recharging.pdf)
KEY使用控制:
硬件设备一般都强壮的访问控制,比如HSM,需要突破物理安全保护,更高级别的身份验证(比如quorum验证)。HSM、可信平台、智能卡管理系统也会提供审计日志。但仍然可以通过攻击对应的系统来获取密钥,解决这类问题需要检测和响应能力,但硬件加密方案很难做到。
敏捷性:
硬件方案主要问题就是缺乏灵活性,所以当硬件机制有安全漏洞的时候就比较麻烦了,而且由于硬件的更换升级困难,漏洞修复时间比较长,在替换之前,密钥是暴露的,这个影响就大了去了。
某国际大公司之前的加密芯片在17年出过ROCA漏洞,根源在RSA密钥生成算法的一个漏洞,攻击者可以从相关公钥推断出芯片生成的私钥,ROCA影响面很广,实际造成的后果是爱沙尼亚因此撤销了75万张身份证。
2015年也出现过PKCS#11 API漏洞,由于API问题,攻击者可以从HSM重提取密钥,从漏洞发现到补丁应用到现场HSM,暴露窗口至少几个星期。
信任:
硬件机制全面隔离了密钥,再加上测试和认证能够提供更强的安全信心。硬件的缺点是漏洞出现后的修复期很长,从根本上动摇了信任根,但从这些年的总体情况来说,除了一些不多的失误之外,高端HSM总体上安全性还不错,所以硬件方案的信任度也很高。
可用性:
现在我们看到很多云厂商把硬件加密模块改造的更适应云环境,但对一般公司来说,在敏捷性、灵活性、可伸缩性和自动化上还是不小的挑战。例如服务量突然爆发,自动化生命周期任务,都会造成成本问题,复杂性问题,导致难以实现。
而且硬件升级也是漫长和高成本过程,如果业务本身侧重于用户体验的话,这种情况下我相信大家宁可牺牲部分安全性。
安全性:四星
可用性:一星
1、具有物理/逻辑隔离的不可提取性强保证
2、安全漏洞的新需求的敏捷性较低
3、低端设备容易受到侧信道攻击
1、缺乏可扩展性、灵活性
2、安装维护升级困难,部署不能自动化
3、端点设备管理复杂
2、软token
软件密钥管理提高了可用性、敏捷性和多平台可用性,相对硬件而言简化了部署和维护,但这个安全机制并不足够强。
可萃取性:
软件的挑战是:在共享环境中保护密钥和平台不受损害。保护密钥是通过白盒机制、加密、混淆实现的,这些手段混淆了代码保证不被读取,并在应用上做了增强。但白盒也会被攻击,可以通过逆向以识别源代码。
还有一个方法是同一硬件的侧信道攻击,CHES 2017 CTF挑战赛(https://whibox-contest.github.io/) 中,各方研究人员提交了白盒加密实现,邀请参赛者进行攻击。一共94个项目全部被攻破,大部分都是在第一天被攻破,最长的一个是28天。
软件密钥保护缺少明确的隔离能力,不断被攻击,从而导致不断被攻破。
KEY使用控制:
和硬件方法一样,软件的方法也是提供基于角色访问控制,记录日志。但不考虑高级密钥的审计和控制。硬件设备不能被克隆,但软件方法没有这个机制,代码混淆和白盒加密不能防止软件被复制,攻击者拿到了代码,破解只是迟早的事情。
敏捷性:
软件方法当然敏捷,简化了bug和漏洞的修复时间,也能够容易的支持新加密算法。
信任:
虽然整个业界都在大力开发,但目前来看还很弱。
可用性:
灵活可伸缩,可在多平台运行。所以可以在BYOD、云环境很好的结合。
安全性:一星
可用性:五星
1、非隔离,易受克隆和软件攻击
2、生命周期保护不完整
3、高敏捷性
1、多平台,支持云、数据中心、终端设备
2、轻量级、可扩展、易维护
3、可信执行环境
可信执行环境(TEE)是近年来发展比较快的安全特性,市场上主要是INTEL的SGX和ARM的TrustZone。TEE是芯片中的一个指定空间,可以作为数据存储和执行的安全飞地,能防止外部操作系统访问TEE,飞地内的加密和代码不会被修改的一种逻辑隔离。
因此TEE可在分布式环境中放置敏感应用和数据,摆脱对底层基础设施信赖。由于他们是在芯片中实现的,因此可以是一个优雅、通用的方案。在这个方案中,密钥和管理软件驻留在信任环境。
可萃取性:
理论上,TEE的任何数据都不应被提取,但TEE和其他软件一起在通用处理器运行,因此很容易通过共享资源的软件侧信道进行密钥窃取。攻击上包括基于缓存、投机性执行、定时攻击。
在密钥保护应用中的“侧信道验证”可以降低这种风险,比如不管密钥值是多少,确保加密算法的运行时间是常数,可以防止定时侧信道攻击。但这种方法需要长期对抗,因为还不知道有多少攻击方式,也不知道有多少未知侧信道。
最近出现的问题是去年的熔毁和幽灵,这两个漏洞凸显了安全面临的巨大挑战,几乎影响了过去20年所有的微处理器。幽灵利用了“推测执行”的方法,由于低权限应用和内核访问内存没有很好分开,因此获得TEE中的数据访问权。
这种修复就比较复杂,而且在有的情况下几乎不可能修复。虽然目前还没有报道过谁因此受害,但随着TEE流行,这类攻击不可避免。但最麻烦的是,如果发生泄漏很难发现,这些攻击在日志中没有任何痕迹。
漏洞不止熔毁和幽灵,还有其他,国外有篇论文提到了某厂芯片的诸多问题,为避免引起争议就不展开了。
KEY使用控制:
TEE的KEY管理还是个新课题,当前方法包括访问控制、审计日志和系统监视UI,但这些技术怎样发展还有待观察。在技术层面,添加高级密钥管理功能应该很简单,因为TEE是个灵活飞地,可以运行任何代码。
敏捷性:
TEE更新比较容易,因此具有一定灵活性。但TEE在某些方面又不敏捷,例如某品牌天生依赖AES128和ECC,将来如果有后量子加密,要么升级固件,要么就需要替换。在不同TEE的混合云下,则要在每个平台上进行单独开发和维护,从而降低灵活性。
信任:
TEE提供了很多安全特性,比如代码加密和完整性验证,但仍不能证明边信道攻击可以防御,因此信任度相对来说不是最高,尤其在一些高度敏感数据加密上。
可用性:
TEE比软件密钥保护具有更高级别安全性,但这种实现受制于对处理器的支持,所以不能适用所有环境。而且当TEE被打包成现场物理设备时,就不具备虚拟化提供的弹性、可伸缩和自动化。
安全性:二星
可用性:三星
1、易受软件侧信道攻击
2、高敏捷性
3、高级保护功能难以支持(例如后量子加密)
1、需要基础设施支持
2、可伸缩性、高可用性、生命周期管理能力
4、多方计算
安全多方计算(MPC)在80年代密码学的一个子领域,重点解决:两方或多方如何能够联合计算,同时保证各自输入的保密性。
MPC在密钥管理中的应用是基于这样的想法,密钥可以分成放在不同机器上随机共享,并且这些机器可以使用MPC协议共同计算功能,而不需要任何机器获得关于其他方的任何KEY共享。
这个方法支持所有的密码算法,因此密钥可以用在各种场景,而无需在整个生命周期统一使用。MPC的密钥保护用软件实现,加密安全边界延伸到单个机器之外,可跨越云、数据中心和不同节点。MPC不是一个新领域,但在实际应用中很有场景,因此最近在这个领域开始有了更多人的研究,我注意到阿里的研究院最近在安全上的课题就是多方计算。
不可萃取性:
MPC的密钥保护很强大,而且有数学保证:在不破坏密钥机器的情况下,密钥不会被破坏。只有在MPC和机器同时被破坏才会收到威胁,因此提供了更高的安全性。MPC依赖节点之间的强分离,这种分离有多种实现。
证书隔离:每个节点有不同凭证,甚至不同的管理员。
设备隔离:节点在不同机器上,可以实现强分离。也可以在地理上分散,例如不同国家,以防止某些政治干涉。
软件堆栈隔离:每个节点使用不同的软件堆栈。节点在不同平台上,使用不同的操作系统、开发语言进行防御。
除了节点之间的隔离外,还可以使用安全措施防止关键节点共享。例如在TEE中生成加密密钥,且证明另一个节点的完整性。
KEY使用控制:
基于MPC方法也支持访问控制、审计日志和系统监视。但在端点加密密钥的能力是MPC独有的,因为密钥操作在端点和服务器的节点之间执行,从而能够跟踪服务器端的所有操作。MPC可以有更灵活的授权结构,包括quorum的仲裁机制。
类似的,MPC密钥管理可以用于客户端证书,从而防止他们暴露和窃取。
MPC方法的一个好处是可任意节点立即撤销密钥,只要简单的删除相关密钥共享就可以使密钥无用。 这个方法可以在响应时快速止血,或按照GDPR立刻实现个人数据遗忘权。
敏捷性:
MPC是软件方法,更新可以快速实现,且无需停机。另外理论和实践上也表明,对各种加密算法(包括后量子和其他高级算法)都是一个可行方案。
信任:
MPC还在早期阶段,对密钥的保护在数学上也有严格证明的安全性,再加上节点之间的强隔离,MPC是未来高可信方案。
MPC还有一个安全特点,当你对密钥完全控制时,密钥可以在任何基础设上使用,在共有云上,节点可以和服务于应用集成,另一个节点可以放在其他位置例如私有云,这个功能让信任变得不那么重要,因为公有云无法拿到完整密钥。
可用性:
MPC可以在任何环境运行,包括虚拟机和容器,可以支持广泛应用场景,包括新密码学和物联网。
安全性:四星
可用性:五星
1、数学证明的安全保证:获取密钥至少要同时控制两台机器
2、高级授权
3、高敏捷性
1、支持云、终端、数据中心等
2、高度灵活性,支持多种场景
3、可扩展性好,高可用和生命周期管理
04 总结
每个方案都有不同的安全性和可用性特点,同时也要考虑实际场景。
需要考虑的点包括:
IT基础设施的范围是什么,云、数据中心和终端?
要保护的对象是谁,敏感级别怎样,物理位置在哪。
合规要求有哪些?
厂商支持哪些?
未来有什么IT结构变化,比如全球化、云迁移、物联网、BYOD。
通过这些问题来选择自己的保护方法,实现最优匹配。
声明:本文来自唯品会安全应急响应中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。