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