seegongsik
セキュリティ

わかりやすく デジタル署名 とは

ここまでは、他人に読まれないように守る方法をおもに見てきました。けれども、メッセージを秘密にする必要はなく、本当にその人が送ったのかだけを確かめたいときがあります。前のレッスンでも、鍵交換の相手が本物かどうかを確かめるという宿題が残りました。送る人が自分だけの秘密鍵でメッセージに判子のようなしるしを残し、誰でもその人の公開鍵でしるしが本物かどうかを確かめられるとしたら、どうでしょうか。これが電子署名です。

01

誰が送ったのかわからなければ

手紙が一通届き、最後に誰かの名前が書いてあるとしましょう。本当にその人が書いたのでしょうか。名前は誰でも書き写せますし、中身も届くまでに誰かがこっそり書きかえたかもしれません。文字だけを見ても、確かめようがありません。
これは秘密かどうかの問題ではありません。中身はすべて見えてもかまわないのです。ただ、本当にその人が送ったのか、届くあいだに変わっていないのかを知りたいのです。

明日の正午に会いましょう。
送り主ミヌ
文字だけを見ても、本物かどうか見分けられません。

名前を疑うボタンと中身を疑うボタンを押してみましょう。名前が書き写されたものか、中身が変わったのかは、文字だけでは見分けられません。

押してみると、もどかしかったですね。名前が書いてあっても、確信は持てません。必要な証拠は二つです。本当にその人が送ったという証拠と、届くあいだに変わっていないという証拠です。
この二つをいっぺんに示し、しかも他人にはまねできないしるしがあればよいのです。公開鍵のレッスンで見た一組の鍵が、まさにその仕事をこなします。

02

秘密鍵で署名する

公開鍵のレッスンでは、受け取る人の公開鍵で閉めました。署名は向きが逆です。送る人が自分の秘密鍵を使って、メッセージに署名をつけます。南京錠で閉めるのではなく、メッセージのそばに判子を押すようなものなので、中身はそのまま全部見えます。
実際には、メッセージ全体ではなく、メッセージのハッシュ、つまり指紋に秘密鍵で計算をして署名を作ります。秘密鍵はその人しか持っていないので、この判子はその人にしか押せません。

明日の正午に会いましょう。メッセージ
署名
秘密鍵
自分の秘密鍵にしか作れない判子をつけます。

「秘密鍵で署名する」を押してみましょう。中身はそのまま見え、その人にしか作れない署名がいっしょにつきます。

署名がつきましたが、メッセージの文字は一つも隠れていません。閉めたのではなく、判子を加えただけだからです。この署名はメッセージの中身の指紋から作られたので、中身としっかり結びついています。メッセージ全体ではなく指紋に署名するのは、指紋が短く長さもいつも同じなので、大きなファイルでもすぐに署名が終わるからです。中身が変われば指紋も変わるので、指紋に署名するだけで中身全体を守れます。
そして、この判子を作るには、必ずその人の秘密鍵が必要です。秘密鍵は持ち主の手を離れないので、他人が同じ判子を作ることはできません。では、受け取る側はこれをどう確かめるのでしょうか。

03

公開鍵で検証する

受け取る人は、送った人の公開鍵で署名を検証します。検証とは、この判子が本当にその公開鍵と対になる秘密鍵で押されたものか、そしていま受け取った中身の指紋と合っているかを問うことです。
両方が合えば、検証は通ります。ほかの人の秘密鍵で押した判子は、その公開鍵で検証すると失敗します。公開鍵と秘密鍵が対になっているときにだけ通るからです。

ミヌの公開鍵
検証—
署名を押して、公開鍵で検証しましょう。

署名を一つずつ押して、ミヌの公開鍵で検証してみましょう。ミヌの秘密鍵で押した署名だけが通り、ほかの人の鍵で押したものは失敗します。

対になる秘密鍵で押した署名だけが通りました。通ることの意味ははっきりしています。このメッセージは本当にその人が送ったということです。公開鍵は世界中が持っていてもかまいません。公開鍵では検証しかできず、署名を作ることはできないからです。
判子を押す権限は秘密鍵の持ち主だけにあり、判子を確かめることは誰にでも開かれています。公開鍵で閉めることの、ちょうど鏡うつしです。

04

本物で、変わっていない

署名は中身と結びついているので、検証が通れば二つのことがいっぺんに証明されます。一つは本当にその人が送ったという真正性、もう一つは一文字も変わっていないという完全性です。
届くあいだに誰かが中身をほんの少しでも書きかえれば、指紋がまったく別物になるので結びついていた署名と合わなくなり、検証はすぐに破れます。変わった一文字が、警報になるわけです。

待ち合わせは 12:00 です。署名されたメッセージ
署名 SIG-7A2F
検証が通る
中身がそのままなので、署名と合います。

「時刻を変える」ボタンを押してみましょう。数字が一文字変わるだけで署名と合わなくなり、検証が破れます。

一文字変えただけで、検証はすぐに失敗しました。受け取る人はこの失敗を見て元の中身ではないと気づき、うのみにせずに立ち止まれます。また、秘密鍵で署名した人は、あとで自分は送っていないと言い逃れできません。これを否認防止と呼びます。
そのため電子署名は、ソフトウェアの更新や電子契約、公文書のように、出どころと原本が大事な場面で広く使われています。では、閉めることと署名を並べてまとめましょう。

05

まとめ

まとめるとこうです。電子署名は、公開鍵暗号の一組の鍵を逆向きに使います。送る人は自分の秘密鍵でメッセージの指紋に署名し、受け取る人は送った人の公開鍵で検証します。通れば、本当にその人が送ったことと、届くあいだに変わっていないことが、いっしょに証明されます。
閉めることは中身を秘密として守ること、署名は誰が送り、変わっていないかを証明することです。

使う鍵—
受け取る側—
得られるもの—
「閉める」と「署名」を押して比べましょう。

「閉める」と「署名」を押して比べてみましょう。閉めることは秘密を守り、署名は真正性と完全性を証明します。

これで、閉めることと署名の違いがわかりました。受け取る人の公開鍵で閉めれば秘密が守られ、送る人の秘密鍵で署名すれば真正性と完全性が証明されます。同じ一組の鍵が、向きを変えるだけで二つの仕事をこなすのです。
ただし、検証に意味があるためには、前提が一つあります。その公開鍵が本当にその人のものでなければなりません。公開鍵を何によって信頼できるのかを、次のレッスンの証明書で扱います。

一言でいうと電子署名は、公開鍵暗号の一組の鍵を逆向きに使います。送る人が自分の秘密鍵でメッセージの指紋から署名を作ってつけますが、秘密鍵はその人しか持っていないので、この署名はその人にしか作れません。受け取る人は送った人の公開鍵で署名を検証し、通れば二つのことがいっしょに証明されます。本当にその人が送ったという真正性と、一文字も変わっていないという完全性です。中身を少し変えただけで検証が破れるからです。暗号化が中身を閉めて秘密として守ることなら、署名は閉めずに、誰が送ったのかと変わっていないことを証明することです。署名した人は、あとで送っていないと言い逃れすることもできません。
← セキュリティ
このページがお役に立ったなら支援する