信用卡安全代码在理论上是否已经不安全(如果不是完全损坏)?

信息安全 加密 信用卡 金融
2021-08-31 03:23:08

我正在阅读关于卡安全代码(CSC、CVD、CVV、CVC、V 代码、SPC、CID、CV2、CVN2、CAcronym2 等)的维基百科文章,并且某个断言引起了我的注意(强调我的):

每张卡(表 1 和表 2)的 CSC 由发卡机构在发卡时生成。它的计算方法是使用只有发卡机构知道的加密密钥对银行卡号到期日期(卡上印有的两个字段)进行加密,并将结果十进制化。

该描述听起来很像 HMAC,仅使用已经公开的信息作为主要输入 - 但无论如何,鉴于存在的大量信用卡号码(带有卡安全码),肯定可以推导出发卡人的现在加密密钥?(它是对称加密还是非对称加密有关系吗?)

如果是真的,那么我很惊讶系统是这样设计的,而不是为每张卡生成一个唯一的密钥或数字,CSC 是从中派生出来的,而不是机构范围的密钥——我的问题假设可以从给定所有明文输入的知识的大量输出值) - 因为我目前对密码学的理解告诉我,在足够已知的明文输入(受损的卡详细信息)和密文输出(受损的 CSC 代码)的情况下,可以导出密钥。

1个回答

使用具有各自安全代码的信用卡号集合来获取发行者的加密密钥将是已知明文攻击 (KPA) 的一个示例。

为了被认为是安全的,密码必须能够抵抗已知明文攻击,即即使使用大量明文-密文对破解加密也不应该比暴力破解快得多。这是密码甚至被考虑用于实际应用的基本要求。

在密码设计和评估中,假设攻击者拥有任意数量的已知明文-密文对,并且可以通过提供选择的要加密的明文 (CPA) 来生成新的明文对。在 IT 安全中,已知明文是给定的——例如,该页面通过 HTTPS 加密提供给您,但任何攻击者都可以通过访问该网站获取其大部分明文。如果这允许他们派生私钥,那么 HTTPS 将变得毫无意义。

如果正确使用,现代密码(如 AES 甚至大多数已弃用的密码)都可以抵抗 KPA。唯一使用明文-密文对是检查您的密钥是否匹配。

过时的、前计算机时代的密码并不安全,确实可以用 KPA 破解;这就是发生在谜中的事情。如果使用不正确,例如使用重复的 IV 和随机数,也可以使用 KPA/CPA 破解现代密码。错误的使用可以将任何密码的安全性降低为简单的 XOR,因此安全方案需要的不仅仅是一个好的密码。是否有任何银行把它搞得那么糟糕……我希望不会。