1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

信用卡背面的三位数,不是增加卡号长度那么简单

Discussion in '知乎日报' started by 漂亮的石头, 2015-11-10.

  1. 漂亮的石头

    漂亮的石头 版主 Staff Member

    Joined:
    2012-02-10
    Messages:
    487,766
    Likes Received:
    47
    信用卡背面的验证码 (CVV) 为什么能起到安全保障的作用?跟卡号增加三位有什么区别?

    [​IMG] shilh,泛IT女, 对各行各业都挺有兴趣的

    您在卡片后面看到的三位数其实叫做 CVV2,银联卡叫做 CVN2,万事达叫做 CVC2。CVV 是在你卡片磁道信息内包含的,当你刷卡时通过二磁信息传递。

    从技术流程上讲,通常网上消费,发卡系统会验证 CVV2,也就是卡背面的 3 位数字,CVV2 的计算通过有效期,卡号,和 CVV 密钥和服务码(service code 根据卡片类型有不同的服务码)来计算,对于任何一张卡都是唯一的。发卡系统通过网页送过来的 CVV2 和上述方法计算出来的 CVV2 进行对比,如果验证通过则通过授权,如果不通过,则会拒绝。事实上,确实存在假冒的风险,因而各个银行,卡组织也在不断开发出新的安全措施,比如芯片卡的 ARQC 验证(避免磁条卡的仿制磁道信息),针对网上购物的 3D secure 等等。

    技术上,如果这三位加在卡号中也无不可。但,惯例是单拿出来,叫做 CVV2。

    [​IMG] 王锐,JAVA+JavaScript码农

    首先,CVV 应该是信用卡安全码。国人常见的信用卡中 VISA 叫做 CVV2(Card Verification Value 2),万事达卡叫做 CVC2(Card Validation Code 2),运通卡叫做 CID(Card Identification Number),银联卡叫做 CVN2(Card Validation Number 2),JCB 卡叫做 CAV2( Card Authentication Value 2)。

    信用卡安全码,是信用卡上的一组 3 位或 4 位数字。其生成方法是银行将卡片帐号、有效期、服务代码提取出来,排列后再经过一系列复杂的算法算出来的。这组数字在生成之后,就只有发卡银行和银行卡的持有者知道该数字是多少。

    然后,说一说信用卡号码,信用卡一般是 15 或者 16 位号码组成,前 6 位为发行者代码,比如 VISA 为 4XXXXX,万事达卡为 51XXXX-55XXXX,运通卡为 34XXXX 或 37XXXX,银联为 62XXXX。然后第 7 位开始到倒数第二位,为你的个人帐号数字码,最后一位是校验码,这些组成部分及校验码的计算方式参见规范 International Standards Organization (ISO/IEC 7812-1:1993) 和 American National Standards Institute (ANSI X4.13) 的规定。

    以现有的技术手段,通过电脑等自动系统,很容易穷举计算出各个信用卡号码。所以,在信用卡号码之上,要加注一个安全辨识是否卡主持卡的东西,就是现在的信用卡安全码。

    因为安全码包含的有卡的有效期等非公开信息的计算,所以一般此码是用在无卡交易时候验证卡主,如果盗用此卡的人没有拿到过原卡,一般手段是得不到安全码的。这样能在一定程度上保障信用卡的安全性。

    [​IMG] Zhao Jun

    开发过信用卡支付网关的来回答一下。

    在“支付卡行业数据安全规范”(pci dss)中规定商户不可以将 CVV/CVV2 保存到自己的数据库。而商户通常可以保存卡号、失效日期等信息,并用来进行支付。

    所以一旦出示 CVV,理论上即可认为支付是由持卡人亲自发起,而不是由商户利用已保存的卡号发起。

    CVV 通常用于网上支付。虽然不是所有的交易都需要验证 CVV,但是有 CVV 的被认为是更可信的交易。

    一旦被信用卡监管机构发现商户保存用户的 CVV,后果会很严重。

    回到问题上,卡号是可以被商户保存在自己的系统中,所以就算增加三位安全性并不会提高。CVV 理论上只能由持卡人知道,这样就给支付增加了一层保护。

    查看知乎原文
     
Loading...