デジタル証明書とデジタル署名の違い、言えますか?

「デジタル証明書」と「デジタル署名」って、どっちが何の役割なのでしょうか。
IPAの基本情報技術者試験や情報セキュリティマネジメント試験でも、よく出題されます。ただ、「説明してよ」って言われたら「うっ」となりますよね。
そこで今回は、四コマ漫画でこの2つの違いをイメージ解説していきます。
「物語だと頭に入るんだけど、ITの仕組みは何度聞いても頭に入らないんだよなぁ」
という方は、ぜひお読みください。
デジタル証明書とは
デジタル証明書を例えるなら、「電子的な身分証明書」です。

身分証明書には、いくつかの要素が必要です。
- 氏名や住所
- 信頼された発行元
- 有効期限 など
ただの紙切れに自分の名前を書いてTSUTAYAに持って行っても、会員カードは更新できませんよね。店員さんに不審がられるだけです。(例えが古くてすみません)
電子データにおける身分証明書でも、これらの要素が必要です。
この「デジタル証明書」を構成する要素としては
- 証明書の持ち主の情報
- シリアル番号
- デジタル署名
- 公開鍵情報
- 認証局(CA)の名前
- 有効期限
などがあります。
デジタル証明書の役割としては「インターネット上での本人確認」や「データの改ざん防止」などがあります。
デジタル証明書の用途としては、ウェブサイト(HTTPS)のSSL/TLS証明書があります。また、メールの暗号化や署名、ソフトウェアの正当性確認などにも使われます。
デジタル署名とは
デジタル署名を例えるなら、「電子的なサイン」(又はハンコ)のようなものです。

またまた例えが古くてすみません。
小学生の頃にポケットビスケッツが大好きだったので、「署名」と聞くとついつい
ポケビの100万人署名活動を思い出してしまいます。
「懐かしいね〜」と思った方はきっと、30代以上でしょう。
さて、先ほど説明した「デジタル証明書」を作るために、「デジタル署名」も必要です。
デジタル署名の作り方をざっくり言うと
- 文書データにハッシュ関数を使い、要約(ダイジェスト)を作る
- 要約値を、送信者の秘密鍵で暗号化する
デジタル署名ができたら、文書などのデータとデジタル署名を一緒に送信します。
受信者側は、デジタル署名を検証します。
- デジタル署名を、送信者の公開鍵で複合する
- 複合できれば、「その秘密鍵の持ち主が署名したデジタル署名である」という証明になる
- 自分でも、受け取った文書データにハッシュ関数をかける
- 2つの要約値を比較する
- 両者が一致すれば、データは改ざんされていない
「公開鍵と秘密鍵がごっちゃになるよ〜」と思ったそこのあなた。
以下の記事も参考にしてください。
ハッシュ関数とは
ハッシュタグでもなく、ハッシュポテトでもなく、「ハッシュ関数」とは何でしょうか。
ハッシュ関数を例えるなら、「元データの指紋を作るための関数」です。
またハッシュ関数を使ってできたハッシュ値(ダイジェスト)は、「元データの指紋そのもの」です。
長い文章データを、要約・変換して、任意の長さにしたデータのことです。
ハッシュ関数の種類によって、長さが決まっています。
「ハッシュ」関連の用語が増えてきて混乱する場合は、ルービックキューブでイメージすると、わかりやすくなります。
- ルービックキューブを動かす手順を「ハッシュ関数」
- 手順に沿ってキューブを実際に動かすことを「ハッシュ化」
- 完成したキューブの状態(色の並び)の1面を「ハッシュ値(ダイジェスト)」
ちなみに、英語でハッシュとは「細かくする・切り刻む」といった意味があるそうです。
ハッシュ関数でよく使われるのは「SHA-256」で、セキュリティも高いです。
「しゃ(け)にコロッケ、ハッシュポテト」で覚えましょう。
まとめ
名称 | 例えると | 特徴 |
---|---|---|
デジタル証明書 | 電子的な身分証明書 | ・公開鍵情報、デジタル署名、認証局などの情報がある ・本人確認や改ざん防止などで使われる |
デジタル署名 | 電子的なサインやハンコ | ・デジタル文書をハッシュ関数で要約 ・送信者の秘密鍵で暗号化 |
ハッシュ関数 | 電子データの指紋を作る関数 | ・文書データをの要約値を作る ・代表的なものは「SHA-256」 |
もっと詳しく知りたい場合は、他の記事や書籍も参考にしてください。