客户端上传 SDK 可在传输数据前对上传文件进行数据加密,加密操作在您本地进行,加密完成后 SDK 会将加密数据上传至 veImageX 存储服务。以下为您介绍客户端加密的应用场景、注意事项、前提条件、方案优势、加密流程等内容。
适用于对文件有高安全性或者合规性要求的场景。例如 IM 场景、身份认证场景、防黑产盗用。
veImageX 仅感知和存储上传文件的加密数据,对加密密钥AES Key
无法感知。仅当您提供密钥后 veImageX 才有权对上传的加密数据进行处理,所以您需要对AES Key
的完整性和正确性负责。因您维护不当导致AES Key
用错或丢失,从而导致加密数据无法解密所引起的一切损失和后果均由您自行承担。
数据迁移、离线画质评估等批处理功能暂不支持加密场景。
客户端加密会消耗部分上传速度。
用户数据在加密前不会上传到 veImageX 存储服务。
整体性:veImageX 提供端到端加密方案,包括上传、存储、处理、分发全链路的加密;
稳定性:不会对 veImageX 现有上传、分发链路的延迟和稳定性带来严重负面影响;
易用性:加密图片也可以使用 veImageX 丰富的图像处理能力,无需您做复杂适配改造。
业务在 veImageX 控制台获取非对称公钥RSA Public Key
,veImageX 持有非对称私钥RSA Private Key
。
在上传文件前,支持自定义对称密钥 AES Key
(长度为 32 字节)或用 SDK 随机生成并经回调下发。
在上传 SDK 开启加密上传并使用 AES Key
加密原始上传文件。使用 RSA Public Key
加密 AES Key
,AES 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
。
业务 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 生成密钥,成本较低。 |
登录 veImageX 控制台,选择并进入服务管理。
选择待存储的服务,并单击基础配置按钮,并进入该页面。
说明
图像处理服务:支持任意合法资源上传和托管外,还支持对图片文件执行图像实时处理。
素材托管服务:支持任意合法资源的访问和托管。
选择数据加密后,点击申请按钮。
在二次确认后,您可查看并复制公钥数据。
说明
如果发生密钥泄露,可申请变更密钥。
更新密钥大概 1 分钟左右生效。生效后旧的公钥加载解密失败,需要您及时替换公钥,避免影响线上业务。
您可通过以下版本的客户端上传 SDK 启用上传加密,具体适用版本及接入文档如下所示:
平台 | 版本号 | 接入文档 |
---|---|---|
Android | TTSDK 1.39.1.13 及以上 | Android 上传 SDK 接入文档 |
iOS | TTSDK 1.39.1.14 及以上 | iOS 上传 SDK 接入文档 |
Web | tt-uploader@1.0.28 及以上 | Web 上传 SDK 接入文档 |
仅当您向 veImageX 传递解密所需的解密密钥后,veImageX 才有权对您的加密图像数据执行图像处理、渲染展示。具体可分为以下两种方式:
您可通过以下版本的客户端加载 SDK 启用解密加载,具体适用版本及接入文档如下所示:
平台 | 版本号 | 接入文档 |
---|---|---|
Android_BDFresco | 2.4.2-tob 及以上 | BDFresco 加载 SDK 接入文档 |
iOS | 1.39.1.14 及以上 | iOS 加载 SDK 接入文档 |
Web | 2.1.1 及以上 | Vue.js 加载 SDK 接入文档 |
您可根据实际需求,选择仅下载原图或对加密图执行图像处理操作后加载。
图像处理:在 Header 头 imagex-decrypt-key
中填写使用 RSA Public Key
加密 AES Key
再经 Base 64 编码后密文数据,并在图片 URL 中的模板中填写图片处理配置参数。转码完成后,返回的处理图将使用 AES Key
进行加密。
下载原图:使用原图 URL 获取源资源,即下载原始加密数据。
错误码 | 说明 |
---|---|
5000 | 解码失败,没带密钥信息 |
5004 | 解密失败,密钥信息错误 |
通常为 1 v 1,即一个文件对应一个对称密钥,也支持多个文件共用一个对称密钥。对称密钥以及对应关系由您自行维护,veImageX 无法感知。
对称密钥是文件维度,用于加密数据,由您自行维护,veImageX 无法感知。
非对称密钥是服务维度,用于加密对称密钥,veImageX 可感知。
不是。
veImageX 并不会对服务下上传文件类型执行强校验,但是建议您区分存储加密数据和非加密数据的服务。