1、 银行常用加密算法介绍银行常用加密算法介绍 2011.5加密过程解释加密过程解释l什么是加密? 是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已处理的信息,但因不知解密的方法,仍然无法了解信息的内容。在密码学中,加密是将明文信息隐匿起来,使之在缺少特殊信息时不可读。虽然加密作为通信保密的手段已经存在了几个世纪,但是只有那些对安全要求特别高的组织和个人才会使用它。在20世纪70年代中期,强加密(Strong Encryption)的使用开始从政府保密机构延伸至公共领域,并且目前已经成为保护许多广泛使用系统的方法,比如因特网电子商务、手机网络和银行自动取款机等. l加密作用 加密
2、可以用于保证安全性,但是其它一些技术在保障通信安全方面仍然是必须的,尤其是关于数据完整性和信息验证;例如,信息验证码(MAC)或者数学签名。另一方面的考虑是为了应付流量分析。名词解释名词解释l密钥(KEY) 密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据.l主密钥(MMK) 相当于密钥钥匙,该密钥主要起到解密下发密钥,不参与具体数据加解密。l工作密钥(DK) 参加具体工作的密钥,该密钥通过报文传送下发到本地,通过主密钥解密后,还原成真正的密钥,再具体参与数据的加解密。lPIK 参与密钥加密的工作密钥lMAK 用于生成交易报文合法性验证数据(MAC)的密钥名词解释名词解
3、释lPIN block PIN 格式块l对称算法 对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加密技术目前被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法.l非对称算法 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 DES 加密算法加密算法l数据加密算法(Data
4、Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用DEA。它出自IBM的研究工作,IBM也曾对它拥有几年的专利权,但是在1983年已到期后,处于公有范围中,允许在特定条件下可以免除专利使用费而使用。1977年被美国政府正式采纳。lDES的原始思想可以参照二战德国的恩格玛机,其基本思想大致相同。传统的密码加密都是由古代的循环移位思想而来,恩格玛机在这个基础之上进行了扩散模糊。但是本质原理都是一样的。现代D
5、ES在二进制级别做着同样的事:替代模糊,增加分析的难度。 lDES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。 3DES 加密算法加密算法l3DES又称Triple DES,是DES加密数据的一种模式,它使用3条56位的密钥对 ,数据进行三次加密。数据加密标准(DES)是
6、美国的一种由来已久的加密标准,它使用对称密钥加密法,并于1981年被ANSI组织规范为ANSI X.3.92。DES使用56位密钥和密码块的方法,而在密码块的方法中,文本被分成64位大小的文本块然后再进行加密。比起最初的DES,3DES更为安全。 l3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文,这样, 设Ek()和D
7、k()代表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) 点对点的数据加解密网络机制。 数据加
8、密传输环境的基本要求数据加密传输环境的基本要求 报文数据由入网机构进入CUPS前应已被加密。入网机构从CUPS中得到的报文数据也是加密数据。网络中CUPS的加密机与各入网机构加密机组成了一个点对点的数据加解密网络。CUPS与各联网入网机构分别约定数据密钥。各层次密钥简介各层次密钥简介各层密钥的结构、生成方法、加密解密对象、存储地点、长度、被保护方式等表示如上:密钥的产生密钥的产生l主密钥的产生 主密钥用人工方式输入。主密钥由三部分构成,分别由三个人掌管。为了保证输入的正确性,每一部分的密钥必须输入两次,且两次输入必须一致,否则输入失败。在三个人分别输入三部分密钥后,加密机作奇偶校验检查。奇偶校
9、验正确时,加密机产生主密钥。主密钥必须储存在硬件加密机中,受硬件设备的保护。一旦硬件加密机受到非授权的操作,主密钥会自动销毁。l成员主密钥(MMK)的产生 MMK由CUPS和入网机构各自产生一部分,分别输入到双方的加密机中合成MMK。 也可由双方商定MMK的产生办法。l数据密钥的产生 PIK与MAK统称为数据密钥,由硬件加密机中的随机发生器产生。密钥产生后,硬件加密机将检查密钥的有效性。弱密钥和半弱密钥将被剔除。 CUPS的加密机产生数据密钥,入网机构接收和储存CUPS发来的数据密钥。当入网机构需要新密钥的时侯,必须向CUPS发出密钥重置申请报文。密钥保存示意图密钥保存示意图 成员密钥一般通过
10、设备管理员输入到端机的密码键盘中,PIN密钥、MAC密钥通过密钥申请交易,主机从加密机中取得传送到端机主机前置机负责密钥处理 加密机主密钥成员密钥PIN密钥MAC密钥自助设备成员密钥PIN密钥MAC密钥PIN的加密和解密的加密和解密 当报文经受理方进入银行卡网络时,持卡人的个人标识码(PIN)已经用受理方的PIK加密。CUPS将PIN用受理方的PIK解密后,立即用发卡方的PIK加密,再发往发卡方。 PIN 是以 64 位二进制数参与加密和解密运算的, PIN 的明码在这个数中的分布, 称为PIN数据块。在CUPS和入网机构之间,PIN数据块符合ISO 9564-1 BankingPersona
11、l Identification Number Management and Security,其格式如下图所示: 注1:C控制码 B0000 注2:NPIN 的长度(4-bit) 注3:P4-bit 二进制 PIN 的数码 注4:P/F4-bit 二进制 PIN 的数码 / FILLER 注5:4-bit B1111(FILLER) PIN BLOCK PIN的格式应符合ISO公布的ANSI X9.8标准中PIN的两种格式之一: ANSI X9.8 格式(不带主账号信息) 明文PIN 123456, 则PIN BLOCK 为0 x06 0 x12 0 x34 0 x56 0 xFF 0 xF
12、F 0 xFF 0 xFFPIN BLOCK ANSIX9.8 格式(带主账号信息) PIN BLOCK为PIN按位异或主账号(PAN)。 PAN格式如下表所示: PIN 明文:123456 磁卡上的PAN:1234 5678 9012 3456 78 截取下的PAN:6789 0123 4567 则用于PIN加密的PAN为:0 x00 0 x00 0 x67 0 x89 0 x01 0 x23 0 x45 0 x67 则PIN BLOCK 为: 0 x06 0 x12 0 x34 0 x56 0 xFF 0 xFF 0 xFF 0 xFF 异或: 0 x00 0 x00 0 x67 0 x8
13、9 0 x01 0 x23 0 x45 0 x67 结果为:0 x06 0 x12 0 x53 0 xDF 0 xFE 0 xDC 0 xBA 0 x98 PIN的加密方法的加密方法 将根据上述步骤生成的PIN BLOCK输入到硬件加密机中,并与存储在硬件加密机中的PIK用单倍长密钥算法或双倍长密钥算法计算,即可得到PIN的密文。联机报文联机报文 MAC 的计算方法的计算方法 报文来源正确性鉴别(MAC-Message Authentication Code)是一种判别报文来源是否正确,以及报文在发送途中是否被篡改的计算方法。 MAC算法取自于ISO8731-1992 Approved Alg
14、orithms for Authentication。 MAC 报文域的选择报文域的选择 MAC域的选择采用系统约定的方式,MAC算法采用密文块链接(CBC)的模式。 参与MAC计算的数据元集,一般包括以下数据域: 具有唯一性的数据域(流水号、日期、时间等) 表征报文特征的数据域(报文类型、交易种类等) 交易相关数据域(卡号、金额、应答码等) MAC 字符的选择字符的选择 对所选择的MAC报文域,应进一步作字符处理。除去一些冗余信息,以提高MAC的质量。处理方法 如下: a) 带长度值的域在计算 MAC 时应包含其长度值信息; b) 在域和域之间插入一个空格; c) 所有的小写字母转换成大写字
15、母; d) 除了字母(A-Z),数字(0-9),空格,逗号(,)和点号(.)以外的字符都删去; e) 删去所有域的起始空格和结尾空格; f) 多于一个的连续空格,由一个空格代替。 MAB组成块组成块MAB计算.txt,函数是一个cb8583报文处理mac的例子。MAC 块块(MAB)的构成的构成 数据从报文中选择出来后,经MAC字符选择处理,然后构成MAB(Message Authentication Block)。构成MAB的方法是: 将MAC字符选择处理后的数据按64bit划分成64bit的块,一直划分到数据的最后一块,它的位数小于或等于64bit,不满64bit时补二进制0。单倍长密钥算
16、法(单倍长密钥算法(X9.9 CBC) 将MAB中的每8个字节分为一组(最后一组如不足8个字节,则右补0X00),用MAK作为单倍长密钥 依次进行如下操作: a) 进行单倍长密钥运算; b) 将运算结果与后一组 8 个字节的 MAB 异或,结果取代后一组,继续进行操作。对最后一组进行单倍长密钥运算,得出 8 个字节的加密值。 但有一点需要注意,由于有可能在重置PIN密钥时,新产生的PIN密钥是128字节的双倍长密钥,因此此时计算请求和应答报文中的MAC值都应采用双倍长密钥算法。MAC X9.19计算方法计算方法 密钥长度:双倍长MBK:整个传输报文体加密过程:将MAB中的每8个字节分为一组(最
17、后一组如不足8个字节,则右补0X00),用MAK1为双倍长密钥的前半部分,MAK2为双倍长密钥的后半部分。 依次进行如下操作: a) 利用MAK1进行单倍长密钥运算; b) 将运算结果与后一组 8 个字节的 MAB 异或,结果取代后一组,继续进 行操作。对最后一组进行双倍长密钥运算,得出 8 个字节的加密值。 X9.19算法的例子算法的例子JSDFun.java中getMACstr是一个9.19计算的例子。WEB 自助中的应用自助中的应用密码键盘介绍: 目前我们的密码键盘的结构: 主密钥区 (0-15) 工作密钥区(0-15) 支持算法3DES算法密码键盘支持函数密码键盘支持函数更新密钥重置密
18、钥加密数据解密数据取PIN数据取明文字符WEB 应用上的调用应用上的调用lselectmainkey:function(o)o.undef(),selectmainkeyover,lselectworkkey:function(o)o.undef(),selectworkkeyover,lupdatemainkey:function(o)o.undef(),updatemainkeyover,dataobject,lupdateworkkey:function(o)o.undef(),updateworkkeyover,dataobject,linputpin:function(o)o.und
19、ef(),inputpinover,inputnotify,lgetpin:function(o)o.undef(),getpinover,lencrypt:function(o)o.undef(),encryptover,dataobject,ldecrypt:function(o)o.undef(),decryptover,dataobject,linputdata:function(o)o.undef(),inputdataover,inputnotify,lcloseinput:function(o)o.undef(),closeinputoverWEB上的密钥申请流程上的密钥申请流程
20、JAVA 常用类库介绍常用类库介绍Kits.jar(加密类相关函数)rtl.kits.crypt.des.Des rtl.kits.crypt.des.TripleDesCrypter rtl.kits.crypt.CryptHelper DES算法工具使用算法工具使用DES算法工具使用算法工具使用DES算法工具使用算法工具使用ECB(Electronic Code Book)ECB(Electronic Code Book) 在 ECB 模式中,每块明文都是独立于其他块加密的。虽然这样做比较高效(可以并行执行多个数据块的加密),但这种方法有一个很大的问题。例如,在 ECB 模式中,对相同明文
21、块的加密总是产生相同的密文块,这为某些类型的密码分析攻击打开了方便之门。ECB 方式通常被认为不适合保护敏感数据。 CBC(Cipher Block Chaining)CBC(Cipher Block Chaining) 在 CBC 模式中,文本块是连续加密的,在加密当前明文块之前,用前一次块加密的结果修改当前明文块。这个过程改进了加密的一些特征(例如,相同的明文块不会产生相同的密文块),但是由于其加密过程是连续的,CBC 方式不支持加密的并行化。CBC 方式使用一个称作初始化向量(Initialization Vector,IV)的附加文本来开始链接过程。IV 用于修改被加密的第一个明文块。
22、 CFB (Cipher Feedback )CFB (Cipher Feedback ) 在 CFB 模式中,先加密前一个块,然后将得到的结果与明文相结合产生当前块,从而有效地改变用于加密当前块的密钥。这里密钥的值是不断变化的,这个过程与流加密类似,但是性能则远不如流加密。与 CBC 方式一样,这里要使用一个初始化向量作为加密过程的种子。 OFB(Output Feedback)OFB(Output Feedback) 在 OFB 方式中,使用一个种子或 IV 来开始加密过程。加密种子后,将加密结果与明文块结合产生密文。之后被加密的种子再度被加密,如此重复此过程,直到遍及全部明文。同样,结果类似于流加密。