暗号化|つまづきやすいポイントと攻略法 徹底解説!
この連載は、基本情報技術者試験の受験者を対象としたものです。
毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。
今回のテーマは暗号化です。
もくじ
暗号化の2つの方式
暗号化される前の文書を「平文」と呼び、暗号化された文書を「暗号文」と呼びます。
平文を暗号文にすることを「暗号化」と呼び、暗号文を平文にすることを「復号」と呼びます。
「復号化」と呼ばないのは、暗号化は化けますが、復号は元に戻るのであって化けないからです。
暗号化の計算で使われる数値を「暗号鍵」と呼び、復号の計算で使われる数値を「復号鍵」と呼びます。
暗号化の方式には、「共通鍵暗号方式」と「公開鍵暗号方式」があります。
共通鍵暗号方式は、暗号化と復号で同じ値の鍵を使います。
たとえば、古代ローマのシーザーが好んで使っていたといわれる「シーザー暗号」では、平文を構成する文字を3文字ずらして暗号化し、暗号文を構成する文字を逆方向に3文字ずらして復号します。
これは、3を共通鍵とした共有鍵暗号方式です。
シーザー暗号をコンピュータで実現するには、図1に示したように、平文の文字コードに3を足すという計算で暗号化して、暗号文の文字コードから3を引くという計算で復号します。
【図1】共通鍵暗号方式の例(シーザー暗号)
公開鍵暗号方式は、暗号化と復号で異なる値の鍵を使います。
たとえば、「RSA暗号(RSAは、3人の考案者の名前の頭文字を並べたもの)」では、図2に示した計算で暗号化と復号を行います。
Modは、割り算の余りを求める演算を意味します。
ここでは、3と55が暗号鍵であり、7と55が復号鍵です(これらは、あらかじめ決められたルールに従った値であり、実用的な暗号化では、もっと桁数の大きな鍵を使います)。
除数は、同じですが、べき乗する値が異なることに注目してください。
【図2】公開鍵暗号方式の例(RSA暗号)
公開鍵暗号方式では、暗号化の鍵を「公開鍵」として、復号の鍵を「秘密鍵」とします。
受信者が公開鍵と秘密鍵を作成し、送信者にネットワークで公開鍵を知らせます。
ネットワークで知らせることは、公開したのも同然なので、公開鍵と呼ぶのです。
秘密鍵は、送信者しか知らない秘密にするので、秘密鍵と呼ぶのです。
送信者は、平文を公開鍵で暗号化して、暗号文をネットワークで送ります。
受信者は、受信した暗号文を秘密鍵で復号します。
もしも、ネットワークで暗号文が誰かに盗まれても、それを復号する秘密鍵は受信者しか知らないので、復号されることはありません。
異なる値の鍵で暗号化と復号ができる仕組み
公開鍵暗号方式では、異なる値の鍵で暗号化と復号ができますが、これを不思議に思うでしょう。
数というものは、3を足して変化させたなら3を引けば元に戻り、3を掛けて変化させたなら3で割れば元に戻る、というように、同じ値で逆の演算をすれば元に戻るものだからです。
先ほど例を示した公開鍵暗号方式の計算では、3乗して55で割った余りで変化させて、7乗して55で割った余りで元に戻しています。
どうして、このようなことが実現できるのでしょうか。
この仕組みを理解するために、表計算ソフトを使って、図3に示した表を作成しました。
表の左端で上から下に並んだ数字は、平文の文字に割り当てられた文字コードだとします。
表の上端で左から右に並んだ数字は、それらを何乗するかを示しています。
そして、それらが交わったセルには、文字コードをべき乗して55で割った値を示しています。
たとえば、左端の4と上端の5が交わったセルには、4の5乗を55で割った余りの34を示しています。
【図3】異なる値の鍵で暗号化と復号ができる仕組みを理解するための表
1乗しても値は変化しませんが、2乗以降では異なる値に変化しています。
そして、ここが大注目なのですが、21乗では元の値に戻っています。
21=3×7なので、3乗してから7乗することで21乗にすることもできます。
3乗すると異なる値に変化するので、暗号化ができます。それを7乗すると元の値に戻るので、復号ができます。
これが、異なる値の鍵で暗号化と復号ができる仕組みです。
仕組みがわかると、公開鍵と復号鍵の性質もわかります。
21乗を3乗と7乗に分けるのですから、公開鍵と復号鍵には「ペアで作るものである」という性質があります。
21=3×7は、21=7×3と表すこともできるので、公開鍵と秘密鍵には「それぞれを逆に使える」という性質もあります。
これは、公開鍵の3で暗号化すれば秘密鍵の7で復号でき、逆に秘密鍵の7で暗号化すれば公開鍵の3で復号できるということです。
鍵を逆に使えるという性質は、すぐ後で説明するディジタル署名で応用されています。
公開鍵暗号方式を応用したディジタル署名
公開鍵暗号方式を応用して「ディジタル署名」を実現できます。
文書にディジタル署名を添付すると、送信者に「なりすまし」がないことと、文書に「改ざん」がないことを検証できます。
図4にディジタル署名の作成と検証の手順を示します。
【図4】公開鍵暗号方式を応用したディジタル署名の仕組み
①送信者は、公開鍵と秘密鍵のペアを作成する。
②送信者は、文書の「ハッシュ値(文書を構成するすべてのデータを使って作られた1つの値であり「メッセージダイジェスト」とも呼ばれる)」を求めて、それを自分の秘密鍵で暗号化する。これが、ディジタル署名である。
③送信者は、文書(ここでは、文書は暗号化しません)、ディジタル署名(暗号化されたハッシュ値)、自分の公開鍵を、送信者に送る。
④送信者は、受信した文書のハッシュ値を求め(ハッシュ値の計算方法は秘密ではありません)、さらにディジタル署名を送信者の公開鍵で復号した値(送信者が計算したハッシュ値)を得る。両者が一致したら、なりすましと改ざんがないことを検証できる。なぜなら、送信者しか知らない秘密鍵で暗号化したからこそ送信者の公開鍵で復号できたのであり、文書に改ざんがないからこそハッシュ値が一致したからである。
暗号化に関する問題の攻略法(1)
暗号化に関する問題を見てみましょう。
以下は、暗号方式の特徴に関するする問題(出典:H30秋問38)です。
問題(出典:H30秋問38)
共通鍵暗号方式の特徴はどれか。
ア 暗号化通信に使用する場合、鍵を相手と共有する必要があり、事前に平文で送付することが推奨されている。
イ 暗号化通信をする相手が1人の場合、使用する鍵の個数は公開鍵暗号方式よりも多い。
ウ 同じ程度の暗号強度をもつ鍵長を選んだ場合、公開鍵暗号方式と比較して、暗号化や複合に必要な時間が短い。
エ 鍵のペアを生成し、一方の鍵で文書を暗号化すると、他方の鍵だけで複合することができる。
この問題の攻略法は、共通鍵暗号方式と公開鍵暗号方式の長所と短所を理解することです。
暗号化に2つの方式があるのですから、それぞれに他方と比べて長所と短所があります。
共通鍵暗号方式には、鍵をネットワークで送れないという短所がありますが、計算が単純なので処理が速いという長所があります。
公開鍵暗号方式には、暗号化の鍵をネットワークで送れるという長所がありますが、計算が複雑なので処理が遅いという短所があります。
事前に公開鍵をネットワークで送れるのは、共通鍵暗号方式ではなく、公開鍵暗号方式なので、選択肢アは不適切です。
通信相手が1人の場合、共通鍵暗号式に必要な鍵は1つ(共通鍵)であり、公開鍵暗号方式に必要な鍵は2つ(公開鍵と秘密鍵)なので、選択肢イは不適切です。
共通鍵暗号方式は、公開鍵暗号方式より計算が単純であり処理が速いので、選択肢ウは適切です。
鍵のペアを作成するのは、共通鍵暗号方式ではなく公開鍵暗号方式なので、選択肢エは不適切です。
したがって、選択肢ウが正解です。
暗号化に関する問題の攻略法(2)
暗号化に関する問題を、もう1つ見てみましょう。
以下は、公開鍵暗号方式を応用したディジタル署名の鍵の使い方に関する問題(出典:R01秋問38)です。
問題(出典:R01秋問38)
メッセージにRSA方式のディジタル署名を付与して2者間で送受信する。そのときのディジタル署名の検証鍵と使用方法はどれか。
ア 受信者の公開鍵であり,送信者がメッセージダイジェストからディジタル署名を作成する際に使用する。
イ 受信者の秘密鍵であり,受信者がディジタル署名からメッセージダイジェストを算出する際に使用する。
ウ 送信者の公開鍵であり,受信者がディジタル署名からメッセージダイジェストを算出する際に使用する。
エ 送信者の秘密鍵であり,送信者がメッセージダイジェストからディジタル署名を作成する際に使用する。
この問題の攻略法は、公開鍵暗号方式における公開鍵と秘密鍵を誰が作り、どのように使うかを、丸暗記ではなく、きちんと理解することです。
暗号化では、文書の受信者が公開鍵と秘密鍵のペアを作りますが、ディジタル署名では、文書の送信者が公開鍵と秘密鍵のペアを作ります。
なぜなら、送信者しか知らない秘密鍵で暗号化したからこそ送信者の公開鍵で復号できる、ということで、送信者本人である(なりすましがない)ことを検証するからです。
ここを、きちんと理解してください。
この問題では、検証を行う鍵を「検証鍵」と呼んでいます。
検証鍵は、送信者の公開鍵なので、選択肢ウが正解です。
今回は、「暗号化」のポイントと攻略法を解説しました。
このテーマが苦手だった受験者の参考になれば幸いです。
それでは、またお会いしましょう!
label 関連タグ免除試験を受けた 74.9% の方が、科目A免除資格を得ています。
※独習ゼミは、受験ナビ運営のSEプラスによる試験対策eラーニングです。

『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”
大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。
主な著作物
- 「プログラムはなぜ動くのか」(日経BP)
- 「コンピュータはなぜ動くのか」(日経BP)
- 「出るとこだけ! 基本情報技術者」 (翔泳社)
- 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
- 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数








