【基本情報技術者試験対策:集中講義】各種暗号化方式
基本情報技術者試験を受験する人は必見です!!
この記事では、基本情報技術者試験の午前問題で出題される暗号化に関する問題の解き方を5年分の過去問題を利用して集中的に解説します。
近年、ネットワークに関する問題の出題数は減少傾向にありますが、セキュリティに関する問題は増加傾向にあります。セキュリティについての知識はインフラエンジニアのみならず、プログラマにとっても非常に重要なものです。セキュリティ対策を正しくおこなったプログラムを開発することは現在では当たり前のことになっています。また、不正操作などはネットワークを介しておこなわれることが多いため、インフラエンジニアは不正アクセスに強いネットワークの構築、運用するスキルが求められています。
今回はセキュリティ関連のうち、共通鍵暗号化方式や公開鍵暗号化方式などの暗号化方式について図を交えながらがら説明し、さらに基本情報技術者試験の過去問題について解説します。
まず、この記事は以下のような人を対象としています。
対象者・これから基本情報技術者試験を受験しようと考えている人
・現在基本情報技術者試験の勉強をしている人
・共通鍵暗号化方式と公開鍵暗号化方式の違いについて知りたい人
この記事を読むと、次のようなことが理解できるようになります。
この記事を読むとできること・基本情報技術者試験の暗号化方式に関する過去問題を集中的に勉強することができる
・共通鍵暗号化方式と公開鍵暗号化方式の違いについて理解することができる
最近、基本情報技術者試験で暗号化の問題が出題されているのですが、共通鍵暗号化方式と公開鍵暗号化方式の違いがよく分かりません。
暗号化方式は基盤技術として利用されていて、一般のユーザはほとんど気にする必要がありません。そのため、理解するのが難しくなっています。
確かに、身の回りで暗号化方式が使われているイメージが全然ありません。
ホームページ閲覧などでは必須の技術なんですよ。今回は各種暗号化方式の違いについて解説します。
あわせて、基本情報技術者試験の関連問題についても解説します。
このサイトでは、基本情報技術者試験の集中講義を他の記事でも解説しています。ぜひ、あわせて勉強してみてください。
暗号化と復号
「暗号化」とは「あるデータを何らかの計算式によって全く異なったデータに変換する処理」のことです。また、「復号」とは「暗号化されたデータを元のデータに戻す処理」のことです。なお、「復号」を「復号化」とは呼びませんので注意しましょう。
暗号化技術は、戦争で積極的に開発されてきた技術の1つです。戦時中は味方内で情報共有を安全におこなうために敵国に盗聴されても大丈夫なように電文を暗号化して送信していました。また、敵国は暗号化されたデータを復号する技術の開発を積極的におこなっていました。暗号化技術が発達した背景は戦争にあります。
ネットワーク自体も攻撃されても情報共有できるように遠隔地のサーバを接続するための技術として開発されたものです。このように私たちが日頃当たり前のように利用している技術の中には戦争によって開発されたものが少なくありません。
暗号化アルゴリズムと鍵
暗号化処理や復号処理をおこなう際、各種暗号化アルゴリズムが利用されます。この暗号化アルゴリズムは複雑な処理をする計算式です。複雑な計算式を利用すれば安全なデータを作ることができますが、その分処理に時間がかかります。安全なデータとは正規な処理以外では復号ができないという意味になります。
また、暗号化アルゴリズムの計算ではユーザ毎に異なるデータを利用して処理をおこないます。このユーザ毎に異なるデータを「鍵」と呼びます。鍵は暗証番号のようなものなので、他人に漏れないように厳重に管理しなければなりません。
鍵は「単なる文字列の羅列」です。以前は256文字程度でしたが、現在は1024文字や2048文字以上と鍵の長さが長くなっています。
現在コンピュータの性能が向上しているため、暗号化や復号にかかる時間が短縮されつつあります。これは、悪意のあるユーザがデータを復号する時間も短くなっていることも意味します。暗号化の安全性を高めるために「鍵」はより複雑になっています。
暗号化と復号の処理方法には「共通鍵暗号化方式」と「公開鍵暗号化方式」の2種類があります。それぞれどのような特徴があるのか、これから説明します。
共通鍵暗号化方式
共通鍵暗号化方式の特徴は以下の通りです。
- データの送信者が鍵(共通鍵)を作成する
- 暗号化と復号で同じ鍵(共通鍵)を利用する(対象アルゴリズム)
- 作成した共通鍵を相手に事前に送付する
- 鍵の受け渡しが面倒
- 処理時間が短い
- 代表的なアルゴリズム・・・DES、RC4、AES
- 相手毎に鍵を作成する
共通鍵暗号化方式は処理の時間が短くて良いのですが、鍵をいかに安全に相手に渡すかが大きな問題となります。鍵はパスワードと同じなので、漏洩すると暗号化されたデータが簡単に復号されてしまいます。作成した鍵をメールなどを使って送信すると、メール自体を盗聴され鍵が漏洩してしまう危険性があります。したがって、直接相手に手渡すか、書留などの郵送や宅配便を使って確実に相手に届けなければなりません。
共通鍵暗号化方式では鍵の受け渡しが大きな障害となります。
共通鍵暗号化方式の暗号化アルゴリズム
共通鍵暗号化方式で利用される代表的なアルゴリズムについて簡単に説明します。
DES(Data Encryption Standard)
- ブロック毎に暗号化処理をおこなう
- 鍵長は56ビット
鍵長が短く安全性が低いです。
RC4(Rivest’s Cipher4)
- ビット単位で暗号化処理をおこなう
- 鍵長は40~254ビット
- 処理が高速
- 無線LANの暗号化処理(WEP)で使用されている
鍵長が短く安全性が低いです。
なお、無線LANのWEPは深刻な問題があるので、使用している場合は直ちに設定変更をしましょう。
AES(Advanced Encryption Standard)
- アメリカ国立標準技術研究所(NIST)が開発したDESの後継技術
- 鍵長は128ビット、192ビット、256ビット
- 電子政府推奨暗号リストの1つ
安全性が高いので、共通鍵暗号化方式で主に利用されている暗号化アルゴリズムです。
共通鍵暗号化方式の処理の流れ
では、共通鍵暗号化方式を使ってデータを送信する流れについて図を使って説明します。
まず、共通鍵暗号化方式ではデータを送信する側で「鍵(共通鍵)」を作ります。イメージしやすいように、この鍵はダイヤル式鍵の「暗証番号」と考えてください。
暗号化から送受信の流れは以下の通りです。
- 送信者が鍵(共通鍵)を作成する
- 送信者は何らかの方法で作成した鍵を相手(受信者)に手渡す
- 送信者は送信するデータを鍵(共通鍵)を使って暗号化する
- 送信者は暗号化したデータを送信する
- 受信者は受け取ったデータを事前に取得している鍵を使って復号する
暗号化処理は作成したデータを箱に詰めて、鍵を閉める作業だと考えてください。鍵を掛けられた箱は暗証番号(共通鍵)が分からないと開けることはできません。暗号化されたデータを送信中に悪意のあるユーザ(クラッカー)に盗聴されても、暗証番号が分からなければ鍵を開けることはできません。
事前に暗証番号(共通鍵)を受け取っている受信者は、データを受信後に暗証番号を使って鍵を開け、中のデータを取り出すことができます。
このようにして、共通鍵暗号方式ではデータを安全に相手に届けます。
共通鍵暗号化方式では送信相手毎に暗証番号(共通鍵)を変えないといけないため、鍵の管理も大変になります。
公開鍵暗号化方式
公開鍵暗号化方式の特徴は以下の通りです。
- データの受信者が鍵(公開鍵と秘密鍵)を作成する
- 暗号化と復号で異なる鍵(公開鍵、秘密鍵)を利用する(非対象アルゴリズム)
- 作成した公開鍵を相手に事前に送付する
- 鍵(公開鍵)の受け渡しが簡単(盗聴・漏洩しても問題ない)
- 処理時間が長い
- 代表的なアルゴリズム・・・RSA、DSA
- 鍵は自分用だけ作成する
公開鍵暗号化方式では、鍵(公開鍵)の受け渡しを非常に簡単におこなうことができます。作成した鍵はメールに添付して送信することも可能です。メールで送信した際に途中で盗聴され、鍵が漏洩してもデータは安全に送受信することができます。一方、暗号化/復号にかかる処理は共通鍵暗号方式と比較すると長い時間がかかります。
公開鍵暗号化方式と共通鍵暗号化方式はそれぞれ一長一短があります。ただし、鍵を簡単にやり取りできるため公開鍵暗号化方式の方が一般的に利用されています。
現在は共通鍵暗号化方式と公開鍵暗号化方式の利点のみを使った暗号化方式を利用することが多くなっています。HTTPS通信などは「共通鍵暗号化方式+公開鍵暗号化方式」の処理が使われています。
公開鍵暗号化方式の暗号化アルゴリズム
公開鍵暗号化方式で利用される代表的なアルゴリズムについて簡単に説明します。
RSA(Rivest Shamir Adleman)
- 大きい数の素因数分解の困難さを利用した方式
- 鍵長は2048ビット以上が推奨
最も一般的に使用されている暗号アルゴリズムです。
DSA(Digital Signature Algorithm)
- 離散対数問題を利用した方式
- 鍵長は160ビット×2
- 鍵の生成にはハッシュ関数(SHA-1)を利用
- アメリカ政府標準のディジタル署名方式に指定
公開鍵暗号化方式の処理の流れ
では、公開鍵暗号化方式を使ってデータを送信する流れについて図を使って説明します。
まず、公開鍵暗号化方式ではデータを受信する側で鍵を作ります。共通鍵暗号化方式では送信者が鍵を作成していましたが、公開鍵暗号化方式では受信者が鍵を作成します。この特徴を問う問題が過去に何問か出題されています。
また、作成する鍵は「公開鍵」と「秘密鍵」の2種類になります。共通鍵暗号化公式では鍵が「共通鍵」の1つだったので、鍵の数がまず違います。説明しやすいように公開鍵が「南京錠」、秘密鍵が「南京錠を開ける鍵」とします。南京錠と鍵はこの組み合わせでのみ開錠することができるようになっています。
暗号化から送受信の流れは以下の通りです。
- データの受信者は鍵(公開鍵と秘密鍵)を作成する
- 受信者は作成した公開鍵だけを送信者にメールなどで送信する
- 送信者は受け取った公開鍵で送信するデータを暗号化する
- 送信者は暗号化したデータを送信する
- 受信者は受け取ったデータを既に作成していた秘密鍵を使って復号する
公開鍵暗号化方式では、データの受信者は自分で作成した公開鍵(南京錠)をメールなどを使って相手に送信します。したがって、クラッカーにこの公開鍵を盗聴されてしまう危険性があります。しかし、公開鍵暗号化方式では、この公開鍵が漏洩しても問題ありません。問題ない理由を説明します。
送信したデータもクラッカーによって盗聴されたとします。この場合、クラッカーの手元には公開鍵(南京錠)と公開鍵(南京錠)で暗号化されたデータがあります。しかし、南京錠(公開鍵)で南京錠(公開鍵)は開錠できません。南京錠(公開鍵)を開けるためには秘密鍵が必要です。クラッカーは秘密鍵を持っていないため、どう頑張ってもデータを復号することは不可能です。したがって、公開鍵と暗号化されたデータを同時に盗聴してもどうすることもできないのです。
このようにして、公開鍵暗号化方式では公開鍵とデータを安全に手軽に相手に届けます。
過去問題
では、過去5年間(春季、秋季)で出題された問題のうち、暗号化に関する過去問題を実際に解いてみましょう。
まず、各試験でどのような問題が出題されているのか、一覧表示して確認してみましょう。
- 平成27年 春季 暗号化と復号で同じ鍵を使う暗号化方式、公開鍵暗号化方式で利用される鍵
- 平成27年 秋季 公開鍵暗号化方式で利用される鍵
- 平成28年 春季 出題なし
- 平成28年 秋季 出題なし
- 平成29年 春季 公開鍵暗号化方式の暗号アルゴリズム
- 平成29年 秋季 公開鍵暗号化方式の種類
- 平成30年 春季 公開鍵暗号化方式で利用される鍵
- 平成30年 秋季 共通鍵暗号方式の特徴
- 平成31年 春季 楕円曲線暗号の特徴
- 令和元年 秋季 出題なし
平成27年 春季 暗号化と復号で同じ鍵を使う暗号化方式
問題を読むと、「暗号化と復号とで同じ鍵を使用する暗号化方式」と書かれているので、これは「共通鍵暗号化方式」のことです。あとは、選択肢の中で共通鍵暗号化方式で利用される暗号化アルゴリズムを選びます。各選択肢について簡単に説明します。
ア AESは共通鍵暗号方式で利用される暗号化アルゴリズムです。
イ PKIは「Public Key Infrastructure」の略で、公開鍵暗号化方式の社会的な信頼性を確保する基盤技術の総称です。公開鍵は暗号化処理やサーバ証明書などで利用される重要な技術なので、その使用される公開鍵が信頼できるものかを証明、管理する仕組みが必要です。
ウ RSAは公開鍵暗号化方式の暗号化アルゴリズムです。
エ SHA-256は「Secure Hash Algorithm」の略で、ハッシュ値を作成するハッシュ関数の一種です。あるデータを使ってハッシュ関数を実行するとハッシュ値が作成されます。暗号化では鍵を使って復号できますが、ハッシュ値は元に戻すことができません。このような値を不可逆値と呼びます。パスワードをデータベースに保存する際に万が一情報漏洩しても、元のパスワードに戻せないようにハッシュ値を使う場合が多数あります。サーバ証明書などでもハッシュ値が利用されています。
以上のことから、正解は「ア」です。
平成27年 春季 公開鍵暗号化方式で利用される鍵
公開鍵暗号化方式で、データを送信する際に利用される鍵の種類を質問している問題です。公開鍵暗号化方式では、データの受信者がまず公開鍵と秘密鍵を作成し、公開鍵のみを相手に送信します。データを暗号化して送信したい相手は受け取った公開鍵でデータを暗号化します。
問題文を見ると、Aさんが送信者、Bさんが受信者となります。したがって、暗号化で利用される鍵は「受信者(B)の公開鍵」となります。
したがって、答えは「ウ」です。
平成27年 秋季 公開鍵暗号化方式で利用される鍵
この問題も「公開鍵暗号化方式のデータ暗号化で利用される鍵の種類」を質問しています。
公開鍵暗号化方式では、受信者の公開鍵でデータを暗号化するので、問題から送信者、受信者が誰かを確認します。問題文を読むと、送信者はX、受信者はYとなっているので、利用する鍵は「Yさんの公開鍵」となります。
したがって、答えは「ウ」となります。
平成29年 春季 公開鍵暗号化方式の暗号アルゴリズム
各選択肢を簡単に説明します。
ア AESは共通鍵暗号化方式で利用される暗号化アルゴリズムです。
イ KCipher-2は日本で開発された共通鍵暗号化方式用の暗号化アルゴリズムです。AESより10倍程度高速処理がおこなえます。
ウ RSAは公開鍵暗号化方式で利用される暗号化アルゴリズムです。
エ SHA-256はハッシュ値を求めるハッシュ関数の1種です。
以上のことから、答えは「ウ」です。
平成29年 秋季 公開鍵暗号化方式の種類
この問題は暗号化アルゴリズムの特徴まで質問されているので、多少難易度が高い問題です。
まず、各暗号化アルゴリズムを共通鍵暗号方式用と公開鍵暗号化方式用に分類してみます。
- 共通鍵暗号化方式用暗号化アルゴリズム : AES
- 公開鍵暗号化方式用暗号化アルゴリズム : DH、DSA、RSA
次に、公開鍵暗号化方式用暗号化アルゴリズムの特徴を再度確認してみます。
- DH : 離散対数を利用した暗号化アルゴリズム
- DSA : 離散対数を利用した暗号化アルゴリズム
- RSA : 素因数分解の困難さを利用した暗号化アルゴリズム
以上のことから、正解は「エ」となります。
平成30年 春季 公開鍵暗号化方式に利用される鍵
公開鍵暗号化方式では、一緒に作成された公開鍵と秘密鍵の組み合わせだけで復号することができます。問題文を読むと、「AさんがBさんの公開鍵を利用して電子メールを暗号化した」と記述されているので、復号できるのは「Bさんの秘密鍵を持っているユーザのみ」となります。通常、秘密鍵は作成者のみで所有し、他のユーザに渡すことは絶対ありません。したがって、秘密鍵を所有しているのはBさんのみとなります。
各選択肢について確認してみましょう。
ア データを復号できるのは、受信者(Bさん)の秘密鍵だけなので、「Aさんの公開鍵で復号できる」という説明は間違いです。
イ データの復元は受信者(Bさん)の秘密鍵なので、この説明は正しいです。
ウ 公開鍵で暗号化されたデータは同じ公開鍵では復号できません(復号できるのは秘密鍵です)。したがって、この説明は間違いです。
エ 公開鍵で暗号化されたデータは秘密鍵で復号できますが、復号できるのは同じユーザの公開鍵と秘密鍵の組み合わせのみです。したがって、Bさんの公開鍵のデータをCさんの秘密鍵では復号できません。したがって、この説明は間違いです。
以上のことから、正解は「イ」です。
平成30年 秋季 共通鍵暗号方式の特徴
各選択肢について確認してみましょう。
ア 共通鍵暗号化方式では、鍵を事前に相手と共有しておく必要があります。「平文」というのは暗号化もせずデータをそのまま扱うことで、平文のまま送付すると盗聴・漏洩される危険性が非常に高いので、鍵を平文のまま送付することは絶対にしてはいけません。したがって、この説明は間違いです。
イ 共通鍵暗号化方式では、通信する相手毎に秘密鍵を作成します。一方、公開鍵暗号化方式では、通信相手の数にかかわらず作成する鍵は公開鍵と秘密鍵の2つです。したがって、通信相手が一人の場合、作成される鍵の数は「共通鍵暗号化方式では1つ(共通鍵)」、「公開鍵暗号化方式では2つ(公開鍵と秘密鍵)」となります。したがって、1人の場合は共通鍵暗号化方式の方が鍵の数が少なくなります。つまり、この説明は間違いです。
ウ 共通鍵暗号化方式の特徴は「鍵の受け渡しが面倒だが、暗号化と復号にかかる処理時間は公開鍵暗号化方式より短い」ということです。したがって、この説明は正しいです。
エ 共通鍵暗号化方式では作成する鍵は「秘密鍵」の1つだけで、「鍵のペア」は作成しません。したがって、この説明は間違いです。
以上のことから、正解は「ウ」となります。
平成31年 春季 楕円曲線暗号の特徴
「楕円曲線暗号」についての詳細は理解する必要はありません。単に大きな特徴だけ覚えておけばよいでしょう。
- 公開鍵暗号化方式で利用される暗号化アルゴリズムの1つ
- 特定の暗号化アルゴリズムの名称ではなく、複数の暗号化アルゴリズムの総称
- 公開鍵暗号化方式で利用されるRSAより安全性が高い
以上のことから、正解は「ア」となります。
まとめ
今回は、共通鍵暗号化方式と公開鍵暗号化方式について説明しました。
現在のインターネットでは、より安全にデータの送受信をおこなうためには暗号化技術は重要な役割を果たしています。暗号化技術は目立つ技術ではありませんが、その仕組みについてはエンジニアの人は理解しておいた方がよいでしょう。
・共通鍵暗号化方式の特徴
- データの送信者が「秘密鍵」を作成する
- 鍵の受け渡しが困難だが、暗号化/復号処理は早い
- データの送信者が自分で作成した共通鍵でデータを暗号化する
・公開鍵暗号化方式の特徴
- データの受信者が「公開鍵」と「秘密鍵」を作成する
- 鍵の受け渡しが簡単だが、暗号化/復号処理は遅い
- データの送信者が事前に受信した公開鍵でデータを暗号化する
各種暗号化技術については理解できましたか?
難しい用語が多くて、すぐには理解できそうもありません。
共通鍵暗号化方式と公開鍵暗号化方式の特徴については、簡単にでも構わないので、ぜひ理解しておいてください。
鍵の種類や数、暗号化でどの鍵が使われるのか、などきちんと整理しておきます!!
このサイトでは、基本情報技術者試験の午前問題について、以下の記事で集中講義しています。是非、合わせてご覧ください。