
武蔵野個別指導塾の特徴
高校情報I デジタル署名と証明書—改変の検出と公開鍵の持ち主の確認を区別する|武蔵野個別指導塾

申請文書の署名検証と証明書の確認を分け、改変や鍵の差替えがある受信記録を点検します。
よくあるのは、高校生が署名の付いた申請文書を受け取り、署名が正しければ申請内容の事実まで正しいと考える場面です。署名の検証で調べるのは、ある公開鍵に対応する秘密鍵で作られた署名と、受け取った文書との整合性です。その公開鍵が申請者のものかは、証明書などを使って別に確かめます。さらに文書の記載が事実かどうかも別の確認が必要です。
出方には、文書を書き換えたときの検証結果を考える型、公開鍵を差し替えたときに証明書の役割を問う型、検証成功後に何が言えるかを選び直す型があります。次の例は学習用に作った条件で、実際の申請を表したものではありません。
文書、署名、公開鍵をつなぐ
デジタル署名は、文書と署名者の鍵を結び付けて検証する仕組みです。作成者は文書に対して秘密鍵を使い署名を作ります。受信者は文書、署名、対応する公開鍵を用いて検証します。秘密鍵は持ち主が管理し、検証する相手へ渡しません。公開鍵は検証に使えるよう渡せますが、受信者はそれが本当に目的の相手の鍵か確かめる必要があります。
多くの署名方式では、文書からハッシュ値という短い値を計算して利用します。ハッシュ関数は入力から一定の形式の値を求める関数です。同じ入力なら同じ値になりますが、異なる入力が同じ値になる可能性は原理上あります。したがって、値が同じなら文書が必ず同一と証明できる、とまでは言えません。署名で改変を検出するには、異なる文書から同じハッシュ値を意図的に見つけることが難しいハッシュ関数など、適切な方式を使う必要があります。
署名を「秘密鍵で文書を暗号化すること」と覚えると、目的や実際の方式を取り違えます。署名の作成と検証は方式ごとの手順です。公開鍵暗号による機密性の確保は、第三者に内容を読まれにくくすることが目的です。署名が付いているだけで文書が読めなくなるわけではありません。

図1のように、受信者は文書と署名の検証に加え、その検証に使う公開鍵と主体の結び付きを確認します。証明書には、主体と公開鍵の対応などが記され、認証局の署名が付けられます。受信者は信頼する認証局につながる署名の連なり、対象の主体、有効期間や失効状態などを確認して、鍵を信頼できるか判断します。証明書が手元にあるという事実だけでは確認を終えたことになりません。
証明書の検証に失敗したときは、その証明書から目的の相手の公開鍵だと判断できません。失効状態を確認できない場合の扱いは利用条件にもよりますが、少なくとも確認済みとして扱わず、判定不能として保留します。文書の署名が検証できても、鍵の持ち主が未確認なら、申請者の署名だとは結論できません。
署名が正しく検証され、鍵と申請者の対応も信頼できる場合でも、申請者が事実と異なる内容に署名した可能性は残ります。また、秘密鍵が別人に使われた場合など、鍵の管理に関する条件も考える必要があります。署名は内容の真偽を調べる仕組みではなく、事実の確認には別の記録や照会を使います。
基本例題:申請文書が届いたら
申請者アオが申請文書を作り、自分の秘密鍵で署名を作成しました。受信者には文書、署名、アオの公開鍵を含む証明書が届きます。学習用の条件として、証明書は信頼する認証局まで検証でき、対象はアオで、有効期間内かつ失効していません。公開鍵で文書と署名を検証すると成功しました。申請内容の事実は別途調べていません。鍵はアオ本人が管理していたとします。
このとき、受信者が言えることと言えないことを、それぞれ1つずつ文章で答えてください。
- 証明書の対象と信頼の条件を確認すると、検証に使う公開鍵をアオの鍵として扱えます。
- その公開鍵で署名の検証が成功したので、受け取った文書と署名はその鍵に対応する組として整合します。
- 秘密鍵を本人が管理したという条件を戻すと、アオがその文書に署名したと判断できます。
- 内容の事実を調べた条件はないため、申請内容が事実だとは判断できません。

図2のように、証明書の確認と署名の検証は異なる矢印です。両方に成功して初めて、与えられた鍵の管理条件の下でアオの署名と結び付けられます。答えを元の状況へ戻すと、署名が付いた申請文書は受け取れていますが、申請内容を裏付ける記録はまだ確認していません。
では、同じ文書の一部が署名後に変わっていたらどうなるでしょうか。通常は受信文書に対する署名検証が失敗し、元の署名との整合性を確認できません。ただし、失敗は改変の可能性を示すのであって、いつ誰が変更したかを単独で特定するものではありません。署名の破損や誤った鍵の使用でも失敗し得ます。
標準例題:文書の差替えと鍵の差替え
申請者イオの秘密鍵は本人が管理しています。元の文書Mに署名Sを付け、イオの公開鍵Kを記載した有効な証明書Cを添えます。次の3通について、受信者はCの対象と信頼の連なり、有効期間、失効状態を確認し、Cに記載された鍵で署名を検証します。Mと別の文書Nに対してSをKで検証すると失敗するものとします。鍵LはKと異なり、Lに対応する秘密鍵でNに付けた署名をTとします。各通について、鍵の持ち主の確認と文書の署名検証をそれぞれ成功、失敗、または実施できないで答え、イオが署名したと判断できるか述べてください。
| 通 | 受信した組 |
|---|---|
| A | M、S、C |
| B | N、S、C |
| D | N、T、Lだけ。Cは付いていない |
AのSはMに対してKに対応する秘密鍵で作られた署名で、Kによる検証は成功するものとします。
- AはCからKがイオの鍵だと確認でき、MとSの検証も成功します。
- 鍵の管理条件も合わせ、AはイオがMに署名したと判断できます。
- Bは同じCなので鍵の持ち主の確認は成功します。
- BはNとSをKで検証すると、問題の条件により失敗します。イオがNに署名したとは判断できません。
- DはLを使った署名の検証自体は成功します。しかしLをイオに結び付ける証明書などがないので、鍵の持ち主の確認は実施できません。
- DはNとTがLに対応する組とわかっても、イオがNに署名したとは判断できません。
Dのように、文書、署名、公開鍵をまとめて差し替えると、新しい組の内部では検証が成功する場合があります。受信者が最初に渡された鍵を無条件にイオの鍵と決めてしまうと、この差を見落とします。逆にBでは鍵を確認できても、文書と署名の組が合いません。鍵の確認と署名の検証の両方の結果を記録することで、どこまで判断できたかを示せます。
発展例題:確認できない状態を残す
受信者は展示の利用申請を受け取りました。文書と署名、申請者ウミの公開鍵を含む証明書があります。証明書の署名の連なりと対象、有効期間は適切で、文書の署名検証は成功しました。しかし失効状態を調べる外部の確認先が応答せず、他の方法でも状態を確認できません。この問題では、失効状態が確認できなければ鍵の持ち主の確認を完了しない規則とします。申請内容の事実も未確認です。受信者が記録する3項目を「署名の整合性」「鍵の持ち主」「内容の事実」の順に、確認済みか未確認かで答えてください。
- 受信した公開鍵による文書と署名の整合性は検証成功なので確認済みです。
- 証明書の失効状態は応答がないため未確認です。問題の規則では、鍵の持ち主の確認も完了できません。
- 内容の事実を調べていないので、事実も未確認です。
- 答えは順に「確認済み、未確認、未確認」です。確認先が応答しないことを、失効していないという結果に置き換えてはいけません。
応答がないことと、確認の結果として失効が判明したことも区別します。前者は必要な結果を得られていない状態、後者は有効と扱えないことがわかった状態です。いずれもこの条件では申請者の鍵として確認完了とはできませんが、再確認の必要性を伝える記録は異なります。文書や証明書が壊れて読み取れない場合も、検証成功とはせず、どの入力を読み取れなかったかを残します。
誤答を直す:成功したのは何の検証か
展示申請の文書と署名を受け取った人が、「署名の検証に成功したので、申請者の名前も申請内容も正しい」と答えました。ここでは検証に使った公開鍵が申請者のものか、まだ調べていません。内容の事実も調べていません。

図3のように、署名の整合性から鍵の持ち主と内容の真偽まで一息に進むのが誤りです。検証成功が示すのは、使用した公開鍵と受信した文書・署名の整合性です。鍵が誰のものかという問いには証明書の確認が必要で、内容が事実かという問いには別の根拠が必要です。
修正した答えは「この公開鍵で文書と署名の整合性を確認できた。申請者の鍵かどうかと内容の事実は、この結果だけでは判断できない」です。もし証明書が対象を別人として示していたら、署名の整合性が成功しても申請者の鍵とは扱えません。もし証明書の確認に成功しても、内容の真偽を判断するための資料は別に必要です。
反対に、検証失敗を見て「必ず第三者が本文を改ざんした」と断定するのも早すぎます。署名の破損、鍵の選択違い、文書の変更など複数の可能性があります。正しい鍵と元の文書を安全に確認できる手段があるなら照合し、原因が不明な間は受理を保留します。
練習:5つの受信記録
各問は独立した学習用の条件です。鍵の秘密は各持ち主が管理しているものとし、指定された確認が成功した場合は、その確認に必要な条件が満たされたとします。各問で求められた項目を順に答えてください。
- 展示案内の文書Pと署名が届き、発行者エナの証明書の確認と、その公開鍵による署名検証がともに成功しました。案内の開催場所は未照会です。エナがPに署名したか、開催場所が事実かをそれぞれ「判断できる」「判断できない」で答えてください。
- 備品一覧Qと署名を受け取り、記載者オトの証明書の確認に成功しました。オトの公開鍵によるQの署名検証は失敗しました。鍵の持ち主の確認と署名の整合性をそれぞれ「成功」「失敗」で答え、失敗の原因を1つに断定できるか答えてください。
- 連絡文Rと署名、公開鍵Xが届き、Xでの検証は成功しました。Xの持ち主を確認する証明書などは届いていません。Xに対応する鍵で署名された組か、指定された送信者の署名かをそれぞれ「判断できる」「判断できない」で答えてください。
- 報告文と署名、証明書が届きましたが、証明書の内容が壊れて公開鍵を取り出せません。他に公開鍵はありません。鍵の持ち主の確認と署名検証をそれぞれ「成功」「失敗」「実施できない」から選び、次に必要なことを1つ述べてください。
- 記録文と署名、証明書を検査したところ、署名検証は成功し、証明書の失効状態は確認の結果、失効済みでした。この問題では失効済みの証明書を受理しない規則です。署名の整合性と、証明書を使った鍵の受理をそれぞれ「成功」「失敗」で答え、本文の事実が判明するか述べてください。
練習の答えと解き方
-
順に「判断できる、判断できない」です。証明書でエナと公開鍵を結び付け、署名検証でPとの整合性を調べています。秘密鍵の管理条件を戻すと、エナの署名と判断できます。一方、開催場所を確かめた条件はありません。案内の署名と場所の事実確認は別です。
-
順に「成功、失敗」で、原因は1つに断定できません。証明書の確認は成功したため、オトの公開鍵として扱えます。Qと署名の検証は失敗したので、Qにオトが署名したと受信記録からは判断できません。Qの変更、署名の破損などを区別する情報が問題にはないからです。
-
順に「判断できる、判断できない」です。Xで検証が成功したので、Rと署名はXに対応する組です。しかし、Xが指定された送信者の鍵だという確認がありません。受信したXを使って検証に成功した事実を、送信者との対応が証明されたという事実に変えてはいけません。
-
鍵の持ち主の確認と署名検証は、どちらも「実施できない」です。証明書が読めず、他に公開鍵がないという条件へ戻すと、検証に使う鍵を取り出せません。例えば、証明書を信頼できる方法で再取得し、読める状態にしてから必要な確認をやり直します。読めなかった結果を検証成功にしてはいけません。
-
順に「成功、失敗」です。公開鍵による署名の整合性は成功していますが、問題の規則では失効済みの証明書を使って鍵を受理できません。したがって、署名検証の成功を根拠に指定の相手の署名だとは確定できません。本文の事実も、この2つの結果からは判明しません。失効が判明した状態と、照会先が応答しない状態は記録を分けます。
覚えておくこと
- 署名検証は文書、署名、公開鍵の整合性を調べます。
- 証明書の確認は公開鍵と主体の結び付きを判断するために行います。
- 検証の失敗と、入力不足や応答なしで検証できない状態を区別します。
- 署名や証明書の確認は、文書の内容が事実であることを保証しません。
つまずきの見分け方
答えに「正しい」とだけ書いていたら、文書と署名の整合性、鍵の持ち主、内容の事実のどれを指すか尋ねてみましょう。個別指導では、各確認の入力と結果を別の欄に書き、証明書がない場合や確認先が応答しない場合にも欄を埋められるか確かめます。署名成功の矢印の先に、事実の確認を勝手に付け足さないことが判断の境目です。
読んで終わりにするか、ここから変えるか。
武蔵境駅徒歩30秒、講師1人に生徒1人の完全1対1。授業のあいだ、先生は隣を離れません。いまの詰まりを、無料相談でそのまま話してください。
まず15分だけ電話で話したい方は、無料電話相談(15分)から。塾からお電話を差し上げます。
本気になった日が、入塾の日。
お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。
電話は年中無休。365日、24時間、お電話可能。




