暗号は「鍵のブラインド化」を行う方法を提供するかもしれない。いくつか調査したが、あまり知られていない分野だった。しかし何かあるかもしれない。「グループ署名」が関連しているかもしれない。
この一般的な分野に何かある:
http://www.users.zetnet.co.uk/hopwood/crypto/rh/必要なのは、公開鍵の追加のブラインドされたバリエーションを生成する方法だ。ブラインドされたバリエーションはルート公開鍵と同じ特性を持ち、秘密鍵がそのいずれに対しても署名を生成できるようにする。他者はブラインドされた鍵がルート鍵に関連しているか、同じルート鍵からの他のブラインドされた鍵に関連しているかを判別できない。これがブラインド化の特性だ。ブラインド化は、簡単に言えばx = (x * large_random_int) mod mだ。
Bitcoinアドレスへの支払い時に、使用ごとに新しいブラインドされた鍵を生成することになる。
次に、2つの署名が同じ秘密鍵から来たことがわからないように署名できる必要がある。常に異なるブラインドされた公開鍵に署名することでこの特性が既に得られるかどうかはわからない。得られない場合、そこでグループ署名が登場すると思う。グループ署名では、何かに署名できるが、誰が署名したかわからないようにすることが可能だ。
例として、不人気な軍事攻撃の命令が必要だが、歴史にそれを命令した人として名前を残したくない場合を想像してほしい。10人の指導者が秘密鍵を持っていれば、そのうちの1人が命令に署名でき、誰がやったかわからないようにできる。
これはすごくいいアイデアだ。あなたがどこへ向かおうとしていたかが見えてきた気がする。全部がつながるまで何度かやり直した。自分は少し鈍い。
正しく理解しているなら、あなたはアウトポイントハッシュを使い捨てのブラインド鍵で署名できる、と提案していた。
ブラインドされた公開鍵は、トランザクションのbitcoinアドレスの公開鍵と等価。bitcoinアドレスの公開鍵/秘密鍵ペアをP/pとする。ブラインドされた公開鍵はP1, P2, P3…Pnになる。それぞれが、秘密鍵(p)で署名された何でも検証できる。
つまり、作成時にアウトポイントハッシュを検証のために提出すると、それはP1で署名されたものとして見える。一方、受信者がアウトポイントをキャンセルのために提出するとき、それはP2、あるいはP1以外の何かで署名される(P1はすでに公開記録に残っているため)。計算された署名はどちらも同じになるが、公開鍵が変わる。これが、共通の秘密鍵を持つ誰かだけがそれを生成できた、ということを意味する。
天才だ!