📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

【A/B試験_情報セキュリティ】04.デジタル署名と暗号化| 基本情報技術者試験

【基本情報技術者試験YouTuber】すーさん21:42

Transcription

こんにちは。本日は情報セキュリティ第4回として、暗号化やデジタル署名など、安全にデータを通信する方法を説明します。

本日の内容は、混乱する人が多い一方で、午前午後どちらの試験でも非常に良く出題されます。また、一度理解できれば得点源にすることができるので、今日の動画はいつも以上に集中して勉強してください。それでは、内容を見ていきましょう。

最初に、ネットワーク通信における3つの危険性を説明します。ネットワーク上でデータの通信を行う際、盗聴、改ざん、なりすましという3つの危険があります。本日学習する暗号化やデジタル署名は、この危険性に対しての対応策ですので、本日の内容を理解するために、まずはこの3つの危険性を確実に理解していきましょう。

盗聴とは、名前の通り、ネットワークでやり取りされているデータを第三者が盗み読むことです。これにより、会社間での契約など極秘情報が第三者に渡ってしまう可能性があります。

次に、改ざんとは、データの内容を第三者が勝手に書き換えることです。例えば、見積もりの内容を勝手に書き換えてしまい、不正取引につながるといった被害が考えられます。

最後のなりすましとは、第三者が正当な人物になりすましてデータをやり取りすることです。機密情報の流出や不正取引などの危険性があります。これら3つの危険に対処するために、暗号化技術やデジタル署名といった技術が用いられています。

それでは、最初に暗号化技術について説明します。暗号化は盗聴を防ぐ手法の一つです。例えば、メールを相手に送る際、そのままの状態で送るのではなく、メールに鍵をかけてデータを暗号化して送ります。そして、相手は鍵のついたデータを受け取ったら、それを元のメールに複合することで内容を確認することができます。このように、データに鍵をかけて暗号化をすることで、万が一第三者がメールの内容を盗み読もうとしても、データが暗号化されているため中身を読むことができなくなります。

この暗号化を行う際は、共通キー暗号方式と公開キー暗号方式という2つの方法があります。共通キー暗号方式とは、データを暗号化する際とデータを複合する際に同一の鍵を使って、その鍵を秘密にしておく暗号化手法です。一方、公開キーとは、暗号化と複合で別々の鍵を使い、かつ暗号化用の鍵を公開する方法です。これだけだと意味がわからないと思うので、それぞれ詳しく見ていきましょう。

共通キー暗号方式では、データの送り手が秘密キーと呼ばれる鍵で暗号化を行い、受け手側も同じ秘密キーを使ってデータを複合します。つまり、データを送る側と受け取る側で同じ鍵を使ってデータの暗号と複合を行います。当然、この鍵は秘密にしておく必要があります。この方法は一見問題ない方法に見えますが、例えばこのように送り手が複数いる場合、送り手の数に合わせて受け手は秘密キーを用意しなくてはならず、鍵の管理が煩雑になります。さらに、そもそもの前提として、この秘密キーが漏えいしたら何の意味もありませんので、秘密キー自体を安全に共有することが必要ですが、それがなかなか難しいんですね。このように、共通キー暗号方式では鍵の管理が困難というデメリットがあります。

そこで、もう一つの方法として公開キー暗号方式があります。公開キー暗号方式では、まず受信者が一般公開する鍵Aと、秘密にしておく鍵Aダッシュといった鍵のペアを用意します。この時注意点として、鍵Aで暗号化されたデータは鍵Aダッシュでしか複合できず、その逆もしかりです。そして、データを送る人は、ここがポイントですが、受信者が用意した公開用の鍵を使って暗号化してデータを送ります。というのも、別に暗号化用の鍵が一般公開されても、それを複合するための鍵が秘密になっていればデータを盗まれることはないので、暗号化用の鍵は一般公開しても問題ないんです。ですので、データの送信者は受信者の公開キーで暗号化してデータを送ります。そして、公開用の鍵Aで暗号化されたデータは、秘密にしている鍵Aダッシュでしか複合できないのでしたね。この鍵Aダッシュというのは受信者が持っている秘密キーですので、受信者は自身の秘密キー鍵Aダッシュを使ってデータ複合して内容を確認します。

ここについては、この後の内容を理解するためにも必ず腹落ちさせてほしいので、共通キー暗号方式と公開キー暗号方式について身近なイメージで説明します。例えば、私たちは一人暮らしをしている最中、実家に昔の黒歴史のノートが残っていたことを思い出し、両親に郵送してもらうように頼んだとしましょう。この黒歴史のノートは絶対に外部流出できないので、ただ郵送してもらうのではなく、厳重に管理する必要があります。そこで、まずは共通キー暗号方式でノートに鍵をかけてもらうことを考えます。共通キー暗号方式では一つの鍵を使って施錠と解除を行います。そこで、まずは両親が共通キーを使ってノートを施錠します。こうすればノートは絶対に見られることがないので安心して郵送できますが、問題はこの共通キーを父ちゃんにどのように届けてもらうかです。この黒歴史ノートのロックを解除するためには共通キーを使うしかないのですが、共通キーは今は両親が持っています。じゃあこの共通キーを郵送してもらうかと言ったら、当然そうすると共通キー紛失のリスクにつながり危険ですので郵送することはできません。つまり、両親に鍵を持ってきてもらうしかありません。そんなことをするのは馬鹿らしいので、共通キーではなく公開キー暗号方式で送ることを考えましょう。

公開キー暗号方式では、まず受け取り手、つまり私たちが自分自身で公開キーと秘密キーという鍵のペアを作成します。そして、公開キーは仮に紛失しても大きな問題はないので、公開キーを実家に郵送で送ってしまい、もう片方の秘密キーは厳重に自分の部屋で保管します。そしたら両親は公開キーが郵送で届いたら、黒歴史のノートに公開キーで鍵をかけて私たちに郵送します。このノートは鍵がかかっており、自分が持っている秘密キーでしか解除することができないので、他の誰かに見られることはなく安心安全です。そして安全にノートを郵送してもらったら、最後に自分が持っている秘密キーでノートのロックを解除することで、黒歴史のノートを見ることができます。このようなイメージに置き換えて、共通キー暗号方式と公開キー暗号方式を理解してください。

まとめると、送信者がデータを送る際、受信者が公開した公開キーAを使ってデータを暗号化し、受信者は秘密キーである鍵Aダッシュを使ってデータを複合します。この方法では、データの送信者が増えても、公開されている暗号化用の鍵をみんなが使えば良いので、鍵の数が増えず管理が簡単になります。ただし、公開キー暗号方式では暗号化の仕組みが複雑ですので、暗号化や複合に時間がかかります。

以上まとめると、共通キー暗号方式と公開キー暗号方式は、表のような特徴があります。これらの特徴はテストに出るので必ず覚えてください。また、この表の2行目に暗号アルゴリズムという新しい用語が登場しています。暗号アルゴリズムとは、データを暗号化する際にどのようなアルゴリズムで暗号化するかといったことを意味しています。共通キー暗号方式ではAESといったアルゴリズムが、公開キー暗号方式ではRSAや楕円曲線暗号などが使用されています。ここは中身までは問題として出題されないのですが、用語として登場することがあるので丸暗記してしまいましょう。

続いてハッシュ関数について説明します。ハッシュ関数とは、データを変換するアルゴリズムのことであり、これを利用してデータの改ざんを防ぎます。例えば、このような入力データがあった場合、そのデータに対してハッシュ関数を使用すると、別のデータが出力されます。この出力された値をハッシュ値と呼びます。なお、このハッシュ関数の代表としてSHA-256というものが有名ですので、この単語も知っておきましょう。

さて、このハッシュ関数には3つの特徴があります。1つ目は、入力データに対して必ず1つの出力データ、つまりハッシュ値が生成されます。逆に言うと、1つの入力データに対していくつものハッシュ値が生成されることはありません。2つ目は、同じハッシュ関数を使用した場合、入力データから得られるハッシュ値は常に等しいです。つまり、先ほどの1つ目の特徴と合わせると、入力データとハッシュ関数が等しい場合は、毎回必ず1つの決まり切ったハッシュ値が生成されるということです。そして最後の特徴として、ハッシュ関数は不可逆であり、出力データであるハッシュから入力データである元のデータへ逆変換することはできません。この特徴があると、例えば同じハッシュ関数を使用してハッシュ化された2つのデータがあり、そのデータの値が等しい場合は、ハッシュ化される前のデータも100%等しいということが保証されます。この特徴を生かしてデータの改ざんを防ぎます。

では、具体的な改ざんを防ぐ仕組みを見てみましょう。まず、送り手がデータを送る際、データをハッシュ化させて、ハッシュ値と元のデータの両方を相手に送ります。そして、受信者は受け取ったデータに対し、送信者と同じハッシュ関数を用いてデータをハッシュ化してみます。そして、自分でハッシュ化してみたデータと、相手から送られたデータを比較し、値が一致するか確認します。ここで値が一致していれば、元のデータ、つまり相手が送ったデータと自分が受け取ったデータが等しいものであり、データの改ざんがされていないことが保証されます。これがハッシュ関数を用いた改ざん防止方法です。

次にデジタル署名を説明します。これは先ほど学習したハッシュ関数および公開キー暗号方式の逆の手順を行うことであり、このデジタル署名によって改ざんとなりすましを防ぎます。少しややこしいのですが、非常に重要なポイントなので、必ず理解できるように頑張ってついてきてください。

デジタル署名を行うにあたり、また秘密キーと公開キーのセットを用意します。ただし、共通キー暗号方式では受信者の鍵を用意しましたが、デジタル署名では送信者の鍵のセットを用意してます。そして次に、送信者は送るデータをハッシュ化したハッシュ値を用意します。そしてここがポイントです。ハッシュ化されたデータを送信者の秘密キーで暗号化します。ここが公開キー暗号方式との違いですね。公開キー暗号方式では、送るデータを受信者の公開キーで暗号化しましたが、今回は送るデータを送信者の秘密キーで暗号化します。ですが、ここで気になるポイントが出てきます。秘密キーで暗号化されたデータというのは、そのペアのキーが公開されており、公開キーを用いて誰でも簡単に複合できてしまうので、言い換えるとこのデータは誰でも見れるようになってしまいます。これは問題ないのでしょうか?結論は問題ありません。なぜなら、このデータは元データをハッシュ化して生成されたハッシュ値なんです。ハッシュ関数の特徴として、ハッシュ値から元のデータに変換することはできないので、ハッシュ値が一般公開されても元のデータが流出することはないので問題ないということです。じゃあなぜ秘密キーを使って暗号化するんだというのは、この後理解できるので、まずはこのまま先に進みましょう。

こうして元データを動かして、さらに秘密キーで暗号化したら、この暗号化されたデータと元データを相手に送ります。そして受信者は、元データをまずはハッシュ化してみます。そして次に、送信者の秘密キーで暗号化されたハッシュ値を、送信者の公開キーで複合してハッシュ値を取り出します。ここがポイント2つ目です。送信者の公開キーである鍵Aダッシュで複合できたということは、このデータは送信者の秘密キーである鍵Aで暗号化されたことが証明されました。そして、送信者の秘密キーを持っている人は当然送信者本人しかあり得ません。つまり、このデータは本人から送られてきたことがわかり、なりすましが発生していないことが確認できました。

まとめると、公開キー暗号方式ではデータを安全に送りたいので受信者の公開キーでデータを暗号化したのですが、デジタル署名では本人であることを証明するため、データを送信者の秘密キーで暗号化したのです。つまり、公開キーと秘密キーを使う目的が異なるので、このように処理が異なっているということです。この違いをしっかり理解しておきましょう。そして最後に、自分でハッシュ化してみたハッシュと、公開キーによって複合されたハッシュ値を比べて、値が一致していたら同じデータであることわかるので、改ざんがないことも保証されました。このようにデジタル署名を実施することで、改ざんなしとなりすましなしが保証されます。試験を勉強している人の中には、この結果だけ丸暗記する人もよくいるのですが、理屈を理解すれば覚える必要は全くないので、必ずこの説明を腹落ちさせてください。

次に認証局とPKIについて説明します。こちらは用語の説明だけなので気軽に聞いてください。デジタル署名や共通キー暗号方式では公開キーが使用されましたが、そもそもこの公開キーというのは本人のものであるかを証明する必要があります。その際には認証局という証明期間が登場します。公開キーを利用する人は、公開キーと自身の身分証明書を認証機関に送ると、認証機関は内容をチェックし、本人であることが判断できたらデジタル証明書というものを発行します。このデジタル証明書があれば、公開キーは本人のものであると証明され、デジタル署名や暗号化を実施することができます。このように、認証機関や暗号化技術などによって、ネット上で安全にデータをやり取りできる仕組みを公開基盤もしくはPKIと呼びます。

それでは最後に、応用的な内容として、デジタル署名と暗号化を組み合わせたデータ送信方法を説明します。応用と5つ、これまで学習した内容を組み合わせているだけなので、デジタル署名や暗号化の理解を深めるためにも、必ず最後まで理解してください。

さて、これまで説明してきた技術では、盗聴、改ざん、なりすましのうち、どれか一つもしくは二つに対する対策でしたが、デジタル署名と暗号化を組み合わせることで、3つの危険を全て防ぐことができるようになります。実際には、ほとんどの通信ではこのデジタル署名と暗号化を組み合わせています。それで、は、この手順を確認していきましょう。

デジタル署名と暗号化を組み合わせる際は、送信者の公開キー・秘密キーのセットと、受信者の公開キー・秘密キーへの2セットを用意します。送信者のキーはデジタル署名に使用、受信者のキーは暗号化に使われます。そして最初に、データの送信者はデータをハッシュ化させて、そのハッシュ値を送信者の秘密キーで暗号化します。ここまでが、先ほど見たデジタル署名と同じ流れでした。デジタル署名では、この暗号化されたハッシュ値と元データを、受信者にそのまま送りましたが、今回はこれらをまとめて暗号化して送ることにします。そのために、この送るデータのセットを受信者の公開キーで暗号化し、そのデータを受信者に送ります。くどいですが、受信者の公開キーで暗号化されたデータは、受信者の秘密キーでしか復元することができませんので、このデータたちは安全に送ることができますね。

そして、暗号化されたデータが受信者に届いたら、受信者は自身の秘密キーでデータを複合します。これは公開キー暗号方式の手順であり、繰り返しですが、この方法によりデータの盗聴を防止できるのでした。そして、元データと暗号化されたハッシュ値が手元に届いたら、あとはデジタル署名と同じ手順です。まずは元データをハッシュ化します。次に、暗号化されたデータを送信者の公開キーで複合します。送信者の公開キーでデータを複合できたら、このデータは送信者の秘密キーで暗号化されたもの、言い換えると送り主は送信者本人であり、なりすましがないことがわかりました。最後に、自分でハッシュ化したハッシュと、今複合したハッシュ値を比較し、値が一致していればデータの改ざんがないことがわかります。こうして、盗聴、改ざん、なりすましの3つの対策をした通信を実施することができました。くどいですが、非常に大切な考え方なので、必ず理解するようにしてください。

それでは最後に、過去問を3つ解いて終わりになります。1つ目です。動画を止めて考えてみてください。なお、選択肢にあるメッセージダイジェストとはハッシュ値のことです。それでは回答です。RSAを使用してデジタル署名をする、とあります。RSAとは公開キー暗号方式の暗号アルゴリズムのことなので、この問題では公開キー暗号方式を用いたデジタル署名について問われています。この時のデジタル署名の検証キーを選択します。デジタル署名は送信者の本人確認をするため、送信者が自身の秘密キーを用いてメッセージダイジェスト、つまりハッシュ値を暗号化します。そして、受信者が送信者の公開キーでこのデータを複合できた際、そのメッセージダイジェストは送信者本人の秘密キーで暗号化されたことが証明され、言い換えると本人確認ができるという仕組みでした。よって、デジタル署名を検証する際に使用する鍵は送信者の公開キーであり、用途は暗号化されたメッセージダイジェストを復元する際に使用します。これを表現している選択肢はウです。

続いて2問目です。共通キー暗号方式の特徴を選択してください。それでは回答です。共通キー暗号方式と公開キー暗号方式の特徴は動画内でまとめましたね。必ず覚えるようにしましょう。共通キー暗号方式では鍵の管理が複雑である一方、暗号化や複合の処理時間が短いという特徴がありました。よって答えはウです。他の選択肢を見ると、アは共通キーを暗号化せずに事前に送っているのでセキュリティリスクがあり、当然誤りです。続いてイです。暗号化する相手が一人の場合、共通キー暗号方式では受信者と送信者は同じ鍵を使いますので、一つの鍵を使います。一方、公開キー暗号方式ではペアである秘密キーと公開キーの2つの鍵を使用するので、鍵は公開キー暗号方式の方が多いです。ただし、暗号化する相手が3人4人と増えてくると、共通キー暗号方式では人数に合わせて鍵も3つ4つと用意する必要がある一方、公開キー暗号方式では相手が何人になっても変わらずに公開キーと秘密キーの2つの鍵だけを使用すれば良いんでした。ここは混乱しないように整理しておいてください。最後にエについて、鍵のペアを作成するのは公開キー暗号方式であり、共通キー暗号方式では一つの鍵しか作成していないので誤りです。

最後に3問目です。PKIにおける認証局の役割を選んでください。それでは回答です。PKIとは、認証機関や暗号化技術などによって、ネット上で安全にデータをやり取りできる仕組みのことです。その中の認証局の役割は、公開キーが本人のものであることを証明するデジタル証明書というものを発行することでした。よって答えはウとなります。

それでは、本日の内容は以上です。最後までご視聴ありがとうございました。最初は難しく感じたかもしれませんが、必ず復習して理解するようにしてください。質問はコメント欄に記載いただければ、できる限り回答しますので、お気軽にご期待ください。

[音楽]