公開鍵暗号方式と共通鍵暗号方式

PKI

PKI とは Public Key Infrastructure の略で公開鍵暗号基盤のことです。秘密鍵と公開鍵というキーペアを利用した公開鍵暗号方式という技術を利用して、データを暗号化・復号化し、情報を安全にやりとりをする仕組みのことです。

今回は PKI の理解に必要となる暗号化・復号化の説明から、公開鍵暗号方式・共通鍵暗号方式の概要を説明したいと思います。

暗号化と復号化

暗号化されていないデータのことを「平文 (ひらぶん) 」と呼びます。

平文とは特別な処理や解読作業を行わなくても意味が通るデータのことを指します。かつては文章(テキスト)の暗号化がメインであったため「平"文"」と呼称されていますが、現在では文章のみではなく画像や音声などのデータも含めて「平文」とされています。

暗号化

一定のルールに基づき、平文を暗号文に変換することを「暗号化」といいます。

以下、具体例です。

【HELLO】という文字列の意味は分かりますね。では【IFMMP】という文字列の意味は分かりますか?

・・・
・・

少し考えれば分かると思いますが、【HELLO】を1文字ずつ右にずらしたものです。

この「右に〇文字ずらす」というルールのことを暗号アルゴリズムと呼び、「〇文字」という部分が暗号鍵になります。

「平文」を「暗号アルゴリズム」と「暗号鍵」で一見意味の分からない情報にすることを「暗号化」といい、一見意味の分からない情報を意味の分かる情報へ戻すことを「復号化」といいます。

復号化

暗号文を意味の分かるデータ(平文)に変換することを「復号化」といいます。

暗号文を受け取った側は、「左に〇文字ずらす」というルール(復号アルゴリズム)と、「〇文字」の部分(復号鍵)が分かれば意味の分かる文字列に戻すことができます。

上記例で利用したのはシーザー暗号と呼ばれており、もっともシンプルで広く知られている暗号のひとつです。

共通鍵暗号方式と公開鍵暗号方式

暗号化・復号化には、それぞれ「アルゴリズム」と「」が必要となることが分かったかと思います。

暗号化・復号化に共通の鍵を利用するか、別の鍵を利用するかで暗号化の方式が異なります。それぞれの方式を「共通鍵暗号方式」と「公開鍵暗号方式」といいます。

共通鍵暗号方式

共通鍵暗号方式は、暗号化・復号化に同一の鍵を利用する暗号方式です。例で紹介したシーザー暗号も共通鍵暗号方式となります。

共通鍵暗号方式は暗号化・復号化にかかる負荷が少なく、処理が高速であるという特徴があります。

ただし、事前に鍵を共有している必要があり、鍵の受け渡しに安全な経路を利用せずに、傍受者に鍵が傍受された場合、暗号としての役割を果たさなくなります。絶対に他人に知られてはならないため、鍵の受け渡しが難しいというデメリットがあります。また、暗号のやりとりをする相手の数分だけ鍵が必要となるため、鍵の管理が煩雑となります。

共通鍵暗号方式で利用されるアルゴリズムをいくつか紹介します。

RC4 (Rivest Cipher 4)

暗号の研究者である Ronald Linn Rivest 氏が 1987 年に開発したストリーム暗号です。

ストリーム暗号とは、平文をビット単位またはバイト単位で逐次、暗号化する暗号のことを指します。

無線 LAN の暗号化規格である WEP などに利用されているアルゴリズムです。

2013 年に RC4 への効果的な攻撃が報告されたため、現在では非推奨のアルゴリズムとなっています。Web ブラウザ各社も 2016 年には RC4 へのサポートを打ち切りました。

DES (Data Encryption Standard)

1970 年代初めに米 IBM が開発したブロック暗号です。

ブロック暗号とは、平文を固定長のブロックに分割し、ブロック単位で暗号化する暗号のことを指します。

1976 年にアメリカ政府で機密情報を扱うための標準暗号アルゴリズムとして公式に採用され、1981 年には ANSI 標準として民間の標準規格となりました。標準規格として採用されたため、国際的に広く使われたアルゴリズムとなります。

1990 年代になり、コンピュータの処理性能が向上したことに伴い、鍵長が 56 ビットという短さでは安全性の確保が難しくなりました。また、効果的な攻撃方法も報告されたため、DES に代わる新暗号アルゴリズムの公募を開始しました。

3DES (トリプル DES)

3 DES は、鍵長の短い DES の総当たり攻撃耐性が低くなったことを受け、考案されたものです。DES を暗号→復号→暗号の順に異なる 3 つの鍵を利用し、3 回実行することで暗号強度を高めたものです。

実装が比較的容易ですが、暗号化にも復号化にも非常に長い時間が掛かるのが難点となっています。

DES に代わる新暗号アルゴリズムが採用されるまでのつなぎとして利用されていたものとなり、2023 年には完全に使用を停止する提案がされています。

AES (Advanced Encryption Standard)

DES に代わる新暗号アルゴリズムとして応募された 21 方式より、「Rijndael (ラインダール)」が AES として採用されました。
AES はブロック長が 128 ビットのブロック暗号です。鍵長は 128 ビット・192 ビット・256 ビットのいずれかを利用可能です。鍵長が長いほど安全性は増しますが、比例して計算に時間がかかります。2018 年時点では鍵長が 128 ビットでも十分と言われています。
DES より安全で高速なため、現在主流のアルゴリズムとなっています。無線 LAN の暗号化規格である WPA や WPA2 にも利用されています。

公開鍵暗号方式

公開鍵暗号方式は、暗号化・復号化に異なる鍵を利用する暗号方式です。片方の鍵を「秘密鍵」、もう片方の鍵を「公開鍵」といいます。

暗号文を受ける側が、秘密鍵と公開鍵を生成し、公開鍵を暗号文を送る側に渡します。暗号文を送る側は公開鍵で平文を暗号化し、暗号文を送ります。暗号文を復号化できるのは秘密鍵のみのため、暗号文と公開鍵が第三者に渡ったとしても解読されない仕組みとなっています。

分かりづらいと思うので少し図解です。A さんが B さんに暗号文を送るケースです。

B さんは秘密鍵を元に公開鍵を作成し、公開鍵を A さんに送ります。

A さんは B さんの公開鍵を使って平文を暗号化し、暗号文を B さんに送ります。

B さんの公開鍵を使って暗号化された暗号文は B さんの秘密鍵のみが復号化が可能となっています。暗号化に使った公開鍵ですら暗号文を復号化することはできません。

公開鍵で暗号化した平文は、ペアとなる秘密鍵でしか復号化できません。

公開鍵はその名の通り誰にでも公開するもので、共通鍵暗号方式で課題となっている鍵の受け渡しの問題が発生しません。また、管理する鍵も秘密鍵と公開鍵の 2 種類のみのため、鍵の管理が非常にシンプルとなります。

ただし、共通鍵暗号方式に比べると暗号化・復号化の処理が複雑となるため、処理速度が遅くなります。

公開鍵暗号方式には、鍵生成アルゴリズム、暗号化アルゴリズム、復号アルゴリズムの3つのアルゴリズムがあります。

鍵生成アルゴリズム

セキュリティパラメータ (生成する鍵の長さなど) を入力すると、秘密鍵と公開鍵のキーペアが生成されます。乱数が利用されるため、ユーザーごとに異なる秘密鍵と公開鍵のキーペアが割り当てられます。

生成されたキーペアのうち、秘密鍵は厳重に保管し、公開鍵は暗号メッセージを送りたい相手に公開します。

暗号化アルゴリズム

鍵生成アルゴリズムにより生成された公開鍵と平文を入力すると暗号文が出力されます。

暗号メッセージを送りたい相手の公開鍵を取得し、平文を暗号文にした上で送ります。

復号アルゴリズム

自身の公開鍵で暗号化された暗号文と、ペアとなる秘密鍵を入力すると平文が出力されます。

公開鍵暗号方式の種類

公開鍵暗号方式には様々な種類があります。それぞれ、利用される目的が異なります。具体的に以下 3 つの目的が存在します。

  • 鍵交換
  • 暗号化
  • 署名

鍵交換は共通鍵を安全に配送するためのものとなります。

暗号化は先に説明した通り、暗号化に利用するものです。

署名の詳細は後述しますが、秘密鍵で平文を暗号化すると、ペアとなる公開鍵でしか復号化できないという性質を利用し、送った情報が秘密鍵を所持する本人のものであることを証明するものとなります。

以下、代表的な公開鍵暗号方式の種類となります。

DH (Diffie-Hellman)

Whitfield Diffie 氏と Martin E. Hellman 氏が 1976 年に発表した、鍵交換アルゴリズムです。送信者と受信者が事前に秘密を共有する必要がなく、盗聴の恐れがある通信経路を利用しても、安全に共通鍵のやりとりが可能となります。これは、離散対数問題を解くのは非常に困難であるという仮定に基づくものです。

通信経路に流れる情報 (公開鍵) を盗聴されても、元となる鍵の推測や生成は非常に困難であるため、盗聴には強い性質を持ちます。一方、鍵そのものに認証がないため、中間者攻撃に弱い性質も持っています。

RSA (Rivest-Shamir-Adleman)

Rivest 氏、Shamir 氏、Adleman 氏の 3 名が 1978 年に発表したアルゴリズムです。

同じ鍵ペアを暗号化と署名の両方に利用できることが特徴です。大きな整数の素因数分解が困難であるという仮定に基づいています。

DSA (Digital Signature Algorithm)

NIST が 1991 年に提唱した、デジタル署名のためのアルゴリズムです。離散対数問題を解くことが難しいという仮定に基づいています。デジタル署名専用のアルゴリズムであり、暗号化の機能はありません。

楕円曲線暗号 (ECC: Elliptic Curve cryptosystem)

Neal Koblitz 氏と Mxiller 氏が 1985 年に別々に考案した方式です。特定のアルゴリズムを指すのではなく、離散対数問題に楕円曲線を適用させて、強度を保ちつつ鍵長を小さくするために用いられます。主な適用例として、DSA に適用した ECDSA が有名です。

デジタル署名

公開鍵暗号方式にはもう一つの性質があります。それは B さんの秘密鍵で暗号化した暗号文は B さんの公開鍵でしか復号化できないという性質です。

B さんの公開鍵は公開されているので暗号文が解読されて困るのでは?という疑問が湧きますね。

そうなんです。みんなに解読されてしまい全く意味がないため、暗号化通信のために利用はしません

何に利用するのかというと、暗号化した暗号文が B さん本人が暗号化したもの、という証明をするために使います。それが【デジタル署名】となります。

B さんの「秘密鍵」で暗号化した暗号文を、B さんの「公開鍵」で復号化できたら、暗号文を作ったのは B さん本人という図式が成り立ちます。

ただし、現実とは違い、B さんはネットの向こう・・受け取った公開鍵が本当に B さんの公開鍵なのかすらわかりません。そこで B さん本人であることを証明するために、第三者である証明機関 (Certificate Authority) が存在します。

証明機関の詳細は以下の記事で説明します。

まとめ

各キーワードについておeさらいです。

平文 / 暗号文:意味の分かる情報を平文、平文を暗号アルゴリズムと暗号鍵で一見意味の分からなくしたものを暗号文という

暗号化 / 復号化:平文を暗号アルゴリズムと暗号鍵で一見意味の分からなくすることを暗号化、暗号文を復号アルゴリズムと復号鍵で意味の分かる情報にすることを復号化という

暗号アルゴリズム / 復号アルゴリズム:暗号化・復号化に利用する規則・ルール

暗号鍵 / 復号鍵:暗号化・復号化に利用する鍵

共通鍵:共通鍵暗号方式で利用される、暗号化する際も復号化する際も利用される共通の鍵

公開鍵 / 秘密鍵:公開鍵暗号方式で利用される、キーペアー
公開鍵で暗号化されたものは、対になっている秘密鍵でしか復号化できない
秘密鍵で暗号化されたものは、対になっている公開鍵でしか復号化できない

デジタル署名:公開鍵暗号方式の性質を利用した本人確認の技術

共通鍵暗号方式と公開鍵暗号方式のメリットデメリットは以下の通りです。

メリット デメリット
共通鍵暗号方式 ・処理が単純で速い ・鍵の管理が大変
・鍵の受け渡しに工夫が必要
公開鍵暗号方式 ・鍵の管理が容易
・鍵の受け渡しを考えなくてよい
・処理が複雑で遅い

以上、公開鍵暗号方式と共通鍵暗号方式の概要についてでした。

コメント

タイトルとURLをコピーしました