国际互联网交易安全系统的制作方法

文档序号:6657214阅读:222来源:国知局
专利名称:国际互联网交易安全系统的制作方法
技术领域
本发明总体上属于安全交易系统和更实际的利用个人识别号(PIN)提高系统安全。
利用一张或多张卡,牌和存储的个人识别号来确保正确鉴别一个人的身份和提供交易安全的用户身份鉴别系统已经广为人知。然而,随着因特网交易量的不断增加,传统的交易安全方法无法提供足够的安全措施来防止不诚实的商家或其他第三方用电子窃听方法截取信用卡信息。
特别是当信用卡被鉴别后,如何保护交易所需信息的问题,尤其是信息被网上商家滥用的问题几乎未被受到重视。这一方面的保护传统上是依靠持卡人对商家的认同。当持卡人在实际购物现场时,这种方式是合理的。当持卡人不在购物现场时,而是在因特网上交易时,这种保护是远远不够的。
通常,一个因特网商家只不过是一个电子地址,任何人都不能保证接受电子信息的人是合法的。因此,这种远端电子交易对客户和信用卡公司来说都带有显著的风险。用户面临着他/她的账号信息被中途截获者或是被不诚实,不守信用的商家滥用。同时,信用卡公司也面临如何验证商家索要付款属于真正的订单的问题。
现有的用于网路交易的新安全方法有CyberWallet,eCash,netCash和PayMe Transfer Protocols.虽然这些方法能够提供交易安全保护,但它们都存在被伪造的问题,而且一般政府都不愿意接受新的货币形式。它们还有许多与其固有的复杂度相联系的缺点,导致商家和顾客的软硬件按装复杂和不易扩容。
例如,美国Weiss的5,168,520号专利叙述了一种改进个人识别号安全性的方法和设备。用户设备和鉴别计算机同时各自按照预先确定的算法,将一个不可预测码及一个保密的个人识别号混合,产生联合码值,然后比较这些联合码值以确定真实用户。此种方法试图通过一种编码将个人识别号隐含于一个时变不可预测码中,但是个人识别号仍传输于电子媒体上。进一步讲,必须使用复杂昂贵硬件以提供用户设备和鉴别计算机的同步要求。另外,因为一个新个人识别号周期按时产生,而网上时间延迟(如交通阻塞)是经常发生的,系统就不能在网上做到最佳运行。如果每个个人识别号的有效存在时间增加,那么个人识别号被截获或被修改的危险也增加。如果系统不允许重新使用此个人识别号,用户将面对更长的延时。最终,因为一天当中个人识别号必须连续不断地产生,用户设备的电池将加速消耗。
相应地,需要有一个简单,相对便宜,容易使用的交易安全系统。此系统不在网上传输任何敏感数据,不需要用户或商家安装复杂的软件或硬件。
本发明的目的是提供一个鉴别系统能够有效地识别和验证用户身份。该鉴别系统不仅简单,相对便宜,容易使用,而且比任何现有的鉴别方法更安全和准确。本发明是针对目前因特网缺乏有效的交易安全保障措施而设计的,特别是在鉴别网上买卖双方的真实性与合法性方面。同时,这项发明也可用于传统的金融交易系统用户身份鉴别和其他有鉴别需求的领域,例如防止软件盗版的用户鉴别。
本发明提供的能够有效地识别用户的鉴别系统包括(a)产生并储存独特的伪随机标识码的方法;(b)每产生一个伪随机标识码就增加一个事件标识码的方法;(c)伪随机标识码及事件标识码结合产生一个个人识别号的方法;(d)将产生的个人识别号和用户帐号名传输到认证计算机的方法。
另一方面,本发明提供鉴别用户身份的方法,具体步骤如下(a)产生一个伪随机标识码;(b)产生一个事件标识码并在产生一个伪随机标识码后增加事件标识码的数值;(c)伪随机标识码和事件标识码结合形成一个个人识别号;(d)为了唯一地识别一个用户,输送用户帐号名和个人识别号到鉴别计算机以执行认证操作。
为了更好理解这项发明,并更清楚地说明它是如何达到效果的,文末附上本发明的最佳实例说明方框图,一一介绍如下

图1是描述此发明的一个最佳实例所包含的基本组成部件示意图;图2A是图1中用户卡的附视图;图2B是图1中用户卡的电路原理图;图2C是图1中用户卡的读卡器示图;图2D是图1中帐户数据库的数据表结构示图;图3A是图1中鉴别服务器用于识别用户的主服务器(MAIN SERVER)程序实例流程图;图3B是图1中鉴别服务器用于识别用户的认证(AUTHENTICATION)程序实例流程图4A是图1中用户卡用于产生个人识别号的主用户(MAIN USER)程序实例流程图;图4B是图1中用户卡用于产生个人识别号的个人识别号生成(GENERATEPIN)程序实例流程图;图5是一个典型因特网财务交易的结构示图;图6是在图5所示的因特网财务交易结构中完成一次安全交易的过程实例流程图;图7是一个典型网上购物中心的结构示图;图8是在图7所示的网上购物中心结构中完成一次安全交易的过程实例流程图;图9是一个典型软件认证的结构示图;图10是在图9所示的软件认证结构中完成一次安全交易的过程实例流程图;参考图1。图1示出此发明的一个最佳实例鉴别系统10。用户卡12与常规的电子处理和传输设备(如计算机,多功能手表,电子通讯录,掌上电脑)(没有示于图内)一起使用。电子设备通过因特网服务提供商的网关16连到国际互联网14。用户在用常规方法搜索万维网时可使用用户卡12,并向鉴别服务器18提供通信数据。鉴别服务器自身连接着一个帐户数据库。
目前,如果一个用户想要从一个远在外地的商家处购买产品或要求服务时,他/她通过因特网向商家提供信用卡号码,如此以来潜在地允许第三方得到信用卡号码,即使使用加密技术也无济于事。此发明避免了上述问题,因为敏感的用户数据从来没有在国际互联网14上传输,并且每一个交易有它自己唯一的授权码,如下所述。
按照此发明,用户卡12每次被用户激励,有能力产生并显示一个动态八位个人识别号。这八位个人识别号是由用户产生的二位变量USER-EVENT-ID和六位伪随机变量USER-RANDOM-ID混杂组成。变量USER-RANDOM-ID使用常规已知随机数发生器算法产生,一般使用一个或多个隐密保存的种子变量SEED(S)和一个或多个先前产生的随机数。每次用户卡12被触发便产生一个新的个人识别号,变量USER-EVENT-ID增加1,并且产生一个新的变量USER-RANDOM-ID。应该认识到的是,变量USER-EVENT-ID和USER-RANDOM-ID可以是任何合适的长度或基数。这一点后面将更为明显。常规已知的加密屏蔽码变量MASK用来混杂组合变量USER-EVENT-ID和USER-RANDOM-ID以产生个人识别号。
为了启动鉴别服务器18进行认证,用户触发用户卡12以产生和显示一个新的个人识别号,然后提供或许可卖方提供给鉴别服务器18用户帐户名(变量ACCTNAME)和新产生的个人识别号(变量PIN)。用户可以使用键盘或其他的数据输入设备或口头在电话里提供用户帐户名和产生的个人识别号。应该明白的是,为了使用户得到一张用户卡12,用户必须利用离线传输等安全方法将诸如用户的一张或多张信用卡号,出生日期,母亲的婚前姓名等个人信息提供给鉴别服务器的信用卡管理员。信用卡管理员会给予用户一个专用帐户名并用安全的方法将实际用户卡12送到用户手中。另外,值得一提的是每一张新的或尚未用过的卡12都包含一个特定的诸如唯一的种子SEED和第一个随机标识码PRE-USER-RANDOM-ID等的“用户标记”。新的个人识别号可以用多个SEEDS和/或PREV-USER-RANDOM-IDS甚至其它随机/伪随机算法产生。
为了在网上14认可一次交易,鉴别服务器18的帐户数据库20内存有用户的各种信息用来认证用户输入的个人识别号。例如,各用户用于产生随机数的种子SEED被秘密地存储于鉴别服务器18中因而只有鉴别服务器18才能复制用户卡12产生的个人识别号。由于安全原因,种子SEED不得通过因特网传输,而且只可以存于用户卡12内部并直接交于用户。
相应地,对于每一次交易,鉴别服务器18将在帐户数据库20中搜寻用户帐户名ACCTNAME并提取于特定用户的种子SEED和各种变量如前次用户事件标识码(PREV-EVENT-ID)和前次随机标识码(PREV-RANDOM-ID)。鉴别服务器18将会在PREV-EVENT-ID加1并与预存的SEED(和用户卡12中的相同)产生一个(伪)随机值并存于鉴别服务器程序的临时变量AS-RANDOM-ID中。PREV-EVENT-ID的值存于鉴别服务器的临时变量AS-EVENT-ID中。如果新的AS-EVENT-ID不匹配用户提供的USER-EVENT-ID,鉴别服务器18会使变量AS-EVENT-ID加1并用SEED和最近产生的变量AS-RANDOM-ID产生一个相应的伪随机值作为变量AS-RANDOM-ID的值。这一进程一直会重复至AS-EVENT-ID等于USER-EVENT-ID。相应地,变量USER-EVENT-ID和AS-EVENT-ID被用户卡12和鉴别服务器18用于同步作用(例如,防止用户不小心多次激发了用户卡)。即使在极端情况下用户因过度触发用户卡12导致其于鉴别服务器18失去同步,用户仍然可以致电给管理鉴别服务器18的认证公司,提供给他们显示在用户卡12上的个人识别号来重新同步用户卡。
一旦USER-EVENT-ID和AS-EVENT-ID被同步了,变量AS-RANDOM-ID和USER-RANDOM-ID会被比较。如果AS-RANDOM-ID等于USER-RANDOM-ID,那么鉴别服务器18将会确认这次交易并更新相应帐户数据库20的记录并结束交易。否则,认证将会被认为失败。
图2A描绘了用户卡作为智能卡的最佳实例。如前所述,用户卡12的功能完全可以由软件实现并安装于用户的电脑或其它如掌上电脑(3COM PALM系列),电子记事本等电子器件中。用户卡12从某种意义上讲具有传统信用卡的特征。为了方便用户,它设计成薄型,长度和宽度如同标准的信用卡甚至更小。其上有一可以显示八位个人识别号的显示屏幕22。卡上有一触发开关28用于激活用户卡并产生新的个人识别号。当触发开关28被按下后,此卡会产生一个电子信号,从而激活用户卡12以产生一个新的个人识别号并显示在显示屏幕22上。
与传统信用卡不同,用户卡内部电路设计如图2B。用户卡中装有一个微控制器30,一个电源32,和一个计数器34。
微控制器30可以是任何市场上有供应的,适合在用户卡中实现的可编程器件(例如具有相对较小的体积)。只读存储器36可以用来存储程序指令和其它静态数据,同时动态数据的存储由随机存储器38提供。两种记忆体36和38都可以被微控制器30访问。电源32为微控制器30和显示屏幕22提供工作电源。
计数器34连接于微控制器30并为卡每次被使用时提供计数,也就是,每当用户按下开关28,相应地,变量USER-EVENT-ID增1。应该说明的是用户卡12应以密码保护。这样才能保证只有当拥有正确密码的用户使用用户卡12的时侯,个人识别号才能被产生和显示。当然,密码也可以随个人识别号一起由用户输入并通过因特网传给鉴别服务器。这样可以保证用户卡12不被认识持卡人并知道帐户名的人使用。
微控制器30被编程用来产生一个伪随机变量USER-RANDOM-ID的值,如前所述,这个值与USER-EVENT-ID相对应并通过SEED和PREV-USER-RANDOM-ID产生。以下C++类伪码说明了随机数产生的基本概念<pre listing-type="program-listing"><![CDATA[typedef PIN_type unsigned long;PIN_type random(const char*ACCTNAME){∥根据ACCTNAME从数据库中取出所需信息retriev_info(ACCTNAME,SEED,PREV-RANDOM-ID);∥根据前一个数产生伪随机数。此随机数可以由多种方法产生,甚至可以是∥硬件产生的真正的随机数。只要鉴别服务器和用户卡都能通过共知的信息∥产生同样的随机数,且不同的用户卡产生的随机数序列互不相关。RANDOM-ID=(SEED*PREV-RANDOM-ID)mod 0xffffff;Return RANDOM-ID;}]]></pre>每次用户卡12被使用时,一个常规的时钟或计时器40被激活一段预先设定的时间,例如30至60秒。当时间到后,计时器40便会自动断开,个人识别号也会从显示屏幕22上消失。
如图2C所示的另一个实例,用户卡12可以和常规读卡器42一起使用来帮助用户在交易时输入个人识别号。如常规所知,读卡器42可以安装在电脑或销售点终端上。用户卡12的开关28有一个光敏二极管感应器44,用户卡12同时有一个发光二极管46来传送载有个人识别号的光调制信号。相应的,读卡器可以由光敏二极管48,50和一个发光二极管52组成。如果用户装置12不在读卡器42中则光敏感应器44将会断开。当用户卡12被插入读卡器42后,光敏感应器44将会探测到读卡器42上的发光二极管52所发出的光。
光敏传感器44可以被用来激活一个内部三极管Q1(未显示)门至“开”的状态。然后由用户卡12的微控制器30产生的个人识别号串信号可以被用来调制发光二极管46以产生载个人识别号信息的光脉冲序列。插入读卡器42的用户卡12也会切断发光二极管52和光敏二极管50,触发读卡器进入“读”的状态。一旦读卡器进入读的状态后,因为发光二极管46非常靠近光敏二极管48,载有个人识别号信号的光脉冲序列将会从用户卡的发光二极管46传送至读卡器42的光敏二极管48端。读卡器42则会解调光脉冲序列,将其转换为数字型式并提供给用户电脑,销售点终端或其它常规所知的器件。
如图2D所示,数据库20建议被设计为用户表60关系数据库,此数据库由含有重要用户“标记”的信息如ACCTNAME,PREV-AS-EVENT-ID,PREV-AS-RANDOM-ID,SEED和唯一加密屏蔽码MASK,以及其它用于信用处理过程的用户帐户信息如信用卡号,地址,电话号码,出生日期,信用等级等典型由信用卡公司拥有的用户信息组成。
用户表60含有包括所有用户相关数据域的用户主记录。一个用户主记录的实例如下用户记录域帐户名(ACCTNAME) 5个字符(字母数字组合型)种子(SEED) 10个字符(数字型)加密屏蔽码(MASK) 8个字符(数字型)PREV-USER-EVENT-ID 2个字符(数字型)PREV-USER-RANDOM-ID6个字符(数字型)地址 30个字符(字母数字组合型)所在省/市 3个字符(字母数字组合型)国家 3个字符(字母数字组合型)信用卡号 12个字符(字母数字组合型)取决于鉴别服务器18如何设置(即第三方授权实体运作或作为多卖家系统中心的一部分,如众所周知的网上购物中心。网上购物中心是电子版的实际购物中心。众多卖家存在于同一个地方。在网上购物中心的例子中,用户可以进入同一个网址购买不同卖家所提供的商品。),数据库20可以包括一个合适的商家表62,此表储有商家的信息如联络信息和地址等。在此例中,商家表62将会包含每个卖家的商家主记录。这些记录的格式对所有的在授权系统上注册的商家都是相似的。一个这样的商家主记录的企划如下商家记录域商家标识域10个字符(数字型)公司名 20个字符(字母数字组合型)联系人名 20个字符(字母数字组合型)公司地址 32个字符(字母数字组合型)公司电子邮件 10个字符(字母数字组合型)所属银行 10个字符(字母数字组合型)种子(SEED) 10个字符(数字型)加密屏蔽码(MASK) 8个字符(数字型)如上所述,如果鉴别服务器18被用来作为中央多卖家系统使用,数据库20应该含有一个合适的产品/服务表64,此表存有产品/服务相关信息如产品描绘,存货信息和价格。每一个产品/服务记录和一个特定的商家相关。一个产品/服务主记录的企划如下产品/服务记录域产品服务域 10个字符(数字型)产品描绘 20个字符(字母数字型)商家域 10个字符(数字型)价格 5个字符(数字型)存货量 10个字符(数字型)最后,如果鉴别服务器18被设计成多卖家中心系统的一部分,数据库20也应该拥有用来记录支付情况的帐日表66。这些信息可以被用来记录鉴别服务器18上的不同商家的帐目。一个帐目的主记录企划如下帐目记录域交易域10个字符(数字型)交易日期 8个字符(数字型)交易金额 5个字符(数字型)产品/服务域 20个字符(字母数字型)信用卡号 12个字符(数字型)授权号12个字符(数字型)应该理解的是,用户表,商家表,产品/服务表和帐目表的各个域,可以是任何常见的长度或数据类型。
图3A和3B显示了被鉴别服务器18以比较用户卡12的个人识别号和服务器产生的值来认证用户的身份的典型实例的主服务器程序和认证程序的流程图。图3A和3B说明了鉴别服务器为提供本发明的功能所需要的操作。
至于主服务器程序,鉴别服务器18在步骤100停留在空闲态。步骤102,收到用户卡12来的电子数据后,鉴别服务器18解析用户卡12来的数据信息。步骤104,取得用户传送的识别号和帐户名。在此步,用户的IP地址可被鉴别服务器18确认。(图上未显示)。步骤106,利用参数PIN和ACCTNAME调用认证程序。利用帐户名ACCTNAME取出存储在帐户数据库20中的信息,认证程序确认个人识别号PIN并返回值‘真’(TRUE)或‘假’(FALSE)。如果返回‘真’,鉴别服务器18在步骤110继续完成交易所需要的通信。然而,如果‘假’被返回,鉴别服务器18回到步骤100的空闲态,等待输入数据信息。
如图3B所示,认证程序在步骤106被调用时,(带参数PIN和ACCTNAME)在帐户数据库20执行搜寻操作。步骤113,取出和ACCTNAME相关联的数据记录,即PREV-AS-EVENT-ID,PREV-AS-RANDOM-ID,简单加密屏蔽码MASK和用户伪随机标识码发生器种子SEED。
步骤114,鉴别服务器18对用户提供的识别号PIN与MASK异或执行简单加密。变量MASK对每个用户来说是唯一的,它被用来提供最基本的加密。而且,在步骤116,鉴别服务器18从个人识别号PIN中取得USER-EVENT-ID和USER-RANDOM-ID。方法是,对PIN和一合适长度的比特‘1’字符串按位‘与’操作,再左移以取出PIN的前两位(变量EVENT-ID)。
步骤118,鉴别服务器18从它的帐户数据库20中取出PREV-AS-EVENT-ID的值,基于PREV-AS-RANDOM-ID和SEED产生变量AS-RANDOM-ID,并把AS-EVENT-ID的值赋给PREV-AS-EVENT-ID。通过初始化更新变量AS-EVENT-ID和AS-RANDOM-ID,第三方的任何试图重新使用个人识别号PIN的努力都不能从鉴别服务器18取得认证。步骤120,如果变量AS-EVENT-ID的值与从用户传送的标识码中取出的变量USER-EVENT-ID的值不同,鉴别服务器18进入同步圈。
一旦进入同步圈,步骤122,变量PREV-AS-RANDOM-ID的值被赋成变量AS-RANDOM-ID的值。在步骤124,利用PERV-AS-RANDOM-ID和SEED生成一个新的伪随机变量AS-RANDOM-ID。步骤126,一定范围内变量AS-EVENT-ID加-(例如,用取余算法产生EVENT-ID所能表示范围内的一系列可重复变量。)。只要变量AS-EVENT-ID与UER-EVENT-ID不同,根据最新更新的PREV-RANDOM-ID和SEED的值,会有新的伪随机数产生并赋给AS-RANDOM-ID,同时AS-EVENT-ID值加一,直到AS-EVENT-ID的值与USER-EVENT-ID相等。
一旦AS-EVENT-ID等于USER-EVENT-ID,在步骤128,根据AS-RANDOM-ID和USER-RANDOM-ID是否相等决定认证结果。如果二者不等,在步骤130,确认失败,认证程序返回FALSE。交易终止(即变量PREV-AS-EVENT-ID和PREV-AS-RANDOM-ID在帐户数据库20中的值不变。如果AS-RANDOM-ID和USER-RANDOM-ID值相等,步骤128确认成功。在步骤132,PERV-AS-EVENT-ID和AS-EVENT-D被赋成相等,PREV-AS-RANDOM-ID和AS-RANDOM-ID被赋成相等,更新它们在帐户数据库20中的值以备下次交易使用。最后,在步骤134,认证程序返回TRUE。
应注意到,步骤120到126所表示的循环保证了如果变量AS-EVENT-ID和用户产生的变量USER-EVENT-ID不匹配,鉴别服务器18会增加变量AS-EVENT-ID的值,并根据上一次产生的RANDOM-ID产生相应的AS-RANDOM-ID。这样做是考虑到用户可能不小心多次激活用户卡12以至用户卡与鉴别服务器18不同步。
相应地,变量EVENT-ID用于鉴别服务器18和用户卡12之间的同步。然而,应注意,如果用户激活了识别号PIN,USER-EVENT-ID通过预先设置的EVENT-ID运行了一个完整的周期,程序会进行AS-RANDOM-ID和USER-RANDOM-ID的匹配而不经过试同步(显然AS-EVENT-ID和USER-EVENT-ID相等)。解决该问题的方法是可行的,亦或增长循环的长度,亦或在出现此种情况时运行程序恢复鉴别服务器18和用户卡12的同步。在极端的情况下,如果用户多次激活用户卡12超过了预先设置的完整周期的次数,同步是不可能的。用户需要联系鉴别服务器18的系统管理员并出示当前显示在用户卡12上的识别号PIN。管理员应有能力解码USER-EVENT-ID和USER-RANDOM-ID并手动更新帐户数据库20中这些数据的值,这样,用户卡12可以和鉴别服务器18重新同步。
如下C++类伪码说明了上述主服务程序和认证程序的一个实现。
<pre listing-type="program-listing"><![CDATA[Main(){receive data mcssageparse receivcd mcssage to get PIN,ACCTNAME and other informationif(PIN_authentication(ACCTNAME,PIN)){authentication successful,do further process;}else{authentication failed;}return;};Bool PIN_authentication(ACCTNAME,PIN){∥这段代码检查PIN是否正确retrieve PREV_AS_EVENT_ID,PREV_AS_RANDOM_ID,MASK and SEED fromauthentication scrver’s database according to customer’s ACCTNAME;PIN=^MASK;∥异或操作进行简单加密USER-RANDOM-ID=PIN&amp;0xfffff;∥按位比特与操作使RANDOM-ID和PIN分离USER-EVENT-ID=(PIN<<24);∥左移PIN24位,从PIN中取出EVENT-IDFor(PIN_type count=PREV-AS-EVENT-ID;Count!=USER-EVENT-ID;count=(count+1)mod 0xff){ randomnumber=random(SEED,PREV-AS-RANDOM-ID);};AS-RANDOM-ID=random(SEED,randomnumber);If(AS-RANDOM-ID==USER-RANDOM-ID){ ∥认证成功PREV-AS-RANDOM-ID=USER-RANDOM-ID;PREV-AS-EVENT-ID=USER-EVENT-ID; Save PREV-AS-RANDOM-ID,PREV-AS-EVENT-ID in account database;Retum TRUE;}else{ ∥认证失败 return FALSE;}};]]></pre>图4A和4B的流程图说明了被用户卡12用来产生新的个人识别号的主用户程序和产生个人识别号的程序。该个人识别号将被鉴别服务器18用以产生一次交易的授权。图4A和4B中的每一步确认了用户卡12提供本项发明所构想的功能所要进行的操作。应注意,用户卡12进行的操作可由微控制器30内的软件编程实现,或由定制的集成电路直接实现,或是两种方法的结合。
至于主用户程序,用户卡12在步骤200停留在空闲态,直到开关转换28被激活。(例如,通过物理的按压激活或由读卡器42产生的发光二极管信号激活。正如常规理解的那样,当用户卡12中的开关转换28被激活,用户卡12在步骤202从用户那里接受输入的密码从而保障了卡的安全。在步骤204,若密码(PASSWORD)与用户卡12上的只读存储器中所保存的用户密码(USER-PASSWORD)不一致,用户卡12转回到空闲态。如果密码一致,则在步骤206调用‘产生个人识别号’程序。注意用户密码是在用户卡12制造时就被装在只读存储器36中的。当个人识别号在‘产生个人识别号’程序中被返回时,个人识别号在一段预先设定的时间内显示,接着用户卡12又回到空闲态。正如前面所描绘的,个人识别号显示时用户可将其手动地输入某一输入器件,如键盘或由电话语言输入。
一旦‘产生个人识别号’程序被调用,在步骤208,静态常数MASK和SEED从只读存储器36中取得,变量PREV-EVENT-ID和PREV-USER-RANDOM-ID从随机存储器中取得。在步骤210,变量PREV-USER-EVENT-ID的值加1并保存在变量USER-EVENT-ID中。在步骤212,利用PREV-USER,RANDOM-ID和SEED,通过一个广为人知的伪随机数产生算法产生USER-RANDOM-ID。在步骤214,USER-EVENT-ID和USER-RANDOM-ID的比特组合产生个人识别号。
在步骤216,将加密屏蔽码和个人识别号进行异或操作对用户屏蔽码加密。在步骤218,更新PREV-EVENT-ID的值使之和USER-EVENT-ID的值相等。更新PREV-USER-RANDOM-ID的值使之和USER-RANDOM-ID的值相等。在步骤220,产生个人识别号程序返回个人识别号,在显示器22上显示固定长时间,(如30或60秒),然后在步骤200用户卡返回主用户程序。
如下C++类伪码将说明如何实现图4A和4B所示的主用户程序和产生个人识别号程序。
<pre listing-type="program-listing"><![CDATA[Main( ){∥智能卡主程序。为增强安全性,智能卡可以加密码保护。Get a password from the userIf the password is not correctExit from programElsePIN=PIN-generation( );End;Return0;PIN type PIN-generation( ){∥该代码将根据PREV-USER-RANDOM-ID和PREV-EVENT-ID产生新的个人识别∥号。MASK用来对个人识别号进行简单加密。MASK,SEED和最初始的PREV-∥USER-EVENT-ID是每一个智能卡的标记。它们应由智能卡和鉴别服务器严格保∥密。Retrieve PREV-USER-RANDOM-ID,PREV-USER-EVENT-ID,MASK and SEEDfrom memoryPIN-type USER-EVENT-ID=(PREV-USER-EVENT-ID+1)mod 0XFF;∥计数值加1PIN-type USER-RANDOM-ID=random(SEED,PREV-USER-RANDO-ID);∥产生新的随机数USER-EVENT-ID<<24;∥左移24位,与USER-RANDOM-ID组合PIN-type PIN=USER-EVENT-ID|USER-RANDOM-ID;∥对二者比特组合,或PIN=PIN^MASK;∥异或个人识别号和屏蔽码以简单加密。Save USER-EVENT-ID,USER-RANDOM-ID as PREV-USER-EVENT-ID,PREV-USER-RANDOM-IDReturn PIN;}]]></pre>图5和图6说明了本发明所构想的一次典型的财务交易的实例。该交易包括一个买方300,一个卖方302,鉴别服务器18和帐户数据库20。通常,买方会通过支持SECURE SOCKET LAYER(SSL)安全网络协议或其他安全通信机制的浏览器(如NETSCAPE NAVIGATOR或MICROSOFT’S INTERNET EXPLORER)访问卖方的虚拟商店。
卖方302通过浏览器向买方300公布他的产品信息。如果买方300想购买所提供的一个或多个产品或服务,在步骤304,买方送出包括他的帐户名在内的确认信息。步骤306,卖方302产生卖方识别号。步骤308,卖方302通过将买方帐户名,卖方帐户名,卖方识别号,交易数额转给鉴别服务器18,并同时将用户的浏览器连接到鉴别服务器18的IP地址上使本次交易生效。这些信息的接收者将使鉴别服务器18初始化并调用他的主服务器程序。
步骤309,鉴别服务器18使用卖方帐户名和卖方识别号执行认证程序。如果认证失败,在步骤310,鉴别服务器18通知卖方302卖方认证失败。如果认证成功,则在步骤312,鉴别服务器18返回信息到买方的浏览器,同时要求买方提供标识码和交易的最后确认信息。
步骤314,买方300激活他或她的用户卡12产生买方识别号。步骤316,买方300把买方识别号发给鉴别服务器18。步骤318,鉴别服务器18执行认证程序。如果认证失败,在步骤320鉴别服务器18通知买方300和卖方302认证失败。如果认证成功并且交易数额不超过买方300的信用限额,鉴别服务器18在步骤322向卖方302发信息确认认证成功并确保卖方302收到该确认信息。
步骤324,鉴别服务器18更新帐户数据库20,更新已增加的变量EVENT-ID值和买卖双方帐户上新产生的RANDOM-ID。同时,在步骤326,卖方302向买方发交易完成的确认信息。
图7,图8示例了本发明用于网上购物的另一实例。财务交易包括若干买方400,若干卖方402和一个网上购物中心404。鉴别服务器18和帐户数据库20放置在购物中心404内。通常,买方400会访问卖方402展示其商品和服务的购物中心404(即鉴别服务器18本身)。
应注意到,一旦卖方被许可在购物中心内经营,帐户数据库20中就会有与卖方402有关的关于各种产品,订单,存货信息的专门数据表。而且,鉴别服务器会与某一适当的网页相关联,以显示卖方402所提供的产品和服务。通过在鉴别服务器18上定位相当大数量的卖方信息,鉴别服务器18有可能代表卖方完成大多数的交易进程。
步骤406,鉴别服务器向买方提供产品信息。步骤408,买方400提供个人识别号并激活用户卡12执行‘产生个人识别号’程序。一旦产生个人识别号,在步骤410,个人识别号和买方帐号一起被送到鉴别服务器18,鉴别服务器引入主服务程序。如果认证失败,则在步骤414,鉴别服务器18通知买方认证失败。如果认证成功,则在步骤416鉴别服务器18完成与用户400的交易。最终,在步骤418,鉴别服务器18向卖方402送出确认订单(包括授权码)并确保卖方402收到该确认信息。
图9,图10是本发明的又一设计实例。设想软件客户500通过制造商501认证软件安装。目前,防止软件盗版的保护仍然很薄弱,任何人拿到了光盘密码就可以很容易的安装盗版软件。本实例中,假设用户500拥有一认证用户卡12,并且每一个软件光盘由系列号来区分。光盘中的软件由通常的加密算法加密,光盘密码保存在光盘中或由制造商501提供。
用户通过运行光盘内的安装程序安装软件。在步骤502,安装软件会要求用户500提供帐户名和个人识别号。步骤504,用户输入用户卡产生的个人识别号。步骤506,安装程序将帐户名和个人识别号送给鉴别服务器18。
步骤510,鉴别服务器18执行认证程序如果认证失败,在步骤512,光盘被认为是盗版,安装程序终止。如果认证成功,则在步骤514,制造商服务器501收到从鉴别服务器18送来的提示。步骤516,制造商服务器向安装程序发送暗钥,这样安装程序就能防问制造商服务器501上的必要信息,并利用光盘的系列号注册该光盘。最终,在步骤518,安装程序解码光盘并安装软件。应注意,鉴别服务器的功能可以合并入制造商的服务器501中。
应注意到,通过向用户提供欲保护的软件光盘和与之相应的用户卡12,有可能在未联网的计算机上进行认证。光盘上的安装软件应内置有用户卡的种子SEED。当用户开始从光盘上安装软件,安装程序提示用户输入个人识别号,用户启用用户卡12产生基于SEED和初始变量USER-RANDOM-ID和USER-EVENT-ID的个人识别号。当用户把识别号输入安装程序,安装程序就可以通过他保存的初始变量AS-RANDOM-ID和AS-EVENT-ID以及SEED产生同样的个人识别号来证实用户正在安装一个合法取得的光盘软件。如果认证成功,安装完成;否则,终止安装程序。
取得软件光盘认证的另一种方法是每一个光盘有自己的种子SEED。安装时,安装程序提供给用户一个无法预测的随机数RANDOM。用户向鉴别服务器18提供她或他的帐户名,由用户卡12产生的个人识别号PIN,和安装程序产生的随机数RANDOM。鉴别服务器18检查帐户名和个人识别号以辨别用户是否是光盘的合法用户。如果是,鉴别服务器18通过从帐户数据库20读取与光盘相关联的SEED并将其与数据RANDOM用如下C++伪码所描述的方法结合PIN=(SEED*RANDOM)mod 0xff,之后产生一个新的PIN。鉴别服务器把该个人识别号发给用户。用户可以将此鉴别服务器18产生的个人识别号输入安装程序。安装程序用其内置的SEED和它最初提供给用户的数据RANDOM来检测个人识别号是否正确。如果个人识别号正确,安装程序会继续安装;否则,终止安装。
实现软件光盘认证的另一个方法是每一个光盘有独特的种子SEED,SEED由安装软件和销售商鉴别服务器18管理。在这样的系统中,用户从一个大的销售商(如微软)购买光盘软件。用户被要求向光盘安装软件提供依赖于时间/日期的代码光盘钥匙(CD KEY)以完成软件安装。为了得到有效的代码光盘钥匙,用户要向销售商维护的鉴别服务器18提供用户帐户名和用户卡12产生的个人识别号以及光盘系列号,通常是通过交互式的网页来完成。
如果鉴别服务器18基于用户提供的帐户名和个人识别号确认了用户身份,鉴别服务器18将利用已产生的SEED和与用户请求相关联的特定时间/日期产生用户所需的代码光盘钥匙并将该代码光盘钥匙用网页传给用户。鉴别服务器18可以根据如下C++类型的伪码所表示的关系产生代码光盘钥匙光盘KEY=(SEED*DATE)mod 0xff。用户把光盘钥匙输入安装软件,由软件决定代码光盘钥匙是否正确。既然安装软件把用户请求的时间/日期记录在销售商的网页上,安装软件就有能力根据其内置的SEED和用户请求的时间/日期产生相同的光盘钥匙,并且能确认是否允许用户继续安装。
应注意到不需要变量RANDOM-ID和EVENT-ID就可以提供认证。特别是,用户卡12将包括一个键盘,鉴别服务器18向用户提供一个随机数RANDOM。用户把该随机数输入用户卡12。用户卡12接着根据如下C++类伪码所描述的关系产生一个新的个人识别号PIN=(SEED*RANDOM)mod 0xff。鉴别服务器18确认个人识别号是否有效。鉴别服务器18从帐户数据库中取出与用户卡相关联的SEED并利用用户卡使用的算法将SEED与最初向用户提供的数据RANDOM组合。
最终,注意鉴别服务器18并不是中间代理。因此有可能用与光盘封装在一起的廉价卡,通过安装程序提供的RANDOM随机数据与种子SEED一起产生安装认证所需的新的个人识别号。既然安装程序知道分配给卡的SEED和它所提供的随机数RANDOM,安装程序就能知道用户输入的卡提供的个人识别号是正确的和光盘是正版。
尽管本项发明的最佳实例利用了伪随机数产生器来产生随机标识码,随机标识码并不限于数字。它可能是任何形式的字母数字数据,只要用户可读并且能由可重复的发生器复制。类似的,事件标识码不必是传统意义的十进制数,只要求它能存储数值,并且该数值在一定范围内能增加而且能被解码以表示用户随机标识码被产生的次数。
应该认识到,在电子商务交易的背景下,本发明的深层次应用是可能的。亦即,用户可使用用户卡在互联网上转移资金到另一注册用户的帐下。已经被确认的有个人识别号的用户可以给没有注册的用户写网络支票。接受者可以在银行储蓄该印制的支票,而且支票在银行与鉴别服务器兑现。
进一步,本发明的用户卡12可以作为传统信用卡的改进后的替代卡,成为直接付帐方法。通常,在销售点的背景下,用户的信用卡或银行卡的号码被读入销售商的读卡器,然后用户键入他或她的个人识别号(通常是静态的),等待确认。销售商有可能处于欺诈的目的截取卡号和/或个人识别号。使用本发明就可避免这个问题,因为个人识别号是动态的,销售商无法盗用用户提供的信息。
最后,如果每次试图登陆帐户都用用户卡12激活一个新的访问个人识别号,动态个人识别号可用在远程防问控制。正如人们常规理解的那样,用户通过电话拨号上网远程登陆到他们的公司的网络上有相当大的风险。相应地,强的身份确认条件才可能避免第三方不恰当的访问保密主机。根据本发明,如果要求用户每次试图登陆时都产生新的个人识别号,各种不择手段的窃听技术(如争夺登陆窗口以窃取密码的病毒)都能避免。
因为用户帐户信息都存储在鉴别服务器18的隐密数据库中,所以没有敏感信息中网上传播。相应地,本发明消除了与用户进行交易的卖方或零售商或第三方截取用户出生日期,信用卡号及类似信息的可能。进一步,用户安装程序的简化(即卖方或买方)使本发明应用起来更简单。
对本领域的行家们来说,显而易见,不偏离本发明,对上述方法和系统的各种修改都是可能的,其范围将在附录的权项中定义。
权利要求
1.一个用来证实身份的鉴别系统,此鉴别系统含有a)产生唯一的伪随机标识码的方法和存储此唯一的伪随机标识码的方法;b)每次产生唯一的伪随机标识码时事件标识码加1的方法;c)连接此伪随机标识码和事件标识码以产生一个个人识别号的方法;和d)传输帐户名,用户密码和个人识别号至鉴别计算机的方法。
2.权项1所述的鉴别系统,其鉴别计算机中包含a)利用帐户名来提取前次的伪随机标识码和前次的事件标识码,和产生伪随机数的种子的方法;b)在前次的伪随机标识码和前次的事件标识码,和产生伪随机数的种子的基础上产生一个用于认证的伪随机标识码;和c)利用认证用伪随机标识码和用户提供的所谓伪随机标识码进行授权操作的方法。
3.权项1所述的鉴别系统,用结合所谓的伪随机标识码和所谓的事件标识码而产生的含有所谓的伪随机标识码和所谓的事件标识码的个人识别号的方法。
4.权项3所述的鉴别系统,用结合所谓的伪随机标识码和所谓的事件标识码而产生的并进一步由加密屏蔽码产生的含有所谓的伪随机标识码和所谓的事件标识码的个人识别号的方法。
5.权项2所述的鉴别系统,包括产生相应于用户提供的事件标识码的认证用伪随机标识码的方法,其中包括a)利用前次的事件标识码和产生的一系列递增的由前次事件标识码开始的认证用事件标识码至最后一个所谓的认证用事件标识码等于用户提供的事件标识码的方法;和b)用产生伪随机数的种子来产生一系列连续的认证用伪随机标识码,每一个连续认证用伪随机标识码是由前次产生的认证用伪随机标识码和所谓的种子产生,并与一个唯一的认证事件标识码对应,从而使得所谓的最后一个连续的认证用伪随机标识码与所谓的最后一个连续的认证用事件标识码对应。
6.权项2所述的鉴别系统,利用所谓的认证用伪随机标识码和所谓的由用户提供的伪随机标识码进行授权操作的方法,这种操作含有利用所谓的最后一个连续的认证用伪随机标识码和所谓的伪随机标识码的按字节比较方法。
7.鉴别用户身份的方法,其中包括如下步骤a)产生一个伪随机标识码;b)产生一个事件标识码并在所谓的伪所随机标识码产生后将事件标识码加1c)连接伪随机标识码和事件标识码以产生一个个人识别号;并d)与鉴别计算机交换一个帐户名,用户密码和个人识别号信息以进行认证操作。
8.权项7的方法,其鉴别计算机利用帐户名来提取前次伪随机标识码和前次事件标识码,从个人识别号中获得所谓的伪随机标识码和所谓的事件标识码并产生一个与用户提供的事件标识码相对应的认证用伪随机标识码来进行认证操作。
9.权项8的方法,其鉴别计算机利用前次事件标识码产生一系列连续递增的由前次事件标识码开始的认证用事件标识码序列直至所谓的认证用事件标识码序列中的最后一个值等于用户提供的事件标识码。
10.权项9的方法,其鉴别计算机利用用户帐户名来提取一个产生伪随机标识码的种子并产生一个连续的认证用伪随机标识码序列,每一个连续的认证用伪随机标识码是在前次产生的认证用伪随机标识码基础上产生的。每一个随后的认证用伪随机标识码和一个唯一的认证用事件标识码相对应,而且所谓的连续认证用伪随机标识码序列中的最后一个值与所谓的认证用事件标识码的最后一个值相对应。
11.权项10的方法,其认证操作进一步包行了比较所谓的伪随机标识码和所谓的认证用伪随机标识码序列的最后一个值。
全文摘要
本发明是一种用动态个人识别号验证用户卡的持有人是否被授权使用此卡的方法。此个人识别号可以是完全的随机数。在每次交易时,用户卡产生一个伪随机数并制成个人识别号。这一个人识别号便与用户帐户名和用户密码传至鉴别服务器。鉴别服务器可以通过帐户名从安全的帐户数据库中将认证所需信息取出并对个人识别号和用户密码进行认证。如果认证成功,鉴别服务器便会完成用户所要求的金融交易。
文档编号G07F7/10GK1268721SQ0010226
公开日2000年10月4日 申请日期2000年2月15日 优先权日1999年2月15日
发明者卢涛 申请人:卢涛
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1