密钥系统及CA系统的使用(下集)作者张活林tykensky@163.com1、密钥算法介绍2、非对称密钥管理技术3、对称密钥管理技术4、捷德密钥系统介绍5、加密机介绍6、发卡系统介绍目录一、密钥算法介绍1、对称算法,指加密密钥和解密密钥相同的密码算法。常见算法包括DES、IDEA、RC2、AES、SMS4等。2、非对称算法,指加密密钥和解密钥不相同的密码算法。常见算法包括RSA、DH、DSA、ECDSA、ECC等。3、摘要算法,指把任意长的输入消息数据转化成固定长度的输出数据的一种密码算法,又称散列函数、哈希函数或杂凑函数、单向函数。常用见的摘要算法包括MD5、SHA1等。算法分类数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。下面说了一个易懂的例子:数字签名1、活林哥有两把钥匙,一把是公钥,另一把是私钥。2、活林哥把公钥送给他的朋友们----老莫、朴哥和雄二----每人一把。3、雄二给活林哥写信,写完后用活林哥的公钥加密,达到保密的效果。4、活林哥收信后,用私钥解密,看到信件内容。5、活林哥给雄二回信,写完后用Hash函数,生成信件的摘要(digest)。6、然后,活林哥使用私钥,对这个摘要加密,生成数字签名(signature)。7、活林哥将这个签名,附在信件下面,一起发给雄二。8、雄二收信后,取下数字签名,用活林哥的公钥解密,得到信件的摘要。由此证明,这封信确实是活林哥发出的。9、雄二再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。10、复杂的情况出现了。朴哥想欺骗雄二,他偷偷使用了雄二的电脑,用自己的公钥换走了活林哥的公钥。因此,他就可以冒充活林哥,写信给雄二。11、雄二发现,自己无法确定公钥是否真的属于活林哥。他想到了一个办法,要求活林哥去找证书中心(certificateauthority,简称CA),为公钥做认证。证书中心用自己的私钥,对活林哥的公钥和一些相关信息一起加密,生成数字证书(DigitalCertificate)。12、活林哥拿到数字证书以后,就可以放心了。以后再给雄二写信,只要在签名的同时,再附上数字证书就行了。13、雄二收信后,用CA的公钥解开数字证书,就可以拿到活林哥真实的公钥了,然后就能证明数字签名是否真的是活林哥签的。二、非对称密钥管理技术借/贷/电子现金中非对称密钥采用了两级密钥管理工作体系。1、根CA系统(证书授权CertificateAuthority)•该系统主要用于生成根CA证书;接受发卡行证书申请,为发卡行签发公钥证书;向收单行发布根CA公钥,通过收单行将根CA公钥分发到受理终端。2、发卡行CA系统•发卡行CA系统是整个系统的安全核心系统,主要负责完成发卡行证书的申请、管理、IC卡应用相关的密钥管理,同时负责分发各类密钥到卡片制造商、卡片个人化中心及业务前置交易加密机等。3、密钥种类•(1)根CA公钥,由认证中心产生,以公钥证书文件形式下发。发卡行用于验证发卡证书的有效性。•(2)根CA私钥,由认证中心产生,存储在加密机中。用于签发发卡行公钥证书。•(3)发卡行公钥,由发卡行产生,并经过CA中心签发后形成发卡行公钥证书。用于发卡时装载到IC卡中。•(4)发行卡私钥,由发卡行产生,并通过加密机密钥加密后存储在主机数据库中。用于签发IC卡静态数据签名及IC卡公钥证书•(5)IC卡公钥,采用DDA认证方式的卡片需要此密钥,由发卡行私钥签发形成IC卡公钥证书存储在IC卡中。•(6)IC卡私钥,采用DDA认证方式的卡片需要此密钥,用于IC卡与终端进行DDA认证。4、证书格式•金融IC卡应用非对称密码体系中主要涉及三种证书:根CA证书、发卡行证书和IC卡证书。(1)根CA证书格式•根CA证书包括两大部分,未签名根CA公钥输出扩展是根CA公钥文件的第一部分,自签名根CA是根CA公钥文件的第二部分。(2)发卡行证书格式•发卡行证书为根CA对发卡行证书数据进行加密后的数据,加密运行输入数据格式:B||MSG1||H||E,其中B=0x6A,E=0xBC,MSG1为数据信息,H为Hash值,如下表(3)发卡行证书格式•IC卡证书为发卡行私钥对IC卡证书数据进行加密后的数据。格式包括静态签名证书格式(SDA卡)和动态签名证书格式(DDA卡)两种。•1)静态签名证书格式•1)动态签名证书格式5、脱机数据动态认证(DDA)•在动态数据认证在卡片行为分析前执行。在这种方式下,IC卡将来自卡片的动态数据以及由动态数据认证数据对象列表(DDOL)所标识的终端数据生成一个数字签名。6、雄帝Qpboc卡流程介绍•接触了qpboc卡应用有差不多三年了,可惜对此流程没有具体的了解,只是一昧简单地使用,深有感愧,于是花了几天时间,好好研究整个流程,并把心得分享于大家,希望对大家有帮助。怎样确定支持那些脱机数据认证?在完成取处理选项(GPO)后会返回应用交互特征(AIP)做脱机数据认证需要那些输入项?1.认证中心公钥索引(Tag:8F)2.认证中心公钥指数3.发卡行公钥证书(Tag:90)4.发卡行公钥指数(Tag:9F32)5.发卡行公钥余数(Tag:92)6.IC卡公钥证书(Tag:9F46)7.IC卡公钥指数(Tag:9F47)8.IC卡公钥余数(Tag:9F48)9.签名的静态应用数据SAD(Tag:93)10.静态数据认证标签列表(Tag:9F4A)11.应用主帐号(Tag:5A)12.应用PAN序列号(Tag:5F34)做脱机数据认证需要那些输入项?13.应用交互特征(Tag:82)14.DDOL(Tag:9F49)15.CDOL1(Tag:8C)16.CDOL1(Tag:8D)17.PDOL(Tag:9F38)如何确定使用那个认证中心公钥?如何恢复发卡行公钥?如何做SDA验证?•总体步骤:如何做SDA验证?如何恢复IC卡公钥?如何做DDA验证?如何做DDA验证?如何做CDA验证?如何做CDA验证?联机验证•再等下集吧三、对称密钥管理技术CPU卡:也称智能卡,卡内的集成电路中带有微处理器CPU、存储单元(包括随机存储器RAM、程序存储器ROM(FLASH)、用户数据存储器EEPROM)以及芯片操作系统COS。装有COS的CPU卡相当于一台微型计算机,不仅具有数据存储功能,同时具有命令处理和数据安全保护等功能。CPU卡概述1、命令APDU格式2、响应APDU格式3、密钥分散算法•密钥分散算法简称DIVERSIFY,是指将一个双长度的密钥MK,对分散数据进行处理,指导出一个双长度的密钥DK。•推导DK左半部分的方法是:•将分散数据的最右8byte作为输入数据;•将MK作为加密密钥;•用MK对输入数据进行3DES运算。•推导DK右半部分的方法是:•将分散数据的最右8byte求反,作为输入数据;•将MK作为加密密钥;•用MK对输入数据进行3DES运算。4、MAC的计算•按照如下的方式使用单重或三重DEA加密方式产生MAC:•第一步:取8个字节的16进制数字’0’作为初始变量。•第二步:按照顺序将以下数据连接在一起形成数据块:•──CLA,INS,P1,P2,Lc1)•──所有在《中国金融集成电路(IC)卡规范》第2部分:应用规范中定义的数据。•──在命令的数据域中(如果存在)包含明文或加密的数据。(例:如果要更改个人密码,加密后的个人密码数据块放在命令数据域中传输)•第三步:将该数据块分成8字节为单位的数据块,标号为D1,D2,D3,D4等。最后的数据块有可能是1-8个字节。•第四步:如果最后的数据块长度是8字节的话,则在其后加上16进制数字’8000000000000000’,转到第五步。•如果最后的数据块长度不足8字节,则在其后加上16进制数字’80’,如果达到8字节长度,则转入第五步;否则在其后加入16进制数字’0’直到长度达到8字节。•第五步:对这些数据块使用MAC过程密钥进行加密,过程密钥按照8.3.2.3描述的方式产生。如果安全报文传送支持单长度的MACDEA密钥,则依照图11的方式使用MAC过程密钥来产生MAC(根据在第二步中产生的数据块长度的不同,有可能在计算中会多于或少于四步)。•如果安全报文传送的处理支持双长度MACDEA密钥,则使用MAC过程密钥A和B(MAC的产生如图12中所示),(根据第二步产生的数据块的长度,计算过程有可能多于或少于四步)。5、MAC/TAC的计算•MAC/TAC的产生使用以下单倍长DEA算法:•第一步:将一个8个字节长的初始值(InitialVector)设定为16进制的’0x0000000000000000’。•第二步:将所有的输入数据按指定顺序连接成一个数据块。•第三步:将连接成的数据块分割为8字节长的数据块组,标识为D1,D2,D3,D4等等。分割到最后,余下的字节组成一个长度小于等于8字节的最后一块数据块。•第四步:如果最后一个数据块长度为8字节,则在此数据块后附加一个8字节长的数据块,附加的数据块为:16进制的’0x8000000000000000’。如果最后一个数据块长度小于8字节,则该数据块的最后填补一个值为16进制’0x80’的字节。如果填补之后的数据块长度等于8字节,则跳至第五步。如果填补之后的数据块长度仍小于8字节,则在数据块后填补16进制’0x00’的字节至数据块长度为8字节。•第五步:MAC的产生是通过上述方法产生的数据块组,由过程密钥进行加密运算,过程密钥的产生方法见图B-3。TAC的产生是通过上述方法产生的数据块组,由DTK密钥左右8位字节进行异或运算的结果进行加密运算。MAC或TAC的算法见图B-4描述I2I3I5DEAKMADEAKMADEA010204+D2+D3Legend:I=InputDEA=DataEncryptionAlgorithm(enciphermentmode)O=OutputD=DatablockKMA=MACSessionKeyA+=Exclusive-ORI4DEAKMA03+D4KMAInitialVector+I1=D1MAC6、消费交易7、圈存交易四、捷德密钥系统介绍StarKMS2006密钥管理系统的主要功能是在保证安全性的基础上,管理智能卡应用系统中的密钥,实现密钥的生成、导入、备份、恢复、更新、导出、下载和销毁等功能。同时,密钥受到严格的权限控制,不同机构或人员系统和密钥的操作与访问拥有不同的权限。通常,系统会把不同的权限赋给系统定义的不同的用户,再把用户与具体的人员关联。由于密钥在智能卡应用系统的安全性上的重要性,所以StarKMS2006密钥管理系统是其中的关键和核心。详细操作请查看《雄帝KMS_捷德密钥系统操作手册》。另外,此密钥系统需要外设,8张母卡、2个pcsc接触式读写器和ukey。如何使用捷德密钥系统•捷德密钥系统准备工作:•(1)捷德密钥软件和注册码。•(2)8张母卡•(3)UKEY一个。•(4)两台PCSC接触式读写器。•(5)《雄帝KMS_捷德密钥系统操作手册》•(6)准备好需要导入的密钥表。•(7)加密钥一台,用来导入加密机操作。(可选)五、加密机介绍(1)江南科友公司,代表加密机型号,SJL06E、SJJ1310、SJJ1313(2)江南歌盟公司,代表加密机型号,SJL22(2)卫士通公司,代表加密机型号,SJL05加密机是通过国家商用密码主管部门鉴定并批准使用的国内自主开发的主机加密设备,加密机和主机之间使用TCP/IP协议通信,所以加密机对主机的类型和主机操作系统无任何特殊的要求。加密机服务厂商1、加密机的基本应用•电子钱包IC卡目前都使用对称算法,加密机最基本支持DES对称算法功能。•IC卡的所存储每条密钥长度,设计为16字节。•加密机要支持以下几个接口:•(1)密钥的导入功能;•(2)密钥的分散导出功能;•(3)加解密数据功