传纸条安全协议:时间戳、ID、唯一标识符的设计与防攻击方案

纸条协议格式(每张纸条必须包含的字段)
TS
2506011435
时间戳 · 年月日时分 · 25年06月01日14时35分
FROM
K7
发件人唯一ID · 提前约定的2位代号,K=姓名首字母,7=座位号
TO
T3
收件人唯一ID · 同上规则
SEQ
042
序列号 · 每发一张+1,从001开始,防重放
MSG
加密内容(维吉尼亚密文)
EXEK ST GHBM FW
正文密文 · 用Vigenère加密,密钥=提前约定
MAC
K9X
消息认证码 · 3位校验,防篡改(计算方法见下)
每个字段防御什么攻击
TS · 时间戳
防重放 收到时间戳超过10分钟前的纸条,直接忽略不回复
防延迟 有人截住纸条,课后再放出来——时间戳暴露了
格式:YYMMDDHHMM
2506011435 = 25年6月1日14:35
FROM/TO · 用户ID
防伪造 不信任者假冒身份发假纸条——ID+MAC组合让伪造失败
防混淆 多人通信时明确谁发给谁,防止消息被转发给错误的人
规则:姓名首字母 + 座位号
Karl座位7 → K7
Tom座位3 → T3
SEQ · 序列号
防重放 序列号必须严格递增,收到042之后再收到041直接扔掉
防丢失 发现序列号跳了(042→045),说明中间有纸条被截走了
K7→T3从001开始
T3→K7另一个序列从001
每对通信独立计数
MAC · 手算认证码
防篡改 内鬼修改内容后,MAC对不上,收件人知道被动过手脚
手算方法:把 TS末2位 + SEQ + MSG首字母的数字 加在一起,除以26取余,转回字母,取3位
35 + 42 + 4(E) = 81
81 mod 26 = 3 → D
再取SEQ mod 26 = K…
真实纸条长什么样
TS:2506011435
F:K7  T:T3  S:042
M:EXEK ST GHBM FW JKXA
V:K9X
整张纸条只有4行,写起来不超过30秒。头部字段明文(TS/FROM/TO/SEQ),只有 M 那行是密文。V 是手算MAC校验码。