[Last-Call] Re: draft-ietf-cose-tsa-tst-header-parameter-06 telechat Secdir review

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Reading my own reply, I think I can frame this even shorter and clearer:

Why advertise a timestamp that has nothing to do with the signature in the signature header?
It does not belong there.

And if you stick it there anyway, people may think that it actually has something to do with the signature.
And that is the source of potential confusion.

/Stefan

On 2025-08-01 02:11, Stefan Santesson wrote:
Hi Henk

Thank you for providing your view. The only thing that is a bit confusing to me is that we seem to have a binary disagreement, rather than a discussion of severity.

By binary disagreement I mean the fact that I point out a problem, and your position is to deny its existence entirely.

Quote:
"I am at a loss how the sequence of "Timestamp then COSE (aka sign)" can be in confused with "COSE (aka sign) then Timestamp"."

That to me is fundamentally different from you saying. Yes, I see the issue, but I don't think it is likely, or serious enough to fix. (Which would be easier to understand)

I think I have gone to length of describing exactly how such confusion could occur. To recap that shortly. We often have different developers working on different parts of a system.
- One developer could make the code that signs the document
- A second developer could make the code that parses signatures and deliver time stamp results in a suitable structured data class - A third developer could make the code that process the structured data class and use timestamp time to validate the certificate path.

Here is potential of confusion between the developers. The error is most likely made by the third developer that possibly looks into the structured data class and find a "TTC" timestamp, extracts the time and use it for the wrong purpose, with the false belief that it represents a time when the signature existed.

When you say that you cant see how this is possible, I'm not sure I understand what you mean.

- Do you think such scenario is impossible?
- Or do you mean that any developer parsing the signature (the second developer) who read your standard and implements it, could not possibly misunderstand your text?

If it is the latter, then I tend to agree with you. The second developer most likely gets this right. Its the third developer I'm worried about.

This risk would be eliminated if the TTC timestamp is never referenced in the signature metadata (header) at all, and thus never appears in some signature validation result data class produced by developer 2.

My experience of developers makes me fear that this type of confusion is pretty likely. Most will get this right, but some won't. No other signature format does TTC and advertise it in signature metadata. Why then should COSE do it? That is the million dollar question. Why advertise something in a signature header that has absolutely nothing to do with the signature? It does not belong there.

Now as stated before. I have no stake in this. I will not fight this. But as long as I'm asked to state my opinion about this, it will likely be the same.

/Stefan

On 2025-07-31 17:22, Henk Birkholz wrote:
Dear Stefan,

please do not feel unheard. As you tried to highlight: yes we are listening, but also have to take into account that timestamps that not are not in the "bytes-to-be-signed" can be removed from a data object and that really leads to variety of severe problems.

You explicitly highlight that:

TTC and CTT are not clear enough and could easily be mixed up by an implementer.


I think this is a point where we might disagree. I am at a loss how the sequence of "Timestamp then COSE (aka sign)" can be in confused with "COSE (aka sign) then Timestamp". I understand that developers are always under pressure and deadlines and that standards text can be confusing. But I cannot see how a reader of this spec can "mess this up" unless... actually not reading the spec (which is why we reversed the ordering to at least mitigate that case to some extend).

Basically, all co-authors are starting to be on vacation tomorrow (I am the designated survivor before the summer hole) and they might chime in with more feasible input when they are back.


I would have written a shorter reply, but I have to prep more food for my vacation with kids,

Henk

On 31.07.25 17:04, Stefan Santesson via Datatracker wrote:
Document: draft-ietf-cose-tsa-tst-header-parameter
Title: COSE Header parameter for RFC 3161 Time-Stamp Tokens
Reviewer: Stefan Santesson
Review result: Has Issues

This is my third review of the same document in various versions.

I have previously marked this as having serious issues. I have now downgraded
this to just “have issues” just to acknowledge some steps in the right
direction. However, I still don’t like this document TTC option and I firmly believe that we would be better of removing this option from the document.

I acknowledge that the order has been changed, which sort of makes CTT the
primary option, even though not explicitly stated.

I also acknowledge the author’s extension to the security considerations
highlighting the danger of not understanding the function of TTC.

My main objection to TTC is that I think that all signature standards should have a common basic approach to timestamps. For all other comparable signature standards (CMS, XML, JOSE) any timestamp advertised in the signature metadata IS a timestamp of the signature itself. Doing differently for COSE deviates
from signature standard praxis. And I think that is inherently bad and
dangerous.

It would be a completely different case if this would be common practice for other signature standards. If that was the case, and this was proven to work without creating security vulnerabilities in implementations, I would not
oppose. But this is not the case.

Even though I realize that the author’s probably has a usage in mind where this is a very practical solution, and I trust the author’s that their usage will be safe, I’m not convinced that all implementers will get this right. Even though it would be less practical for the intended usage, I firmly believe that timestamping of just payload data should be handled outside of signature metadata (protected signature header). There are many ways to do it, less
generic of course, but safe.

If this document still proceeds with including TTC, then I would strongly recommend a naming of the header parameter and option that is clearer about what is being timestamped. TTC and CTT are not clear enough and could easily be
mixed up by an implementer.

I guess we have a deadlock here. I understand that the authors can’t see my point and think my objections are unfounded. I on the other hand can’t see that TTC is an appropriate option. I think it is dangerous, and no clarifying text will likely change that. Perhaps the author's are just unlucky that I got
appointed as reviewer, but I have to say it as I see it.




--
last-call mailing list -- last-call@xxxxxxxx
To unsubscribe send an email to last-call-leave@xxxxxxxx




[Index of Archives]     [IETF Annoucements]     [IETF]     [IP Storage]     [Yosemite News]     [Linux SCTP]     [Linux Newbies]     [Mhonarc]     [Fedora Users]

  Powered by Linux