はじめに
こんにちは!新卒未経験エンジニア(3ヶ月)です。
最近、基本情報技術者試験を受験するために勉強しています。
そのテストに出題される暗号方式とデジタル署名についての内容になります。
ぜひご覧ください!
共通鍵暗号方式
ドラえもんとのび太くんは、ひみつ道具について秘密に話したいとします。
このとき、2人は特別な鍵(パスワードのようなもの)を事前に決めておきます。
ドラえもん「のび太くん、この鍵を使ってメッセージを暗号化するね。」
のび太くん「分かった、僕も同じ鍵を使ってメッセージを解読するよ!」
- ドラえもんがひみつ道具についてメッセージを送るとき、この特別な鍵を使ってメッセージを秘密のコードに変えます。
- のび太くんは同じ鍵を使って、その秘密のコードを元のメッセージに戻すことができます。
公開鍵暗号方式
ドラえもんがのび太くんに秘密のメッセージを送りたいけれど、のび太くんと事前に鍵を決めていません。そこで、のび太くんは2つの鍵を持っています。
- 公開鍵(みんなに公開してもいい鍵)
- 秘密鍵(自分だけが知っている鍵)
のび太くんは公開鍵をドラえもんに渡します。
のび太くん「ドラえもん、この公開鍵を使ってメッセージを暗号化してね。」
ドラえもん「分かったよ。この公開鍵を使ってメッセージを秘密のコードにするよ。」
- ドラえもんがこの公開鍵を使ってメッセージを暗号化します。
- この暗号化されたメッセージは、のび太くんの秘密鍵でしか解読できません。
のび太くん「僕の秘密鍵でこの暗号化されたメッセージを解読しよう!」
デジタル署名
のび太くんがジャイアンにメッセージを送るとき、そのメッセージが本当にのび太くんからのものであるのかを証明する必要があります。
-
のび太くんがメッセージを作成する
のび太くんはドラえもんに「ありがとう」と書いたメッセージを作成します。 -
のび太くんの秘密鍵を使って署名を作成する
のび太くんは、自分の秘密鍵(これはのび太くんだけが知っている)を使って、そのメッセージに署名を追加します。この署名は、メッセージと秘密鍵を使って特別なコードを作ります。
◎のび太くん「僕の秘密鍵を使ってこのメッセージに署名をつけるよ。」 -
メッセージと署名をジャイアンに送る
のび太くんは、メッセージと一緒にデジタル署名もジャイアンに送ります。 -
ジャイアンがメッセージを検証する
ジャイアンは、のび太くんの公開鍵(これはみんなが知っている)を使って、メッセージと署名を確認します。
◎ジャイアン「この公開鍵を使ってメッセージが本当にのび太くんから来たのか確認してみよう!」
ジャイアンが公開鍵を使って署名を確認すると、のび太くんがそのメッセージを本当に送ったことが証明されます。また、メッセージが途中で変更されていないことも確認できます。
まとめ
共通鍵暗号方式は、同じ鍵を使ってメッセージを暗号化・復号化する方法
(例:ドラえもんとのび太くんが事前に決めた秘密の鍵)
公開鍵暗号方式は、2つの鍵(公開鍵と秘密鍵)を使ってメッセージを暗号化・復号化する方法
(例:のび太くんがドラえもんに公開鍵を渡し、秘密鍵で解読する)
デジタル署名は、送信者がメッセージを本当に送ったことを証明し、メッセージが改ざんされていないことを確認する方法
(例:のび太くんが秘密鍵で署名し、ジャイアンが公開鍵で検証する)。