• JAVA card 应用开发(六) 个人化数据的线路安全和数据安全


    卡片个人化数据的线路安全和数据安全

    说明:下面理论,基于GP2.2规范。

    一、线路安全

    1. 概念:线路安全。就是对于数据不保密。但要保证数据的完整性和防止被篡改。

    2. 方法:在原有的数据基础上。加上8个字节的MAC。

    3. 过程

             a.在外部认证指令中,设定安全级别。

    如图1.


    图1


             b.计算8个字节的MAC附加在后面就可以。计算MAC须要注意:完毕了外部认证后。除了选择应用的指令以外,都须要增加MAC,否则安全条件不满足。计算MAC以8个字节的0X00为计算的初始向量。输入数据为8个历史字节(上次计算的MAC值)+本次要发的指令。

    比方,原本是:

    80E40000094F07A000000333010100

    算MAC过程:

    MAC(0000000000000000,[8字节MACkey],[8字节上次MAC结果]+84E40000114F07A0000003330101,[8字节本次MAC结果])

    就变成:

    84E40000114F07A0000003330101+[8字节本次MAC结果]

    注意:第一次的8字节MAC结果,是在“8482010010”这个指令生成的。

    第二个指令就開始沿用这个指令的MAC结果,作为输入了。

    MAC值加入到指令后面,长度需添加。

    比方

    80E20000299102266F24840E315041592E5359532E4444463031A5128801015F2D087A68656E667264659F110101

    加上MAC后,就是:

    84E20000319102266F24840E315041592E5359532E4444463031A5128801015F2D087A68656E667264659F110101(+8字节MAC)

    其余长度都不变,并且还不能带有LE(期待的数据长度)。

    二、数据安全

    1. 概念:进行卡片个人化的时候,数据是保密的,比方卡片私钥。

    2. 方法:把数据通过DES加密,看不到明文。

    3. 过程:注意在指令的P1设定对应的数值,如图2.


    图2


    样例,原本是:(设置PIN的指令)

    80E200170B801008241234FFFFFFFFFF

    DesEn(241357FFFFFFFFFF,[DES KEY],[加密后的数据:8的倍数])

    80E260170B801008+[加密后的数据]

    注意,假设须要加密的数据。不是8的倍数,请填充00或者FF,Applet都能够正常解释出来。

    假设输入数据是8的倍数,并且个人化的DGI是 0x8101、0x8103、0x8201、0x8202、0x8203、0x8204、0x8205、0x8301、0x8302、0x8303、0x8304、0x8305 这些。还须要在后面填充80FFFFFFFFFFFFFF.对于对称密钥,后面是不须要增加这8个补充字节的。

    当然,是能够把个人化数据。既有线路安全也有数据安全,只是要注意,先做数据安全。再做线路安全。

    否则Applet无法推断数据的完整性。

  • 相关阅读:
    K2新网站(官网和BPM社区)正式上线了
    在线体验K2 BPM微信审批
    K2 BPM + SAP,实现全方面管理企业
    KStar ----BPM应用框架,K2 的新星
    SharePoint加K2,将Portal系统与BPM系统完美整合!
    迈瑞综合应用及流程管理平台项目
    深度学习教程网站
    Pytorch自定义参数层
    pytorch BCELoss和BCEWithLogitsLoss
    Some helper functions for PyTorch
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6812962.html
Copyright © 2020-2023  润新知