You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by Juan Cervera <Ju...@nomadsoft.com> on 2005/09/15 11:39:44 UTC

Signature question

Hi,
 
I have a question about signature with WSS4J, it is more a conceptual
question than a technical one, hopefully someone can clarify this to me
as I'm a bit confused about it right now.
 
When a client signs a message, the header gets the DigestValue with the
signature and the KeyInfo with the certificate used to sign the body (or
any other tokens). The server receives the message, validates the
certificate in its keystore and verifies the DigestValue.
 
My problem is the following, how does the server know, assuming that the
DigestValue is fine for that certificate, that this certificate is in
fact the one that the message had when was generated and that nobody has
changed both certificate and DigestValue at some point?
 
Lets say that there are two clients that access that server, both have a
certificate created from the same root CA key. If the server just checks
if the certificate is in the keystore how can it ensure that the
signature and the certificate are really the ones sent by client A? the
message may have been intercepted by client B (which has as well a valid
certificate) who has just dropped the certificate and the DigestValue
and replaced them with his own certificate and generate a new valid
DigestValue after changing the body in whatever way they wanted! How can
I detect this kind of tampering? I know that the certificates carry
information about their owners, but I don't see any place in WSS4J where
I can ask for that kind of verification, which would sort this issue.
 
I know I could deal with this by having different keystores with
different root CA keys for every client, that would require a different
server per client though, in my case that is not an issue but I cannot
believe that the specification cannot deal with this, so probably some
of my assumptions are not right or I have missed some functionality in
some place.
 
Any help?

 
Thanks,
 
Juan