原创 金融卡应用安全结构设计

2008-10-20 13:49 3426 6 6 分类: 软件与OS
 1、密钥管理原则

    金融卡应用是所有涉及资金管理的金融应用的基础,应用对安全有很高的要求,作为安全的基础,卡片的密钥管理需要遵循一定的原则。

    * 所有涉及到资金转移或者修改IC卡中的敏感信息的交易,必须使用加密密钥来保证交易的安全性。
    * 密钥管理采用的是部分集中管理模式,即总行将密钥逐级分散分发到所辖各个发卡机构。
    * 密钥通过索引号来进行查找,在包含初始化命令的交易中,密钥索引号包含在初始化命令的数据报文中。
    * 为了加强密钥的安全性,在交易过程中,生成临时的过程密钥用于交易的特定阶段,过程密钥的生成遵循一定的算法。
    * 密钥在IC卡中存储和运算,必须严格确保密钥的安全性,不允许密钥内容以任何方式泄漏出来。

  2、应用涉及的密钥

    存储在IC卡内用于电子存折和电子钱包应用的密钥如下所示:

     密钥     意义                            用途
     DPK     消费/取现密钥。发卡方基于ED/EP的   用于产生消费/取现交易中
             应用序列号产生的一个3DES密钥       使用的过程密钥SESPK

     DLK     圈存密钥。发卡方基于ED/EP的应用    用于产生圈存交易中使用
             序列号产生的一个3DES密钥           的过程密钥SESLK

     DTK     TAC密钥。发卡方基于ED/EP的应用     用于产生消费、取现和圈
             序列号产生的一个3DES密钥           存交易中使用的TAC

     DPUK    PIN解锁密钥。发卡方基于ED/EP的应   用于产生解锁PIN命令的
             用序列号产生的一个3DES密钥         MAC

     DRPK    重装PIN密钥。发卡方基于ED/EP的应   用于产生重装PIN命令的
             用序列号产生的一个3DES密钥         MAC

     DAMK    应用维护密钥。发卡方基于ED/EP的    用于产生应用锁定、应用
             应用序列号产生的一个3DES密钥       解锁、卡片锁定和更新二
                                                进制命令的MAC

    存储在IC卡内用于电子存折应用的密钥如下所示:

     密钥      意义                           用途
     DULK     圈提密钥。发卡方基于ED的应用序     用于产生圈提交易中使用
              序列号产生的一个3DES密钥           的过程密钥SESULK

     DUK      更新密钥。发卡方基于ED的应用序     用于产生修改透支限额交
              号产生的一个3DES密钥               易中使用的过程密钥SESUK

  3、子密钥的计算方法

    在上面描述的IC卡中的密钥都是应用子密钥,由对应的应用主密钥推导而得。应用主密钥由应用管理机构来维护,主密钥通过某种算法分散等到每一张用户IC卡中的子密钥,在应用建立阶段写入IC卡中。密钥的推导算法类似,下面以消费/取现子密钥DPK的推导算法为例。

    DPK对应的消费主密钥为MPK,也是一个3DES密钥,推导过程分为如下两个步骤:

   1)DPK左半部分的推导方法

    DPK左半部分,也就是左8Byte的计算方法为:

    * 将应用序列号的最右16个数字作为输入数据。
    * 将MPK作为加密密钥。
    * 用MPK对输入数据进行3DES运算。

    计算结果为DPK的左半8Byte。

   2)DPK右半部分的推导方法

    DPK右半部分,也就是右8Byte的计算方法为:

    * 将应用序号的最右16个数字的求反作为输入数据。
    * 将MPK作为加密密钥。
    * 用MPK对输入数据进行3DES运算。

    计算结果为DPK的右半8Byte。

    将两步的计算结果链接在一起就组成了DPK。

    其他子密钥的推导过程类似,这个推导过程通常在卡外完成。

  4、过程密钥的计算方法

    过程密钥是在交易过程中用可变数据产生的DES密钥。过程密钥产生后只能在某一交易中使用一次。

    所有过程密钥的产生机制相同,即用交易子密钥对初始化数据做3DES加密计算,计算结果即为过程密钥。

    通常输入数据长度为8Byte,数据的具体内容根据不同命令来进行选择,计算结果也为8Byte。



文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条