I have a program (whereby people can download and run on their own computers) that will calculate a couple of unknown values each day. For simplicity sake, let's assume that the calculation is simply Rand(0, 1)
. The program will run and the user will get a value e.g. 0.230957203975
.
He will then broadcast this value to anyone interested. He will say "my number today is 0.230957203975!". The problem is that the user can simply lie about the number.
How can we make it such that the user cannot lie? Or rather, how we can detect it if he lies?
I've came up with a solution, but it's sub-par and will be easily defeated. My solution is to broadcast the value 0.230957203975
along with a verification-value calculated as such:
verification_value = SHA2(MD5(RIPEMD(SHA2(HAVAL(GOST(MD5(0.230957203975)))))))
The problem is that the user can examine the machine code, and know the obscure mixture of hash functions used, enabling him to calculate the verification-value himself and lie about the number he had gotten.
I've browsed through Applied Cryptography, but none of the protocols mentioned there seems to have a solution. Is cryptography able to solve this problem?
verification_value
accrediting a fake, and even you can not detect that. – fgrieu Jan 18 '14 at 09:23verification_value
asHMAC(key,0.230957203975)
, and re-generated from the alleged0.230957203975
for verification purposes. – fgrieu Jan 18 '14 at 09:57time=349058,amt=10,buy=100,sell=130,proof=GOI3098572GLIASD
and we can tell whether it's real or fake. The trading site has APIs for me to do trades only, my program will record the trades done when they are done via my program. – Pacerier Jan 19 '14 at 16:19