2. 使用模式 (Modes of Use)
由前文讨论的使用场景驱动, COSE 保护和时间戳可以通过两种不同模式进行组合.
本节中的图示说明了指定模式的处理流程. 为简洁起见, 仅展示 COSE_Sign1 处理. COSE_Sign 的类似图示可以通过允许多个 private-key 平行四边形框, 并将标签 [signature] 替换为 [signatures] 得到.
2.1. COSE, Then Timestamp (CTT)
图 1 展示了对 COSE Signed Message 的 signature(s) 字段求摘要并提交给 TSA 进行时间戳处理的情况. 获得的 timestamp token 随后作为 unprotected header 添加回同一个 COSE object.
当需要记录签名操作发生时间时, 使用此模式.
.--------. .-----.
| Signer | | TSA |
+--------+----------------------------------. +-----+-------------.
| .-------------. .-----------. .-------. | | .-------------. |
| / private-key / | protected | | datum | | | / private-key / |
| '-----+-------' '---+-------' '---+---' | | '------+------' |
| | | | | | | |
| +---------------+------------' | | | |
| | | | .+. |
| v .---------. | | | L | Clock |
| .---------. .----. | Message | | | '+' |
| | Sign1 +->+ hash +->+ Imprint +-------->| | |
| '-+-------' '----' '---------' | | v |
| | .-------. | | .---------. |
| | | nonce +--------->| | timestamp | |
| | '-------' | | '---------' |
'----|--------------------------------------' '---------+---------'
| .-------------. |
+-------------+-----------+ | unprotected | |
| | | | .-----. | |
[protected] [payload] [signature] | | TST |<-----'
| | | | '-----' |
| v v '------+------'
| .-------+------------+-----. |
'--->+ rfc3161-ctt COSE +<-----'
'--------------------------'
图 1: COSE, Then Timestamp (CTT)
在此上下文中, timestamp tokens 类似于 TSA 生成的 countersignature.
2.2. Timestamp, Then COSE (TTC)
图 2 展示了先对 datum 求摘要并提交给 TSA 进行时间戳处理的情况.
此模式用于将已签名文档及其时间戳一起包装在不可变 payload 中.
随后按如下方式构造 COSE Signed Message:
-
获得的 timestamp token 被添加到 protected headers.
-
原始 datum 成为 COSE Signed Message 的 payload.
.--------. .-----.
| Signer | | TSA |
+--------+----------------------------------. +-----+-------------.
| .-------------. .-------. | | .-------------. |
| / private-key / | nonce +-------->+ / private-key / |
| '-+-----------' '-------' | | '------+------' |
| | .---------. | | | |
| | .-------. .----. | Message | | | | |
| | + datum +->+ hash +->+ Imprint +------->+ .+. |
| | '-+-----' '----' '---------' | | | L | Clock |
| | | | | '+' |
| | | .-------------. | | | |
| v v | protected | | | v |
| .-------. | .-----. | | | .---------. |
| | Sign1 +<-----------+ | TST |<----------+ | timestamp | |
| '-+-----' | '-----' | | | '---------' |
| | '-------------' | | |
'----|--------------------------------------' '-------------------'
| .-------------.
+-------------+-----------+ | unprotected |
| | | | .-----. |
[protected] [payload] [signature] | | ... | |
| | | | '-----' |
| v v '------+------'
| .-------+------------+-----. |
'--->+ rfc3161-ttc COSE +<-----'
'--------------------------'
图 2: Timestamp, Then COSE (TTC)