最近这些年,大家一直在用加密技术对数据、用户进行加密、签名和认证。但云计算出现后,企业从传统的封闭式架构变成开放共享、外部管理的架构,攻击面进一步扩大,另外安全和隐私的法律合规要求也逐渐增强。而加密的核心基础就是对密钥的安全存储和管理,一旦暴露则整个加密方案都形同虚设。在这种不断变化的环境中,加密技术越发重要。
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。
通过这些问题来选择自己的保护方法,实现最优匹配。
以上所述就是小编给大家介绍的《密钥安全技术》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 密钥繁多难记难管理?认识高效密钥管理体系
- HTTPS之密钥知识与密钥工具Keytool和Keystore-Explorer
- 秘密的实质——密钥
- 密钥管理架构设计概述
- 代码审计 | SiteServerCMS密钥攻击
- 解读以太坊2.0密钥
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Django 1.0 Template Development
Scott Newman / Packt / 2008 / 24.99
Django is a high-level Python web application framework designed to support the rapid development of dynamic websites, web applications, and web services. Getting the most out of its template system a......一起来看看 《Django 1.0 Template Development》 这本书的介绍吧!