引用「SHA-1の衝突を2^52回の暗号操作で見つけられると主張する論文があります。最適に安全なハッシュでは2^80回の操作が必要です。2^52回の時間はまだ大きいですが、クラスターやボットネットの範囲に入ってきています。」 2^80は誕生日攻撃を使える場合だ。この場合は誕生日攻撃を使えないため、難易度は完全な2^160ビットだ。ただし、100万件(2^20件)のトランザクションのうちどれか1つを破ろうとしている場合、部分的な誕生日攻撃で2^160/2^20 = 2^140にできる。
ビットコインアドレスは160ビットハッシュが使用される唯一の場所だ。その他すべてはSHA-256だ。計算方法は以下の通りだ:
bitcoinaddress = RIPEMD-160(SHA-256(publickey))
間違っていたら訂正してほしい(喜んで謝るので)が、この場合RIPEMD-160に対する解析的攻撃を使うのは難しいと思う。解析的攻撃は、衝突を見つける確率を大幅に高める特定の範囲やパターンの入力を試すように規定している。ここでは、RIPEMD-160への入力はSHA-256の出力であるため、そのような制御ができない。解析的攻撃によってRIPEMD-160の衝突を生み出す入力を見つけたとして、それで何をするのか?SHA-256にその値を出力させる必要があるため、SHA-256も破る必要がある。
ブルートフォースの場合、RIPEMD-160(SHA-256(x))はRIPEMD-160単独と比べて強くはない。しかし解析的攻撃の場合、RIPEMD-160とSHA-256の両方を解析的に攻撃する必要があるようだ。もし間違っていれば、強度はRIPEMD-160と同じであり、SHA-256は1回分の鍵強化として機能するだけだ。