一种PIN防穷举方法和系统与流程

文档序号:30843545发布日期:2022-07-23 01:31阅读:196来源:国知局
一种PIN防穷举方法和系统与流程
一种pin防穷举方法和系统
技术领域
1.本发明涉及交易安全领域,进一步地涉及pin防穷举方法和系统。


背景技术:

2.基于安全设计的考虑,pos设备的各大厂商分别做出了安全方案,防止被人用恶意程序通过穷举破解持卡人的pin码。
3.目前行业常用的方式是2分钟4次pin码输入的逻辑,即在120秒范围内只允许最多4次的pin码输入,要输入第五次pin码,则必须等待超过120秒时间,这种方式每次输入pin码的时候需要记录当前rtc时间,设计一个具有4个成员的循环buf[4],记录当前的pin码输入索引idx,把第一次pin码输入(idx=0)的时间写入buf[0],第二次pin码输入(idx=1)的时间写入buf[1],第n次pin码输入(idx=n-1)的时间写入buf[(n-1)%4],当4次输pin码之后,循环覆盖数组,每次比较当前时间和对应待写入数组中的时间,如果差值大于120秒,则允许输入pin码更新写入时间且idx自加,否则拒绝pin码输入。
[0004]
此方案中一旦发生客户在2分钟范围内连续输错4次pin码的情况,就得等待2分钟后才能重复输入pin码(这里假设收银后台没有pin码错误上限),导致用户的体验不好,因此需要一种既能够保护pin输入又能够避免影响使用体验的pos机pin输入的保护方法。


技术实现要素:

[0005]
针对上述技术问题,本发明的目的在于解决通过穷举破解持卡人的pin码,以及在高频率pin码输入场景下,用户需要等待较长时间才能继续交易,降低用户的使用体验的技术问题。
[0006]
为了实现上述目的,本发明提供一种pin防穷举方法,包括步骤:
[0007]
在获取到pin码输入请求时,获取pos设备储存的当前防穷举数据;所述当前防穷举数据包括当前防穷举周期、当前周期基准时间、当前周期输入次数阈值和当前周期pin输入总次数,其中,所述当前周期基准时间为当前防穷举周期内首次输入pin码的时间;
[0008]
计算本次pin输入时间与所述当前周期基准时间之间的第一时间差值,并将所述第一时间差值与所述当前防穷举周期进行大小比较;
[0009]
若所述第一时间差值小于所述当前防穷举周期,将所述当前周期pin输入总次数与所述当前周期输入次数阈值进行大小比较;
[0010]
若所述当前周期pin输入总次数小于所述当前周期输入次数阈值,允许本次pin码输入,并更新所述当前防穷举数据中的pin计数信息;
[0011]
若所述当前周期pin输入总次数大于等于所述当前周期输入次数阈值,拒绝本次pin码输入。
[0012]
根据本发明的另一方面,本发明进一步提供一种pin防穷举系统,包括:
[0013]
获取模块,用于在获取到pin码输入请求时,获取pos设备储存的当前防穷举数据;所述当前防穷举数据包括当前防穷举周期、当前周期基准时间、当前周期输入次数阈值和
当前周期pin输入总次数,其中,所述当前周期基准时间为当前防穷举周期内首次输入pin码的时间;
[0014]
计算模块,用于计算本次pin输入时间与所述当前周期基准时间之间的第一时间差值;
[0015]
处理模块,用于将所述第一时间差值与所述当前防穷举周期进行大小比较;若所述第一时间差值小于所述当前防穷举周期,将所述当前周期pin输入总次数与所述当前周期输入次数阈值进行大小比较;若所述当前周期pin输入总次数小于所述当前周期输入次数阈值,允许本次pin码输入,并更新所述当前防穷举数据中的pin计数信息;若所述当前周期pin输入总次数大于等于所述当前周期输入次数阈值,拒绝本次pin码输入。
[0016]
与现有技术相比,本发明所提供的pin防穷举方法和系统提高pin码的输入频率,提升pos设备的交易速度,大大提升用户的使用体验。
附图说明
[0017]
下面将以明确易懂的方式,结合附图说明优选实施方式,对本发明的上述特性、技术特征、优点及其实现方式予以进一步说明。
[0018]
图1是本发明一种pin防穷举方法的一个实施例的流程图;
[0019]
图2是本发明一种pos设备的一个实施例的结构示意图;
[0020]
图3是本发明一种pin防穷举方法的另一个实施例的流程图;
[0021]
图4是本发明一种pin防穷举方法的另一个实施例的流程图。
具体实施方式
[0022]
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本技术。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
[0023]
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所述描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元素、组件和/或集合的存在或添加。
[0024]
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
[0025]
还应当进一步理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0026]
另外,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0027]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他
的附图,并获得其他的实施方式。
[0028]
在一个实施例中,参考说明书附图1和图2,一种pin防穷举方法,具体地,应用于pos设备,包括步骤:
[0029]
s1000在获取到pin码输入请求时,获取pos设备储存的当前防穷举数据;所述当前防穷举数据包括当前防穷举周期、当前周期基准时间、当前周期输入次数阈值和当前周期pin输入总次数,其中,所述当前周期基准时间为当前防穷举周期内首次输入pin码的时间;
[0030]
具体的,如图2所示,本发明的智能pos机架构选用ap+sp方式,ap(是application processor的缩写,其为主控芯片)上安装有android系统,交易应用程序在ap上运行。sp(是secure processor的缩写,其为安全芯片)上加载运行有本发明的pin防穷举方法。
[0031]
在pos设备开机启动后,ap和sp均会上电启动,在pos设备开机启动并初始化自检通过后,用户就可以使用pos设备的操作界面(触摸或者按键)发起pin码输入请求,即用户可以使用pos设备输入pin码以进行交易操作。其中,用户在每次输入pin码时pos设备会记录每次的pin码输入时间,例如上次pin码输入时间、本次pin输入时间。
[0032]
s2000计算本次pin输入时间与所述当前周期基准时间之间的第一时间差值,并将所述第一时间差值与所述当前防穷举周期进行大小比较;
[0033]
具体的,为了防止恶意程序暴力破解个人pin码会设置防穷举周期。防穷举周期用于定期检测pos机的pin输入总次数,常规的处理办法是60分钟的防穷举周期内的pin输入总次数不会超过120次,因此,pos机会实时检测每个防穷举周期内的pin输入总次数是否会超过阈值。
[0034]
s3000若所述第一时间差值小于所述当前防穷举周期,将所述当前周期pin输入总次数与所述当前周期输入次数阈值进行大小比较;
[0035]
具体的,金融pos机的pin码防穷举是为了防止高频的pin码输入,来遍历验证密码攻击的策略,它本身就是限制pin码的输入频率的,但是在正常交易过程中,某些时间段存在高频率的频繁交易场景,简单的防穷举方案不能有效满足这些特殊时段内高频率的频繁交易场景。
[0036]
当用户成功输入pin码后,无论输入的pin码是否为正确的pin码,pos设备的pin码输入总次数累计增加一,每次pin码输入完成后均记录本次pin输入时间,并更新防穷举数据中的本次pin输入时间为本次pin输入时间。
[0037]
在确定本次pin输入时间(即本发明的本次pin输入时间)与基准输入时刻(即本发明的当前周期基准时间)之间的第一时间差值小于防穷举周期后,主控芯片再进一步检测判断当前防穷举周期内的pin码输入总次数(即本发明的当前周期pin输入总次数)是否小于当前周期输入次数阈值。
[0038]
s4000若所述当前周期pin输入总次数小于所述当前周期输入次数阈值,允许本次pin码输入,并更新所述当前防穷举数据中的pin计数信息;
[0039]
s5000若所述当前周期pin输入总次数大于等于所述当前周期输入次数阈值,拒绝本次pin码输入。
[0040]
具体的,主控芯片判断出当前防穷举周期内的pin码输入总次数大于等于当前周期输入次数阈值时,表明此次输入的pin码可能属于异常或者恶意破解攻击,pos设备可以发出告警提示并且拒绝用户输入pin码操作。当然,如果主控芯片判断出当前防穷举周期内
的pin码输入总次数小于当前周期输入次数阈值时,允许输入pin码并更新备份内存中的防穷举数据。
[0041]
其中,拒绝用户输入pin码操作的实现方式可以是pos设备立即关机,还可以是在pos设备的操作系统控制下关闭内核,也可以是pos设备切换为锁屏状态,例如pos机修改pos操作系统的参数,pos机的人机交互界面切换为黑屏状态或者白屏状态。不论是哪种拒绝用户输入pin码操作的实现方式,均可以杜绝非法分子。其中,允许用户输入pin码操作的实现方式可以是控制pos机的人机交互界面显示pin码输入框。
[0042]
本发明通过防穷举验证即第一时间差值小于当前防穷举周期,且当前防穷举周期内的pin码输入总次数小于当前周期输入次数阈值时,才能让pos设备的操作系统对发起pin码输入请求的用户启动开放状态以便允许用户输入pin码,若防穷举验证不通过则pos设备的操作系统关闭,从而能够解除对pos设备随意或恶意攻击的安全隐患。
[0043]
本发明通过设定检测当前周期pin输入总次数和当前输入pin码时长(第一时间差值),以判断是否允许或者拒绝用户输入pin码来作为防止pin穷举的一道屏障。此外,根据当前周期pin输入总次数与当前周期输入次数阈值的比较结果,以及当前输入pin码时长(第一时间差值)与当前防穷举周期的比较结果,将pos设备储存的当前防穷举数据进行更新,不仅仅可以实现在一定时间周期内pin输入次数不能超过预定次数,还能够保护pin输入又能够避免影响使用体验。
[0044]
在一个实施例中,一种pin防穷举方法,具体地,应用于pos设备,包括步骤:
[0045]
s0100在所述pos设备开机启动时,将所述备份内存中储存的所述当前防穷举数据进行初始化处理得到符合预设数据结构的结构体数据;
[0046]
s0200将所述结构体数据加载至全局内存处,根据所述结构体数据进行初始化自检;
[0047]
具体的,在所述pos设备开机启动时,将防穷举数据进行初始化处理以符合第一种预设数据结构如下:
[0048][0049]
pos设备上电启动后进行防穷举初始化,加载备份内存中的st_sec_ram_para结构(即本发明的结构体数据)到全局内存以进行初始化自检。此外,pos设备还会在设置或者更新防穷举周期的时候也会进行初始化自检。
[0050]
在一个实施例中,所述结构体数据包括储存校验值、非储存校验值信息,所述非储存校验值信息为所述结构体数据中排除所述储存校验值以外的数据;所述根据所述结构体数据进行初始化自检包括步骤:
[0051]
s0210将所述结构体数据加载至全局内存处,根据所述储存校验值和非储存校验值信息进行完整性校验,并根据所述非储存校验值信息进行合法性校验;
[0052]
具体的,非储存校验值信息包括:影响参数和其他信息;所述影响参数包括新的防穷举周期、所述当前防穷举周期和当前周期pin输入总次数;所述其他信息包括防穷举策略版本号、当前周期基准时间。其中,根据所述储存校验值和非储存校验值信息进行完整性校验,并根据所述非储存校验值信息进行合法性校验具体包括步骤:
[0053]
s0211根据预设加密算法对所述非储存校验值信息计算得到计算校验值;
[0054]
s0222将所述计算校验值与所述储存校验值进行比对;
[0055]
s0223若比对结果为一致,确定完整性校验通过;
[0056]
s0224若比对结果为不一致,确定完整性校验未通过;
[0057]
s0225判断所述影响参数是否满足预设验证条件;所述预设验证条件包括:所述新的防穷举周期小于等于预设周期阈值,所述当前防穷举周期小于等于预设周期阈值,所述数值小于等于所述当前防穷举周期的两倍,以及所述数值等于pin计数累计值;
[0058]
s0226若所述影响参数满足所述预设验证条件中的所有内容时,确定合法性校验
通过;
[0059]
s0227若所述影响参数不满足所述预设验证条件中的任意一项时,确定合法性校验未通过。
[0060]
具体的,按照上述结构化处理之后得到的防穷举数据包括“u8 version;
……
u8 rfu[13]”部分内容,crc是为了确保验证防穷举数据这部分内容的完整性的。每次pos设备开机时安全芯片上电启动执行一次校验判断,即对备份内存中储存的防穷举数据进行完整性校验,其余时间不做crc校验,只在数据更新的时候更新校验crc值。
[0061]
更新校验crc值(即本发明的储存校验值)是为了保证pos设备关机再开机的时候校验通过,即每次pos设备开机是的安全芯片上电启动执行一次校验判断有2个原因。一是、假如之前是没有防穷举数据,那么开机校验就会失败,失败之后需要重新初始化一个防穷举数据。二是、如果关机状态下防穷举数据被修改(比如纽扣电池没电了),开机校验就能识别数据异常,重新初始化。
[0062]
pos设备上电启动后进行防穷举初始化即将防穷举数据进行初始化处理,加载备份内存中的st_sec_ram_para结构即本发明符合预设数据结构的防穷举数据到全局内存,完成初始化自检。初始化自检包括完整性自检和合法性自检。其中,完整性自检是计算st_sec_ram_para结构的除crc之外数据的防穷举数据,即对非储存校验值信息(包括上述预设数据结构中的version、new_period,period、cnt_all、sec_start、pin cnt[61])进行计算得到计算crc16(即本发明的计算校验值)和结构尾部crc(为上述预设数据结构中的crc,即本发明的储存校验值)进行比较,如果计算crc16和结构尾部crc相等则完整性通过。合法性自检为判断new_period(即本发明的新的防穷举周期),period(即本发明的当前防穷举周期)、cnt_all(即本发明的当前周期pin输入总次数)、sec_start(即本发明的当前周期基准时间)、pin cnt[61](即本发明的子时间段内的pin输入次数)数据是否在有效范围,即判断影响参数是否满足预设验证条件中的所有内容,其中,预设验证条件如下所示:
[0063]
new_period《=60;
[0064]
period《=60;
[0065]
cnt_all《=2p,并且cnt_all=pincnt[61]累加。
[0066]
s0220在完整性校验通过且合法性校验通过时,确定所述pos设备初始化自检通过,以便允许获取所述pin码输入请求;
[0067]
s0230在完整性校验未通过,或完整性校验通过但合法性校验未通过时,重新将所述当前防穷举数据进行初始化处理并结束流程。
[0068]
具体的,通过上述流程可以判断完整性校验是否通过,以及合法性校验是否通过。如果完整性校验未通过,或者完整性校验通过但合法性校验未通过时,就确定pos设备初始化自检不通过。故而,pos设备在开机启动或者通过上述流程进行初始化自检不通过时,pos设备均会对防穷举数据进行初始化处理以符合第一种预设数据结构。
[0069]
在一个实施例中,还包括步骤:
[0070]
将时钟芯片的系统时间与设定时间进行差值计算得到第三时间差值;
[0071]
若所述设定时间为所述系统时间之后的未来时间,将所述当前周期基准时间与所述第三时间差值进行和值计算以更新所述时钟芯片的系统时间;
[0072]
若所述设定时间为所述系统时间之前的过去时间,将所述当前周期基准时间与所
述第三时间差值进行差值计算以更新所述时钟芯片的系统时间。
[0073]
具体的,为了防止恶意程序通过修改系统时间的方式来骗取防穷举的周期判断,因此如图4所示,本发明还设计了时间同步函数来解决系统rtc更新带来的隐患。rtc是real_time clock的缩写,其为实时时钟,通常称为时钟芯片。
[0074]
优选的,防穷举周期更新需要比较当前周期和设置周期大小,判断当前时间距离本次pin输入时间超过防穷举周期时才能更新进入下一个防穷举周期,否则等待一个防穷举周期的空闲时间才能进入下一个防穷举周期。
[0075]
s1000在获取到pin码输入请求时,获取pos设备储存的当前防穷举数据;所述当前防穷举数据包括当前防穷举周期、当前周期基准时间、当前周期输入次数阈值和当前周期pin输入总次数,其中,所述当前周期基准时间为当前防穷举周期内首次输入pin码的时间;
[0076]
s2000计算本次pin输入时间与所述当前周期基准时间之间的第一时间差值,并将所述第一时间差值与所述当前防穷举周期进行大小比较;
[0077]
s2500将所述第一时间差值与所述当前防穷举周期的两倍进行大小比较,若所述第一时间差值大于等于所述当前防穷举周期的两倍时,允许本次pin码输入,并将所述当前防穷举数据归零;
[0078]
具体的,所述当前防穷举数据还包括当前周期终止时间,所述当前周期终止时间为当前防穷举周期内最后一次输入pin码的时间;所述将所述当前防穷举数据归零包括步骤:
[0079]
s2510将所述当前周期pin输入总次数设置为1次;
[0080]
s2520将所述当前周期基准时间替换为所述本次pin输入时间,并将所述当前周期终止时间替换为所述本次pin输入时间。
[0081]
具体的,将本次pin输入时间与当前周期基准时间进行差值计算得到第一时间差值,判断第一时间差值是否大于等于所述当前防穷举周期的两倍,如果第一时间差值大于等于当前防穷举周期的两倍时,那么pos设备就将当前防穷举数据归零,并且允许本次pin码输入。
[0082]
具体的,在使用过程中,可能存在本次pin输入时间与当前周期基准时间之间的第一时间差值过大,此时检测pin码输入总次数以及单次平均花费的时间已经失去意义,因此在检测到作用于pos机的pin码输入的请求指令后,判断本次pin输入时间与当前周期基准时间之间的第一时间差值是否大于当前防穷举周期的两倍,通过对比第一时间差值与当前防穷举周期的两倍,在第一时间差值大于等于当前防穷举周期的两倍的情况下,直接将备份内存中的防穷举数据归零,对发起pin码输入请求的用户启动开放状态以便允许用户输入pin码。
[0083]
本发明在高频率pin码输入场景下,无需用户等待就能够再次输入pin码,既能够保护pin输入又能够提升pos设备的交易速度,大大提升用户的使用体验。
[0084]
s2600若所述第一时间差值大于等于所述当前防穷举周期,且小于所述当前防穷举周期的两倍时,允许本次pin码输入,并根据本次pin输入时间更新所述当前防穷举数据;
[0085]
所述根据本次pin输入时间更新所述当前防穷举数据包括步骤:
[0086]
s2610计算所述第一时间差值与所述当前防穷举周期之间的第二时间差值;
[0087]
s2620根据所述当前周期基准时间和所述第二时间差值,进行加和计算得到更新
版当前周期基准时间,将所述当前周期基准时间替换为所述更新版当前周期基准时间;
[0088]
s2630计算所述更新版当前周期基准时间与本次pin输入时间之间的统计pin输入次数,并累加本次pin输入次数;
[0089]
s2670根据所述统计pin输入次数和所述累加本次pin输入次数,进行加和计算得到更新版当前周期输入总次数,将所述当前周期输入总次数替换为所述更新版当前周期输入总次数。
[0090]
具体的,假如本次pin输入时间距离当前周期基准时间过了80分钟,则已经超过1个周期,那么需要将基准时间增加80-60=20分钟,也就是将pincnt[0~19]的数据作废,为了下次计算方便实际操作是将pincnt[20~60]的数据往前移动20个单位,覆盖掉pincnt[0~19]。
[0091]
s3000若所述第一时间差值小于所述当前防穷举周期,将所述当前周期pin输入总次数与所述当前周期输入次数阈值进行大小比较;
[0092]
s4000若所述当前周期pin输入总次数小于所述当前周期输入次数阈值,允许本次pin码输入,并更新所述当前防穷举数据中的pin计数信息;
[0093]
具体的,所述当前防穷举数据还包括所述当前防穷举周期内所有子时间段分别对应的计数字段,所述当前防穷举周期包括60个间隔均等的子时间段,所述计数字段用于记录子时间段内的pin输入次数,所述计数字段的数量为61个,第61个计数字段用于记录下一防穷举周期中的第一个子时间段内的pin输入次数;所述更新所述当前防穷举数据中的pin计数信息包括步骤:
[0094]
s4100统计当前防穷举周期内各子时间段的计数pin输入次数;
[0095]
s4200将各子时间段的计数字段的数值替换为对应的计数pin输入次数。
[0096]
具体的,参考说明书附图3,在使用pos设备的过程中,每次输入pin码均会更新防穷举数据。并且超过一个周期需要更新当前周期基准时间,本发明将一个防穷举周期平均分成60份得到子周期,每个子周期分别记录自己时间内的pin码输入次数。
[0097]
如果第一时间差值大于防穷举周期,更新备份内存中的当前周期基准时间和pin码输入总次数。其中,假如本次输入pin码距离当前周期基准时间过了30分钟但小于31分钟,则j=29,pin码输入记录pin cnt[29]中;假如本次输入pin码距离当前周期基准时间过了31分钟但小于32分钟,则j=30,pin码输入记录pin cnt[30]中,以此类推。
[0098]
其中,更新备份内存中的当前周期基准时间的目的是防穷举提升安全性。因此,如果设定防穷举周期p=60分钟,但是本次pin输入时间距离当前周期基准时间过了80分钟,即本次pin输入时间与基准输入时刻之间的第一时间差值已经超过1个防穷举周期,那么将第一时间差值与防穷举周期相减计算得到校准时间差值,将当前周期基准时间与校准时间差值进行和值计算,将计算结果替代此前的当前周期基准时间,例如,之前的当前周期基准时间为2021年12月29日14:30:00,那么将当前周期基准时间增加80-60=20分钟得到更新后的当前周期基准时间为2021年12月29日14:50:00,也就是将pin cnt[0~19]的数据作废,为了下次计算方便实际操作是将pin cnt[20~60]的数据往前移动20个单位,覆盖掉pin cnt[0~19]。
[0099]
具体的,将当前防穷举周期按照预设子周期进行等份划分,安全芯片sp分别记录在每一个预设子周期内的pin码输入总次数。
[0100]
由于使用1个字节的宽度[0~255]来记录1/60p的pin码输入次数,因此当输入第60次引入了1/60p的误差。
[0101]
假设周期是60分钟,则
[0102]
pin cnt[0]记录第【0~59】秒时段输入pin码的次数,称作第1分钟;
[0103]
pin cnt[1]记录第【60*1~60*1+59】秒时段输入pin码的次数,称作第2分钟;
[0104]
……
[0105]
pin cnt[59]记录第[60*59~60*59+59]秒时段输入pin码的次数,称作第60分钟;
[0106]
pin cnt[60]记录第[60*60~60*60+59]秒时段输入pin码的次数,称作第61分钟。
[0107]
极端假设第1分钟内的第59秒,pin码输入120次数记录在pin cnt[0]=120中,接下来的时间中由于已经达到本周期最大输pin码次数,因此拒绝输入pin码,直到第61分钟可以再次输入pin码,假如第61分钟的第一秒输入120次存储在pin cnt[60],那么从pin cnt[0]+pin cnt[60]=240次,精确计算时间59秒到60*60秒间隔3541秒,小于一小时但是输入pin码共240次,这就是误差的来源。
[0108]
为了消除误差,pin cnt计数设计61个字节,能够记录61/60p的时间,以61/60p时间为基准来判断pin码输入次数是否超过2p,则满足1小时120次要求。
[0109]
由于安全芯片sp的备份内存有限,不能存储足够的时间数据,因此设计带有误差的方式,只记录一个基准时刻sec_start,一个最近一次输pin码的时刻sec_end,一个61字节的数组pin cnt[61],一个crc校验字段,在安全芯片上电启动后将防穷举数据进行初始化处理以符合第二种预设数据结构如下:
[0110][0111][0112]
安全芯片sp具有一块备份内存bpk,备份内存bpk和rtc模块都是电路板上纽扣电池供电,备份内存bpk中的数据不会因为关机重启而丢失,但是备份内存bpk的容量非常有限,本发明实施例中的安全芯片sp选用国产mh1902芯片,它的bpk只有128字节,因此需要将防穷举的数据做小,例如参照将防穷举数据进行初始化处理以符合第二种预设数据结构。
如果内存足够大,则可以使用一个循环数组,记录每个pin码的时刻,根据时刻来判断时间间隔,例如参照将防穷举数据进行初始化处理以符合第一种预设数据结构。
[0113]
s5000若所述当前周期pin输入总次数大于等于所述当前周期输入次数阈值,拒绝本次pin码输入。
[0114]
本发明比较当前周期pin输入总次数与当前周期输入次数阈值,比较当前输入pin码时长(第一时间差值)与当前防穷举周期,以及比较当前输入pin码时长(第一时间差值)与当前防穷举周期的两倍,根据三个比较结果将pos设备储存的当前防穷举数据进行更新,或者判断是否允许或者拒绝用户输入pin码,能够在高频率pin码输入场景下,通过设定检测无需用户等待就能够再次输入pin码,避免呆板的设置防穷举周期来限制穷举,而是通过灵活方式来达到一定时间周期内pin输入次数不能超过预定次数,既能够保护pin输入又能够避免恶意程序暴力破解个人pin码,提高pin码的输入频率,无需用户等待就能够再次输入pin码,提升pos设备的交易速度,大大提升用户的使用体验。
[0115]
本发明实现任意1小时内的pin码输入次数不得超过120次即平均30秒/次,以及开关机不会影响pin码防穷举机制等安全要求,并且,修改系统时间不会影响pin码防穷举机制。本发明能够在满足安全要求的情况下解决某个时段的高频pin码输入情况,遏制恶意刷新的程序或者软件无穷次尝试。完美解决对于pin码的穷举攻击,保证交易过程中pin码的安全性。在非法分子进行掉电攻击时,本发明安全芯片重新上电后,也能够避免穷举攻击,支持更高频率并且解决速度与突然掉电问题。本发明能够有效杜掉电引起的穷举尝试漏洞,大大提高pin码的安全性。本发明通过巧妙的使用安全芯片备份内存来存储防穷举数据,解决了读写数据慢的问题和pin码输入频率低的问题,提高交易速度以大大提升用户使用体验。
[0116]
在一个实施例中,所述当前周期输入次数阈值在数值上是所述当前防穷举周期的2倍;
[0117]
其中,所述当前防穷举周期的取值范围为[1min,2min,3min,4min,5min,6min,10min,12min,15min,20min,30min,60min]中的任意一个。
[0118]
具体的,由于为了防止恶意程序暴力破解个人pin码,对pos设备做出任意1小时内的pin码输入次数不得超过120次,即平均30秒/次的要求,因此,pos设备的主控芯片储存有预先设置的防穷举周期和当前周期输入次数阈值。其中,防穷举周期和防穷举周期内允许输入pin码次数即当前周期输入次数阈值的设置要求符合下列公式:
[0119]
2pn≤120;
[0120]
其中,p表示防穷举周期,p为整数且取值范围为{p=60/n,n∈正整数},p的单位为分钟;n表示防穷举周期的倍数,n的取值范围为[1,60]。
[0121]
具体的,由于2p就是周期p的最大pin码输入次数。n表示周期的倍数,n为整数,取值范围为[1,60],那么2pn≤120,变形可以得到p≤(60/n),当n取整数,则能被60整除的p的取值即:[1,2,3,4,5,6,10,12,15,20,30,60],满足任意1小时内的pin码输入次数不得超过120次的要求。
[0122]
当防穷举周期p为60min时,n为1,单个防穷举周期内的最大pin码输入次数(即单个防穷举周期内的输入次数阈值,例如当前周期输入次数阈值)=120次;
[0123]
当防穷举周期p为30min时,n为2,单个防穷举周期内的最大pin码输入次数=60
次;
[0124]
……
[0125]
当防穷举周期p为2min时,n为30,单个防穷举周期内的最大pin码输入次数=4次;
[0126]
不能被60整除的p的取值即:[7-9,11,13,14,16-19,21-29,31-59],在任意1小时内的pin码输入次数都大于120次,不满足pos设备防穷举的安全要求。
[0127]
例如:当防穷举周期p为50min时,n为1,单个防穷举周期内的最大pin码输入次数100次,任意1小时最多能够跨2个防穷举周期,如果第一个防穷举周期开始输入pin码100次,加上第二个防穷举周期开始的第一分钟就可以再次输入pin码100次,此时总耗时51分钟但是输入pin码200次是不满足设计目标的,因此防穷举周期不能设置50分钟,其他防穷举周期同样的道理。
[0128]
如果自检通过后在当前防穷举周期内还未输入pin码时,此时主控芯片内的本次pin输入时间就是pos设备最近一次关机前最后一次输入pin码的时间。当然如果自检通过后在当前防穷举周期内已输入pin码时,此时主控芯片内的本次pin输入时间就是pos设备最近一次输入pin码的时间。因此,本发明在自检通过后,计算本次pin输入时间与当前周期基准时间之间的第一时间差值,即第一时间差值=本次pin输入时间-当前周期基准时间,然后,判断第一时间差值是否大于当前防穷举周期。
[0129]
其中,周期输入次数阈值不一定是120次,在任意1小时内的pin码输入次数不得超过120次的范围内,周期输入次数阈值与防穷举周期成正比,即防穷举周期越大则周期输入次数阈值越大。
[0130]
在一个实施例中,所述pos设备安装有安全芯片和纽扣电池,所述安全芯片设有备份内存,所述纽扣电池为所述安全芯片供电,以使得所述备份内存保存所述当前防穷举数据。
[0131]
具体的,本发明选用符合pci要求的安全芯片sp,sp具有一块备份内存,此备份内存是板级纽扣电池供电,记录的数据不会因为突然掉电关机或者内存崩溃而丢失。本发明pin码防穷举方案借助这块备份内存完成,它具有读写速度快,支持pin码频率高,掉电重启后不丢失数据的特点。
[0132]
示例性的,如图3所示,分三种情况,这里做极端假设p=60分钟,并且已经有过一次pin输入发生,则当前周期基准时间sec_start就是前一次pin输入时间,timecost即本发明的第一时间差值:
[0133]
1.开始输pin码,假设上一次输pin是在121分钟前,则本次pin输入时间time-sec_start一定大于2倍周期(time-sec_start=timecost》2p),则进入防穷举数据归零流程。
[0134]
2.开始输pin码,假设上一次输pin是在90分钟前(超过1p时间),则本次pin输入时间time-sec_start=90min大于1倍周期小于2倍周期(time-sec_start=90》1p),则进入计算本次pin输入时间的计数位置j=i的流程,需要计算将要作废的时段(timecost-p)=(90-60)=30,也就是要把从sec_start起始的30分钟内的pin输入次数作废。另外,累加有效pin次数(pincnt[30-60])将结果暂存在tcnt中。而且,更新当前周期基准时间增加30分钟(sec_start+30),那么将作废的数据覆盖(将pincnt[30-60]的数据搬移到pincnt[0-30],并且置0没用到的pincnt[31-60])。最后,使用新的当前周期基准时间和本次pin输入时间作差time-sec_start=timecost=p,存储本次pin输入pincnt[60]=1,更新cnt_all
=tcnt+1,结束。
[0135]
3.开始输pin码,假设上一次输pin是在30分钟前(小于1p时间),则本次pin输入时间和当前周期基准时间作差time-sec_start=30min小于1倍周(time-sec_start=30《1p),则进入更新pin总计数流程,需要计算本次pin输入时间输pin的次数,记录位置pincnt[29](第1分钟输入pin次数储存在pincnt[0],则第30分钟输入pin次数存在pincnt[29]),更新cnt_all+1,结束。
[0136]
在一个实施例中,一种pin防穷举系统,包括:
[0137]
获取模块,用于在获取到pin码输入请求时,获取pos设备储存的当前防穷举数据;所述当前防穷举数据包括当前防穷举周期、当前周期基准时间、当前周期输入次数阈值和当前周期pin输入总次数,其中,所述当前周期基准时间为当前防穷举周期内首次输入pin码的时间;
[0138]
计算模块,用于计算本次pin输入时间与所述当前周期基准时间之间的第一时间差值;
[0139]
处理模块,用于将所述第一时间差值与所述当前防穷举周期进行大小比较;若所述第一时间差值小于所述当前防穷举周期,将所述当前周期pin输入总次数与所述当前周期输入次数阈值进行大小比较;若所述当前周期pin输入总次数小于所述当前周期输入次数阈值,允许本次pin码输入,并更新所述当前防穷举数据中的pin计数信息;若所述当前周期pin输入总次数大于等于所述当前周期输入次数阈值,拒绝本次pin码输入。
[0140]
具体的,本实施例是上述方法实施例对应的系统实施例,具体效果参见上述方法实施例,在此不再一一赘述。
[0141]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的程序模块完成,即将所述装置的内部结构划分成不同的程序单元或模块,以完成以上描述的全部或者部分功能。实施例中的各程序模块可以集成在一个处理单元中,也可是各个单元单独物理存在,也可以两个或两个以上单元集成在一个处理单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序单元的形式实现。另外,各程序模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。
[0142]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述或记载的部分,可以参见其他实施例的相关描述。
[0143]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0144]
在本技术所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其他的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,
装置或单元的间接耦合或通讯连接,可以是电性、机械或其他的形式。
[0145]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0146]
另外,在本技术各个实施例中的各功能单元可能集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0147]
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0148]
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1