分布式laplace扰动算法的客户机/服务器
psi-dlpa的Python项目详细描述
提供分布式laplace的客户机和服务器应用程序 扰动算法(dlpa)。
dlpa由Vibhor Rastogi和 Suman Nath 在“Differentially Private Aggregation of Distributed Time-Series with Transformation and Encryption”中,以及 发表于SIGMOD 2010。
客户机
此包具有客户端类dlpa.DLPAClient。创建 实例中,构造函数有两个参数:
- 主机:DLPA服务器的地址,
- 端口:DLPA服务器的端口号。
尽管客户机类实现了在dlpa中定义的几个协议, get_key和encrypt_noisy_sum是用户可能使用的唯一方法 有兴趣。
get_key向服务器请求客户端密钥。需要一个 参数,客户端ID,并返回客户端密钥对象。
另一个方法encrypt_noisy_sum运行entryp noisy sum 协议,是dlpa的关键协议。它需要以下四个 参数:
- CK:客户端密钥。
- 客户ID:客户ID。
- 值:通过加密和发送到服务器的标量或矢量 协议。
- epsilon:产生拉普拉斯噪声的参数。
并在附加请求时返回一个时隙。
服务器
dlpa-server命令运行dlpa的服务器应用程序。以下 此命令的用法:
usage: dlpa-server [-h] --port PORT --clients NCLIENT [--max-workers MAX_WORKERS] [--key-length M_LENGTH] [--time-span SPAN] optional arguments: -h, --help show this help message and exit --port PORT Listening port number. --clients NCLIENT The number of clients. --max-workers MAX_WORKERS The maximum number of workers (default: 10). --key-length M_LENGTH Bit length of the secret key (default: 2048). --time-span SPAN Second of one time slot.
请注意,端口号和客户端数是必需的 论据。
您还可以使用 dlpa.server函数。函数接受以下关键字 参数:
- 端口:创建的服务器侦听的端口号。 最大工人人数。
- nclient:连接此服务器的客户端数。
- m_length:密钥的位长度。
并返回一个服务器对象,该对象有一个方法stop(t)来停止 给定时间内的服务器t。打电话的人负责打电话 关闭服务器的方法。
安装
$ pip install --upgrade psi-dlpa
另外,如果您安装 gmpy2,计算时间为 减少。要在mac中安装gmpy2,还需要安装mpc、mpfr, 还有Libmp。这三个包裹有 Homebrew。
许可证
本软件在GNU通用公共许可版本下发布 3,请参见COPYING了解更多详细信息。
函数powmod、invert和getprimeover,定义于 src/dlpa/util.py由data61 csiro生成,并在 GPLv3级。原始源代码是 here。