
딥러닝 시스템용 프라이버시 테스트 라이브러리로, 멤버십 추론, 모델 추출, 모델 반전 공격에 대한 취약성 평가와 프라이버시 보호 기법 평가를 지원합니다.

참고: 이 프로젝트는 일시 중단 상태입니다.
PrivacyRaven은 딥러닝 시스템을 위한 프라이버시 테스트 라이브러리입니다. 이를 사용하여 모델이 다양한 프라이버시 공격에 얼마나 취약한지 판단하고, 프라이버시 보존 머신러닝 기법을 평가하며, 새로운 프라이버시 메트릭과 공격을 개발하고, 데이터 출처(data provenance) 및 기타 사용 사례를 위해 공격을 재활용할 수 있습니다.
PrivacyRaven은 라벨 전용 블랙박스 모델 추출, 멤버십 추론, 그리고 (곧 제공될) 모델 역전 공격을 지원합니다. 또한 차분 프라이버시 검증, 자동 하이퍼파라미터 최적화, 더 많은 공격 클래스 및 기타 기능을 포함할 계획입니다. 자세한 내용은 GitHub issues를 참조하세요. PrivacyRaven은 OpenMined Privacy Conference, Empire Hacking, Trail of Bits 블로그에서 소개된 바 있습니다.
딥러닝 시스템, 특히 신경망은 얼굴 인식 및 의료 진단과 같은 프라이버시에 민감한 사용 사례를 포함한 광범위한 애플리케이션에 널리 보급되었습니다. 하지만 이러한 모델은 모델의 지적 재산과 훈련 데이터의 기밀성을 모두 노리는 프라이버시 공격에 취약합니다. 최근 문헌에서는 다양한 시스템에서 프라이버시 공격과 방어 사이의 군비 경쟁이 목격되었습니다. 그리고 지금까지 엔지니어와 연구자들은 이러한 추세에 맞설 수 있는 프라이버시 분석 도구를 갖추지 못했습니다. 이에 따라 우리는 다음을 목표로 하는 머신러닝 보증 도구인 PrivacyRaven을 개발했습니다:
PrivacyRaven은 각 공격을 여러 개의 사용자 지정 및 최적화 가능한 단계로 분할합니다. 또한 각 공격에 대해 서로 다른 인터페이스가 제공됩니다. 아래 표시된 인터페이스는 코어 인터페이스라고 합니다. PrivacyRaven은 또한 문헌에 나와 있는 특정 공격 구성에 대한 래퍼와 모든 공격 실행(run-all-attacks) 기능을 제공합니다.
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 update를 실행합니다.poetry 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을 다루는 논문, 발표, 블로그 게시물 및 기타 공개 매체 목록입니다.