「誰が作成したの?」を解消するデジタル署名!
- セキュリティを高めるためには、暗号だけでは足りない!
- セキュリティには鍵がキーになる!
- 対称暗号(共通鍵暗号)といえば、AES!
- セキュリティを高める一つの基準「CRYPTREC」は大切!
- 非対称暗号(公開鍵暗号)といえば、RSA!
- ハイブリッド鍵暗号システムは対称(共通鍵)暗号と非対称(公開鍵)暗号のいいとこどり!
- 一方向ハッシュ関数は「一方通行の指紋」だった!
- メッセージ認証コードの弱点は「否認防止」だった!
- 「誰が作成したの?」を解消するデジタル署名!
- 証明書を証明する最上位認証局(ルートCA)は最重要!
はじめに
2025年10月のプロジェクトマネージャ試験受験を終え、2026年春の情報処理安全確保支援士に向けて勉強中です。
セキュリティに関して無知であるため、資格勉強の傍ら暗号技術入門 第3版 秘密の国のアリスを読んでいます。
本記事は、そんなセキュリティ初心者による読書感想文です。
本記事では、書籍のうち「第1部」と「第2部」の内容のみ扱います。そのため、より詳しい内容や「第3部」については書籍をご参照ください。
目的
一方向ハッシュ関数の弱点「認証」を担保する技術を学びます。
対象
認証技術の一つ「デジタル署名」について知りたい方を対象としています。
デジタル署名
メッセージ認証コードの限界
メッセージ認証コードでは、メッセージの改ざんを検出できました。
また、メッセージの完全性を確かめ、認証を行うことができたのです。
しかし、借用書など否認防止が必要なものを作るためにメッセージ認証コードは使えません。
なぜなら、メッセージ認証コードは否認防止には役に立たないからです。
デジタル署名による解決
メッセージ認証コードでは、共有の鍵を用いていたため、正真性を検証することはできませんでした。
つまり、正真性を検証するためには、鍵を別々のものにすればよいのです。
例えば、送信者が秘密鍵で「署名」を作成し、受信者が公開鍵で「署名を検証」します。
これで、改ざん/なりすましの検出・否認防止ができ、これらを実現する方法がデジタル署名です。
署名の作成と署名の検証
上述した通り、デジタル署名では、署名用の鍵と検証用の鍵をそれぞれ分けます。
送信者は署名用の鍵で署名し、受信者は検証用の鍵で署名を検証します。
そして、検証用の鍵で署名を作成することはできません。
さらに、署名用の鍵は署名する人だけが持っていますが、検証用の鍵は署名を検証する人ならだれでも持つことができます。
上記の内容は、非対称暗号(公開鍵暗号)といえば、RSA!で触れた公開鍵暗号と同じです。
実は、デジタル署名と公開鍵暗号には密接な関係があり、デジタル署名は公開鍵暗号を「逆に使う」ことで実現できています。
[鍵のつかいかた]
| プライベート鍵 | 公開鍵 | |
|---|---|---|
| 公開鍵暗号 | 受信者が復号化に使う | 送信者が暗号化に使う |
| デジタル署名 | 署名者が署名の作成に使う | 検証者が署名の検証に使う |
デジタル署名と公開鍵暗号
公開鍵暗号では、受信者の公開鍵でメッセージを暗号化し、受信者の秘密鍵で暗号文を復号していました。
一方で、デジタル署名では、署名者のプライベート鍵で署名を作成し、署名者の公開鍵で署名を検証します。
イメージでは、黒い鍵が秘密にしなくてはいけない鍵で白い鍵が公開したもよい鍵を表現しています。
鍵の色だけが異なる通り、暗号化(署名)と復号化(検証)ではそれぞれ逆の鍵を用います。
デジタル署名の方法
デジタル署名の方法では、下記2通りの方法があります。
- メッセージに直接署名する方法
- メッセージのハッシュ値に署名する方法
メッセージに直接署名する方法
署名者(送信者)はメッセージを入力としてデジタル署名を作成し、検証者(受信者)はデジタル署名を検証します。
署名者はデジタル署名とメッセージ(平文)を送り、検証者はデジタル署名を検証後メッセージと検証結果を比較し一致していれば、検証が成功したことになります。
メッセージのハッシュ値に署名する方法
これは署名/検証の対象がメッセージから得られたハッシュ値です。
デジタル署名の利用例
デジタル署名の利用例として、下記4つの例を紹介します。
- セキュリティ情報のアナウンス
- ソフトウェアのダウンロード
- 公開鍵の証明書
- SSL/TLS
セキュリティ情報のアナウンス
セキュリティに関する団体が、セキュリティホールに関する警告文をWebサイトで公開しました。
しかし、その警告文はその団体が作成したものなのでしょうか。
インターネットは普及し、便利になりました。一方で、セキュリティインシデントも数多く発生しています。
そのようなセキュリティインシデントに関する警告文の発行元のなりすましを防止するために使われます。
ソフトウェアのダウンロード
私たちは、様々な媒体から様々なサイトで様々なソフトウェアをダウンロードします。
その時、ダウンロードしたソフトウェアを実行してよいかどうかの判断は極めて重要です。
つまり、提供者が確かに提供しているソフトウェアなのか検証する必要があります。
公開鍵の証明書
デジタル署名には正しい公開鍵が必要です。
そのため、自身が入手した公開鍵が正しい公開鍵かどうか検証するために、公開鍵に対してデジタル署名を施す場合があります。
これを公開鍵の証明書といいます。
公開鍵の証明書については、別記事をご参照ください。
SSL/TLS
サーバが正しいものであることを証明するために、サーバ証明書を用います。
これはサーバの公開鍵にデジタル署名が施されたものです。
「https://」で始まるサイトはデジタル署名が施されています。
ほかのデジタル署名
ほかのデジタル署名について、下記4つについて紹介します。
- ElGamal方式
- DSA
- ECDSA
- Rabin方式
ElGamal方式
mod Nで離散対数を求めることが困難なことを利用しています。
公開鍵暗号とデジタル署名に用いることができます。
DSA
NISTが定めたデジタル署名規格(DSS)ように作られたものです。
DSAはSchnorrアルゴリズムとElGamal方式の変種で、デジタル署名だけに用いることができます。
ECDSA
楕円曲線暗号を使用したデジタル署名アルゴリズムです。
Rabin方式
mod Nで平方根を求めることが困難なことを利用しています。
公開鍵暗号とデジタル署名に用いることができます。


