在tensorflow之上的一层,用于对加密数据进行机器学习。
tf-encrypt的Python项目详细描述
tf加密
tf encrypted是一个python库,它构建在TensorFlow之上,供研究人员和实践者试验保护隐私的机器学习。它提供了一个类似于tensorflow的接口,目的是在不首先成为机器学习、密码学、分布式系统和高性能计算方面的专家的情况下,使该技术随时可用。
特别是,图书馆的重点是:
- :API及其底层设计理念使得易于启动、使用和将隐私保护技术集成到预先存在的机器学习过程中。
- 可扩展性:该体系结构支持并鼓励对新的密码协议和机器学习算法进行实验和基准测试。
- performance:为基于tensor的应用程序进行优化并依赖tensorflow的后端意味着运行时性能可以与专门的独立框架相媲美。
- community:该项目的主要目标是推动技术的发展,鼓励在专有和封闭的解决方案上进行协作和开源。
- 安全性:根据安全性的强概念评估加密协议,并突出显示known limitations。
有关更多background material的信息,请参见下面的内容,或者访问documentation以了解有关如何使用库的更多信息。
该项目在最初的实现之后,得益于几个贡献者的努力,其中最显著的是Dropout Labs和OpenMined社区的成员。有关进一步的details,请参见下文。
安装和使用
tf encrypted作为支持python 3.5+的PyPI包提供,可以使用pip:
$ pip install tf-encrypted
下面是使用tf encrypted对加密数据进行简单matmul的示例:
importtensorflowastfimporttf_encryptedastfedefprovide_input():# local 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=tfe.define_private_input('input-provider',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中的完整入门指南。
背景和进一步阅读
以下文本提供了该项目的进一步深入介绍:
- Secure Computations as Dataflow Programs描述了最初的动机和实现
- Private Machine Learning in TensorFlow using Secure Computation进一步阐述了该方法的优点,概述了安全计算协议的适应性,并报告了具体的性能数字
项目状态
tf加密是一种实验性软件,目前不打算在生产环境中使用。重点是构建底层原语和技术,并在稍后阶段提出一些实际的安全问题。但是,要注意确保这些问题都不是不能根据需要加以解决的根本问题。
已知限制
- TensorFlow的网络子系统的元素似乎没有对恶意用户进行足够的强化。代理或其他访问过滤手段可能足以减轻这一点。
- tensorflow中提供的伪随机生成器在密码上不强。自定义操作可以很容易地用来解决这个问题。
贡献
不要犹豫发送一个请求,打开一个问题,或寻求帮助!
几个人已经对这个图书馆的发展产生了影响(按字母顺序排列):
- Ben DeCoste(辍学实验室)
- Yann Dupis(辍学实验室)
- Morgan Giraud(在辍学实验室时)
- Ian Livingstone(辍学实验室)
- Jason Mancuso(辍学实验室)
- Justin Patriquin(辍学实验室)
- Andrew Trask(打开)
- Koen van der Veen(打开)
一些公司投入了大量资源:
- Dropout Labs继续赞助大量的研究和工程
- OpenMined是他为最初的想法奠定了基础,并继续支持讨论和指导
许可证
在2.0版apache许可下授权(参见LICENSE或http://www.apache.org/licenses/LICENSE-2.0)。版权在NOTICE中指定。