encryption.md 1.4 KB
Newer Older
J
jiangjiajun 已提交
1 2 3 4 5 6 7 8
# Paddle模型加密方案

飞桨团队推出模型加密方案,使用业内主流的AES加密技术对最终模型进行加密。飞桨用户可以通过PaddleX导出模型后,使用该方案对模型进行加密,预测时使用解密SDK进行模型解密并完成推理,大大提升AI应用安全性和开发效率。

## 1. 方案介绍

### 1.1 工具组成

J
Jason 已提交
9
[PaddleX模型加密SDK下载](https://bj.bcebos.com/paddlex/tools/paddlex-encryption.zip)
J
jiangjiajun 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

下载并解压后,目录包含内容为:
```
paddle_model_encrypt
├── include # 头文件:paddle_model_decrypt.h(解密)和paddle_model_encrypt.h(加密)
|
├── lib # libpmodel-encrypt.so和libpmodel-decrypt.so动态库
|
└── tool # paddle_encrypt_tool
```

### 1.2 二进制工具

#### 1.2.1 生成密钥

产生随机密钥信息(用于AES加解密使用)(32字节key + 16字节iv, 注意这里产生的key是经过base64编码后的,这样可以扩充选取key的范围)

```
paddle_encrypt_tool    -g
```
#### 1.2.1 文件加密

```
 paddle_encrypt_tool    -e    -key    keydata     -infile    infile    -outfile    outfile
```

#### 1.3 SDK

```
// 加密API
int paddle_encrypt_model(const char* keydata, const char* infile, const char* outfile);
// 加载加密模型API:
int paddle_security_load_model(
        paddle::AnalysisConfig *config,
        const char *key,
        const char *model_file,
        const char *param_file);
```

## 2. PaddleX C++加密部署