公開鍵暗号(PKC、英語で Public Key Cryptography)または非対称暗号は、プライベートキーとパブリックキーの両方を使用する暗号の分野で、対称暗号で使用される単一のキーとは対照的です。キーのペアを使用することで、PKCは他の暗号技術に内在する問題を解決するために使用できる独自の特徴と機能セットを提供します。この形式の暗号は、現代のサイバーセキュリティにおいて重要な要素であり、進化し続ける暗号通貨エコシステムの不可欠な要素となっています。


公開鍵暗号はどのように機能しますか?

PKC(公開鍵暗号方式)のスキームでは、公開鍵は送信者が情報を暗号化するために用いられ、秘密鍵は受信者がそれを復号するために用いられます。2つの鍵は異なるため、秘密鍵の安全性を損なうことなく、公開鍵は安全に共有できます。非対称の各鍵ペアは固有であるため、公開鍵で暗号化されたメッセージは、対応する秘密鍵を持つ人だけが読むことができるのです。

数学的に結び付いた鍵ペアを生成する非対称暗号アルゴリズムでは、その鍵長は対称暗号で使われる鍵長よりもはるかに長くなります。この増加した長さ(一般的に1,024〜2,048ビット)は、公開鍵の対応物から秘密鍵を計算することを極めて困難にします。現在、非対称暗号化で最も広く使われているアルゴリズムの1つはRSAとして知られています。RSA方式では、鍵は2つの数(しばしば2つの大きな素数)を掛け合わせて得られるモジュラス(法)を用いて生成されます。言い換えると、モジュラスによって2つの鍵が生成されます。共有できる公開鍵と、秘密にしておくべき秘密鍵です。RSAアルゴリズムは1977年にRivest、Shamir、Adlemanによって初めて記述され(したがってRSA)、公開鍵暗号方式のシステムにおける主要な構成要素であり続けています。


暗号化ツールとしてのPKC

公開鍵暗号は、対称暗号アルゴリズムに繰り返し現れる問題の1つ、すなわち暗号化と復号の両方に使われる鍵を通信するという課題を解決します。この鍵を安全でない接続経由で送ると、第三者に鍵が露出する可能性があり、その結果、共有された鍵で暗号化されたすべてのメッセージを読み取られてしまいます。この問題を解決するための暗号技術(たとえばDiffie-Hellman-Merkle鍵交換プロトコル)も存在しますが、それでも攻撃に対して脆弱なままです。一方、公開鍵暗号では、暗号化に使用する鍵は、どの接続経路を通しても安全に共有できます。そのため、非対称アルゴリズムは対称アルゴリズムよりも高い保護レベルを提供します。


デジタル署名の生成への利用

非対称暗号アルゴリズムのもう1つの用途は、デジタル署名を使ったデータの認証です。基本的にデジタル署名とは、メッセージのデータを用いて作成されるハッシュです。このメッセージが送信されると、受信者は送信者の公開鍵を使って署名を検証し、メッセージの送信元を認証するとともに改ざんされていないことを確認できます。場合によっては、デジタル署名と暗号化を組み合わせて適用し、ハッシュ自体をメッセージの一部として暗号化することもあります。ただし、すべてのデジタル署名システムが必ずしも暗号化技術を使うわけではない点に注意が必要です。


限界

PKC暗号はコンピュータの安全性を高め、メッセージの完全性を検証できるようにするのに役立ちますが、いくつかの制限があります。暗号化と復号に関わる複雑な数学演算のため、大量のデータを扱う必要がある場合、非対称アルゴリズムはかなり遅くなることがあります。この種の暗号はまた、秘密鍵が秘密のままであるという前提にも強く依存しています。もし秘密鍵が共有されたり、偶然に露出したりすると、対応する公開鍵で暗号化されたすべてのメッセージの安全性が損なわれます。さらに、ユーザーが秘密鍵を偶然に失ってしまう可能性もあり、その場合、暗号化されたデータにアクセスできなくなります。


公開鍵暗号の応用

この種の暗号は、多くの現代的な情報システムで、機密情報を保護するために使われています。たとえば電子メールは、その内容の機密性を保つために公開鍵暗号の技術で暗号化できます。また、安全なWebサイト接続を可能にするSSL(Secure Sockets Layer)プロトコルでも、非対称暗号が使用されています。PKCシステムは、個人のコンピュータから有権者が選挙に参加できる可能性のある、安全な電子投票環境を作る手段としても検討されてきました。

PKC技術は、ブロックチェーン技術や暗号通貨の分野でも重要な位置を占めています。新しい暗号通貨ウォレットが設定されると、鍵ペア(公開鍵と秘密鍵)が生成されます。公開アドレスは公開鍵から作られ、第三者と安全に共有できます。一方、秘密鍵はデジタル署名を作成し、取引を検証するために使う必要があるため、秘密にしておかなければなりません。取引は、デジタル署名に含まれるハッシュを確認することで検証されると、その取引をブロックチェーンの台帳に追加できます。このデジタル署名の検証システムにより、暗号通貨ウォレットに対応する秘密鍵を持つ人物だけが資金を引き出せることが保証されます。なお、暗号通貨アプリケーションで使われる非対称暗号は、情報セキュリティ目的で使われるものとは異なります。たとえばBitcoinやEthereumでは、取引を検証するために楕円曲線デジタル署名アルゴリズム(ECDSA)という特殊な暗号化を用いています。

情報セキュリティから暗号通貨の取引検証まで、公開鍵暗号は現代のデジタルシステムの安全確保において重要な役割を果たしています。公開鍵と秘密鍵を組み合わせて使うことで、非対称暗号アルゴリズムは対称暗号によって生じる基本的なセキュリティ問題を解決します。PKC暗号は長年にわたって利用されてきましたが、ブロックチェーンや暗号通貨の分野を中心に、新たな利用や応用が定期的に開発されています。