为了保证推理会话数据的传输安全,在默认的网络层加密方案基础上,方舟安全团队为在线推理的会话数据提供了端到端应用层加密方案,支持用户通过 SDK 在本地对推理会话的内容进行加密。
为什么需要网络层和应用层的双层加密?请看这个形象的比喻:网络层的加密就像给文件加了一层保险盒,而应用层加密就如同再给保险盒上了一把锁,双重保险确保即便有人拦截了这个文件,也无从打开它。
方案介绍
会话数据应用层加密的具体流程,如下面的视频所示:
用户可以依靠 SDK 在本地私域对推理会话内容进行加密,会话密文安全传输至沙箱后,仅在安全沙箱内存中解密成明文,用于模型推理。安全沙箱内的模型推理结束后,生成的推理结果会由安全沙箱加密,以密文的形式从安全沙箱传输至用户私域,最终由用户通过 SDK 在本地解密,获取明文推理结果。
使用说明
推理会话数据应用层加密功能集成在火山 SDK 中,仅需增加一行代码,即可免费使用该功能,示例代码请参见推理会话数据应用层加密 。
说明
- 语言情况:目前仅支持 Python SDK。
- 版本要求:需要保证 SDK 版本
volcengine-python-sdk
1.0.104
及以上。可以通过 pip install 'volcengine-python-sdk[ark]' -U
获得 SDK 的最新版本。 - 三方支持:不支持三方 SDK ,包括 OpenAI SDK。
- 能力支持:仅支持 AK/SK 初始化,仅支持豆包文生文对话模型,仅支持 Chat Completions 中的单轮/多轮会话,支持流式/非流式,同步/异步接口。
原理说明
用 Alice 和 Bob 分别代表客户 SDK 和推理模型所在的安全沙箱容器,基本原理是利用 ECIES 实现一个 0-RTT 协议(即让客户端在第一条消息中就发送加密的 Payload 的协议),协议如下:
- Alice 通过公开渠道获得 Bob 的公钥
PK[Bob]
,该公钥须是椭圆曲线公钥。 - Alice 生成随机数
r
,通过和椭圆曲线基点相乘获得R = r × G
,R
为会话密钥的密文。会话密钥S = r × PK[Bob]
,使用会话密钥S
衍生密钥加密明文得到会话密文Payload
。将(R, Payload)
发送给 Bob。 - Bob 收到
R
后利用自己的私钥解密会话密钥SK[Bob] × R = SK[Bob] × r × G = S
,使用S
衍生密钥解密密文Payload
得到会话明文。
验证说明
验证消息加密
动作:SDK 调用时,会对其中的 content
字段进行加密并使用 base64 编码。
验证:通过抓包工具的 HTTPS
抓包,查看请求体 body
中的会话数据是否是密文。
验证证书获取
动作:使用 AK/SK 初始化客户端 SDK ,每个推理接入点第一次请求会话数据应用层加密时,会调用 GetEndpointCertificate 接口,用于获取该接入点对应的证书。
验证:可以在云审计查看 GetEndpointCertificate 接口的调用日志。
证书说明
该证书仅适用于字节跳动公司的豆包系列模型(模型发布公告),不适用于非字节跳动公司的模型。
客户从公开渠道获得的椭圆曲线公钥来自于豆包模型的自签名证书,豆包模型均使用同一份公钥,对应的私钥托管在火山私有 CA 服务,使用的是 P-256 椭圆曲线。
豆包模型的证书可以通过方舟 OpenAPI 获取,接口是 GetEndpointCertificate。
证书详情:
证书的密钥算法 | ECDSA 256 |
---|
证书的签名算法 | ECDSA-SHA256 |
证书的序列号 | 1BC6311337412676230446127358F676227CFEE3 |
证书的主体信息 | 国家(C) | CN |
| 企业名称(O) | Volcano Engine Ark |
| 部门(OU) | Security |
| 城市(L) | Beijing |
| 省份(ST) | Beijing |
| 公用名(CN) | MaaS Crypto SDK Online |
证书信息 | 叶子证书 | -----BEGIN CERTIFICATE-----
MIICxjCCAm2gAwIBAgIUG8YxEzdBJnYjBEYSc1j2diJ8/uMwCgYIKoZIzj0EAwIw
gYQxITAfBgNVBAMMGE1hYVMgU0RLIFN1YiBDQSBFQ0MgUDI1NjEbMBkGA1UECgwS
Vm9sY2FubyBFbmdpbmUgQXJrMREwDwYDVQQLDAhTZWN1cml0eTELMAkGA1UEBhMC
Q04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0JlaWppbmcwHhcNMjQwMTAz
MDY1MjM4WhcNMjkwMTAzMDY1MjM4WjCBgjELMAkGA1UEBhMCQ04xEDAOBgNVBAgT
B0JlaWppbmcxEDAOBgNVBAcTB0JlaWppbmcxGzAZBgNVBAoTElZvbGNhbm8gRW5n
aW5lIEFyazERMA8GA1UECxMIU2VjdXJpdHkxHzAdBgNVBAMTFk1hYVMgQ3J5cHRv
IFNESyBPbmxpbmUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATD7RyZC51FCwuK
xYKh2ZCwIvbNDvQfosUk3gKc0B/+euemDWDAaVazuBOm8okHsSmUrsEudeksRruG
LTGu1lBxo4G8MIG5MA4GA1UdDwEB/wQEAwIDiDBYBgNVHR8EUTBPME2gS6BJhkdo
dHRwOi8vY3JsLnZvbGNjYS5jb20vdm9sYzE/c249NURCNEUwNDNFRjQ3MEY3RDBB
REU0RDIyMTNBNTU1NTEzMjEyOEM3MzA4BggrBgEFBQcBAQQsMCowKAYIKwYBBQUH
MAGGHGh0dHA6Ly9vY3NwLnZvbGNjYS5jb20vdm9sYzEwEwYDVR0lBAwwCgYIKwYB
BQUHAwEwCgYIKoZIzj0EAwIDRwAwRAIgFSel9WBkyPmpdG6YzReb7ShCVKq3scT3
9T2mfBgooPkCIHpRalKvIJX5S9oSyTf6iQiUcwzfUHd47Ew+PUV7O6aq
-----END CERTIFICATE-----
|
| 中间根证书 | -----BEGIN CERTIFICATE-----
MIIDCDCCAq+gAwIBAgIUXbTgQ+9HD30K3k0iE6VVUTISjHMwCgYIKoZIzj0EAwIw
gYUxIjAgBgNVBAMMGU1hYVMgU0RLIFJvb3QgQ0EgRUNDIFAyNTYxGzAZBgNVBAoM
ElZvbGNhbm8gRW5naW5lIEFyazERMA8GA1UECwwIU2VjdXJpdHkxCzAJBgNVBAYT
AkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdCZWlqaW5nMB4XDTI0MDEw
MzA2NDUyMVoXDTM0MDEwMzE1NTk1OVowgYQxITAfBgNVBAMMGE1hYVMgU0RLIFN1
YiBDQSBFQ0MgUDI1NjEbMBkGA1UECgwSVm9sY2FubyBFbmdpbmUgQXJrMREwDwYD
VQQLDAhTZWN1cml0eTELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcxEDAO
BgNVBAcMB0JlaWppbmcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATc+JkMHj6F
22yAIQWIDlbGikKHcy77VNfQRLi8HNCAipNfKktlocMJUD7uvaomfn3cvcI/YAEk
r1NA+OyINzeno4H7MIH4MBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQD
AgGGMFgGA1UdHwRRME8wTaBLoEmGR2h0dHA6Ly9jcmwudm9sY2NhLmNvbS92b2xj
MT9zbj0yRjU0Q0U1NUJDMjI2MzEzQ0Q1RUI4NkZDQTU0RTZGOUFFOEIwMzQwMDgG
CCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL29jc3Audm9sY2NhLmNv
bS92b2xjMTAdBgNVHQ4EFgQU53TjY9gSc5gAQDq4lrjIfOAj1DEwHwYDVR0jBBgw
FoAUjqqup74+HmschrVwON2NKvZtp9IwCgYIKoZIzj0EAwIDRwAwRAIgVrljBWvr
a4LfaYVKqRANxpqS6YLGLCHtDdnhYtim+ZICICbtI8mtHkKLxhqvJDEjf7GU3ssX
6Nq8pRWHxAmsx6DC
-----END CERTIFICATE-----
|
| 根证书 | -----BEGIN CERTIFICATE-----
MIIDCzCCArCgAwIBAgIUL1TOVbwiYxPNXrhvylTm+a6LA0AwCgYIKoZIzj0EAwIw
gYUxIjAgBgNVBAMMGU1hYVMgU0RLIFJvb3QgQ0EgRUNDIFAyNTYxGzAZBgNVBAoM
ElZvbGNhbm8gRW5naW5lIEFyazERMA8GA1UECwwIU2VjdXJpdHkxCzAJBgNVBAYT
AkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdCZWlqaW5nMB4XDTI0MDEw
MzA2NDQwOVoXDTM0MDEwMzE1NTk1OVowgYUxIjAgBgNVBAMMGU1hYVMgU0RLIFJv
b3QgQ0EgRUNDIFAyNTYxGzAZBgNVBAoMElZvbGNhbm8gRW5naW5lIEFyazERMA8G
A1UECwwIU2VjdXJpdHkxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAw
DgYDVQQHDAdCZWlqaW5nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgT4ZCpVh
Bas9kCTPnA22SoE4QGyK5VZiy6a5NQ/q99EZT2jxFyP8xqsKPUWAdike2l93uSAC
G7Jd4yK5nn58BqOB+zCB+DASBgNVHRMBAf8ECDAGAQH/AgEBMA4GA1UdDwEB/wQE
AwIBhjBYBgNVHR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnZvbGNjYS5jb20vdm9s
YzE/c249MkY1NENFNTVCQzIyNjMxM0NENUVCODZGQ0E1NEU2RjlBRThCMDM0MDA4
BggrBgEFBQcBAQQsMCowKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLnZvbGNjYS5j
b20vdm9sYzEwHQYDVR0OBBYEFI6qrqe+Ph5rHIa1cDjdjSr2bafSMB8GA1UdIwQY
MBaAFI6qrqe+Ph5rHIa1cDjdjSr2bafSMAoGCCqGSM49BAMCA0kAMEYCIQCzOoAV
vy4XHibX6+8gi9KkGCG9WLzYPKMrI1BlFN7DNAIhAKEiFkaMn/tBuytndKduE2Bx
G2KI5sUSpiB8EEYvuoNP
-----END CERTIFICATE-----
|
证书的创建时间 | 1704264758 |
证书的过期时间 | 1862117558 |
证书的生效时间 | 1704264758 |
证书的有效时长 | 5 年 |
叶子证书信息:
中间根证书和根证书信息:
certificate_chain.pem
未知大小
性能说明
在 Intel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz 单核情况下,按照消息长度 256 字节计算,一次对话请求的加解密额外耗时平均为 0.5786 ms。