2026年10月2日
情報処理安全確保支援士の勉強をしていると出てくる「鍵交換」「署名」「ブロック暗号」「暗号利用モード」「認証暗号」「ハッシュ関数」。これ何?
今回は、「署名アルゴリズム」について簡単にまとめてみました。
1.署名アルゴリズムは何をするものなのか?
署名アルゴリズムをひとことで言うと、
「デジタル署名において、秘密鍵を使って署名値を作り、公開鍵を使ってその署名値を検証するための具体的な方式」
それってつまりどこのプロセス?
まず、デジタル署名についておさらいしますね。
デジタル署名の流れは、
送信者 メッセージ→ハッシュ化→秘密鍵で暗号化して署名値を作成→メッセージと署名値を送信
受信者 (1) 受信した署名値を公開鍵で複合化してハッシュ値を算出
(2) 受信したメッセージをハッシュ化してハッシュ値を算出
(3) (1)と(2)のハッシュ値を比較して、同じだったらメッセージの改ざんがされていないことと、秘密鍵を持つ送信者がメッセージの作成者であることが検証できる
つまり、署名アルゴリズムとは、上記の流れにおける具体的な方式のことをいいます。
ただ、ここで注意しなければいけないのは、秘密鍵と公開鍵の生成自体は署名アルゴリズムに含まれないこと。
秘密鍵と公開鍵を生成→×署名アルゴリズムに含まれない
秘密鍵を用いて署名値を生成→〇署名アルゴリズムに含まれる
公開鍵を用いて署名値を検証→〇署名アルゴリズムに含まれる
では、いったい何に対して署名するのか?
デジタル署名はあらゆるところで用いられるので、どこで用いられるかによって署名対象も異なります。
例えばTLS1.2だったらハンドシェイクにおける鍵交換パラメータ、
TLS1.3だったらハンドシェイクメッセージ全体(CertificateVerifyメッセージ)、
証明書の「tbsCertificate」という部分(「tbsCertificate」の具体的な範囲はX.509を参照)が
署名対象になります。
「TLS暗号設定ガイドライン」の推奨セキュリティ型暗号アルゴリズム一覧にあるのはECDSA, RSASSA-PKCS1-v1_5, RSASSA-PSSですが、これらは上記のデジタル署名の流れの中で用いられる計算方法が若干異なります。
その具体的な計算方法や比較についてはまた別の機会に(あるのか?)。