所批准的算法是基于NIST SP 800-57 Part1 Rev.4第4节中所列出的算法。
Hash函数:只允许SHA2和SHA3家族额算法,输出大小需要>255bit。MD5和SHA-1不能使用。
用于加密和解密的对称密钥算法:必须使用AES(密钥大小>=128位)或TDES(密钥大小>=112位)。
消息验证码(MAC):CMAC或GMAC可以与AES一起使用,也可以使用经过批准的哈希函数和密钥大小>=128的HMAC。
签名算法: DSA, RSA(PKCS1-v1.5或PSS)和ECDSA,密钥长度要求后面会给出。
通过认证的密钥建立方案为:NIST SP800-56A(基于ECC/FCC的密钥协商方案), NIST SP800-56B(基于IFC的密钥协商方案)和SP800-38F(基于AES的密钥加密/封装)
当算法应用于与密钥传输、交换或建立相关的数据保护时,PCI关于算法及最小密钥长度的要求如下。(其它密钥长度和算法可用于非PCI相关的交易):
补充说明:
1. 除特别说明外,在满足PCI安全要求的设备上使用的所有数字签名都禁止使用SHA-1。这包括设备使用的非设备证书和厂商PKI的一部分,并包括厂商根证书。唯一的例外是,在设备启动时ROM上的初始代码可以使用SHA-1验证自己,但所有后续代码必须使用SHA-2验证。
推荐使用SHA-2或更安全的算法用于其他用途,但SHA-1可以与生成HMAC值和代理PANs(带有salt值)一起使用,用于在密钥派生函数(即KDF)中生成密钥。在使用SHA-1的情况下,测试要求中描述的密钥长度最小值仍需要满足。
2. IFC: Integer Factorization Cryptography, 整数分解密码; ECC: Elliptic Curve Cryptography, 椭圆曲线密码体制; FFC: Finite Field Cryptography, 有限域密码.
3. 本附录中指定的其他密钥长度和算法可能支持非PCI相关的交易。它们也不适用于EMV内核;EMV非接触式交易的加密要求由EMVCo和/或支付品牌设定。
密钥加密密钥的强度至少应等于或大于其保护的任何密钥。
这适用于密钥的存储或密钥的装载过程。为了满足这一要求, 以下算法列表中同一行中的密钥强度认为是等价的。
(从上图可以看出AES128的算法强度是大于RSA 2048的,并且和ECC 256持平,如果POS的密钥容器中无需安装AES 192和AES 256的话,根密钥采用128bit的AES密钥即可。但是考虑到扩展性,还是建议密钥容器的根密钥尽量采用256位的AES密钥。)
TDES是指具有非奇偶校验位的TDES密钥。RSA密钥大小指的是模数的大小。ECC密钥大小指的是椭圆曲线上基点的最小阶数,这个阶数应该比域稍微小一点。DSA密钥大小指的是模数大小和large subgroup的最小值。
TLS实现必须避免使用算法不满足安全要求的安全套件。