客户端加密是指用户数据在发送给远端服务器之前就完成加密,而加密所用的密钥的明文只保留在本地,从而可以保证用户数据安全,即使数据泄漏别人也无法解密得到原始数据。
本文介绍如何基于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库