数据加密机主要用于实现对主机应用层数据加/解密、消息来源正确性验证、密钥管理等。全国大多数商业银行,城市一卡通系统、公交卡系统、社保卡系统、加油卡系统,金融IC卡系统、电子联行系统、综合业务系统、信用卡系统、银证转帐系统、企业银行系统、网上证券交易系统都有应用.
在1996年以前,国产的数据加密机尚未产生,国内银行均采用国外的加密产品,主要是英国的RACAL(雷卡)和加拿大的ATALLA品牌。这两个公司有着较长的从事金融信息安全的研究和为金融业提供信息安全产品的历史,其产品可适应金融信息安全的各种要求,方便地和各种计算机硬件平台和软件平台接口,技术比较成熟。为彻底解决我国金融交易的安全问题,并同时做到和国外金融业务接轨。1996年国家信息安全主管部门指定两家最具实力的科研机构(总参56所和电子部30所)进行研究开发,这两家单位在同年先后推出了各自的金融数据加密机(总参56所的SJL06型,电子部30所的SJL05型),两种机型都属于信源加密设备,并均通过了国家密码管理委员会的鉴定.
目前在社保领域用到的国内加密机主要有成都卫士通信息安全技术有限公司的SJL05型, 广州江南科友科技股份有限公司的SJL06型,北京江南歌盟科技有限公司的SJL22型。
1. 成都卫士通
成都卫士通信息产业股份有限公司成立于1998年,由中国电子科技集团公司第30研究所发起成立。所以SJL05加密机也叫做30所加密机,主要应用在珠海社保,韶关社保,贵州省,内蒙古,天津市,重庆市等。SJL05加密机在社保发卡取密钥过程指令如下:
- 取出指定的次主密钥一SHSMK1和次主密钥二SHSMK2;
- 用SHSMK1对分散数据做指定次数的分散,得到子密钥SubKey;
- 用SHSMK2对SubKey做3DES加密,得到密文CsubKey;
- 用SubKey对8字节0做3DES加密,得到校验码CheckValue;
- 返回CsubKey和CheckValueE的前四个字节.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
LoadEncmc(suo30) ;;30所加密机 JMJ=LINK(172_16_0_239,6666) ;;连接加密机 注意IP的表示方式 PAD=0102030405060708 ;;导密钥指令中用户自填充数据 TKA=0003 ;;次主密钥索引二 ATR=0000000000000000 CPKEY=SENDCMD(JMJ,B060+PAD+0170+TKA+01+ ATR,36) 对于STK采用B0A0指令,如下: CKEY=SENDCMD(JMJ,B0A0+PAD+0173+TKA+02+DispKey+ATR,36) CKEY=COPY(CKEY,1,32) ECB_3DES_DE(CKEY,TKEY,DEKEY) STK=COPY(DEKEY,1,16)</span> |
从加密中离散密钥后返回密钥值和校验值,通过校验值,我们可以检测密钥值是否离散正确。以30suo加密机为例,校验值计算如下:
1
2
3
4
5
6
7
|
INDEX[004C]=94851AB5439C41A250D35A3B5787C3F4 VERIFY=AAD0DF47 TPKEY=11111111111111111111111111111111 ECB_3DES_DE(INDEX[004C],TPKEY,KEY) // KEY=9E8870C9ADF00B6E462483A4F187D292 ECB_3DES_EN(0000000000000000,KEY,VERIFY_) //VERIFY_=AAD0DF4744BB32A4</span> |
所以在从加密机导出密钥后,首先需要验证密钥是否和TPKEY(传输密钥)匹配。
2. 科友SJL06
SJL06加密机也就是我们常说的总参56所加密机,主要应用在山东社保,广州社保等。由于军队不能够经商,科友科技同总参56所签订了合作协议,负责推广总参56所的金融数据加密机。SJL06加密机在社保取密钥的过程指令如下:
56所加密机密钥索引号为5位。对于16字节的密钥,其指令如下:
1
2
3
4
5
6
7
8
|
ip=172_16_0_220 port=2000 LoadEncmc(56suo) JMJ=LINK(IP,PORT) PAD=0102030405060708 TKA=0000 kid=10410 CPKEY=SENDCMD(JMJ,5A0122101+kid+ATR+0000123456781234567805+84D4000124,36)</span> |
对于STK取指令不同,如下:“
1
2
3
4
5
6
|
kid=10502 CPKEY=SENDCMD(JMJ,5A0122100+kid+0000123456781234567805+84D4000124,36) CPKEY=COPY(CPKEY,1,32) ECB_3DES_DE(CPKEY,TPKEY,EPKEY) stk1=COPY(EPKEY,1,16) ECB_SDES_EN(ATR,stk1,EPKEY)</span> |
3. 歌盟SJL22
北京江南歌盟科技的SJL22加密机主要应用在宁夏社保等。社保密钥索引号为6位,取密钥过程指令如下:
1
2
3
4
5
6
|
kid=01013A 0084000008(RAM+9000) CPKEY=SENDCMD(JMJ,2UFF02+kid+0002+FSYZ+ATR+0918+000A010000000A77+000D+RAM+84D4000124,100) CPKEY1=COPY(CPKEY,13,64) ECB_3DES_DE(CPKEY1,TPKEY,EPKEY) key=COPY(EPKEY,19,32)</span> |
使用背景
目前国内各主机应用系统使用的HSM基本上都是国外的产品,甚至简单地采用在主机上进行软件加解密的方法。这些应用系统,大多是关系到国计民生的关键部门,系统中的数据安全对各商户的利益乃至整个国民经济有着举足轻重的意义。虽然这些系统提供了完善的算法体系和密钥保护、分发体系,但是,对于应用这种HSM主机业务系统来说,存在着一定程度的隐患。
1.HSM基本上都是国外的产品,采用的是世界上流行的算法。这些算法可以很容易的获得和进行分析和攻击;
2.HSM基于脱离应用的原则,使目前的主机应用系统中,有许多业务上的特定加密运算过程,无法采用HSM实现;
3.主机的算法应用往往比较复杂,加密过程需要主机应用程序调用多次HSM的不同接口方能实现,从而极大地影响了主机的处理效率;
4.软件加解密的方案,从表面上看解决了主机的加密问题,但由于算法、密钥等都是存放在主机上,可以轻而易举的获得并跟踪整个算法的计算流程;
系统实现
HSM提供加密功能来巩固网络中广播数据以及点对点的数据传输安全,并保障主机上的数据存储安全性。作为主机的外围设备,HSM提供加解密功能,并实现密钥的管理,报文验证及个人识别码(PIN)的在线实时加密。它还支持标准VISA卡的操作,可产生并校验PVV(口令校验码)和CVV(卡片校验码)。
HSM通过物理上的锁、电子开关及轮巡式的防篡改机制来实现物理上的密钥安全防范。
HSM提供大量标准函数,并可按特定要求进行特殊的用户加密功能。其标准函数包括:
- 校验个人识别码(PIN),例如在使用银行帐户和信用卡时;
- 产生加密卡的卡校验值(CVV),比如储蓄卡、信用卡等的卡校验值;
- PIN请求,得以从卡片的管理中心处获得新的PIN码;
- 为电子商务系统的资金传送提供适时密码管理;
- 为非电子商用系统的资金传送提供密码管理;
- 产生并校验在电信网络上传递的报文的认证码;
HSM通常与主机相连,不需要操作指令。HSM在收到主机的命令后即开始执行加解密工作。主机靠发指令信息命令HSM进行工作,HSM处理指令信息并发出应答信息。
HSM可以解决其一直以来存在着的密钥和算法无法保密、无法抗分析的问题。另外,主机安全系统提供了一个统一的加密平台。各主机应用系统的用户可基于该平台自行开发完善的应用系统,无需再更多地在算法和密钥的存放安全性以及动态防跟踪上进行大量的工作。
主机安全系统可根据用户的实际需求,在保障系统安全性的前提下,对相应的功能接口进行调整,与用户的业务系统实现无缝的集成。基于这样的安全平台,用户可将绝大部分的开发力量转移到应用业务系统的开发上,减轻了系统开发的投入。
图一 HSM系统的应用
系统特点
- 安全性好,采用国密的加密芯片;
- 处理能力高,单机处理在20,000笔/分以上;
- 结构紧凑,稳定性高,兼容各种主机类型;
- 严格的层次化密钥管理;
- 严格的设备、人员的身份认证;
- 可扩展性强,单机内部的运算模块扩充可满足大业务量的需要;
所谓56所和30所加密机,功能没有什么特别区别,也说不上谁好谁差,目前金融加密机只可选择其一,用来替换国外加密机recal。
目前所说的国际接轨,是指使用的加密算法都采用ISO标准ansi9.8,ansi9.9算法。
ansi9.8算法是用来加密PIN,而9.9是用来保护数据报文的也称MAC算法。而3DES算法是较底层的算法基础,ansi9.9,ansi9.8都使用了3DES算法运算。
而加密机所使用的指令,每家银行可以定义自己使用的加密指令集,但目前大部分银行使用RECAL格式指令集的较多。
具说目前国内金融数据加密机有4家,北京江南歌盟科技有限公司,30所,56所,数据所。各有优势,功能上歌盟比较厉害,听说香港和澳门的银行使用他们的设备,好像伊朗石油用的也是他们的设备。