采用三级密钥体系实现校园一卡通系统IC卡密钥管理子系统
文章出处:http://www.ifyousmell.com 作者:李峰 人气: 发表时间:2010年07月16日
1 概况
校园卡系统是以校园网为基本载体,采用计算机技术、网络与通信技术、数据库技术和卡与卡的识别技术等信息化的手段和工具,利用卡作为电子身份的载体、以及与计算机进行交互的介质,持卡人在其身份允许的范围内,实现在校园内进行商务消费、身份识别认证、金融服务等社会应用活动的数字化信息化[1]。校园系统作为数字化校园的基础部分,为整个校园提供了基本的消费平台。在该消费平台上存在着不同系统间的金融数据交互。这些金融数据在校园网的传递中必须要确保足够的安全。本文针对校园卡系统的密钥子系统进行设计,目的是确保校园卡系统金融数据的安全传输。
2 校园卡物理部署
2.1 系统简介
校园卡服务器负责处理其他系统通过接口程序传送上来的数据。其中大多数属于金融信息数据。如:对消费系统的上传数据进行转发、处理等操作。数据库服务器用于存储校园卡日常的消费数据信息以及校园卡的相关数据信息。
交换机用于连接校园卡系统内各个终端设备。
圈存机为系统提供银行卡到校园卡的圈存转账等功能。
校园卡前置机为校园卡系统提供与银行前置机之间的卡业务服务,以完成指定金融交易。如:圈存、银行卡余额查询等功能。
银行前置机提供与学校前置机之间的通信服务,以完成指定交易。
银行大机即银行核心业务主机系统。
在校园卡服务器和校园卡前置机上分别运行着两个Socket 服务程序,用于处理校园卡系统设备间的数据包传递。数据包中包括基本的财务信息以及校园卡用户的卡基本信息等。
2.2 校园卡系统中需要加密的部分
校园卡服务器与圈存机之间。校园卡前置机器与圈存机之间。校园卡服务器与校园卡前置机之间。POS 机消费系统与校园卡服务器之间。校园卡前置机器与银行前置机之间。
3 校园卡密钥管理子系统方案介绍
3.1 密钥介绍
在校园卡系统中,系统间传递的数据包的内容由多个定义好的数据域组成,用于存储系统运行中的字段信息。其中,在不同的操作中会生成不同的数据域,有些域是要做适当的加密处理的。如:在学生进行圈存和消费操作时会输入校园卡的密码或是银行卡的密码,这些密码在网络中传输都是以密文的形式传输的。特别是在校园卡前置机发送数据包到银行前置机、以及圈存机发送数据包到校园卡前置机的线路上,都需要对用户的卡密码进行加密后传输。
为了确保数据在校园网内传递、以及通过专线在银行和学校传递的绝对安全,对密钥的管理分为PKG 密钥、PIN 密钥、MAC 密钥等几类密钥进行管理。
PKG 密钥:主要用于对在网络中传输的数据包进行加密时使用的密钥。
PIN 密钥:用于对网络数据包中的密码字段域进行加密时使用的密钥,在校园卡系统中,主要对校园卡在使用时输入的校园卡密码和银行卡密码进行加密。
MAC 密钥:MAC 算法是一种将数据校验算法和DES 算法相融合的非公开算法,主要用于判断在网络中两个通讯设备间的接、发数据包的真伪,以防止攻击者构造虚假交易包而达到作案目的[2]。MAC 密钥是计算MAC 校验值时所用到的密钥。MAC 校验数值作为数据包的校验值保存到数据包的尾部。
校园卡系统的加密重点是在圈存到银行前置机间的通讯数据包。因为该部分主要的功能就是实现银行转账到校园卡,所以也是金融数据最集中部分。
校园卡系统采用国际成熟的三层密钥体系的管理思想进行设计与实现。
3.1.1 一级:传输密钥
用 PKG 密钥、PIN 密钥、MAC 密钥进行加密的操作对象都是校园卡系统网络中涉及的金融交易数据包,属于三级加密体系的第一级,统称为传输密钥[2]。
3.1.2 二级:交换密钥
参照金融业界的数据加密标准,在传输密钥中PIN 密钥和MAC 密钥是两个动态变化的密钥。密钥根据实际要求可以随时更换,校园卡系统会每日从银行前置机器系统动态的获取随机的PIN 密钥和MAC 密钥。这两个密钥值是不允许在网上明文传送的,对这两个密钥进行加密的密钥称为交换密钥,它属于三级加密体系的第二级[2]。
3.1.3 三级:主密钥
传输密钥、交换密钥都需要存储起来,它们的存储形式也不允许用明文保存,必须进行加密,将传输密钥、交换密钥加密用于存储时所用到的密钥称为主密钥。主密钥也称为存储密钥,它属于三级加密体系的第三级[1]。为避免攻击者一旦窃得主密钥即可获得所有密钥的情况发生,系统对主密钥实行分散管理,即PK 密钥、PIN 密钥、MAC 密钥、交换密钥均有各自的主密钥。
3.2 密钥子系统结构
一级:明文通过PIN 密钥加密数据包中的密码信息,通过PKG 密钥对数据包进行加密,通过MAC 密钥对数据包进行验证信息生成;最终生成的数据包在网络中传输。
二级:通过交换密钥把在对网络中传输的PIN 密钥和MAC 密钥进行加密处理后生成在网络中传递的PIN、MAC 的密文,用于在网络中传输。
三级:通过主密钥对PKG 密钥、PIN 密钥、MAC 密钥、交换密钥进行加密后保存在系特定的介质中。如:IC 卡或系统本地。
在实际使用中为了加强密钥系统的安全性,交换密钥和主密钥在使用时一般会使用多个针对不同的密钥对需要加密的密钥进行加密,以增加加密过程的复杂度。所有密文在需要转换成明文使用的时候,通过相应的解密过程后,还原明文后使用。
4 校园卡密钥管理子系统
在信息技术高度发达的校园中,系统的安全性设计应充分考虑到各方面的因素,包括卡片、读卡机具、应用系统服务器、网络数据传输、中心数据存储、系统管理软件、应用系统软件和运行管理等[3]。而系统密钥的安全是一卡通系统安全的基石。为保证数字化数字校园系统的正常、安全、稳定的运行,完备的密钥管理系统是至关重要的。
系统采用标准的算法与加密方案对交易数据及IC 卡进行认证,而加解密的核心就是密钥。根据现代加密理论,对公开算法的密钥系统而言,系统的安全性取决于密钥的安全性。本系统按照“金融级”的安全性标准设计密钥管理系统,以确保系统的安全核心——密钥的绝对安全。
校园卡系统的服务程序为了确保网络的传输效率,建议最好采用C++或C 语言通过socket 技术实现。socket 服务程序在转发数据包的时候完成加密过程。具体的密钥管理由学校人员来保管,系统的交换密钥和主密钥由银行提供,并且定期更新。在校园卡前置机每日定时动态获取当日的PIN 密钥和MAC 密钥。由于校园卡系统在高校范围内使用广泛,且校园的管理人员也比较繁杂。所以,系统在有安全技术保障的同时,一定要有相应的制度作为保障,确保密钥管理的安全。在校园卡系统的实际密钥管理系统中,密钥的转移和存储对管理人员来说都是不可见的。做法是通过IC 射频卡的数据存储功能将各类密钥保存在对应的数据域中。用户在使用密钥的时候可以通过对IC 卡的读取操作来更换系统的主密钥、交换密钥、传输密钥的内容。用于密钥系统的IC 卡由专员保管,使用之后立即交回学校或银行。确保了密钥信息在校园内部的有限是使用,也同时大大加强了密钥系统的安全。
目前校园卡的建设的模式多采用多方合作的模式,与金融数据相关的单位为银行和学校。有些校园卡系统对密钥系统的管理是由银行和学校共同的管理两个不同的密钥,两个密钥同时使用时才能将交换密钥和传输密钥等转化明文后使用。
4.1 密钥子系统的组成
在密钥子系统中,通过将数据包加、解密函数封装成window 平台下的动态链接库的方式实现加、解密函数功能的简单调用。
具体的子系统功能组成如下:
1.密钥卡管理功能;
该功能提供 VC++系统开发出的操作页面,在银行端使用或是在学校端使用。用于存储密钥信息到IC 卡。
2. 密钥分发功能;
在学校端使用,主要负责分发学校的密钥到对应的终端设备。
3. 圈存机密钥获取功能;
圈存机在每日签到时获取相应的各类密钥信息。
4. 动态连接库:
网络传输数据包加、解密函数。
用户卡密码加、解密函数。
DES 加、解密函数。
MAC 校验码生成函数。
传输密钥加、解密函数。
交换密钥加、解密函数。
主密钥加、解密函数。
4.2 校园卡系统中加密部分说明
校园卡服务器与圈存机之间
采用 PIN 密钥、PKG 密钥、MAC 密钥对数据包进行加密。
校园前置机与圈存机之间
采用 PIN 密钥、PKG 密钥、MAC 密钥对数据包进行加密。
校园卡服务器与校园卡前置机之间
采用 PKG 密钥对数据包进行加密。
POS 机消费系统与校园卡服务器之间。
通过 PKG 密钥对数据包进行加密
校园卡前置机与银行前置机之间
通过 PIN 密钥、PKG 密钥、MAC 密钥进行数据加密;通过交换密钥获取PIN密钥、MAC 密钥。
IC 卡中保存的全部密钥
使用主密钥对PIN 密钥、PKG 密钥、MAC 密钥;交换密钥等加密保存。
5 结论
在校园卡的建设中,对金融数据在网络中的保护,主要是通过密钥管理子系统来实现。实施证明在当今技术飞速发展的高校内,对金融数据的保护是十分必要的。无论是学校还是银行都应该重视这方面的工作。