|
@@ -1,6 +1,7 @@
|
|
|
# Paddle模型加密方案
|
|
# Paddle模型加密方案
|
|
|
|
|
|
|
|
飞桨团队推出模型加密方案,使用业内主流的AES加密技术对最终模型进行加密。飞桨用户可以通过PaddleX导出模型后,使用该方案对模型进行加密,预测时使用解密SDK进行模型解密并完成推理,大大提升AI应用安全性和开发效率。
|
|
飞桨团队推出模型加密方案,使用业内主流的AES加密技术对最终模型进行加密。飞桨用户可以通过PaddleX导出模型后,使用该方案对模型进行加密,预测时使用解密SDK进行模型解密并完成推理,大大提升AI应用安全性和开发效率。
|
|
|
|
|
+** 注意:目前加密方案仅支持Linux系统**
|
|
|
|
|
|
|
|
## 1. 方案介绍
|
|
## 1. 方案介绍
|
|
|
|
|
|
|
@@ -10,40 +11,22 @@
|
|
|
|
|
|
|
|
下载并解压后,目录包含内容为:
|
|
下载并解压后,目录包含内容为:
|
|
|
```
|
|
```
|
|
|
-paddle_model_encrypt
|
|
|
|
|
|
|
+paddlex-encryption
|
|
|
├── include # 头文件:paddle_model_decrypt.h(解密)和paddle_model_encrypt.h(加密)
|
|
├── include # 头文件:paddle_model_decrypt.h(解密)和paddle_model_encrypt.h(加密)
|
|
|
|
|
|
|
|
|
|
├── lib # libpmodel-encrypt.so和libpmodel-decrypt.so动态库
|
|
├── lib # libpmodel-encrypt.so和libpmodel-decrypt.so动态库
|
|
|
|
|
|
|
|
|
|
-└── tool # paddle_encrypt_tool
|
|
|
|
|
|
|
+└── tool # paddlex_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
|
|
|
|
|
|
|
+### 1.2 加密PaddleX模型
|
|
|
|
|
|
|
|
|
|
+模型加密后,会产生随机密钥信息(用于AES加解密使用),该key值需要在模型加载时传入作为解密使用。
|
|
|
|
|
+> 32字节key + 16字节iv, 注意这里产生的key是经过base64编码后的,这样可以扩充选取key的范围
|
|
|
```
|
|
```
|
|
|
-// 加密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);
|
|
|
|
|
|
|
+./paddlex-encryption -model_dir paddlex_inference_model -save_dir paddlex_encrypted_model
|
|
|
```
|
|
```
|
|
|
|
|
+模型在加密后,会保存至指定的`-save_dir`下,同时生成密钥信息,命令输出如下图所示,密钥为`33NRtxvpDN+rkoiECm/e1Qc7sDlODdac7wp1m+3hFSU=`
|
|
|
|
|
+
|
|
|
|
|
|
|
|
## 2. PaddleX C++加密部署
|
|
## 2. PaddleX C++加密部署
|