暗号と電子署名(解説)

インターネットを介して通信する際に,文書を暗号化して送り先の人だけが読めるようにすることができます. また,文書に電子署名をつけて,確かに自分が作成したものであり途中で改竄(かいざん)されていないことを示すことができます.

電子署名は,印鑑やサインの代わりに用いられるもので,メールの後ろなどにつける「署名」(住所,氏名,電話番号などを書いたもの)とは異なるものです.たとえば, メールの後ろに

============================
名前:藤原俊朗
住所:神奈川県相模原市〜〜〜〜〜
電話:***-********
============================
などと書いてあっても,間違いなく私が書いたものだとは限りません. 誰でもこの部分をコピーして貼付けることができるからです.

2人の間だけで使える秘密の暗号作成・解読法があったとします. この暗号を使えば,通信文が2人以外の他人に盗み見られないようにできますし, 間違いなくもう一方の人間が書いたものだと確信できます. なぜなら,その暗号文を書けるのは自分たち2人だけだからです. このように,暗号は署名にも使うことができます.

暗号作成方法と鍵

暗号文を作るには,暗号作成方法と鍵が必要です. たとえばシーザー暗号というのは,アルファベットを何文字かずらして作成されます. 1文字ずらすシーザー暗号は,

	cleopatra
	dmfpqbusb
に変換します.ここで「何文字かずらして暗号を作りましょう.逆にずらして解読しましょう」というのが,シーザー暗号の作成方法で,「1文字ずらす」の「1」が鍵です. 鍵を「2」にすることも「3」にすることもできます.

とても破りにくい暗号作成方法を誰かが作成し,鍵はそれぞれが用意する(あるいは誰かが作成した鍵を購入する)というのが,現在のやり方です.

共通鍵と鍵の配送問題

1975年までの暗号作製法は,通信するもの同士が共通の鍵を用意し,それを持ち合うことで成立していました. これを共通鍵暗号法と呼びます. 通信をする際に毎回同じ鍵を使うことはできません.もし毎回同じ鍵を使うと比較的簡単に解読されてしまうからです.ですから,大量の鍵を作成し,通信相手と共有しなければなりません. 鍵を使い尽くしてしまったら新しく鍵を作成し,通信相手に渡さなければなりません.

この方法は国家とか大企業では使えますが,個人では使えません. 鍵を渡すコストや手間がかかりすぎるからです. これが鍵の配送問題です. 1970年代に通信技術が発達し,個人が通信できるようになった際に問題になったのが, この鍵の配送問題です.

インターネットを利用してアマゾンで買い物することを考えましょう. あなたはアマゾンの誰とも会ったことがありません. 鍵をどうやってアマゾンと共有できるでしょうか?

安全でない通信経路(インターネット)を使って,安全な通信をするにはどうしたら良いか? それを解決する一つの方法が「公開鍵暗号法」と呼ばれるものです.

公開鍵暗号法

公開鍵暗号法では,一対の鍵を使います.一つは秘密鍵で,もう一つは公開鍵です. それぞれの人が自分の秘密鍵と公開鍵を持ちます. 藤原の秘密鍵と公開鍵,Aの秘密鍵と公開鍵,Bの...

公開鍵と秘密鍵は,以下の性質を持ちます.
  1. 公開鍵で暗号化された文は,対の非公開鍵で解読できる.それ以外の鍵では解読できない.
  2. 秘密鍵で暗号化された文は,対の公開鍵で解読できる.それ以外の鍵では解読できない.

暗号通信

上記の性質 1:公開鍵で暗号化された文は,対の非公開鍵で解読できる.それ以外の鍵では解読できないという性質を用います.

あなたが,公開鍵暗号法を使って A さんに暗号文を送りたい場合は, あなたは A さんの公開鍵で暗号化します. A さんの公開鍵は公開されていますので,誰でも A さん宛の暗号文を作成できます.

受け取った A さんは,自分の(Aさんの)秘密鍵で解読します.

他の人は,A さんの秘密鍵を知らないので解読できません.

電子署名

上記の性質 2:秘密鍵で暗号化された文は,対の公開鍵で解読できる.それ以外の鍵では解読できないという性質を使います.

あなたが文書に署名をしたい場合は, あなたの秘密鍵で暗号化します. あなたの秘密鍵で暗号化できるのは,あなただけです.

受け取った人は誰でも,あなたの公開鍵を使ってそれを解読できます. さて,性質 2 によって,あなたの公開鍵を使って解読できるのは, あなたの秘密鍵で暗号化した文書だけですから, この文書は間違いなくあなたが暗号化したものだと確認できます. これが電子署名.

入手した公開鍵が,その人のものだとどうやって確認するか?: GPGとPKIのやりかた

公開鍵暗号法では,他人に渡すのは公開鍵だけで,各自の秘密鍵は各自が隠し持っています. 公開鍵ですから,インターネットを使って,メールで渡しても構いませんし, 自分のホームページを使って公開しても構いません.

こうして,鍵の配送問題はおおかた解決できましたが,一つ問題が残ります. A さんの公開鍵だと言われているものが,間違いなくあの A さんのものだと, どうしたら確認できるでしょう?

誰かが, A さんの名前をかたったメールで,あなたに偽の公開鍵を送ってきたのかも知れません.あるいは,A さんのホームページだと思って見ているものが実は赤の他人が A さんをふりをして作ったものかも知れません.

現在,二つの方法があります.

企業や大学など,公の機関が文書に電子署名する場合は,PKI を使う必要があるでしょう. 電子署名入りのメールを受け取ったユーザー側は, その署名が本物かどうかの確認をソフトウェアが自動的に判定してくれるので, 準備も手間もかかりません.

個人が文書を暗号化してやり取りしたい場合は,GPGでもPKIでも可能です. 実際のところ,普通の人が暗号メールや署名付きメールをやり取りするには, PKI を使った S/MIME を使う(企業から鍵の対を購入する)のが現実的だと思います.

以上