OpenMined/TenSEAL
A library for doing homomorphic encryption operations on tensors
해결하는 문제
TenSEAL은 데이터를 복호화하지 않고도 암호화된 데이터 위에서 계산을 수행할 수 있게 해줍니다. 민감한 정보(의료 기록, 금융 데이터, 개인 통계 등)에 대해 머신러닝이나 기타 데이터 처리를 수행하고자 할 때, 일반적으로 원시 데이터를 노출해야 하지만, TenSEAL은 동형 암호화를 사용하여 덧셈, 곱셈, 내적, 행렬 곱셈과 같은 산술 연산을 암호화된 텐서 위에서 직접 수행할 수 있으며, 최종 결과만 복호화합니다. 이로 인해 데이터가 처리되는 동안에도 개인정보를 보호할 수 있습니다.
작동 방식
TenSEAL은 C++ 기반의 동형 암호화 라이브러리인 Microsoft SEAL 위에 구축되었습니다. 사용이 쉬운 Python API를 제공하지만, 처리의 대부분은 속도를 위해 C++에서 수행됩니다. 다음 두 가지 암호화 방식을 지원합니다:
- BFV: 정수(정확한 산술)
- CKKS: 실수(근사 산술, 머신러닝에 적합)
다항식 모듈러스 차수와 계수 모듈러스 크기와 같은 매개변수로 암호화 컨텍스트를 생성하여 보안 수준과 체인 가능한 연산 수를 제어합니다. 이후 NumPy 배열과 같은 벡터나 텐서를 암호화하고, 요소별 연산, 내적, 행렬 곱셈을 암호화된 객체에서 실행할 수 있습니다. 컨텍스트는 직렬화 가능하여 키와 암호화된 데이터를 저장할 수 있습니다. 내부적으로 TenSEAL은 SEAL의 저수준 API를 래핑하고, N차원 형상, 브로드캐스트, 전치를 지원하는 텐서 계층을 추가합니다.
대상 사용자
TenSEAL은 개인정보 보호형 머신러닝에 종사하는 개발자와 연구자를 대상으로 합니다. 민감한 데이터 위에서 모델을 학습하거나 평가해야 하지만 그 데이터를 암호화한 상태로 유지하고 싶은 경우, TenSEAL은 동형 암호화에 대한 편리한 Python 인터페이스를 제공합니다. 또한, 저수준 C++ 코드를 작성하지 않고도 안전한 계산을 실험하고 싶은 누구에게나 유용합니다.
주요 특징
- BFV(정확한 정수)와 CKKS(근사 실수) 암호화 방식 모두 지원
- 암호화된 텐서에서 요소별 덧셈, 뺄셈, 곱셈, 내적, 행렬 곱셈 제공
- reshape, broadcast, transpose 연산을 지원하는 N차원 텐서 처리
- 컨텍스트, 키, 암호화된 텐서의 직렬화를 통해 저장 및 전송 가능
- 고급 사용자를 위해
tenseal.sealapi를 통해 Microsoft SEAL의 전체 API 노출 - 각 마ージ 후
main브랜치에 자동으로 벤치마크 게시 - 암호화된 데이터를 이용한 로지스틱 회귀 및 MNIST에 대한 암호화된 컨볼루션을 위한 튜토리얼 포함
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트