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

相关推荐
爱玫瑰的小王子10 分钟前
Window 转 Mac 不痛指南😁
mac
『昊纸』℃3 小时前
Mac上编译C语言的简易方法
c语言·mac·教程·xcode·编译
shughui1 天前
2026最新JDK版本选择及下载安装详细图文教程【windows、mac附安装包】
java·linux·开发语言·windows·jdk·mac
一直会游泳的小猫2 天前
homebrew
linux·mac·工具·包管理
子沫20207 天前
mac下载VMware Fusion
macos·mac·vmware fusion
段帅龙呀7 天前
Ubuntu 22.04 仿 macOS 桌面改造指南
ubuntu·mac
搬砖的前端8 天前
本地模型+TRAE CN 打造最优模型组合实测:开源主模型+本地辅模型,对标GPT5.2/5.3/Gemini-3-Flash
前端·ai·mac·ai编程·qwen·trae·qwen3.6
胡汉彡9 天前
MAC设置本地host方法
mac
CappuccinoRose10 天前
数据库安全性与完整性 - 软考备战(三十三)
数据库·mac·软考·dac·实体完整性·参照完整性·用户定义完整性
卡尔特斯12 天前
Mac/Win 查看视频帧率(视频信息)
windows·mac