OpenMined/TenSEAL

A library for doing homomorphic encryption operations on tensors

何を解決するか

TenSEALは、暗号化されたデータ上で計算を実行できるようにします。機密情報(医療記録、金融データ、個人統計など)の機械学習やその他のデータ処理を行う場合、通常は生のデータを公開する必要があります。TenSEALは同型暗号を使用することで、加算、乗算、ドット積、行列積などの算術演算を暗号化されたテンソル上で直接実行でき、最終的な結果のみを復号します。これにより、処理中でもデータのプライバシーを保つことができます。

動作方法

TenSEALは、C++で作られた同型暗号ライブラリであるMicrosoft SEALの上に構築されています。Python APIを提供しており使いやすく、処理の大部分はC++で高速に実行されます。以下の2つの暗号化方式をサポートしています:

  • BFV:整数(正確な算術)
  • CKKS:実数(近似算術、機械学習に最適)

多項式モジュラス次数や係数モジュラスサイズなどのパラメータで暗号化コンテキストを作成し、セキュリティと実行可能な演算の連鎖数を制御します。その後、ベクトルやテンソル(NumPy配列など)を暗号化し、要素ごとの演算、ドット積、行列積を暗号化されたオブジェクト上で実行できます。コンテキストはシリアライズ可能で、鍵や暗号化データを保存できます。内部では、TenSEALはSEALの低レベルAPIをラップし、N次元の形状、ブロードキャスト、転置をサポートするテンソル層を追加しています。

対象ユーザー

TenSEALは、プライバシー保護型機械学習に取り組む開発者や研究者を対象としています。機密データ上でモデルの学習や評価を行う必要がある場合、TenSEALは同型暗号への便利なPythonインターフェースを提供します。また、低レベルのC++コードを書かずに安全な計算を実験したい人にも役立ちます。

特徴

  • BFV(正確な整数)とCKKS(近似実数)の両方の暗号化方式をサポート
  • 暗号化されたテンソル上で要素ごとの加算、減算、乗算、ドット積、行列積を実行可能
  • N次元テンソルをreshape、broadcast、transpose操作で扱える
  • コンテキスト、鍵、暗号化テンソルのシリアライズをサポートし、保存や転送が可能
  • 高度なユーザー向けに tenseal.sealapi でMicrosoft SEALの完全なAPIを公開
  • 各マージ後に main に自動的にベンチマークが公開される
  • 暗号化データ上のロジスティック回帰とMNISTに対する暗号化畳み込みのチュートリアル付き

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト