ディジタル署名とは、改ざん・なりすましがされていないことを証明するためのサインです。
さらにシンプルに言うと、「受信者が、送信者本人であることを確認するサイン、ハンコ」のこと。
たとえば、Aさんがお友達のBさんにメールで、Excel(=添付ファイル)を送るとき。
Bさんは、「送信者がAさんの添付ファイル付きのメール」を受け取ります。
ただ、添付ファイルを使って、悪だくみ(改ざんやなりすまし)をする人も多いのがこの世の中。
Bさんは、「この添付ファイルは本当にAさんが送ったものなのか?」が気になって、怖くてメールの添付ファイルを開くことができません。
そこで、ディジタル署名の登場。
Aさんは、「俺が作ったものだから、俺専用の鍵をかけておくね。Bさんは、Aだとわかる鍵で復号してね。できたら、俺が作ったって確認ができるよね!」的なことをするのが、ディジタル署名です。
ディジタル署名とは、改ざん・なりすましがされていないことの確認
ディジタル署名とは、改ざん・なりすましがされていないことの確認をするためのサインです。
メールの添付ファイルにディジタル署名をするのが、いちばん身近というかイメージしやすいかと。
本人確認をするのが目的
試験的には、「(メールの)受信者が送信者を確認」なんて言ったりするけど、要するに「本人確認をするためのサイン」的なもの。
「クレジットカードでお買い物をするときに、4桁の暗証番号かサインを求められるのと同じこと」と思えばよしです(受信者=お店、送信者=お客さん)。
ディジタル署名の目的に関して言えば、「暗号化すること」(暗証番号とサイン)は手段であり、「本人確認」が目的です。
改ざんされたところの特定はできない
「本人確認をした結果、別人であることがわかりました」となった場合に、どこが改ざんされているかまではわかりません。
「あっ!このメールは、送信者がニセモノだ!」となるだけです。
基本情報技術者試験では、公開鍵暗号方式を使ってディジタル署名を作成
基本情報技術者試験的には、公開鍵暗号方式を使ってディジタル署名を作成します。
※これから書く内容は「秘密鍵で暗号化して送信者の公開鍵で復元」ということになるのだけど、厳密に言うとウソです(参考記事)。ただ、基本情報技術者試験レベルでは、100%の理解は求められないのと、ディジタル署名の目的と、ざっくりとした復元の考え方がわかれば十分なので、気になる人は試験後に勉強してくださいまし(*´ω`)。
公開鍵暗号方式とは?
ここでいう「鍵(かぎ)」というのは、ファイルを暗号化したり、復号化したりするのに使う鍵のことです。
あまり難しいことは考えずに、宝箱にカギをかけるイメージをもってください。
公開鍵(こうかいかぎ)暗号方式とは、
- 自分だけがもつ鍵(秘密鍵)と、みんなが自由に使える鍵(公開鍵)の2つをペアに
- 送信者の公開鍵で鍵をかけて(暗号化して)、送信者の秘密鍵で鍵をはずす(復号する)
- あるいは、送信者の秘密鍵で鍵をかけて(暗号化して)、送信者の公開鍵で鍵をはずす(復号する)
方法のこと。
例えば、Aさんは、自分だけがもつ鍵(秘密鍵)で、鍵をかけたとします。
そして、Aさん以外の人は、みんなが自由に使えるAさんの鍵(公開鍵)を持っています。
Aさんの秘密鍵でかけた(暗号化した)鍵は、Aさんの公開鍵を使えば、外すことができる(復号できる)状態。
この状態で、Aさんが自分の秘密鍵で鍵をかけて、添付ファイル付きのメールを送信したとします。
受信者は、Bさん・Cさん・Dさんの3人と仮定。
3人は、「Aさんがどうやって鍵をかけたかは知らないけど、Aさんがかけた鍵を外す方法」を知っている状態です。
というのも、Aさんの公開鍵があるので、それを使えば、Aさんが秘密鍵でかけた鍵を外せるはず。
ひとまず、公開鍵暗号方式は、
- 「Aさんの公開鍵でかけた鍵を、Aさんの秘密鍵を使えば外せる方式」
- あるいは、「Aさんの秘密鍵でかけた鍵を、Aさんの公開鍵を使えば外せる方式」
と思えばよしです(今回大事なのは、後者)。
Aさんの秘密鍵でかけた鍵は、Aさんの公開鍵で外せるのがミソ
繰り返しになるけど、Aさんの秘密鍵でかけた鍵は、Aさんの公開鍵で外せるのがミソです。
仮に、XさんがAさんになりすましてファイルを送れば、Aさんの秘密鍵はAさんしかもっていないので、ファイルをAさんの公開鍵で復号化はできません。
Xさんが、Aさんのファイルの中身を変えて送ろうとしても、Aさんの秘密鍵でもう一度、暗号化する必要があります。
※「そもそも、鍵がニセモノだった」的な話は、「中間者攻撃」と呼ばれたりするけど別問題。
ただ、XさんはAさんの秘密鍵を持っていません。
なので、Xさんが改ざんしたファイルもやはり、Aさんの公開鍵で復号化はできません。
送信者の公開鍵で復元できれば、本人確認(ディジタル署名の確認)が完了
「え?公開鍵の話になってるけど、ディジタル署名はどこいった?」となってると思いますが、結論はシンプル。
送信者の公開鍵で復号化(もとどおりに)できれば、本人確認(ディジタル署名の確認)が完了です。
この場合で言えば、受信者のBさん・Cさん・DさんがAさんの公開鍵を使って復号化できれば、
- Aさんが送ったもの(なりすましではない)
- 改ざんされていないもの
の2つがわかります。
Aさん以外のだれか(例えば、Xさん)が、改ざん・なりすましで送ったものであれば、Aさんの公開鍵での復号化はできないので・・・。
「『Aさんの公開鍵で復号化できた』=『送信者がAさんであること』の証明になるから、公開鍵暗号方式をディジタル署名のようにしましょう」というお話です。
まとめ
ディジタル署名ときたら、改ざん・なりすましがされていないことを証明するためのサインのこと。
言ってしまえば、本人確認をするサインのことです。
本人であることを証明する方法の1つとして、公開鍵暗号方式が使われています。
Excelなどのファイルをやり取りするときに、送信者が秘密鍵をかけて暗号化。受信者が、送信者の公開鍵で復号化できれば、本人確認が完了。
送信者からすれば、「俺専用の鍵(秘密鍵)をかけておくね。他の人は、俺だとわかる鍵(公開鍵)で復号してね。できたら、俺が作ったって確認ができるよね!」的なことをするのが、ディジタル署名だと思ってくださいまし(-_-;)。
コメント