You need to enable JavaScript to run this app.
导航

全链路数据加解密

最近更新时间2023.11.08 10:21:26

首次发布时间2023.09.20 16:23:44

客户端上传 SDK 可在传输数据前对上传文件进行数据加密,加密操作在您本地进行,加密完成后 SDK 会将加密数据上传至 veImageX 存储服务。以下为您介绍客户端加密的应用场景、注意事项、前提条件、方案优势、加密流程等内容。

应用场景

适用于对文件有高安全性或者合规性要求的场景。例如 IM 场景、身份认证场景、防黑产盗用。

注意事项

  • veImageX 仅感知和存储上传文件的加密数据,对加密密钥AES Key无法感知。仅当您提供密钥后 veImageX 才有权对上传的加密数据进行处理,所以您需要对AES Key的完整性和正确性负责。因您维护不当导致AES Key用错或丢失,从而导致加密数据无法解密所引起的一切损失和后果均由您自行承担。

  • 数据迁移、离线画质评估等批处理功能暂支持加密场景。

  • 客户端加密会消耗部分上传速度。

  • 用户数据在加密前不会上传到 veImageX 存储服务。

方案优势

  • 整体性:veImageX 提供端到端加密方案,包括上传、存储、处理、分发全链路的加密;

  • 稳定性:不会对 veImageX 现有上传、分发链路的延迟和稳定性带来严重负面影响;

  • 易用性:加密图片也可以使用 veImageX 丰富的图像处理能力,无需您做复杂适配改造。

加密流程

  1. 业务在 veImageX 控制台获取非对称公钥RSA Public Key,veImageX 持有非对称私钥RSA Private Key

  2. 在上传文件前,支持自定义对称密钥 AES Key(长度为 32 字节)或用 SDK 随机生成并经回调下发。

  3. 上传 SDK 开启加密上传并使用 AES Key 加密原始上传文件。使用 RSA Public Key 加密 AES KeyAES Key加密上传文件。加密完成后 SDK 上传加密数据至 veImageX 服务。上传 SDK 将 veImageX 返回的上传成功的文件 URI 及 meta 信息回调给业务 APP。

    说明

    • 若您的业务强依赖回调返回的图片 meta 信息,则RSA Public Key为必填。如果您强依赖 meta 信息,建议您通过调用查询图片 meta 信息接口获取。

    • 使用上传加密后,Meta 信息包含图片宽高、md5 等信息。

    • 使用 RSA Public Key 加密 AES Key再经 Base 64 编码后得到imagex-encrypt-key

  4. 业务 APP 向业务 Server 获取文件 URI 和 meta 信息,并通过加载 SDK自行拼接 Header 中携带了密钥的图像访问 URL 的方式将imagex-encrypt-key传递给 veImageX。

    若 URL 中包含了模板处理参数,则 veImageX 会根据RSA Public Key查找对应非对称私钥 RSA Private Key 解密经 Base 64 解码后的imagex-encrypt-key得到原AES Key,下载加密数据使用AES Key解密得到原始上传文件。

    再根据模板处理参数对图片转码后再次使用原AES Key加密处理图,并向业务 APP 下发处理后加密数据。业务 APP 在解密文件后展示处理图。

    仅当您的图片 URL 中包含了对图片所需执行的处理操作时,RSA Public Key才为必传。如果仅为下载原图,即模板中不包含处理操作,您仅需传递对称密钥AES Key

加密密钥

用于加密上传文件的对称密钥AES Key支持以下三个获取方式,您可根据实际情况选择:

获取方式获取说明推荐场景
业务 Server 生成随着上传 STS 签名一起下发至业务 APP,并由业务 APP 随着设置加密参数一同传递给上传 SDK。业务 Server 已对接 KMS 系统

业务 APP 生成

在设置上传加密参数时传递给上传 SDK,并在上传文件上报阶段上报给业务 Server。

业务有特殊的密钥生成算法需求,可以由业务 App 生成密钥,并在 SDK 指定密钥内容。

说明

需将自定义的 32 位对称密钥经 Base 64 编码后再传给上传 SDK。

上传 SDK 生成(推荐)在回调中随着上传文件 URI 一起回调给业务 APP。无特殊需求建议由上传 SDK 生成密钥,成本较低。

前提条件

操作步骤

获取非对称公钥

  1. 登录 veImageX 控制台,选择并进入服务管理

  2. 选择待存储的服务,并单击基础配置按钮,并进入该页面。

    说明

    • 图像处理服务:支持任意合法资源上传和托管外,还支持对图片文件执行图像实时处理。

    • 素材托管服务:支持任意合法资源的访问和托管。

  3. 选择数据加密后,点击申请按钮。

  4. 在二次确认后,您可查看并复制公钥数据。

    说明

    • 如果发生密钥泄露,可申请变更密钥。

    • 更新密钥大概 1 分钟左右生效。生效后旧的公钥加载解密失败,需要您及时替换公钥,避免影响线上业务。

加密上传文件

您可通过以下版本的客户端上传 SDK 启用上传加密,具体适用版本及接入文档如下所示:

平台版本号接入文档
AndroidTTSDK 1.39.1.13 及以上Android 上传 SDK 接入文档
iOSTTSDK 1.39.1.14 及以上iOS 上传 SDK 接入文档
Webtt-uploader@1.0.28 及以上Web 上传 SDK 接入文档

分发解密文件

仅当您向 veImageX 传递解密所需的解密密钥后,veImageX 才有权对您的加密图像数据执行图像处理、渲染展示。具体可分为以下两种方式:

方式一:客户端解密加载

您可通过以下版本的客户端加载 SDK 启用解密加载,具体适用版本及接入文档如下所示:

平台版本号接入文档
Android_BDFresco2.4.2-tob 及以上BDFresco 加载 SDK 接入文档
iOS1.39.1.14 及以上iOS 加载 SDK 接入文档
Web2.1.1 及以上Vue.js 加载 SDK 接入文档

方式二:手动解密加载

您可根据实际需求,选择仅下载原图或对加密图执行图像处理操作后加载。

  • 图像处理:在 Header 头 imagex-decrypt-key 中填写使用 RSA Public Key 加密 AES Key再经 Base 64 编码后密文数据,并在图片 URL 中的模板中填写图片处理配置参数。转码完成后,若您需要使用新的AES Key重新加密转码后处理图,请在 Header 头imagex-encrypt-key中填写新的对称密钥,否则,默认使用AES Key加密处理图。

  • 下载原图:在 Header 头 imagex-decrypt-key 中填写 AES Key

错误码

错误码说明
5000解码失败,没带密钥信息
5004解密失败,密钥信息错误

常见问题

文件 URI 与数据加密对称密钥的对应关系?

通常为 1 v 1,即一个文件对应一个对称密钥,也支持多个文件共用一个对称密钥。对称密钥以及对应关系由您自行维护,veImageX 无法感知。

数据加密用的对称密钥和密钥加密用的非对称密钥是什么关系?

  • 对称密钥是文件维度,用于加密数据,由您自行维护,veImageX 无法感知。

  • 非对称密钥是服务维度,用于加密对称密钥,veImageX 可感知。

在某服务申请非对称密钥后,该服务是否只能上传加密数据?

不是。
veImageX 并不会对服务下上传文件类型执行强校验,但是建议您区分存储加密数据和非加密数据的服务。