暗号化技術が進歩し、私たちの生活の中で新しい、より重要な用途が見つかるにつれて、これらの技術が実行するプロセスはますます複雑になっていきます。単純な暗号化プリミティブを使用して膨大な量の処理を実行できますが、最も興味深いのは、それらを組み合わせたときに何ができるかということです。
さらに印象的なのは、一部の暗号化プロトコルがハードウェア記述機能を備えて設計されており、普遍的な課題に取り組む力を与えているというアイデアです。このアイデアは「プログラム可能な暗号化」と適切に呼ばれており、ブライアン・グーの言葉を借りれば、新しいプロトコルを設計するという数学的な問題を、既存のプロトコルを組み合わせるというプログラミングの問題に変換することで、より複雑なアクションを可能にする可能性を秘めています。
この記事では、高レベルの目標から低レベルのアルゴリズムまで、暗号化アプリケーションのレイヤーを詳しく調べて、これらのアイデアがどこから来たのかを理解します。次に、それらがどこに向かっているのかを見ていきます。
始める前に、暗号学者が自分の技術を追求する根本的な動機について少し考えてみましょう。結局のところ、新しいプロトコルが安全で、実現可能で、既存のモデルよりも大幅に改善されているという数学的証明に取り組むよりも、家にいて何もしない方がはるかに簡単です。
私たちが保存、共有、処理するデジタル データの重要性がますます高まっているため、プライバシーを確保し、データの改ざんを防ぐための新しい改良された方法が必要です。暗号学者が朝起きるのは、そのニーズを満たしたいという願望があるからです。
最近、オンラインで処理される情報の量を考えると、本当に驚かされます。ほとんどの人にとって、数年前と比べて、データとのやり取りに費やす時間がどれだけ増えたかの方が、より直接的な影響です。人々が作成し、操作し、確認し、送信するすべての情報は、適切に保護されていない場合、スパイされたり、盗まれたり、操作されたりするリスクがあります。
これが、暗号化が常に必要とされる理由です。そのため、データのプライバシーを保護するための新しい改良された方法が開発され続けています。
他の多くの分野と同様に、暗号化は、タスクが面白くなるにつれてスケールアップされる単純な概念に基づいています。これらの単純な概念は、現代の暗号化では「暗号化プリミティブ」と呼ばれることが多く、それ自体は基本的なものであることが多いですが、組み合わせることで複雑なものを構築できます。
たとえば、最も古い暗号の 1 つであるセザール暗号を考えてみましょう。最も有名な使用者にちなんで名付けられたこの暗号では、暗号文に元のメッセージから 3 文字ずらした単語を書きます。この場合、「the」という単語は「qeb」と書きます。各文字は英語のアルファベットで 3 つ前の文字にずらされます。
このコードは非常にシンプルですが、十分にテストされており、有用で、実験的なものではありません。データを暗号化する必要がある場合は、これで暗号化できます。これは世界で最も安全なコードではありませんが、他の技術と組み合わせてさらに強力にすることもできます。
別の例を挙げると、ヴィジュネル暗号は、複数の異なるセザール暗号を使用してメッセージを暗号化するツールです。このシステムでは、各メッセージはキーと組み合わされています。それぞれ「イーグル」と「レモン」を想像してみましょう。キーは、メッセージ内の文字を何桁シフトするかを示しますが、シフトする数は文字ごとに異なります。レモンの「L」は、メッセージの最初の文字を 12 桁シフトすることを意味します。L は英語のアルファベットの 12 番目の文字です。「E」は、2 番目の文字を 5 桁シフトすることを意味します。
つまり、「apple」は「peszr」になります。キーにアクセスできないと、メッセージを解読するのははるかに困難になります。十分な時間があれば、総当たり計算でメッセージが何であるかを判断できるというセザール暗号の弱点は残っていますが、既存のツールを新しい方法で組み合わせることで、セキュリティ レベルは劇的に向上します。
おそらくご想像のとおり、新しいシステムを発明するよりも、既存の暗号を新しい複雑な方法で組み合わせる方がはるかに簡単です。セザールはずっと前に亡くなりましたが、私たちは今でも彼の暗号集を使用しています。
古いコードの知恵が生き続けるのと同じように、現代の暗号技術の多くも同じような基盤の上に成り立っています。暗号学者に、新しいシステムがデジタルの秘密を安全に守ってくれるという新しい証明を書いてもらうのは素晴らしいことですが、非常に時間がかかり、確実に機能するとは限りません。一方、RSA (Rivest-Shamir-Adleman)、AES (Advanced Encryption Standard)、デジタル署名システムなどの暗号プリミティブは機能することがわかっており、さまざまな問題に簡単に適用できます。たとえば、RSA は安全なデータ転送に広く使用されており、AES は機密データを暗号化するための標準です。これらを組み合わせると、革新的な機能を提供でき、単独では解決できない複雑な問題を解決できます。
単純な方法を組み合わせることは、より複雑なシステムを作成するための優れた方法ですが、制限もあります。これらのプリミティブはそれぞれ特定のタスクに適しているように設計されており、それらを組み合わせる際に間違いを犯して弱点が露呈してしまうことは珍しくありません。
中レベル プロトコルは、低レベル プリミティブに基づいて、より高度な機能を対象としています。以下では、最も広く採用され、議論されている中レベル プロトコルのいくつかについて説明します。
準同型暗号化は、暗号化されたデータを最初に復号化することなく処理できるプロトコルです。現在もその例は存在しますが、まだ比較的初期段階にあり、実用的であることが実証されたのは 2009 年になってからでした。既存のモデルでは、暗号化されたデータに対して実行できるプロセスが制限されることがあります。
しかし、このコンセプトは非常に興味深く、多くの明らかな応用が考えられます。医療記録やクレジット情報などの機密性が高く有用なデータが、あなたを助けるためにアクセスする必要がある組織から盗まれる頻度を考えてみましょう。暗号化された医療情報をデコードせずに操作できるとしたらどうでしょうか。このセキュリティ向上のメリットは言うまでもありません。
マルチパーティコンピューティング (MPC) は、共通の出力に対して共同作業するさまざまなアクターによって提供される入力を隠すツールです。これは「ミリオネア問題」としてよく説明されます。
2 人の億万長者がいて、どちらがより多くのお金を持っているかを知りたいとします。しかし、彼らはただ自分の純資産額を公表したくはありません。MPC を使用すれば、この問題を解決できます。1 人目の億万長者は、暗号化された純資産額を、2 人目の億万長者に送信する前に、値を比較するように設計されたプログラムに追加できます。2 人目の億万長者は、純資産額を追加する際に、1 人目の値を見ることはできません。
その後、両者は出力を復号化し、どちらがより大きな値を入力したかを調べることができますが、どちらの入力も見ることはできません。
最後に、ゼロ知識証明 (ZKP) について見てみましょう。これは広く使用されているため、読者にはよく知られていると思いますので、簡単に説明します。ZKP は、証明者が、他のことは何も言わずに、何かが真実であることを別の人 (検証者と呼ばれることが多い) に伝えることを可能にするのに非常に優れています。通常、このサービスは単一のユーザーに提供されます。つまり、ある人が証明を求めると、証明が得られます。zk-SNARK や zk-STARK など、多数の ZKP があります。それぞれに長所と短所があります。
これらの高度なプロトコルの研究が進むにつれて、焦点は汎用暗号プロトコルの開発へと拡大しました。これらの取り組みは、暗号によって普遍的な計算を安全かつプライベートに実行できることを証明することを目指しています。当初、これらの取り組みは純粋に理論的なものであり、実際の実装効率よりも実現可能性を優先していました。しかし、研究が深まるにつれて、暗号学者はこれらの概念を実際に適用できるようにすることに注目するようになりました。彼らは新しいプロトコルとコンポーネントを強化、結合、発明しています。多くの場合、最終的なプロトコルは、複数のアプローチの長所を活用したハイブリッドになります。たとえば、準同型暗号化では、範囲証明にゼロ知識証明を利用して、計算が有効な範囲内にとどまるようにします。一方、MPC プロトコルでは、非線形操作を実行するために準同型の要素を組み込む場合があります。
実験的なプロトコルが数多くある中で、実用性に十分近づき、現実世界での開発への道を切り開いたものもあります。これらのツールはコンパイラーと同様に機能し、高水準言語を解釈して、暗号プロトコルが処理できる回路に変換します。この変換は、ソフトウェアを CPU レジスタ操作に変換したり、Solidity を EVM 状態遷移に変換したりすることに似ています。チューリング完全な計算をサポートするこのコンパイラーのような機能の実現は、いわゆるプログラム可能な暗号の登場を意味します。これは過度に楽観的に思えるかもしれませんが、現実は微妙です。たとえば、ビット単位のハッシュ関数はゼロ知識証明プロトコルではそれほど効率的ではありませんが、モジュラー乗算によって実行されるハッシュは優れた効率を提供します。したがって、SHA-3 などのアルゴリズムは避けることをお勧めします。さらに、暗号プロトコルは主に有限体内で動作するため、浮動小数点計算を避けることは一般的な方法です。プログラム可能な暗号を実現する際には、このようなトリックがいたるところに存在します。
プログラム可能な暗号化はまだ新しい概念ですが、非常に複雑な問題をはるかに簡単にするチャンスを提供します。それが進む方向を推測するのは簡単です。あらゆる種類の暗号化ツールを使ってプログラムする試みが行われることはほぼ確実ですが、それらの成功レベルは未定です。
しかし、これらの実験のいくつかはうまくいくでしょう。うまく機能するものもあれば、うまく機能するものもあり、うまく機能するものは、暗号学者に1つのアプリケーション用にまったく新しいシステムを作成させる費用をかけずに、強力な機能と高度なセキュリティを提供します。この可能性だけでも、この分野に大きな関心が集まるでしょう。
これを既存のシステムと連携して行う方法という問題に対処する必要があり、おそらく採用されるものの多くは、やり取りする必要のあるデータと効率的に連携するものになるでしょう。
この技術がデータ セキュリティ、プライバシー、そしてより広範なデジタル セキュリティの分野に与える影響は、いくら強調してもし過ぎることはないでしょう。多くの複雑なアクションの実装が容易になります。不適切なプログラミングは、常にそうであるように問題を引き起こしますが、この技術が機能するところでは、より優れたセキュリティとより堅牢なプライバシー システムが実現されるでしょう。
おそらく最も心強いのは、この技術の用途がまだかなり初期段階にあることです。ZK 証明は 1980 年代に考案されましたが、2012 年にようやく実現しました。まだ誰も夢にも思わなかったメカニズムやメカニズムの組み合わせが数多く考えられます。世界を揺るがす次のアイデアは明日登場するかもしれません。それが何をもたらすのか、私たちには推測すらできないかもしれません。