いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

デジタル署名とは何か

 デジタル署名について書きます。いぬおさんからメールが来ました。いぬおさんのアドレスだし、メールの最後には「いぬお」と書いてあります。これはもう間違いなく差出人はいぬおさんでしょう。……しかし、メールアドレスの詐称(発信者のアドレスを書き換えてしまう)は知識があればできるし、「いぬお」なんて、誰にでも書けます。重大な内容のメールだったら「本当にいぬおさんだろうか?」と心配になりますよね。こんな時、文書を作った人間がいぬおさんであることを保証してくれるのがデジタル署名と呼ばれる技術です。きちんと説明するには数学の整数論を使わなければなりません。そこで今回はある程度正確な例え話で。
 世界中の誰も、13を加える計算はできるとしましょう。しかし、13を引く技術を持っているのは世界でただ1人、いぬおさんだけだとしましょう。そして、「いぬおさんだけが13を引くことができる」という事実は世界中の誰でも知っているとしましょう。何をバカなことを……と思うでしょうが、まあ、例え話です。いぬおさんはワープロで文書を作りました。文面は整数で、「3501」です。これもまた「こんなの文書じゃない!」と思うかも知れませんが、実は普通の文書も数の並びと見なすことができます。「あ」=1,「い」=2,……とでも約束すればいいからです。さて、いぬおさんはこの「3501」(この文書をAとします)にデジタル署名(サイン)します。3501-13=3488なので、この「3488」をいぬおさんのデジタル署名付き文書(この文書をBとします)として、元の文書Aとともにメールで送ります。2つの文書を受け取った人は、「これ、本当にいぬおさんが書いたのか?」と疑問を持ったら、署名付き文書「3488」に13を加えてみればいいのです。13を引くのはいぬおさんにしかできませんが、加えるのは誰にでもできるのでした。13を加えれば「3501」になりますから、「おお、Bに13を加えたらAになった。ということはAから13を引けばBになる。13を引くなんて、こんなことができるのはこの世でただ1人、いぬおさんだけだ!」となって確かにこの文書Bはいぬおさんが書いたものだと証明されるわけです。
 実際には13を引くのは誰にでもできます。デジタル署名には例えば「数百桁の整数の素因数分解は(事実上)不可能である」という数学的な経験則を使うのです。あるいは公開鍵暗号の個人の秘密鍵をデジタル署名のために使うと言ってもよいですが、ちゃんと理解するには数学の整数論の知識が必要です。
 『暗号技術入門 第3版』(結城 浩2015ソフトバンククリエイティブ) は、読めば暗号についてひと通りの知識が得られます。PGP、デジタル署名についても書いてあります。ぼくは初版を読みましたが、第3版では量子コンピュータなどについても触れてあったので買い直しました。

暗号技術入門 第3版

暗号技術入門 第3版

 

 他、暗号については『改訂新版 暗号の数理―作り方と解読の原理 』(一松信2005講談社ブルーバックス)が分かりやすく、面白いと思います。