[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Untrusting a Trusted Third Party: TSA.
Hi Everyone,
The following consideration is quite obvious; however, it's intriguing
to see how the TSP allows a user to perform a simple test against a
TSA that he doesn't trust anymore.
Assume a user is afraid that a TSA is issuing time-stamp tokens while
not in synchronization with UTC; after all if a TSA use a trustworthy
source of time and include a trustworthy time value for each time-stamp
token is not necessarily ensuring that the clock doesn't drift outside
the declared accuracy (this is addressed in ETSI - STF 178-T1 draft H).
The test
The ordering of time-stamp tokens issued by different TSAs is only
possible when the _absolute value_ (*) of the difference between the
genTime of the first time-stamp token and the genTime of the second
time-stamp token is greater than the sum of the accuracies of the
genTime for each time-stamp token.
*) partially contrarywise to what is asserted in section 2.4.2 of rfc3161.
TSA-1: the tsa not trusted anymore by alice
TSA-2..TSA-3: tsa still trusted by alice
1. Alice send a TimeStampReq to TSA-1 (TSA1Req) where
TimeStampReq.messageImprint is simply an hash of a document kept
secret (Alice_doc);
2. Upon receiving the response (TSA1Response), Alice hash the received
time-stamp token ( hash(TSA1Response) ) and send as quickly as possible
a time-stamp request to TSA2 (TSA2Req), where
TimeStampReq.messageImprint is hash(TSA1Response);
3. if the absolute value of the difference of the first time-stamp token
and the genTime of the second time-stamp token ( abs(x) ) is greater
than the sum of the accuracies of the genTime for each time-stamp
token, Alice can order the two tokens; but for a positive value of
the difference we have a consistent chain of time-stamp
request/response, and for a negative a contradictory result.
x = TSA2Response.genTime - TSA1Response.genTime;
while abs( x ) > (TSA2Response.accuracy + TSA1Response.accuracy)
if x > 0 --> TSA2Resoponse follows TSA1Response
if x < 0 --> TSA2Response is _antecedents_ to TSA1Response
Alice can prove the opposite showing the chained sequence of time-stamp
requests:
a. Alice_doc
b. TSA1Response.TSTInfo.messageImprint = hash(Alice_doc)
c. TSA2Response.TSTInfo.messageImprint(hash(TSA1Response))
Sincerely,
alfonso