<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Oct 6, 2014 at 10:05 PM, Zooko Wilcox-OHearn <span dir="ltr"><<a href="mailto:zooko@leastauthority.com" target="_blank">zooko@leastauthority.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello again, Jason Resch of cleversafe.<br>
<br>
I'd like to emphasize what Philipp Jovanovic said, in case he didn't<br>
express it strongly enough: just use BLAKE2!<br></blockquote><div><br></div>Tom's idea being discussed here is a constant time updateable hash function of very many records/messages/blocks, which Blake2 does not do.  A good solution to this problem has many real-world use cases.  Rsync, for example, uses a <a href="http://en.wikipedia.org/wiki/Rolling_hash">rolling hash function</a> which is insecure.  Maybe we could use:<br><div><br></div><div>y = H(1 || B1) * H(2 || B2) * ... * H(n | Bn) mod p<br><br>This looks secure to me, based on the difficulty of the discrete log problem.<br><br>If you can give me an algorithm that takes random numbers and finds 
combinations of them that multiply out to a specific digest y mod p, 
then I can use your algorithm to find the discrete log base g of y.  I simply give your algorithm g^rand() rather than rand(), and the algorithm finds y = g^r1 * g^r2 * ... * g^rn mod p.  I am somewhat surprised Wagner did not see this in his paper on the <a href="http://www.di.ens.fr/~fouque/ens-rennes/gbp.eps">generalized birthday problem,</a> since significant effort was put into framing attacks using multiplicative groups.  I just didn't find that part very convincing :-)<br><br></div><div>Bill<br></div></div></div></div>