この記事では共通鍵暗号方式と公開鍵暗号方式とディジタル署名についてIT初心者にも分かりやすく解説します。
共通鍵暗号方式
- 暗号化とは送信データを第三者に容易に解読出来ないようにすること。
- 復号化とは暗号化したデータを元に戻すこと。
- 共通鍵暗号方式は暗号化にも復号化にも同じ鍵を使う方式。
- メッセージ認証符号は受信したデータが改ざんされていないことを確認するために使われる。
公開鍵暗号方式
- 公開鍵暗号方式は送信者が「受信者が作成した暗号化鍵」で暗号化し、
受信者が「受信者が作成した復号化鍵」で復号化する方式。
ディジタル署名
- ディジタル署名は送信者が「送信者が作成した暗号化鍵」で暗号化し、
受信者が「送信者が作成した復号化鍵」で復号化する方式。
応用情報では共通鍵暗号方式や公開鍵暗号方式やディジタル署名に関する問題が出題されます。是非最後までご覧ください。
データの暗号化
インターネット上で通信を行うとき、悪意を持った人から様々な脅威に晒されます。
代表的な脅威に盗聴・改ざん・なりすましがあります。
盗聴とは送信されたデータの内容を悪意のある第三者が盗み見ることです。
改ざんとは送信途中で悪意のある第三者がデータを書き換えることです。
なりすましとは悪意のある第三者が本人になりすましてデータを送信することです。
暗号化と復号
盗聴への対策として有効な方法がデータの暗号化です。データは暗号化することで容易に解読が出来ないようになります。また、暗号化したデータは復号化することで普通に解読出来るデータとなります。送信者がデータを送信する時にデータを暗号化して、受信者が受け取ったデータを復号化すれば盗聴の危険に晒されることはなくなります。これをデータの暗号化と言います。
データの暗号化には暗号化鍵、データの復号化には復号鍵を使います。
共通鍵暗号方式
共通鍵暗号方式は、暗号化鍵と復号鍵が共通の暗号方式です。データを暗号化するのにも復号化するのにも同じ鍵を使うのが共通鍵暗号方式です。
共通鍵暗号方式では、あらかじめ送信者と受信者で同じ鍵を持っておきます。なので、あらかじめ誰とデータのやり取りをするのかが決まっている場合に使われ、不特定多数とのデータ通信には向いていません。
共有鍵暗号方式の仕組みにAESやDESなどがあります。
メッセージ認証符号
共通鍵暗号方式では、受信したメッセージが改ざんされていないかを受信者側が確認するためにメッセージ認証符号を使うケースがあります。送信者はメッセージから特定の計算方法でメッセージ認証符号を生成して、メッセージと一緒に送信します。受信者は受け取ったメッセージから送信者と同じ鍵を使ってメッセージ認証符号を生成し、送信者から送られたメッセージ認証符号と同じであることを検証します。
送信者から送られたメッセージ認証符号と受信者が生成したメッセージ認証符号が一致しなければメッセージが改ざんされたと分かります。
公開鍵暗号方式
公開鍵暗号方式は、暗号化鍵と復号鍵が異なります。送信者は「受信者が作成した暗号化鍵」で暗号化を行い、受信者は「受信者が作成した復号鍵」で復号します。
公開鍵暗号方式では暗号化鍵は不特定多数に公開されています。しかし、対となる復号鍵は受信者しか持っていないため、正規の受信者以外はデータを確認出来ません。公開鍵暗号方式は不特定多数との通信に向いています。
公開鍵暗号方式の仕組みにRSAや楕円曲線暗号などがあります。RSAは大きな数の素因数分解が難しいことを利用した仕組みで以前はよく使われていましたが、近年はRSAより鍵長が短いにも関わらず安全性が変わらない楕円曲線暗号が使われるようになってきています。
ディジタル署名
ディジタル署名は正規の送信者からのデータなのか、データが改ざんされていないかを確かめるために、公開鍵暗号方式を応用した暗号方式です。送信者は「送信者が作成した暗号化鍵」で暗号化を行い、受信者は「送信者が作成した復号鍵」で復号します。
ディジタル署名では復号鍵が不特定多数に公開されています。受信者はデータを受け取ったら、公開されている復号鍵でデータの復号を行います。データの暗号に使う暗号化鍵は正規の送信者しか持っていないはずなので、正しくデータの復号が行えるということは正規の送信者から送られたデータであるということが分かります。
また、ディジタル署名ではデータが改ざんされているかどうかも確認できます。
ディジタル署名の仕組み
送信者側の仕組み
ディジタル署名を使ってデータを送信する場合、送信者は2つのデータを送信します。
①送りたいデータ
②送りたいデータのハッシュ値を暗号化したもの
ハッシュ値とはデータから作成した文字列のことで、このような特徴を持っています。
- 同じデータから作成したハッシュ値は必ず同じ文字列になる
- データからハッシュ値を作成することは出来るが、ハッシュ値からデータに戻すことは出来ない
まず、送信者は送りたいデータをハッシュ値に変換します。このハッシュ値をメッセージダイジェストと言います。そして、メッセージダイジェストを秘密鍵で暗号化して受信者に送ります。メッセージダイジェストを暗号化したものをディジタル署名と言います。
メッセージからハッシュ値に変換するハッシュ関数としてSHA-256という仕組みがよく使われています。
受信者側の仕組み
受信者は送信者が送った2つのデータを受け取ります。
①送信者が送ってきたデータ
②データのハッシュ値を暗号化したもの
受信者は「送信者が送ってきたデータ」をハッシュ化し、ディジタル署名を復号化します。
受信者側の処理で、正規の送信者から送られたかどうかとメッセージが改ざんされていないかを確認できます。
- ディジタル署名を復号化出来る ⇒ 正規の送信者から送られてきた
- ハッシュ値とメッセージダイジェストが同じ文字列 ⇒ メッセージが改ざんされていない
もしも、メッセージが改ざんされていたら、送信者側で作成したハッシュ値と受信者側で作成したハッシュ値が違ってきます。ハッシュ関数の特性を活かしてメッセージの改ざんを検知するという訳です。
応用情報技術者試験での出題例
令和6年度春期問38
応用情報技術者
午前試験 令和6年度春期問38
公開鍵暗号方式を使った暗号通信をn人が相互に行う場合,全部で何個の異なる鍵が必要になるか。ここで,一組の公開鍵と秘密鍵は2個と考える。
ア n+1 イ 2n ウ \(\displaystyle \frac{n(n-1)}{2}\) エ n²
正解は”イ”
公開鍵暗号方式では受信者が暗号化鍵と復号化鍵を作成します。暗号化鍵は送信者全員に公開して、復号化鍵は受信者だけが持っています。
受信者の数だけ復号化鍵が存在するので、復号化鍵の数はn個です。
また、復号化鍵と対の暗号化鍵も同じ数存在するはずなので、暗号化鍵の数もn個です。
よって、答えは2n個となります。
令和5年度秋期問37
応用情報技術者
午前試験 令和5年度秋期問37
楕円曲線暗号の特徴はどれか。
ア RSA暗号と比べて,短い鍵長で同レベルの安全性が実現できる。
イ 共通鍵暗号方式であり,暗号化や復号の処理を高速に行うことができる。
ウ 総当たりによる解読が不可能なことが,数学的に証明されている。
エ データを秘匿する目的で用いる場合,復号鍵を秘密にしておく必要がない。
正解は”ア”
楕円曲線暗号は公開鍵暗号方式で使われており、RSAより短い鍵長で同レベルの安全性が実現できます。よって、アが正解です。
イ 楕円曲線暗号は公開鍵暗号方式で使われるので誤りです。
ウ 解読不可能ではないため誤りです。
エ 復号鍵は秘密にしておく必要があるため誤りです。
令和5年度春期問38
応用情報技術者
午前試験 令和5年度春期問38
メッセージにRSA方式のデジタル署名を付与して2者間で送受信する。そのときのデジタル署名の検証鍵と使用方法はどれか。
ア 受信者の公開鍵であり,送信者がメッセージダイジェストからデジタル署名を作成する際に使用する。
イ 受信者の秘密鍵であり,受信者がデジタル署名からメッセージダイジェストを取り出す際に使用する。
ウ 送信者の公開鍵であり,受信者がデジタル署名からメッセージダイジェストを取り出す際に使用する。
エ 送信者の秘密鍵であり,送信者がメッセージダイジェストからデジタル署名を作成する際に使用する。
正解は”ウ”
デジタル署名の検証鍵は送信者の公開鍵であり、受信者がデジタル署名からメッセージダイジェストを取り出す際に使用します。よってウが答えです。
令和4年度春期問39
応用情報技術者
午前試験 令和4年度春期問39
メッセージの送受信における署名鍵の使用に関する記述のうち,適切なものはどれか。
ア 送信者が送信者の署名鍵を使ってメッセージに対する署名を作成し,メッセージに付加することによって,受信者が送信者による署名であることを確認できるようになる。
イ 送信者が送信者の署名鍵を使ってメッセージを暗号化することによって,受信者が受信者の署名鍵を使って,暗号文を元のメッセージに戻すことができるようになる。
ウ 送信者が送信者の署名鍵を使ってメッセージを暗号化することによって,メッセージの内容が関係者以外に分からないようになる。
エ 送信者がメッセージに固定文字列を付加し,更に送信者の署名鍵を使って暗号化することによって,受信者がメッセージの改ざん部位を特定できるようになる。
正解は”ア”
送信者は送信者の秘密鍵を使ってメッセージに対する署名を作成します。
受信者は送信者が公開している復号鍵を使って署名が復号できるかどうかで、送信者が送ってきた署名かどうか分かります。