公開鍵暗号とは?
ホーム
記事
公開鍵暗号とは?

公開鍵暗号とは?

中級者
公開済 Jan 31, 2019更新済 Nov 8, 2022
5m

はじめに

公開鍵暗号 (PKC) は、非対称暗号とも呼ばれ、対称暗号で使用される単一の鍵とは対照的に、秘密鍵と公開鍵の両方を使用するフレームワークです。鍵ペアを使用すると、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は、コンピューターセキュリティを強化し、メッセージの整合性の検証を提供するために使用できますが、いくつかの制限があります。暗号化と復号化には複雑な数学演算が伴うため、非対称アルゴリズムは大量のデータを処理することを余儀なくされると、処理が非常に遅くなる可能性があります。このタイプの暗号化は、秘密鍵が秘密のままであるという前提にも大きく依存します。秘密鍵が誤って共有または公開された場合、対応する公開鍵で暗号化されたすべてのメッセージのセキュリティが侵害されます。また、ユーザーが誤って秘密鍵を紛失し、その場合、暗号化されたデータにアクセスできなくなる可能性もあります。


公開鍵暗号の応用

このタイプの暗号化は、機密情報のセキュリティを提供するために、多くの最新のコンピュータシステムによって使用されています。例えば、電子メールは公開鍵暗号化技術を使用して暗号化し、内容を機密に保つことができます。

ウェブサイトへの安全な接続を可能にするセキュアソケットレイヤー (SSL) プロトコルも、非対称暗号を採用しています。PKCシステムは、有権者が自宅のコンピュータから選挙に参加できる可能性のある安全な電子投票環境を提供する手段としても検討されています。

PKCはまた、ブロックチェーン仮想通貨技術の根幹にも関わっています。新しい仮想通貨ウォレットが設定されると、鍵ペア (公開鍵と秘密鍵) が生成されます。ウォレットアドレスは公開鍵を使用して生成され、他の人と安全に共有することができます。一方、秘密鍵はデジタル署名の作成とトランザクションの検証に使用されるため、秘密にしておく必要があります。

デジタル署名に含まれるハッシュを確認してトランザクションが検証されると、そのトランザクションをブロックチェーン台帳に追加できます。このデジタル署名検証システムは、対応する仮想通貨ウォレットに関連付けられた秘密鍵を持っている人だけが資金を移動できることを保証します。 

仮想通貨アプリケーションで使用される非対称暗号化は、コンピュータセキュリティの目的で使用されるものとは異なることに注意してください。たとえば、BitcoinEthereumは、楕円曲線デジタル署名アルゴリズム (ECDSA) と呼ばれる特定のアルゴリズムを使用してトランザクションを検証します。また、ECDSA は暗号化を使用せずにデジタル署名を作成します。これは、多くの人が信じがちなのとは異なり、ブロックチェーンは暗号化を必要としないことを意味します。


まとめ

コンピュータセキュリティから暗号化トランザクションの検証まで、公開鍵暗号は現代のデジタルシステムのセキュリティ保護に重要な役割を果たしています。公開鍵と秘密鍵のペアを使用することで、非対称暗号化アルゴリズムは、対称暗号によって提示される基本的なセキュリティ上の問題を解決します。PKCは長年にわたって使用されてきましたが、特にブロックチェーンと仮想通貨の分野では、新しい用途とアプリケーションが定期的に開発されています。