# 加密模型预测

(简体中文|[English](./Encryption_EN.md))

Padle Serving提供了模型加密预测功能，本文档显示了详细信息。

## 原理

采用对称加密算法对模型进行加密。对称加密算法采用同一密钥进行加解密，它计算量小，速度快，是最常用的加密方法。

### 获得加密模型

普通的模型和参数可以理解为一个字符串，通过对其使用加密算法（参数是您的密钥），普通模型和参数就变成了一个加密的模型和参数。

我们提供了一个简单的演示来加密模型。请参阅[examples/C++/encryption/encrypt.py](../../examples/C++/encryption/encrypt.py)。


### 启动加密服务

假设您已经有一个已经加密的模型（在`encrypt_server/`路径下）,您可以通过添加一个额外的命令行参数 `--use_encryption_model`来启动加密模型服务。

CPU Service
```
python -m paddle_serving_server.serve --model encrypt_server/ --port 9300 --use_encryption_model
```
GPU Service
```
python -m paddle_serving_server.serve --model encrypt_server/ --port 9300 --use_encryption_model --gpu_ids 0
```

此时，服务器不会真正启动，而是等待密钥。

### Client Encryption Inference

首先，您必须拥有模型加密过程中使用的密钥。

然后你可以用这个密钥配置你的客户端，当你连接服务器时，这个密钥会发送到服务器，服务器会保留它。

一旦服务器获得密钥，它就使用该密钥解析模型并启动模型预测服务。


### 模型加密推理示例
模型加密推理示例, 请参见[examples/C++/encryption/](../../examples/C++/encryption/)。
