在公有云端保护用户数据安全

——浅谈IBM Cloud 之 Hyper Protect Crypto Service

云端安全,重中之重
云计算应该算是当下IT圈一个比较火热的领域。很多知名的云厂商所提供的品类丰富的服务和美轮美奂的UI,以及贴心的后台的支持都让人觉得用着非常的爽。不过,如果谈到安全和保护用户的隐私,IBM云还是走在了前列。

“什么?IBM不是被联想收购了吗?”,IT圈外路人甲如是说。
“IBM的服务器还是挺厉害的,怎们,你们还做云?”。IT圈内,云圈外路人乙也是一脸蒙圈。
其实,IBM不但有云,而且目前在全球的收益已经排到了前三。详情点击

如今,在IaaS层,在已经囊括了x86和以高性能著称的Power服务器之外,最近又添加新成员,这就是z系列服务器。

image.png

正如“路人乙“同学所说,IBM作为老牌的服务器厂商,生产的服务器分为x,i,p,z四大产品序列,在价格上,x系列最便宜,z系列最贵。而且,就国内而言,使用z的客户,包括了四大行在内的多家商业银行,大家都把最核心的应用运行在z上,足见其地位之重要。z系列主机的高度安全性,必然能够为稳健的IBM公有云增光添彩。

在使用公有云的时候,相信所有企业用户,都会考虑隐私数据的安全问题,一来近年来各地的法律法规层出不穷,例如大名鼎鼎的GDPR就对使用和收集欧盟公民的个人信息有严格规定。这些规章一旦触犯,对企业来说,轻则鼻青脸肿,信用受损,重则骨断筋折,一命呜呼。二来,如果云供应商,监守自盗,窃取隐私数据该如何是好?虽说目前有供应商的书面承诺,可以检查日志进行审计。但是毕竟有点儿事后诸葛亮的意思。


image.png

有没有有一种服务能够从技术上真正做到只有数据的所有者可以读取数据内容,其他任何人(包括云计算供应商)都无法读取呢?还真有,这就是依托IBM Cloud Hyper Protect Crypto Service的KYOK技术(Keep Your Own
Key)。与之相对的,是一种叫做BYOK(Bring Your Own Key)的技术。二者区别如下:

BYOK KYOK
多租户秘钥管理服务 单租户秘钥管理服务
基于FIPS140-2 Level 3 加密硬件设备 基于FIPS140-2 Level 4 加密硬件设备
HSM(加密设备)由IBM管控 用户完全掌控HSM
供应商承诺不会访问秘钥 在技术上无法访问秘钥

KYOK是从技术上根本解决了云供应商对客户数据非法访问的问题。至于具体是如何实现的,请继续向下看。

就硬件的安全性而言,z主机上的加密设备: Crypto Express 6S,达到了的 FIPS140-2,Level 4的等级,为业界最高,没有之一。既然有FIPS140-2 level 4, 自然也会有level 1,2,3,感兴趣的小伙伴可以自己找一找,不同厂商的HSM设备的安全级别。对于level 2的设备,要求是对入侵的行为有事后的证据,乃至于给设备贴上封条或易碎贴的做法也算是level2的范畴。

Level3,要求要高一些,需要能够检测到实时的入侵行为,算是事中的反馈。而level4的设备,除了具备level
2,3的能力之外,还可以在检测到入侵行为的时候 (包括非法访问或物理环境聚变)会自动清零设备上的秘钥,防止秘钥落入不法分子手中。

感受Hyper Protect Crypto Service
现在就让我们来感受一下HPCS。如下图所示,IBM 公有云上的Hyper Protect Crypto
Service主要包括以下几类:

image.png

Hyper Protect Crypto Service

  • Hyper Protect Crypto Service(HPCS):使用加密卡,向外提供数据加密的功能。例如,我们可以创建HPCS实例,然后调用HPCS对VM的卷进行加密。

  • Hyper Protect Virtual Server: 简单的说是IBM Cloud提供的一种全新虚机。它运行在z/LinuxONE 之上。依托IBM
    z强大的计算能力,性能表现优异,而且底层会调用HPCS,数据天然会被加密。

  • Hyper Protect DBaaS: 依托上述Hyper Protect Virtual
    Server,提供DBaaS服务,与普通的DBaaS相比,所有数据都经过了加密,更安全。

下面这张图清楚的反映了上述服务之间的相互依托关系。

image.png

下面,让我们在IBM Cloud 上面做个实验。使用HPCS,对VPC instance的boot卷进行加密。简单的说,实验分为以下三个步骤:

  1. 创建HPCS实例,并对它进行初始化
  2. 将HPCS的服务开放给VPC
  3. 创建VPC 实例,并调用HPCS对boot 卷进行加密。

创建HPCS实例的过程非常简单,本文不做叙述。有一点需要注意,在选择Number of crypto units的时候,有三个选项,1(single zone)2(multi-zone) 3(multi zone), 意思是,在创建 crypto units的时候,实际创建的加密功能模块的数量。从高可用与性能角度考虑,在生产系统中推荐2或3。

HPCS创建完成后长这样,由于instance 只是创建,还没有初始化,所以没有master key。图片上显示的Erro. 可以暂时忽略。

image.png

HPCS的初始化过程有点儿复杂。无数的身份和密码会把人搞的头大,所以,在真正开始之前,有必要把初始化阶段所做的事情梳理一下。跟电影里看到的场景类似,发射核弹需要两个人同时转动钥匙,要使用HPCS,IBM推荐多个人持有不同的密码或密钥分量。

image.png

涉及的角色如下:

  • 签名秘钥管理员(signature key admin):负责开启初始化过程。这个角色控制着初始化过程的入口,没有他的授权,下面的操作都无从谈起。另外,也可以通过这个角色知道是谁授权的操作。
  • 主密钥分量1持有者(master key part1 owner):持有秘钥分量1。(核弹发射钥匙持有者1)
  • 主密钥分量2持有者(master key part2 owner): 持有秘钥分量2。(核弹发射钥匙持有者2)

我们还可以有更多的秘钥分量,这些不同的分量通过运算会生成真正的主密钥。三个不同角色直接的关系如下图所示。

image.png

涉及的密钥类型有:

  • 主密钥分量1(master key part1):核弹发射钥匙1

  • 主密钥分量2(master key part2):核弹发射钥匙2

  • 主密钥(master key):主密钥分量1与2经过运算生成主密钥。

  • DEK(Data Encryption Key):对隐私数据进行加密的秘钥。

  • 根密钥(root key):由主密钥生成,是用来加密DEK的秘钥。

简单解释一下,为什么会有这么多的的秘钥,对照下图对其中的关系做一个梳理。加密的对象是隐私数据。加密隐私数据的密钥叫做DEK(Data Encryption Key),但是DEK不应该明文存放,否则如果从硬盘获取了DEK,和密文,那么数据就会泄密。所以要对DEK再次加密,这就要用到root key;root key 是对DEK加密的密钥,经过加密的DEK存放在磁盘上就没有问题了,经过加密的DEK称之为wrapped key。 Root key是由mater key 产生的(2.),而master key在初始化过程中由master key part运算产生(1.),并且仅仅存在于的crypto unit之上。

读取加密数据的过程是这样的:操作系统会把密文和经过加密的DEK,发送给HPCS(4&5)。因为HPCS
中存储了root key,因此它会使用root key 对加了密的DEK进行解密(3),有了明文的DEK,就可以解密密文,然后送回给系统了(6)。

注意,Root Key和Master Key 从来就没有离开过 Hyper Protect Crypto unit,因此从操作系统的角度来看,管理员永远不知道DEK是什么,IBM管理员也无从知道。

image.png

(下面开始讲操作步骤了,技术控请继续阅读,非技术同仁可以到此为止了,哈哈)

实验
好了,讲了这么多,下面开始真正的操作。以下操作必须使用IBM CLI,也就是命令行工具,需要提前下载安装。(以下过程中,对HPCS和crypto unit不做区分)

  1. 根据HPCS实例的创建区域,进行相应的选择,我所创建的HPCS instance位于美国Dallas,因此选择us-south

ibmcloud target -r us-south

image.png
  1. 选择resource group。在创建资源的时候,可以选择把资源放在不同的资源组中。HPCS实例放在了default group中,因此操作如下。

ibmcloud target -g default

image.png
  1. 安装TKE plugin。TKE(Trusted Key Entry )是对HPCS进行操作的设备。

ibmcloud plugin install tke -v 0.0.11

image.png
  1. 创建一个本地目录,用于存放即将创建的秘钥与签名。创建环境变量CLOUDTKEFILES,在后面的操作中,CLOUDTKEFILES会被自动引用(截图略)

mkdir "$HOME/tke"

export CLOUDTKEFILES="$HOME/tke"

  1. 确认可用的cryptounit.

ibmcloud tke cryptounits

image.png

可以看到有两个 cryto unit 可用,这是因为在创建HPCS的时候,我选择的是选项2 multi-zone

  1. 选择需要操作的 crypto unit. 接下来会要求选择需要操作的crypto unit。从高可用的角度,两个crypto unit的配置应该完全相同,因此,两个crypto unit都要选择。

ibmcloud tke cryptounit-add

image.png

可以看到,两个 crypto unit 的SELECT状态,由false 变为 true。

  1. 创建crypto unit的管理员和signature key。这个signature key就是上文提到的,由签名秘钥管理员。

ibmcloud tke sigkey-add

image.png

以后的操作,都要由signature key的持有者签名执行,这样不但增加了安全性,而且可以方便追踪和审计。

  1. 选择上面创建的signature key 来执行下面的操作。在这里使用刚刚创建的 sigkeyadmin。

ibmcloud tke sigkey-sel

image.png
  1. 将刚刚创建的管理员和密码添加到crypto unit中,然后就可以用这个管理员(sigkeyadmin)对HPCS进行操作了。

ibmcloud tke cryptounit-admin-add

image.png
  1. 退出编辑模式(imprint mode)

ibmcloud tke cryptounit-exit-impr

image.png
  1. 创建master key 的第一个分量。命名为mk1,密码自定义。

ibmcloud tke mk-add --random

image.png
  1. 创建master key 的第二个分量mk2。(如果需要,可以创建第3,4… n 个分量)

ibmcloud tke mk-add --random

image.png
  1. 现在,如果打开上面创建的目录CLOUDTKEFILES,会发现前面创建的signature key 和 master key 的分量存放在这个目录下,这一步就是要把master key的分量(刚刚创建的 mk1与mk2)写入到crypto unit中。另外在操作过程中,需要输入signature key,mk1与mk2的密码。

ibmcloud tke cryptounit-mk-load

image.png
  1. commit:确认mk1,mk2对crypto unit的写入。

ibmcloud tke cryptounit-mk-commit

image.png
  1. crypto unit中有两套注册表(register),一个用来存放正在使用的秘钥(current master key register),一个用来存放新秘钥(new master key register)。需要把刚刚写入的秘钥注册表设置为正在使用。

ibmcloud tke cryptounit-mk-setimm

image.png

现在让我们回到 IBM Cloud portal(cloud.ibm.com)上,找到自己创建的HPCS实例,可以看到HPCS的状态已经变化,之前的error不见了。

image.png
  1. 创建好了Master Key之后,这一步需要在IBM Cloud Portal上创建root key,点击上图的 Add key,然后选择 Create a Key, Key type 选择 Root key,Key name 自己起名(这里为root2),然后点击 Add Key,如下图所示。
image.png
  1. 到此为止,HPCS的初始化过程已经完成。现在需要做的是,把HPCS的服务开放给Block Storage,这样,block storage就可以调用HPCS对磁盘进行加密了。在 cloud.ibm.com主页,选择 Manage 下面的Access(IAM),如图。
image.png

然后在Authorizations页面,选择创建一条新的Authorization,点击Create

image.png

由于本次实验是要加密VPC的boot volume。因此在Source service中选择 Cloud Block Storage; 如果不想限定资源组,in 后面直接默认Account就好。Target Service 要选择 Hyper Protect Crypto Service, 此时,Target Service Instance中就可以看到之前创建好的HPCS(Ryan Hyper Protect Crypto Service-vy),勾选下面的Reader,意思是需要有读的权限。点击Authorize,如下图

image.png

然后就可以看到刚刚创建的一条Authorization。证明授权已经成功。

image.png
  1. 最后一步了:创建VPC instance,并且调用HPCS为boot 盘加密。要创建VPC instance,需要首先创建VPC,在cloud.ibm.com,点击左侧的导航按钮,进入导航。点击 VPC Infrastructure.
image.png

在新的页面中选择 Create VPC for Gen 1

image.png

在新的页面中,有两个是必填项, VPC 的Name和 New Subnet for VPC的Name,其他选项可以自己需要填写。在这里,VPC命名为 ryan-vpc-gen1, subnet命名为ryan-subnet。如图

image.png
image.png

VPC创建完成后如下图所示:

image.png

下面开始创建VPC instance,先在左侧的导航栏选择 Virtual server instances,然后点击New Instance

image.png

在新的页面中填写选择相应的配置信息。在Boot volume一栏,注意到encryption显示为 Provider managed,如下图。

image.png

点击右边的修改图标,将其修改为 Hyper Protec Crypto Service,选择之前配置的HPCS实例,以及root key,然后Apply。如下图,

image.png

配置完成后,点击页面右侧的 Create virtual server instance. VPC instance 创建完成。
到新创建的VPC instance中查看boot volume信息,确认boot volume已经被HPCS保护,如下图。

image.png

上面只是使用HPCS对block storage进行加密的一个例子。除了Cloud Block Storage,HPCS还可以对IBM Cloud上面的以下资源进行加密。

  • Hyper Protect DBaaS for PostgreSQL
  • Hyper Protect DBaaS for MongoDB
  • IBM Cloud Object Storage
  • IBM Cloud Block Storage for Virtual Private Cloud
  • IBM Cloud Virtual Servers for Virtual Private Cloud
  • Key Management Interoperability Protocol (KMIP) for VMware on IBM Cloud
  • HyTrust DataControl for IBM Cloud
  • IBM Cloud Kubernetes Service (IKS)
  • Red Hat OpenShift on IBM Cloud

除了IBM Cloud上面的资源,对于数据中心和其他云平台,只要有访问HPCS的权限,也可以使用GREP11 API对自己的计算资源进行加密。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • 思考乐雅乐语文排序题训练6 1、依次填入下面文段横线处的语句,衔接最恰当的一项是( ) 数据加密是信息安全的核心技...
    基动人心阅读 533评论 0 0
  • 什么是库 ? 库就是程序代码的集合,将N个文件组织起来,是共享程序代码的一种方式。库从本质上来说是一种可执行代码的...
    沧海小鱼儿阅读 175评论 0 0
  • 具体可参考官方:https://support.apple.com/zh-cn/HT201548?utm_sour...
    惜小八阅读 711评论 0 0
  • 有情有义阿德力! 阿德力企鹅大家都不陌生,那是个操蛋的家伙,创建这个计划的初衷,因为我也是个操蛋的人。操蛋的人就要...
    05f2255458c1阅读 162评论 0 0
  • 孩子今天又撒谎了!预习新课要对生字进行组词造句,从七点到十点,完成了五个生字。告诉我:‘’爸爸,今天的生字只有五个...
    董涛_1dcd阅读 158评论 0 0