C LANGUAGE TECHNOLOGY

【C/C++/Python言語】おすすめの準同型暗号ライブラリ【ブロックチェーン】

悩んでいる人

C/C++/Python言語でおすすめの準同型暗号ライブラリを教えて!

こういった悩みにお答えします.

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOSの授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校コンピュータサイエンス学部2021年の世界大学学術ランキングで20位)で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発
  • プログラミング歴15年以上,習得している言語: C/C++Solidity/Vyper,Java,Python,Ruby,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開

こういった私から学べます.

【C/C++/Python言語】おすすめの準同型暗号ライブラリ

C/C++/Python言語でおすすめの準同型暗号ライブラリを紹介します.

準同型暗号ライブラリのリストはこちらにあります.

準同型暗号の説明は,こちらの動画がわかりやすいです.

スライドはこちらです.

現在,完全準同型暗号(FHE:Fully Homomorphic Encryption)は第1世代~第4世代まで提案されています.

完全準同型暗号は,主にBootstrappingを利用して加算と乗算が任意回実行できる準同型暗号のことです.

※Bootstrapping以外の方法もあります.

完全準同型暗号の世代と代表的な方式は以下になります.

BV方式の論文「Efficient Fully Homomorphic Encryption from (Standard) LWE」とBGV方式の論文をベースとした論文「(Leveled) Fully Homomorphic Encryption without Bootstrapping」は,2022年のゲーデル賞を受賞しました!

ゲーデル賞は,チューリング賞と並ぶコンピュータサイエンスのノーベル賞のようなものです.

準同型暗号とブロックチェーン

準同型暗号とブロックチェーンを組み合わせる研究開発は広く行われています.

仮想通貨ビットコインやイーサリアム,ブロックチェーンを知りたいあなたはこちらからどうぞ.

ビットコイン
ビットコイン(Bitcoin)とは【買い方】【仮想通貨のパイオニア】

こういった悩みにお答えします. 目次1 ビットコイン(Bitcoin)2 ビットコインの買い方3 ビットコインを法定通貨にした国3.1 ビットコインを法定通貨にしたエルサルバドル共和国に関する動画3. ...

続きを見る

イーサリアム
元東大教員/アメリカ企業CEO兼CTOから学ぶイーサリアム(Ethereum)

こういった私から学べます. 元東大教員/アメリカ企業CEO兼CTOの私が,イーサリアム(Ethereum)について解説します. イーサリアムで取引,NFTの売買,ゲーム,プログラミングをしたいあなたに ...

続きを見る

ブロックチェーン
ブロックチェーンとは【暗号化技術,コンセンサスアルゴリズム,Peer to Peer,分散型台帳】

こういった悩みにお答えします. こういった私から学べます. 目次1 ブロックチェーンとは2 ブロックチェーンの特徴2.1 暗号化技術2.2 コンセンサスアルゴリズム2.2.1 Proof-of-Wor ...

続きを見る

C言語で仮想通貨で利用される暗号ライブラリを知りたいあなたはこちらからどうぞ.

C言語 暗号ライブラリ
【C言語】仮想通貨で利用される暗号ライブラリ

こういった悩みにお答えします. こういった私から学べます. C言語で仮想通貨で利用される暗号ライブラリを紹介します. 仮想通貨ビットコイン,イーサリアム,アルゴランド等で利用されています. これらの仮 ...

続きを見る

【C++言語】Microsoft SEAL

Microsoft SEALは,マイクロソフト社のCryptography and Privacy Research Groupによって開発されたC++言語の準同型暗号ライブラリです.

Microsoft SEALは,様々な環境で簡単にコンパイル・実行することができます.

Microsoft SEALがサポートしている準同型暗号は以下になります.

  • 第2世代の完全準同型暗号:BFV,BGV
  • 第4世代の完全準同型暗号:CKKS

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」を利用しています.

SEAL-Pythonのライセンスは,MIT Licenseです.

【Python言語】TenSEAL

TenSEALは,テンソルに対して準同型暗号を行うためのライブラリで,Microsoft SEALをベースに構築されています.

TenSEALは,Python言語による使い勝手の良さと,C++言語による効率的な実装を両立しています.

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月現在).

PALISADEのライセンスは,2条項BSD Licenseです.

【C++言語】HElib

HElibは,準同型暗号を実装したC++言語のライブラリです.

HElibがサポートしている完全準同型暗号は以下になります.

  • 第2世代の完全準同型暗号:BGV
  • 第4世代の完全準同型暗号:CKKS

HElibのライセンスは,Apache License 2.0です.

【C++言語】HEAAN

HEAANは,第4世代の完全準同型暗号「CKKS」の提案者が開発したC++言語のライブラリです.

CKKSを深く理解したい場合におすすめです.

HEAANのライセンスは,CC BY-NC 3.0です.

【C言語】libScarab

libScarabは,2011年に開発された第1世代の完全準同型暗号「SV方式」をサポートしたC言語のライブラリです.

おそらく完全準同型暗号を最初にサポートしたライブラリだと思われます.

libScarabのライセンスは,MIT Licenseです(教育または学術的な用途限定).

参考:MongoDBの「Queryable Encryption」

MongoDBの「Queryable Encryption」は,データを暗号化したまま検索できる機能です.

Queryable Encryptionの特徴は以下になります.準同型暗号と似ていることがわかります.

  • クライアントサイドで機密データを暗号化する
  • データベースサーバ側で完全にランダム化された暗号化データとして保存する
  • 暗号化されたデータに対して表現力豊かなクエリを実行する

まとめ

C/C++/Python言語でおすすめの準同型暗号ライブラリを紹介しました.

準同型暗号ライブラリを使って,秘密計算を楽しみましょう!

C言語を独学で習得することは難しいです.

私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.

私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!

友だち追加

独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!

-C LANGUAGE, TECHNOLOGY
-, , , , ,