web-dev-qa-db-ja.com

ECDSAで暗号化する方法は?

指定されたアドレスがビットコインを誰にでも転送するトランザクションがブロックチェーンにあると仮定します。メッセージを暗号化して、そのアドレスの所有者だけがメッセージを読むようにする必要があります。私は彼の公開鍵を持っていますが、これはECDSA鍵であり、私の知る限り、ECDSAは暗号化をサポートしていません。

これを達成する方法は何でしょうか?

1
Nathan Parker

ECDSAでは暗号化しません。 ECDSAは署名アルゴリズムです。

ECDSA公開鍵は実際には「EC公開鍵」であり、概念的にはその種の鍵を使用する非対称暗号化アルゴリズムで使用できる可能性があります。例えば [〜#〜] ecies [〜#〜] ;または、それは [〜#〜] ecdh [〜#〜] のような鍵交換アルゴリズムの半分としても使用でき、対称暗号化で使用できる「共有秘密」が得られますアルゴリズム。

ただし、これは必ずしも良い考えではありません。

  • 署名と暗号化の両方のリスクに同じキーペアを使用すると、2つのアルゴリズム間の望ましくない相互作用がトリガーされます(たとえば、受信者が、攻撃者が制御するメッセージの復号化を計算すると、署名の偽造につながる可能性のある情報が不本意に漏洩する可能性があります)。この種の相互作用はよく研究されていません。

  • 署名キーと暗号化キーには 個別のライフサイクル が含まれる傾向があります。生成、保存、バックアップ...は、両方の種類のキーで同じ方法で処理しないでください。署名と暗号化に同じキーを使用することで、その点で次善の策を講じます。

より安全な方法は、各当事者に2つの鍵ペアを所有させることです。1つは署名用で、もう1つは暗号化用です。おそらく、所有者は暗号化公開鍵と署名鍵を署名して、署名公開鍵を知っている人が暗号化公開鍵の正当性を検証できるようにします。 。

8
Thomas Pornin