At, I believe, the cypherpunks physical meeting before last I gave a
technique for making tokens which can be compared but not canonicalized.
Rather than try to define this precisely, which is rather hard to follow,
I'll give my (broken) technique, and explain what's wrong with it.

A common prime p is universally settled on. To generate a token, Alice
picks some random values b and c and constructs the ordered pair 
(c^b (mod p), b (mod p-1)). Every time she wants to use it again, she
picks some random value r and brings the first number to the r power and
multiplies the second number by r. To compare two tokens (c^b, b) and 
(d^e, e), she computes (c^b)^e and (d^e)^b and compares them - they'll be
the same if and only if c and d are equal.

The problem with that scheme (and I'm a little embarassed for not having
seen this immediately) is that it's possible to compute 1/b (mod p-1) and
compute c^b to that power, resulting in c, which can of course be hashed.

I've been trying to come up with a fixed version and cannot for the life
of me find one. I'm inclined at this point to conjecture that it's
impossible, which makes it by far the most plausible-sounding yet probably
impossible cryptographic primitive I know of. If anybody can come up with
a non-hashable tokens technique I'll be very impressed. If anybody can
find a proof that there is none I'll be even more impressed (since proving
things impossible seems to be out of the reach of complexity theory these
days.)

Just thought I'd throw that out. Had to vent. Not being able to find one
is getting on my nerves.

-Bram Cohen


Reply via email to