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

相关推荐
pe7er3 天前
macOS 应用无法打开(权限问题)解决方案
macos·mac
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧8 天前
JSP, MVC, El, JSTL, MAC
java·开发语言·mvc·mac·jsp
独泪了无痕9 天前
Mac Homebrew 安装 MySQL 指南
数据库·mysql·mac
chrisleequeen15 天前
【无标题】
conda·mac·anaconda·环境变量·export·no found
张泽泽zzz18 天前
使用VPN后 Mac出现能联网但无法访问网页的问题 <已解决>
mac
蓝丶曦月22 天前
MacM系列芯片安装 最新版本Notepad--(平替Windows系统的Notepad++)详细教程
编辑器·notepad++·mac
oushaojun225 天前
趣谈网络协议栈,以太网基础MAC和PHY(转)
mac·tcp·linux网络·phy
上天_去_做颗惺星 EVE_BLUE1 个月前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
WarmSword1 个月前
mac上用cursor/vscode调试root权限进程
c++·ide·vscode·macos·mac
Laughtin1 个月前
macos命令行更换终端代理的方法
macos·bash·mac