FMCOS使用密文带MAC增加/修改密钥

FMCOS(FM1208-9,FM1208-10,FM1216等)除了支持使用常见的明文方式增加/修改密钥,还支持以密文+MAC的方法增加/修改密钥。

基本原则

FMCOS的密钥,按密钥的增加/修改操作方式不同,可以分为【普通密钥】和【密文+MAC密钥】两类。这种分类对密钥的类型(如外部认证密钥、线路保护密钥等)和密钥的使用方式没有影响。

【密文+MAC密钥】,就是将【普通密钥】的类型字节最高2bit设为"11"。比如【普通】外部认证密钥的类型为39(0011 1001),【密文+MAC】外部认证密钥类型就是F9(1111 1001)。

使用密文+MAC进行密钥增改操作的前提是,当前的密钥文件中必须存在主控密钥(标识为00的外部密钥)。主控密钥用于加密数据和计算MAC。主控密钥的类型可以为39,也可以为F9。(但只能先用明文增加类型为39的主控密钥,然后再使用密文+MAC将其修改为类型F9。)

何时需要使用密文+MAC操作密钥:

  1. 增加一个【密文+MAC密钥】(如类型F9);

  2. 修改【普通密钥】为【密文+MAC密钥】(如类型39修改为F9);

  3. 修改【密文+MAC密钥】,包括将其改为【普通密钥】(如修改F9密钥的值;或将类型F9改为39)。

实验环境

MF下的密钥文件中存在如下密钥:

  1. 主控密钥,密钥值FF FF FF FF FF FF FF FF。

  2. 外部认证密钥,标识01,类型39。

增加密钥(F9)

欲使用密文带MAC方式,在MF下增加标识为02的外部认证密钥(类型F9,不是39)。

密钥的使用权、修改权均为F0;后续状态A;错误计数器F;密钥值11 22 33 44 55 66 77 88。

命令的数据域:

F9 F0 F0 AA FF 11 22 33 44 55 66 77 88

注意39(0011 1001)变成了F9(1111 1001)。

对数据域进行扩展和填充,得到待加密的明文数据:

0D F9 F0 F0 AA FF 11 22 33 44 55 66 77 88 80 00

注:0D为LD字节,表示原始数据的长度;80 00为填充字节。(具体实现请参阅《FMCOS 2.0用户手册》)

使用主控密钥对明文数据进行DES加密,得到密文:

7C 87 BC 23 14 00 21 B3 AF EA 67 E6 35 9D DC FE

注:FMCOS使用DES-ECB加密。

增加密钥的命令:

84 D4 01 02 14 7C 87 BC 23 14 00 21 B3 AF EA 67 E6 35 9D DC FE

密文的实际长度是0x10,但因为后面还要附带4字节的MAC,因此Lc为0x14。

因为使用了密文+MAC(也就是加密线路保护),因此CLA的变为84。

请求随机数,并使用主控密钥计算MAC:

随机数:4C 45 BA B9

MAC:D7 C9 43 F6

注:FMCOS对MAC计算的实现,请参阅《FMCOS 2.0用户手册》。

完整命令:

84 D4 01 02 14 7C 87 BC 23 14 00 21 B3 AF EA 67 E6 35 9D DC FE D7 C9 43 F6

修改密钥 (39改为F9)

欲使用密文带MAC,修改MF下标识为01的外部密钥,改变其密钥值和类型(39改为F9)。

密钥的使用权、修改权均为F0;后续状态A;错误计数器F;新的密钥值11 22 33 44 55 66 77 88。

命令的数据域:

F9 F0 F0 AA FF 11 22 33 44 55 66 77 88

39变为F9的原因,前文已经表明,不再赘述。

对数据域进行扩展和填充,得到待加密的明文数据:

0D F9 F0 F0 AA FF 11 22 33 44 55 66 77 88 80 00

使用主控密钥对明文数据进行DES加密,得到密文:

7C 87 BC 23 14 00 21 B3 AF EA 67 E6 35 9D DC FE

修改密钥的命令:

84 D4 39 01 14 7C 87 BC 23 14 00 21 B3 AF EA 67 E6 35 9D DC FE

请求随机数,并使用主控密钥计算MAC:

随机数:EF 36 48 18

MAC:90 95 E4 E1

完整命令:

84 D4 39 01 14 7C 87 BC 23 14 00 21 B3 AF EA 67 E6 35 9D DC FE 90 95 E4 E1

修改密钥(F9改为39)

欲使用密文带MAC,修改MF下标识为02的外部认证密钥类型(F9改为39)。

命令的数据域:

39 F0 F0 AA FF 11 22 33 44 55 66 77 88

对数据域进行扩展和填充,得到待加密的明文数据:

0D 39 F0 F0 AA FF 11 22 33 44 55 66 77 88 80 00

使用主控密钥对明文数据进行DES加密,得到密文:

7E 65 DE 14 2F 66 CA 41 AF EA 67 E6 35 9D DC FE

修改密钥的命令:

84 D4 F9 02 14 7E 65 DE 14 2F 66 CA 41 AF EA 67 E6 35 9D DC FE

请求随机数,并使用主控密钥计算MAC:

随机数:C0 B3 54 9C

MAC:01 2E F5 F5

完整命令:

84 D4 F9 02 14 7E 65 DE 14 2F 66 CA 41 AF EA 67 E6 35 9D DC FE 01 2E F5 F5

相关推荐
街霸星星6 天前
让 Homebrew 成为你的 Mac (或 Linux) 软件包管理利器
mac·intellij idea
June`7 天前
计算机网络基础:从协议到通信全解析(大致框架)
网络·网络协议·tcp/ip·mac
Damon小智12 天前
玩转ClaudeCode:ClaudeCode安装教程(Windows+Linux+MacOS)
windows·ai·mac·wsl·claude code·vibe code
该用户已不存在16 天前
关于我把Mac Mini托管到机房,后续来了,还有更多玩法
服务器·前端·mac
政安晨16 天前
政安晨【开源人工智能硬件】【ESP乐鑫篇】 —— 在macOS上部署工具开发环境(小资的非开发者用苹果系统也可以玩乐鑫)
esp32·mac·开源硬件·环境部署·乐鑫·开源人工智能硬件·工具链搭建
tonngw17 天前
【Mac 从 0 到 1 保姆级配置教程 19】- 英语学习篇-我的英语工作流分享(AI 辅助学习)
macos·mac·英语学习·沉浸式翻译·欧路词典·沙拉查词·终生学习
fengyun289120 天前
Omi录屏专家 Screen Recorder by Omi 屏幕录制Mac
macos·mac·录屏·屏幕录制
二夕聊数据20 天前
AI 时代如何打造一个更顺手的 Terminal?
mac·iterm
fengyun289123 天前
fcpx音视频剪辑编辑 Final Cut Pro X(Mac电脑)
macos·mac
伊成23 天前
Mac中如何Chrome禁用更新[update chflags macos]
chrome·mac