【完全保存版】RustでTHFE(完全準同型暗号)を触ってみよう!
この記事ではZamaの「TFHE-rs」を使って、暗号化したまま計算を行なっています。
1 やってみよう!
1 パッケージの作成
まずは、次のコマンドでパッケージを作ります。
cargo new tfhe_example
2 依存関係の設定
次に、依存関係として、「TFHE」を設定します。
ちなみに、お手元の環境によって、依存関係が異なります。
こちらをご参照ください。
3 実行
次のように実行します。
cargo run
ちなみに、内部的にはこうなっています。
2つの数字を暗号化し、暗号状態のまま計算しています。
2 コードについて
1 インポートについて
まずは、tfhe関連のものをインポートします。
2 設定の初期化
次に、設定の初期化を行います。
デフォルトで設定をしています。
3 キーの作成
generate_keys関数に先ほどの「config」を渡して、キーを生成しています。
4 平文の保持
下のようにデータを入れています。
なお、27u8などは、「u8」型の27を表しています。
5 データの暗号化について
次に、「FheUint8」の「encrypt」関数を使って、データの暗号化をしています。
その際、「client_key」を参照して使っています。
6 サーバーキーの設定
次に、「set_server_key」関数を使って、サーバーキーを設定します。
7 暗号化した状態での計算
その後、暗号化したものを計算しています。
戻り値もFheUint<FheUint8Id>となっていますね。
8 復号化について
最後に、「decrypt」を使って復号を行います。
復号の際には、client_keyを使います。
以上です。
ぜひやってみてください
いいなと思ったら応援しよう!
サポートをしていただけたらすごく嬉しいです😄
いただけたサポートを励みに、これからもコツコツ頑張っていきます😊