diff --git a/README.md b/README.md index 98ecbd0..3c3501d 100644 --- a/README.md +++ b/README.md @@ -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将其基本算子进行了一个对比测试,测试结果详见下表: 测试硬件配置:Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz 20核 40线 1000M带宽 -测试数量级:10^7 +测试数量级:10^7(基础运算千万级别) | **测试算法** | **Rosetta** | **NKDBSec** | | :-------: | :-------: | :-------: | @@ -204,23 +206,69 @@ python3 test3.py ## 接口说明 目前NKDBSec提供如下基本运算接口,用户可以在此之上调用接口,实现相应的MPC任务。 -| **操作类型** | **运算符** | **调用方式** | -| ------ | ------ | ------ | -| 加法操作 | OP_ADD | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_ADD) | -| 减法操作 | OP_SUB | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_SUB) | -| 乘法操作 | OP_MUL | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_MUL) | -| 除法操作 | OP_DIV | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_DIV) | -| 模运算 | OP_MOD | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_MOD) | -| 小于运算 | OP_LESS | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_LESS) | -| 大于运算 | OP_GREATER | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_GREATER) | -| 小于等于运算 | OP_LESSEQUAL | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_LESSEQUAL) | -| 大于等于运算 | OP_GREATEREQUAL | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_GREATEREQUAL) | -| 等于运算 | OP_EQUAL | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_EQUAL) | -| 不等运算 | OP_NOTEQUAL | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_NOTEQUAL) | -| 与 | OP_AND | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_AND) | -| 或 | OP_OR | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_OR) | -| 非 | OP_NOT | dbsecmpc.opvector(rtx, dbsecmpc.OP_NOT) | -| 异或 | OP_XOR | dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_XOR) | +**1、操作类型:四则运算** +(1)加法运算:OP_ADD,调用方式: +```python +dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_ADD) +``` +(2)减法运算:OP_SUB,调用方式: +```python +dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_SUB) +``` +(3)乘法运算:OP_MUL,调用方式: +```python +dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_MUL) +``` +(4)除法运算:OP_DIV,调用方式: +```python +dbsecmpc.opvector(rtx, rty, dbsecmpc.OP_DIV) +``` +(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) +``` ## 引用方式 如果需要引用我们的项目,可以参考如下引用格式。