署名の逸脱を比較する

ECDSAでは、署名者は有効な署名を作成する際に選択の自由があり、その中にはナンス(署名に使われる一時的な値)も含まれます。悪意のあるファームウェアはその自由を悪用し、検証を通過する署名の中に鍵の素材を隠すことができます。BIP461は、規定された決定的な手順によってそれらの選択を固定します。

ビットコインが署名を受け入れたという事実だけでは、その作成過程で鍵が安全に保たれたことは証明できません。共通の仕様が期待される出力を提供し、それと照らして署名者の動作を確認できます。

この比較には同一の入力と、まったく同じ規格が必要であり、別の独立した署名者上にある秘密鍵へのアクセスも含まれます。その追加的な露出は、署名を再現するための実務上のコストです。同じ鍵と同じメッセージハッシュで結果が異なる場合、少なくとも一方の署名者がBIP461に従っていないことを示します。

別の有効なECDSA手順を用いた正直な実装でも、結果が一致しない場合があります。不一致はコンプライアンスについての調査を要しますが、その原因は依然として未解明です。比較だけでは、悪意のあるデバイスを特定することも、盗難を証明することもできません。

規定されたアルゴリズムはまた、標準のDER符号化において、ビットコインの1バイトのsighashフラグを除き、署名を最大70バイトに抑えます。

Dark Skippyの開示は、改ざんされたファームウェアがトランザクション署名にシード素材を埋め込みうることを指摘しました。元の開示で研究者らは、この手法を実際に確認したことはないと述べています。

Dark Skippyの元のデモンストレーションはSchnorr署名を用いていますが、BIP461はECDSAを規定しています。Taprootは別のBIP340 Schnorr方式を使用するため、この草案はそのデモンストレーションに対する対策を直接標準化するものではありません。

研究者らの緩和策に関する議論では、悪意のある署名者は選択されたトランザクションでのみ漏えいさせうると警告されており、そのためデバイスはテストではコンプライアンスに沿った署名を生成し、別のトランザクションで漏えいさせることができるとされています。

BIP461は2つのECDSA署名者を比較します。不一致は逸脱を示し、一致は単一のサンプルのみを確認します。

9月のマージの際、あるレビュアーは、BIP461が「完了」に進むにはテストベクターとリファレンス実装が必要だと述べました。

ウォレット利用者にとっての潜在的な価値は、逸脱を可視化しうる共通のベンチマークにあります。その価値を実現するには、準拠した実装と、検出の限界および秘密情報を扱うリスクの両方を考慮した比較が依然として必要です。