共通鍵暗号方式と公開鍵暗号方式の違いや仕組みについてわかりやすく!考え方、問題の解き方を図解を用いて解説【情報処理技術者-セキュリティ】

今回は情報技術者試験の午後問題でも必須項目となっている情報セキュリティにおいて、核となる部分の暗号化についてなるべくわかりやすく解説いたします。

勉強していると共通鍵と公開鍵の違いってなんだっけ?と忘れたり混乱してしまうことも多いと思いますので、そのあたりの違いを明確に覚えられるように解説していきます。

情報技術者試験において暗号方式を勉強する際の参考になれば幸いです。

スポンサーリンク
目次

暗号化とは

まずITにおける暗号の意味としてですが、何らかの処理を施し、第三者がその内容を見ても理解できないようにすることを指します。

ただし、やみくもに読めなくするのではなく、何らかの方式に従って暗号化された内容を元に戻すことができ、利用者がその内容を再度読めるようにする必要があります。

これがITにおける暗号であり、暗号化する前のデータを平文暗号化したデータを暗号文と呼び暗号文から平文に戻す処理を復号と呼びます。

一般的な暗号であれば、使用者間で決まったルールに基づいて暗号および復号されると思いますが、このルールを第三者が知っていた場合、暗号は簡単に解読されてしまいます。

そこで、ITにおける暗号化では鍵と呼ばれるデータを用いて暗号化されます。

例として数値データを暗号化させたいといった場合、数値データに対して何らかの数値を足すという暗号化方式であれば、この暗号の方式を知っていたとしても足された数値データが何なのかわからなければ、元の値を解読することはできません。

上記の図でいう “a” の値を当事者にだけ秘密にしておけば暗号化として機能します。

暗号化ではこの数値データに対して何らかの「数値を足す」という暗号化における仕組みの事を暗号化アルゴリズムといい、足された「数値データ」になります。

このように暗号化では暗号化アルゴリズムとそれに利用される鍵で成り立っています。

暗号化に必要なもの

1. 暗号化アルゴリズム

2. 鍵

暗号化の種類と代表的なアルゴリズム

暗号化の種類については上述した通り、共通鍵暗号方式公開鍵暗号方式があります。

それぞれの特徴および、代表的なアルゴリズムについて解説いたします。

共通鍵暗号方式とは

共通鍵暗号方式暗号化と復号とで同じ鍵を使用する暗号化アルゴリズムの事です。

代表的なアルゴリズムには AES ( Advanced Encryption Standard ) があり、共通鍵暗号方式 = AES として語られることも多いです。

共通鍵暗号方式は暗号化と復号化が同じ処理かつ、比較的簡単な構造になっているため、処理時間が短くて済むというメリットがあります。

ただし、共通鍵暗号方式では暗号化を用いてデータのやり取りを行う毎に必要にな鍵が増えるので、鍵の管理が煩雑になってしまうというデメリットが存在します。

共通鍵暗号化方式の代表的なアルゴリズム

名称だけでも覚えておくとよいと思いますので、ご確認ください。

-DES

ブロック単位に暗号化する方法をそのままブロック暗号方式といいますがDESは64bit単位にデータを区切り、それをまとめて暗号化するブロック暗号です。

-IDEA

128ビットの鍵から部分鍵を作り出し、平文に対して8回分の部分鍵で重ねて暗号化を実施します。

-RC4

鍵から1ビットずつ擬似乱数列というランダムに見える数列を生成し、平文と排他的論理和を取ったもので暗号化を実施します。

-AES

平文に対して区切り、置き換え・並べ替えの操作を複数回繰り返し暗号化を実施します。簡単な処理に加え暗号化のセキュリティが強固なものになっています。最も普及している共通鍵暗号方式です。

アルゴリズム名 方式 鍵長(ビット)
DES ブロック 56
IDEA ブロック 128
RC4 ストリーム 40 ~ 256
AES ブロック 128 / 192 / 256

公開鍵暗号方式 とは

公開鍵暗号方式は、暗号化のカギと復号のカギは異なるものを使用し、暗号化の鍵からは復号の鍵の内容がわからないようになっています。

要はドアのロックをかける鍵と解除する鍵が異なっていて、ロックする鍵が暗号化の鍵で、解除する鍵が復号の鍵ということです。

代表的なアルゴリズムには RSA がありこちらも公開鍵暗号方式 = RSA として語られる場合が多いです。

暗号化では暗号文が第三者に解読されるのがあってはならないことです。

共通鍵の場合は暗号化と復号には同じ鍵を使うので、暗号化の鍵を知られてしまうことは問題が生じるのですが、公開鍵暗号方式では、第三者に暗号化の鍵を知られてもできることは暗号化することしかできないので問題にはならないのです。

そのため、公開鍵暗号方式を利用する場合には、暗号化の鍵を公開して、自分にデータを送信してもらう場合にはこの公開された暗号化の鍵で、暗号化してもらうことができます。

そして自分は秘密にしている復号の鍵を用いて暗号化データを復号します。

暗号化の鍵は公開しているので受け渡しも楽ですし、何より管理しなくてはならないのは復号の鍵一本だけですので管理も容易になります。

公開鍵暗号方式では暗号化の鍵を公開鍵と呼び、復号の鍵を秘密鍵と呼ぶ場合がありますので覚えておきましょう。

公開鍵暗号方式は、共通鍵暗号方式に比べて強度も高く、鍵の管理も容易です。

このため、共通鍵暗号方式に比べて上位互換のように見えます…がしかし、その分処理が複雑で時間がかかりすぎてしまうという欠点が存在します。

公開鍵暗号方式の代表的なアルゴリズム

-ECC(楕円曲線暗号)

楕円曲線と呼ばれる数学上の概念を利用した暗号化を実施します。

-RSA

2つの大きな素数(256ビット以上)のをそれぞれ掛け合わせて得られた数が素因数に分解するのが極めて困難であるという性質を使って鍵を使用する方式です。最も普及している公開鍵暗号方式です。

アルゴリズム名 鍵長
ECC 256 ~
RSA 512 ~ 

共通鍵暗号方式と公開鍵暗号方式の違いとハイブリッド暗号方式

それではそれぞれの暗号化アルゴリズムについて特徴を抑えておくため以下の表を覚えておきましょう。

情報技術者試験対策としては以下の内容を抑えておけばとりあえずは問題ないかなと思います。

  処理速度 鍵の管理 暗号鍵 復号鍵 鍵の関係性
共通鍵暗号方式 早い 送信相手毎 秘密 秘密 暗号鍵 = 復号鍵
公開鍵暗号方式 遅い 1つ 公開 秘密 暗号鍵 復号鍵

共通鍵暗号方式と公開鍵暗号方式のほかに、それぞれの短所を補うような形で作られたハイブリッド暗号方式というアルゴリズムがあります。

ハイブリッド式暗号方式は公開鍵暗号方式を用いて共通鍵を通信相手へ安全に配送し、以後はその共通鍵を使用して暗号化通信を行う方式です。

単にそれぞれの短所である、処理速度の問題、鍵管理の手間を解消させるようになっているとだけ覚えておけば十分かと思います。

無線LANの認証方式におけるセキュリティプロトコルと暗号化方式

情報技術者試験ではたびたび無線LANの認証方式において、暗号化アルゴリズムの問題が出題される場合があります。

無線LANの認証方式というのは、主にWEPWPAWPA2のことを指します。

後で見返す必要がないようにここで一緒に覚えてしまうのが良いと思いますので、以下の表をそれぞれ確認しておきましょう。

認証方式 セキュリティプロトコル 暗号化アルゴリズム 鍵の長さ(ビット) セキュリティ強度
WEP WEP RC4 64/128 弱い
WPA TKIP RC4 128bit 普通
WPA CCMP AES 128/192/256
WPA2 TKIP RC4 128bit 強い
WPA2 CCMP AES 128/192/256

なお、ここで注意してほしいのはそれぞれの呼び方です。

ここで記載しているセキュリティプロトコルを他の情報では暗号化方式と書いてあったり、暗号化アルゴリズムの方が暗号化方式と書いてあったり、呼び方が統一されておりません

そのため、セキュリティプロトコルと暗号化アルゴリズムを一緒くたにしてしまい覚えた内容がごっちゃになってしまうことが多く、例えばTKIPとAESが同列のものであると勘違するといった事態が発生します。

書籍や他サイト様を参照する場合はそれがどの言葉を指しているのか翻訳しながら注意して読むようにしてください。

ここではWPAなどLANの認証の仕組みを認証方式、TKIPなどの暗号化ルールをセキュリティプロトコル、AESなど暗号化の仕組みを暗号化アルゴリズムと呼んでいます。

なお関係性は以下のようになっていますので、関係性だけは頭に入れておきましょう。

認証方式 ⊃ セキュリティプロトコル ⊃ 暗号化アルゴリズム

暗号化に関する問題を解いてみる

最後に暗号化に関する問題を解いてみましょう。

午前問題も午後問題もほとんど同レベルの内容で出題されますので、簡単に午前問題の内容を2つ解いてみましょう。

暗号方式に関する説明のうち,適切なものはどれか。

ここで,ひと組の公開鍵と秘密鍵は2個と数える。

ア. 共通鍵暗号方式で相手ごとに秘密の通信をする場合,通信相手が多くなるに従って,鍵管理の手間が増える。

イ. 共通鍵暗号方式を用いて通信を暗号化するときには,送信者と受信者で異なる鍵を用いるが,通信相手にその鍵を知らせる必要はない。

ウ. 公開鍵暗号方式で通信文を暗号化して内容を秘密にした通信をするときには,復号鍵を公開することによって,鍵管理の手間を減らす。

エ. 公開鍵暗号方式では,署名に用いる鍵を公開しておく必要がある。

暗号方式の特徴を答える問題です。

共通鍵暗号方式と公開鍵暗号方式の特徴は以下の通りでした。

  処理速度 鍵の管理 暗号鍵 復号鍵 鍵の関係性
共通鍵暗号方式 早い 送信相手毎 秘密 秘密 暗号鍵 = 復号鍵
公開鍵暗号方式 遅い 1つ 公開 秘密 暗号鍵 復号鍵

「ア.」は共通鍵暗号方式だと鍵の管理本数が増えるといっていますので正しそうです。

「イ.」は送信者と受信者で異なる鍵を用いると書いてありますが、鍵は同じものを使うのでしたので誤りです。

「ウ.」は復号鍵を公開するといってますが、方式に限らず復号鍵は絶対秘密なので誤りです。

「エ.」は今回の内容ではわからないのですが、署名に用いる鍵は秘密鍵ですので公開するのは誤りです。

署名に関しての内容は次の記事で解説しているのでよろしければこちらからどうぞ。

ではもう一つ問題をみてみましょう。

公開鍵暗号によって,n人が相互に通信する場合,全体で何個の異なる鍵が必要になるか。

ここで,ひと組の公開鍵と秘密鍵は2個と数える。

ア. n + 1

イ. 2n

ウ. n(n-1)/2

エ. log2n

公開鍵の本数は何本になるかというちょっした応用問題です。

まずは自分と送受信相手が公開鍵暗号方式を使って通信する場合を考えてみましょう。

一人が暗号化及び復号化を実施するには自分で管理している秘密鍵と公開されている公開鍵の2本が必要なのでした。

自分で必要な鍵の本数は公開鍵と秘密鍵の2本ですが、相手はどうでしょうか。

相手も送受信するのに公開鍵と秘密鍵が必要ですが、これは自分のものとは全く別、相手には相手の秘密鍵と公開鍵が必要になります。

同じ秘密鍵を複数人で使いまわしていたら秘密でもなんでもないですからね。

そのため、1人に対して2本の鍵が必要なことがわかります。つまり n に対して倍の鍵の本数が必要なのです。

選択肢を見直してみると n に対して2倍している 「イ. 2n」が正解です。

因みに選択肢 「ウ. n ( n – 1) / 2」は共通鍵暗号方式の鍵数になります。

鍵はペア毎に一本必要であり、

自分を含めた受信者の数 n 人 × 自分以外の送信者の数 分ペアが存在するので、n * (n-1) 本

ただし、この計算は自分から見た相手と相手から見た自分というペアで2倍にカウントされているので1/2する必要があり、結果ウの式になります。

いかがでしょうか。

それぞれの暗号方式におけるアルゴリズムやセキュリティプロトコル名は100%出るといっても過言ではないので、情報技術者試験対策としてはしっかり覚えておきましょう。

また、アルゴリズムでは公開鍵暗号方式の公開鍵と秘密鍵の関係性がよく問われるのでどういう役割なのかは頭に入れておく必要があります。

今回はここまでです。

お疲れ様でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

本業ではPHPを使ったWEBアプリやJavaを使用した基幹アプリを作成しております。Pythonは個人的に勉強しており、E資格を取ったりしたおかげで、業務でAIの研究とかも任されるようになりました。学習のアウトプットのために本サイトを運営しておりますが、これからPythonを学ぶという人のお役に立てればいいなと思います。わからないことや調査して記事にしてほしいことがございましたらご連絡いただけると幸いです。

コメント

コメントする

目次
閉じる