見出し画像

【完全保存版】RustでTHFE(完全準同型暗号)を触ってみよう!

この記事ではZamaの「TFHE-rs」を使って、暗号化したまま計算を行なっています。

1 やってみよう!

1 パッケージの作成

まずは、次のコマンドでパッケージを作ります。

cargo new tfhe_example

2 依存関係の設定

次に、依存関係として、「TFHE」を設定します。

ちなみに、お手元の環境によって、依存関係が異なります。

こちらをご参照ください。

https://docs.zama.ai/tfhe-rs/get-started/installation

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を使います。

以上です。

ぜひやってみてください















サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊