デジタル署名と証明書
このノートの問いがそのまま復習カードになり、忘れかけたころに出題されます。
0. どういうまとまりか
暗号化は「中身を見られない」ための技術でした(→ 暗号化)。
ここで扱うのは、だれが送ったか(なりすましでないか)と途中で書きかえられていないか(改ざんされていないか)を確かめる技術です。
| 技術 | 確かめられること | 使う鍵 |
|---|---|---|
| ハッシュ値の比較 | 改ざんされていないか | 使わない |
| デジタル署名 | 送信者が本人か・改ざんされていないか | 送信者の秘密鍵で署名し、送信者の公開鍵で検証 |
| デジタル証明書 | その公開鍵が本当にその人のものか | 認証局が発行する |
分かれ目は次の 3 つ。
- 暗号化は受信者の鍵、デジタル署名は送信者の鍵。 署名は送信者だけが持つ秘密鍵で作るから、本人の証明になる。
- ハッシュ値からは元のデータに戻せない。 1 文字でも変わるとハッシュ値がまったく変わるので、改ざんの検出に使う。
- デジタル証明書は、公開鍵が本人のものであることを認証局(CA)が証明するもの。
1. ハッシュ関数とハッシュ値
根拠: 学習指導要領 情報Ⅰ-(4)-ア-(ア)
どんな長さのデータからも、決まった長さの短い値を計算する関数がハッシュ関数、その値がハッシュ値です。
任意の長さのデータから、決まった長さの値を計算する関数と、その値をそれぞれ何というか?
ハッシュ関数とハッシュ値
データの「指紋」のようなもの。同じデータからは必ず同じハッシュ値が出る。
ハッシュ値が改ざんの検出に使えるのは、ハッシュ関数にどんな性質があるからか?
元のデータが少しでも変わると、ハッシュ値がまったく違う値になる
受け取ったデータのハッシュ値を計算し直し、送られてきたハッシュ値と比べる。一致しなければ改ざんされている。
ハッシュ値から、元のデータを求めることはできるか?
できない(計算は一方向)
だからハッシュ値を見られても、元のデータの内容は分からない。
2. デジタル署名
根拠: 学習指導要領 情報Ⅰ-(4)-ア-(ア)
送信者は、文書のハッシュ値を自分の秘密鍵で暗号化して、文書に付けて送ります。これがデジタル署名です。
受信者は、署名を送信者の公開鍵で復号し、文書から自分で計算したハッシュ値と比べます。
文書が本人から送られたこと、途中で改ざんされていないことを確かめるために、文書に付けるデータを何というか?
デジタル署名(電子署名)
手書きのサインや印鑑の役割を、暗号の技術で果たす。
デジタル署名では、送信者は何の鍵で署名を作り、受信者は何の鍵で検証するか?
送信者の秘密鍵で署名を作り、受信者は送信者の公開鍵で検証する
暗号化(受信者の公開鍵で暗号化)とは、使う人の鍵が逆になる。
デジタル署名を送信者の公開鍵で検証できたことから、なぜ「送信者本人が送った」と言えるのか?
その公開鍵と対になる秘密鍵は、送信者本人しか持っていないから
他人が作った署名は、送信者の公開鍵では正しく検証できない。なりすましを見つけられる。
デジタル署名の検証で、署名から取り出したハッシュ値と、受け取った文書から計算したハッシュ値が一致しなかった。何が分かるか?
文書が途中で改ざんされた(または署名が本人のものでない)
一致すれば、本人が送ったもので、途中で書きかえられていないと確かめられる。
3. 認証局とデジタル証明書
根拠: 学習指導要領 情報Ⅰ-(4)-ア-(ア)
デジタル署名は、「その公開鍵が本当に送信者のものか」が確かでなければ意味がありません。
なりすました人が自分の公開鍵を「本人の公開鍵」と偽って配るおそれがあるからです。
そこで、信頼できる第三者が公開鍵の持ち主を証明します。
公開鍵とその持ち主を結び付けて、その公開鍵が本人のものであることを証明する電子的な書類を何というか?
デジタル証明書(電子証明書)
持ち主の名前・公開鍵・有効期限などが書かれ、発行した認証局のデジタル署名が付いている。
デジタル証明書を発行する、信頼できる第三者機関を何というか?
認証局(CA)
本人であることを確かめたうえで、証明書に自分のデジタル署名を付けて発行する。
デジタル証明書が無いと、公開鍵暗号やデジタル署名にどんな危険が残るか?
なりすました人の公開鍵を、本人の公開鍵だと信じて使ってしまう
その公開鍵で暗号化すれば偽者に読まれ、偽者の署名を本人の署名だと信じてしまう。
HTTPS で Web サイトに接続したとき、ブラウザはサーバのデジタル証明書を使って何を確かめているか?
接続先のサーバが、本物のそのサイトの運営者のものであること
証明書が確かめられないと、ブラウザは警告を出す。
練習問題
問 1 A さんが B さんに、デジタル署名を付けて、さらに中身を暗号化して文書を送る。次の (ア)〜(エ) の場面で使う鍵を、それぞれ「A さんの公開鍵」「A さんの秘密鍵」「B さんの公開鍵」「B さんの秘密鍵」から選べ。
(ア) A さんが署名を作る (イ) A さんが文書を暗号化する (ウ) B さんが文書を復号する (エ) B さんが署名を検証する
(ア) A さんが署名を作る (イ) A さんが文書を暗号化する (ウ) B さんが文書を復号する (エ) B さんが署名を検証する
(ア) A さんの秘密鍵 (イ) B さんの公開鍵 (ウ) B さんの秘密鍵 (エ) A さんの公開鍵
署名は送信者(A さん)の鍵の組で、作るのが秘密鍵・確かめるのが公開鍵。
暗号化は受信者(B さん)の鍵の組で、暗号化が公開鍵・復号が秘密鍵。どちらも「秘密鍵を使うのは、その鍵の持ち主だけ」と覚えれば入れかわらない。