云安全基础
1、云计算的发展历程
云计算的出现是技术和计算模式不断发展和演变的结果。云计算的基础思想可以追溯到半个世纪以前。1961 年,MIT(美国麻省理工学院)的教授 John McCarthy 提出“计算力”的概念,认为可以将计算资源作为像电力一样的基础设施按需付费使用;1966 年,DouglasParkhill 在《计算机工具的挑战》(The Challenge of the Computer Utility)一书中对现今云计算的几乎所有特点,如作为公共设施供应、弹性供应、实时供应以及具备“无限”供应能力等,甚至云计算的服务模式,如公共模式、私有模式、政府以及社团模式,进行了详尽的讨论。几十年来,计算模式的发展经历了早期的单主机计算模式、个人计算机普及后的 C/S(客户机/服务器)模式、网络时代的 B/S(浏览器/服务器)模式的变迁,如今大量的软件以服务的形式通过互联网提供给用户,传统的 IDC(Internet Data Center,互联网数据中心)逐渐不能满足新环境下业务的需求,于是云计算应运而生。
2、云计算的基本概念
云计算本身是一个非常抽象的概念,国内外的公司、标准组织和学术机构对它定义都不相同。
(1)亚马逊将云计算定义为:通过互联网以按使用量定价方式付费的 IT 资源和应用程序的按需交付。
(2)IBM 的定义为:①一种新的用户体验和业务模式。云计算是一种新出现的计算模式,它是一个计算资源池,并将应用、数据及其他资源以服务的形式通过网络提供给最终用户。②一种新的架构管理方法。云计算采用一种新的方式来管理大量的虚拟化资源,从管理的角度来看云计算,它可以是多个小的资源组装成大的资源池,也可以是大型资源虚拟化成多个小型资源,而最终目的都是提供服务。
(3)微软的定义为:云计算就是通过标准和协议,以实用工具形式提供的计算功能。
(4)美国加州大学伯克利分校在《伯克利云计算白皮书》中对云计算的定义为:云计算是互联网上的应用服务,以及在数据中心提供这些服务的软硬件设施。互联网上的应用服务一直被称作“软件即服务”,而数据中心的软硬件设施就是所谓的“云”。
(5)美国国家标准技术研究所 NIST 对云计算的定义是:云计算是一种资源利用模式,它能以方便、友好的方式通过网络按需访问可配置的计算机资源池(例如网络、服务器、存储、应用程序和服务),并以最小的管理代价快速提供服务。
(6)我国相关部门在参考了国际组织和其他国家相关标准和法规后,于 2014 年发布国家标准 GB/T 31167—2014《信息安全技术云计算服务安全指南》,其中对云计算进行了如下定义:“以按需自助获取、管理资源的方式,通过网络访问可扩展的、灵活的物理或虚拟共享资源池的模式。”(注:资源实例包括服务器、操作系统、网络、软件、应用和存储设备等。该标准也对云计算涉及的相关术语进行了定义:
•云计算服务:使用定义的接口,借助云计算提供一种或多种资源的能力。
•云服务商:提供云计算服务的参与方。云服务商管理、运营、支撑云计算的计算基础设施及软件,通过网络交付云计算的资源。
•客户:为使用云计算服务同云服务商建立商业关系的参与方。
•第三方评估机构:独立于云计算服务相关方的专业评估机构。
•云基础设施:由硬件资源和资源抽象控制组件构成的支撑云计算的基础设施。硬件资源指所有的物理计算资源,包括服务器(CPU、内存等)、存储组件(硬盘等)、网络组件(路由器、防火墙、交换机、网络链接和接口等)及其他物理计算基础元素。资源抽象控制组件对物理计算资源进行软件抽象,云服务商通过这些组件提供和管理对物理计算资源的访问。
•云计算平台:云服务商提供的云基础设施及其上的服务软件的集合。•云计算环境:云服务商提供的云计算平台,及客户在云计算平台之上部署的软件及相关组件的集合。
3、云计算的主要特性
(1).按需自助服务
在不需或仅需较少云服务商人员参与的情况下,客户能根据需要获得所需计算资源,如自主确定资源占用时间和数量等。比如对于 TaS 服务,客户可以通过云服务商的网站自助选择需要购买的虚拟机数量、每台虚拟机的配置(包括 CPU 数量、内存容量、磁盘空间、对外网络带宽等)、服务使用时间等。
(2)、泛在接人
客户通过标准接人机制,利用计算机、移动电话、平板等各种终端通过网络随时随地使用服务。对客户来讲,云计算的泛在接入特征使客户可以在不同的环境(如工作环境或非工作环境)下访问服务,增加了服务的可用性。
(3)、资源池化
云服务商将资源(如计算资源、存储资源、网络资源等)提供给多个客户使用,这些物理的、虚拟的资源根据客户的需求进行动态分配或重新分配。
构建资源池也就是通过虚拟化的方式将服务器、存储、网络等资源组织成一个巨大的资源池。云计算基于资源池进行资源的分配,从而消除物理边界,提升资源利用率。云计算资源在云计算平台上以资源池的形式提供统一管理和分配,使资源配置更加灵活。通常情况下,规划和购置 IT 资源都是满足应用峰值以及五年计划需求的条件,导致实际运行过程中资源无法充分使用、利用率低,而云计算服务则有效地降低了硬件及运行维护成本。同时,客户使用云计算服务时不必了解提供服务的计算资源(如网络带宽、存储、内存和虚拟机)所在的具体物理位置和存在形式。但是,客户可以在更高层面(如地区、国家或数据中心)指定资源的位置。
(4)、快速伸缩性
客户可以根据需要快速、灵活、方便地获取和释放计算资源。对于客户来讲,这种资源是“无限”的,能在任何时候获得所需资源量。
云服务商能提供快速和弹性的云计算服务,客户能够在任何位置和任何时间,获取需要数量的计算资源。计算资源的数量没有“界限”,客户可根据需求快速向上或向下扩展计算资源,没有时间限制。从时间代价上来讲,在云计算服务上,可以在几分钟之内实现计算能力的扩展或缩减,可以在几小时之内完成上百台虚拟机的创建。
(5)、服务可计量
云计算可按照多种计量方式(如按次付费或充值使用等)自动控制或量化资源,计量的对象可以是存储空间、计算能力、网络带宽或活跃的账户数等。
该特性一方面可以指导资源配置优化、容量规划和访问控制等任务;另一方面可以监视、控制、报告资源的使用情况,让云服务商和客户及时了解资源使用明细,增加客户对云计算服务的可信度。
4、云计算的服务模式
(1).软件即服务
软件即服务(Softwafe-as-a-Service,SaaS)是指云服务商将应用软件功能封装成服务,使客户能通过网络获取服务。云服务商负责软件的安装、管理和维护工作,客户可对软件进行有限的配置管理。客户无需将软件安装在自己的电脑或服务器上,而是按某种服务水平协议(SLA)通过网络获取所需要的、带有相应软件功能的云计算服务。例如,客户通过云计算服务向用户提供典型的办公软件或邮件等,终端用户使用软件应用,软件应用的管理者可以配置应用,客户可以按需使用软件和管理软件的数据(如数据备份和数据共享)。如 Saleforce公司提供的在线客户关系管理(CRM)服务。SaaS 供应商的主要职责如下:其一,确保提供给客户的软件能获得稳定的技术支持和测试;其二,确保应用是可扩展的,足以满足不断上升的大工作负载;其三,确保软件运行在一个安全的环境中,因为很多客户将有价值的数据存储在云端,这些信息也许是私人或商业机密。
(2).平台即服务
平台即服务(Platform-as-a-Service,PaaS)是指云服务商为客户提供软件开发、测试、部署和管理所需的软硬件资源,能够支持大量客户,处理大数量的数据。在这种服务模式中,PaaS提供整套程序设计语言关联的 SDK 和测试环境等,包括开发和运行时所需的数据库、Web 服务、开发工具和操作系统等资源,客户利用 PaaS 平台能够快速创建、测试和部署应用和服务。PaaS 提供的工具包和服务可以用于开发各种类型的应用,从而可以支撑对外提供SaaS 服务。PaaS 的客户包括应用软件的设计者、开发者、测试人员(在云计算环境运行应用)、实施人员(在云计算环境完成应用的发布,管理多版本的应用冲突)、应用管理者(在云计算环境配置、协调和监管应用)。
典型的 PaaS 包括 Google App Engine 和 Microsoft Windows Azure。PaaS 负责资源的动态扩展、容错管理和节点间配合,但用户的自主权会相应地降低,必须使用特定的编程环境并遵照特定的编程模型。例如,Google App Engine 只用 Python 和 Java 语言、基子Django的 Web 应用框架、调用 Google App Engine SDK 来开发在线应用服务。
(3).基础设施即服务
基础设施即服务(Infrastructure-as-a-Service,IaaS)是指云服务商将计算、存储和网络等资源封装成服务供客户使用,无论是普通客户、SaaS 提供商还是 PaaS 提供商都可以从基础设施服务中获得所需的计算资源,客户无需购买 IT 硬件。典型的 1aaS 服务有亚马逊的 EC2 和简单存储服务 S3。相比于传统的客户自行购置硬件的使用方式,laaS 允许客户按需使用硬件资源,并按照具体使用量计费。从客户角度看,TaaS 的计算资源规模大,客户能够申请的资源几乎是“无限的”;从云服务商的角度看,laaS 能同时为多个客户提供服务,因而具有更高的资源利用率。通常情况下,可以根据 CPU 使用小时数、占用的网络带宽、网络设施(如 IP地址)使用小时数和是否使用增值服务(如监控、服务自动伸缩)等方式计量费用。
与 SaaS 和 PaaS 客户不同的是,IaaS 的客户承担了更多的责任。客户要管理虚拟机,承担操作系统管理的工作。使用 TaaS 服务的客户更容易实现与传统应用的交互和移植,能够更灵活、高效地租用计算资源。同时,客户也面临很多问题,例如,将传统的应用软件部署到laaS 的同时会引发传统软件系统的漏洞所带来的安全威胁;客户可以在 IaaS 上创建和维护多个不同状态的虚拟机(如运行、暂停和关闭),也要负责虚拟机安全的维护更新(原理上,云服务商可以代表客户对非活动态虚拟机进行安全状态的维护更新,而这种类型的更新机制很复杂)等工作。
4、云计算的部署模式
根据使用云计算平台的客户范围不同,可以将云计算分成私有云、公有云、社区云、混合云等四种部署模式。
5、云计算面临的技术风险
(1)、物理与环境安全风险
物理与环境安全是系统安全的前提,物理安全是保障物理设备安全的第一道防线。环境安全是物理安全的基本保障,是安全系统不可缺少和忽视的组成部分。
(2)、主机安全风险
云主机面临的安全风险主要包括以下几点。
①资源虚拟化共享风险
云主机中,硬件平台通过虚拟化为多个应用共享。由于传统安全策略主要适用于物理设备,如物理主机、网络设备、磁盘阵列等,而无法管理到每个虚拟机、虚拟网络等,使得传统的基于物理安全边界的防护机制难以有效保护共享虚拟化环境下的用户应用及信息安全。
②数据安全风险
用户在使用云主机服务的过程中,不可避免地要通过互联网将数据从其主机移动到云上,并登录到云上进行数据管理。在此过程中,如果没有采取足够的安全措施,将面临数据泄漏和被篡改的安全风险。
③平台安全防护风险
云计算应用由于其用户、信息资源的高度集中,更容易成为各类拒绝服务攻击的目标,并且由拒绝服务攻击带来的后果和破坏性将会明显超过传统的企业网应用环境,因此,云计算平台的安全防护更为困难。
(3)虚拟化安全风险
虚拟化安全风险分为虚拟化技术自身的安全风险、资源分配、虚拟机攻击、迁移攻击。
(4)网络安全风险
网络风险方向云计算主要面临的风险有分布式拒绝服务攻击、中间人攻击、网络嗅探、端口扫描、SQL注入、跨站脚本
(5)、安全漏洞
(6)、数据安全风险
(7)、加密与密钥风险
(8)、API安全风险
6、云计算安全设计原则
(1)、最小特权
最小特权原则是云计算安全中最基本的原则之一,它指的是在完成某种操作的过程中,赋予网络中每个参与的主体必不可少的特权。最小特权原则一方面保证了主体能在被赋予的特权之中完成需要完成的所有操作;另一方面保证了主体无权执行不应由它执行的操作,即限制了每个主体可以进行的操作。
在云计算环境中,最小特权原则可以减少程序之间潜在的相互影响,从而减少、消除对特权无意的、不必要的或者不适当的使用。另外,能够减少未授权访问敏感信息的机会。在利用最小特权原则进行安全管理时,对特权的分配、管理工作就显得尤为重要,所以需要定期对每个主体的权限进行审计。通过定期审核来检查权限分配是否正确,以及不再使用的账户是否已被禁用或删除。
(2)、职责分离
职责分离是在多人之间划分任务和特定安全程序所需权限的概念。它通过消除高风险组合来限制人员对关键系统的权力与影响,从而降低个人因意外或恶意而造成的潜在破坏。这一原则被应用于云的开发和运行的职责划分上,同样也应用于云软件开发生命周期中。一般情况下,云的软件开发为分离状态,确保在最终交付物内不含有未授权的后门,确保不同人员管理不同的关键基础设施组件。
此外,职责分离还伴随着岗位轮换,管理层应给重要岗位的员工安排假期,并在该员工休假期间进行目标岗位的工作审计。因为职责轮换一般都涉及放假,所以职责轮换也通常成为强制放假。职责轮换除了可以进一步防止重要岗位的欺诈之外,也可以让人员熟悉本来不属于他负责的其他工作,为业务流程的岗位安排带来人员备份和协调工作能力提升的好处。
(3)、纵深防御
在云计算环境中,原有的可信边界日益削弱,攻击平面也在增多,过去的单层防御已经难以维系安全性,纵深防御是经典信息安全防御体系在云计算环境中的必然发展趋势。云计算环境由于其结构的特殊性,攻击平面较多,在进行纵深防御时,需要考虑的层面也较多,从底至上主要包括:物理设施安全、网络安全、云平台安全、主机安全、应用安全和数据安全等方面。另外,云计算环境中的纵深防御还具有多点联动防御和入侵容忍的特性。在云计算环境中,多个安全节点协同防御、互补不足,会带来更好的防御效果。入侵容忍则是指当某一攻击面遭遇攻击时,可以通过安全设计手段将攻击限制在这一攻击层面,使攻击不能持续渗透下去。根据木桶原理,系统的安全性取决于整个系统中安全性最低的部分,这个原理在云计算环境下同样适用。针对某一方面、采取某种单一手段增强系统的安全性,无法真正解决云计算环境下的安全问题,也无法真正提高云计算环境的安全性。云计算的安全需要从整个系统的安全角度出发进行考虑。
(4)、防御单元解耦
将防御单元从系统中解耦,使云计算的防御模块和服务模块在运行过程中不会相互影响,各自独立工作。这一原则主要体现在网络模块划分和应用模块划分两个方面。可以将网络划分成 VPC(Virtual Private Cloud)模式,保证各模块的网络之间进行有效的隔离。另一方面,将云服务商的应用和系统划分为最小的模块,这些模块之间保持独立的防御策略。另外,对某些特殊场景的应用还可以配置多层沙箱防御策略。
(5)、面向失效的安全设计
面向失效的安全设计原则与纵深防御有相似之处。它是指在云计算环境下的安全设计中,当某种防御手段失效后,还能通过补救手段进行有效防御;一种补救手段失效,还有后续补救手段。这种多个或多层次的防御手段可能表现在时间或空间方面,也可能表现在多样性方面。
(6)、回溯和审计
云计算环境因其复杂的架构导致面临的安全威胁更多,发生安全事故的可能性更大,对安全事故的预警、处理、响应和恢复的效率要求也更高。因此,建立完善的系统日志采集机制对于安全审计、安全事件追溯、系统回溯和系统运行维护等方面来说就变得尤为重要。在云计算环境下,应该建立完善的日志系统和审计系统,实现对资源分配的审计、对各角色授权的审计、对各角色登录后的操作行为的审计等,从而提高系统对安全事故的审查和恢复能力。
(7)、安全数据标准化
由于目前的云计算解决方案很多,且不同的解决方案对相关数据、调用接口等的定义不同,导致目前无法定义一个统一的流程来对所有的云计算服务的安全数据进行采集和分析。目前已经有相关的组织对比进行了研究,如云安全联盟 CSA 提出的 CTP(云可信协议)协议以及动态管理工作组 DMTF 提出的 CADF(云审计数据互联)模型。
二、云数据安全
1、数据安全生命周期
数据安全生命周期可分为六个阶段:
•创建:表示产生数字数据或修改已存在的内容。
•存储:表示将数字数据提交到存储仓库的操作,通常与数据创建同时发生。
•使用:表示查看数据、处理数据或其他数据使用活动。
•共享:表示让其他实体访问数据的活动,例如在用户、客户和合作伙伴之间共享数据。
•归档:表示将不频繁使用的数据进行长期保存的活动。
•销毁:表示使用物理或数字方式永久销毁数据。
在云计算安全数据生命周期内,存在以下关键挑战:
•数据安全:要确保数据的保密性、完整性、可用性、真实性、授权、认证和不可抵赖性。
•数据存放位置:必须保证所有的数据(包括所有副本和备份)存储在合同、服务水平协议和法规允许的地理位置。例如,使用由欧盟的“法规遵从存储条例”管理的电子健康记录,这可能对数据拥有者和云服务提供商都是一种挑战。
•数据删除或持久性:数据必须被彻底有效地去除才能视为销毁,因此,必须具备一种可用的技术,能保证全面和有效地定位云计算数据、擦除/销毁数据,并保证数据已被完全消除或使其无法恢复。
•不同客户数据的混合:数据(尤其是保密/敏感数据)不能在使用、存储或传输过程中,在没有任何补偿控制的情况下与其他客户数据混合。数据的混合在数据安全和地缘位置等方面增加了挑战。
•数据备份和恢复重建计划:必须保证数据可用,云数据备份和云恢复计划必须到位和有效,以防止数据丢失、意外的数据覆盖和破坏。不能随便假定云模式的数据肯定有备份并可恢复。
•数据发现:由于法律系统持续关注电子证据发现,云服务提供商和数据拥有者需要把重点放在发现数据并确保法律和监管当局要求的所有数据可被找回。数据发现问题在云环境中变得更加困难,需要管理、技术和必要的法律控制互相配合。
•数据聚合和推理:数据在云端时,会有新增的数据汇总和推理的方面的担心,可能会导致违反敏感和机密资料的保密性。因此,在实际操作中,应保证数据拥有者和数据的利益相关者的利益,在数据混合和汇总的时候,避免数据遭到任何哪怕是轻微的泄露(例如,带有姓名和医疗信息的医疗数据与其他匿名数据混合,由于二者存在交叉对照字段,如不谨慎处理,可能造成数据泄露)。
2、加密和密钥管理
(1)客户端加密方式
客户端加密是指在将数据上传到云计算平台之前对数据进行加密,使用的密钥有两种选择:
•使用客户端主密钥。
•使用云服务商提供的密钥管理服务托管的主密钥。
使用客户端主密钥加密可以实现数据安全传输,主密钥不需要上传到云计算平台,当客户丢失加密密钥后将无法解密客户数据。
上传数据的工作过程为:
使用云服务的客户端库在本地生成一个一次性的数据加密密钥(通常为对称加密密钥),使用该密钥加密用户数据。
客户端使用主密钥加密数据加密密钥,客户端将加密的数据密钥及其材料说明上传到云端,此后,材料说明帮助客户端确定使用的客户端主密钥解密。3)客户端将加密数据上传到云端。下载数据时,客户端首先从云端下载加密数据及其元数据,通过使用元数据中的材料说明,客户端首先确定主密钥,然后解密已加密的数据加密密钥,最后使用数据加密密钥解密加图数据。
使用云服务商托管的客户主密钥如果由客户提供主密钥,则需要客户具有相应的密钥基础设施并自行管理密钥,这会增加客户负担。客户可以选择使用云服务商提供的密钥托管服务来提供数据加密密钥。在该工作方式下,客户不需要提供任何加密密钥,只需要向云服务提供客户主密钥标识信息即可。
这种方式下存储数据的主要工作过程如下:
①使用客户主密钥标识信息向云服务发送密钥分配请求,请求成功后返回数据加密密钥。
②客户端使用数据密钥进行数据加密,并将加密后的数据上传到云计算平台。
下载客户数据时,客户端首先从云服务的密钥管理服务中获得数据加密密钥,然后使用该密钥解密下载的数据。
(2)、云服务端加密方式
云服务端加密方式与客户端加密方式不同,云端加密(也就是服务端加密)方式将客户数据以明文形式上传到云服务端,云存储服务保存数据时进行加密,当客户使用数据时,云存储服务自动解密客户数据。为了保证客户数据在进入云存储服务或离开云存储服务时的安全,客户端与云存储服务之间使用 HTTPS 进行数据传输。
云服务端数据加密是一种静态数据加密,根据密钥提供方式的不同可以分为三种类型:
①存储服务托管密钥:由存储服务管理加密密钥,使用主密钥对数据加密密钥进行加密。为了增加安全性,不同数据块可以使用不同的数据加密密钥,使用多个主密钥轮流加密数据加密密钥。
②使用云服务商提供的密钥管理服务(KMS):使用云服务商的密钥管理服务提供所需密钥。此种方式在简化密钥管理的同时增加密钥管理安全性,还可以对密钥的使用进行审核跟踪。
③用户提供密钥:客户提供密钥,云存储服务首先数据的加密与解密。客户在请求数据存储时提供加密密钥,存储服务在存储数据时进行加密。当客户读取数据时,存储服务自动进行解密。
(3)、云密码机服务
随着云计算技术的大力发展与普及,越来越多的传统应用开始向云端迁移,借助云计算特有的高可靠性、高伸缩性,可实现数据集中管理及高效的资源利用。但是,向云端迁移时的信息安全问题尤为突出。当前,许多传统应用系统通过集成密码机等硬件密码设备来为业务应用提供信息安全保障。但在云环境中使用密码设备存在诸多问题,如传统的密码设备使用方式不适合云环境、无法保证用户密钥安全、设备维护更加困难等。云密码机解决方案能够解决传统密码机在云环境下部署的一系列问题。云密码机采用密钥管理与设备管理分离的核心理念,实现了云服务商管理员仅维护设备、客户自行管理密钥的工作模式。云密码机通过密码机集群与虚拟化技术的结合扩充密码运算能力,将密码运算能力进行细粒度划分,并通过集中的密钥管理及配套的安全策略保护用户密钥整个生命周期的安全。
与其他云计算部署模式相比,公有云的客户范围最广,客户共享资源带来的安全问题更突出。加密是保护客户放在公有云上的数据的有效手段,当公有云资源规模大、客户多时,应考虑使用云服务密码机来提供海量的密钥管理功能。
通过云服务密码机的虚拟化功能,在一台云服务密码机上可实现16 ~ 64 台虚拟密码机,每一台虚拟密码机可以为一个客户提供密码服务(密钥管理、密钥运算等)。每一个虚拟密码机的授权文件可安装到部署在客户系统内的安全代理服务系统中,作为云端虚拟密码机进行身份认证的凭据。
用户要获取虚拟密码机上的密钥,需要使用安全代理服务系统实现密钥导出。针对密钥的保护有两个方面,一是密钥加密的导出,二是保护密钥的传输链路。密钥在导出时可以采用对称密钥加密,也可以采用非对称密钥加密,对于在公网上传输的密钥数据,更适宜采用非对称密钥加密。
密钥传输链路是通过安全代理与保护密钥进行保护的。密钥传输链路的密钥协商机制应符合国家相关标准的要求,每次建立链接时进行协商,协商成功后,在链接存续期内保护此密钥有效。
(4)、密钥管理服务
密钥管理服务(Key Management Service,KMS)是云服务商提供的安全、易用的管理类服务。客户无需花费大量成本来保护密钥的机密性、完整性和可用性。借助密钥管理服务,客户可以安全、便捷地使用密钥,专注于开发加解密功能场景。
KMS 可以解决不同角色的不同密钥需求。
从表中可以看出,使用 KMS 解决密钥管理问题有两种方式:一种是直接使用 KMS 来加密/解密客户数据,另一种是基于信封加密方法实现本地加解密。
直接使用 KMS 加密、解密客户数据客户可以直接调用 KMS 的 API,使用指定的客户主密钥(Custoner Master Key,CMK)来加密、解密数据,这种场景适用于少量(少于 4KB)数据的加解密,用户的数据会通过安全信道传递到 KMS 服务端,对应的结果将在服务端完成加密、解密后通过安全信道返回给用户。图 6-8 描述了用户使用 KMS 生成密钥在服务器上部署证书的场景。流程如下:
①用户创建一个主密钥。
②调用 KMS 服务接口将明文证书加密为密文证书。
③用户在服务器上部署密文证书。
④当服务器启动需要使用证书时,调用 KMS 服务的接口,将密文证书解密为明文证书。
(2)使用信封加密方法实现本地加解密
信封加密(Envelope Encryption)是指为要加密的数据产生“一次一密”的对称密钥,使用特定的主密钥加密该对称密钥,使这个对称密钥处于一种被“密封的信封保护”的状态。
在传输、存储等非安全的通信过程中直接传递“被密封保护的密钥”,当且仅当要使用该对称密钥时,打开信封取出密钥。客户可以直接调用 KMS 的 API,使用指定的 CMK 来产生、解密数据密钥,自行使用数据密钥在本地加解密数据,这适用于大量数据的加解密,客户无需通过网络传输大量数据,可以低成本的实现大量数据的加解密。
加密过程如下:
①用户创建一个主密钥。
②调用 KMS 服务的 GenerateDataKey 接口,产生数据密钥,这时用户能够得到一个明文的数据密钥和一个密文的数据密钥。
③用户使用明文的数据密钥加密文件,产生密文文件。
④用户将密文数据密钥和密文文件一起存储到持久化存储设备或服务中。
解密过程如下:
①客户从持久化存储设备或服务中读取密文数据密钥和密文文件。
②调用 KMS 服务的解密接口,解密数据密钥,取得明文数据密钥。
③使用明文数据密钥解密文件。