ブラインド署名
厳密なモデルにおいて、ブラインド署名方式は鍵生成アルゴリズム・署名プロトコル・検証アルゴリズムの3つで構成される。通常、鍵生成アルゴリズムと検証アルゴリズムはベースとなる普通の署名方式と共通である。一方、署名プロトコルは、署名したいメッセージ m {\displaystyle m} を持つユーザアリスと、署名者ボブの2者間で実行される暗号プロトコルである.プロトコルの終わりで、アリスは m {\displaystyle m} へのボブの署名を得るが、ボブには m {\displaystyle m} について何も教えない。この「何も教えない」という直感を数学的にとらえることは難しい。良く用いられるアプローチでは、悪意を持った任意の署名者に対し、署名者が得るのと同じ情報を出力できるシミュレータが存在することを示す。このアプローチは、ゼロ知識証明におけるゼロ知識性の定義に似ている。
〈封筒に入れる〉: メッセージ作成者アリスは、メッセージに乱数を乗算するなどの秘匿処理をする。
〈封筒の上からサインする〉: 署名者ボブは、署名鍵(秘密鍵)を使って、秘匿化されたメッセージに対して何らかの署名処理をして、秘匿化メッセージに対する署名を生成する。
〈封筒から出す〉: 秘匿化メッセージに対する署名から、メッセージの秘匿化に用いられた乱数部分を除くことで、元のメッセージに対する正当な署名を得る。
このような操作は、RSA署名やDSAなど、多くのメジャーなデジタル署名方式に対して実行することができる。
〈カーボン紙付き封筒〉と同様に、ブラインド署名はいくつかの有用な性質を持つ。まず、署名者は署名処理の実行時に、どのようなメッセージにサインしているのか全く分からない(ブラインド性, blindness)。また、通常のディジタル署名と同様に、アリスは署名者に署名処理を依頼することなしに、正当な署名を得ることができない(偽造不可能性)。さらに、署名者が複数回の署名処理を行ったならば、後から署名付きメッセージが公開されたとしても、それが何度目の署名処理で作成した署名なのか、すなわち、誰からの依頼で作成した署名であるのかを判別することができない(リンク不可能性, unlinkability)。