用于非接触卡的密码认证的系统和方法
文献发布时间:2023-06-19 10:25:58
相关申请交叉引用
本申请主张2019年3月12日提交的美国专利申请16/351,067的优先权,以及主张2018年11月29日提交的美国专利申请16/205,119的优先权,另外还主张2018年10月2日提交的美国临时专利申请62/740,352的优先权,其中专利申请16/351,067是专利申请16/205,119的部分继续,上述专利申请的全部公开内容在此纳入作为参考。
技术领域
本公开涉及密码学,更具体地说,涉及用于非接触卡的密码认证的系统和方法。
背景技术
数据安全性和交易完整性对企业和消费者至关重要。随着电子交易在商业活动中所占份额越来越大,这种需求持续增长。
电子邮件可以用作验证交易的工具,但是电子邮件易于受到攻击,并且容易受到黑客攻击或其他未经授权的访问。也可以使用短消息服务(SMS)消息,但SMS消息也容易受到威胁。此外,甚至数据加密算法(例如三重DES算法)也具有类似的漏洞。
激活许多卡,例如包括金融卡(例如信用卡和其他支付卡),需要持卡人耗费时间来拨打电话号码或访问网站并输入或以其他方式提供卡信息。此外,尽管日益频繁地使用基于芯片的金融卡提供了比以前的技术(例如,磁条卡)更安全的功能,但是对于个人购买,帐户访问仍然可能依赖于登录凭据(例如,用户名和密码)来确认持卡人的身份。但是,如果登录凭据被泄露,其他人便可访问该用户的帐户。
存在上述以及其他缺陷。因此,需要为用户提供克服这些缺陷的适当解决方案,以提供用于非接触卡的数据安全性、认证和验证。此外,既需要一种改进的激活卡的方法,又需要用于帐户访问的改进认证,同时还要阻止未经授权的人员猜测或推测认证、凭据或验证信息。
发明内容
所公开的技术的各方面包括用于非接触卡的密码认证的系统和方法。各种实施例描述了用于实现和管理非接触卡的密码认证的系统和方法。
本公开的实施例提供了一种一次性密码系统,所述系统包括:非接触卡,其包括一个或多个处理器、以及一个存储器,其中所述存储器包含至少一个小程序、至少一个密钥和一个计数器;客户端设备应用,其包括用于在所述客户端设备上执行的指令,其中:所述非接触卡被配置为基于所述至少一个密钥和所述计数器创建密码,所述非接触卡被配置为向所述客户端设备应用发送所述密码,所述非接触卡被配置为向所述客户端设备应用发送一次性密码,所述计数器在每次生成所述密码时进行调整,并且所述计数器被配置为以非单调序列递增,其中所述递增与一个或多个密码算法相关联。
本公开的实施例提供了一种使用非接触卡保护基于计数器的一次性密码的方法,所述方法包括:提供非接触卡,所述非接触卡包括一个或多个处理器、以及一个存储器,所述存储器包含一个或多个小程序、至少一个密钥和一个计数器;由所述一个或多个处理器基于所述至少一个密钥和所述计数器创建密码;由所述非接触卡发送密码;由所述非接触卡发送一个或多个一次性密码;其中所述计数器在每次生成所述密码时进行调整,并且其中所述计数器被配置为以非单调序列递增,所述递增与一个或多个密码算法相关联。
本公开的实施例提供了一种非接触卡,所述非接触卡包括:一个或多个处理器、一个计数器和一个存储器,其中所述存储器包含至少一个小程序,其中所述非接触卡被配置为:生成一次性密码,发送所述一次性密码,以及在生成每个一次性密码时调整所述计数器,其中所述计数器被配置为以非单调序列递增或递减,其中选择所述递增或递减的值以便避免所述计数器过早地重叠,并且其中所述计数器与一个或多个密码算法相关联。
所公开的设计的其他特征,以及由此提供的优点在下文中参考附图所示的特定示例实施例更详细地解释,在这些附图中,相同的元件由相同的参考标号指示。
附图说明
图1A是根据示例实施例的数据传输系统的图。
图1B是根据示例实施例的用于提供认证访问的序列的图。
图2是根据示例实施例的数据传输系统的图。
图3是根据示例实施例的使用非接触卡的系统的图。
图4是示出根据示例实施例的密钥分散化方法的流程图。
图5A是根据示例实施例的非接触卡的图示。
图5B是根据示例实施例的非接触卡的接触片的图示。
图6是示出根据示例实施例的与设备进行通信的消息的图示。
图7是示出根据示例实施例的消息和消息格式的图示。
图8是示出根据示例实施例的密钥操作的流程图。
图9是根据示例实施例的密钥系统的图。
图10是根据示例实施例的生成密码的方法的流程图。
图11是示出根据示例实施例的密钥分散化过程的流程图。
图12是根据根据示例实施例的激活卡的方法的流程图。
图13是根据示例实施例的一次性密码系统的图。
图14是示出根据示例实施例的用于保护一次性密码的方法的流程图。
具体实施方式
以下对实施例的描述提供了非限制的代表性示例参考数字,以专门描述本发明的不同方面的特征和教导。应当认识到,所描述的实施例能够与实施例描述中的其他实施例分开地或组合地实现。通过仔细阅读实施例的描述,本领域普通技术人员应该能够学习和理解所描述的本发明的不同方面。实施例的描述应在某种程度上促进对本发明的理解,使得未具体涵盖,但是能够被阅读了实施例的描述的本领域技术人员理解的其他实现被理解为与本发明的应用一致。
本公开的一些实施例的目的是将一个或多个密钥构建到一个或多个非接触卡中。在这些实施例中,非接触卡可以执行认证和许多其他功能,这些功能除了非接触卡之外还需要用户携带单独的物理令牌。通过采用非接触式界面,可以为非接触卡提供一种在用户的设备(例如移动电话)与卡本身之间进行交互和通信的方法。例如,作为许多信用卡交易基础的EMV协议包括一个认证过程,该过程足以满足
图1A示出了根据示例实施例的数据传输系统。如下面进一步讨论的,系统100可以包括非接触卡105、客户端设备110、网络115和服务器130。尽管图1A示出了单个组件实例,但是系统100可以包括任何数量的组件。
系统100可以包括一个或多个非接触卡105,下文参考图5A至5B对非接触卡进行进一步的说明。在一些实施例中,非接触卡105可以在示例中利用NFC与客户端设备110进行无线通信。
系统100可以包括客户端设备110,该客户端设备可以是具有网络功能的计算机。如本文所指,具有网络功能的计算机可以包括但不限于计算机设备或通信设备,例如包括服务器、网络设备、个人计算机、工作站、电话、手持式PC、个人数字助理、瘦客户端、胖客户端、Internet浏览器或其他设备。客户端设备110也可以是移动设备;例如,移动设备可以包括
客户端设备110可以包括处理器和存储器,并且应当理解,处理电路可以包含其他组件,其中包括执行本文所述功能所必需的处理器、存储器、错误和奇偶校验/CRC校验器、数据编码器、防冲突算法、控制器、命令解码器、安全原语和防篡改硬件。客户端设备110可以进一步包括显示器和输入设备。显示器可以是用于呈现视觉信息的任何类型的设备,例如计算机监视器、平板显示器和移动设备屏幕,其中包括液晶显示器、发光二极管显示器、等离子面板和阴极射线管显示器。输入设备可以包括用于将信息输入到用户设备中,并且可用且受到用户设备支持的任何设备,例如触摸屏、键盘、鼠标、光标控制设备、触摸屏、麦克风、数码相机、视频录像机或便携式摄像机。这些设备可用于输入信息并与本文描述的软件和其他设备进行交互。
在一些示例中,系统100的客户端设备110可以执行一个或多个应用,例如软件应用,这些应用例如使得能够与系统100的一个或多个组件进行网络通信并且发送和/或接收数据。
客户端设备110可以经由一个或多个网络115与一个或多个服务器130通信,并且可以作为与服务器130的相应的前端到后端对来操作。客户端设备110例如可通过在客户端设备110上执行的移动设备应用将一个或多个请求发送到服务器130。该一个或多个请求可以与检索自服务器130的数据相关联。服务器130可以从客户端设备110接收一个或多个请求。基于来自客户端设备110的一个或多个请求,服务器130可被配置为从一个或多个数据库(未示出)检索所请求的数据。基于从一个或多个数据库接收到所请求的数据,服务器130可被配置为将所接收的数据发送到客户端设备110,所接收的数据响应于一个或多个请求。
系统100可以包括一个或多个网络115。在一些示例中,网络115可以是无线网络、有线网络中的一个或多个,或者是无线网络和有线网络的任何组合,并且可被配置为连接客户端设备110与服务器130。例如,网络115可以包括以下一项或多项:光纤网络、无源光纤网络、电缆网络、因特网网络、卫星网络、无线局域网(LAN)、全球移动通信系统、个人通信服务、个域网、无线应用协议、多媒体消息服务、增强消息服务、短消息服务、基于时分复用的系统、基于码分多址的系统、D-AMPS、Wi-Fi、固定无线数据、IEEE 802.11b、802.15.1、802.11n和802.11g、蓝牙、NFC、射频识别(RFID)、Wi-Fi等。
此外,网络115可以包括但不限于电话线、光纤、IEEE以太网902.3、广域网、无线个域网、LAN或诸如因特网之类的全球网络。另外,网络115可以支持因特网网络、无线通信网络、蜂窝网络等或其任何组合。网络115可以进一步包括一个网络,或者任何数量的上述示例性网络类型,这些网络类型作为独立网络运行或彼此协作。网络115可以利用与其通信耦合的一个或多个网络元件的一个或多个协议。网络115可以转换为网络设备的一个或多个协议,或从其他协议转换为网络设备的一个或多个协议。尽管网络115被描述为单个网络,但是应当理解,根据一个或多个示例,网络115可以包括多个互连的网络,例如因特网、服务提供者的网络、有线电视网络、公司网络(例如信用卡协会网络)和家庭网络。
系统100可以包括一个或多个服务器130。在一些示例中,服务器130可以包括一个或多个处理器,这些处理器耦合到存储器。服务器130可被配置为中央系统、服务器或平台,以在不同时间控制和调用各种数据以执行多个工作流动作。服务器130可被配置为连接到一个或多个数据库。服务器130可以连接到至少一个客户端设备110。
图1B是示出根据本公开的一个或多个实施例的用于提供认证访问的示例序列的时序图。系统100可以包括非接触卡105和客户端设备110,客户端设备110可以包括应用132和处理器134。图1B可以引用图1A中所示的类似组件。
在步骤102,应用132与非接触卡105通信(例如,在接近非接触卡105之后)。应用132与非接触卡105之间的通信包括非接触卡105距离客户端设备110的读卡器(未示出)足够近以实现应用132与非接触卡105之间的NFC数据传输。
在步骤104,在客户端设备110与非接触卡105之间建立了通信之后,非接触卡105生成消息认证码(MAC)密码。在一些示例中,这可以在应用132读取非接触卡105时发生。特别地,这可以在读取(例如,NFC读取)近场数据交换(NDEF)标签时发生,该标签可根据NFC数据交换格式创建。例如,诸如应用132之类的读取器可以发送消息,例如小程序选择消息,此消息具有产生小程序的NDEF的小程序ID。在确认选择之后,可以发送后跟读取文件消息的一系列选择文件消息。例如,该序列可以包括“选择功能文件”、“读取功能文件”和“选择NDEF文件”。此时,由非接触卡105维护的计数器值可以更新或递增,其后可以跟随有“读取NDEF文件”。此时,可以生成消息,该消息可以包括头和共享机密。然后可以生成会话密钥。可以通过此消息创建MAC密码,此消息可以包括头和共享机密。然后可以将MAC密码与一个或多个随机数据块连接起来,然后可以用会话密钥对MAC密码和随机数(RND)进行加密。此后,密码和头可以连接起来,被编码为ASCII十六进制,并以NDEF消息格式返回(响应于“读取NDEF文件”消息)。
在一些示例中,MAC密码可以作为NDEF标签发送,并且在其他示例中,MAC密码可以被包括在统一资源指示符(例如,作为格式化的字符串)中。
在一些示例中,应用132可被配置为向非接触卡105发送请求,该请求包括要求生成MAC密码的指令。
在步骤106,非接触卡105向应用132发送MAC密码。在一些示例中,MAC密码的发送经由NFC发生,但是,本公开不限于此。在其他示例中,该通信可以经由蓝牙、Wi-Fi或其他无线数据通信手段发生。
在步骤108,应用132将MAC密码传送给处理器134。
在步骤113,处理器134根据来自应用132的指令验证MAC密码。例如,如下所述,可以验证MAC密码。
在一些示例中,可以由客户端设备110之外的设备(诸如与客户端设备110进行数据通信的服务器130)执行验证MAC密码的操作(如图1A所示)。例如,处理器134可以输出MAC密码以发送到服务器130,服务器130可以验证MAC密码。
在一些示例中,为了验证的目的,MAC密码可以用作数字签名。也可以使用其他数字签名算法来执行此验证,例如公钥非对称算法(例如数字签名算法和RSA算法)或零知识协议。
图2示出了根据示例实施例的数据传输系统。系统200可以包括例如经由网络215与一个或多个服务器220通信的发送设备205、接收设备210。发送设备205可以与上面参考图1A讨论的客户端设备相同或相似。接收设备210可以与上面参考图1A讨论的客户端设备110相同或相似。网络215可以与上面参考图1A讨论的网络115类似。服务器220可以与上面参考图1A讨论的服务器130类似。尽管图2示出了系统200的单个组件实例,但是系统200可以包括任何数量的所示组件。
当使用诸如加密算法、基于哈希的消息认证码(HMAC)算法和基于密码的消息认证码(CMAC)算法之类的对称密码算法时,重要的是,密钥在最初处理使用对称算法和密钥保护的数据的一方与接收并处理使用相同算法和相同密钥的数据的一方之间保持机密。
同样重要的是,不要多次使用同一密钥。如果某个密钥的使用或重用过于频繁,则可能危及该密钥的安全。每次使用密钥时,都会为攻击者提供额数据(该数据由密码算法使用相同的密钥进行处理)的额外样本。攻击者拥有的使用相同密钥处理的数据越多,攻击者便越有可能发现密钥值。经常使用的密钥可能包含在各种不同的攻击中。
此外,每次执行对称密码算法时,都可能透露有关在对称密码操作期间使用的密钥的信息,例如边信道数据。边信道数据可能包括细微的功率波动,该波动会在使用密钥的同时执行密码算法时发生。攻击者可以对边信道数据采取充分的措施,以揭示有关密钥的足够信息,从而恢复密钥。使用相同的密钥交换数据会不断地暴露通过相同密钥处理的数据。
但是,通过限制使用特定密钥的次数,可以限制攻击者能够收集的边信道数据量,从而减少了遭受这种以及他类型攻击的风险。如本文中进一步描述的,参与密码信息交换的各方(例如,发送者和接收者)可以单独地通过与计数器值结合的初始共享主对称密钥生成密钥,从而周期性地替换正在使用的共享对称密钥,需要诉诸任何形式的密钥交换来使各方保持同步。通过周期性地更改由发送者和接收者使用的共享机密对称密钥,可使上述攻击变得不可能。
返回参考图2,系统200可被配置为实现密钥分散化。例如,发送者和接收者可能希望经由各自的设备205和210交换数据(例如,原始敏感数据)。如上所述,尽管可以包括发送设备205和接收设备210的单个实例,但是应当理解,只要每一方共享相同的共享机密对称密钥,就可能涉及一个或多个发送设备205和一个或多个接收设备210。在一些示例中,可以向发送设备205和接收设备210提供相同的主对称密钥。此外,应当理解,持有相同机密对称密钥的任何一方或设备都可以执行发送设备205的功能,并且类似地,持有相同机密对称密钥的任何一方都可以执行接收设备210的功能。在一些示例中,对称密钥可以包括共享机密对称密钥,该共享机密对称密钥对于交换安全数据时涉及的发送设备205和接收设备210之外的所有其他方保持机密。还应当理解,可以向发送设备205和接收设备210提供相同的主对称密钥,并且进一步地,在发送设备205与接收设备210之间交换的数据的一部分包括可被称为计数器值的数据的至少一部分。计数器值可以包括一个数字,该数字在发送设备205与接收设备210之间每次交换数据时发生改变。
系统200可以包括一个或多个网络215。在一些示例中,网络215可以是无线网络、有线网络中的一个或多个,或者是无线网络和有线网络的任何组合,并且可被配置为连接一个或多个发送设备205以及一个或多个接收设备210与服务器220。例如,网络215可以包括以下一项或多项:光纤网络、无源光纤网络、电缆网络、因特网网络、卫星网络、无线LAN、全球移动通信系统、个人通信服务、个域网、无线应用协议、多媒体消息服务、增强消息服务、短消息服务、基于时分复用的系统、基于码分多址的系统、D-AMPS、Wi-Fi、固定无线数据、IEEE 802.11b、802.15.1、802.11n和802.11g、蓝牙、NFC、RFID、Wi-Fi等。
此外,网络215可以包括但不限于电话线、光纤、IEEE以太网902.3、广域网、无线个域网、LAN或诸如因特网之类的全球网络。另外,网络215可以支持因特网网络、无线通信网络、蜂窝网络等或其任何组合。网络215可以进一步包括一个网络,或者任何数量的上述示例性网络类型,这些网络类型作为独立网络运行或彼此协作。网络215可以利用与其通信耦合的一个或多个网络元件的一个或多个协议。网络215可以转换为网络设备的一个或多个协议,或从其他协议转换为网络设备的一个或多个协议。尽管网络215被描述为单个网络,但是应当理解,根据一个或多个示例,网络215可以包括多个互连的网络,例如因特网、服务提供者的网络、有线电视网络、公司网络(例如信用卡协会网络)和家庭网络。
在一些示例中,一个或多个发送设备205和一个或多个接收设备210可被配置为在不使用网络215的情况下彼此进行通信以及发送和接收数据。例如,一个或多个发送设备205与一个或多个接收设备210之间的通信可以经由NFC、蓝牙、RFID、Wi-Fi等中的至少一项发生。
在框225处,当发送设备205准备使用对称密码操作来处理敏感数据时,发送者可以更新计数器。另外,发送设备205可以选择适当的对称密码算法,该对称密码算法可以包括对称加密算法、HMAC算法和CMAC算法中的至少一种。在一些示例中,用于处理分散化值的对称算法可以包括任何对称密码算法,这些算法根据需要来生成期望的长度分散化对称密钥。对称算法的非限制性示例可以包括诸如3DES或AES138之类的对称加密算法;诸如HMAC-SHA-256之类的对称HMAC算法;以及诸如AES-CMAC之类的对称CMAC算法。应当理解,如果所选对称算法的输出没有生成足够长的密钥,则诸如用不同的输入数据和相同的主密钥处理对称算法的多次迭代的技术可能会产生多个输出,这些输出可以根据需要组合以产生足够长的密钥。
在框230处,发送设备205可以采用所选择的密码算法,并且使用主对称密钥来处理计数器值。例如,发送者可以选择对称加密算法,并且使用随着发送设备205与接收设备210之间的每次对话而更新的计数器。然后,发送设备205可以使用主对称密钥,借助所选择的对称加密算法来对计数器值进行加密,从而创建分散化对称密钥。
在一些示例中,计数器值可能未加密。在这些示例中,可以在框230处,在发送设备205与接收设备210之间发送未加密的计数器值。
在框235处,在将结果发送到接收设备210之前,可以使用分散化对称密钥来处理敏感数据。例如,发送设备205可以使用分散化对称密钥,借助对称加密算法对敏感数据进行加密,其中输出包括受保护的加密数据。然后,发送设备205可以将受保护的加密数据连同计数器值一起发送到接收设备210以进行处理。
在框240处,接收设备210可以首先获取计数器值,然后使用该计数器值作为加密输入,并且使用主对称密钥作为加密密钥来执行相同的对称加密。加密的输出可能与发送者创建的分散化对称密钥值相同。
在框245处,接收设备210然后可以获取受保护的加密数据,并且使用对称解密算法以及分散化对称密钥来对受保护的加密数据进行解密。
在框250处,作为对受保护的加密数据进行解密的结果,可以显示原始敏感数据。
下一次需要经由相应的发送设备205和接收设备210将敏感数据从发送者发送到接收者时,可以选择不同的计数器值来产生不同的分散化对称密钥。通过使用主对称密钥和相同的对称密码算法处理计数器值,发送设备205和接收设备210都可以单独地产生相同的分散化对称密钥。使用这种分散化对称密钥而非主对称密钥来保护敏感数据。
如上所述,发送设备205和接收设备210最初各自持有共享的主对称密钥。共享的主对称密钥不用于加密原始敏感数据。由于分散化对称密钥是由发送设备205和接收设备210独立创建的,因此它永远不会在双方之间传输。因此,攻击者无法拦截分散化对称密钥,并且攻击者永远不会看到使用主对称密钥处理过的任何数据。只有计数器值使用主对称密钥进行处理,敏感数据不这样处理。因此,有关主对称密钥的边信道数据的暴露减少。而且,发送设备205和接收设备210的操作可以由对称性要求控制,从而决定多久创建一个新的分散化值,并因此创建新的分散化对称密钥。在一个实施例中,可以针对发送设备205与接收设备210之间的每次交换创建新的分散化值,并因此创建新的分散化对称密钥。
在一些示例中,密钥分散化值可以包括计数器值。密钥分散化值的其他非限制性示例包括:每次需要新的分散化密钥时生成的随机nonce,该随机nonce从发送设备205发送到接收设备210;从发送设备205和接收设备210发送的计数器值的全值;从发送设备205和接收设备210发送的计数器值的一部分;由发送设备205和接收设备210单独维护,但不在这两个设备之间发送的计数器;在发送设备205与接收设备210之间交换的一次性密码;以及敏感数据的加密哈希。在一些示例中,各方可以使用密钥分散化值的一个或多个部分来创建多个分散化密钥。例如,可以将计数器用作密钥分散化值。此外,可以使用上述示例性密钥分散化值中的一个或多个的组合。
在另一示例中,计数器的一部分可以用作密钥分散化值。如果在各方之间共享多个主密钥值,则可以通过本文所述的系统和过程来获得多个分散化密钥值。可以根据需要经常创建新的分散化值,并因此创建新的分散化对称密钥。在最安全的情况下,可以针对发送设备205与接收设备210之间的每次敏感数据交换创建新的分散化值。实际上,这可以创建一次性使用密钥,例如一次性会话密钥。
图3示出了使用非接触卡的系统300。系统300可以包括非接触卡305;一个或多个客户端设备310;网络315;服务器320、325;一个或多个硬件安全模块330,以及数据库335。尽管图3示出了单个组件实例,但是系统300可以包括任何数量的组件。
系统300可以包括下面参考图5A至图5B进一步说明的一个或多个非接触卡305。在一些示例中,非接触卡305可以与客户端设备310进行无线通信,例如NFC通信。例如,非接触卡305可以包括一个或多个芯片,诸如射频识别芯片,这些芯片被配置为经由NFC或其他短距离协议进行通信。在其他实施例中,非接触卡305可以通过其他方式与客户端设备310通信,其中包括但不限于蓝牙、卫星、Wi-Fi、有线通信和/或无线和有线连接的任何组合。根据一些实施例,当非接触卡305在读卡器313的范围内时,非接触卡305可被配置为通过NFC与客户端设备310的读卡器313通信。在其他示例中,与非接触卡305的通信可以通过物理接口来实现,例如通用串行总线接口或刷卡界面。
系统300可以包括客户端设备310,该客户端设备可以是具有网络功能的计算机。如本文所指,具有网络功能的计算机可以包括但不限于计算机设备或通信设备,例如包括服务器、网络设备、个人计算机、工作站、移动设备、电话、手持式PC、个人数字助理、瘦客户端、胖客户端、Internet浏览器或其他设备。一个或多个客户端设备310也可以是移动设备;例如,移动设备可以包括
客户端设备310可以经由一个或多个网络315与一个或多个服务器320和325通信。客户端设备310例如可通过在客户端设备310上执行的应用311将一个或多个请求发送到服务器320和325。该一个或多个请求可以与检索自服务器320和325的数据相关联。服务器320和325可以从客户端设备310接收一个或多个请求。基于来自客户端设备310的一个或多个请求,服务器320和325可被配置为从一个或多个数据库335检索所请求的数据。基于从一个或多个数据库335接收到所请求的数据,服务器320和325可被配置为将所接收的数据发送到客户端设备310,所接收的数据响应于一个或多个请求。
系统300可以包括一个或多个硬件安全模块(HSM)330。例如,一个或多个HSM 330可被配置为执行本文公开的一个或多个密码操作。在一些示例中,一个或多个HSM 330可被配置为专用安全设备,其被配置为执行一个或多个密码操作。HSM 330可被配置为使得密钥永远不会泄漏到HSM 330外部,而是保存在HSM 330内。例如,一个或多个HSM 330可被配置为执行密钥派生、解密和MAC操作中的至少一项。一个或多个HSM 330可以包含在服务器320和325内或者可以与服务器320和325进行数据通信。
系统300可以包括一个或多个网络315。在一些示例中,网络315可以是无线网络、有线网络中的一个或多个,或者是无线网络和有线网络的任何组合,并且可被配置为连接客户端设备315与服务器320和325。例如,网络315可以包括以下一项或多项:光纤网络、无源光纤网络、电缆网络、蜂窝网络、因特网网络、卫星网络、无线LAN、全球移动通信系统、个人通信服务、个域网、无线应用协议、多媒体消息服务、增强消息服务、短消息服务、基于时分复用的系统、基于码分多址的系统、D-AMPS、Wi-Fi、固定无线数据、IEEE 802.11b、802.15.1、802.11n和802.11g、蓝牙、NFC、RFID、Wi-Fi和/或其网络的任何组合。作为非限制性示例,来自非接触卡305和客户端设备310的通信可以包括NFC通信、客户端设备310与运营商之间的蜂窝网络以及运营商与后端之间的因特网。
此外,网络315可以包括但不限于电话线、光纤、IEEE以太网902.3、广域网、无线个域网、局域网或诸如因特网之类的全球网络。另外,网络315可以支持因特网网络、无线通信网络、蜂窝网络等或其任何组合。网络315可以进一步包括一个网络,或者任何数量的上述示例性网络类型,这些网络类型作为独立网络运行或彼此协作。网络315可以利用与其通信耦合的一个或多个网络元件的一个或多个协议。网络315可以转换为网络设备的一个或多个协议,或从其他协议转换为网络设备的一个或多个协议。尽管网络315被描述为单个网络,但是应当理解,根据一个或多个示例,网络315可以包括多个互连的网络,例如因特网、服务提供者的网络、有线电视网络、公司网络(例如信用卡协会网络)和家庭网络。
在根据本公开的各种示例中,系统300的客户端设备310可以执行一个或多个应用311,并且包括一个或多个处理器313以及一个或多个读卡器313。例如,一个或多个应用311(诸如软件应用)可被配置为例如使得能够与系统300的一个或多个组件进行网络通信,并发送和/或接收数据。应当理解,尽管图3仅示出了客户端设备310的单个组件实例,但是可以使用任何数量的设备310。读卡器313可被配置为从非接触卡305进行读取和/或与非接触卡305通信。结合一个或多个应用311,读卡器313可以与非接触卡305通信。
任一客户端设备310的应用311都可以使用短距离无线通信(例如NFC)与非接触卡305通信。应用311可被配置为与被配置为与非接触卡305进行通信的客户端设备310的读卡器313对接。需要指出,本领域技术人员将理解,小于二十厘米的距离与NFC距离一致。
在一些实施例中,应用311通过关联的读取器(例如,读卡器313)与非接触卡305通信。
在一些实施例中,可以在没有用户认证的情况下激活卡。例如,非接触卡305可以通过NFC,借助客户端设备310的读卡器313与应用311通信。该通信(例如,轻击靠近客户端设备310的读卡器313的卡)允许应用311读取与卡相关联的数据并执行激活。在某些情况下,此轻击可以激活或启动应用311,然后启动一个或多个动作或与帐户服务器325的通信以激活卡,从而便于后期的使用。在某些情况下,如果客户端设备310上未安装应用311,则对着读卡器313轻击卡可以启动应用311的下载(例如,导航到应用下载页面)。在安装之后,轻击卡可以激活或启动应用311,然后启动(例如,经由该应用或其他后端通信)卡的激活。激活之后,该卡可用于各种交易,包括商业交易。
根据一些实施例,非接触卡305可以包括虚拟支付卡。在那些实施例中,应用311可以通过访问在客户端设备310上实现的数字钱包来检索与非接触卡305相关联的信息,其中数字钱包包括虚拟支付卡。在一些示例中,虚拟支付卡数据可以包括一个或多个静态或动态生成的虚拟卡号。
服务器320可以包括与数据库335通信的网络服务器。服务器325可以包括帐户服务器。在一些示例中,服务器320可被配置为通过与数据库335中的一个或多个凭据进行比较来验证来自非接触卡305和/或客户端设备310的一个或多个凭据。服务器325可被配置为授权来自非接触卡305和/或客户端设备310一个或多个请求,例如支付和交易请求。
图4示出了根据本公开的示例的密钥分散化的方法400。方法400可以包括与图2中引用的发送设备205和接收设备210相似的发送设备和接收设备。
例如,发送者和接收者可能希望经由发送设备和接收设备交换数据(例如,原始敏感数据)。如上所述,尽管可以包括这两方,但是要理解,只要每一方共享相同的共享机密对称密钥,就可以涉及一个或多个发送设备和一个或多个接收设备。在一些示例中,可以向发送设备和接收设备提供相同的主对称密钥。此外,应当理解,持有相同机密对称密钥的任何一方或设备都可以执行发送设备的功能,并且类似地,持有相同机密对称密钥的任何一方都可以执行接收设备的功能。在一些示例中,对称密钥可以包括共享机密对称密钥,该共享机密对称密钥对于交换安全数据时涉及的发送设备和接收设备之外的所有其他方保持机密。还应当理解,可以向发送设备和接收设备提供相同的主对称密钥,并且进一步地,在发送设备与接收设备之间交换的数据的一部分包括可被称为计数器值的数据的至少一部分。计数器值可以包括一个数字,该数字在发送设备与接收设备之间每次交换数据时发生改变。
在框410处,可以向发送设备和接收设备提供相同的主密钥,例如相同的主对称密钥。当发送设备准备使用对称密码操作来处理敏感数据时,发送者可以更新计数器。另外,发送设备可以选择适当的对称密码算法,该对称密码算法可以包括对称加密算法、HMAC算法和CMAC算法中的至少一种。在一些示例中,用于处理分散化值的对称算法可以包括任何对称密码算法,这些算法根据需要来生成期望的长度分散化对称密钥。对称算法的非限制性示例可以包括诸如3DES或AES138之类的对称加密算法;诸如HMAC-SHA-256之类的对称HMAC算法;以及诸如AES-CMAC之类的对称CMAC算法。应当理解,如果所选对称算法的输出没有生成足够长的密钥,则诸如用不同的输入数据和相同的主密钥处理对称算法的多次迭代的技术可能会产生多个输出,这些输出可以根据需要组合以产生足够长的密钥。
发送设备可以采用所选择的密码算法,并且使用主对称密钥来处理计数器值。例如,发送者可以选择对称加密算法,并且使用随着发送设备与接收设备之间的每次对话而更新的计数器。
在框420处,发送设备然后可以使用主对称密钥,借助所选择的对称加密算法来对计数器值进行加密,从而创建分散化对称密钥。在将结果发送到接收设备之前,可以使用分散化对称密钥来处理敏感数据。例如,发送设备可以使用分散化对称密钥,借助对称加密算法对敏感数据进行加密,其中输出包括受保护的加密数据。然后,发送设备可以将受保护的加密数据连同计数器值一起发送到接收设备以进行处理。在一些示例中,可以执行加密之外的密码操作,并且可以在发送受保护的数据之前使用分散化对称密钥来执行多个密码操作。
在一些示例中,计数器值可能未加密。在这些示例中,可以在框420处,在发送设备与接收设备之间发送未加密的计数器值。
在框430处,可以使用一个或多个密码算法以及分散化密钥来保护敏感数据。可通过使用计数器的密钥分散化创建的分散化会话秘钥能够与一个或多个密码算法结合使用来保护敏感数据。例如,数据可通过使用第一分散化会话密钥的MAC进行处理,并且所产生的输出可以使用第二分散化会话密钥进行加密,从而产生受保护的数据。
在框440处,接收设备可以使用计数器值作为加密输入,并且使用主对称密钥作为加密密钥来执行相同的对称加密。加密的输出可能与发送者创建的分散化对称密钥值相同。例如,接收设备可以使用计数器独立地创建其自己的第一和第二分散化会话密钥的副本。然后,接收设备可以使用第二分散化会话密钥来对受保护的数据进行解密,以揭示由发送设备创建的MAC的输出。接收设备然后可以使用第一分散化会话密钥,通过MAC操作来处理结果数据。
在框450处,接收设备可以结合使用分散化密钥与一个或多个密码算法来验证受保护的数据。
在框460处,可以验证原始数据。如果MAC操作的输出(经由使用第一分散化会话密钥的接收设备)与解密显示的MAC输出匹配,则该数据可以被视为有效。
下一次需要将敏感数据从发送设备发送到接收设备时,可以选择不同的计数器值来产生不同的分散化对称密钥。通过使用主对称密钥和相同的对称密码算法处理计数器值,发送设备和接收设备都可以单独地产生相同的分散化对称密钥。使用这种分散化对称密钥而非主对称密钥来保护敏感数据。
如上所述,发送设备和接收设备最初各自持有共享的主对称密钥。共享的主对称密钥不用于加密原始敏感数据。由于分散化对称密钥是由发送设备和接收设备独立创建的,因此它永远不会在双方之间传输。因此,攻击者无法拦截分散化对称密钥,并且攻击者永远不会看到使用主对称密钥处理过的任何数据。只有小计数器值使用主对称密钥进行处理,敏感数据不这样处理。因此,有关主对称密钥的边信道数据的暴露减少。而且,发送者和接收者例如可以通过先前的安排或其他方式来就多久创建一个新的分散化值达成协议,并因此创建新的分散化对称密钥。在一个实施例中,可以针对发送设备与接收设备之间的每次交换创建新的分散化值,并因此创建新的分散化对称密钥。
在一些示例中,密钥分散化值可以包括计数器值。密钥分散化值的其他非限制性示例包括:每次需要新的分散化密钥时生成的随机nonce,该随机nonce从发送设备发送到接收设备;从发送设备和接收设备发送的计数器值的全值;从发送设备和接收设备发送的计数器值的一部分;由发送设备和接收设备单独维护,但不在这两个设备之间发送的计数器;在发送设备与接收设备之间交换的一次性密码;以及敏感数据的加密哈希。在一些示例中,各方可以使用密钥分散化值的一个或多个部分来创建多个分散化密钥。例如,可以将计数器用作密钥分散化值。
在另一示例中,可以将计数器的一部分用作密钥分散化值。如果各方共享多个主密钥值,则可以通过本文描述的系统和过程来获得多个分散化密钥值。可以根据需要经常创建新的分散化值,并因此创建新的分散化对称密钥。在最安全的情况下,可以针对发送设备与接收设备之间的每次敏感数据交换创建新的分散化值。实际上,这可以创建一次性使用密钥,例如一次性会话密钥。
在其他示例中,例如为了限制主对称密钥的使用次数,发送设备的发送者和接收设备的接收者可能就仅周期性地创建新的分散化值,并因此创建新的分散化对称密钥达成一致。在一个示例中,此操作可以发生在预定次数的使用之后,例如在发送设备与接收设备之间的每十次传输之后。在另一示例中,此操作可以发生在一定时间段之后;传输之后的一定时间段之后,或者此操作周期性地发生(例如,在每天的指定时间;在每周的指定日期的指定时间)。在另一示例中,此操作可以在接收设备每次用信号通知发送设备其希望在下一次通信中改变密钥时发生。此操作可以根据策略控制并且可以因为例如接收设备的接收者所感知的当前风险水平而改变。
图5A示出了一个或多个非接触卡500,非接触卡500可以包括由卡500的正面或背面上显示的服务提供者505发行的支付卡,例如信用卡、借记卡或礼品卡。非接触卡500与支付卡无关,并且可以包括但不限于标识卡。在一些示例中,支付卡可以包括双接口非接触支付卡。非接触卡500可以包括基板510,该基板可以包括由塑料、金属和其他材料构成的单个层或一个或多个叠层。示例性的基板材料包括聚氯乙烯、聚氯乙烯乙酸酯、丙烯腈丁二烯苯乙烯、聚碳酸酯、聚酯、阳极氧化的钛、钯、金、碳、纸和可生物降解的材料。在一些示例中,非接触卡500可以具有符合ISO/IEC 7810标准的ID-1格式的物理特性,并且非接触卡可以另外符合ISO/IEC 14443标准。然而,应当理解,根据本公开的非接触卡500可以具有不同的特性,并且本公开不要求非接触卡以支付卡的形式实现。
非接触卡500还可以包括显示在卡的正面和/或背面上的标识信息515以及接触片520。接触片520可被配置为建立与另一通信设备(例如,用户设备、智能手机、笔记本计算机、桌面计算机或平板计算机)的通信。非接触卡500还可以包括处理电路、天线和图5A中未示出的其他组件。这些组件可以位于接触片520的后面或基板510上的其他地方。非接触卡500也可以包括磁条或磁带,这些磁条和磁带可以位于卡的背面(图5A中未示出)。
如图5B所示,图5A的接触片520可以包括用于存储和处理信息的处理电路525,该处理电路包括微处理器530和存储器535。可以理解,处理电路525可以包含其他组件,其中包括执行本文所述功能所必需的处理器、存储器、错误和奇偶校验/CRC校验器、数据编码器、防冲突算法、控制器、命令解码器、安全原语和防篡改硬件。
存储器535可以是只读存储器、一次写入多次读取存储器或读/写存储器,例如RAM、ROM和EEPROM,并且非接触卡500可以包括这些存储器中的一个或多个。只读存储器可以在工厂编程为只读,也可进行一次性编程。一次性编程功能提供了一次写入然后多次读取的机会。一次写入/多次读取存储器可以在存储芯片出厂后的某个时间点进行编程。存储器一旦被编程,就无法进行重写,但是可以多次读取。读/写存储器可以在出厂后进行多次编程和重编程。它也可以被读取多次。
存储器535可被配置为存储一个或多个小程序540、一个或多个计数器545以及客户标识符550。一个或多个小程序540可以包括被配置为在一个或多个非接触卡上执行的一个或多个软件应用,例如Java Card小程序。然而,应当理解,小程序540不限于Java Card小程序,而是可以包括可在非接触卡或其他具有有限存储器的设备上运行的任何软件应用。一个或多个计数器545可包括足以存储整数的数字计数器。客户标识符550可以包括分配给非接触卡500的用户的唯一字母数字标识符,该标识符可以区分此非接触卡的用户与其他非接触卡的用户。在一些示例中,客户标识符550可以识别客户和分配给该客户的帐户,并且可以进一步识别与客户的帐户相关联的非接触卡。
上述示例性实施例的处理器和存储器元件是参考接触片描述的,但是本公开不限于此。应当理解,这些元件可以在接触片520的外部实现或与接触片520完全分离,或者作为位于接触片520内的处理器530和存储器535之外的其他元件实现。
在一些示例中,非接触卡500可以包括一个或多个天线555。一个或多个天线555可被放置在非接触卡500内并且在接触片520的处理电路525周围。一个或多个天线555可以与处理电路525集成在一起,并且一个或多个天线555可以与外部升压线圈一起使用。作为另一示例,一个或多个天线555可以位于接触片520和处理电路525的外部。
在一个实施例中,非接触卡500的线圈可以用作空芯变压器的次级。终端可以通过切断功率或幅度调制来与非接触卡500通信。非接触卡500可以使用非接触卡的电源连接(可以通过一个或多个电容器来保持功能)中的间隙来推断从终端发送的数据。非接触卡500可以通过切换非接触卡的线圈上的负载或负载调制来进行通信。负载调制可以通过干扰在终端的线圈中检测到。
如上所述,非接触卡500可以建立在可在智能卡或具有有限存储器的其他设备上运行的软件平台(例如JavaCard)上,并且可以安全地执行一个或多个应用或小程序。在各种基于移动应用的用例中,可以将小程序添加到非接触卡中以提供一次性密码(OTP)来实现多因素身份验证(MFA)。可以将小程序配置为响应于来自读卡器(例如移动NFC读卡器)的一个或多个请求(例如近场数据交换请求),并生成NDEF消息,该消息包括编码为NDEF文本标签的加密安全OTP。
图6示出了根据示例实施例的NDEF短记录布局(SR=1)600。可以将一个或多个小程序配置为将OTP编码为NDEF 4类公知的文本标签。在一些示例中,NDEF消息可以包括一个或多个记录。可以将小程序配置为除了OTP记录外还添加一个或多个静态标签记录。示例性标签包括但不限于标签类型:公知的类型、文本、编码英语(en);小程序ID:D2760000850101;功能:只读访问;编码:认证消息可以编码为ASCII十六进制;可以提供类型长度值(TLV)数据作为可用于生成NDEF消息的个人证卡发行参数。在一个实施例中,认证模板可以包括第一记录,该第一记录具有用于提供实际动态认证数据的公知索引。
图7示出了根据示例实施例的消息710和消息格式720。在一个示例中,如果要添加其他标签,则第一个字节可能会发生更改以指示消息开始而不是结束,并且可以添加后续记录。因为ID长度为零,所以记录中省略了ID长度字段和ID。示例消息可以包括:UDK AUT密钥;派生的AUT会话密钥(使用0x00000050);版本1.0;pATC=0x00000050;RND=4838FB7DC171B89E;MAC=<八个计算字节>。
在一些示例中,可以通过在安全通道协议2下实现STORE DATA(E2),在个人证卡发行时将数据存储在非接触卡中。一个或多个值可以由个人证卡发行部门从EMBOSS文件中读取(在小程序ID指定的部分中),并且在认证和建立安全通道之后,可以将一个或多个存储数据命令发送到非接触卡。
pUID可以包括16位BCD编码数字。在一些示例中,pUID可以包括14个数字。
在一些示例中,可以将一个或多个小程序配置为维持其个人证卡发行状态以便仅在解锁和认证后才允许个人证卡发行。其他状态可以包括标准状态预个人证卡发行。在进入终止状态时,可以将一个或多个小程序配置为删除个人证卡发行数据。在终止状态下,可以将一个或多个小程序配置为停止响应所有应用协议数据单元(APDU)请求。
可以将一个或多个小程序配置为维护小程序版本(2字节),此版本可以在认证消息中使用。在一些示例中,此版本可被解释为最高有效字节主要版本、最低有效字节次要版本。每个版本的规则被配置为解释认证消息:例如,对于主要版本,这可以包括每个主要版本包含特定的认证消息布局和特定的算法。对于次要版本,除了错误修复、安全性增强等之外,不包括对认证消息或密码算法的更改,以及对静态标签内容的更改。
在一些示例中,可以将一个或多个小程序可被配置为模拟RFID标签。RFID标签可以包括一个或多个多态标签。在一些示例中,每次读取标签时,都会显示不同的密码数据,这些密码数据可以指示非接触卡的真实性。基于一个或多个应用,可以处理标签的NFC读取,可以将令牌发送到服务器,例如后端服务器,并且可以在服务器上验证令牌。
在一些示例中,非接触卡和服务器可以包括特定数据,使得可以正确地识别卡。非接触卡可以包括一个或多个唯一标识符。可以将计数器配置为每次发生读取操作时进行更新。在一些示例中,每次读取卡时,将其发送到服务器以进行验证并确定计数器是否相等(作为验证的一部分)。
一个或多个计数器可被配置为防止重放攻击。例如,如果已经获取并重放了密码,则在已经读取或使用或以其他方式跳过计数器的情况下,立即拒绝该密码。如果计数器尚未使用,则可以被重放。在一些示例中,在卡上更新的计数器与针对交易更新的计数器不同。在一些示例中,非接触卡可以包括第一小程序和第二小程序,第一小程序可以是交易小程序。每个小程序可以包括一个计数器。
在一些示例中,计数器可能在非接触卡与一个或多个服务器之间不同步。例如,可以激活非接触卡以更新计数器并使得非接触卡产生新的通信,但是该通信不能发送到一个或多个服务器处进行处理。这可能导致非接触卡的计数器与在一个或多个服务器上维护的计数器不同步。例如,这种情况可能在无意间发生,例如当卡被放置在设备附近(例如,随设备一起放在口袋中)时,以及当以一定角度读取非接触卡时,该卡未对齐或定位不准,使得非接触卡已接通NFC场,但无法读取。如果将非接触卡放置在设备附近,则设备的NFC场可能会打开并为非接触卡供电,从而导致其中的计数器被更新,但是设备上的应用未能接收到通信。
为了保持计数器同步,可以执行诸如后台应用之类的应用,该应用被配置为检测移动设备何时唤醒并与一个或多个服务器同步,从而指示由于检测而执行的读取接着使计数器前移。由于非接触卡的计数器与一个或多个服务器的计数器可能不同步,因此可以配置一个或多个服务器以允许非接触卡的计数器在被一个或多个服务器读取之前被更新阈值次数或预定次数,并且仍被视为有效。例如,如果将计数器配置为在每次指示激活非接触卡时递增(或递减)1,则一个或多个服务器可以允许其从非接触卡中读取的任何计数器值都是有效的,或者任何计数器值都在阈值范围内(例如,从1到10)。而且,一个或多个服务器可被配置为请求与非接触卡相关联的手势,例如用户轻击,前提是它读取的计数器值已经超过10但又低于另一阈值范围值(例如1000)。在用户轻击之后,如果计数器值在期望或接受范围内,则认证成功。
图8是示出根据示例实施例的密钥操作800的流程图。如图8所示,在框810处,可以将两个银行标识符号码(BIN)等级的主密钥与帐户标识符和卡序列号结合使用,以产生每张卡两个唯一派生密钥(UDK)。在一些示例中,银行标识符号码可以包括一个号码,或一个或多个号码的组合,例如由一个或多个服务器提供的帐号或不可预测的号码可用于会话密钥的生成和/或分散化。UDK(AUTKEY和ENCKEY)可以在个人证卡发行过程中存储在卡上。
在框820处,计数器可用作分散化数据,因此它在每次使用时改变,并且每次提供一个不同的会话密钥,这与其中针对每个卡产生一个唯一的密钥集的主密钥派生相反。在一些示例中,优选地针对这两种操作都使用4字节方法。因此,在框820处,可以针对每次交易通过UDK创建两个会话密钥,即,一个来自AUTKEY的会话密钥和一个来自ENCKEY的会话密钥。在卡中,对于MAC密钥(即,通过AUTKEY创建的会话密钥),可以将OTP计数器的两个低位字节用于分散化。对于ENC密钥(即,通过ENCKEY创建的会话密钥),可以将OTP计数器的全部长度用于ENC密钥。
在框830处,可使用MAC密钥准备MAC密码,并且可使用ENC密钥对密码进行加密。例如,可使用MAC会话密钥准备密码,并且可以在结果被发送到一个或多个服务器之前用ENC密钥对结果进行加密。
在框840处,简化MAC的验证和处理,因为在支付HSM的MAC认证功能中直接支持2字节的分散化。密码的解密在MAC验证之前执行。会话密钥是在一个或多个服务器上独立派生的,从而产生第一会话密钥(ENC会话密钥)和第二会话密钥(MAC会话密钥)。第二派生密钥(即,ENC会话密钥)可用于对数据进行解密,第一派生密钥(即,MAC会话密钥)可用于验证解密的数据。
对于非接触卡,派生出不同的唯一标识符,该标识符可以与在卡中编码的应用主帐号(PAN)和PAN序列号相关。密钥可被配置为接收标识符作为主密钥的输入,使得可以为每个非接触卡创建一个或多个密钥。在一些示例中,这些分散化密钥可以包括第一密钥和第二密钥。第一密钥可以包括认证主密钥(卡密码生成/认证密钥-Card-Key-Auth),并且可以进一步分散化以创建在生成和验证MAC密码时使用的MAC会话密钥。第二密钥可以包括加密主密钥(卡数据加密密钥-Card-Key-DEK),并且可以进一步分散化以创建在对带密码的数据进行加密和解密时使用的ENC会话密钥。在一些示例中,通过将发行者主密钥与卡的唯一ID号(pUID)和支付小程序的PAN序列号(PSN)进行组合来使发行者主密钥分散化的方式创建第一和第二密钥。该pUID可以包括16位数字值。如上所述,pUID可以包括16位BCD编码数字。在一些示例中,pUID可以包括14位数字值。
在一些示例中,由于EMV会话密钥派生方法可以在2^16次使用之后重叠,因此可以将诸如全32位计数器之类的计数器添加到分散化方法的初始化阵列中。
在其他示例中(例如信用卡),可以将一个或多个服务器提供的数字(例如帐号或不可预测的数字)用于会话密钥的生成和/或分散化。
图9示出了被配置为实现本公开的一个或多个实施例的系统900的图。如下所述,在非接触卡创建过程中,可以为每个卡唯一地分配两个密码密钥。密码密钥可以包括对称密钥,该对称密钥可同时用于数据的加密和解密。EMV可以使用三重DES(3DES)算法,该算法由非接触卡中的硬件实现。通过使用密钥分散化过程,可以基于需要密钥的每个实体的唯一可识别信息从主密钥中派生一个或多个密钥。
关于主密钥管理,针对上面发行一个或多个小程序的文件夹的每个部分,需要两个发行者主密钥905、910。例如,第一主密钥905可以包括发行者密码生成/认证密钥(Iss-Key-Auth),并且第二主密钥910可以包括发行者数据加密密钥(Iss-Key-DEK)。如本文中进一步解释的,两个发行者主密钥905、910被分散化为卡的主密钥925、930,这些主密钥对于每个卡都是唯一的。在一些示例中,可以使用作为后台数据的网络简档记录ID(pNPR)915和派生密钥索引(pDKI)920来识别哪些发行者主密钥905、910在密码处理中用于认证。执行认证的系统可被配置为在认证时检索非接触卡的pNPR 915和pDKI 920的值。
在一些示例中,为了提高解决方案的安全性,可以派生会话密钥(例如每个会话的唯一密钥),而不是使用主密钥,如上所述,可以使用唯一的卡派生密钥和计数器来作为分散化数据。例如,每当在操作中使用卡时,便可使用不同的密钥来创建消息认证码(MAC)并执行加密。关于会话密钥生成,用于生成密码以及对一个或多个小程序中的数据进行加密的密钥可以包括基于卡唯一密钥(Card-Key-Auth 925和Card-Key-Dek 930)的会话密钥。会话密钥(Aut-Session-Key 935和DEK-Session-Key 940)可以由一个或多个小程序生成,并且可以通过一个或多个算法,使用应用交易计数器(pATC)945派生出。为了使数据适合一个或多个算法,仅使用4字节pATC 945的2个低位字节。在一些示例中,四字节会话密钥派生方法可以包括:F1:=PATC(2个低位字节)||'F0'||'00'||PATC(四个字节)F1:=PATC(2个低位字节)||'0F'||'00'||PATC(四个字节)SK:={(ALG(MK)[F1])||ALG(MK)[F2]},其中ALG包含3DES ECB,而MK包含卡唯一派生主密钥。
如本文所述,可以使用pATC 945计数器的两个低位字节派生出一个或多个MAC会话密钥。pATC 945被配置为在每次轻击非接触卡时更新,并且卡主密钥Card-Key-AUTH 925和Card-Key-DEK 930进一步分散化为会话密钥Aut-Session-Key 935和DEK-Session-KEY940。可以在个人证卡发行或小程序初始化时将pATC 945初始化为零。在一些示例中,pATC计数器945可以在个人证卡发行时或个人证卡发行之前被初始化,并且可被配置为在每次NDEF读取时递增1。
此外,每个卡的更新可以是唯一的,并且可以通过个人证卡发行来分配,或者可以通过pUID或其他标识信息在算法上进行分配。例如,奇数编号的卡递增或递减2,而偶数编号的卡递增或递减5。在一些示例中,更新还可以在顺序读取时发生变化,使得一张卡可以依次递增1、3、5、2、2、......以此一直重复。特定序列或算法序列可以在个人证卡发行时定义,或者通过派生自唯一标识符的一个或多个过程定义。这样,重放攻击者就更难根据少量的卡实例进行推断。
认证消息可以作为十六进制ASCII格式的文本NDEF记录的内容传递。在一些示例中,仅包括认证数据和后跟认证数据的MAC的8字节随机数。在一些示例中,随机数可以在密码A之前并且可以是一个块长。在其他示例中,对随机数的长度没有任何限制。在进一步的示例中,总数据(即,随机数加上密码)可以是块大小的倍数。在这些示例中,可以添加一个额外的8字节块以匹配由MAC算法产生的块。作为另一示例,如果所采用的算法使用了16字节块,则甚至可以使用该块大小的倍数,或者可以自动或手动将输出填充为该块大小的倍数。
MAC可以由功能密钥(AUT-会话密钥)935执行。可以用javacard.signature方法:ALG_DES_MAC8_ISO9797_1_M2_ALG3处理在密码中指定的数据,以与EMV ARQC验证方法进行关联。如上所述,用于该计算的密钥可以包括会话密钥AUT-Session-Key 935。如上所述,计数器的两个低位字节可用于使一个或多个MAC会话密钥分散化。如下所述,AUT-Session-Key 935可以用于MAC数据950,并且可以使用DEK-Session-KEY 940对结果数据或密码A955和随机数RND进行加密,以创建在消息中发送的密码B或输出960。
在一些示例中,可以处理一个或多个HSM命令以进行解密,以使最后的16(二进制,32十六进制)字节可以包括使用CBC模式的3DES对称加密,此模式包含后跟MAC认证数据的随机数-零IV。用于此加密的密钥可以包括从Card-Key-DEK 930派生的会话密钥DEK-Session-Key 940。在这种情况下,用于会话密钥派生的ATC值是计数器pATC 945的最低有效字节。
以下格式表示二进制版本示例实施例。此外,在一些示例中,第一字节可以设置为ASCII'A'。
另一示例性格式在下面示出。在该示例中,标签可以以十六进制格式编码。
可以提取所接收的消息的UID字段,以通过主密钥Iss-Key-AUTH 905和Iss-Key-DEK 910派生出特定卡的卡主密钥(Card-Key-Auth 925和Card-Key-DEK 930)。通过使用卡主密钥(Card-Key-Auth 925和Card-Key-DEK 930),所接收的消息的计数器(pATC)字段可用于派生该特定卡的会话密钥(Aut-Session-Key 935和DEK-Session-Key 940)。可以使用DEK-Session-KEY对密码B 960进行解密,从而产生密码A 955和RND,RND可以被丢弃。UID字段可用于查找非接触卡的共享机密,该共享机密与消息的Ver、UID和pATC字段一起借助密码MAC,使用重新创建的Aut-Session-Key进行处理,从而创建MAC输出(例如MAC')。如果MAC'与密码A 955相同,则表明消息解密和MAC检查均已通过。然后,可以读取pATC以确定其是否有效。
在认证会话期间,一个或多个应用可以生成一个或多个密码。例如,可以经由一个或多个会话密钥(例如Aut-Session-Key 935),使用具有方法2填充的ISO 9797-1算法3,生成一个或多个密码作为3DES MAC。输入数据950可采用以下形式:版本(2)、pUID(8)、pATC(4)、共享机密(4)。在一些示例中,括号中的数字可以包括以字节为单位的长度。在一些示例中,共享机密可以由一个或多个随机数生成器生成,该随机数生成器可被配置为通过一个或多个安全过程来确保该随机数是不可预测的。在一些示例中,共享机密可以包括在认证服务已知的个人证卡发行时间注入到卡中的4字节二进制随机数。在认证会话期间,共享机密不会从一个或多个小程序提供给移动应用。方法2填充可以包括在输入数据的末尾添加一个强制性的0x'80'字节,并在结果数据的末尾添加0x'00'字节,直到到达8x边界。结果密码可以包括8字节的长度。
在一些示例中,使用MAC密码将作为第一块的未共享的随机数进行加密的一个好处是,该随机数在使用对称加密算法的CBC(块链接)模式时充当初始化向量。这样,不必预先建立固定的或动态的IV便可允许块之间的“加扰”。
通过将应用交易计数器(pATC)作为MAC密码中包含的数据的一部分包括在内,认证服务可被配置为确定明文数据中传递的值是否已被篡改。此外,通过将版本包括在一个或多个密码中,攻击者很难有目的地错误地表示应用版本,以尝试降低密码解决方案的强度。在一些示例中,pATC从零开始并在一个或多个应用每次生成认证数据时以1更新。认证服务可被配置为跟踪在认证会话期间使用的pATC。在一些示例中,当认证数据使用等于或小于认证服务接收到的先前值的pATC时,这可以被解释为尝试重放旧消息,并且可以拒绝认证。在一些示例中,如果pATC大于接收到的先前值,则可以通过评估来确定它是否在可接受的范围或阈值之内,如果它超出或不在该范围或阈值,则可以认为验证失败或不可靠。在MAC操作936中,使用Aut-Session-Key 935,通过MAC处理数据950,以产生被加密的MAC输出(密码A)955。
为了提供额外保护以阻止暴露卡上密钥的暴力攻击,需要对MAC密码955进行加密。在一些示例中,要包括在密文中的数据或密码A 955可以包括:随机数(8)、密码(8)。在一些示例中,括号中的数字可以包括以字节为单位的长度。在一些示例中,该随机数可以由一个或多个随机数生成器生成,该随机数生成器可被配置为通过一个或多个安全过程来确保该随机数是不可预测的。用于对该数据进行加密的密钥可以包括会话密钥。例如,会话密钥可以包括DEK-Session-Key 940。在加密操作941中,使用DEK-Session-Key 940处理数据或密码A 955和RND,以产生加密数据、密码B 960。数据955可以使用3DES以密码块链接模式进行加密,从而确保攻击者必须对所有密文进行任何攻击。作为非限制性示例,可以使用其他算法,例如高级加密标准(AES)。在一些示例中,可以使用0x'0000000000000000'初始化向量。任何试图强行破解用于对该数据进行加密的密钥的攻击者都将无法确定何时使用了正确的密钥,因为正确解密的数据因为其随机出现而无法与错误解密的数据区分开。
为了使认证服务能够验证一个或多个小程序提供的一个或多个密码,必须在认证会话期间将下面的数据从一个或多个小程序以明文方式传送到移动设备:版本号;其用于确定所使用的加密方法以及用于验证密码的消息格式,从而使该方法在将来能够改变;pUID,其用于检索加密资产并派生出卡密钥;以及pATC;其用于派生出用于密码的会话密钥。
图10示出了用于生成密码的方法1000。例如,在框1010出,可以使用网络简档记录ID(pNPR)和派生密钥索引(pDKI)来识别哪些发行者主密钥在密码处理中用于认证。在一些示例中,此方法可以包括在认证时执行认证以检索非接触卡的pNPR和pDKI的值。
在框1020处,可以通过将发行者主密钥与卡的唯一ID号(pUID)和一个或多个小程序(例如支付小程序)的PAN序列号(PSN)进行组合来使发行者主密钥分散化。
在框1030处,可以通过使发行者主密钥分散化以产生可用于生成MAC密码的会话密钥来创建Card-Key-Auth和Card-Key-DEK(唯一卡密钥)。
在框1040处,用于生成密码并对一个或多个小程序中的数据进行加密的密钥可以包括框1030的基于卡唯一密钥(Card-Key-Auth和Card-Key-DEK)的会话密钥。在一些示例中,这些会话密钥可以由一个或多个小程序生成并通过使用pATC而派生,从而产生会话密钥Aut-Session-Key和DEK-Session-Key。
图11示出了根据一个示例的显示密钥分散化的示例性过程1100。最初,可以为发送者和接收者提供两个不同的主密钥。例如,第一主密钥可以包括数据加密主密钥,第二主密钥可以包括数据完整性主密钥。发送者具有一个计数器值(该计数器值可以在框1110处更新),以及其他数据,例如确保与接收者共享的要保护的数据。
在框1130处,发送者可以使用数据加密主密钥来产生数据加密派生的会话密钥来对计数器值进行加密,并且发送者还可以使用数据完整性主密钥来产生数据完整性派生的会话密钥来对计数器值进行加密。在一些示例中,可以在两次加密期间使用整个计数器值或计数器值的一部分。
在一些示例中,可以不对计数器值进行加密。在这些示例中,计数器可以以明文的形式(即没有加密)在发送者与接收者之间发送。
在框1130处,发送者使用数据完整性会话密钥和密码MAC算法,通过密码MAC操作来处理要保护的数据。可以使用其中一个会话密钥(AUT-Session-Key),利用受保护的数据(包括纯文本和共享机密)产生MAC。
在框1140处,发送者结合使用数据加密派生的会话密钥与对称加密算法来对要保护的数据进行加密。在一些示例中,MAC与相等数量的随机数据(例如,每个8字节长)组合在一起,然后使用第二会话密钥(DEK-Session-Key)进行加密。
在框1150处,将加密的MAC从发送者发送到接收者,其中具有足够的信息来识别用于验证密码的附加机密信息(例如共享机密、主密钥等)。
在框1160处,如上所述,接收者使用接收到的计数器值,通过两个主密钥独立地派生出两个派生的会话密钥。
在框1170处,结合使用数据加密派生的会话密钥和对称解密操作来对受保护的数据进行解密。然后对交换的数据进行额外的处理。在一些示例中,在提取MAC之后,需要再现并匹配MAC。例如,当验证密码时,可以使用适当生成的会话密钥来对密码进行解密。可以重构受保护的数据以进行验证。可以使用适当生成的会话密钥来执行MAC操作,以确定其是否与解密的MAC相匹配。由于MAC操作是不可逆的过程,因此验证的唯一方法是尝试通过源数据重新创建它。
在框1180处,结合使用数据完整性派生的会话密钥和密码MAC操作来验证受保护的数据尚未被修改。
当满足以下条件时,本文描述的方法的一些示例可以有利地确认何时确定成功的认证。首先,验证MAC的能力表明派生的会话密钥是正确的。仅当解密成功并产生正确的MAC值时,MAC才是正确的。成功的解密可以表明使用正确派生的加密密钥对加密MAC进行了解密。由于派生的会话密钥是使用仅对发送者(例如,发送设备)和接收者(例如,接收设备)已知的主密钥创建的,因此可以相信,最初创建MAC并对MAC进行加密的非接触卡确实是真实的。而且,用于派生第一和第二会话密钥的计数器值可被示为有效的并且可以用于执行认证操作。
此后,可以丢弃这两个派生的会话密钥,并且在数据交换的下一迭代时更新计数器值(返回到框1110),而且可以创建新的会话密钥集(在框1130处)。在一些示例中,可以丢弃组合的随机数据。
本文描述的系统和方法的示例实施例可被配置为提供安全因素认证。安全因素认证可以包括多个过程。作为安全因素认证的一部分,第一过程可以包括经由在设备上执行的一个或多个应用来登录并验证用户。作为第二过程,响应于经由一个或多个应用在第一过程的成功登录和验证,用户可以参与与一个或多个非接触卡相关联的一个或多个行为。实际上,安全因素认证可以同时包括安全地证明用户的身份以及参与与非接触卡相关联的一种或多种类型的行为,其中包括但不限于一个或多个轻击手势。在一些示例中,一个或多个轻击手势可以包括用户对着设备轻击非接触卡轻击。在一些示例中,该设备可以包括移动设备、销售亭、终端、平板计算机或被配置为处理所接收到的轻击手势的任何其他设备。
在一些示例中,可以对着诸如一个或多个计算机销售亭或终端之类的设备轻击非接触卡,以验证身份,从而响应于购买接收交易物品,诸如咖啡。通过使用非接触卡,可以建立一种在忠诚度计划中证明身份的安全方法。以不同于仅扫描条形卡的方式安全地证明身份,从而例如获取奖励、优惠券、优惠等或者接收收益。例如,非接触卡与可被配置为处理一个或多个轻击手势的设备之间可以发生加密交易。如上所述,可以将一个或多个应用配置为例如经由一个或多个轻击手势验证用户的身份,然后使用户对其作出反应或响应。在一些示例中,可以将诸如奖励积分、忠诚度积分、奖赏积分、医疗保健信息等的数据写回到非接触卡。
在一些示例中,可以对着诸如移动设备之类的设备轻击非接触卡。如上所述,可以通过一个或多个应用来验证用户的身份,该一个或多个应用然后基于身份验证向用户授予期望的利益。
在一些示例中,非接触卡可以通过对着诸如移动设备之类的设备轻击来激活。例如,非接触卡可以经由设备的读卡器,通过NFC通信与设备的应用进行通信。其中在靠近设备的读卡器时轻击卡的通信允许设备的应用读取与非接触卡相关联的数据并激活卡。在一些示例中,激活可以授权卡用于执行其他功能,例如购买、访问帐户或受限信息或其他功能。在一些示例中,轻击可以激活或启动设备的应用,然后发起一个或多个动作或与一个或多个服务器的通信以激活非接触卡。如果设备上未安装应用,则在靠近读卡器时轻击非接触卡会启动应用的下载,例如导航到应用下载页面。在安装之后,轻击非接触卡可以激活或启动应用,然后例如经由应用或其他后端通信来启动非接触卡的激活。激活之后,非接触卡可以用于各种活动,其中包括但不限于商业交易。
在一些实施例中,专用应用可被配置为在客户端设备上运行,从而执行非接触卡的激活。在其他实施例中,网络门户、基于网络的应用、小程序等可以执行激活。激活可以在客户端设备上执行,或者客户端设备可以仅充当非接触卡与外部设备(例如,帐户服务器)之间的通道。根据一些实施例,在提供激活时,应用可以向帐户服务器指示执行激活的设备类型(例如,个人计算机、智能电话、平板计算机或销售点(POS)设备)。此外,取决于所涉及的设备类型,应用可以向帐户服务器输出(用于传输)不同的和/或附加的数据。例如,这样的数据可以包括与商户相关联的信息,例如商户类型、商户ID,以及与设备类型本身相关联的信息,例如POS数据和POS ID。
在一些实施例中,示例认证通信协议可以模仿通常在交易卡与销售点设备之间执行的EMV标准的离线动态数据认证协议,并进行一些修改。例如,由于示例认证协议本身并未用于完成与卡发行者/支付处理器的支付交易,因此不需要某些数据值,无需与卡发行者/支付处理器进行实时在线连接便可执行认证。如本领域中已知的,销售点(POS)系统向卡发行者提交包括交易值的交易。发行者批准还是拒绝交易取决于卡发行者是否认识到交易值。同时,在本公开的某些实施例中,源自移动设备的交易缺乏与POS系统相关联的交易值。因此,在一些实施例中,可以将虚拟交易值(即,卡发行者可识别的足以允许发生激活的值)作为示例认证通信协议的一部分来传递。基于POS的交易还可根据交易尝试次数(例如,交易计数器)拒绝交易。超出缓冲值的尝试次数可能会导致温和拒绝,温和拒绝需要进一步的验证才能接受交易。在一些实现中,可以修改交易计数器的缓冲值以避免拒绝合法交易。
在一些示例中,非接触卡可以根据接收者设备选择性地传送信息。一旦轻击,非接触卡就可以识别轻击指向的设备,并且基于该识别,非接触卡可以为该设备提供适当的数据。这有利地允许非接触卡仅发送完成即时操作或交易(例如支付或卡认证)所需的信息。通过限制数据的传送并避免非必要数据的传送,可以同时提高效率和数据安全性。信息的识别和选择性传送可应用于各种场景,其中包括卡激活、余额转账、帐户访问尝试、商业交易和减少欺诈。
如果非接触卡轻击指向运行Apple的
作为另一示例,非接触卡轻击可以指向POS设备,其中包括但不限于销售亭、结帐台、支付站或其他终端。在执行轻击时,非接触卡可以识别POS设备并仅发送操作或交易所需的信息。例如,在识别出用于完成商业交易的POS设备之后,非接触卡可以根据EMV标准传送完成交易所需的支付信息。
在一些示例中,参与交易的POS设备可以要求或指定将由非接触卡提供的附加信息,例如设备特定的信息、位置特定的信息和交易特定的信息。例如,一旦POS设备接收到来自非接触卡的数据通信,POS设备便可识别非接触卡并请求完成操作或交易所需的附加信息。
在一些示例中,POS设备可以附属于熟悉某些非接触卡或习惯于执行特定非接触卡交易的授权商户或其他实体。但是,应当理解,执行所描述的方法不需要这种附属关系。
在一些示例中,例如购物店、杂货店、便利店等,可以对着设备轻击非接触卡而不必打开应用来指示使用奖励积分、忠诚度积分、优惠券、优惠等中的一项或多项来实现一项或多项购买的意愿或意图。因此,提供了购买背后的意图。
在一些示例中,可以将一个或多个应用配置为确定其是经由一个或多个轻击非接触卡的手势启动的,在下午3:51启动,在下午3:56处理或发生交易,从而验证用户身份。
在一些示例中,可以将一个或多个应用配置为响应于一个或多个轻击手势来控制一个或多个动作。例如,一个或多个动作可以包括收集奖励,收集积分,确定最重要的购买,确定成本最低的购买和/或实时地重新配置为另一动作。
在一些示例中,可以在轻击行为发生时收集数据执行生物识别/手势认证。例如,可以将被密码保护的并且不容易被拦截的唯一标识符发送到一个或多个后端服务。可以将唯一标识符配置为查找有关个人的辅助信息。辅助信息可以包括有关用户的个人可识别信息。在一些示例中,辅助信息可以存储在非接触卡内。
在一些示例中,设备可以包括在多个个人之间分割支付账单或核对的应用。例如,每个人都持有非接触卡,并且是同一发卡金融机构的客户,但这不是必需的。这些人中的每个人都经由应用在其设备上接收拆分购买的推送通知。不是仅接受指示付款一个卡的轻击,也使用其他非接触卡。在一些示例中,具有不同金融机构的个人可以持有非接触卡,以提供信息来发起来自轻击卡的个人的一个或多个付款请求。
以下示例性用例描述了本公开的特定实现的示例。这些仅用于说明目的,而不是为了限制。在一种情况下,第一位朋友(付款人)欠第二位朋友(收款人)一笔钱。付款人希望使用非接触卡通过收款人的智能手机(或其他设备)付款,而不是去ATM或通过对等应用进行交易。收款人在其智能手机上登录到适当的应用,然后选择付款请求选项。作为响应,应用经由收款人的非接触卡请求认证。例如,应用输出一个显示来要求收款人轻击其非接触卡。一旦收款人在启用应用的情况下对着智能手机的屏幕轻击非接触卡,便会读取并验证非接触卡。接下来,应用显示一个提示,要求付款人轻击其非接触卡进行付款。在付款人轻击其非接触卡之后,应用将读取卡信息,并经由相关联的处理器将付款请求发送给付款人的卡发行者。卡发行者处理交易并将交易的状态指示发送到智能手机。然后,应用输出以显示交易的状态指示。
在另一示例情况下,信用卡客户可通过邮件接收新的信用卡(或借记卡、其他支付卡或任何其他需要激活的卡)。客户可以决定经由其设备(例如,诸如智能手机之类的移动设备)上的应用来激活卡,而不是通过拨打所提供的与卡发行者相关联的电话号码或访问网站来激活卡。客户可以从设备显示屏上显示的应用菜单中选择卡激活功能。应用提示客户对着屏幕轻击其信用卡。对着设备屏幕轻击信用卡之后,可以将应用配置为与服务器(例如激活客户的卡的卡发行者服务器)进行通信。然后,应用可以显示消息来指示卡成功激活。然后完成卡的激活。
图12示出了根据示例实施例的用于卡激活的方法1200。例如,卡激活可以由包括卡、设备和一个或多个服务器的系统来完成。非接触卡、设备和一个或多个服务器可以是指先前在上面参考图1A、图1B、图5A和图5B解释的相同或相似的组件,例如非接触卡105、客户端设备110和服务器120。
在框1210处,可以将卡配置为动态生成数据。在一些示例中,该数据可以包括诸如帐号、卡标识符、卡验证值或电话号码之类能够从卡传送到设备的信息。在一些示例中,可以经由本文公开的系统和方法对数据的一个或多个部分进行加密。
在框1220处,可以经由NFC或其他无线通信将动态生成的数据的一个或多个部分传送到设备的应用。例如,轻击靠近设备的卡允许设备的应用读取与非接触卡相关联的数据的一个或多个部分。在一些示例中,如果设备不包括用于帮助激活卡的应用,则轻击卡可以引导设备或提示客户到软件应用商店下载相关联的应用以激活卡。在一些示例中,可以提示用户朝着设备的表面对卡执行满足要求的手势、放置或定向,例如以一定角度或平坦地将卡放置在设备的表面上、表面附近,或者靠近表面。响应于对卡执行满足要求的手势、放置和/或定向,设备可以继续将从卡接收的数据的一个或多个加密部分传送到一个或多个服务器。
在框1230处,可以将数据的一个或多个部分传送到一个或多个服务器,例如卡发行者服务器。例如,可以将数据的一个或多个加密部分从设备传送到卡发行者服务器以激活卡。
在框1240处,一个或多个服务器可以经由本文公开的系统和方法对数据的一个或多个加密部分进行解密。例如,一个或多个服务器可以从设备接收加密数据,并且可以对其进行解密,以便将所接收的数据与一个或多个服务器可访问的记录数据进行比较。如果一个或多个服务器对数据的一个或多个解密部分的比较结果表明匹配成功,则可以激活卡。如果一个或多个服务器对数据的一个或多个解密部分的比较结果表明匹配不成功,则可能发生一个或多个过程。例如,响应于确定匹配不成功,可以提示用户再次做出轻击、轻扫或挥动卡的动作。在这种情况下,存在包括允许用户激活卡的尝试次数的预定阈值。替代地,用户可以在其设备上接收到诸如指示卡验证尝试未成功的消息之类的通知,并且致电、发电子邮件或短信给相关联的服务要求协助激活卡;或者在其设备上接收到诸如指示卡验证尝试未成功的电话之类的通知,并且致电、发电子邮件或短信给相关联的服务要求协助激活卡;或者接收到诸如指示卡验证尝试未成功的电子邮件之类的通知,并且致电、发电子邮件或短信给相关联的服务要求协助激活卡。
在框1250处,一个或多个服务器可以基于卡的成功激活发送返回消息。例如,可以将设备配置为从一个或多个服务器接收指示该一个或多个服务器成功激活卡的输出。可以将设备配置为显示指示卡成功激活的消息。一旦激活了卡,便可将卡配置为中止动态地生成数据,从而避免欺诈性使用。以此方式,此后可以不激活卡,并通知一个或多个服务器该卡已经被激活。
在另一示例情况下,客户想要在其移动电话上访问其财务帐户。客户在移动设备上启动应用(例如,银行应用)并输入用户名和密码。在此阶段,客户可以看到第一级帐户信息(例如,最近购买的商品),并能够执行第一级帐户选项(例如,支付信用卡)。但是,如果用户尝试访问第二级帐户信息(例如,支出限额)或执行第二级帐户选项(例如,转账到外部系统),则他必须具有第二级因素身份验证。因此,应用请求用户提供交易卡(例如,信用卡)进行帐户验证。然后,用户对着移动设备轻击其信用卡,应用将验证该信用卡是否与该用户的帐户相对应。此后,用户可以查看第二级帐户数据和/或执行第二级帐户功能。
本文描述的系统和方法的示例实施例被配置为增加基于计数器的一次性密码(OTP)的安全性。许多OTP系统都依靠基于猜测所有密钥对密码哈希或加密进行暴力攻击的难度。但是,本文公开的系统和方法给该过程增加了难度,从而通过使纯文本组件更难以猜测和生成,提高了基于计数器的OTP的安全性。因此,通过针对每个OTP设备使用不同的起始计数器或唯一的增量,加大根据一个或多个捕获的样本进行推断的难度。
图13示出了根据示例实施例的一次性密码认证系统1300。如下面进一步讨论的,系统1300可以包括非接触卡1310、客户端设备1320、一个或多个网络1330以及至少一个服务器1340。尽管图13示出了单个组件实例,但是系统1300可以包括任何数量的组件。
系统1300可以包括一个或多个非接触卡1310。在一些示例中,非接触卡1310可以与客户端设备1320进行无线通信,例如NFC通信。非接触卡1310可以是指图5A和图5B所示的相同或相似的组件。在一些示例中,非接触卡1310可以包括基板、计数器、处理器和包含至少一个小程序的存储器。
非接触卡1310可被配置为生成一次性密码并将其发送到客户端设备1320,使得每次生成密码时都调整计数器。客户端设备1320可被配置为发送一次密码,并且至少一个服务器1340可被配置为接收一次性密码以进行认证。
在一些示例中,计数器可被配置为针对每个帐户以不同的值开始。例如,对于第一帐户,计数器可以从10开始,而对于第二帐户,计数器可以从100开始。
在一些示例中,计数器可被配置为以非单调序列递增或递减。例如,可以使用前向线性哈希链进行认证并避免冲突,使得可能生成不可预测的一个或多个哈希值的链。例如,可以使用不同的增量或减量值。作为另一示例,对于第一帐户,计数器可以递增(或递减)2,并且对于第二帐户,计数器可以递增(或递减)7。增量或减量不需要是单一值,因此,增量或减量可以基于分配或派生的序列。作为另一示例,分配的序列可以包括计数器,该计数器被配置为对于第一帐户,递增(或递减)1,然后递增(或递减)3,然后递增(或递减)9等等,以此重复,并且对于第二帐户,递增(或递减)7,然后递增(或递减)2,然后递增(或递减)5,以此重复。作为另一示例,分配的序列可以仅包含质数(例如2、3、5、7、11、13、17等),并且计数器值可以指示序列中的点。作为另一示例,分配的序列可以从方程式中派生,该方程式可以合并先前的计数器值。作为示例而非限制,序列的值可以从以下方程式中派生:New_Value N=Previous_Value N*3-1。因此,如果Previous Value N为1,则序列为2、5、14、41、122等等。作为另一示例,如果起始值为零,则序列以-1开头。
计数器的递增或递减可以与一个或多个密码算法相关联。在一些示例中,可以使用一个或多个密码算法来创建序列。一个或多个密码算法可以包括实现附加安全性的一个或多个密码哈希函数。作为示例而非限制,可以使用前向线性哈希。在该示例中,序列可以以随机值开始,并且可以对该值执行加密哈希以生成第一计数器值。然后,可以通过对紧前面的计数器值执行加密哈希来生成后续计数器值,例如,可以通过对第一计数器值执行加密哈希来创建第二计数器值,可以通过对第二计数器值执行加密哈希来创建第三计数器值,依此类推。
在一些示例中,接收设备和发送设备可以各自以公共的起始值和密钥开始。该密钥对于关联该设备执行操作的一个或多个服务器也是已知的。可以利用一个或多个密码算法(例如,HMAC、CMAC、对称加密)来对公共起始值进行加密以获取第一计数器值。如果加密输出的长度对于所分配的内存太大,则输出可能会被截断为所需的多个字节,并用作第一计数器值。然后,截断后的值可以递增并再次被加密以获取下一计数器值。对于需要计数器的每个实例,可以重复递增-加密序列。
在一些示例中,可以在每次交换之前对计数器进行加密。例如,可以通过对起始值进行加密来从起始值(例如,预设值、随机数或其他指定值)生成第一计数器值。然后,可以通过对第一计数器值进行加密来生成第二计数器值,并且可以通过对第二计数器值进行加密来生成第三计数器值,依此类推。
计数器可以是从起点产生一次性密码值所必需的密码操作的驱动器。例如,计数器可以确定生成一次性密码值所需的密码操作次数。
在一些示例中,可以选择一个或多个密码算法,使得能够期望下面的一个或多个密码算法。首先,必须根据对着设备1320做出针对非接触卡的手势(例如轻击)的时间来选择所选算法。例如,希望避免选择时间较长或持续时间较长的算法来执行处理。因此,所选算法的速度取决于执行与所选算法相关联的操作的处理能力、内存限制和其他相关联的可用计算资源。其次,必须选择所选算法,以使生成的输出值不会太大而无法快速重叠。如本文所用,“重叠(wrap)”是指重复其自身的输出值的序列。在一些示例中,计数器的最大值可能被超过,并且计数器可以返回到零值。如果预期会返回零值,则可以接受此结果。在值为1,最大值为1,000的一个简单的数字计数器示例中,允许计数器达到1,000,然后重置为0。相反,不允许计数器值以1,000次重复或以任意值重复多次。使用密码术可能会产生不重叠的计数器值。生成随机且不可法预测的值的密码算法的输出有时会创建与先前生成的值相同的值,但是此重复不可预测,并且序列本身不会重复。
在一些示例中,当计数器超过可以在分配给计数器变量的数字位数内表示的值时,可能发生重叠。例如,需要选择算法,使得对所生成的数字的范围具有一个约束,以便保持长时间来重叠计数器。这样可以避免重放攻击。
在一些示例中,派生的序列可以包括帐户信息和会话信息中的至少一个。对于帐户信息,该信息可以包括多个参数,其中包括唯一标识符、共享机密、卡序列号、卡信息和地址信息、卡编程时间中的至少一个,或者它们的任何组合和/或其一部分。多个参数中的一个或多个可以是动态的,例如唯一的卡标识符。在一些示例中,一个或多个参数可以与另一参数组合以产生派生的序列。作为示例而非限制,帐户信息可用于作为密码算法的种子,以便派生出序列、起点、增量或减量或它们的任何组合。在一些示例中,可以使用一个或多个乘法器来产生一串数字,以确定增量或减量的值。应当理解,根据本公开的利用一次性密码的所有设备均可以具有相同的OTP生成方法和相同的起始值,这可以简化和精简制造和生产。但是,如本文所述,通过利用上述对于每个OTP设备唯一的数据,使OTP计算的输入或输出分散化,可以构造唯一的OTP序列。对于会话信息,该信息可以包括一个或多个值(例如随机值),这些值可以在设备1320与至少一个服务器1340之间建立的会话期间进行交换。例如,每当在会话期间读取计数器时,一个或多个协议(诸如传输层安全性(TLS)或安全套接字层(SSL))都会对设备1320与至少一个服务器1340之间传送的数据进行加密,其中建立会话的序列部分包括交换随机值。
系统1300可以包括客户端设备1320,该客户端设备可以是具有网络功能的计算机。如本文所指,具有网络功能的计算机可以包括但不限于计算机设备或通信设备,例如包括服务器、网络设备、个人计算机(PC)、工作站、移动电话、电话、手持式PC、个人数字助理(PDA)、瘦客户端、胖客户端、Internet浏览器或其他设备。客户端设备1320也可以是移动设备;例如,移动设备可以包括
在根据本公开的各种示例中,系统1300的设备1320可以执行一个或多个应用,例如一个或多个软件应用,这些应用被配置为使得能够与系统1300的一个或多个组件进行通信并发送和/或接收数据。设备1320可以经由一个或多个网络1330与至少一个服务器1340通信,并且可以作为与服务器1340的相应的前端到后端对来操作。设备1320例如可以通过在设备1320上执行的移动设备应用将一个或多个请求发送到至少一个服务器1340。该一个或多个请求可以与检索自至少一个服务器1340的数据相关联。服务器1340可以从设备1320接收一个或多个请求。基于来自设备1320的一个或多个请求,至少一个服务器1340可被配置为从一个或多个数据库(未示出)检索所请求的数据。基于从一个或多个数据库接收到所请求的数据,至少一个服务器1340可被配置为将所接收的数据发送到设备1320,所接收的数据响应于一个或多个请求。
系统1300可以包括一个或多个网络1330。在一些示例中,在一些示例中,网络1330可以是无线网络、有线网络中的一个或多个,或者是无线网络和有线网络的任何组合,并且可被配置为连接设备1320与至少一个服务器1340。例如,网络1330可以包括以下一项或多项:光纤网络、无源光纤网络、电缆网络、因特网网络、卫星网络、无线LAN、全球移动通信系统(GSM)、个人通信服务(PCS)、个域网、无线应用协议(WAP)、多媒体消息服务(MMS)、增强消息服务(EMS)、短消息服务(SMS)、基于时分复用(TDM)的系统、基于码分多址(CDMA)的系统、D-AMPS、Wi-Fi、固定无线数据、IEEE 802.11b、802.15.1、802.11n和802.11g、蓝牙、近场通信(NFC)、射频识别(RFID)、Wi-Fi等。
此外,网络1330可以包括但不限于电话线、光纤、IEEE以太网902.3、广域网(WAN)、无线个域网、局域网(LAN)或诸如因特网之类的全球网络。另外,网络1330可以支持因特网网络、无线通信网络、蜂窝网络等或其任何组合。网络1330可以进一步包括一个网络,或者任何数量的上述示例性网络类型,这些网络类型作为独立网络运行或彼此协作。网络1330可以利用与其通信耦合的一个或多个网络元件的一个或多个协议。网络1330可以转换为网络设备的一个或多个协议,或从其他协议转换为网络设备的一个或多个协议。尽管网络1330被描述为单个网络,但是应当理解,根据一个或多个示例,网络1330可以包括多个互连的网络,例如因特网、服务提供者的网络、有线电视网络、公司网络(例如信用卡协会网络)和家庭网络。
系统1300可以包括至少一个服务器1340。在一些示例中,至少一个服务器1340可以包括与存储器耦合的一个或多个处理器。服务器1340可被配置为中央系统、服务器或平台,以在不同时间控制和调用各种数据以执行多个工作流动作,从而执行本文所述的一个或多个功能。服务器1340可被配置为连接到一个或多个数据库(未示出)。服务器1340可以连接到至少一个设备1320。在一些示例中,服务器1340可被配置为从设备1320接收一次性密码并对其进行认证。认证可以包括将一次性密码与设备1320可访问的信息进行匹配。在一些示例中,设备1320可以与至少一个服务器1340进行数据通信,并且至少一个服务器1340可被配置为执行认证。认证可以包括将一次性密码与设备1320可访问的信息进行匹配。在一些示例中,设备1320可以与至少一个服务器1340进行数据通信,并且至少一个服务器1340可被配置为执行认证。至少一个服务器1340可被配置为在确定一次性密码的认证成功时向设备1320提供与一个或多个服务相关联的第一访问级别。在一些示例中,至少一个服务器1340可被配置为在确定一次性密码的认证不成功时向设备1320提供与一个或多个服务相关联的第二访问级别,其中包括受限或受约束的访问。
图14是示出根据示例实施例的用于通过与OTP设备进行数据通信的非接触卡保护基于计数器的OTP的方法1400的操作的流程图。用于执行步骤1410至1440的组件可以是指图13所示的相同或相似的组件,其中包括但不限于非接触卡1310、设备1320(诸如客户端设备或OTP设备)、一个或多个网络1340以及至少一个服务器1340。
如图14所示,在框1410处,方法1400可以包括向设备发送一个或多个一次性密码。例如,非接触卡可以创建一个或多个一次性密码,并将其发送到OTP设备。在一些示例中,非接触卡可以与OTP设备进行无线通信,例如NFC通信。非接触卡可以包括基板、计数器、处理器(例如,EMV芯片)以及包含至少一个小程序的存储器。
非接触卡可被配置为生成一次性密码并将其发送到OTP设备,使得每次生成密码时都调整计数器。可以通过本文描述的任何方法来调整计数器。OTP设备可被配置为发送一次密码,并且至少一个服务器可被配置为接收一次性密码以进行认证。
在框1420处,OTP设备可以从非接触卡接收一个或多个一次性密码。一旦接收到,OTP设备便可将一个或多个一次性密码发送到至少一个服务器以进行验证。
在框1430处,可以验证一个或多个一次性密码,并且可以更新计数器。例如,至少一个服务器可被配置为验证从OTP设备接收到的一个或多个一次性密码,其中可以在每次生成所述一个或多个一次性密码时更新非接触卡的计数器。
在框1440处,可以基于验证向OTP设备提供第一访问级别。例如,至少一个服务器可被配置为在确定一个或多个一次性密码的验证成功时向OTP设备提供与一个或多个服务相关联的第一访问级别。例如,至少一个服务器可以包括与存储器耦合的一个或多个处理器。所述至少一个服务器可被配置为中央系统、服务器或平台,以在不同时间控制和调用各种数据以执行多个工作流动作,从而执行本文所述的一个或多个功能。至少一个服务器可被配置为连接到一个或多个数据库(未示出)。至少一个服务器可以连接到OTP设备。在一些示例中,至少一个服务器可被配置为从OTP设备接收一次性密码并对其进行验证。验证可以包括将一次性密码与OTP设备可访问的信息进行匹配。在一些示例中,OTP设备可以与至少一个服务器进行数据通信,并且至少一个服务器可被配置为执行验证。验证可以包括将一次性密码与OTP设备可访问的信息进行匹配。在一些示例中,OTP设备可以与至少一个服务器进行数据通信,并且至少一个服务器可被配置为执行验证。至少一个服务器可被配置为在确定一次性密码的验证成功时向OTP设备提供与一个或多个服务相关联的第一访问级别。在一些示例中,至少一个服务器可被配置为在确定一次性密码的验证不成功时向OTP设备提供与一个或多个服务相关联的第二访问级别,其中包括受限或受约束的访问。可以根据需要或在接收到另一一次性密码时重复验证尝试。
在其他示例中,OTP设备可以不向至少一个服务器发送一次性密码。在这些示例中,在接收到密码时,OTP设备可以向至少一个服务器提出一个或多个信息请求,并且OTP设备自身可以执行一次性密码的验证。然后,OTP设备可以将验证结果通知给至少一个服务器。如果验证成功,则至少一个服务器可以提供对一个或多个服务的访问,在验证不成功的情况下可以限制或拒绝访问,并且可以如上所述进行其他验证尝试。
在一些示例中,本公开涉及非接触卡的轻击。然而,应当理解,本公开不限于轻击,并且本公开包括其他手势(例如,挥动卡或对卡执行其他动作)。
在整个说明书和权利要求书中,除非上下文另外明确指出,否则以下术语至少具有本文明确关联的含义。术语“或”旨在表示包含性的“或”。此外,术语“一”、“一个”和“该”旨在表示一个或多个,除非另有指定或从上下文中清楚地指向单数形式。
在本说明书中,已经阐述了许多具体细节。然而,应当理解,可在没有这些具体细节的情况下实践所公开技术的实现。在其他情况下,未详细示出公知的方法、结构和技术,以免混淆对本说明书的理解。对“一些示例”、“其他示例”、“一个示例”、“一示例”、“各种示例”、“一个实施例”、“一实施例”、“一些实施例”、“示例实施例”、“各种实施例”、“一个实现”、“一实现”、“示例实现”、“各种实现”、“一些实现”等的提及指示这样描述的所公开技术的实现可以包括特定特征、结构或特性,但并非每个实现都必须包括该特定的特性、结构或特性。此外,重复使用短语“在一个示例中”、“在一个实施例中”或“在一个实现中”不一定指相同的示例、实施例或实现,尽管可以这样指示。
如本文所用,除非另有说明,否则使用序数形容词“第一”、“第二”、“第三”等来描述一个共同的对象,仅表示引用了相同对象的不同实例,并不意味着这样描述的对象必须在时间、空间、等级或任何其他方式上均采取给定的顺序。
虽然已经结合当前被认为是最实际和多样的实现方式描述了所公开技术的某些实现,但是应当理解,所公开技术不限于所公开的实现,相反,其旨在涵盖所附权利要求的范围内包括的各种修改和等效布置。尽管本文使用了特定术语,但是这些术语仅在一般和描述性意义上使用,而不是出于限制的目的。
本书面描述使用示例来披露所公开技术的某些实现,其中包括最佳模式,并且还使本领域的任何技术人员能够实践所公开技术的特定实现,其中包括制造和使用任何设备或系统以及执行任何纳入的方法。所公开技术的某些实现的可专利范围在权利要求中定义,并且可以包括本领域技术人员想到的其他示例。这些其他示例旨在位于权利要求的范围内,前提是它们具有与权利要求的字面语言没有差异的结构元件,或者它们包括与权利要求的字面语言没有实质性差异的等效结构元件。
- 用于非接触卡的密码认证的系统和方法
- 用于非接触卡的密码认证的系统和方法