跳到主要内容

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)