您好,欢迎访问三七文档
银行常用加密算法介绍2011.5加密过程解释什么是加密?是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已处理的信息,但因不知解密的方法,仍然无法了解信息的内容。在密码学中,加密是将明文信息隐匿起来,使之在缺少特殊信息时不可读。虽然加密作为通信保密的手段已经存在了几个世纪,但是只有那些对安全要求特别高的组织和个人才会使用它。在20世纪70年代中期,强加密(StrongEncryption)的使用开始从政府保密机构延伸至公共领域,并且目前已经成为保护许多广泛使用系统的方法,比如因特网电子商务、手机网络和银行自动取款机等.加密作用加密可以用于保证安全性,但是其它一些技术在保障通信安全方面仍然是必须的,尤其是关于数据完整性和信息验证;例如,信息验证码(MAC)或者数学签名。另一方面的考虑是为了应付流量分析。名词解释密钥(KEY)密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据.主密钥(MMK)相当于密钥钥匙,该密钥主要起到解密下发密钥,不参与具体数据加解密。工作密钥(DK)参加具体工作的密钥,该密钥通过报文传送下发到本地,通过主密钥解密后,还原成真正的密钥,再具体参与数据的加解密。PIK参与密钥加密的工作密钥MAK用于生成交易报文合法性验证数据(MAC)的密钥名词解释PINblockPIN格式块对称算法对称式加密就是加密和解密使用同一个密钥,通常称之为“SessionKey”这种加密技术目前被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法.非对称算法非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。DES加密算法数据加密算法(DataEncryptionAlgorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。通常,自动取款机(AutomatedTellerMachine,ATM)都使用DEA。它出自IBM的研究工作,IBM也曾对它拥有几年的专利权,但是在1983年已到期后,处于公有范围中,允许在特定条件下可以免除专利使用费而使用。1977年被美国政府正式采纳。DES的原始思想可以参照二战德国的恩格玛机,其基本思想大致相同。传统的密码加密都是由古代的循环移位思想而来,恩格玛机在这个基础之上进行了扩散模糊。但是本质原理都是一样的。现代DES在二进制级别做着同样的事:替代模糊,增加分析的难度。DES使用一个56位的密钥以及附加的8位奇偶校验位,产生最大64位的分组大小。这是一个迭代的分组密码,使用称为Feistel的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES使用16个循环,使用异或,置换,代换,移位操作四种基本运算。3DES加密算法3DES又称TripleDES,是DES加密数据的一种模式,它使用3条56位的密钥对,数据进行三次加密。数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法,并于1981年被ANSI组织规范为ANSIX.3.92。DES使用56位密钥和密码块的方法,而在密码块的方法中,文本被分成64位大小的文本块然后再进行加密。比起最初的DES,3DES更为安全。3DES(即TripleDES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文,这样,设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密表,这样,3DES加密过程为:C=Ek3(Dk2(Ek1(P)))3DES解密过程为:P=Dk1((EK2(Dk3(C)))数据传输安全控制的基本要求数据传输安全控制要求包括以下五个方面:a)密钥管理机制:在技术上实施严格和可靠的密钥分配过程。b)个人标识码(PIN)的加密及转换机制:不允许PIN的明码在通信线路上和人工可操作的存储媒体上出现。c)对交易报文作来源正确性鉴别的机制(MAC)。d)所有入网机构采用硬件加密装置。e)点对点的数据加解密网络机制。数据加密传输环境的基本要求报文数据由入网机构进入CUPS前应已被加密。入网机构从CUPS中得到的报文数据也是加密数据。网络中CUPS的加密机与各入网机构加密机组成了一个点对点的数据加解密网络。CUPS与各联网入网机构分别约定数据密钥。各层次密钥简介各层密钥的结构、生成方法、加密解密对象、存储地点、长度、被保护方式等表示如上:密钥的产生主密钥的产生主密钥用人工方式输入。主密钥由三部分构成,分别由三个人掌管。为了保证输入的正确性,每一部分的密钥必须输入两次,且两次输入必须一致,否则输入失败。在三个人分别输入三部分密钥后,加密机作奇偶校验检查。奇偶校验正确时,加密机产生主密钥。主密钥必须储存在硬件加密机中,受硬件设备的保护。一旦硬件加密机受到非授权的操作,主密钥会自动销毁。成员主密钥(MMK)的产生MMK由CUPS和入网机构各自产生一部分,分别输入到双方的加密机中合成MMK。也可由双方商定MMK的产生办法。数据密钥的产生PIK与MAK统称为数据密钥,由硬件加密机中的随机发生器产生。密钥产生后,硬件加密机将检查密钥的有效性。弱密钥和半弱密钥将被剔除。CUPS的加密机产生数据密钥,入网机构接收和储存CUPS发来的数据密钥。当入网机构需要新密钥的时侯,必须向CUPS发出密钥重置申请报文。密钥保存示意图成员密钥一般通过设备管理员输入到端机的密码键盘中,PIN密钥、MAC密钥通过密钥申请交易,主机从加密机中取得传送到端机主机前置机负责密钥处理加密机主密钥成员密钥PIN密钥MAC密钥自助设备成员密钥PIN密钥MAC密钥PIN的加密和解密当报文经受理方进入银行卡网络时,持卡人的个人标识码(PIN)已经用受理方的PIK加密。CUPS将PIN用受理方的PIK解密后,立即用发卡方的PIK加密,再发往发卡方。PIN是以64位二进制数参与加密和解密运算的,PIN的明码在这个数中的分布,称为PIN数据块。在CUPS和入网机构之间,PIN数据块符合《ISO9564-1Banking—PersonalIdentificationNumberManagementandSecurity》,其格式如下图所示:注1:C-控制码%B0000注2:N-PIN的长度(4-bit)注3:P-4-bit二进制PIN的数码注4:P/F-4-bit二进制PIN的数码/FILLER注5:4-bit%B1111(FILLER)PINBLOCKPIN的格式应符合ISO公布的ANSIX9.8标准中PIN的两种格式之一:——ANSIX9.8格式(不带主账号信息)明文PIN123456,则PINBLOCK为0x060x120x340x560xFF0xFF0xFF0xFFPINBLOCK——ANSIX9.8格式(带主账号信息)PINBLOCK为PIN按位异或主账号(PAN)。PAN格式如下表所示:PIN明文:123456磁卡上的PAN:123456789012345678截取下的PAN:678901234567则用于PIN加密的PAN为:0x000x000x670x890x010x230x450x67则PINBLOCK为:0x060x120x340x560xFF0xFF0xFF0xFF异或:0x000x000x670x890x010x230x450x67结果为:0x060x120x530xDF0xFE0xDC0xBA0x98PIN的加密方法将根据上述步骤生成的PINBLOCK输入到硬件加密机中,并与存储在硬件加密机中的PIK用单倍长密钥算法或双倍长密钥算法计算,即可得到PIN的密文。联机报文MAC的计算方法报文来源正确性鉴别(MAC-MessageAuthenticationCode)是一种判别报文来源是否正确,以及报文在发送途中是否被篡改的计算方法。MAC算法取自于《ISO8731-1992ApprovedAlgorithmsforAuthentication》。MAC报文域的选择MAC域的选择采用系统约定的方式,MAC算法采用密文块链接(CBC)的模式。参与MAC计算的数据元集,一般包括以下数据域:——具有唯一性的数据域(流水号、日期、时间等)——表征报文特征的数据域(报文类型、交易种类等)——交易相关数据域(卡号、金额、应答码等)MAC字符的选择对所选择的MAC报文域,应进一步作字符处理。除去一些冗余信息,以提高MAC的质量。处理方法如下:a)带长度值的域在计算MAC时应包含其长度值信息;b)在域和域之间插入一个空格;c)所有的小写字母转换成大写字母;d)除了字母(A-Z),数字(0-9),空格,逗号(,)和点号(.)以外的字符都删去;e)删去所有域的起始空格和结尾空格;f)多于一个的连续空格,由一个空格代替。MAB组成块MAB计算.txt,函数是一个cb8583报文处理mac的例子。MAC块(MAB)的构成数据从报文中选择出来后,经MAC字符选择处理,然后构成MAB(MessageAuthenticationBlock)。构成MAB的方法是:将MAC字符选择处理后的数据按64bit划分成64bit的块,一直划分到数据的最后一块,它的位数小于或等于64bit,不满64bit时补二进制0。单倍长密钥算法(X9.9CBC)将MAB中的每8个字节分为一组(最后一组如不足8个字节,则右补0X00),用MAK作为单倍长密钥依次进行如下操作:a)进行单倍长密钥运算;b)将运算结果与后一组8个字节的MAB异或,结果取代后一组,继续进行操作。对最后一组进行单倍长密钥运算,得出8个字节的加密值。但有一点需要注意,由于有可能在重置PIN密钥时,新产生的PIN密钥是128字节的双倍长密钥,因此此时计算请求和应答报文中的MAC值都应采用双倍长密钥算法。MACX9.19计算方法密钥长度:双倍长MBK:整个传输报文体加密过程:将MAB中的每8个字节分为一组(最后一组如不足8个字节,则右补0X00),用MAK1为双倍长密钥的前半部分,MAK2为双倍长密钥的后半部分。依次进行如下操作:a)利用MAK1进行单倍长密钥运算;b)将运算结果与后一组8个字节的MAB异或,结果取代后一组,继续进行操作。对最后一组进行双倍长密钥运算,得出8个字节的加密值。X9.19算法的例子JSDFun.java中getMACstr是一个9.19计算的例子。WEB自助中的应用密码键盘介绍:目前我们的密码键盘的结构:主密钥区(0-15)工作密钥区(0-15)支持算法3DES算法密码键盘支持函数更新密钥重置密钥加密数据解密数据取PIN数据取明文字符WEB应用上的调用selectmainkey:[function(o){o.undef()},'selectmainkeyover'],selectworkkey:[function(o){o.undef()},'selectworkkeyover'],updatemainkey:[function(o){o.undef()},'updatemainkeyover','dataobject'],updateworkkey:[function(o){o.undef()},'updateworkkeyover','dataobject'],inputpin:[func
本文标题:银行常用算法介绍
链接地址:https://www.777doc.com/doc-1973333 .html