2
$\begingroup$

My original problem: I want Alice to be able to promise that at some point in the future she will upload a statement to an address in a hash-table, which is computable/predictable from everyone without knowing her secret key (to be able to look at that address, if the statement is already there). However, the statement should not be predictable for everyone.

One solution path:
Alice has a secret key $S$ and the corresponding public key $P$ (solutions for any (secure) key generation algorithms are appreciated). Is there any combination of (any) functions $f_1, f_2$ and (any) hashing algorithms $h_1, h_2$, s.t. the following holds?

$h_1(f_1(P)) = h_2(f_2(S, P))$

I.e. an algorithm that gives a predictable hash for data generated by the secret key. A hash that can be generated from the public key only, which will be the same for a string generated from the secret (and possibly the public) key.

Important note: $f_1$ may not be aware of $S$, of course, and $f_2$ may not ignore $S$. Otherwise there are of course trivial solutions...

My question: Can my proposed solution be workable or is there a better way to accomplish this?

$\endgroup$
  • 1
    $\begingroup$ Do you need $h_1 \not\equiv h_2$? Because that goes against the idea of a secure hash function. You are therefore left with $h_1 \equiv h_2$ and therefore $f_1(P) \equiv f_2(S, P)$ (I hope I have the math notation correct). $\endgroup$ – Maarten Bodewes Mar 15 '17 at 12:10
  • $\begingroup$ What about $h_1$=$f_1$=identity, $h_2$=RSA public key operation, $f_2$=RSA private key operation? $\endgroup$ – CodesInChaos Mar 15 '17 at 12:17
  • $\begingroup$ @MaartenBodewes $h1=h2$ or $h1 \not= h2$, that's not important. But presumably different hashing functions will not generate the same hash. $\endgroup$ – hildensia Mar 15 '17 at 12:48
  • 1
    $\begingroup$ I really don't understand your original problem. If you want the hash address to be public, but not the statement that Alice will upload, why don't you have Alice publish the hash address (alternatively, make it a function of her public key)? Obviously, from that, no one can recover the statement until Alice publishes it. What do you need that this simple solution does not supply? $\endgroup$ – poncho Mar 15 '17 at 13:32
  • 1
    $\begingroup$ You skipped a step: before looking into whether a security goal is achievable, you must clearly (i.e., formally) define that goal, which you haven't done. $\endgroup$ – fkraiem Mar 15 '17 at 14:33
2
$\begingroup$

It sounds to me like you want to is produce a hash that proves integrity, and can be authenticated with some key pair.

In that case, I would release a HMAC using a RSA public key and your statement along with the RSA signature of the aforementioned HMAC.

That way someone could verify the integrity and authenticity of your statement while only knowing your RSA public key and the signed HMAC.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.