为什么更改 PIN 不会影响磁卡上记录的数据?

信息安全 磁条卡
2021-08-28 15:23:22

我正在阅读L. Padilla 的《Breaking VISA PIN》他表示,更改 PIN 将更改卡上存储的数据。但是,我尝试了几张卡,更改 PIN 不会影响存储在轨道 1 和 2 上的数据。

我该如何解释呢?

有没有办法从这些数据中提取 PIN 码?

以下是一些示例数据:

Track1:
  PAN:6104XXXXXXXXXXXX
  Expiration date:1608
  service code:100
  Discretionary data: 91516084076901530
Track2:
  PAN: same as track1
  Expiration date:1608
  service code:100
  Discretionary data:9154177591894

使用另一个阅读器:

;6104XXXXXXXXXXXX=16081009154177591894?
4个回答

在过去,他们可能已经对卡上的 PIN 进行了编码,但希望(如您的测试所示)他们已经停止了。您引用的文章看起来像是 2009 年的文章,已经过时了。

至于为什么他们不应该将 PIN 码编码到卡上,请查看 NIST 特别出版物 800-63-2,电子认证指南。在多因素身份验证的情况下,它应该由“你知道的东西、你拥有的东西和你是的东西”的组合组成。对于卡和 PIN 系统,您有一些东西(卡)并且知道一些东西(PIN)。如果您将 PIN 码编码到卡上,那么您只有一些东西,即单因素身份验证并且不那么安全。

如果您对信用卡中 PIN 的安全性感兴趣,可以查看:https ://www.pcisecuritystandards.org/documents/PCI_PIN_Security_Requirements.pdf 。这是保护 PIN 的 PCI 要求。

至于酌情数据的差异,这些可能来自多个来源。根据 ISO/IEC 7813,磁道 1 和 2 的最大记录长度不同。DD用于填充字符的平衡。

对于全权委托数据,实施由发行公司决定。至于它可能包含的内容,您可以通过查看发行公司的文档来找出答案(我怀疑您会发现除了奇怪的事情之外的任何事情)。它可能只是随机填充以达到适当的长度,或者它可能包含额外的数据。请参阅https://stackoverflow.com/questions/12239855/discretionary-data-from-magnetic-strip-credit-card-how-to-parse

密码的全部意义在于它不在卡上,而是在银行的计算机中,因此对卡的物理访问无法为您提供该信息。如果它在卡上,它只是一个更长的帐号。

磁条上没有存储 PIN 码。卡支付中常用的 PIN 策略主要有两种:离线和在线 PIN。

离线 PIN 要求 PIN 值安全地存储在芯片内的防篡改模块中。在验证过程中,持卡人输入的 PIN 值被发送到模块进行验证。

在线 PIN 方案将授权请求中的 PIN 发送到金融机构的主机,以根据其数据库中的安全 PIN 值进行验证。

如果您能够使用脚本完成更改芯片卡上的 PIN,那么您很可能正在更改芯片中的离线 PIN。磁条中的 PIN 码不可见。

为了增加其他两个答案,磁条上的数据使用IEC_7813编码存储。根据维基百科,可自由支配的数据可能包括 PIN。它通常不会。

我对它过去工作方式的回忆大致如下,它既具有一定程度的安全性,又允许离线更改 PIN 码。

  • 银行为每张卡存储“银行 PIN”,这是发送给用户的初始卡 PIN。
  • 磁条上的 PIN 设置为 0000(或已知的随机数)
  • 将密码输入 ATM 时,输入的密码与磁条上的密码相加,取模 10,000,并将结果传送给银行,并与“银行密码”进行比较
  • 当您更改卡上的 PIN 时,所发生的只是存储的偏移更改。

我相信磁条上的代码可能被称为 PVV(或“PIN 偏移”)。参见例如herehere以获取较旧的参考,从第二个参考(第3.1节结束):

最后,为了允许持卡人更改他们的 PIN,添加了一个偏移量,该偏移量与帐号一起存储在大型机数据库中。当 ATM 验证输入的 PIN 时,它会简单地从卡中减去偏移量,然后再根据加密的十进制结果检查该值。

有关现代参考,请参见此处(请参见下面的注释):

PINCP:PIN 控制参数 (PINPARM)。6位数:

如果 FC = 01,前两位数字表示用于计算 PIN 的算法,其中 00-09 表示私有算法,10-19 表示 DEA,值 20 到 99 保留供 ISO/TC 68 将来使用。接下来的 4 位数字是 PIN offset,PIN 的互补值,因此客户可以更改其 PIN 或 PVV。

如果 FC = 02,第一个数字表示用于计算 PIN 的算法,其中 0 表示私有算法,1 表示 DEA,值 2 到 9 保留供 ISO/TC 68 将来使用。第二个数字表示算法的密钥。接下来的 4 位数字是 PIN 偏移,这是 PIN 的补充值,因此客户可以更改他们的 PIN 或 PVV。

如果不使用此字段,则将使用 FS。

(以上是凭记忆完成的,然后用谷歌搜索,我才意识到这篇文章实际上看起来和你引用的一样)。