[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RFC 2535 transaction signatures
I'm in the process of attempting to implement transaction signatures
(SIG(0)), and am running into problems in the description.
- The digested data is specified as:
data = full response (less transaction SIG) | full query
This doesn't include the RDATA fields from the SIG(0) record itself,
which means that there's no protection against replay attacks. Should
this be changed to the following?
data = RDATA | full response (less transaction SIG) | full query
If this is changed, it would be nice if it was more like TSIG:
data = RDATA | query signature | full response (less transaction SIG)
although a signed response to an unsigned query is possible.
- Even after over 2 years, I still think that a signed response to an
unsigned query is pointless. An attacker could easily forge an unsigned
message, since the client's not expecting a signed response. The client has
no method of indicating that it expects a signed response.
- Error handling is not specified at all. SIG(0) can get around a lot of the
error conditions present in TSIG, since the key isn't shared, and the
responder should have a key online with which to sign a response.
- What if it has no key designated as the SIG(0) generating key?
Should it return an unsigned response?
- What if the request SIG fails verification, the key is unknown,
or the SIG is outside of the validity period?
- Should there be any mention of trying to find a key with an algorithm
that the client is known to understand?
- What is the owner name of a transaction signature?
- Is there a recommended value for the signature validity period?
- Can transaction signatures be applied to multiple-message TCP streams?
Thanks...
Brian