• 移动安全规范 — 3 -个人密码(PIN)传输规范


    熟悉PIN、PAN、PIN Block、Format标准就了解了PIN传输规范。

    1. PIN、PAN、PIN Block

    PIN(Personal identification Number):即个人密码。PIN规定为4~12位数字,越长越安全,但是从易用的角度考虑不应该超过6位,所以目前的银行卡密码都是6位。在计算机和网络系统中任何环节不允许PIN以明文的格式出现

    PAN(Primary Account Number的缩写): 主账户号码 。ISO 9564中定义:发行者分配的号码,由发行者识别号码、个人账户标识和ISO/IEC 7812-1中规定的校验数字组成,用于识别发卡机构和持卡人。详见银行卡号的编码规则及校验

    PIN Block:填充后的PIN的分组数据块。对pin进行加密时,由于pin长度一般为6位,不符合加密算法的固定分组长度要求,所以需要对pin进行填充使之达到一个分组的长度,然后加密计算从而保证pin的机密性。PINBLOCK一般用于银行卡取款密码的加密传输处理过程中,遵循ANSI X.98规范,该规范被目前主流的卡组织所接受,包括中国银联。

    2. PIN Block分类

    PIN 格式块:ISO 9564标准中定义了5种格式,Format 0,Format 1, Format 2, Format 3,Format 4。

    2.1 Format 0 PIN block

    由PIN域 和 PAN域 异或 得到。

    PIN域 共64bit,每4bit为1位十六进制数字,共16位十六进制数字。
    第1位(1~4bit):固定值0x0(0000)
    第2位(5~8bit):PIN长度,取值范围0x4(0100) ~ 0xC(1100)
    第3~16位(9~64bit):PIN,不足14位右补0xF(1111),因为PIN最多12位,所以最后2位一定是0xFF(1111,1111)

    PAN域 共64bit,每4bit为1位十六进制数字,共16位十六进制数字。
    第1~4位(1~16bit):固定值0x0000(0000,0000,0000,0000)
    第5~16位(17~64bit):PAN,去掉最右边1位校验数字后,从右边数12位,不足12位左补0x0(0000)

    2.2 Format 1 PIN block

    用于PAN不可获取的场景,由PIN域 拼接 交易域得到。

    交易域:在每次PIN block时应当是唯一的,其来源于交易序列号、时间戳、随机数或其他相似情况,取值范围是0x0(0000) ~ 0xF(1111)。

    PIN block上送时,交易域不必上送,因为PIN的长度已经知道了。

    PIN block 共64bit,每4bit为1位十六进制数字,共16位十六进制数字。
    第1位(1~4bit):固定值0x1(0001)
    第2位(5~8bit):PIN长度,取值范围0x4(0100) ~ 0xC(1100)
    第3~16位(9~64bit):PIN,不足14位右补交易域。

    2.3 Format 2 PIN block

    指定IC卡使用,只能用于离线环境,不能用于线上PIN验证。

    PIN域 共64bit,每4bit为1位十六进制数字,共16位十六进制数字。
    第1位(1~4bit):固定值0x2(0010)
    第2位(5~8bit):PIN长度,取值范围0x4(0100) ~ 0xC(1100)
    第3~16位(9~64bit):PIN,不足14位右补0xF(1111),因为PIN最多12位,所以最后2位一定是0xFF(1111,1111)

    2.4 Format 3 PIN block

    由PIN域 和 PAN域 异或 得到。

    PIN域 共64bit,每4bit为1位十六进制数字,共16位十六进制数字。
    第1位(1~4bit):固定值0x3(0011)
    第2位(5~8bit):PIN长度,取值范围0x4(0100) ~ 0xC(1100)
    第3~16位(9~64bit):PIN,不足14位右补0xA(1010) ~ 0xF(1111)中随机的或顺序的数字

    PAN域 共64bit,每4bit为1位十六进制数字,共16位十六进制数字。
    第1~4位(1~16bit):固定值0x0000(0000,0000,0000,0000)
    第5~16位(17~64bit):PAN,去掉最右边1位校验数字后,从右边数12位,不足12位左补0x0(0000)

    2.5 Format 4 PIN block

    PIN域 共128bit,每4bit为1位十六进制数字,共32位十六进制数字。
    第1位(1~4bit):固定值0x4(0100)
    第2位(5~8bit):PIN长度,取值范围0x4(0100) ~ 0xC(1100)
    第3~16位(9~64bit):PIN,不足14位右补0xA(1010)
    第17~32位(65~128bit):随机数字,取值范围0x0(0000) ~ 0xF(1111)

    PAN域 共128bit,每4bit为1位十六进制数字,共32位十六进制数字。
    第1位(1~4bit):PAN长度减12,因为PAN最大19位,所以取值范围0x0(0000) ~ 0x7(0111);PAN长度小于12时,取值0x0(0000)
    第2~32位(5~128bit):PAN,不足12位左补0x0(0000),超过12位不足20位右补0x0(0000)

    Format 4 与0/1/2/3不同,不是先得到PIN block再加密,而是将 PIN域和PAN域放到加密过程中,最终得到加密的PIN block。加密过程:

    1. 使用密钥K对PIN域加密,得到结果A;
    2. 结果A与PAN域做异或,得到结果B;
    3. 使用密钥K对结果B加密,得到加密的PIN block。
    4. 解密过程(加密过程的逆过程)
    5. 使用密钥K对加密的PIN block解密,得到结果B;
    6. 结果B与PAN域做异或,得到结果A;
    7. 使用密钥K对结果A解密,得到PIN域。
    8. 因Format 4 PIN block涉及密钥加解密过程,此处不提供代码示例,PIN域、PAN域、异或,可参照其他格式PIN block代码示例

    3. Format标准

    3.1 ANSI X9.8 Format

    ANSI - American National Standards Institute,美国国家标准学会

    ANS - American National Standards,美国国家标准

    ANS X9.8是在ISO 9564-1标准的基础上增加几处笔记形成的,内容可以认为是一致的。指出PIN block只有Format 0和3建议在此标准下使用,Format 3应当在多次PIN加密都使用相同的PIN加密密钥时使用。

    ANSI X9.8 个人密码加密标准。

    ANSI X3.92 数据加密标准 (DES) 。

    ANSI X9.9 金融机构信息验证标准。

    3.2 Q/CUP 006.4

    中国银联股份有限公司企业标准,Q表示企业,CUP表示中国银联(China UnionPay)。

    银联标准定义的ANSI X9.8 Format(不带主账号信息)就是ANSI X9.8 Format(带主账号信息)的简化。

    银联标准也定义了互联网支付密码的PIN block计算方式。 1. 互联网支付密码的长度必须在6到20个字符以内; 2. 互联网支付密码均为ASCII码字符,既可以为字符,也可以为数字,或其他符号; 3. PIN block 共24个字节,每个字节使用2位十六进制数字表示,共48位十六进制数字; 前2个字节,互联网支付密码的长度; 剩余22个字节,PIN,6~20位字符,每个字符占1个字节,不足右补0xFF。

    4. PIN安全设计建议

    1. 给密码加盐后再进行哈希。

    2. PIN输错和穷举次数限制。

    3. 异地登陆需要校检。

    4. 不设置生日、连续数字、重要日期等简单密码。

  • 相关阅读:
    Symbol详解
    三个数的最大积(贪心法)
    外汇天眼:喜大普奔!困扰投资者的交易问题解决了!
    计算机网络-物理层(编码、调制)
    点云从入门到精通技术详解100篇-基于全景图的室内场景点云补全方法(续)
    CRM客户管理系统源码 带移动端APP+H5+小程序
    《Python+Kivy(App开发)从入门到实践》自学笔记:高级UX部件——TabbedPanel选项面板
    MySQL --- 多表查询 - 七种JOINS实现、集合运算、多表查询练习
    秋招面经第十弹:字节跳动二面-大数据开发工程师(电商)
    元宇宙基础理论、架构设计、关键技术和行业应用-总纲
  • 原文地址:https://blog.csdn.net/qincheng168/article/details/126610110