<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Jan 8, 2016 at 7:02 AM, Rusty Russell <span dir="ltr">&lt;<a href="mailto:rusty@rustcorp.com.au" target="_blank">rusty@rustcorp.com.au</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Matt Corallo &lt;<a href="mailto:lf-lists@mattcorallo.com">lf-lists@mattcorallo.com</a>&gt; writes:<br>
&gt; Indeed, anything which uses P2SH is obviously vulnerable if there is<br>
&gt; an attack on RIPEMD160 which reduces it&#39;s security only marginally.<br>
<br>
</span>I don&#39;t think this is true?  Even if you can generate a collision in<br>
RIPEMD160, that doesn&#39;t help you since you need to create a specific<br>
SHA256 hash for the RIPEMD160 preimage.<br>
<br>
Even a preimage attack only helps if it leads to more than one preimage<br>
fairly cheaply; that would make grinding out the SHA256 preimage easier.<br>
AFAICT even MD4 isn&#39;t this broken.<br></blockquote><div><br></div><div>It feels like we&#39;ve gone over that before, but I can never remember where or when. I believe consensus was that if we were using the broken MD5 in all the places we use RIPEMD160 we&#39;d still be secure today because of Satoshi&#39;s use of nested hash functions everywhere.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
But just with Moore&#39;s law (doubling every 18 months), we&#39;ll worry about<br>
economically viable attacks in 20 years.[1]</blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
That&#39;s far enough away that I would choose simplicity, and have all SW<br>
scriptPubKeys simply be &quot;&lt;0&gt; RIPEMD(SHA256(WP))&quot; for now, but it&#39;s<br>
not a no-brainer.  </blockquote><div><br></div><div>Lets see if I&#39;ve followed the specifics of the collision attack correctly, Ethan (or somebody) please let me know if I&#39;m missing something:</div><div><br></div><div>So attacker is in the middle of establishing a payment channel with somebody. Victim gives their public key, attacker creates the innocent fund-locking script  &#39;2 V A 2 CHECKMULTISIG&#39; (V is victim&#39;s public key, A is attacker&#39;s) but doesn&#39;t give it to the victim yet.</div><div><br></div><div>Instead they then generate about 2^81scripts that are some form of pay-to-attacker ....</div><div>... wait, no that doesn&#39;t work, because SHA256 is used as the inner hash function.  They&#39;d have to generate 2^129 to find a cycle in SHA256.</div><div><br></div><div>Instead, they .. what? I don&#39;t see a viable attack unless RIPEMD160 and SHA256 (or the combination) suffers a cryptographic break.</div></div><br clear="all"><div><br></div>-- <br><div class="gmail_signature">--<br>Gavin Andresen<br></div>
</div></div>