加密数据的机器学习框架。
tf-encrypted的Python项目详细描述
tf encrypted是tensorflow中一个用于加密机器学习的框架。它看起来和感觉像tensorflow,利用keras api的易用性,同时通过安全的多方计算和同态加密实现对加密数据的训练和预测。tf encrypted旨在使隐私保护机器学习变得容易获得,而不需要密码学、分布式系统或高性能计算方面的专业知识。
如需有关background material的详细信息,请参阅下文,浏览examples,或访问documentation以了解有关如何使用库的详细信息。我们也非常欢迎您加入我们的Slack channel来回答有关使用和开发的所有问题。
安装
tf encrypted作为支持python 3.5+和tensorflow 1.12.0+的PyPI包提供:
pip3 install tf-encrypted
创建conda环境以运行tf加密代码可以使用:
conda create -n tfe python=3.6
conda activate tfe
conda install tensorflow notebook
pip install tf-encrypted
或者,也可以使用以下命令从源安装:
git clone https://github.com/tf-encrypted/tf-encrypted.git
cd tf-encrypted
pip3 install -e .
后者在尚未编译pip包但development也需要pip包的平台上非常有用。请注意,这将为您提供一个有效的基本安装,但是还需要一些步骤来匹配pip包中提供的版本的性能和安全性,请参见installation instructions。
用法
下面是使用tf encrypted对加密数据进行简单matmul的示例:
importtensorflowastfimporttf_encryptedastfe@tfe.local_computation('input-provider')defprovide_input():# normal TensorFlow operations can be run locally# as part of defining a private input, in this# case on the machine of the input providerreturntf.ones(shape=(5,10))# define inputsw=tfe.define_private_variable(tf.ones(shape=(10,10)))x=provide_input()# define computationy=tfe.matmul(x,w)withtfe.Session()assess:# initialize variablessess.run(tfe.global_variables_initializer())# reveal resultresult=sess.run(y.reveal())
有关详细信息,请查看documentation或examples。
路线图
结合隐私和机器学习的高级api。到目前为止,tf encrypted主要关注其低级接口,但现在是时候弄清楚当隐私进入图片时,它对keras等接口意味着什么了。
与tensorflow的紧密集成。这包括与即将推出的TensorFlow2.0保持一致,以及找出TFEncrypted如何与诸如TF Privacy和TF Federated等相关项目紧密协作。
支持第三方库。虽然tf encrypted有自己的安全计算实现,但是还有其他的excellent libraries可用于安全计算和同态加密。我们想把这些带到船上,为Tensorflow提供一座桥。
背景和进一步阅读
以下文本提供了该项目的进一步深入介绍:
- Growing TF Encrypted概述了路线图,并解释了为什么tf encrypted是一个社区项目
- Private Machine Learning in TensorFlow using Secure Computation进一步阐述了该方法的优点,概述了安全计算协议的适应性,并报告了具体的性能数字
- Secure Computations as Dataflow Programs描述了最初的动机和实现
贡献
查看我们的contribution guide了解更多信息,并毫不犹豫地发送拉取请求、打开问题或寻求帮助!你可以通过GitHub或者通过joining我们的Slack channel来实现。
组织贡献
我们非常感谢下列组织所作的重大贡献!
项目状态
tf加密是一种实验性软件,目前不打算在生产环境中使用。重点是构建底层的原语和技术,一些实际的安全问题将推迟到稍后的阶段。但是,要注意确保这些问题都不是不能根据需要加以解决的根本问题。
已知限制
- TensorFlow的网络子系统的元素似乎没有对恶意用户进行足够的强化。代理或其他访问过滤手段可能足以减轻这一点。
支架
请打开issue,直接在Slack上联系,或向contact@tf-encrypted.io发送电子邮件。
许可证
在2.0版apache许可下授权(参见LICENSE或http://www.apache.org/licenses/LICENSE-2.0)。版权在NOTICE中指定。