// COMPLETE THREAD

Chaum's credentials (technical question)

2 expanded posts ยท every known parent and child

NODE 15fe1032Chaum's credentials (technical question)
-----BEGIN PGP SIGNED MESSAGE-----

In response to the recent discussions about identity, pseudonyms,
"is-a-person" credentials, etc., I've been studying Chaum's paper from
Auscrypt 90, "Showing Credentials without Identification; Transferring
Signatures between Unconditionally Unlinkable Pseudonyms."  This is quite
a dense and rather cryptic paper which requires careful reading.  It
doesn't help that the references got left off when the paper was printed.
There are also quite a few obvious misprints in some of the printed
formulas.

I am trying to understand one particular passage, on page 258.  Chaum
uses the idea of a credential as an RSA signature on a pseudonym, where
the pseudonym is a number Px.  The RSA modulus has, in this case, two
exponents e1 and e2 which mean different things.  (Say, e1 means "good
credit risk" and e2 means "good driving record".)  The corresponding
private exponents are d1 and d2.  If a person has these two credentials
that means that he has the two numbers Px^d1 and Px^d2, from the
credentialling organization.  These RSA signatures prove that he actually
has the characteristics described in the credential.

Now, I am having a problem with Chaum's math.  This is a little technical
but I know we have some people on the list who know some number theory.
Here is what Chaum says:

   "Suppose an organization X were to require that you have each of two
   credentials, say both that with public exponents e1 and e2.  You could
   send X separatley Px^d1 and Px^d2.  It is also possible for you to use
   the two credentials to form the single credential Px^(d1*d2), which
   will be called their AND....  To create the AND, you: set g to the
   multiplicative inverse of d1 modulo d2; set h to the remainder after
   dividing g*d1-1 by d2; and computing
   (Px^d1)^g * (Px^d2)^(-h) = Px^(d1*d2)."

It would be really nice if this AND credential could be created like this,
because it might be applicable to digital cash.  Instead of having to go
through the complicated spending transaction for each piece of cash, you
might be able to combine all the pieces of cash into one, and just spend
that.  It would be more compact.

But Chaum's math doesn't work.  First of all, he says "you" should set g
to the inverse of d1 modulo d2.  But this seems to presume knowledge of
d1 and d2.  Yet "you" don't know these things; these are the secret
exponents of the signing agency.  So is Chaum actually talking here about
something the signing agency does?  It didn't sound that way from the
context.

If the signing agency wants to compute Px^(d1*d2), given Px^d1 and Px^d2,
it can do so easily enough; simply take Px^d1 to the d2 power.  You don't
need to go through this rigamarole with g and h.  So that interpretation
doesn't make much sense either.

The other possibility I thought of is that he meant that the signing
agency would make g and h, as he defined them, public.  With g and h
then users could combine their credentials as he said.  But even that
doesn't work; his whole formula doesn't make sense.  g is the inverse
of d1 mod d2; this means that g*d1 = 1 mod d2, or in other words
g*d1 - 1 = k*d2 for some k.  That's the definition of the multiplicative
inverse.  Okay, but then he says h is the remainder when g*d1-1 is divided
by d2.  But look: g*d1-1 is a MULTIPLE of g2!  The remainder will always
be zero.  So that doesn't make any sense either.

So I thought, perhaps he really meant that h should be the quotient
rather than the remainder; it would be "k" in the equation I just wrote.
Then we'd have g*d1 - 1 = h*d2, which is somewhat encouraging because
it resembles his formula.  But his formula is (Px^d1)^g * (Px^d2)^(-h),
which is Px^(g*d1 - h*d2).  Rearranging the equation two lines above,
we see that g*d1 - h*d2 = 1.  So we end up with just Px, not Px^(d1*d2).
So this isn't right, either.

In fact, the notion that you can calculate Px^(d1*d2) from Px^d1 and
Px^d2 is pretty questionable, since the impossibility of doing this is
the basis of Diffie-Hellman key exchange!

In short, I haven't found any interpretation of Chaum's math that makes
sense.  Can anyone shed any light on this?  Was this just a mistake in
a paper which was, after all, just intended for conference proceedings,
not a refereed journal?  Thanks -

Hal

-----BEGIN PGP SIGNATURE-----
Version: 2.3a

iQCVAgUBLNLlRKgTA69YIUw3AQEmegP9HzQt1vMwuLvVVr2e3LNrL5lPh9jg/cb4
rQkTvh+XVCKlqsI7TJ2pCeAwLygxPMlcw4/3sAeV9K1hWqk0B+bSFU8qWQSmka5+
2OpJIXt2C+N/qVMKiFzAKMmQf680iVUxdj/TvfV6kZ6hPA5eqHdnHWy45QKEck3B
VMNwKRPz2Mo=
=TLs8
-----END PGP SIGNATURE-----
NODE 5f8d2676Chaum's credentials (technical question)
Hal Finney writes about a paper of Chaum's, and near the end asks:

>In short, I haven't found any interpretation of Chaum's math that makes
>sense.  Can anyone shed any light on this?  

I think you're correct, Hal.  From everything I can tell, Chaum's
confused product and greatest common divisor.

First, though, there's a basic fact about the arithmetic of integers
which everyone who wants to learn more algebra should know.  Z is the
set of integers.

    For every m,n in Z, there is a,b in Z such that a*m + b*n = gcd(m,n).

One calculates the gcd by means of the Euclidean algorithm, and the
coefficients a and b by an extension of that algorithm.  Lots of basic
algorithm books contain descriptions.

From an abstract point of view, this is a simple consequence that Z is
a principal ideal domain.  The ideal (m,n) is composed of the linear
span of m and n.  Since this ideal is principal, by definition there
is a c such that (m,n) = (c).  Clearly c is in the linear span of m
and n, hence coefficients exist.

Note that reducing mod n gives a*m = gcd(m,n) (mod n).  If m and n are
relatively prime (means gcd = 1), the a is m inverse mod n.  Likewise
b is n inverse mod m.  This is a standard algorithm for calculating
modular inverses.

Here's the relevant passage, again:

>   "Suppose an organization X were to require that you have each of two
>   credentials, say both that with public exponents e1 and e2.  You could
>   send X separatley Px^d1 and Px^d2.  It is also possible for you to use
>   the two credentials to form the single credential Px^(d1*d2), which
>   will be called their AND....  To create the AND, you: set g to the
>   multiplicative inverse of d1 modulo d2; set h to the remainder after
>   dividing g*d1-1 by d2; and computing
>   (Px^d1)^g * (Px^d2)^(-h) = Px^(d1*d2)."

I believe that Hal is correct when he points out that h is not a
remainder (which would be zero, as he points out) but the quotient.  I
originally misread this as quotient because I recognized the context.

First, the multiplicative inverse of d1 (mod d2) exists only if the
two are relatively prime.  Hal did not quote the whole article, so I
don't know if this criterion is stated elsewhere.  Let us assume the
d's have this property, since the d's can be so chosen.

The calculation of d1 (mod d2) is exactly the calculation of the
coefficients in the extended Euclidean algorithm above.  Consider a*d1
+ b*d2 = 1.  Reducing mod d2, we have a*d1 = 1 (mod d2).  That means
that a is d1^(-1) (mod d2).  Likewise (a*d1 - 1) / d2 = -b.  Chaum's
description exactly fits the gcd context.

>The other possibility I thought of is that he meant that the signing
>agency would make g and h, as he defined them, public.  

That's my interpretation as well.  After the calculation, as Hal
observes, you just end up with Px, not Px^(d1*d2).  That's totally
useless, since you already knew Px.

It is certainly possible to create coefficients for combining
credentials such that you end up with a product in the exponent.  For
example, the pairs <d2,0> and <0,d1> both work nicely, with the bad
side effect that you've given away a private key.  Let's try blinding
them.

Suppose you have coefficients a and b such that a*d1+b*d2=0; the pair
<d2,-d1> works here.  Then every such pair of product-combining
coefficients can be represented as <d2,0> + r*<a,b>.  Since the
exponents are mod phi(N), we can suppose that the pair <d2+r*a,r*b>
doesn't _directly_ reveal the private keys.  But it's unclear to me
that this pair of coefficients doesn't reveal d1 and d2.  One doesn't
know phi(N), but one may not need to.

Eric