CPU卡的线路加密与线路保护(附源码)

本文深入探讨了安全报文传输的概念及其应用,包括线路保护、线路加密和线路加密保护三种方式。详细解释了如何通过改变文件类型来启用安全报文传送,并在读写操作时确保安全。同时,介绍了线路加密的具体步骤,包括明文数据的预处理、数据块划分、加密过程以及密钥的使用。此外,文章还提供了CPU卡线路加密与线路保护的源码链接,供读者实践验证。
摘要由CSDN通过智能技术生成

文章线路保护内容转载自:http://www.cnblogs.com/chenguanwei/archive/2011/01/11/1932953.html

后附加CPU卡线路加密内容,和数据加密与线路保护原创源码。

 

一,安全报文传送

三种情况:

- 线路保护:对传输的数据附加4字节的MAC码,接收方收到后首先进行校验,只有校验正确的数据才予以接受,这样就防止了对传输数据的篡改。

- 线路加密:对传输的数据进行DES加密,这样传输的就是密文,攻击者即使获得了数据也没有意义。

- 线路加密保护:对传输的数据进行DES加密后再附加4byte MAC码

如何使用安全报文传送:

在建立文件时改变文件类型,使用线路保护则最高位置为1,使用线路加密则次高位置为1,使用线路加密保护则最高位和次高位都置为1.

在对文件进行读写或使用密钥时,如需采用安全报文传送,必须置CLA的后半字节为十六进制“4”

 

二,线路加密计算

假如命令报文包含数据,可需要根据是否需要加密对命令报文中数据进行加密,线路加密在线路保护MAC计算之前进行。

线路加密步骤(不同厂家细节不同,具体参考数据文档):

1、明文数据前要加LD位(一字节)表示明文数据长度,产生新的数据块

2、将数据块划分成8字节为单位的数据块,表示为BLOCK1、BLOCK2、BLOCK3、BLOCK4...

3、如果最后字节是8字节,直接转到第4步(这一点与线路保护MAC计算不同,线路保护MAC在最后为8字节时,需要附加 80 00 00 00...)

     如果不是8字节,需要在后面附加80 00 00...直至组成8个字节长度。

4、根据DES或者3DES算法计算加密后数据(注:计算完之后需要修改报文长度位LC,为加密后的数据长度)。

密钥为8字节与16字节加密过程,如下图:

其中DEA(e)即为DES加密过程,DEA(d)为_DES解密过程。DEA(e)->DEA(d)->DEA(e)即为3DES加密过程。

 

三,线路保护MAC计算:

假设创建了一个二进制文件,使用线路保护,文件标识0x16,文件空间0x20。

则向二进制文件中写数据的指令为:

04D6960024 + val + mac

其中CLA为04,因为文件使用线路保护,所以后半字节为4

INS为D6

P1为96,其中高3位为100,低5位为文件标识

P2为00,为欲写文件的偏移量

Lc为24

val为要写入到二进制文件中的数据,0x20个字节

mac就是我们需要计算的线路保护mac

而mac又是根据写指令去除mac部分计算得到的,即是根据“04D6960024 + val”计算得到的。

Mac计算步骤:

1、 终端向CPU卡发送GET CHALLENGE指令,取得4字节随机数,后补“0x00000000”,得到的8字节结果作为MAC计算的初始值。

2、 检查“04D6960024 + val”的字节数是否为8的倍数,不是则补“0x8000…”,是则补“0x8000000000000000”,然后将得到的结果按8字节每块分成D1、D2、D3…

3、 判断密钥的长度。

如果密钥长度为8字节,则按如下方式计算MAC:

如果密钥长度为16字节,则按如下方式计算MAC:

 

使用CPU卡计算MAC:

1、 终端向CPU卡发送GET CHALLENGE指令,取得4字节随机数,后补“0x00000000”,得到的8字节结果作为MAC计算的初始值。

2、 通用DES初始化

80 1A + P1(密钥用途)+ P2(密钥版本)+ Lc + DATA(分散因子)

3、 通用DES计算

80 FA + P1 + P2(00) + Lc + DATA(8字节随机数+)+ “04D6960024 + val + 0x8000…”

这里P1的取值是关键:00001001,即05,代表有初始值的MAC计算

返回数据即为4字节MAC

线路加密计算:

具体计算方式同DES/3DES算法,这里介绍的是如何使用SAM卡加密。

1、通用DES初始化

80 1A + P1(密钥用途)+ P2(密钥版本)+ Lc + DATA(分散因子)

2、通用DES计算

80 FA + P1 + P2(00) + Lc + “明文”

这里P1的取值是关键:00000000,即00,代表无后续快的加密计算

返回数据即为加密得到的密文

 

CPU卡线路加密与线路保护源码:

注:线路保护MAC计算产生结果为8字节,普通厂家取低地址的4字节,恒宝卡文档说明为取高位4字节,根据需要配置。

源码地址:http://download.csdn.net/detail/xiao2005new/4567035

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值