C/C++/Python言語でおすすめの準同型暗号ライブラリを教えて!
こういった悩みにお答えします.
本記事の信頼性
- リアルタイムシステムの研究歴12年.
- 東大教員の時に,英語でOS(Linuxカーネル)の授業.
- 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
- プログラミング歴15年以上,習得している言語: C/C++,Python,Solidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Verse(UEFN), Assembler (x64,ARM).
- 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」をGitHubにオープンソースとして公開.
- 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
- 最近は自然言語処理AIとイーサリアムに関する有益な情報発信に従事.
- (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
- (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.
こういった私から学べます.
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!
まずはC/C++/Python言語を学びたいあなたはこちらからどうぞ.
目次
【C/C++/Python言語】おすすめの準同型暗号ライブラリ
C/C++/Python言語でおすすめの準同型暗号ライブラリを紹介します.
準同型暗号とは,準同型性を有する特徴を持ち,暗号化したまま計算できる暗号方式(暗号演算,秘密計算)の一つです.
準同型暗号ライブラリのリストはこちらにあります.
準同型暗号の説明は,こちらの動画がわかりやすいです.
スライドはこちらです.
現在,完全準同型暗号(FHE:Fully Homomorphic Encryption)は第1世代~第4世代まで提案されています.
完全準同型暗号は,主にBootstrappingを利用して加算と乗算が任意回実行できる準同型暗号のことです.
※Bootstrapping以外の方法もあります.
完全準同型暗号の世代と代表的な方式は以下になります.
- 第1世代の完全準同型暗号
- 第2世代の完全準同型暗号
- BGV方式「Fully Homomorphic Encryption without Bootstrapping」,BV方式「Efficient Fully Homomorphic Encryption from (Standard) LWE」の技術をベース
- LTV方式「On-the-Fly Multiparty Computation on the Cloud via Multikey Fully Homomorphic Encryption」
- BFV方式「Somewhat Practical Fully Homomorphic Encryption」
- BLLN方式「Improved Security for a Ring-Based Fully Homomorphic Encryption Scheme」
- 第3世代の完全準同型暗号
- 第4世代の完全準同型暗号
BV方式の論文「Efficient Fully Homomorphic Encryption from (Standard) LWE」とBGV方式の論文をベースとした論文「(Leveled) Fully Homomorphic Encryption without Bootstrapping」は,2022年のゲーデル賞を受賞しました!
ゲーデル賞は,チューリング賞と並ぶコンピュータサイエンスのノーベル賞のようなものです.
準同型暗号とブロックチェーン
準同型暗号とブロックチェーンを組み合わせる研究開発は広く行われています.
- 2018年:プライバシーを考慮したブロックチェーンの取引者間事前合意プロトコル
- 2018年:Privacy Preserving in Blockchain Based on Partial Homomorphic Encryption System for AI Applications
- 2021年:Circuit Copyright Blockchain: Blockchain-Based Homomorphic Encryption for IP Circuit Protection
仮想通貨ビットコインやイーサリアム,ブロックチェーンを知りたいあなたはこちらからどうぞ.
C言語で仮想通貨で利用される暗号ライブラリを知りたいあなたはこちらからどうぞ.
【C++言語】Microsoft SEAL
Microsoft SEALは,マイクロソフト社のCryptography and Privacy Research Groupによって開発されたC++言語の準同型暗号ライブラリです.
Microsoft SEALは,様々な環境で簡単にコンパイル・実行することができます.
Microsoft SEALがサポートしている準同型暗号は以下になります.
- 第2世代の完全準同型暗号:BFV,BGV
- 第4世代の完全準同型暗号:CKKS
1 |
$ git clone https://github.com/microsoft/SEAL |
Microsoft SEALのライセンスは,MIT Licenseです.
2021年3月にIntelが完全準同型暗号に関するDARPAのプログラムでMicrosoftと協業することを発表しました.
IntelとMicrosoftは準同型暗号のASICを共同開発します.
準同型暗号のASICにより,秘密計算の処理時間を5桁短縮することを目指します.
準同型暗号のASICは,準同型暗号の処理時間が長いという課題を解決し,実用化に大きく貢献することが期待できます.
※Microsoft SEALは,準同型暗号のASICをサポートすると思われます.
【Python言語】SEAL-Python
SEAL-Pythonは,Microsoft SEALライブラリのPythonバインディングです.
Pythonバインディングには,PythonでC++の型を公開したり,逆に既存のC++コードのPythonバインディングを作成するための,軽量なヘッダのみのライブラリ「pybind11」を利用しています.
1 |
$ git clone https://github.com/Huelse/SEAL-Python/ |
SEAL-Pythonのライセンスは,MIT Licenseです.
【Python言語】TenSEAL
TenSEALは,テンソルに対して準同型暗号を行うためのライブラリで,Microsoft SEALをベースに構築されています.
TenSEALは,Python言語による使い勝手の良さと,C++言語による効率的な実装を両立しています.
TenSEALは,以下のライブラリと簡単に連携できます.
- MTCNN:顔検出ライブラリ
- FaceNet:顔認証ライブラリ
- TensorFlow:テンソルライブラリ
1 |
$ git clone https://github.com/OpenMined/TenSEAL |
TenSEALのライセンスは,Apache License 2.0です.
【C++言語】PALISADE
PALISADEは,C++言語の一般的な準同型暗号ライブラリです.
PALISADEは,以下の準同型暗号の機能を効率的に実装しています.
- 第2世代の完全準同型暗号:BFV,BGV
- 第3世代の完全準同型暗号:FHEW,TFHE
- 第4世代の完全準同型暗号:CKKS
- マルチキー完全準同型暗号
- スレッショルド完全準同型暗号:BFV,BGV,CKKS
- Proxy Re-Encryption:BFV,BGV,CKKS
Microsoft SEALと比較して,PALISADEのメリットは,多くの完全準同型暗号の方式やマルチキー完全準同型暗号をサポートしていることです.
PALISADEのデメリットは,TenSEALのようなテンソルライブラリと連携できないことです(2022年6月現在).
1 |
$ git clone https://gitlab.com/palisade/palisade-release |
PALISADEのライセンスは,2条項BSD Licenseです.
【C++言語】HElib
HElibは,準同型暗号を実装したC++言語のライブラリです.
HElibがサポートしている完全準同型暗号は以下になります.
- 第2世代の完全準同型暗号:BGV
- 第4世代の完全準同型暗号:CKKS
1 |
$ git clone https://github.com/homenc/HElib |
HElibのライセンスは,Apache License 2.0です.
【C++言語】HEAAN
HEAANは,第4世代の完全準同型暗号「CKKS」の提案者が開発したC++言語のライブラリです.
CKKSを深く理解したい場合におすすめです.
1 |
$ git clone https://github.com/snucrypto/HEAAN |
HEAANのライセンスは,CC BY-NC 3.0です.
【C言語】libScarab
libScarabは,2011年に開発された第1世代の完全準同型暗号「SV方式」をサポートしたC言語のライブラリです.
おそらく完全準同型暗号を最初にサポートしたライブラリだと思われます.
1 |
$ git clone https://github.com/hcrypt-project/libScarab |
libScarabのライセンスは,MIT Licenseです(教育または学術的な用途限定).
参考:【Python言語】秘匿マルチパーティ計算フレームワークCrypTen
準同型暗号と関連する手法で,秘匿マルチパーティ計算(秘密分散型のマルチパーティ計算)があります.
秘匿マルチパーティ計算のフレームワークとしてMeta(旧Facebook)が開発したCrypTenがあります.
CrypTenは,機械学習の研究者が安全な計算技術にアクセスできるようにするために,PyTorch上で構築されたプライバシー保護機械学習のためのPython言語のフレームワークです.
1 |
$ git clone https://github.com/facebookresearch/CrypTen |
CrypTenのライセンスは,MIT Licenseです.
AIのプログラミング言語「C++/Python言語」を学べるおすすめのWebサイトを知りたいあなたはこちらからどうぞ.
参考:【C++言語】MongoDBの「Queryable Encryption」
MongoDBの「Queryable Encryption」は,データを暗号化したまま検索できるC++言語で開発された機能です.
Queryable Encryptionの特徴は以下になります.準同型暗号と似ていることがわかります.
- クライアントサイドで機密データを暗号化する
- データベースサーバ側で完全にランダム化された暗号化データとして保存する
- 暗号化されたデータに対して表現力豊かなクエリを実行する
まとめ
C/C++/Python言語でおすすめの準同型暗号ライブラリを紹介しました.
準同型暗号ライブラリを使って,秘密計算を楽しみましょう!
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!