デジタル署名
本来、デジタル署名アルゴリズムとプロトコルは構成する文書が署名された日付と時刻に関する確実性を提供しない。署名者は署名にタイムスタンプを載せているかも載せていないかも知れない。また文書自体に日付が記載されているかも知れない。しかしその後に読む人は、例えば署名者が署名の日時を実際より前にしていないと確信できない。デジタル署名に加えて信頼できるタイムスタンプを使用する事で、その様な悪用を実行不可能にする事ができる。
デジタル署名が書面による署名と主に違う事の一つは、利用者が何に署名するか本人が"見ることができない"という事である。利用者のアプリケーションは秘密鍵を用いてデジタル署名アルゴリズムによって暗号化されるためにハッシュコードを提示する。利用者PCの制御を盗んだ攻撃者は、利用者のアプリケーションを外部の"代用品"とすげ換える可能性が有り、それは事実上、利用者自身のコミュニケーションを攻撃者のコミュニケーションへすげ換える事である。従って、悪意のあるアプリケーションは、利用者の原本を画面上に表示するが、攻撃者自身の(恐らく有益でない)文書を署名アプリケーションに提示する事で、無意識の利用者を任意の文書に署名するよう騙す事ができる。
この筋書きから防御するため、認証システムは利用者アプリケーション(ワードプロセッサ、メールソフトなど)と署名アプリケーション間に設定できる。その概念は利用者アプリケーションと署名アプリケーション両方がお互いの完全性を検証するための幾つかの手段を与える事である(例えば、署名アプリケーションは全ての要求がデジタル署名されたバイナリから行われる事を必要としても良い)。
暗号理論あるいは法の規定に関わらず、デジタル署名が無意味にならないための重要な要件を、デジタル署名方式は全てそれぞれ持っている。
第一に、質の良いアルゴリズム。幾つかの公開鍵アルゴリズムは、それらに対する実行可能な攻撃が発見されており、安全でなくなる事が知られている。
第二に、質の良い実装。優れたアルゴリズム(またはプロトコル)も誤った実装で役に立たなくなるであろう。
第三に、秘密鍵は本当に機密が守られたままでなければならない。もし秘密鍵が誰か第三者に知られる事になれば、その者はどこから見ても"完璧な"デジタル署名を作り出せる。
第四に、例えば、ボブに属するように要求された公開鍵が実際にボブが所有するように、また逆の場合も同様に、公開鍵の配布は行われなければならない。これは公開鍵基盤を用いて普通に行われる。そして公開鍵 ↔ {\displaystyle \leftrightarrow } 利用者の組み合わせは(認証局と呼ばれる)PKI業者によって証明される。誰でも(一般的には暗号的に保護された身元証明書で具体化される)証明を要求できる「開かれた」PKIでは、誤った証明の可能性は些細な問題ではない。商用のPKI業者は幾つかの公知の問題に悩まされた。そのような過ちは不当に署名された(従って不正に帰属された)文書に導く恐れがある。「閉じた」PKIシステムは更に費用が掛かるが、このように容易に破壊される事はない。
第五に、利用者(および彼らのソフトウェア)は署名プロトコルを適切に実行しなければならない。