Update README.md

This commit is contained in:
p87059431 2024-01-21 10:29:21 +08:00
parent 08c6774e8a
commit 58326947dc
1 changed files with 67 additions and 19 deletions

View File

@ -1,11 +1,13 @@
## 概述 ## 概述
NKDBSec是一个基于[Rosetta](https://github.com/LatticeX-Foundation/Rosetta)改造而成的安全多方计算框架。NKDBSec主要由[南开大学数据与智能系统安全教育部重点实验室](https://cyber.nankai.edu.cn/)和[北京安华金和有限公司](https://www.dbsec.cn/)进行开发和维护。原版本Rosetta框架是一个基于tensorflow开发的安全多方计算框架主要用于隐私保护机器学习。但是由于其底层使用的tensor结构大量的张量计算不太适用于大数据下的数据联合分析和其他隐私计算算法的开发。 NKDBSec是由[南开大学数据与智能系统安全教育部重点实验室](https://cyber.nankai.edu.cn/)和[北京安华金和有限公司](https://www.dbsec.cn/)联合推出的安全多方计算框架,主要用于大数据下的数据联合分析和其他隐私计算算法的开发,典型应用包括多方医疗机构数据联合诊断、多方银行联合征信、多方秘密共享数据库联合查询等等。
NKDBSec是一个基于[Rosetta](https://github.com/LatticeX-Foundation/Rosetta)改造而成的安全多方计算框架。Rosetta是一个基于tensorflow开发的安全多方计算框架主要用于隐私保护机器学习。但是由于其底层使用的tensor结构大量的张量计算不太适用于大数据下的数据联合分析和其他隐私计算算法的开发。目前产业界也缺少针对秘密共享数据库、数据联合分析等应用的MPC框架。
基于这个现状NKDBSec将原版Rosetta框架进行了底层改造使之可以更加适用于数据联合分析与数据库操作等场景。改造后的框架基础算子性能得到了非常大的提升。NKDBSec将其基本算子进行了一个对比测试测试结果详见下表 基于这个现状NKDBSec将原版Rosetta框架进行了底层改造使之可以更加适用于数据联合分析与数据库操作等场景。改造后的框架基础算子性能得到了非常大的提升。NKDBSec将其基本算子进行了一个对比测试测试结果详见下表
测试硬件配置Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz 20核 40线 1000M带宽 测试硬件配置Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz 20核 40线 1000M带宽
测试数量级10^7 测试数量级10^7(基础运算千万级别)
| **测试算法** | **Rosetta** | **NKDBSec** | | **测试算法** | **Rosetta** | **NKDBSec** |
| :-------: | :-------: | :-------: | | :-------: | :-------: | :-------: |
@ -204,23 +206,69 @@ python3 test3.py
## 接口说明 ## 接口说明
目前NKDBSec提供如下基本运算接口用户可以在此之上调用接口实现相应的MPC任务。 目前NKDBSec提供如下基本运算接口用户可以在此之上调用接口实现相应的MPC任务。
| **操作类型** | **运算符** | **调用方式** | **1、操作类型四则运算**
| ------ | ------ | ------ | 1加法运算OP_ADD调用方式
| 加法操作 | OP_ADD | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_ADD) | ```python
| 减法操作 | OP_SUB | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_SUB) | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_ADD)
| 乘法操作 | OP_MUL | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_MUL) | ```
| 除法操作 | OP_DIV | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_DIV) | 2减法运算OP_SUB调用方式
| 模运算 | OP_MOD | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_MOD) | ```python
| 小于运算 | OP_LESS | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_LESS) | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_SUB)
| 大于运算 | OP_GREATER | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_GREATER) | ```
| 小于等于运算 | OP_LESSEQUAL | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_LESSEQUAL) | 3乘法运算OP_MUL调用方式
| 大于等于运算 | OP_GREATEREQUAL | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_GREATEREQUAL) | ```python
| 等于运算 | OP_EQUAL | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_EQUAL) | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_MUL)
| 不等运算 | OP_NOTEQUAL | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_NOTEQUAL) | ```
| 与 | OP_AND | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_AND) | 4除法运算OP_DIV调用方式
| 或 | OP_OR | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_OR) | ```python
| 非 | OP_NOT | dbsecmpc.opvector(rtx, dbsecmpc.OP_NOT) | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_DIV)
| 异或 | OP_XOR | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_XOR) | ```
5模运算OP_MOD调用方式
```python
dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_MOD)
```
**2、操作类型比较操作**
1大于比较OP_GREATER调用方式
```python
dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_GREATER)
```
2小于比较OP_LESS调用方式
```python
dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_LESS)
```
3大于等于比较OP_GREATEREQUAL调用方式
```python
dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_GREATEREQUAL)
```
4小于等于比较OP_LESSEQUAL调用方式
```python
dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_LESSEQUAL)
```
5等于比较OP_EQUAL调用方式
```python
dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_EQUAL)
```
6不等比较OP_NOTEQUAL调用方式
```python
dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_NOTEQUAL)
```
**3、逻辑运算**
1与运算OP_AND调用方式
```python
dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_AND)
```
2或运算OP_OR调用方式
```python
dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_OR)
```
3非运算OP_NOT调用方式
```python
dbsecmpc.opvector(rtx, dbsecmpc.OP_NOT)
```
4异或运算OP_XOR调用方式
```python
dbsecmpc.opvector(rtx, dbsecmpc.OP_XOR)
```
## 引用方式 ## 引用方式
如果需要引用我们的项目,可以参考如下引用格式。 如果需要引用我们的项目,可以参考如下引用格式。