Intel® KPT–为您的密钥保驾护航

作者简介:王俊元,软件工程师,Intel网络平台事业部。季茂俊,软件工程师,Intel网络平台事业部

文章转载自DPDK与SPDK开源社区

从私钥的重要性说起

数字证书和私钥是公钥基础设施系统(Public Key Infrastructure-PKI)中最重要的资产。数字证书是一个实体身份的有效标识,而与之对应的私钥则用于这个身份的证明,其作用类似于“身份证”。比如,在一次SSL安全链接中,私钥的拥有者(发送方)利用自己的私钥做数据签名,并和数字证书一同发送给接收方,接收方可以利用数字证书来做签名校验,来证实发送方的真实身份。如果发送方的私钥泄露了,攻击者可以伪造一个“李鬼”的钓鱼网站来欺骗对方,从而进行非法的活动。

由此可见,私钥泄露带来的风险是灾难级的。CDN厂商乃至政府监管部门都对私钥的安全保护十分重视,提出了一些解决方案比如Keyless,不过这些方案都存在性能损失的问题。而基于Intel® QAT的新技术—英特尔密钥保护技术(Intel® Key Protection Technology)则能够使这些问题迎刃而解。

Intel® KPT—基于Intel® QAT的密钥保护技术

英特尔密钥保护技术(Intel® Key Protection Technology—Intel® KPT),是英特尔Purley平台的安全技术之一,它结合了Intel® QAT和英特尔平台可信技术(Intel® Platform Trust Technology—Intel® PTT)两大利器,来实现对私钥的安全保护,让私钥在任何存储介质中(如内存和硬盘)以密文的方式存储。同时,我们利用Intel® QAT最擅长的加速功能来加速这个被保护私钥的相关操作,比如数据解密,数据签名,从而实现了又安全又快的解决方案。

Intel® KPT实现的技术原理

Intel® KPT的实现原理如下图图1所示。做为英特尔平台安全技术之一,Intel® KPT将Intel® QAT和Intel® PTT两个模块整合在同一个南桥芯片组(PCH)中,并在这两个模块中建立一个安全的硬件通道用于数据传输。持续关注我们公众号的读者对Intel® QAT肯定不陌生了,在这里就不过多赘述。接下来我们简单介绍一下Intel® PTT。

Intel® PTT是英特尔实现的可信平台模块2.0解决方案。Intel® PTT的实现符合TPM2.0规范,它提供的安全等级与硬件TPM芯片相同。作为Intel® Converged Security and Management Engine (Intel® CSME) 的一部分,Intel® PTT可以被视为是一个Firmware版本的TPM。在功能上,Intel® PTT支持TPM2.0 芯片具备的所有功能,比如存储,度量,报告可信根(Root of Trust), 密钥/随机数生成器等。

Intel® PTT支持TPM2.0规范中定义的API, 能够和TSS2.0 无缝集成。目前Intel® PTT已经获得了广泛的应用,比如Windows 8® 和Windows® 10利用Intel® PTT来支持BitLocker对硬盘加密, 并且Linux中也有了Intel® PTT的驱动模块tpm_crb,基于TPM芯片的安全解决方案,比如可信启动,完全可以迁移到Intel® PTT上。

除了Intel® PTT和Intel® QAT, 还有一个特别重要的硬件设施,那就是Intel® PTT和Intel® QAT之间的安全通道。结合Intel® CSME,这个硬件通道可以实现数据从Intel® PTT到Intel® QAT的安全传输。在Intel® KPT的实现过程中,这个通道会作为Intel® PTT和Intel® QAT之间的“秘密”通信通道。IA侧的OS,应用程序都无法窥探这个通道内的数据。

图1. Intel® KPT的实现原理

基于上述的硬件设施,为了实现对私钥 (Private Key—PK)的安全保护,Intel® KPT首先引入了一个对称密钥 (Symmetric Wrapping Key—SWK),利用它对PK进行对称加密,加密算法可以采用AES-GCM或者是AES-CBC模式。加密后的密钥(Wrapped Private Key—WPK)以密文方式存在于存储系统中,恶意软件无法窥探其明文内容。而WPK的保护则由 Intel® PTT来完成。Intel® PTT符合TPM2.0规范,对SWK的保护可以利用TPM2.0提供的密钥管理功能来实现。Intel® PTT可以通过TPM2_Duplicate 和TPM2_Import功能将SWK纳入自己的Key Hierarchy中,根据TPM2.0规范,纳入到Key Hierarchy的密钥将会被自己的上一级密钥保护。本文不对这个过程做详细描述,具体细节可以参考TPM2.0规范。

被Intel® PTT保护的SWK可以存储在Intel® PTT的NVRAM中,也可以存放在Intel® PTT外面的存储系统中,并仅当需要的时候,将其加载至Intel® PTT的RAM中,然后通过Intel® PTT和Intel® QAT之间的安全通道发送到Intel® QAT片内。

在Intel® PTT完成了对SWK的安全保护后,当应用程序将WPK和数据卸载到Intel® QAT中的时候,Intel® QAT首先会利用从Intel® PTT传输过来的SWK将WPK做对称解密,恢复为明文的PK,然后利用PK对数据进行处理,比如数据解密,数据签名等。

Intel® KPT的工作流程

根据KPT的工作原理,我们可以得到KPT的一般工作流程,如图2所示:

图2:Intel® KPT的一般工作流程

Step1: 用户在一个安全环境中生成一个对称密钥,然后利用这个对称密钥将私钥加密。

Step2: 调用Intel® PTT的编程接口 (TSS2.0 API) ,利用Intel® PTT对SWK进行安全保护。

Step3: 应用程序在启动阶段,将SWK从Intel® PTT推送到Intel® QAT中。

Step4: 应用程序将数据和WPK 卸载到 Intel® QAT进行数据处理。

Step5: Intel® QAT利用SWK将WPK解密成PK,并且利用PK执行数据处理。

上述的5个步骤中,步骤1~2是密钥Provision过程,步骤3~5是实时数据处理过程。步骤1~2可以在一个用户信任的环境中完成,可以离线部署,也可以在KMS(Key Management System)中进行。步骤3~5的安全性则由Intel® KPT来保证,让密钥以密文方式存在于存储系统中,并能够利用这个加密过的密钥来进行数据处理。

总结

在云计算时代,租户的服务和应用以“托管”的方式交给云计算供应商来运营和维护,如何保证私钥不会被泄露是必须要考虑的问题。而从云服务的角度看,密钥保护能力是安全云必须提供的服务之一,和计算,存储,网络一样重要。Intel® KPT以Intel® QAT和Intel® PTT为基础,在对密钥提供安全保护的同时能够加速数据的签名,进行解密运算。我们相信Intel® KPT可以作为云计算供应商保障租户密钥安全的工具,并成为最终赢得市场的有力武器。

参考链接

[1] Cloudflare. Keyless ssl: The nitty gritty technical details
[2] Intel® Key Protection Technology (Intel® KPT)
[3] Trusted Platform Module Information – Intel
[4] Strengthening Security with Intel Platform Trust Technology


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/21149.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于18-07-21
2