このページでは、デジタル署名での鍵の使い方、ハッシュ関数の種類、PKIと認証局・デジタル証明書の仕組み、CRLとOCSPによる失効の確認がわかります。
- 一言で言うと:
- 公開鍵暗号を応用して、「本人が作った」「改ざんされていない」「あとで否認できない」ことを示すデジタル署名と、その公開鍵が本当に本人のものかを第三者(認証局)が証明する仕組みPKIの話
署名する(デジタル署名・ハッシュ関数)→ 公開鍵を保証する(PKI・認証局・デジタル証明書)→ 取り消された証明書を確かめる(CRL・OCSP)
覚え方の軸
- 暗号化と署名では、鍵の使い方が逆
- 暗号化は、受信者の公開鍵で暗号化 → 受信者の秘密鍵で復号
- 署名は、送信者の秘密鍵で署名 → 送信者の公開鍵で検証
- 「秘密鍵を持っているのは本人だけ」だから、秘密鍵で作ったものは本人の証拠になる
- デジタル署名で守れるのは3つ、守れないのは1つ
- 守れるのは、なりすまし防止(本人確認)、改ざん検知、否認防止
- 守れないのは、盗聴(機密性)。本文の暗号化は別にする
- 署名は「ハッシュで要約(メッセージダイジェスト)してから」作る
- 受信者は「自分で作ったMD」と「署名を戻したMD」を比べ、一致すればOK
- PKIは「公開鍵の身分証明書」の仕組み
- 認証局(CA)が、公開鍵にCA自身のデジタル署名を付けて、デジタル証明書を発行する
- CAの中は、RA(受け付ける)→ IA(発行する)→ VA(検証に答える)
- 失効の確認は「リストを取りに行く」か「その場で聞く」か
- CRLは、失効した証明書のリストを定期的に取りに行く
- OCSPは、オンラインで1枚ずつリアルタイムに問い合わせる
デジタル署名:本人が作り、改ざんされていないことを示す(★試験によく出る)
- デジタル署名:
- 本人の秘密鍵を使って、メッセージやファイルなどの電子文書に付ける電子的なデータ
- 公開鍵暗号技術を応用して、なりすましの防止と、電子文書が改ざんされていないことを検証する機能を提供する
- 否認防止にもなる
- 事後否認の防止:
- 本人が電子文書を送ったのに、「送った覚えがない」「他人になりすまされた」と主張する事後否認も防げる
- 否認防止:
- JIS Q 27000:2019(情報セキュリティマネジメントシステム-用語)では、「主張された事象又は処置の発生、及びそれを引き起こしたエンティティを証明する能力」と定義している
- 簡単に言うと、「誰が、何をしたか」をあとで証明できること
- デジタル署名の例え:
- 紙の書類に押す実印。実印(秘密鍵)は本人しか持っていないので、押してあれば本人が出した書類だとわかり、「出していない」とは言えない
① デジタル署名の基本的な仕組み
- 使う鍵:
- 公開鍵暗号方式と同じように、秘密鍵と公開鍵の鍵ペアを使う
- ただし、デジタル署名では、送信者が「署名用の秘密鍵」と「検証用の公開鍵」のペアを作る
- 秘密鍵は、自分で厳重に秘密に保管し、公開鍵は公開しておく
- 署名鍵:
- 送信者の秘密鍵。署名を作るのに使う
- 検証鍵:
- 送信者の公開鍵。署名を確かめるのに使う
- 署名生成:
- 送信者Aは、電子文書(平文)に自分の秘密鍵を使って、デジタル署名を作る
- 署名検証:
- 受信者Bは、送信者Aの公開鍵を使って、デジタル署名を確かめる
- 本人が作ったとわかる理由:
- ペアの公開鍵で検証できる署名を作れるのは、秘密鍵を持っている本人だけ
- だから、「公開鍵で検証できる署名」=「公開鍵と対になる秘密鍵を持っている本人が作った署名」とわかる
| 公開鍵暗号での暗号化 | デジタル署名 | |
|---|---|---|
| 目的 | 盗聴を防ぐ(機密性) | なりすまし防止、改ざん検知、否認防止 |
| 使う鍵ペア | 受信者の鍵ペア | 送信者の鍵ペア |
| 送信者が使う鍵 | 受信者の公開鍵で暗号化 | 送信者の秘密鍵で署名を作る |
| 受信者が使う鍵 | 受信者の秘密鍵で復号 | 送信者の公開鍵で検証 |
② メッセージダイジェストの利用
- メッセージダイジェスト(MD)を使う理由:
- 実際にデジタル署名を使うときは、平文にハッシュ演算をして、メッセージの要約(メッセージダイジェスト)を作り、それからデジタル署名を作る
- 平文から直接署名を作る場合の問題:
- 署名を作る演算に多くの時間がかかる
- 署名のサイズが平文ごとに違う
- MDを使う効果:
- デジタル署名の長さが一定になる
- 署名にかかる時間も短くなる
RSA方式のデジタル署名の例
- 送信者Aがすること:
- ハッシュ関数で平文からMDを作る
- そのMDを、Aの秘密鍵(署名鍵)で暗号化して、デジタル署名を作る(署名生成)
- 平文とデジタル署名を送る
- 受信者Bがすること:
- 受け取った平文に、同じハッシュ関数をかけて、①のMDを作る
- デジタル署名を、Aの公開鍵(検証鍵)で復号して、②のMDを得る(署名検証)
- ①と②を比較する
- ①と②が一致したらわかること:
- 送信者A本人がデジタル署名をしたこと
- メッセージが改ざんされていないこと
- 平文の扱い:
- 実際には、平文のまま送ることはない。平文は、別に暗号化したうえで送る
- 例え:
- 長い契約書の「あらすじ(MD)」に実印を押して送る。受け取った人は、届いた契約書から自分でもあらすじを作り、実印付きのあらすじと見比べる。同じなら、本人が送った書き換えのない契約書だとわかる
③ ハッシュ関数の種類
| ハッシュ関数 | ハッシュ値の長さ | ポイント |
|---|---|---|
| MD5 | 128ビット | 任意の長さの平文から作る |
| SHA-1 | 160ビット | MD5よりも復元が難しい。SHAはSecure Hash Algorithmの略 |
| SHA-2 | 224、256、384、512ビット | SHA-1の後継。ハッシュ値を長くし、安全性を高めた。SHA-224、SHA-256、SHA-384、SHA-512をまとめてSHA-2(SHA-2 family)という。試験でよく出るのはSHA-256 |
| SHA-3 | SHA-2と同じ | SHAシリーズの代替規格。計算アルゴリズムが違い、信頼性が上がった。任意の長さを指定できるモードもある |
- 現状よく使われるもの:
- SHA-2に深刻な脆弱性がないので、現状ではSHA-2の利用が一般的
- ハッシュ関数の名前と長さの覚え方:
- SHA-2とSHA-3は、名前の数字(256など)がそのままビット数
- MD5は128、SHA-1は160
- 注意(新しい情報):
- MD5とSHA-1は、異なる入力から同じハッシュ値を作る攻撃(衝突攻撃)が現実的になっていて、署名などの安全が求められる用途には使わない
- 米国NISTは、SHA-1を2030年末までに廃止する方針を示している
- 試験では、上の表のとおり覚えておけばよい
PKI(公開鍵基盤):公開鍵が本人のものだと証明する(★)
- PKIが必要な理由:
- ネットワーク上で使われる公開鍵が、本人と結びついた正当なものであることを、第三者機関の介入で効率的に証明する必要がある
- 悪い人が「私がAです」と偽の公開鍵を配ると、偽の署名も「本物」に見えてしまうから
- PKI(Public Key Infrastructure:公開鍵基盤):
- そのために使われるモデル
- 公開鍵暗号を使った証明書の作成、管理、格納、配布、破棄に必要な、方式、システム、プロトコル及びポリシの集合で実現されている
① 認証局(CA)とデジタル証明書
- 認証局(CA):
- PKIで、公開鍵の真正性を証明する第三者機関
- 認証局自身のデジタル署名を付けたデジタル証明書を発行する
- デジタル証明書:
- 公開鍵証明書ともいう
- 公開鍵、所有者情報などとともに、認証局のデジタル署名が付いている
- 例えば、市役所が発行する印鑑登録証明書。「この実印は確かにこの人のもの」と、市役所(CA)が証明する
デジタル証明書の発行
- ① 申請:
- 申請者(ユーザA)は、鍵ペアを作り、公開鍵を認証局に提出して、証明書の発行を依頼する
- ② 審査と発行:
- 認証局は、提出された申請書類などに基づいて、公開鍵の所有者の本人性を審査し、デジタル証明書を発行する
- 受信者がすること:
- デジタル証明書に付いた認証局の署名を、認証局の公開鍵で検証して、証明書の正当性を確かめる
- そのうえで、証明書の中のユーザAの公開鍵で、文書を開く(署名を検証する)
- 認証局が証明した公開鍵で開ければ、本当にユーザAの文書だとわかる
認証局の中の機関と役割
| 機関 | 役割 |
|---|---|
| RA(登録局) | デジタル証明書の登録及び失効申請の受付 |
| IA(発行局) | RAから依頼されたデジタル証明書の発行及び失効作業 |
| VA(検証局) | CRLを集中管理し、デジタル証明書の有効性の検証及び失効状態についての問合せに応答 |
- RA・IA・VAの覚え方:
- Registration(登録)、Issuing(発行)、Validation(検証)
- 受け付ける → 発行する → 確かめる、の流れ
- 認証局の運営者:
- 政府機関などが業務を行う場合と、民間機関が行う場合がある
- 公的な証明書がいらない社内文書のような場合は、社内のサーバにプライベートCAを作ることもできる
② CPとCPS
- CP(Certificate Policy:証明書ポリシ):
- 証明書の目的や利用用途を定めたもの
- CPS(Certification Practice Statement:認証実施規定、認証局運用規程):
- CAの認証業務の運用などに関する詳細を定めたもの
- CPとCPSを公開する理由:
- CAは、CPとCPSを規定して対外的に公開する
- これで、認証の利用者が、CAの信頼性や安全性などを評価できるようにしている
- CPとCPSの見分け方:
- CPは「何のための証明書か(方針)」、CPSは「CAがどう運用しているか(実際のやり方)」
- CPSの「P」はPractice(実践)
③ デジタル証明書の失効情報
- CRL(Certificate Revocation List:証明書失効リスト):
- 有効期限内に、何らかの理由で失効させられたデジタル証明書のリスト
- 証明書が失効したら、発行者であるCAがその証明書を無効にし、失効情報をCRLに登録する
- 例えば、なくしたクレジットカードの番号を載せた「使用停止カードの一覧表」
- 失効の理由:
- 秘密鍵を紛失し、第三者に悪用されるおそれがある場合
- 証明書に書いた事項が変わった場合
- 規定違反行為がわかった場合 など
| 確認方法 | やり方 |
|---|---|
| CRLモデル | CAが、CRLを定期的に公開する。証明書利用者は、定期的にCRLを取得して、証明書の有効性を検証する |
| OCSPモデル | 証明書利用者(OCSPリクエスタ、OCSPクライアント)が、証明書の失効情報を持ったサーバ(OCSPレスポンダ)に、対象の証明書のシリアル番号などを送り、その応答で有効性を確かめる |
- OCSP(Online Certificate Status Protocol):
- デジタル証明書が失効しているかどうかを、オンラインでリアルタイムに確認するためのプロトコル
- CRLとOCSPの例え:
- CRLは、毎週届く「使用停止カードの一覧表」を見て確かめる。一覧表が届くまでの間に止まったカードはわからない
- OCSPは、その場でカード会社に電話して「この番号は使えますか」と聞く
④ デジタル証明書とCRLのフォーマット
- 記述形式:
- デジタル証明書とCRLの記述形式は、ITU-T勧告X.509で定義されている
- デジタル証明書の中身:
- 署名前証明書(署名対象部分)、署名アルゴリズム、発行者(CA)のデジタル署名の3つでできている
- 署名前証明書の項目:
- バージョン、シリアル番号、アルゴリズム識別子、発行者、有効期間(開始時刻、終了時刻)、主体者、主体者公開鍵情報(アルゴリズム、主体者公開鍵)、発行者ユニーク識別子、主体者ユニーク識別子、拡張領域(識別子、重要度、拡張値)
- 主体者:
- 証明書の持ち主(公開鍵の所有者)のこと
- CRLの中身:
- 署名前証明書リスト(署名対象部分)、署名アルゴリズム、発行者(CA)のデジタル署名の3つでできている
- 署名前証明書リストの項目:
- バージョン、署名アルゴリズム、発行者、今回更新日時、次回更新日時、失効証明書のリスト、CRL拡張
- 失効証明書のリストの中身:
- ユーザ証明書(失効された証明書のシリアル番号)、失効日時、CRLエントリ拡張
- ひっかけ注意:
- CRLに載るのは、失効した証明書のシリアル番号と失効日時など。証明書そのものや秘密鍵は載らない
- デジタル証明書に入るのは、主体者の公開鍵。秘密鍵は入らない
- 注意(新しい情報):
- 証明書の失効確認は、プライバシーや運用の負担の問題から、OCSPをやめてCRLに戻す動きがある(大手の無料認証局Let’s Encryptは、2025年にOCSPの提供を終了した)
- また、Webサイト用のサーバ証明書の最長有効期間は短くなっていく。2026年3月15日から200日、2027年3月から100日、2029年3月から47日になる
- 試験では、「CRLは定期的に取得、OCSPはリアルタイムに確認」で覚えておけばよい
混同しやすいペア
- 公開鍵暗号での暗号化 / デジタル署名
- 暗号化は、受信者の公開鍵で暗号化し、受信者の秘密鍵で復号する(盗聴を防ぐ)
- デジタル署名は、送信者の秘密鍵で署名し、送信者の公開鍵で検証する(なりすまし・改ざん・否認を防ぐ)
- 署名鍵 / 検証鍵
- 署名鍵は、送信者の秘密鍵
- 検証鍵は、送信者の公開鍵
- 署名生成 / 署名検証
- 署名生成は、送信者がMDを秘密鍵で暗号化して署名を作る
- 署名検証は、受信者が署名を公開鍵で復号し、自分で作ったMDと比べる
- なりすまし防止 / 改ざん検知 / 否認防止
- なりすまし防止は、本人が作ったとわかること
- 改ざん検知は、途中で書き換えられていないとわかること
- 否認防止は、あとで「送っていない」と言えないこと
- デジタル署名 / 暗号化(機密性)
- デジタル署名だけでは、本文は読まれてしまう(機密性はない)
- 本文を読まれたくなければ、別に暗号化する
- MD5 / SHA-1
- MD5は、128ビット
- SHA-1は、160ビット。MD5より復元が難しい
- SHA-2 / SHA-3
- SHA-2は、SHA-1の後継。SHA-224、256、384、512。現状よく使われる
- SHA-3は、SHAシリーズの代替規格。長さはSHA-2と同じだが、計算アルゴリズムが違う。任意の長さも指定できる
- デジタル署名 / デジタル証明書
- デジタル署名は、本人が秘密鍵で文書に付けるもの
- デジタル証明書は、認証局が公開鍵の持ち主を証明するもの(認証局の署名付き)
- RA / IA / VA
- RAは、登録と失効申請の受付
- IAは、証明書の発行と失効作業
- VAは、CRLを管理し、有効性の検証や失効状態の問合せに答える
- CP / CPS
- CPは、証明書の目的や利用用途を定めたもの(証明書ポリシ)
- CPSは、CAの認証業務の運用の詳細を定めたもの(認証実施規定)
- CRL / OCSP
- CRLは、失効した証明書のリスト。利用者が定期的に取得する
- OCSPは、オンラインでリアルタイムに失効を確認するプロトコル
- OCSPリクエスタ / OCSPレスポンダ
- OCSPリクエスタ(OCSPクライアント)は、証明書の状態を問い合わせる利用者
- OCSPレスポンダは、失効情報を持ち、問合せに答えるサーバ
- パブリックCA / プライベートCA
- パブリックCAは、政府機関や民間機関が、公的な証明書を発行する
- プライベートCAは、社内のサーバに作り、社内向けの証明書を発行する
- 否認防止 / 責任追跡性
- 否認防止は、事象や処置の発生と、それを起こしたエンティティを証明できる能力
- 責任追跡性は、誰が何をしたかを後からたどれる特性(情報セキュリティの特性の1つ)