公共交通ic卡技术要求内容摘要:

( IC)卡规范 第 2部分 电子钱包存折 应用规范 JR/T 中国金融集成电路( IC)卡规范 第 9部分 电子钱包扩展应用指南 安全计算方法 安全计算涉及用户卡中的所有计算类型。 包 括 数据加密计算、普通 MAC计算、消费 MAC1计算和 MAC2 认证等。 MAC总是命令或命令响应数据域中最后一个数据元素。 密钥分散计算方法 密钥分散通过分散因子产 生子密钥。 分散因子为 8字节。 a) 对于数据分组长度为 8字节的算法,密钥分散方式如下: 将主密钥 MK对分散 因子 进行处理 , 推导出一 个 16字节 长度的 子 密钥 DK,如 图 2和图 3。 JT/T XXXX— 201X 10 推导 DK左 半 部分的方法是: 第一步:将分散因子作为输入数据; 第二步:将 MK 作为 加 密密钥; 第三步:用 MK 对输 入 数据进行 3DEA 运算。 图 3 数据分组长度为 8字节的算法 推导 DK 左半部分 推导 DK 右半部分的方法是: 第一步:将分散因子求反,作为输入数据; 第二步:将 MK 作为加密密钥; 第三步:用 MK 对输入数据进行 3DEA 运算。 图 4 数据分组长度为 8字节的算法 推导 DK右半部分 JT/T XXXX— 201X 11 b) 对于数据分组长度为 16字节的算法,密钥分散方式如下: 将主密钥 MK对分散 因子 进行处理 , 推导出一 个 16字节 长度的 子 密钥 DK,如 图 4。 推导DK的方法是: 第一步: 将分散因子求反,按照“ 分散因子 ” +“分散因子的反”的顺序连接在一起,组成 16字节 输入数据; 第二步:将 MK 作为 加 密密钥; 第三步:用 MK 对输 入 数据进行 DEA加密 运算。 D E A ( e )M K ( 1 6 b y t e s )输 入 因 子 ( 1 6 b y t e s )D K ( 1 6 b y t e s ) 图 5 数据分组 长度 为 16字节的算法推导 DK 过程密钥的产生 过程密钥是在交易过程中用可变数据产生的密钥。 过程密钥产生后只能在某过程 /交易中使用一次。 图 5 和图 6 描述了电子钱包进行消费交易时产生过程密钥的机制。 这方法也用于不同交易类型的过程密钥的产生,但输入的数据取决于不同的交易类型。 a) 对于数据分组长度为 8 字节的算法, 按照如下方式 产生过程密钥 : D E A ( e )D P K左 半 部 分过 程 密 钥 ( S E S P K )输 入 数 据 I n ( 8 字 节 )D E A ( d )D P K右 半 部 分D E A ( e )D P K左 半 部 分 图 6 数据分组长度为 8字节的 算法 的过程密钥产生 b) 对于数据分组长度为 16 字节的算法, 按照如下 方式 产生过程密钥 : 第一步 : 将 输入数据 In求反 得到( ~In) ,按照 In+(~In)的顺序连接在一起,组成 16字节输入数据 In’ ; 第二步:将 DPK 作为 加 密密钥; 第三步:用 DPK 对输 入 数据 In’ 进行 DEA加密 运算 得到过程密钥。 JT/T XXXX— 201X 12 D E A ( e )D P K过 程 密 钥 ( S E S P K )输 入 数 据 I n ( 8 字 节 )I n + ( ~ I n ) ( 1 6 字 节 ) 图 7 数据分组长度为 16字节的 算法 的过程密钥产生 数据加密的计算方法 a) 对于数据分组长度为 8 字节的算法, 按照如下方式对数据进行加密 : 第一步: LD( 1 字节)表示明文数据的长度,在明文数据前加上 LD 产生新的数据块。 第二步:将该数据块分成 8 字节为单位的数据块,表示为 BLOCK BLOCKBLOCK BLOCK4 等。 最后的数据块有可能是 1~8 个字节。 第三步:如果最后(或唯一)的数据块的长度是 8 字节的话,转到第四步;如果不足 8 字节,则在其后加入 16 进制数 ‘80’,如果达到 8 字节长度, 则转到第四步;否则在其后加入 16 进制数 ‘00’直到长度达到 8 字节。 第四步: 按照图 7 所 示 的算法使用指定密钥对每一个数据块进行加密。 第五步:计算结束后,所有加密后的数据块依照 原顺序连接在一起。 图 8 数据分组长度为 8字节的 DEA数据加密算法 b) 对于数据分组长度为 16字节的算法, 按照如下方式对数据进行加密: 第一步: LD( 1 字节)表示明文数据的长度,在明文数据前加上 LD 产生新的数据块。 第二步:将该数据块分成 16 字节为单位的数据块,表示为 BLOCK BLOCKBLOCK BLOCK4 等。 最后的数据块有可能是 1~16 个字节。 第三步:如果最后(或唯一)的数据块的长度是 16 字节的话,转到第四步;如果不足16 字节,则在其后加入 16 进制数 ‘80’,如果达到 16 字 节长度,则转到第四步;否则在其后加入 16 进制数 ‘00’直到长度达到 16 字节。 第四步:按 照图 8 所 示 的算法使用 指定密钥对每一个数据块进行加密。 JT/T XXXX— 201X 13 第五步:计算结束后,所有加密后的数据块依照原顺序连接在一起。 D E A ( e )K E YB L O C K 1密 文 1D E A ( e )B L O C K 2密 文 2D E A ( e )B L O C K n密 文 n„ 图 9 数据分组长度为 16字节的 DEA数据加密算法 安全报文的计算方法 命令安全报文中 MAC 命令安全报文中的 MAC 是使用命令的所有元素(包括命令头和命令数据域中的数据)来产生的。 以保证命令连同数据能够正确完整地传送,并对发送方进行认证。 此方法适用于 WRITE KEY 命令。 a) 对于数据分组长度为 8字节的加密算法, 按照如下方式使用 DEA 加密方式产生 MAC: 第一步:终端通过向 IC 卡发 GET CHALLENGE 命 令 获得一个 4 字节随机数,后 补 4字节 16进制数 ‘00’作为 初 始值。 第二步:将 5 字节 命 令头( CLA, INS, P1, P2, Lc)和 命 令数据域中的明文 或密文数据连接在一起形成数据块。 注意 , 这里的 Lc 应是 数 据长度加上将计算出的 MAC 的 长度( 4 字 节 )后得到的实际长度。 第三步:将该数据块分成 8 字 节 为单 位的数据块, 表 示 为 BLOCK BLOCK BLOCKBLOCK4 等。 最 后 的数据块有可能是 1~8 个字节。 第四步:如果最后的数据块的长度是 8 字 节 的话,则在该数据块之后再加一个完整的 8 字节数据块 ’80 00 00 00 00 00 00 00’, 转到第 五 步。 第五步:如果最后的数据块的长度不足 8 字节 ,则在其 后 加入 16 进制数 ‘80’, 如果达到 8 字节长度 , 则转到第五步 ; 否则接着在其后加入 16 进制 数 ‘00’直到长度达到 8 字 节。 按图 9所 示的算法对这些数据块使用指定 密钥进行加密来产生 MAC。 第六步:最终取计算结果(高 4 字节)作为 MAC。 JT/T XXXX— 201X 14 图 10 安全报文中 数据分组长度为 8字节的 MAC算法 b) 对于数据分组长度为 16字节的加密算法, 按照如下方式使用 DEA 加密方式产生 MAC: 第一步:终端通过向 IC 卡发 GET CHALLENGE 命 令 获得一个 4 字节随机数,后 补 12字节16进制数 ‘00’作为 初 始值。 第二步:将 5 字节 命 令头( CLA, INS, P1, P2, Lc)和 命 令数据域中的明文 或密文数据连接在一起形成数据块。 注意 , 这里的 Lc 应是 数 据长度加上 将计算出的 MAC 的 长度( 4 字节 )后得到的实际长度。 第三步:将该数据块分成 16 字 节 为单位的数据块, 表 示 为 BLOCK BLOCK BLOCK BLOCK4 等。 最 后 的数据块有可能是 1~16 个字节。 第四步:如果最后的数据块的长度是 16字 节 的话,则在该数据块之后再加一个完整的 16 字节数据块 ’80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00’, 转到第 五 步。 第五步:如果最后的数据块的长度不足 16字节 ,则在其 后 加入 16 进制数 ‘80’, 如果达到 16 字节长度 , 则转到第五步 ; 否则接着在其后加入 16 进制数 ‘00’直到长度达到 16 字 节。 按图 10所 示 的算法对这些数据块使用指定密钥进行加密来产生 MAC。 第六步:最终取计算结果(高 4 字节)作为 MAC。 D E A ( e )K E YB L O C K 1„初 始 值D E A ( e )B L O C K 2D E A ( e )B L O C K 3D E A ( e )B L O C K nM A C 图 11 安全报文中 数据分组长度为 16字节的 MAC算法 交易中的 MAC 安全报文中的 MAC 是使用命令的所有元素(包括命令头和命令数据域中的数据)来产 JT/T XXXX— 201X 15 生的。 以保证命令连同数据能够正确完整地传送,并对发送方进行认证。 此方法适用于所有 命令 , 除 WRITE KEY 命令外。 此方法分二步完成。 先用指定密钥产生过程密钥;再用过程密钥计算 MAC。 a) 对于数据分组长度为 8字节的算法, 按照如下方式使用 DEA 加密方式产生 MAC: 第一步: 将一个 8 字 节长的 16 进制数 ‘00’ 设定为初始值 第二步:将所有输入数据按指定顺序连接成一个数据块。 第三步:将该数据块分成 8 字 节 为单位的数据块,表示为 BLOCK BLOCK BLOCKBLOCK4 等。 最 后 的数据块有可能是 1~8 个字节。 第四步:如果最后的数据块的长度是 8 字 节 的话 , 则在该数据块之后再加一个 完整的 8 字 节数据块 ’80 00 00 00 00 00 00 00’, 转 到第五步。 如果最后的数据块的长度不足 8 字 节,则在其后加入 16 进 制数 ‘80’, 如果达到 8 字节长度 , 则转到第五步 ; 否则在其后加入 16 进制数 ‘00’ 直到长度达到 8 字节。 第五步:按照 图 11所示 的算法对这些数据块使用过程密 钥 (单倍长度 ) 进行 加密来产生 MAC。 第六步:最终取计算结果(高 4 字节)作为 MAC。 图 12 交易中的 MAC算法 b) 对于数据分组长度为 16字节的算法, 按照 如下方式使用 DEA 加密方式产生 MAC: 第一步: 将一个 16 字 节长的 16 进制数 ‘00’ 设定为初始值 第二步:将所有输入数据按指定顺序连接成一个数据块。 第三步:将该数据块分成 16字 节 为单位的数据块,表示为 BLOCK BLOCK BLOCKBLOCK4 等。 最 后 的数据块有可能是 1~16个字节。 第四步:如果最后的数据块的长度是 16字 节 的话 , 则在该数据块之后再加一个完整的 16 字 节数据块 ‘80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00’, 转 到第五步。 如果最后的数据块的长度不足 16字 节,则在其后加入 16 进 制数 ‘80’, 如果达到 16 字节长度 , 则转到第五步 ; 否则在其后加入 16 进制数 ‘00’ 直到长度达到 16 字节。 第五步:按照 图 12所示 的算法对这些数据块使用过程密 钥 进行 加密来产生 MAC。 第六步:最终取计算结果(高 4 字节)作为 MAC。 JT/T XXXX— 201X。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。