
注意:此项目已暂停。
PrivacyRaven 是一个用于深度学习系统的隐私测试库。 您可以用它来确定模型对不同隐私攻击的敏感性;评估隐私保护机器学习技术;开发新颖的隐私度量与攻击方法;以及将攻击方法重新用于数据溯源和其他用例。
PrivacyRaven 支持仅标签的黑盒模型提取、成员推断攻击,以及(即将推出的)模型反演攻击。 我们还计划加入差分隐私验证、自动化超参数优化、更多类别的攻击以及其他功能;更多信息请参阅 GitHub issues。 PrivacyRaven 曾在 OpenMined 隐私会议、Empire Hacking 和 Trail of Bits 博客 上亮相。
深度学习系统,尤其是神经网络,已在广泛的应用场景中大量普及,包括人脸识别和医学诊断等对隐私敏感的用例。 然而,这些模型容易受到隐私攻击,这些攻击既针对模型的知识产权,也针对训练数据的机密性。 近期的文献展现了各种系统上隐私攻击与防御之间的军备竞赛。 而迄今为止,工程师和研究人员一直缺乏应对这一趋势所需的隐私分析工具。 因此,我们开发了 PrivacyRaven——一个机器学习保障工具,其目标是:
PrivacyRaven 将每次攻击划分为多个可定制且可优化的阶段。 每种攻击还提供了不同的接口。 下面展示的接口称为核心接口。 PrivacyRaven 还针对文献中的特定攻击配置提供了封装,并具备运行全部攻击的功能。
以下是在 PrivacyRaven 中启动模型提取攻击的方法:
#examples/extract_mnist_gpu.py
import privacyraven as pr
from privacyraven.utils.data import get_emnist_data
from privacyraven.extraction.core import ModelExtractionAttack
from privacyraven.utils.query import get_target
from privacyraven.models.victim import train_four_layer_mnist_victim
from privacyraven.models.four_layer import FourLayerClassifier
# Create a query function for a target PyTorch Lightning model
model = train_four_layer_mnist_victim()
def query_mnist(input_data):
# PrivacyRaven provides built-in query functions
return get_target(model, input_data, (1, 28, 28, 1))
# Obtain seed (or public) data to be used in extraction
emnist_train, emnist_test = get_emnist_data()
# Run a model extraction attack
attack = ModelExtractionAttack(
query_mnist, # query function
200, # query limit
(1, 28, 28, 1), # victim input shape
10, # number of targets
(3, 1, 28, 28), # substitute input shape
"copycat", # synthesizer name
FourLayerClassifier, # substitute model architecture
784, # substitute input size
emnist_train, # seed train data
emnist_test, # seed test data
)
由于对受害者模型的唯一主要要求是提供查询函数,因此无论模型使用何种框架或分发方式,PrivacyRaven 都可以用于攻击各种模型。
其他类别的攻击也可以类似方式启动。有关更多信息,请参阅 examples 文件夹。
poetry updatepoetry install。如果您想使用 Jupyter Notebook 环境,请依次运行 poetry shell 和 jupyter notebook。
此外,如果您希望在 Docker 容器中运行 PrivacyRaven,请依次运行 chmod +x build.sh 和 ./build.sh。请注意,根据您分配给 Docker 的资源量,PrivacyRaven 的性能可能会受到显著影响。
如果您在使用或扩展 PrivacyRaven 时需要帮助,欢迎加入我们在 Empire Hacking 中的 #privacyraven 频道。 官方 pip 版本即将发布。
请注意,PrivacyRaven 仍处于开发初期,正在快速变化中。建议用户频繁更新,并避免将 PrivacyRaven 应用于关键场景。
PrivacyRaven 仍在开发中,尚未完成。 无论您是想加入新的合成技术,还是让攻击函数的可读性更强,我们都欢迎您以任何方式做出贡献。 请访问 CONTRIBUTING.md 以开始。
在不同文化中,渡鸦历来与各种概念相关联。 其中,渡鸦通常与预言和洞察相关联。 因此,我们很自然地将该工具命名为 PrivacyRaven,因为它旨在为深度学习的隐私提供洞察。
核心维护者包括:
本库以 Apache License 2.0 许可提供。 如需条款的例外情况,请联系我们。
虽然 PrivacyRaven 建立在大量关于攻击机器学习隐私的研究成果之上,但对 PrivacyRaven 的开发最为关键的研究包括:
以下是讨论 PrivacyRaven 的出版物、演讲、博客文章和其他公开媒体的列表。