简介
随着航海征程的推进,乔巴的背包是越来越鼓,也越来越大了。看着轻装上阵的伙伴们,它的内心是复杂的。
乔巴 OS :我也想找个地方储存一下我的背包,可是我又担心背包里面的内容,被人窃取了可怎么好?
针对乔巴的需求,QingStor 对象存储提供了一套完整的解决方案。既能满足你多种多样的数据存取的需求,同时,还能确保你的数据安全。
本文中用到的相关名词有:
什么是加密
QingStor 对象存储提供怎样的方案,来消除乔巴的担忧呢?我们先来看看存/取数据的流程:
通过上图,我们可以知道,乔巴要将背包存起来,首先需要将背包运送到存储地点(QingStor 对象存储)。
当前已经有比较成熟的做法用来保障数据在传输过程中的安全,也就是通用的 SSL 协议,这里不做详细说明了。
除此之外,乔巴也可以给自己的背包加个锁,即:客户端加密。这部分操作,是由乔巴自发完成并监管的。这里也不做具体说明。
等背包运输到 QingStor 了,QingStor 再对背包进行加密,这个就是服务端的数据加密。
为了消除乔巴的担忧,QingStor 对象存储提供了一套完整的解决方案:SSL 协议 + 服务端数据加密。
具体怎么做的呢?下面我们来详细说一下整个的加密/解密过程吧。好期待哦!
加密过程
乔巴现在想把背包(数据)交由 QingStor 对象存储,那么整个过程如下:
-
乔巴在自己的背包上贴上密钥,根据密钥生成的 MD5 值,和加密算法等标签。并保留这些信息。
-
乔巴将贴有这些标签的背包,交给 QingStor 对象存储。
-
QingStor 在收到乔巴提交的背包后,先取下密钥,计算出密钥的 MD5 值。
-
QingStor 取下乔巴背包上的 MD5 值,与计算出的 MD5 值进行比对,以确认密钥在提交过程中没有被修改。
-
如果 QingStor 发现 MD5 值不一致了,提醒乔巴,背包内容可能会被窃取,需重新对背包贴标签,并再次提交。
-
如果 QingStor 发现 MD5 值一致时,说明密钥没有被修改,背包提交过程中是安全的,这个时候从背包上取下加密算法,对背包里面的数据进行加密。
-
为了确保背包里面的数据仅乔巴一个人可以获取,在加密完成后,QingStor 丢弃背包上的密钥,仅保留根据密钥计算出来的 MD5 值,用于取数据时的认证。
至此,乔巴就可以拿着加密信息离开了。
解密过程
一段时间后,乔巴要从 QingStor 取回背包了,那么整个过程又是怎样的呢?
-
乔巴提出取数据的申请,并在申请里面提交当时存储背包时的标签:密钥,根据密钥生成的 MD5 值,和加密算法给 QingStor。
-
QingStor 收到乔巴提交的申请后,先取下密钥,计算出 MD5 值。
-
QingStor 再取下乔巴取包申请上的 MD5 值,与计算出的 MD5 进行比对,以确认密钥在提交过程中没有被修改。
-
若 QingStor 发现两个 MD5 值不一致,提醒乔巴,根据约定,你这个背包取不了,需重新回去找找密钥,再次提交申请啊。
-
若 QingStor 发现两个 MD5 值一致,说明这个申请是合法的。
-
QingStor 用乔巴提交的密钥将背包数据进行数据。
-
QingStor 将解密后的背包返回给乔巴。
至此,乔巴就可以拿到自己的原始背包了。
如何使用加密
乔巴:也就是说我只要保存好我的密钥就行了,是么?
QingStor:是的呢,密钥可要保存好哦,弄丢了,背包里面的东西就谁也不能获取到了,包括你自己哦。
乔巴:果然是够安全了,那我们就开始来办手续吧。
加密请求头
根据前文提到的,我们知道,需要给乔巴的背包贴上三个标签以实现对背包的加密。那么这个标签要怎么写呢?内容格式如下:
备注:
- QingStor 对象存储目前支持的加密算法仅有 AES256。
- QingStor 对象存储要求密钥的明文必须具有 32 个字节长度。且,密钥必须进行 Base64 编码处理。
- 为了确认密钥在传输过程中的完整性,这里也需要用户提供原始密钥的 MD5 值ÿ