本文将我所知的在金融POS上涉及到的标准罗列出来,方便查询,也方便新入门者参考。
水平有限,如有错漏,望海涵,并请不吝赐教!
金融POS涉及的技术标准
标准文档 | 简单说明 |
ISO7810 ISO7811 ISO7812 ISO7813 | 磁条卡相关国际标准 |
ISO7816 | IC卡相关国际标准 |
ISO14443 | 非接触卡(金融NFC卡)国际标准 |
ANSI X9.24 | 定义了密钥管理方法,包括如Fixed Key, Master-Session Key, DUKPT等定义 对应的国际标准为ISO11568 |
ANSI X9 TR-31 | 定义了如何将对称密钥进行封装的对称密钥交换标准,这是PCI认可的对称密钥交换方式。 |
ANSI X9 TR-34 | 定义了如何基于非对称加密技术的安全的密钥交换,这是PCI任何的密钥交换方式。 |
ISO9797-1 | 信息校验码(MAC)算法的国际标准,里面定义了若干种MAC算法,金融POS使用了其中一两种。 |
ISO9564 | PINBLOCK格式标准,及PINBLOCK加密方法的国际标准,里面定义了Format0-4共5种PINBLOCK格式。金融POS一般使用其中的一种或数种。 |
ISO10116 | 定义了对称密码算法的几种计算模式,如ECB/CBC/CFB/OFB/CTR |
NIST SP800-22 | 定义了随机数的统计学测试标准,依据这个标准有一个测试工具STS,使用STS可以测试出数据的随机性 |
NIST SP800-38B | MAC算法标准,与ISO9797-1等效 |
NIST SP800-90A | 定义了几种随机数算法,如:HASH-DRBG/CTR-DRBG/HMAC-DRBG,PCI委员会要求金融POS需要使用符合这个标准的随机数算法 |
NIST SP800-175B | 规定了联邦政府密码学实现指导,规定了密码学设备应该使用的算法标准,比如:哪些算法不应被使用,RSA算法应该使用多少位以上的位数等。 |
ITU-T X.509 | 定义了公钥证书的格式和内容标准,几乎所有数字证书都遵循此标准 |
金融POS关注的几类数据
- PAN - 用户的主账户,即:银行卡号,这个数据在交易流程中会被用到。
- PIN - 用户的银行卡密码,即:银行卡取款密码,在交易流程中会被用到。
- 密钥 - 用来对PAN或PIN等数据进行加密或计算MAC等的对称密钥
这几类数据都需要进行严格的保护,但保护方式各有差异。
金融POS涉及常见算法
- MAC算法 - 用来确保数据从一端到另一端的完整性与合法性,比如交易数据中的帐号、金额等不能被篡改,就需要MAC。
- PINBLOCK算法 - 用来将PIN密码按规定的格式进行编码,这样银行后端能使用统一的格式来解密出PIN。
- PINBLOCK加密算法 - 用来对PINBLOCK进行加密的算法,这样在公开网络上传输的是经过加密后的PIN。
- 随机数算法 - 很多算法中都会用到随机数,甚至密钥的产生通常也是用随机数的,随机数必须具备不可预测的特点。
金融POS中常见的加密算法
- DES/TDES算法 - 2019年(PCI-V5)之前的所有POS都支持DES/TDES算法
- AES算法 - 2019年(PCI-V5)之后的所有POS都支持AES算法,NIST、PCI等多个组织都已经将DES密码视为安全性较弱
- SHA256 - 金融POS通常用它来进行数字签名/验签等,SHA1及MD5在被王小云公布破解方法后宣告不安全。
- RSA2048 - 金融POS要求使用更高的RSA长度,通常大家使用RSA2048。以前使用RSA1024,但已经被宣告太弱。
- EC算法 - 椭圆曲线算法,比RSA更加优秀的非对称加密算法,今年使用频率有所上升。256bit长度的EC算法密钥强度已经远远高于RSA2048.
- SM2 - 中国国产密码算法家族中的一种非对称加密算法,是EC算法的一个实例,长度为256bit。
- SM3 - 中国国产密码算法家族中的一种HASH(也叫杂凑)算法,强度相当于SHA256
- SM4 - 中国国产密码算法家族中的一种对称加密算法,块长度为128bit,强度相当于AES-128.