デジタル署名とは
デジタル署名は、異なる鍵ペアを用いる公開鍵暗号と同様の仕組みを使って、改ざんの検知や否認の防止を行います。イメージとして下記の図のようなイメージです。
上記の通りデジタル署名を行う際には、プライベート鍵で暗号化し、公開鍵で復号化します。
簡単にまとめてしまえば、
- 「プライベート鍵で暗号化」=「署名をする」
- 「公開鍵で復号化」=「署名が正しいものかを確認する」
という事になります。
また、デジタル署名には下記のパターンがあります。メッセージのハッシュ値に署名する(暗号化する)パターンがよく使われます。
- メッセージに直接署名する
- メッセージのハッシュ値に署名する
使用する暗号方式は、RSA、ElGamal方式、DSA、ECDSA(楕円曲線暗号)等を使用することが多いです。
また、デジタル署名は署名されていることは確認できても、その署名の内容が信頼できるものかどうかはわかりません。
信頼できるものかどうかの判断をするために、デジタル署名は証明書(デジタル証明書)と一緒に使用されることが多いです。
証明書(デジタル証明書)とは
信頼できる第三者によって、公開鍵が承認されていること(偽装されていないこと)を示すためのもの(証明書)です。
正式には公開鍵証明書と呼ばれており、X.509という規格に則ったものがよく使われています。証明書を発行する信頼できる第三者の事は、認証局と呼ばれています。
認証局
認証局は、下記の役割を担います。
- 鍵ペアの作成
- 証明書の登録
- 公開鍵登録時の本人確認
- 証明書破棄リスト(CRL)の作成
また、認証局自身が認証局である事を示すために、別の認証局が証明書を発行する必要があります。
そのため、認証局は下記の図のように階層化されています。認証局は上位層の認証局に対して自身が信頼できる認証局であることを示す証明書の発行を依頼します。
ちなみに、最上位層となるルートCAと呼ばれる認証局は、ルートCA自身が認証局であることを示す証明書(自分で自分を認証する証明書)を発行することで対応します。
証明書の発行+デジタル署名の流れ
下記が、公開鍵の認証局への登録(証明書の発行)から、データ送信時に証明書を使用するまでの流れになります。
- データ受信者(A)は鍵ペアを作成
- Aは認証局にAの公開鍵を登録
- 認証局はAの公開鍵に、認証局のプライベート鍵でデジタル署名して証明書を作成
- 送信者(B)は証明書を入手
- Bは認証局の公開鍵で、証明書が正しい事を確認(Aの公開鍵を入手)
- BはAの公開鍵で暗号化し、データを送信
証明書失効リスト(CRL)
認証局がこれを作成する、デジタル証明書の失効リストです。詳しくはRFC5280にて示されています。
なぜ証明書失効リストが必要かというと、誤って証明書が流出してしまった場合に証明書を無効にしたり、期限切れの証明書を無効にする必要があるからです。
公開鍵基盤(PKI)
RFC5280にて示されている、公開鍵を効果的に運用するための規格と仕様のことになります。
デジタル署名や証明書を扱う際にはこの規格・仕様に沿って行われます。
参考資料