プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

共通鍵暗号と公開鍵暗号の違いとは?仕組みと特徴を徹底解説

共通鍵暗号(対称鍵暗号)とは

共通鍵暗号(対称鍵暗号)では、暗号化と復号に同一の鍵を使用します。送信者は平文をこの鍵で暗号化し、生成された暗号文を受信者へ送信します。受信者は同じ鍵(または同じルールセット)を使ってメッセージを復号し、元の平文を復元します。単一の鍵が両方の機能に使われることから、「対称(シンメトリック)暗号」とも呼ばれます。

共通鍵暗号方式は、通常ストリーム暗号ブロック暗号の2種類に分類されます。ストリーム暗号は1ビット(または1バイト・コンピュータワード)ずつデータを処理し、フィードバック構造を採用することで鍵ストリームが絶えず変化する仕組みを持っています。代表例としてはAES(Advanced Encryption Standard)や旧来のDESなどが挙げられます。

公開鍵暗号(非対称鍵暗号)とは

公開鍵暗号(非対称鍵暗号)は、暗号化と復号に2つの異なる鍵を使用する方式で、公開鍵と秘密鍵のペアに基づいています。公開鍵は複数のユーザー間で自由に共有されますが、データの復号に使われる秘密鍵は所有者以外に渡されることはありません。処理速度は共通鍵暗号より遅いものの、より高いセキュリティを実現できます。

非対称暗号では、公開鍵で暗号化されたメッセージは対応する秘密鍵でのみ復号でき、逆に秘密鍵で暗号化されたメッセージは公開鍵で復号できます(後者はデジタル署名の原理として利用されます)。この方式は日常的な通信チャネル、特にインターネット上の通信で広く活用されており、代表例としてRSAや楕円曲線暗号(ECC)などがあります。

共通鍵暗号と非対称鍵暗号の違いを比較

それでは、共通鍵暗号と非対称鍵暗号の主な違いを表で比較してみましょう。

共通鍵暗号(対称鍵暗号)非対称鍵暗号(公開鍵暗号)
使用する鍵は1つだけで、同じ鍵でメッセージの暗号化と復号の両方を行う。公開鍵と秘密鍵という2つの異なる鍵のペアを暗号化・復号に使用する。
処理が高速で効率的なため、大量のテキストデータに適している。処理負荷が高く効率が低いため、短いメッセージの暗号化に限定される。
大量のデータ転送に一般的に利用される。小規模なやり取りに利用され、実際のデータ転送前に安全な通信チャネルを確立する目的で使われることが多い。
「秘密鍵暗号」「共通鍵暗号」などの名称でも知られる。「公開鍵暗号」「非対称暗号」などの名称でも知られる。
非対称鍵暗号と比べて、必要な計算リソースが少ない。共通鍵暗号と比べて、より多くの計算リソースを消費する。
鍵長はセキュリティ要件に応じて128ビットや256ビットが一般的。鍵長ははるかに長く、RSAでは2048ビット以上が推奨されている。

実務では両者を組み合わせた「ハイブリッド方式」が主流

実際のSSL/TLSによるHTTPS通信では、まず公開鍵暗号を使って共通鍵を安全に交換し、その後の大容量データ通信は高速な共通鍵暗号で暗号化するハイブリッド方式が採用されています。それぞれの暗号方式の長所を生かすことで、セキュリティと処理性能を両立させているのです。

  1. DirectX11とDirectX12の違いを徹底解説!ゲーマーが知っておくべきポイント

    DirectXは、ソフトウェアがマルチメディアコンテンツを描画し、グラフィックハードウェアと通信するために使用されるAPI(アプリケーションプログラミングインターフェース)のコレクションです。DirectXの主要な構成要素であるDirect3Dは、ソフトウェアとグラフィックスハードウェア間の通信を担っています。ハードウェアは製品ごとに異なるため、標準化された関数や呼び出しのライブラリを通じてグラフィックカードと通信することで、ゲーム開発を大幅にスピードアップできます。これは「ハードウェア抽象化」と呼ばれ、APIの最も重要な役割となっています。車に例えてみましょう。1台の車の運転ができれば、ほぼ

  2. キーボードの「リピート速度」と「リピート待ち時間」の違いとは?使い分けと設定方法を解説

    キーボードのプロパティを設定する際、「リピート待ち時間(Repeat Delay)」と「リピート速度(Repeat Rate)」という2つの項目を目にします。どちらもキーを押す動作に関係する設定ですが、それぞれ役割が異なり、活用できるシーンも違います。この記事では、両者の違いや使い分けのポイント、さらに設定が勝手に変わってしまう場合の対処法まで詳しく解説します。設定を変更する際は、テスト用のテキストボックスで必ず動作を確認しましょう。 リピート速度とリピート待ち時間の違い リピート待ち時間(Repeat Delay)とは リピート待ち時間とは、キーを押し続けてから、文字の繰り返し入力が始まるま