全員が見られるように平文メッセージを永続的に記録するのは賢明ではない。いつ事故が起きてもおかしくない。
どんな悪影響が出ると予想しているのかな?
これはECDSAのブロードバンドサブチャネルのおかげで、現行のシステムでもある程度可能だ。
私はブロックチェーン全体を覚えておく必要のないフルクライアントの実装をサポートするため、blockchain上に任意の情報を分散させる方法を探していた。http://bitcointalk.org/index.php?topic=505.0を見てくれ ― “Balance Sheets” についてのスレッドだ。
データをエンコードする素朴なやり方は、いくつものアドレスへ送金して、たとえば受信アドレスの最初の数バイトを調べることでデータをデコードする方法だが、これは比較的少ないデータを送るのに多数のトランザクションが必要となり、帯域の無駄が大きい。
DSAの興味深い性質として、32バイトのメッセージに署名しようとすると、各署名は64バイトの長さになる。つまり署名には、何もないところから生み出された32バイトの情報が含まれているということだ。アルゴリズムを調べてみるといいhttp://en.wikipedia.org/wiki/Digital_Signature_Algorithm。この情報はランダムパラメーターkから来ている。署名はg^kという数と、kとg^kの両方を含む別の式とのペアで構成される。もしg^kが自分のデータを含むようにkを選べるなら、blockchainに巨大な塊で平文データを含めることができる。(不)幸にも、これを行うのは困難でなければならない。さもなければECDSAは安全ではないということになる。
しかし、もし実質的に秘密鍵を公開すれば、誰でも簡単な代数を使って、その鍵で署名されたすべての署名に使われたk値を復元できる。これに気づいたのは私が最初ではない。http://en.wikipedia.org/wiki/Subliminal_channelsを見てくれ。
その鍵に関連付けられた金をすべて使い切っていれば、もうその鍵はどうでもよくなる。(もちろん誰かがその鍵にさらに金を送れば、みんなが先を争ってそれを使おうとするだろう!)だから、何日でも何か月でも普通のトランザクションに大量のデータをエンコードしておき、その後で実質的に秘密鍵を公開すれば(そのためのエレガントな方法がある)、すべてのデータが丸見えになる。
もちろん私の “balance sheet” スキームは、この問題(もし問題だとすれば)にそれほど悩まされない 😉
ByteCoin