我们来考虑一个报文中到底什么信息是需要加密的,目前一般的做法是只对账号和密码进行加密(也有只对密码加密的),其他的内容不加密的。对账号和密码加密有个术语,叫PinBlock,即PIN块,就是对账号和密码进行DES加密处理后的一个密文数据块。既然使用了DES算法来加密账号和密码,则必然有个Key来加密,那么我们就把这个Key称为PinKey(PIK),就是专门来加密用户账户和密码的Key。
原文链接:
1、在ATM机上运行的系统叫ATMC,行内与ATMC直接连接的系统叫ATMP,ATMP再(经过ESB)连接核心账务系统。2、在传输过程中是不会出现明文密码的(但报文整体不一定加密,可能是明文带MAC),所以ATMP不会解密密码,而是校验MAC,再将C端加密的密码转换成核心系统加密的密码,这一步是由P端调用加密机API,在硬件加密机中直接完成的。3、核心系统收到P端的报文后,同样调加密机API生成MAC与P端的MAC对比,并对比密码。4、PIK和MAK确实是经过主密钥加密的,但是调加密机API并不需要送PIK和MAK的值,只需要送密钥的名称,所以无论对对PIK/MAK的加解密,还是对PIN和MAC的加解密都是在加密机中完成的,其他应用系统不需要关心。
链接:
zpk:区域pin密钥,银行卡交换系统和银行A、银行B,分别形成一个区域。
转pin是从一把zpk加密转到另一把zpk加密,这两把zpk可能分属两家银行,也可能是同一个银行的?
ATMP:ATM前置机。
ATM加密后给ATMP(这个加密后的值不是pinblock,不是银行系统识别持卡人用的),
ATMP收到之后,再调用加密机,生成pinblock,然后发给收单行。
整个流程,pin不会出现明文。
6种,DES、AES、MD5、RSA、双钥加密、非对称加密。
DES算法
DES(Data Encryption Standard)是一种经典的对称算法。其数据分组长度为64位,使用的密钥为64位,有效密钥长度为56位(有8位用于奇偶校验)。它由IBM公司在70年代开发,经过政府的加密标准筛选后,于1976年11月被美国政府采用,随后被美国国家标准局和美国国家标准协会(American National Standard Institute, ANSI) 承认。
AES算法
1997年1月美国国家标准和技术研究所(NIST)宣布征集新的加密算法。2000年10月2日,由比利时设计者Joan Daemen和Vincent Rijmen设计的Rijndael算法以其优秀的性能和抗攻击能力,最终赢得了胜利,成为新一代的加密标准AES(Advanced Encryption Standard)。
MD5
md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但md2的设计与md4和md5完全不同,那是因为md2是为8位机器做过设计优化的,而md4和md5却是面向32位的电脑。这三个算法的描述和c语言源代码在internet rfcs 1321中有详细的描述
RSA
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
RSA的算法涉及三个参数,n、e1、e2。
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n及e1),(n及e2)就是密钥对。
RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n;
e1和e2可以互换使用,即:
A=B^e2 mod n;B=A^e1 mod n;
双钥加密
双钥技术就是公共密钥加密PKE(Public Key Encryption)技术,它使用两把密钥,一把公共密钥(Public Key)和一把专用密钥(Private Key),前者用于加密,后者用于解密。这种方法也称为“非对称式”加密方法,它解决了传统加密方法的根本性问题,极大地简化了密钥分发的工作量。它与传统加密方法相结合,还可以进一步增强传统加密方法的可靠性。更为突出的是,利用公共密钥加密技术可以实现数字签名。
什么是非对称加密技术
1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。相对于“对称加密算法”这种方法也叫做“非对称加密算法”。
我来简单说一下吧。首先密码的加密不只MD5,比如说我可以先哈希一次,再 MD5,这样就把他尝试的第一步直接锁死了。其次可以将密码与服务数据,业务数据等所有数据分离,放在更深的库里,还有可以设计不同的映射方式,你知道了卡号,但找不到对应的密码,因为内部的算法可以匹配卡号与密码。外部无法接触。当然还有安全等级更高的操作。还有就是危险分析了,在正常的业务中,可以有很多方式分析出是不是正常的操作,在这一步大多数有问题的就可以封死。还有就是大家说的在物理上用U盾这些的,可以加很多层防护,这些要闯进来,那得提前做多少功课啊。
首先:人对数字瞬间记忆,大部分以六位数为界。超过六位数,人就很难记住了。试试记手机号码,比银行卡密码难记吧?其次:密码是六位数,能够成90万种密码,可以合乎我们庞大的人口基数对密码的需要了。再次:六位数的密码很难攻破,安全系数比较高。如果四位数,密码排列类型变少,安全性会被拉低。但八位数,虽然提升安全性,但增加了记忆难度,密码的丢失率就会上升。所以无论从哪方面来说,六位数的银行卡密码都是最优的选择了。诚然,6位数的密码和字母数字组合的密码相比,安全系数确实会低一些,但安全性和便利性本来就是矛盾的。
如果换成复杂密码,就会出现很多人忘记密码的情况,银行卡密码这样关键的东西,又不能仅仅通过手机验证码远程修改,所以忘记密码会变得非常麻烦。其实,6位数的密码真的有那么的不安全吗?如果有很大的安全漏洞,银行早就关门了。我们做一道数学题,000000~999999一共有100万个数字,除去123456这样的弱密码,至少有80万有效密码,攻击者破译的概率很低。而输错三次密码锁卡的机制又很好的防止了暴力破解。所以说,银行通过了其他机制弥补了6位数密码不安全的问题。最后很关键的,一点,如果密码形态变化了,ATM机岂不是全部要拆掉了,这成本可就太大啦。