デジタル署名

概要

デジタル署名は通常3つのアルゴリズムからなる。一つは"鍵ペア"を生成する鍵生成アルゴリズム。もう一つは、利用者の秘密鍵を用いて署名を生成するアルゴリズム、それと利用者の公開鍵を用いて署名を検証するアルゴリズムである。署名生成処理で作り出されたデータも"デジタル署名"と呼ぶ。
デジタル署名は"メッセージ"の認証機能を提供する。メッセージは、電子メール、契約書、あるいはより複雑な暗号プロトコルで送受されるデータでも何でも良い。
認証局が発行する公開鍵証明書では、認証局の社会的な信頼性を担保に、利用者の公開鍵と利用者の結びつきを保証している。その際、証明書が（公開鍵使用者が信頼する）認証局によって発行されたものであることを証明するために、デジタル署名が使われている。
デジタル署名はしばしば電子署名（署名の意図を伝える任意の電子データを指す上位語）を実装する為に用いられるが、全ての電子署名がデジタル署名を用いる訳ではない。
日本、アメリカおよび欧州連合を含めて幾つかの国では、電子署名は法律上の意義がある。しかしながら、電子署名に関する法律は、その法律上の重要性をやや曖昧にしておき、暗号によるデジタル署名に関して法を適用できるか否かについて、必ずしも明確にしない。

デジタル署名の利点

以下はデジタル署名をコミュニケーションに適用する最も一般的な理由である。

認証

文書を送信する実体に関する情報がしばしばその文書に含まれる事があるが、その情報は不正確である可能性がある。デジタル署名は文書の発信元を認証する事に使う事ができる。デジタル署名に用いる秘密鍵の所有権が特定の利用者へ結び付けられる時は、有効な署名は文書がその利用者から送信されたという事を示す。送信者の真正性について高い信頼度の重要性は、金融に関する内容の時に特に明白である。例えば、ある銀行の支店がある口座の残高について変更を要求する指示を本店へ送る場面を仮定する。もしそのようなメッセージが権限が与えられた発信元から本当に送信されたという事を本店が確信していなければ、そのような要求に応える事は致命的な過ちになる事になる。

完全性

多くの筋書きでは、文書の送信者と受信者は文書が転送中に改竄された事が無いという確信を必要とするであろう。暗号は文書の内容を隠蔽するが、それを理解せずに暗号化された文書には改変の可能性がある（頑強性がある物として知られている幾つかの暗号アルゴリズムはこれを防止するが、その他は防止しない）。しかしながら、もし文書がデジタル署名されていたならば、文書のどんな改変でも署名が無効になるであろう。更に、有効な署名がなされた新しい文書を生成するために、文書とその署名を改変する効果的な方法はない。なぜならば、これはまだ多くのハッシュ関数で計算的に実行不可能であると見なされている（衝突耐性参照）。

デジタル署名の欠点

その実用性にもかかわらず、デジタル署名は私たちが解決を願う全ての問題を単独で解決する訳ではない。

デジタル署名と信頼できるタイムスタンプの関連性

本来、デジタル署名アルゴリズムとプロトコルは構成する文書が署名された日付と時刻に関する確実性を提供しない。署名者は署名にタイムスタンプを載せているかも載せていないかも知れない。また文書自体に日付が記載されているかも知れない。しかしその後に読む人は、例えば署名者が署名の日時を実際より前にしていないと確信できない。デジタル署名に加えて信頼できるタイムスタンプを使用する事で、その様な悪用を実行不可能にする事ができる。

否認防止

暗号の世界では、否認という単語はメッセージに対する責任を放棄するあらゆる行為を指す(司法の世界における否認とは意味合いが大きく異なる)。メッセージの受信者は、その署名者と完全性に関する主張を強固にするために、第三者（例えば裁判所）へ署名されたメッセージを示す事ができる。そのため受信者は、後になって容易に否認されないようにするため、送信者の署名を強く主張する事ができる。しかしながら、利用者が秘密鍵の秘匿性を失う事は、その鍵を用いた（そして表面上その利用者'から'の）全てのデジタル署名は疑わしい、という事を意味するであろう。それでもなお、利用者の署名鍵を拒否せずに、利用者は署名されたメッセージを否認できない。それは信頼できるタイムスタンプが無いという事実によって悪化する。したがって、（鍵が危殆化した後に）新しく作られた文書は古いものやそれ以上に複雑な署名鍵の失効から切り離す事はできない。公開鍵に関連する利用者鍵を証明し署名を否認する事ができないように、通常は認証局はリポジトリと呼ばれる公開鍵の公開データベースを保持する。期限切れの証明書は普通はそのデータベースから削除される。データの否認防止サービスが提供される場合、ある期間に古い証明書を保持する事は、認証局のセキュリティポリシーと責任の問題である。

個別のキーボードを備えたICカード読取り装置の使用

ICカードの活性化のためにPINコードを入力する事は、一般的にテンキーパッドを必要とする。幾つかのカード読取り装置はそれ自身のテンキーパッドがある。これは、PCに内蔵されたカード読取り装置を使用し、そしてそのコンピュータのキーボードを使用してPINを入力するより安全である。（所有者/オペレータの意思で、あるいは意思ではなく -- 例えばウイルスなどによって）キーロガーが動いているコンピュータではPINコードが漏洩する恐れがある。専門のカード読取り装置はソフトウェアやハードウェアの改竄に対して（鉄壁ではないが）脆弱ではない。またもちろん、そのような全ての装置に対する盗聴攻撃は可能である。

その他のICカード設計

今までのところ小さなセキュリティの証であるにも関わらず、ICカードの設計は活発な分野であり、それら特定の問題を回避する事を目的としたICカードの体系がある。

信頼されたアプリケーションだけを用いたデジタル署名の使用

デジタル署名が書面による署名と主に違う事の一つは、利用者が何に署名するか本人が"見ることができない"という事である。利用者のアプリケーションは秘密鍵を用いてデジタル署名アルゴリズムによって暗号化されるためにハッシュコードを提示する。利用者PCの制御を盗んだ攻撃者は、利用者のアプリケーションを外部の"代用品"とすげ換える可能性が有り、それは事実上、利用者自身のコミュニケーションを攻撃者のコミュニケーションへすげ換える事である。従って、悪意のあるアプリケーションは、利用者の原本を画面上に表示するが、攻撃者自身の（恐らく有益でない）文書を署名アプリケーションに提示する事で、無意識の利用者を任意の文書に署名するよう騙す事ができる。
この筋書きから防御するため、認証システムは利用者アプリケーション（ワードプロセッサ、メールソフトなど）と署名アプリケーション間に設定できる。その概念は利用者アプリケーションと署名アプリケーション両方がお互いの完全性を検証するための幾つかの手段を与える事である（例えば、署名アプリケーションは全ての要求がデジタル署名されたバイナリから行われる事を必要としても良い）。

署名と暗号化に別々の鍵ペアを使用する事

幾つかの国では、デジタル署名は伝統的なペンと紙の署名にやや似ている地位がある。概して、それらの条件はデジタル署名される物がその文書の署名者をその条件の中に法的に縛りつけるという事を意味する。このような理由により、暗号化と署名のために別々の鍵ペアを用いる事が最適であると考えられる事がよくある。暗号化鍵ペアを用いて（例えば住宅購入について）暗号化された会話ができるが、その人が発した全てのメッセージに法的な署名がされる訳ではない。双方の者が同意に達する場合に限り、彼らの署名鍵で契約書に署名を行い、そしてその場合に限り彼らは特定の文書の条件によって法的に縛られる。署名の後で、その文書は暗号化されたリンクの上で送信できる。