对象存储服务的加密特性

实现思路

加密特性的方案,涉及如下设计点:

  • 密钥的用途
  • 加密的位置
  • 加密的算法
  • 加密密钥的使用
  • 加密密钥的管理

密钥的用途

密钥的用途分为管理密钥和数据密钥。
管理密钥用于加密数据密钥,需要定期更换,更换成本低;假如管理密钥丢失,则导致数据密钥无法解密,从而丢失数据。
数据密钥用于加密数据,需要妥善管理,使用数据密钥加密数据后,如果丢失数据的加密密钥,则导致丢失数据。
数据密钥的生命周期一般和对象的生命周期保持一致。

加密的位置

包括客户端和服务端。

客户端加密
方案一,加密操作完全由客户端自行实现。
使用客户自定义的加密方式、加密算法、加密密钥,对数据进行加密,相关实现由客户的开发团队提供。
此时算法、密钥均可由客户端管理,对象存储完全不感知相关操作。

方案二,加密操作由对象存储客户端SDK提供,客户应用负责集成SDK。
此时算法、密钥等,可以由对象存储的客户端SDK管理,也可由客户应用管理。

服务侧加密
使用服务侧提供的方式,在数据持久层完成加密、解密操作,客户端上传、下载时均访问明文。

客户和服务同时提供加密
可以在客户端、服务端同时实现加密特性,对于数据的安全提供双重的保障,当然引入了更多的管理成本,更多的算力的需求。

加密算法

对于存储系统而言,可行的算法比如AES-XTSAES-GCM等。
密钥的长度,比如128、256等。

参考资料如下:

加密密钥的使用

主要考虑加密密钥的使用范围,对于对象存储而言,数据密钥的影响范围,比如可以有

  • 租户,即租户下所有的桶,均使用本密钥。
  • 子用户,即子用户下所有的桶,均使用本密钥。
  • 桶,即桶下的所有对象,均使用本密钥。
  • 对象,按照对象来指定加密的密钥。

加密密钥的管理

实现方案需考虑如下几点:

  • 管理角色
  • 存储位置
  • 轮换策略

密钥的管理职责,可由客户端、对象存储服务、第三方密钥管理服务来承载。
在上述方案做出选择后,决定了密钥的存储服务和轮换策略。

参考资料

AWS S3

华为云

posted @ 2024-06-09 17:06  jackieathome  阅读(25)  评论(0编辑  收藏  举报