基礎からわかる!パソコン入門・再入門 / 無料パソコン教室・基礎知識・Word・Excel・PowerPoint

電子メールのセキュリティ(3) ~ デジタル署名とは ~

号通信においては、前項で解説のとおり、送信と受信の場合でそれぞれ計8つの疑問について認証を行い、証明できなければ完全に安全な通信ではありません。

ただし、その方法は、ひとつの方法では無理があり、様々な技術や仕組みが組み合わされて安全性が保証されていると解説しました。

それらのうち、最も一般的な対策として用いられる方法が、

デジタル署名(または電子署名)

という方法です。デジタル署名とは文字通り、インターネット世界における自分自身を証明する「署名(サイン)」のことです。

つまり、実際の書類や契約書では、本人の筆跡で署名したり捺印することでその書類や契約書が「本人のもの」であることを証明します。

それと同じで、インターネットの世界で本人のものであることを証明するために、電子メール等に自分の筆跡でサインしたり捺印するイメージです。

電子メールに、この「デジタル署名」を付けて相手に送ることで本人のものであることを証明し、なりすましを防ぐことができます。

※ 厳密には「電子署名」とは、紙上の署名行為をデジタルに置き換えた技術の総称を指す用語で、デジタル署名も電子署名の技術のひとつになりますが、ここでは同義語として解説します。

さて、デジタル署名の仕組みは、考え方自体は単純で簡単です。なぜなら、

公開鍵暗号化方式の通常の通信の流れを逆にしたもの

だからです。逆とはどういうことかというと、

自分の秘密鍵で暗号化して相手に送信する

ということです。前項と同様に、「あなた」が「Aさん」と通信を行う場合を例にして、下図を参考に考えてみましょう。

デジタル署名の流れイメージ

通常の公開鍵暗号化方式での通信は、Aさんの「公開鍵」で暗号化してAさんに送信するというものでした。デジタル署名は逆に、あなたの「秘密鍵」で暗号化します。

片方の鍵で暗号化したものはもう一方の鍵でしか復号できない、というのが公開鍵暗号化方式の原則ですから、「秘密鍵」で暗号化して送信してしまうとどうなるでしょうか?

公開している「公開鍵」で、誰にでも復号化することが可能になる

ということになってしまいます。しかし、この方法により証明できることがあります。

秘密鍵で送信してきたということは、本人に間違いない

ということです。なぜなら、秘密鍵は本人しか持ち得ないので、公開鍵で正しく復号化できれば本人に間違いないということになるからです。つまり、他人が手に入れることのできない秘密鍵で暗号化することは本人以外不可能という理屈です。

もう少しかみくだいて説明すると、デジタル署名の仕組みは公開鍵暗号化方式の流れを逆にしたもので、「あなた」の秘密鍵で暗号化して「Aさん」に送信します。

この暗号文は、公開されている「あなた」の公開鍵で誰にでも復号化できてしまう暗号文です。「Aさん」はこの暗号文を受け取って「あなた」の公開鍵で復号化します。これが正しく復号化できれば、その暗号文は「あなた」本人のもので間違いないという証明になります。

なぜなら、「あなた」の秘密鍵は「あなた」しか持っておらず、「あなたの秘密鍵」で暗号化されたものは、その対になっている「あなたの公開鍵」でしか復号化できないからです。

つまり、秘密鍵を第三者が手に入れることは不可能なため、「あなた」の秘密鍵で暗号化できるのは「あなただけ」になります。したがって、第三者が「あなた」になりすますことはできないというわけです。

さて、このことによって、「Aさん」側からすると通信相手が「あなた」であることが証明され、また、正しく復号化できたのであれば、「あなたの公開鍵」が「あなた」のもので間違いないということも証明されたことになります。

そしてもうひとつ、「あなた」は、送信の事実を「否認」できなくなります。

なぜなら、「あなた」の公開鍵で正しく復号化できたということは、送信者は秘密鍵を持っている「あなた」に間違いない、つまり、送信者は「あなた」しかいないという証明がなされたからです。この事実によって、「あなた」は送信の事実を「否認」できなくなるのです。

このように、デジタル署名には、

送信者が本人である証明と送信者の公開鍵が送信者のもので間違いないという証明、否認の防止

という3つの認証機能があるのです。

さて、とはいうものの公開鍵で誰にでも復号化できるのであれば、暗号化通信を行う意味がないようにも思われます。暗号文の内容は誰に見られても良いものでなければならないからです。

また、一体これのどこが「署名」なのでしょうか? 通常の公開鍵暗号の流れを逆にしただけで、署名っぽい作業は一切ありません。

それは、デジタル署名とは、このような一連の流れを言うのではなく、この時に暗号化した「誰に見られても良い暗号文」をデジタル署名と呼んでいるからです。つまり、デジタル署名は、本文を暗号化するのではなく、本文とは別のものを暗号化しているのです。

紙の書類に書き記すサインと同じです。本文とは別にサインをします。デジタル署名も本文とは別のものを暗号化して本文に添付します。この添付する方をデジタル署名と呼んでいるのです。したがってメール本文は暗号化せず、平文のままでデジタル署名を付けて送る場合もあります。

デジタル署名による証明の後に、相手から本当の暗号文を送ってもらう

というのが一連の流れになります。多くの場合は、デジタル署名と一緒に公開鍵を付けて相手に送信し、証明の後、その公開鍵で暗号文を送ってもらいます。

さて、では何を暗号化するのかというと、

メッセージダイジェスト(またはハッシュ値)

と呼ばれるデータを暗号化します。メッセージダイジェスト(ハッシュ値)とは、

本文より「ハッシュ関数」という一方向関数を用いて抽出したビットデータ

のことを言います。「ハッシュ関数」という関数を用いると、本文から一定の長さのビット列(0と1の羅列)が抽出されます。ハッシュ関数とは、ビット列から全く異なるビット列と作り出す関数になります。

具体的には、本文も実際は0と1の2進数から出来ているので、その2進数の集合体(本文)に、ハッシュ関数を当てはめると、全く異なる一定の長さのビット列が抽出されます。本文に使われている2進数の桁数は膨大なものになりますが、ハッシュ関数を使うと、100~200ビット程度のビット列が抽出されてきます。

メッセージダイジェスト抽出のイメージ

2進数について詳しくは、アナログデータとデジタルデータ の章を参照してください。

この抽出されたビット列のことを、「メッセージダイジェスト(ハッシュ値)」といいます。このメッセージダイジェストを自分の秘密鍵で暗号化して相手に送信するのです。つまり、

デジタル署名とは、秘密鍵で暗号化されたメッセージダイジェストのこと

を言うのです。暗号化されたメッセージダイジェスト(デジタル署名)は復号化されて誰に見られても問題ありません。ただの2進数の羅列に過ぎないからです。

ただ、なぜハッシュ関数を用いてメッセージダイジェストを作成するのかというと、メッセージダイジェスト(ハッシュ値)には次のような特徴があるからです。

1.メッセージダイジェストから、もとのデータ(原文等)は復元、推測できない
2.わずか1ビットでも異なるデータから作成したメッセージダイジェストは、異なる値になる
3.同じハッシュ値を持つ異なるデータ(原文等)を作成することは、ほぼ不可能

という特徴です。つまり、上図の例の「0100101」にもう一度ハッシュ関数を当てはめても、「こんにちは、お元気ですか?」という文章を復元することはできませんし、推測もできません。

また、「こんにちは、お元気ですか。」という具合に少しでも異なる文章からは「0100101」を抽出することはできません。(わずか1ビット異なるだけでも全く異なるハッシュ値が抽出される)

そして、「0100101」というハッシュ値を持つ、「こんにちは、お元気ですか?」という文章以外のデータを作成することも極めて困難だということです。

したがって、メッセージダイジェストを本文と一緒に送ることによって、

本文が「改ざん」のされているかどうかの認証を行うこともできる

のです。流れとしては、秘密鍵で暗号化したメッセージダイジェスト(デジタル署名)と本文、公開鍵を相手に送り、受け取った相手は、公開鍵でデジタル署名を復号化します。そして、送られてきた本文からハッシュ関数を用いてメッセージダイジェストを作成して、両者を比較して一致すれば、改ざんされていないということになります。

デジタル署名による改ざん検証のイメージ

もし、本文がわずかでも改ざんされていたら、2つのメッセージダイジェストは一致しません。また、デジタル署名が改ざんされても両者は一致しません。

では、本文とデジタル署名の両方を改ざんして、メッセージダイジェストを一致させることは可能でしょうか?

実はそれも非常に困難です。なぜなら、デジタル署名を改ざんして暗号化する時に「あなた」の秘密鍵が必要になるからです。

本文を改ざんして、その改ざんした本文から抽出したメッセージダイジェストでデジタル署名を作成すれば、2つのメッセージダイジェストは一致します。

しかし、デジタル署名を作成する時に「あなた」の秘密鍵で暗号化しなければ、「あなた」のデジタル署名が完成しません。公開されている、または一緒に送付する「あなた」の公開鍵で復号化されなければ認証にならないからです。

したがって、デジタル署名には3つの認証機能があると解説しましたが、一つ追加して、

送信者が本人である証明、公開鍵が本人のものである証明、否認の防止、改ざんの防止

という4つの認証機能を持つということになります。

例えば、「あなた」が「Aさんに」デジタル署名付きのメールを送ったとすると、「Aさん」は送信者が「あなた」で、公開鍵が「あなた」のものだと確信することができます。また、内容の改ざんを検証することができ、「あなた」の否認を防止する根拠を得ます。

このように、デジタル署名とは、単なる「署名」というイメージよりも、かなり多くの仕事をやってくれているのです。

このデジタル署名と公開鍵暗号化方式を組み合わせることで、より安全な通信を行うことができるようになります。前述しましたが、流れとしては、デジタル署名で送信元の証明を相手にしておいて、デジタル署名に付加して送信した公開鍵で、本来の暗号文を送ってもらうようにすれば安全な通信が確立します。

その時に「共通鍵」を公開鍵で暗号化して送り返してもらうようにすれば、高速で暗号のやり取りが可能になる「ハイブリッド暗号通信」を行うこともできます。(公開鍵暗号化方式では処理時間がかなりかかります)

また、公文書など、盗聴されてもよいけれど改ざんされると困るといった種類の文書などを送る場合は、デジタル署名を付けて本文は暗号化せずに送る場合もあります。

そもそも、送り主が本人である証明と改ざんがされていないという証明があれば、本文を秘匿にする必要がない場合のほうが多いかもしれません。

さて、ではこの「デジタル署名」を組み合わせることで、前項の8つの疑問はいくつ解消するでしょうか? ほとんどの疑問が解消できるでしょうか?

頭の回転の速い方はすでに気づいているかもしれません。実は、このデジタル署名だけでは、上記8つの疑問は何一つ完全に解決できないのです。

8つの疑問の前に、暗号通信で防止すべき大きな4つの要素が、どれだけ完全に防止できるでしょうか? 公開鍵暗号化方式により「盗聴」を防止、デジタル署名によって「なりすまし」「改ざん」「否認」が防止または証明できると解説しました。

しかし、デジタル署名だけでは、その中でも一番防止しなければならない「なりすまし」を完全に防止することができないのです。どんな場合が考えられるかというと、先ほどの本文とデジタル署名の両方を改ざんするという例が近いのです。もう一工夫してみてください。

本文とデジタル署名、公開鍵のすべてを「なりすまし」によって差し替えられた場合

は、見事に攻略されてしまうのです。先ほどの例では、本文とデジタル署名の両方を改ざんしてメッセージダイジェストを一致させるのが困難な理由は、第三者が「秘密鍵」を手に入れることができないからだと解説しました。

であるなら、「第三者」の秘密鍵でデジタル署名を作成すればよいのです。そして、「第三者」の公開鍵を付加して送信すれば、復号化という認証プロセスもクリアでき、改ざんした本文と偽造したデジタル署名のメッセージダイジェストは一致します。

ここでも「あなた」が「Aさん」にデジタル署名付きのメールを送るとすると、悪意のある第三者「ミスターZ」が、通信経路の途中で「あなた」のメールをすべて奪い取ります。

「あなた」のデジタル署名は秘密鍵で暗号化されているため、悪意ある第三者の「ミスターZ」は、公開鍵で内容を「盗聴」することも「改ざん」することも容易です。

「ミスターZ」は本文を改ざんし、改ざんした本文からメッセージダイジェストを抽出後、「ミスターZの秘密鍵」でデジタル署名を作成します。

そして、「あなた」のメールすべて(本文・デジタル署名・公開鍵)を「ミスターZ」のものと差し替えて「Aさん」に送信します。

この場合、「Aさんが」受け取るのは、「あなた」になりすました「ミスターZ」が改ざんした「ミスターZの本文」「ミスターZのデジタル署名」「ミスターZの公開鍵」になります。

この「ミスターZのデジタル署名」は、ミスターZの秘密鍵で暗号化されたメッセージダイジェストです。つまり、「Aさん」からすると、「ミスターZ」の公開鍵で「ミスターZ」のメッセージダイジェストを復号化し、「ミスターZ」の本文から抽出したメッセージダイジェストと比較することになり、両者は一致してしまいます。

なりすましが成功してしまう場合のイメージ

この場合、「Aさん」からすると、送信者は「あなた」であることに疑いようがなく、「ミスターZ」は見事になりすましが成功してしまうのです。したがって、

デジタル署名だけでは、何も証明することができない

のです。ポイントは「公開鍵」になります。前項2の疑問と同じく、公開されている公開鍵が誰のものであるのか(誰が作成して公開した鍵なのか)を証明することです。これができれば問題は万事解決します。

そこで、第三者機関によってそれを証明し、デジタル署名などの技術と組み合わせて安全な暗号通信を行える仕組みが考え出されました。それは、次項で詳しく解説します。

ページトップへ戻る


関連情報&オススメ

『ニューズウィーク』は『タイム』とともに世界的に購読されているアメリカのニュース雑誌です。日本に関する記事は少ないですが、世界的な視点で編集されており、国際社会の様々な価値観を知ることができます。

様々な意見を取り上げ、いい意味で画一的でないので、私は、毎週読んでいくうちに「自分自身の考え」を持てるようになりました。国際情勢や経済、地域紛争などについて、自分がその歴史や背景、登場人物を認識していて意見できるくらいの知識を得ることができるようになったと思います。

読み始めた当初は、ほとんどのことが理解できないくらい難しい内容に感じました。たとえば、円高や金利などの経済の仕組みや国際社会の地政学的な背景などの基礎知識がなかったからです。しかし、「毎週全部の記事を読む」「わからないことはネットで調べる」と自分に決め、一年間読み続けたらなんとか理解できるようになり、記事を読むのが本当に楽しくなりました。

また、日本のメディアにはない視点に立って書かれている記事が多いので、感心させられることや考えさせられることも多々あります。例えば、日本では「クジラ食文化」は断固として守らなければならないという視点で記事が書かれますが、「クジラを食することを文化としてる日本人はどれだけいるのか」という視点から記事が掘り下げられていきます。

そこには、画一的な報道からでは見えない「気づき」があります。多角的な視点を持つことで、ニュースの裏に透けて見える矛盾や戦略を感じとる皮膚感覚が身についてきたように思います。

さらに、各国の元閣僚や大物財界人、ビッグスターの寄稿も多く、デービット・ベッカムが札幌でPKを決めたときの気持ちをつづったコラム(その前回のワールドカップで退場になった因縁のアルゼンチン戦)で、「もう、大丈夫だと思った」という言葉は今でも印象に残っています。

先進国の世界的不況や中東の動乱、そして東日本大震災における援助や報道など、世界の中で、国際社会と複雑に絡み合う時代に生きていることを教えてくれます。ひとつ上の目線と価値観を与えてくれた雑誌です。

決して安くはありませんが、1年購読は18,520円(一冊定価460円)です。

ページトップへ戻る

更新履歴

2008年11月24日
ページを公開。
2009年5月24日
ページをXHTML1.0とCSS2.1で、Web標準化。レイアウト変更。
2014年5月20日
内容修正。

ページトップへ戻る

参考文献・ウェブサイト

当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。

情報セキュリティ入門:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060214/229302/?ST=security
電子証明書とPKI入門
http://www.verisign.co.jp/basic/pki/index.html

ページトップへ戻る