デジタル署名とデジタル証明書
デジタル署名とデジタル証明書の違い
デジタル署名は、文書に対して「ハッシュ化」と「秘密鍵による暗号化」を行ったものです。
文書、画像や音声データなどに対して、ある時点の状態を明示するという役割を果たします。
デジタル証明書は、証明したい内容に対して「ハッシュ化」と「秘密鍵による暗号化」を行ったものです。
証明書を信頼できる第三者機関から発行してもらうことで、公的な確認(証明)ができる仕組みです。
デジタル署名(digital signature)について
デジタル署名
デジタル署名とは、送付されたデータが確実に本人のものであることを証明する技術です。
ハッシュ関数と公開鍵暗号方式(PKI:公開鍵基盤)を組み合わせて電子的な署名を作成します。
デジタル署名による送信者の証明
デジタル署名は公開鍵暗号方式を応用することで、送信データの正当性を保証します。
これは、秘密鍵で作成された暗号文は秘密鍵を持たない者では作成できない特性を利用しています。
秘密鍵を保持している送信者のみが作成できる情報「認証子(authenticator)」を提示することで証明を行います。
デジタル署名による改ざん検出
デジタル署名を利用することによって「送信者が正しい」ということが確認できます。
これはデータの送信者を証明できるということであり、伝送経路上でデータの改ざんが行われていないことを確認することができます。
デジタル署名による否認防止
デジタル署名において、署名を作成できる鍵(公開鍵暗号における秘密鍵)は送信者のみが保持しています。
つまり、署名を作成できるのは送信者のみであると前提に成り立っています。
このことから、送信者が署名を作成した(データを送信した)ことを否定できなくする「否認防止」の役割を果たすことができます。
(ただし、送信者の秘密鍵が漏洩して第三者に利用された場合には、送信者が否認するという可能性が発生します。)
デジタル署名の仕組み
デジタル署名は、ハッシュ関数と公開鍵暗号方式を組み合わせて電子的な署名を作成します。
署名者は送付するデータをハッシュ値にして、ハッシュ値を秘密鍵で暗号化して「署名」を作成します。
受信者は署名者の公開鍵でその署名が正しいかどうかを検証します。
デジタル署名の処理手順は以下になります。
- 送信者が公開鍵と秘密鍵を生成する。
- 送信者は受信者に公開鍵を送付する。
- 受信者は送信者が生成した公開鍵を入手する。
- 送信者が受信者に送付するデータをもとにハッシュ関数を使用してハッシュ値を算出する。
- 送信者はハッシュ値を秘密鍵を使用して暗号化する。
- 送信者は送付データと暗号化されたハッシュ値を送信する。
- 受信者は暗号化されたハッシュ値を、送信者から入手した公開鍵を使用して復号する。
- 受信者は受信データをもとにハッシュ関数を使用してハッシュ値を算出する。
- 受信者は復号されたハッシュ値と、算出されたハッシュ値を比較して、一致すれば正しいデータと判断する。
デジタル証明書について
デジタル証明書とは
デジタル証明書とは、第三者機関である「認証局」によって発行される電子式の身分証明書です。
公開鍵の正当性を証明する役割を持つことから、「公開鍵証明書」とも呼ばれます。
デジタル証明書は、ITU-T勧告の「X.509」で定義されています。
PKI(Public Key Infrastructure:公開鍵基盤)
PKIとは、利用者の身元を「信頼できる第三者: trusted third party」が審査を行い、認証を実現する仕組みです。
デジタル証明書、SSL/TLSやS/MIMEなどの公開鍵暗号方式の技術的基盤となります。
認証局(CA:Certification Authority)
公開鍵に対してディジタル署名を付加して、ディジタル証明書を発行します。
CRL(証明書失効リスト)の発行やCPS(認証局運用規定)の公開を行います。
CAは、上位CAが下位CAを認証して証明書を発行する階層構造となっています。
登録局(RA: Registration Authority)
ディジタル証明書保持者の身分保障を行います。
また、証明書の発行や失効など資格審査、証明書利用者情報の登録、鍵の一括管理などを実施します。
証明書有効性検証局(VA: Validation Authority)
証明書有効性検証局は、ディジタル証明書の有効期限や失効情報の集中管理などを行います。
OCSP(Online Certificate Status Protocol)
OCSPとは、ディジタル証明書の有効性をリアルタイムで確認する仕組みです。
OCSPを実装したサーバを「OCSPレスポンダ」といいます。
EV(Extended Validation)証明書
EV証明書は、Webサーバ用のディジタル証明書です。