一 簡(jiǎn)介
隨著航海征程的推進(jìn),喬巴的背包是越來(lái)越鼓,也越來(lái)越大了??粗p裝上陣的伙伴們,它的內(nèi)心是復(fù)雜的。
喬巴 OS :我也想找個(gè)地方儲(chǔ)存一下我的背包,可是我又擔(dān)心背包里面的內(nèi)容,被人竊取了可怎么好?
針對(duì)喬巴的需求,QingStor 對(duì)象存儲(chǔ)提供了一套完整的解決方案。既能滿足你多種多樣的數(shù)據(jù)存取的需求,同時(shí),還能確保你的數(shù)據(jù)安全。
本文中用到的相關(guān)名詞有:
| 名詞 | 釋義 |
|---|---|
| 密鑰 | 用于解密加密數(shù)據(jù) |
| MD5 | 用于確保密鑰傳輸完整一致的算法 |
| 客戶端加密 | 在上傳數(shù)據(jù)前完成加密 |
| 服務(wù)端加密 | 上傳數(shù)據(jù)后,服務(wù)端對(duì)數(shù)據(jù)進(jìn)行加密 |
| 對(duì)象 | 用戶數(shù)據(jù)的統(tǒng)稱 |
| 源對(duì)象 | 上傳的原始對(duì)象 |
| 目標(biāo)對(duì)象 | 拷貝或移動(dòng)后的對(duì)象 |
| SSL協(xié)議 | 確保網(wǎng)絡(luò)通信安全及數(shù)據(jù)完整的協(xié)議 |
二 什么是加密
QingStor 對(duì)象存儲(chǔ)提供怎樣的方案,來(lái)消除喬巴的擔(dān)憂呢?我們先來(lái)看看 存/取 數(shù)據(jù)的流程:

通過(guò)上圖,我們可以知道,喬巴要將背包存起來(lái),首先需要將背包運(yùn)送到存儲(chǔ)地點(diǎn)(QingStor 對(duì)象存儲(chǔ))。
當(dāng)前已經(jīng)有比較成熟的做法用來(lái)保障數(shù)據(jù)在傳輸過(guò)程中的安全,也就是通用的SSL協(xié)議,這里不做詳細(xì)說(shuō)明了。
除此之外,喬巴也可以給自己的背包加個(gè)鎖,即:客戶端加密。這部分操作,是由喬巴自發(fā)完成并監(jiān)管的。這里也不做具體說(shuō)明。
等背包運(yùn)輸?shù)?QingStor 了,QingStor 再對(duì)背包進(jìn)行加密,這個(gè)就是服務(wù)端的數(shù)據(jù)加密。
為了消除喬巴的擔(dān)憂,QingStor 對(duì)象存儲(chǔ)提供了一套完整的解決方案: SSL 協(xié)議 + 服務(wù)端數(shù)據(jù)加密。
具體怎么做的呢?下面我們來(lái)詳細(xì)說(shuō)一下整個(gè)的加密/解密過(guò)程吧。好期待哦!
2.1 加密過(guò)程
喬巴現(xiàn)在想把背包(數(shù)據(jù))交由 QingStor 對(duì)象存儲(chǔ),那么整個(gè)過(guò)程如下:
- 喬巴在自己的背包上貼上密鑰,根據(jù)密鑰生成的 MD5 值,和加密算法等標(biāo)簽。并保留這些信息。
- 喬巴將貼有這些標(biāo)簽的背包,交給 QingStor 對(duì)象存儲(chǔ)。
- QingStor 在收到喬巴提交的背包后,先取下密鑰,計(jì)算出密鑰的 MD5 值
- QingStor 取下喬巴背包上的 MD5 值,與計(jì)算出的 MD5 值進(jìn)行比對(duì),以確認(rèn)密鑰在提交過(guò)程中沒(méi)有被修改。
- 如果 QingStor 發(fā)現(xiàn) MD5 值不一致了,提醒喬巴,背包內(nèi)容可能會(huì)被竊取,需重新對(duì)背包貼標(biāo)簽,并再次提交
- 如果 QingStor 發(fā)現(xiàn)MD5 值一致時(shí),說(shuō)明密鑰沒(méi)有被修改,背包提交過(guò)程中是安全的,這個(gè)時(shí)候從背包上取下加密算法,對(duì)背包里面的數(shù)據(jù)進(jìn)行加密
- 為了確保背包里面的數(shù)據(jù)僅喬巴一個(gè)人可以獲取,在加密完成后,QingStor 丟棄背包上的密鑰,僅保留根據(jù)密鑰計(jì)算出來(lái)的MD5值,用于取數(shù)據(jù)時(shí)的認(rèn)證。
至此,喬巴就可以拿著加密信息離開(kāi)了。
2.2 解密過(guò)程
一段時(shí)間后,喬巴要從 QingStor 取回背包了,那么整個(gè)過(guò)程又是怎樣的呢?
- 喬巴提出取數(shù)據(jù)的申請(qǐng),并在申請(qǐng)里面提交當(dāng)時(shí)存儲(chǔ)背包時(shí)的標(biāo)簽:密鑰,根據(jù)密鑰生成的 MD5 值,和加密算法給 QingStor
- QingStor 收到喬巴提交的申請(qǐng)后,先取下密鑰,計(jì)算出 MD5 值
- QingStor 再取下喬巴取包申請(qǐng)上的 MD5 值,與計(jì)算出的 MD5 進(jìn)行比對(duì),以確認(rèn)密鑰在提交過(guò)程中沒(méi)有被修改
- 若 QingStor 發(fā)現(xiàn)兩個(gè)MD5值不一致,提醒喬巴,根據(jù)約定,你這個(gè)背包取不了,需重新回去找找密鑰,再次提交申請(qǐng)啊
- 若 QingStor 發(fā)現(xiàn)兩個(gè) MD5 值一致,說(shuō)明這個(gè)申請(qǐng)是合法的
- QingStor 用喬巴提交的密鑰將背包數(shù)據(jù)進(jìn)行數(shù)據(jù)
- QingStor 將解密后的背包返回給喬巴
至此,喬巴就可以拿到自己的原始背包了。
三 如何使用加密
喬巴:也就是說(shuō)我只要保存好我的密鑰就行了,是么?
QingStor:是的呢,密鑰可要保存好哦,弄丟了,背包里面的東西就誰(shuí)也不能獲取到了,包括你自己哦。
喬巴:果然是夠安全了。那我們就開(kāi)始來(lái)辦手續(xù)吧。
3.1 加密請(qǐng)求頭
根據(jù)前文提到的,我們知道,需要給喬巴的背包貼上三個(gè)標(biāo)簽以實(shí)現(xiàn)對(duì)背包的加密。那么這個(gè)標(biāo)簽要怎么寫(xiě)呢??jī)?nèi)容格式如下:
| 請(qǐng)求頭 | 類型 | 描述 |
|---|---|---|
| x-qs-encryption-customer-algorithm | String | 用戶的指定加密算法 |
| x-qs-encryption-customer-key | String | 用戶提供的密鑰 |
| x-qs-encryption-customer-key-MD5 | String | 用戶提供的密鑰的 MD5 |
備注:
- QingStor 對(duì)象存儲(chǔ)目前支持的加密算法僅有 AES256。
- QingStor 對(duì)象存儲(chǔ)要求密鑰的明文必須具有32個(gè)字節(jié)長(zhǎng)度。且,密鑰必須進(jìn)行 Base64 編碼處理
- 為了確認(rèn)密鑰在傳輸過(guò)程中的完整性,這里也需要用戶提供原始密鑰的 MD5 值,且該 MD5 值也必須進(jìn)行 Base64 編碼處理。
標(biāo)簽貼好了,那么如何提交請(qǐng)求呢?QingStor 對(duì)象存儲(chǔ)提供多種API,用以滿足用戶的多種請(qǐng)求類型。詳細(xì)內(nèi)容如下:
3.2 基礎(chǔ)操作
3.2.1 GET Object
若喬巴想從指定的存儲(chǔ)空間,獲取之前存儲(chǔ)的加密對(duì)象(背包),可以使用 GET Object,并攜帶該加密對(duì)象的加密信息。即:加密請(qǐng)求頭。
具體可以這樣做:
請(qǐng)求示例:
GET /myphoto.jpg HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Wed, 21 Jul 2021 01:32:07 GMT
Authorization: authorization string
Connection: close
Content-Type: application/octet-stream
X-Qs-Encryption-Customer-Algorithm: AES256
X-Qs-Encryption-Customer-Key: your key
X-Qs-Encryption-Customer-Key-Md5: md5 of your key
響應(yīng)示例:
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 21 Jul 2021 01:32:44 GMT
Last-Modified: Tue, 20 Jul 2021 10:29:28 GMT
Content-Type: application/octet-stream
Content-Length: 712012
Connection: keep-alive
ETag: "7c1fa24c1049ea04713e38a876531b3b"
X-Qs-Encryption-Customer-Algorithm: AES256
X-Qs-Encryption-Customer-Key-Md5: md5 of your key
x-qs-raw-version-id: '596774173842344405
x-qs-request-id: 412b0b33cb5df691
x-qs-storage-class: STANDARD
[712012 bytes of object data]
3.2.2 PUT Object
若喬巴需要將待存儲(chǔ)至指定空間的對(duì)象(背包)進(jìn)行加密,可以使用 PUT Object,并攜帶加密信息。
具體可以這樣做:
請(qǐng)求示例:
PUT /myphoto.jpg HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Tue, 20 Jul 2021 10:28:51 GMT
Content-Length: 7987
Authorization: authorization string
X-Qs-Encryption-Customer-Algorithm: AES256
X-Qs-Encryption-Customer-Key: your key
X-Qs-Encryption-Customer-Key-Md5: md5 of your key
響應(yīng)示例:
HTTP/1.1 201 CREATED
Server: nginx
Date: Tue, 20 Jul 2021 10:29:28 GMT
ETag: "7c1fa24c1049ea04713e38a876531b3b"
Content-Length: 0
Connection: close
X-Qs-Encryption-Customer-Algorithm: 'AES256'
X-Qs-Encryption-Customer-Key-Md5: md5 of your key
x-qs-request-id: c60578c617907748
3.2.3 PUT Object - Copy
若喬巴想要對(duì)已經(jīng)存儲(chǔ)在 QingStor 的加密對(duì)象(背包),進(jìn)行備份,可以使用PUT Object - Copy ,對(duì)源對(duì)象(背包)進(jìn)行拷貝。
拷貝后的對(duì)象,不會(huì)包含源對(duì)象的加密信息,喬巴需要再次提供加密信息,對(duì)目標(biāo)對(duì)象進(jìn)行加密。
由于拷貝的過(guò)程涉及到:
- 讀取源對(duì)象
- 將源對(duì)象寫(xiě)入目標(biāo)存儲(chǔ)空間
根據(jù)前文說(shuō)明,我們知道,若需讀取 QingStor 的加密對(duì)象(背包),我們需要提供該加密對(duì)象的加密信息。成功讀取后,再將該對(duì)象寫(xiě)入存儲(chǔ)空間時(shí),我們需要提供加密信息,對(duì)該對(duì)象進(jìn)行加密。
整個(gè)過(guò)程,我們需要提供兩個(gè)加密信息:源對(duì)象的加密信息與目標(biāo)對(duì)象的加密信息。為了區(qū)分這兩個(gè)加密信息,QingStor 對(duì)象存儲(chǔ)用到如下請(qǐng)求頭來(lái)標(biāo)明源對(duì)象的加密信息:
| 請(qǐng)求頭 | 類型 | 描述 |
|---|---|---|
| x-qs-copy-source-encryption-customer-algorithm | String | 源對(duì)象加密算法 |
| x-qs-copy-source-encryption-customer-key | String | 源對(duì)象的密鑰 |
| x-qs-copy-source-encryption-customer-key-md5 | String | 源對(duì)象的密鑰的 MD5 |
請(qǐng)求示例:
PUT /myphoto.jpg HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Wed, 21 Jul 2021 03:06:32 GMT
Content-Type: application/octet-stream
Authorization: authorization string
X-Qs-Copy-Source: /source-bucket/source-object
X-Qs-Copy-Source-Encryption-Customer-Algorithm: AES256
X-Qs-Copy-Source-Encryption-Customer-Key: original object key
X-Qs-Copy-Source-Encryption-Customer-Key-Md5:original object key's md5
X-Qs-Encryption-Customer-Algorithm: AES256
X-Qs-Encryption-Customer-Key: new object key
X-Qs-Encryption-Customer-Key-Md5: new object key's md5
響應(yīng)示例:
HTTP/1.1 201 CREATED
Server: nginx
Date: Wed, 21 Jul 2021 03:11:02 GMT
ETag: "7c1fa24c1049ea04713e38a876531b3b"
Content-Length: 0
Content-Type: text/plain
Connection: close
X-Qs-Encryption-Customer-Algorithm: 'AES256'
X-Qs-Encryption-Customer-Key-Md5: md5 of your key
x-qs-request-id: c60578c617907748
3.2.4 PUT Object - Move
若喬巴需要將自己已經(jīng)提交儲(chǔ)存的背包移動(dòng)一下存儲(chǔ)位置,比如從一個(gè)存儲(chǔ)空間移動(dòng)到另外一個(gè)存儲(chǔ)空間,那可以通過(guò) PUT Object - Move 來(lái)操作。
因?yàn)橐苿?dòng)背包不涉及到背包數(shù)據(jù)的讀寫(xiě),因此該操作是無(wú)需提供加密背包時(shí)所使用的加密信息,即:無(wú)需提供源對(duì)象加密請(qǐng)求頭。
移動(dòng)后的背包(目標(biāo)對(duì)象),仍然保留源背包(源對(duì)象)加密時(shí)所使用的加密信息。
請(qǐng)求示例:
PUT /myphoto.jpg HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Wed, 21 Jul 2021 03:11:02 GMT
Authorization: authorization string
X-Qs-move-source: /source-bucket/source-object
X-Qs-Copy-Source-Encryption-Customer-Algorithm: AES256
X-Qs-Copy-Source-Encryption-Customer-Key: original object key
X-Qs-Copy-Source-Encryption-Customer-Key-Md5:original object key's md5
X-Qs-Encryption-Customer-Algorithm: AES256
X-Qs-Encryption-Customer-Key: new object key
X-Qs-Encryption-Customer-Key-Md5: new object key's md5
響應(yīng)示例:
HTTP/1.1 201 CREATED
Server: QingStor
Date: Wed, 21 Jul 2021 03:11:02 GMT
ETag: "0c2f573d81194064b129e940edcefe9b"
Content-Length: 0
Connection: close
X-Qs-Encryption-Customer-Algorithm: 'AES256'
X-Qs-Encryption-Customer-Key-Md5: md5 of your key
x-qs-request-id: c60578c617907748
3.2.5 HEAD Object
當(dāng)喬巴存儲(chǔ)的東西越來(lái)越多了,搞不清楚每個(gè)背包里有什么內(nèi)容,這個(gè)時(shí)候可以使用 HEAD Object 來(lái)獲取一下這些背包的相關(guān)信息。因?yàn)椴簧婕暗奖嘲鼣?shù)據(jù)的讀寫(xiě),因此該操作無(wú)需提供加密背包時(shí)所使用的加密信息,即:無(wú)需提供源對(duì)象的加密請(qǐng)求頭。
若喬巴手里的密鑰太多,不確定密鑰與背包是否匹配,也可以使用HEAD Object 來(lái)操作,這個(gè)時(shí)候就需要提供背包加密時(shí)所使用的加密信息,即:需要提供源對(duì)象的加密請(qǐng)求頭,用以驗(yàn)證該加密信息的算法與密鑰是否正確。
請(qǐng)求示例:
HEAD /myphoto.jpg HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Wed, 21 Jul 2021 06:13:33 GMT
Connection:close
Authorization: authorization string
X-Qs-Encryption-Customer-Algorithm: AES256
X-Qs-Encryption-Customer-Key: your key
X-Qs-Encryption-Customer-Key-Md5:your key's md5
響應(yīng)示例:
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 21 Jul 2021 06:13:33 GMT
Last-Modified: Tue, 20 Jul 2021 10:29:28 GMT
ETag: "0c2f573d81194064b129e940edcefe9b"
Content-Type: application/octet-stream
Content-Length: 7987
Connection: keep-alive
X-Qs-Encryption-Customer-Algorithm: AES256
X-Qs-Encryption-Customer-Key-Md5: key's md5
x-qs-storage-class: STANDARD
x-qs-request-id: aa08cf7a43f611e5886952542e6ce14b
3.3 分段上傳
若喬巴待存儲(chǔ)的背包過(guò)大,如超過(guò) 5G,這個(gè)時(shí)候,喬巴需要將背包進(jìn)行一下切分,分為多個(gè)小背包進(jìn)行傳輸。待 QingStor 收到該背包的所有分片后,QingStor 會(huì)將這些分片進(jìn)行組裝,再次整理為一個(gè)背包進(jìn)行存儲(chǔ)。
具體做法,參考如下內(nèi)容:
3.3.1 Initiate Multipart Upload
首先,喬巴需要通知 QingStor,它需要加密分段上傳。這個(gè)時(shí)候,需要用到帶有加密信息的 Initiate Multipart Upload 操作來(lái)完成。
請(qǐng)求示例:
POST /large-object?uploads HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Wed, 21 Jul 2021 06:58:47 GMT
Authorization: authorization string
X-Qs-Encryption-Customer-Algorithm: AES256
X-Qs-Encryption-Customer-Key: your key
X-Qs-Encryption-Customer-Key-Md5: your key's md5
響應(yīng)示例:
HTTP/1.1 200 OK
Server: QingStor
Date: Wed, 21 Jul 2021 06:59:24 GMT
Content-Type: application/json
Content-Length: 90
Connection: keep-alive
X-Qs-Encryption-Customer-Algorithm: AES256
X-Qs-Encryption-Customer-Key-Md5: your key
x-qs-request-id: f697b777721f033e
x-qs-request-id: 37fed66c441a11e5b95f52542e6ce14b
{
"bucket":"test-rose",
"key":"example_key8",
"upload_id":"84947437bc00e22"
}
備注:
- 這個(gè)過(guò)程中,QingStor 僅保存密鑰的MD5值,用于驗(yàn)證后續(xù)上傳分段的密鑰是否正確。
- QingStor 將丟棄喬巴提交的密鑰信息。
3.3.2 Upload Object Part
QingStor 收到喬巴加密分段上傳的請(qǐng)求,并做好相關(guān)準(zhǔn)備操作后,告訴喬巴,你可以繼續(xù)上傳分段了。這個(gè)時(shí)候,喬巴可以使用攜帶有加密信息的 Upload Object Part 來(lái)進(jìn)行操作。
備注:
- 由于是同一個(gè)背包(對(duì)象)的不同分片,故加密信息應(yīng)與初始化分段時(shí)提供的加密信息保持一致。
- 該操作需包含有初始化加密分段上傳階段的 upload_id 字段
請(qǐng)求示例:
PUT /large-object?upload_id=4d26b37a469230619604ecdc0e314782&part_number=0 HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Wed, 21 Jul 2021 06:59:24 GMT
Content-Length: 7987
Authorization: authorization string
X-Qs-Encryption-Customer-Algorithm: AES256
X-Qs-Encryption-Customer-Key: your key
X-Qs-Encryption-Customer-Key-Md5: your key's md5
響應(yīng)示例:
HTTP/1.1 201 CREATED
Server: QingStor
Date: Wed, 21 Jul 2021 06:59:24 GMT
Content-Length: 0
Connection: close
X-Qs-Encryption-Customer-Algorithm: 'AES256'
X-Qs-Encryption-Customer-Key-Md5: md5 of your key
x-qs-request-id: 37fed66c441a11e5b95f52542e6ce14b
3.3.3 Copy Object Part
QingStor 也支持對(duì)加密分段的拷貝操作。與拷貝加密對(duì)象對(duì)象的操作相同,需要提供額外的請(qǐng)求頭:
| 請(qǐng)求頭 | 類型 | 描述 |
|---|---|---|
| x-qs-copy-source-encryption-customer-algorithm | String | 源對(duì)象加密算法 |
| x-qs-copy-source-encryption-customer-key | String | 源對(duì)象的密鑰 |
| x-qs-copy-source-encryption-customer-key-md5 | String | 源對(duì)象的密鑰的 MD5 |
備注:
- 拷貝時(shí),提供的源對(duì)象加密信息與初始化分段時(shí)提供的加密信息保持一致。
- 目標(biāo)對(duì)象的加密信息重新給定。
- 該操作需包含有初始化加密分段上傳階段的 upload_id 字段.
請(qǐng)求示例:
PUT /large-object?upload_id=4d26b37a469230619604ecdc0e314782&
Host: mybucket.pek3a.qingstor.com
Date: Wed, 21 Jul 2021 03:06:32 GMT
Content-Type: application/octet-stream
Authorization: authorization string
X-Qs-Copy-Source: /source-bucket/source-object
X-Qs-Copy-Source-Encryption-Customer-Algorithm: AES256
X-Qs-Copy-Source-Encryption-Customer-Key: original object key
X-Qs-Copy-Source-Encryption-Customer-Key-Md5:original object key's md5
X-Qs-Encryption-Customer-Algorithm: AES256
X-Qs-Encryption-Customer-Key: new object key
X-Qs-Encryption-Customer-Key-Md5: new object key's md5
響應(yīng)示例:
HTTP/1.1 201 CREATED
Server: QingStor
Date: Wed, 21 Jul 2021 03:11:02 GMT
ETag: "7c1fa24c1049ea04713e38a876531b3b"
Content-Length: 0
Content-Type: text/plain
Connection: close
X-Qs-Encryption-Customer-Algorithm: 'AES256'
X-Qs-Encryption-Customer-Key-Md5: md5 of your key
x-qs-request-id: c60578c617907748
3.3.4 Complete Multipart Upload
當(dāng)喬巴的加密分段上傳完成后,這個(gè)時(shí)候,就需要用到帶有加密信息的 Initiate Multipart Upload 操作來(lái)通知 QingStor 加密分段上傳完成。
備注:
- 該操作不能單獨(dú)使用。
- 該操作不涉及到背包數(shù)據(jù)的讀取,故無(wú)需提交加密請(qǐng)求頭
- 該操作需包含有初始化加密分段上傳階段的 upload_id 字段
請(qǐng)求示例:
POST /large-object?upload_id=4d26b37a469230619604ecdc0e314782 HTTP/1.1
Host: mybucket.<zone-id>.qingstor.com
Date: Wed, 21 Jul 2021 03:06:32 GMT
Authorization: authorization string
ETag: "0c2f573d81194064b129e940edcefe9b"
{
"object_parts": [
{"part_number": 0, "etag": "c837682353601f7fc0a2ccb6bc8f4654"},
{"part_number": 1, "etag": "28e2c0c6574a1ef20ac41d16a012a7c1"}
]
}
響應(yīng)示例:
HTTP/1.1 201 CREATED
Server: QingStor
Date: Wed, 21 Jul 2021 03:06:32 GMT
Content-Length: 0
Connection: close
x-qs-request-id: 37fed66c441a11e5b95f52542e6ce14b
3.3.5 Abort Multipart Upload
在加密分段上傳的過(guò)程中,喬巴發(fā)現(xiàn)傳錯(cuò)背包了,或者其他原因需要終止加密分段上傳,可以在完成分段上傳前,提前終止加密分段上傳,這個(gè)時(shí)候,就可以使用 Abort Multipart Upload。使用該操作后,已經(jīng)上傳成功的分段也將從 QingStor 刪除。
備注:
- 該操作不能單獨(dú)使用。
- 該操作無(wú)需提交加密請(qǐng)求頭
- 該操作需包含有初始化加密分段上傳階段的 upload_id 字段
請(qǐng)求示例:
DELETE /large-object?upload_id=4d26b37a469230619604ecdc0e314782 HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Wed, 21 Jul 2021 03:06:32 GMT
Content-Length: 0
Authorization: authorization string
響應(yīng)示例:
HTTP/1.1 204 NoContent
Server: QingStor
Date: Wed, 21 Jul 2021 03:06:32 GMT
Content-Length: 0
Connection: close
x-qs-request-id: 37fed66c441a11e5b95f52542e6ce14b
四 結(jié)尾
至此,我們知道,QingStor 在完成對(duì)喬巴提交的對(duì)象加密后,將丟棄喬巴提交的用于解密該對(duì)象的密鑰。也就是說(shuō),一旦該對(duì)象加密存儲(chǔ)后,只有擁有該密鑰的人,才能對(duì)該對(duì)象進(jìn)行下載解密。
就好比家里的保險(xiǎn)柜鑰匙丟了,你打電話給這個(gè)保險(xiǎn)柜的生產(chǎn)廠家,如果廠家說(shuō)他能幫你打開(kāi),那這恰恰說(shuō)明這個(gè)保險(xiǎn)柜不是那么的保險(xiǎn)。所以從保險(xiǎn)角度來(lái)說(shuō),廠家也沒(méi)有備用鑰匙的。
所以 QingStor 在這里提醒諸位,一定要保管好自己的密鑰哦!
本文由博客一文多發(fā)平臺(tái) OpenWrite 發(fā)布!