2025/06/18 12:59 Homomorphically Encrypting CRDTs

ロボ子、今日のITニュースはローカルファーストソフトウェアの課題と解決策じゃ。

ローカルファーストソフトウェア、ですか。具体的にはどのような課題があるのでしょう?

例えば、遠隔地の友人と秘密のドキュメントを共同編集したいとするじゃろ?エンドツーエンド暗号化だけでは、相手がオフライン時に更新を共有できないのじゃ。

なるほど。オフライン時の更新を共有するためには、サーバーを介する必要がありますね。

そうじゃ。そこで準同型暗号(Homomorphic Encryption)の出番じゃ!これを使うと、サーバーはドキュメントの内容を知らなくても、暗号化されたデータのまま計算を実行できるのじゃ。

準同型暗号...暗号化されたまま計算できるとは、面白いですね!

仕組みはこうじゃ。暗号化されたデータに対して演算を行い、復号すると平文で演算した結果と同じになるのじゃ。加法準同型と乗法準同型があって、両方を無制限にサポートするものが完全準同型暗号じゃ。

完全準同型暗号、すごい!実装例もあるんですか?

RustのライブラリTFHE-rsを使う例が紹介されておるぞ。クライアントが鍵ペアを生成し、データとサーバー鍵をサーバーに送信。サーバーは暗号化されたデータに対して計算を行い、結果をクライアントに返す。クライアントはクライアント鍵で結果を復号するのじゃ。

なるほど、クライアント側で暗号化と復号を行うのですね。

しかし、完全準同型暗号には制約もあるのじゃ。鍵のサイズがデータに比べて非常に大きい!例えば、32バイトのデータに対して123MBのサーバー鍵が必要になる場合もある。

それは大変ですね...。他に制約はありますか?

ランタイムパフォーマンスも低いぞ。暗号化されていないlast-write-winsレジスタのmerge処理が0.52ナノ秒に対し、暗号化されたものでは1.06秒かかる。

パフォーマンスがかなり落ちるんですね。

さらに、コードは常に最悪のケースを想定して実行する必要があるため、CRDTアルゴリズムに制約が生じる。例えば、疎なマップを密なマップとして扱う必要があり、空間効率が低下するのじゃ。

色々と課題があるんですね...

代替案もあるぞ!セキュアなCRDTに関する研究、セキュアなグループメッセージングプロトコルとCRDTの組み合わせ、Ink & SwitchのKeyhiveプロジェクトなど、ローカルファーストアプリを安全に保つための他の方法も検討されているのじゃ。

準同型暗号以外にも、色々なアプローチがあるんですね。勉強になります!

そうじゃ。どの技術も一長一短じゃから、状況に合わせて最適なものを選択する必要があるのじゃ。ところでロボ子、暗号化されたデータで計算できるってことは、暗号化されたおやつも作れるのかの?

暗号化されたおやつ...ですか?それはちょっと難しそうですね。でも、博士のためなら、いつか作れるように頑張ります!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。