From: Dave Crocker [mailto:dcrocker(_at_)mipassoc(_dot_)org]
Sent: Tuesday, October 05, 2004 2:35 PM
Seth,
I probably did not read carefully enough, but I did not see the
answer to my question:
Nah, I didn't read carefully enough and answered the wrong question. That's
unfortunate, because it was a good answer.
When the server decrypts the signature, how does it know
the string is valid? Presumably it is some pre-
established string that it recognizes?
When the call-back service gets data from the querier, the
call-back service does some decription and then validates the
results. What is inside the decryption that the service uses for
that validation?
Since the signature is based on a one-way hash function, the validation
server recreates the signature using the secret key and compares it to the
one presented for validation. If the object for validation is a signed
return-path that looks like:
MAIL FROM:<S=HHHHHHHHHHHT(_dot_)DDDDDDDDDDDd=local-part(_at_)example(_dot_)com>
and the validation method is DNS using defaults, the message recipient would
do a DNS "A" query for:
S=HHHHHHHHHHHT.DDDDDDDDDDDd=local-part._ses.example.com
The subdomain _ses.example.com is delegated to an appropriate validation
server that understands this is really a SES validation request for the
example.com domain. Assuming the format appears correct, it reconstructs
the signed return-path as:
S=HHHHHHHHHHHT(_dot_)DDDDDDDDDDDd=local-part(_at_)example(_dot_)com
Using the secret key appropriate for the date code "T" for example.com, it
computes the HMAC-SHA1 over:
T(_dot_)DDDDDDDDDDDd=local-part(_at_)example(_dot_)com
and checks for equality with the "HHHHHHHHHHH" field. If the HMAC result
matches, it returns a pass result with a TTL that is the remaining life of
that signature. If the HMAC result does not match, it returns a fail result
with a TTL that is the time until that date code will next appear.
--
Seth Goodman