用戶端加密是指使用者資料在發送給遠端伺服器之前就完成加密,而加密所用的密鑰的明文隻保留在本地,進而可以保證使用者資料安全,即使資料洩漏别人也無法解密得到原始資料。
本文介紹如何基于oss的現有python sdk版本, 通過用戶端加密來保護資料。
使用者本地維護一對rsa密鑰(<code>rsa_private_key</code>和<code>rsa_public_key</code>)
每次上傳object時,随機生成一個aes256類型的對稱密鑰<code>data_key</code>,然後用<code>data_key</code>加密原始content得到encrypt_content.
用<code>rsa_public_key</code>加密<code>data_key</code>, 得到<code>encrypt_data_key</code>, 作為使用者的自定義meta放入請求頭部,和encrypt_content一起發送到oss
get object時,首先得到encrypt_content以及使用者自定義meta中的<code>encrypt_data_key</code>
使用者使用<code>rsa_private_key</code>解密<code>encrypt_data_key</code>得到<code>data_key</code>,然後用<code>data_key</code>解密encrypt_content得到原始content

安裝pycrypto庫