Repolode
microsoft

microsoft/SEAL

Microsoft SEALは、暗号化された数値を復号せずに加算・乗算できる、オープンソースのC++同態暗号ライブラリです。

スター
4,054
フォーク
779
未解決の Issue
110
最終コミット
一昨日

これは何?

Microsoft SEALは、MicrosoftのCryptography Research Groupが開発する同態暗号ライブラリです。暗号化されたデータを使ってプログラムで計算できるため、クラウドサービスは内容を読み取れない値を処理でき、結果を復号できるのは秘密鍵を持つデータ所有者だけです。暗号化された整数や実数に対する加算と乗算に対応しています。

整数の正確な剰余演算にはBFVおよびBGV方式、実数や複素数の近似演算にはCKKS方式を実装しており、暗号化された値の合計や機械学習モデルの評価などに適しています。標準C++17で記述され、NuGetパッケージとして配布される.NETラッパーも含まれます。CMake、vcpkg、Homebrewでビルドでき、Intel HEXL、Zstandard、ZLIBもオプションで利用できます。

同態暗号は計算コストが高く、対応する操作も限られているため、SEALは汎用計算ではなく、プログラム内のプライバシーが特に重要な部分を対象としています。本番コードを書く前に、ドキュメントのサンプルを注意深く確認することがプロジェクトから推奨されています。

主な機能

  • 01整数(BFV、BGV)および実数・複素数(CKKS)の暗号化データに対する加算と乗算。
  • 02CMakeでビルドする標準C++17のコードベース。Windows、Linux、macOS、Android、iOS、WebAssemblyに対応。
  • 03NuGetパッケージとして提供される公式.NETラッパー。
  • 04AVX-512プロセッサでIntel HEXLによるオプションの高速化が可能。
  • 05暗号文と鍵の圧縮・ビットパック形式でのシリアライズ。

ユースケース

  • クラウドサービスで、暗号化された機密データの合計や統計量を計算する。
  • プライバシーを保護しながら、暗号化された入力に対して機械学習モデルを評価する。
  • プライバシー保護計算プロトコルを研究・試作する。
  • .NETまたはC++アプリケーションに暗号化計算機能を追加する。

クイックスタート

  1. 1

    vcpkgでインストール(ほとんどのプラットフォームで利用可能)

  2. 2

    macOSではHomebrewでインストール

  3. 3

    FreeBSDではpkgツールでインストール

    pkg install seal
  4. 4

    .NETではMicrosoft.Research.SEALNetのNuGetパッケージをインストール

使う前に知っておきたいこと

  • 暗号化されたデータに対してサポートされるのは加算と乗算のみで、比較や分岐は実行できません。
  • CKKS方式では近似値しか得られないため、正確な値が必要な用途には適していません。
  • Microsoft SEALは習得の難易度が高く、準同型暗号の概念を理解する必要があります。
  • 準同型暗号は性能への負荷が大きく、暗号文のサイズも大幅に増加します。また、多くの方式は従来の暗号化よりセキュリティ保証が弱くなります。

トピック

よくある質問

SEAL とは?
Microsoft SEALは、暗号化された数値を復号せずに加算・乗算できる、オープンソースのC++同態暗号ライブラリです。 Microsoft SEALは、MicrosoftのCryptography Research Groupが開発する同態暗号ライブラリです。暗号化されたデータを使ってプログラムで計算できるため、クラウドサービスは内容を読み取れない値を処理でき、結果を復号できるのは秘密鍵を持つデータ所有者だけです。暗号化された整数や実数に対する加算と乗算に対応しています。
SEAL は無料で使えますか?ライセンスは?
SEAL は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
SEAL は今もメンテナンスされていますか?
活発にメンテナンス中。SEAL の最終コミットは 2026年10月19日 です。
SEAL は何に使えますか?
クラウドサービスで、暗号化された機密データの合計や統計量を計算する。 プライバシーを保護しながら、暗号化された入力に対して機械学習モデルを評価する。 プライバシー保護計算プロトコルを研究・試作する。 .NETまたはC++アプリケーションに暗号化計算機能を追加する。
SEAL のインストール方法は?
vcpkgでインストール(ほとんどのプラットフォームで利用可能) macOSではHomebrewでインストール FreeBSDではpkgツールでインストール: pkg install seal .NETではMicrosoft.Research.SEALNetのNuGetパッケージをインストール
SEAL はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/microsoft/SEAL

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト