また流出事故が起きてしまいました。ところが、それは本当にセキュリティの問題でしょうか?
実は確率の問題も絡んでおり、そのような場合からの流出(ハッキング)を確実に防ぐ効果的な方法があります。なぜその方法で防げるのか。理論的な側面を詳しく説明し、考察(その7)の最後に解決策をお教えします。
昨日、取引所から4502BTCという巨額の流出が起きてしまいました。コールドウォレットなのに、どうやって流出させる、なぜ?という感じになっていましたが、ブロックチェーンの仕組みを知ると、コールドウォレットからでも流出させてしまう仕組みが結構あります。
インターネットに接続されていないのに、どうやって? どんなに頑張っても、インターネットから物理的に隔離されたコンピュータやウォレットには何もできないはず。 この常識は、ブロックチェーンにだけは通用しません。ブロックチェーンはP2Pで情報を同期しているため、ウォレットをコールドにしても、そこにアクセスする方法が本当にあります。
このような状況を防ぐには、暗号通貨の心臓部である鍵の性能改良と、秘密鍵に渡す署名用メッセージハッシュ(こっちも重要です!!)の改良のみです。その4502BTCのトランザクションをみたところ、3からの古い形式のアドレス(この地点で、古くからあるP2SHのSIG_HASHALLなんですよね、これに4502BTCを置くのはちょっとね、でした。この古いSIG_HASHALL、一つだけ、非常に小さな確率ですが、まずい性質があります)に、4502BTCをそのまま置いていた感じがありました。ブロックチェーンは、一つのアドレスに一つの秘密鍵が結び付いているため、分散して保管しておくと、分散した分だけ秘密鍵が増えますので安全になります。
まあ、ざっとみた感じ、あの流出はこんな感じです。
とにかく鍵の改良、開発、秘密鍵に渡すメッセージハッシュの改良です。そこでSORA-QAIでは、今検証中のschnorr署名の一部の式を変形し、XY座標(EC_POINT)での完全一致を有効とする検証を最有力にしたい考えになりました。あと、署名用の乱数kがハッシュになっているのですが、ここに別の乱数を加えました。これは結構大事で、その秘密鍵に渡すメッセージハッシュ対する、ある重要な対策になります。詳しくは後日、また技術資料で書きますね。