一次性认证系统的制作方法

文档序号:11236555阅读:438来源:国知局
一次性认证系统的制造方法与工艺

本发明涉及一次性认证系统。



背景技术:

目前存在一种系统,每当认证成功时便更新客户端和服务器各自中的随机数等的种子(seed),在下一次认证时,从这些种子生成一次性id,在客户端与服务器之间相互进行一次性认证(例如参照专利文献1)。

【现有技术文献】

【专利文献】

专利文献1:日本专利特开2004-282295号公报



技术实现要素:

但是,在上述系统中,当发生(a)由于从服务器到客户端的一次性id的通信路径上发生通信错误而导致一次性id未送达、(b)由于服务器停机(serverdown)而导致种子消失等的情况时,会导致相互认证失败,而一旦相互认证失败,则其后服务器和客户端双方在将种子初始化之前都无法进行相互认证。因此,在相互认证失败后,客户端在较长时间内都无法接受认证,直到被分配种子,并利用被分配的种子将种子初始化为止。

本发明是鉴于上述问题而完成的,其目的在于得到一种在相互认证失败的情况下,能够在短时间内将种子恢复为能够相互认证的一次性认证系统。

本发明涉及的一次性认证系统具备认证服务器和终端装置。终端装置和认证服务器分别保存有通常认证用种子和再认证用种子,其中,通常认证用种子用于在通常认证模式下生成和验证一次性认证码,再认证用种子用于在再认证模式下生成和验证一次性认证码。终端装置和认证服务器以通常认证模式执行基于一次性认证码的相互认证。进而,终端装置和认证服务器在通常认证模式下的基于一次性认证码的相互认证失败时,尝试以再认证模式执行基于一次性认证码的相互认证,且在再认证模式下的基于一次性认证码的相互认证成功时,分别根据再认证用种子生成通常认证用种子,恢复通常认证模式下的基于一次性认证码的相互认证。

本发明涉及的计算机程序使与认证服务器之间执行基于一次性认证码的相互认证的终端装置内的计算机作为认证处理部发挥作用。而且,认证处理部构成为:(a)保存有通常认证用种子和再认证用种子,其中,通常认证用种子用于在通常认证模式下生成和验证一次性认证码,再认证用种子用于在再认证模式下生成和验证一次性认证码;(b)与认证服务器之间以通常认证模式执行基于一次性认证码的相互认证;(c)当通常认证模式下的基于一次性认证码的相互认证失败时,尝试以再认证模式与认证服务器之间执行基于一次性认证码的相互认证,且在再认证模式下的基于一次性认证码的相互认证成功时,分别根据再认证用种子生成通常认证用种子,恢复通常认证模式下的基于一次性认证码的相互认证。

(发明效果)

根据本发明,能够得到在相互认证失败的情况下,能够在短时间内将种子恢复为能够相互认证的一次性认证系统。

本发明的上述或者其他目的、特征以及优点,在附图的基础上结合以下详细说明将更加清楚。

附图说明

图1是表示本发明的实施方式涉及的一次性认证系统的构成的框图。

图2是表示图1中的终端装置1的构成的框图。

图3是表示图2所示的终端装置1中所实现的处理部的框图。

图4是表示图1中的认证服务器3的构成的框图。

图5是表示图2所示的认证服务器3中所实现的处理部的框图。

图6是说明图1所示的系统中所执行的、通常认证模式下的基于一次性认证码的相互认证的时序图。

图7是说明图1所示的系统中所执行的、再认证模式下的基于一次性认证码的相互认证的时序图。

图8是表示第二实施方式中的种子表71的结构的一例的图。

图9是表示第二实施方式中的认证码表72(通常认证表72a、再认证表72b)的一例的图。

图10是说明第二实施方式中的认证服务器3所执行的数据处理的流程图(1/2)。

图11是说明第二实施方式中的认证服务器3所执行的数据处理的流程图(2/2)。

具体实施方式

以下,根据附图对本发明的实施方式进行说明。

第一实施方式.

图1是表示本发明的实施方式涉及的一次性认证系统的构成的框图。在图1所示的系统中,作为客户端的终端装置1与互联网等的网络2连接,该网络2与认证服务器3连接。

终端装置1是内置有个人计算机等的计算机的装置。例如,终端装置1在通过网络2享受网络服务时,与认证服务器3之间进行相互认证,相互认证成功后享受网络服务。

网络2包括有线和/或无线的lan(localareanetwork、局域网)、以及/或者互联网等的wan(wideareanetwork、广域网)。

认证服务器3是在登录规定的网络服务(例如网上银行、电子商务等)之前进行终端装置1的认证的认证服务器。

认证服务器3和终端装置1在各相互认证会话(session)中进行相互认证。认证服务器3和终端装置1分别生成种子,每当对方侧装置的认证成功时,更新自己的种子和密钥,并将自己的种子加密后相互进行收发,从两者的种子生成一次性认证码,根据两者的种子分别执行对方侧装置的一次性认证码的认证。另外,以下将基于一次性认证码的认证称为“一次性认证”。

另外,此处一次性认证码为一次性id,但也可以是一次性密码。该情况下,与一次性密码一同使用固定的终端id。

进而,终端装置1和认证服务器3中分别保存有通常认证用种子和再认证用种子,其中,通常认证用种子用于在通常认证模式下生成和验证一次性认证码,再认证用种子用于在再认证模式下生成和验证一次性认证码。

每当需要执行终端装置1的一次性认证时,终端装置1和认证服务器3便以通常认证模式执行基于一次性认证码的相互认证。然后,终端装置l和认证服务器3在通常认证模式下的基于一次性认证码的相互认证失败时,尝试以再认证模式执行基于一次性认证码的相互认证,并且,在再认证模式下的基于一次性认证码的相互认证成功时,分别根据再认证用种子而生成通常认证用种子,并恢复通常认证模式下的基于一次性认证码的相互认证。

另外,在图1中,终端装置1仅为一台,但也可以使多台终端装置1分别保存不同的种子,分别利用不同的一次性认证码进行认证。该情况下,认证服务器3与多台终端装置1之间分别独立地执行基于一次性认证码的相互认证。

以下,对上述系统中的各装置的构成和动作进行说明。

(1)各装置的构成

图2是表示图1中的终端装置1的构成的框图。

如图2所示,终端装置1中内置有具有cpu(centralprocessingunit、中央处理器)11、rom(readonlymemory、只读存储器)12、ram(randomaccessmemory、随机存取存储器)13等的计算机。

cpu11是执行程序,从而执行程序中所描述的处理的运算处理装置。另外,rom12是预先存储程序和数据的非易失性存储器。另外,ram13是执行程序时暂时存储该程序和数据的易失性存储器。

另外,接口14是能够连接存储装置15的接口电路。另外,存储装置15是与接口14连接,且具备存储未图示的操作系统、一次性认证程序31、用于享受规定服务的应用程序、通常认证模式下使用的通常认证种子32、以及再认证模式下使用的再认证种子33等的记录介质的装置。存储装置15使用硬盘驱动器、ssd(solidstatedisk、固态硬盘)等。

另外,接口16是能够连接通信装置17的接口电路。通信装置17是网络接口、调制解调器等能够连接至网络2的装置。

另外,接口18是ieee1394、usb(universalserialbus、通用串行总线)等的外围设备接口。另外,接口20是能够连接输入装置21的接口电路。输入装置21是键盘、鼠标等接收用户操作并输出与该用户操作相符的信号的装置。另外,图像处理电路22是在写入图像数据时输出与该数据对应的图像信号的电路。该图像处理电路22能够与根据该图像信号显示图像的显示装置23连接。

cpu11、rom12、ram13、接口(i/f)14、16、18、20以及图像处理电路22通过总线或者控制器芯片(controllerchip)以能够相互进行数据通信的方式被连接。

图3是表示图2所示的终端装置1中所实现的处理部的框图。如图3所示,在终端装置1中,通过执行上述程序而实现通信处理部41、认证处理部42以及应用43。

通信处理部41使用通信装置17,并利用规定的通信协议经由网络2与认证服务器3等进行数据通信。

认证处理部42通过由cpu11执行一次性认证程序31而实现,并使用通信处理部41而与认证服务器3之间执行基于一次性认证码的相互认证。此时,认证处理部42执行相互认证中的客户端侧的处理。

应用43使用通信处理部41执行数据通信,从而享受规定的网络服务。另外,在相互认证成功后,开始对应用43提供网络服务。

图4是表示图1中的认证服务器3的构成的框图。

在图4中,cpu51是执行程序,从而执行程序中所描述的处理的运算处理装置。另外,rom52是预先存储程序和数据的非易失性存储器。另外,ram53是执行程序时暂时存储该程序和数据的存储器。

另外,接口54是能够连接存储装置55的接口电路。存储装置55是与接口54连接,且具备存储未图示的操作系统、一次性认证程序61、认证中使用的数据等的记录介质的装置。存储装置55使用硬盘驱动器、ssd等。在存储装置55中,作为认证中使用的数据而保存有种子表71、认证码表72以及终端属性表73。

种子表71具有在最后的相互认证时更新的下次认证用种子和下次认证用通用密钥。一台或多台终端装置1各自的下次认证用种子和下次认证用通用密钥分别分开进行保存。

种子表71具备通常认证模式下的下次认证用种子和下次认证用通用密钥、以及再认证模式下的下次认证用种子和下次认证用通用密钥。

认证码表72具有在最后的相互认证时更新的下次认证用的客户端侧一次性认证码。认证码表72包括通常认证表72a和再认证表72b。通常认证表72a具有通常认证模式下的下次认证用的客户端侧一次性认证码,再认证表72b具有再认证模式下的下次认证用客户端侧一次性认证码。一台或多台终端装置1各自的下次认证用的客户端侧一次性认证码分别分开进行保存。

终端属性表73是在一次性认证码为一次性id的情况下,针对各终端装置1而具有与一次性id相关联的特有的终端id、和与该终端id相关联的属性信息(所有者信息等)的表格。另外,该终端id仅在认证服务器3中使用,不向外部进行发送。在一次性认证码为一次性密码的情况下,终端属性表73在判断与一次性认证码一同从终端装置1接收的终端id的正确性时进行参照。

另外,接口56是能够连接通信装置57的接口电路。通信装置57是网络接口、调制解调器等能够连接至网络2的装置。

cpu51、rom52、ram53以及接口(i/f)54、56通过总线或者控制器芯片以能够相互进行数据通信的方式被连接。

图5是表示图2所示的认证服务器3中实现的处理部的框图。如图5所示,在该认证服务器3中,能够实现通信处理部81和服务器侧认证处理部82。

通信处理部81使用通信装置57,并利用规定的通信协议经由网络2与终端装置1等进行数据通信。

服务器侧认证处理部82通过由cpu51执行一次性认证程序61而实现,并使用通信处理部81而与一台或多台终端装置1之间执行基于一次性认证码的相互认证中的服务器侧的处理。

(2)各装置的动作

终端装置1中保存有通常认证模式下的种子r(n-1)、q(n-1)以及通用密钥k(n-1)。另外,认证服务器3中也保存有通常认证模式下的相同的种子r(n-1)、q(n-1)以及通用密钥k(n-1)。另外,n表示通常认证模式下的相互认证会话的次数。

在此,种子r(n-1)是本次(n-1)的通常认证模式下的相互认证会话中的客户端侧种子。种子q(n-1)是本次(n-1)的通常认证模式下的相互认证会话中的服务器侧种子。通用密钥k(n-1)是用于在本次(n-1)的通常认证模式下的相互认证会话中,从终端装置1向认证服务器3发送通常认证模式下的下次认证用的客户端侧种子r(n)时,对该r(n)进行加密的通用密钥。另外,通用密钥k(n-1)也是用于在本次(n-1)的通常认证模式下的相互认证会话中,从认证服务器3向终端装置1发送通常认证模式下的下次认证用的服务器侧种子q(n)时,对该q(n)进行加密的通用密钥。

另外,终端装置1中保存有再认证模式下的种子rx(m-1)、qx(m-1)以及通用密钥kx(m-1)。另外,认证服务器3中也保存有再认证模式下的相同的种子rx(m-1)、qx(m-1)以及通用密钥kx(m-1)。另外,m表示再认证模式下的相互认证会话的次数。

每当执行了通常认证模式下的相互认证会话且相互认证成功时,便更新通常认证模式下的种子r(n-1)、q(n-1)以及通用密钥k(n-1)。另外,即使执行了通常认证模式下的相互认证会话,也不更新再认证模式下的种子rx(m-1)、qx(m-1)以及通用密钥kx(m-1)。

另外,在通常认证模式下的相互认证失败时执行再认证模式下的相互认证会话,并且,每当执行了再认证模式下的相互认证会话且相互认证成功时,便更新再认证模式下的种子rx(m-1)、qx(m-1)以及通用密钥kx(m-1)。当再认证模式下的相互认证会话中相互认证成功时,终端装置1与认证服务器3之间并非经由网络2相互收发通常认证模式下的新的种子,而是在终端装置1和认证服务器3中,分别根据再认证模式下的更新后的种子rx(m)、qx(m),重新设定通常认证模式下的种子r(n)、q(n)以及通用密钥k(n)。

在此,种子rx(m-1)是本次(m-1)的再认证模式下的相互认证会话中的客户端侧种子。种子qx(m-1)是本次(m-1)的再认证模式下的相互认证会话中的服务器侧种子。通用密钥kx(m-1)是用于在本次(m-1)的再认证模式下的相互认证会话中,从终端装置1向认证服务器3发送再认证模式下的下次认证用的客户端侧种子rx(m)时,对该rx(m)进行加密的通用密钥。另外,通用密钥kx(m-1)也是用于在本次(m-1)的再认证模式下的相互认证会话中,从认证服务器3向终端装置1发送再认证模式下的下次认证用的服务器侧种子qx(m)时,对该qx(m)进行加密的通用密钥。

另外,通过在初始状态下设定通常认证模式的种子的初始值r(0)、q(0)以及通用密钥的初始值k(0)之后,立即执行规定次数(一次以上)的通常认证模式下的基于一次性认证码的相互认证,从而将通常认证模式下的种子和通用密钥从初始值更新为r(i)、q(i)以及k(i)。

另外,通过在初始状态下设定再认证模式的种子的初始值rx(0)、qx(0)以及通用密钥的初始值kx(0)之后,立即执行规定次数(一次以上)的再认证模式下的基于一次性认证码的相互认证,从而将再认证模式下的种子和通用密钥从初始值更新为rx(i)、qx(i)以及kx(i)。该情况下,也可以不根据再认证模式下的种子rx(i)、qx(i)而设定通常认证模式下的种子r(i)、q(i)以及通用密钥k(i)。

(2a)通常认证模式下的基于一次性认证码的相互认证

图6是说明图1所示的系统中执行的、通常认证模式下的基于一次性认证码的相互认证的时序图。

在通常认证模式下的基于一次性认证码的相互认证会话(步骤s1)中,首先,终端装置1的认证处理部42生成随机数r,并将该随机数r设定为下次认证用的客户端侧种子r(n)(步骤s21)。

然后,认证处理部42生成仅在本次的相互认证会话中使用的客户端侧一次性认证码c(n-1)(步骤s22)。

一次性认证码c(n-1)利用单向函数进行计算。该单向函数是取两个自变量,且函数值根据自变量的顺序的不同而不同的函数。在本实施方式中,该单向函数为散列函数hc。

一次性认证码c(n-1)按下式进行计算。

c(n-1)=hc(r(n-1),q(n-1))

在此,散列函数hc的第一自变量使用r(n-1),第二自变量使用q(n-1)。

另外,认证处理部42利用通用密钥k(n-1)按照规定的加密方式对r(n)进行加密。另外,将利用通用密钥k(n-1)加密后的r(n)表现为k(n-1)*r(n)。

然后,认证处理部42使用通信处理部4l,将一次性认证码c(n-1)和k(n-1)*r(n)发送给认证服务器3(步骤s23)。此时,通信处理部41将一次性认证码c(n-1)和k(n-1)*r(n)作为一条消息(message)进行发送。

在认证服务器3中,服务器侧认证处理部82使用通信处理部81接收该消息,并从该消息中提取出一次性认证码c(n-1)和k(n-1)*r(n),且判断接收到的一次性认证码c(n-1)与其所保存的通常认证模式下的客户端侧一次性认证码是否一致(步骤s24)。

另外,从终端装置1向认证服务器3发送的消息的数据格式(一次性认证码的大小和位置、以及加密后的种子的大小和位置),在通常认证模式和再认证模式下是相同的。

另外,由于通常认证模式下的客户端侧一次性认证码和再认证模式下的客户端侧一次性认证码具有相同的数据格式(即,相同的数据长度),加密后的通常认证模式下的客户端侧种子和加密后的再认证模式下的客户端侧种子具有相同的数据格式(即,相同的数据长度),因此,仅从接收数据无法区分是通常认证模式下的一次性认证码还是再认证模式下的一次性认证码。因此,服务器侧认证处理部82判断接收到的一次性认证码与通常认证表72a中所保存的一次性认证码是否一致、以及接收到的一次性认证码与再认证表72b中所保存的一次性认证码是否一致,从而判断接收到的一次性认证码是通常认证模式下的正确的一次性认证码、再认证模式下的正确的一次性认证码以及不正确的一次性认证码中的哪一种。

因此,当判断为接收到的一次性认证码c(n-1)是不正确的一次性认证码时,服务器侧认证处理部82判断为认证失败,并结束处理。

当接收到的一次性认证码c(n-1)与通常认证表72a中所保存的通常认证模式下的客户端侧一次性认证码一致时,服务器侧认证处理部82判断为认证成功,首先生成随机数q,并将该随机数q设定为通常认证模式下的下次认证用服务器侧种子q(n)(步骤s25)。

另外,服务器侧认证处理部82利用种子表71中所保存的通用密钥k(n-1)将k(n-1)*r(n)解密为r(n)。然后,服务器侧认证处理部82生成服务器侧一次性认证码s(n-1)(步骤s26)。

一次性认证码s(n-1)利用单向函数进行计算。该单向函数是取两个自变量,且函数值根据自变量的顺序的不同而不同的函数。在本实施方式中,该单向函数为散列函数hs。

一次性认证码s(n-1)按照下式进行计算。

s(n-1)=hs(r(n),q(n-1))

在此,散列函数hs的第一自变量使用r(n),第二自变量使用q(n-1)。另外,散列函数hs可以是与散列函数hc相同的函数,也可以是与散列函数hc不同的函数。

另外,服务器侧认证处理部82利用通用密钥k(n-1)按照规定的加密方式对q(n)进行加密。另外,将利用通用密钥k(n-1)加密后的q(n)表现为k(n-1)*q(n)。

然后,服务器侧认证处理部82使用通信处理部81,将一次性认证码s(n-1)和k(n-1)*q(n)发送给终端装置1(步骤s27)。此时,通信处理部81将一次性认证码s(n-1)和k(n-1)*q(n)作为一条消息进行发送。

另外,从认证服务器3向终端装置1发送的消息的数据格式(一次性认证码的大小和位置、以及加密后的种子的大小和位置)在通常认证模式和再认证模式下是相同的。另外,通常认证模式下的服务器侧一次性认证码和再认证模式下的服务器侧一次性认证码具有相同的数据格式(即,相同的数据长度),加密后的通常认证模式下的服务器侧种子和加密后的再认证模式下的服务器侧种子具有相同的数据格式(即,相同的数据长度)。

当认证服务器3中的终端装置1的一次性认证成功时,终端装置1接收到包含一次性认证码s(n-1)和k(n-1)*q(n)的上述消息。在终端装置1中,认证处理部42使用通信处理部41接收该消息,并从该消息中提取出一次性认证码s(n-1)和k(n-1)*q(n)。然后,认证处理部42根据通常认证模式下的r(n)和q(n-1),并按照上式计算出正确的一次性认证码s(n-1)的值,且判断接收到的一次性认证码s(n-1)与计算出的值是否一致(步骤s28)。

此时,当接收到的一次性认证码s(n-1)与计算出的值不一致时,认证处理部42判断为认证失败,且结束处理。

当接收到的一次性认证码s(n-1)与计算出的值一致时,认证处理部42判断为认证成功。即,认证处理部42判断为相互认证会话(步骤s1)中的相互认证成功。

当判断为相互认证会话(步骤s1)中的相互认证成功时,认证处理部42首先利用其所保存的通用密钥k(n-1)将k(n-1)*q(n)解密为q(n),并将该值设定为通常认证模式下的下次认证用服务器侧种子。

然后,认证处理部42按照下式更新通常认证模式下的通用密钥k(n-1)(步骤s29)。

k(n)=hk(k(n-1),r(n),q(n))

在此,hk为单向函数且为散列函数。

由此,在通常认证模式下的基于一次性认证码的相互认证成功后,认证处理部42将终端装置1中所保存的种子和通用密钥更新为r(n)、q(n)以及k(n)。

另一方面,服务器侧认证处理部82按照上式从r(n)和q(n)计算出通常认证模式下的下次一次性认证时使用的客户端侧一次性认证码c(n)。然后,服务器侧认证处理部82利用r(n)、q(n)以及k(n)更新种子表71中关于终端装置1的通常认证模式下的数据,利用c(n)更新通常认证表72a中关于终端装置1的一次性认证码。由此,这些值被保存至通常认证模式的下次相互认证会话为止。

进而,在认证服务器3中,服务器侧认证处理部82也在发送一次性认证码s(n-1)之后,按照上式同样地更新通常认证模式下的通用密钥k(n-1)(步骤s30)。

由此,通常认证模式下的相互认证会话执行完毕。只要通常认证模式下的相互认证不失败,便不执行再认证模式下的相互认证会话,而是反复执行通常认证模式下的相互认证会话。

(2b)再认证模式下的基于一次性认证码的相互认证

图7是说明图1所示的系统中执行的、再认证模式下的基于一次性认证码的相互认证的时序图。

例如,在通常认证模式下,在虽然发送了认证服务器3的一次性认证码s(n-1),但因为通信障碍而导致终端装置1未正确接收到一次性认证码s(n-1)的情况、或者因为认证服务器3发生服务器停机而使终端装置1中保存的种子与认证服务器3中保存的种子互不一致的情况下,下次的终端装置1的一次性认证失败。

在通常认证模式下,当认证服务器3中的终端装置1的一次性认证失败时,不会从认证服务器3向终端装置1发送包含一次性认证码的消息。因此,终端装置1在未接收到该消息时,判断为认证服务器3中的终端装置1的一次性认证失败。即,该情况下,终端装置1根据未接收到认证服务器3的一次性认证码s(n-1)这一情况而判断为通常认证模式下的相互认证失败(步骤s41)。在判断为通常认证模式下的相互认证失败的情况下,终端装置1如下所述执行再认证模式下的相互认证会话(步骤s51),使终端装置1中保存的种子与认证服务器3中保存的种子相互一致,从而恢复通常认证模式下的种子。

在再认证模式下的相互认证会话(步骤s51)中,首先,终端装置1的认证处理部42生成随机数r,并将该随机数r设定为下次认证用的客户端侧种子rx(m)(步骤s61)。

然后,认证处理部42生成仅在本次相互认证会话中使用的客户端侧一次性认证码cx(m-1)(步骤s62)。

一次性认证码cx(m-1)利用单向函数进行计算。该单向函数是取两个自变量,且函数值根据自变量的顺序的不同而不同的函数。在本实施方式中,该单向函数为散列函数hcx。

一次性认证码cx(m-1)按照下式进行计算。

cx(m-1)=hcx(rx(m-1),qx(m-1))

在此,散列函数hcx的第一自变量使用rx(m-1),第二自变量使用qx(m-1)。另外,散列函数hcx可以是与散列函数hc、hs的任意一个相同的函数,也可以是与散列函数hc、hs均不相同的函数。

另外,认证处理部42利用通用密钥kx(m-1)按照规定的加密方式对rx(m)进行加密。另外,将利用通用密钥kx(m-1)加密后的rx(m)表现为kx(m-1)*rx(m)。

然后,认证处理部42使用通信处理部41,将一次性认证码cx(m-1)和kx(m-1)*rx(m)发送给认证服务器3(步骤s63)。此时,通信处理部41将一次性认证码cx(m-1)和kx(m-1)*rx(m)作为一条消息进行发送。

在认证服务器3中,服务器侧认证处理部82使用通信处理部81接收该消息,并从该消息中提取出一次性认证码cx(m-1)和kx(m-1)*rx(m)。

服务器侧认证处理部82首先判断接收到的一次性认证码cx(m-1)与其所保存的通常认证模式下的客户端侧一次性认证码是否一致。此时,接收到的一次性认证码cx(m-1)与通常认证模式下的客户端侧一次性认证码不一致。接着,服务器侧认证处理部82判断接收到的一次性认证码cx(m-1)与其所保存的再认证模式下的客户端侧一次性认证码是否一致(步骤s64)。

当接收到的一次性认证码cx(m-1)与再认证表72b中所保存的再认证模式下的客户端侧一次性认证码一致时,服务器侧认证处理部82判断为认证成功,首先生成随机数q,并将该随机数q设定为再认证模式下的下次认证用服务器侧种子qx(m)(步骤s65)。

另外,服务器侧认证处理部82利用种子表71中保存的通用密钥kx(m-1)将kx(m-1)*rx(m)解密为rx(m)。然后,服务器侧认证处理部82生成服务器侧一次性认证码sx(m-1)(步骤s66)。

一次性认证码sx(m-1)利用单向函数进行计算。该单向函数是取两个自变量,且函数值根据自变量的顺序的不同而不同的函数。在本实施方式中,该单向函数为散列函数hsx。

一次性认证码sx(m-1)按照下式进行计算。

sx(m-1)=hsx(rx(m),qx(m-1))

在此,散列函数hsx的第一自变量使用rx(m),第二自变量使用qx(m-1)。另外,散列函数hsx可以是与散列函数hc、hs、hcx中的任意一个相同的函数,也可以是与散列函数hc、hs、hcx均不相同的函数。

另外,服务器侧认证处理部82利用通用密钥kx(m-1)按照规定的加密方式对qx(m)进行加密。另外,将利用通用密钥kx(m-1)加密后的qx(m)表现为kx(m-1)*qx(m)。

然后,服务器侧认证处理部82使用通信处理部81,将一次性认证码sx(m-1)和kx(m-1)*qx(m)发送给终端装置1(步骤s67)。此时,通信处理部81将一次性认证码sx(m-1)和kx(m-1)*qx(m)作为一条消息进行发送。

当认证服务器3中的终端装置1的一次性认证成功时,终端装置1接收到包含一次性认证码sx(m-1)和kx(m-1)*qx(m)的上述消息。在终端装置1中,认证处理部42使用通信处理部41接收该消息,并从该消息中提取出一次性认证码sx(m-1)和kx(m-1)*qx(m)。然后,认证处理部42根据再认证模式下的rx(m)和qx(m-1),并按照上式计算出正确的一次性认证码sx(m-1)的值,且判断接收到的一次性认证码sx(m-1)与计算出的值是否一致(步骤s68)。

此时,当接收到的一次性认证码sx(m-1)与计算出的值不一致时,认证处理部42判断为认证失败,且结束处理。

当接收到的一次性认证码sx(m-1)与计算出的值一致时,认证处理部42判断为认证成功。即,认证处理部42判断为相互认证会话(步骤s51)中的相互认证成功。

当判断为相互认证会话(步骤s51)中的相互认证成功时,认证处理部42首先利用所保存的通用密钥kx(m-1)将kx(m-1)*qx(m)解密为qx(m),并将该值设定为再认证模式下的下次认证用服务器侧种子(步骤s69)。

然后,认证处理部42按照下式更新再认证模式下的通用密钥kx(m-1)(步骤s70)。

kx(m)=hkx(kx(m-1),rx(m),qx(m))

在此,hkx为单向函数且为散列函数。

由此,在再认证模式下的基于一次性认证码的相互认证成功之后,认证处理部42将终端装置1中保存的种子和通用密钥更新为rx(m)、qx(m)以及kx(m)。

另一方面,服务器侧认证处理部82按照上式从rx(m)和qx(m)计算出再认证模式下的下次一次性认证时使用的客户端侧一次性认证码cx(m)。然后,服务器侧认证处理部82利用rx(m)、qx(m)以及kx(m)更新种子表71中关于终端装置1的再认证模式下的数据,并利用cx(m)更新再认证表72b中关于终端装置1的一次性认证码(步骤s71)。由此,这些值被保存至再认证模式下的下次相互认证会话为止。

另外,在认证服务器3中,服务器侧认证处理部82也在发送一次性认证码sx(m-1)之后,按照上式同样地更新再认证模式下的通用密钥kx(m-1)(步骤s72)。

另外,在终端装置1中,认证处理部42根据再认证模式下的更新后的种子rx(m)、qx(m),生成通常认证模式下的下次认证用的种子r(n)、q(n)以及通用密钥k(n),并将其设定在种子表71中(步骤s73)。

例如,将再认证模式下的更新后的种子qx(m)设为通常认证模式下的下次认证用的种子r(n),将再认证模式下的更新后的种子rx(m)设为通常认证模式下的下次认证用的种子q(n)。或者,也可以利用规定的函数从种子rx(m)、qx(m)生成种子r(n)、q(n)。

另外,通常认证模式下的下次认证用的通用密钥k(n),例如根据下式从种子r(n)、q(n)以及通用密钥kx(m)或者kx(m-1)得到。

k(n)=hx(r(n),q(n),kx(m))

或者,k(n)=hx(r(n),q(n),kx(m-1))

在此,hx为散列函数。

另一方面,在认证服务器3中,服务器侧认证处理部82与认证处理部42同样地从再认证模式下的更新后的种子rx(m)、qx(m)生成通常认证模式下的下次认证用的种子r(n)、q(n)以及通用密钥k(n),并将其设定在种子表71中(步骤s74)。进而,服务器侧认证处理部82从这些种子r(n)、q(n)生成下次认证用的一次性认证码c(n),并将其设定在通常认证表72a中。

如上所述,在上述第一实施方式中,终端装置1和认证服务器3中分别保存有通常认证用种子和再认证用种子,其中,通常认证用种子用于在通常认证模式下生成和验证一次性认证码,再认证用种子用于在再认证模式下生成和验证一次性认证码。终端装置1和认证服务器3以通常认证模式执行基于一次性认证码的相互认证;进而,终端装置1和认证服务器3在通常认证模式下的基于一次性认证码的相互认证失败时,尝试以再认证模式执行基于一次性认证码的相互认证,且在再认证模式下的基于一次性认证码的相互认证成功时,分别根据再认证用种子而生成通常认证用种子,恢复通常认证模式下的基于一次性认证码的相互认证。

由此,在通常认证模式下的相互认证失败时,通过以再认证模式执行相互认证,能够在短时间内将通常认证模式的种子恢复为能够执行相互认证。

第二实施方式.

在本发明的第二实施方式中,对于第一实施方式中的认证服务器3内的数据结构以及按照该数据结构执行的数据处理的一例进行说明。另外,由于系统的基本构成和动作与第一实施方式相同,故省略其说明。另外,在本第二实施方式中,一次性认证码是一次性id。

首先,对数据结构进行说明。

在第二实施方式中,在认证服务器3中,对于与终端装置1相同的一台或多台终端装置分别分配特有的管理编号(终端id),且与该管理编号相关联地保存有:(a)通常认证模式下的下次认证用客户端侧一次性认证码c(n);(b)再认证模式下的下次认证用客户端侧一次性认证码cx(m);(c)通常认证模式下的当前(n-1)的种子r(n-1)、q(n-1)以及通用密钥k(n-1)和下次认证用的种子r(n)、q(n)以及通用密钥k(n);以及(d)再认证模式下的当前(n-1)的种子rx(m-1)、qx(m-1)以及通用密钥kx(m-1)和下次认证用种子rx(m)、qx(m)以及通用密钥kx(m)。

即,在通常认证表72a中,与管理编号相关联地保存有(a)下次认证用客户端侧一次性认证码c(n)。另外,在再认证表72b中,与管理编号相关联地保存有(b)下次认证用客户端侧一次性认证码cx(m)。另外,在种子表71中,与管理编号相关联地保存有:(c)通常认证模式下的当前(n-1)的种子r(n-1)、q(n-1)以及通用密钥k(n-1)和下次认证用的种子r(n)、q(n)以及通用密钥k(n);和(d)再认证模式下的当前(m-1)的种子rx(m-1)、qx(m-1)以及通用密钥kx(m-1)和下次认证用种子rx(m)、qx(m)以及通用密钥kx(m)。

图8是表示第二实施方式中的种子表71的结构的一例的图。图9是表示第二实施方式中的认证码表72(通常认证表72a、再认证表72b)的一例的图。

图8中的通常认证地址是表示通常认证表72a内具有与该通常认证地址相关联的管理编号相同的管理编号的记录(record)的位置的数据。同样地,图8中的再认证地址是表示再认证表72b内具有与该再认证地址相关联的管理编号相同的管理编号的记录的位置的数据。

另外,在图9中,通过服务器侧认证处理部82将通常认证表72a内的记录(一次性认证码与管理编号的组合)按照一次性认证码的值呈升序地进行排序。同样地,将再认证表72b内的记录(一次性认证码与管理编号的组合)按照一次性认证码的值呈升序地进行排序。由此,在一次性认证时,能够迅速地判断出从客户端接收的一次性认证码是否己被登记在通常认证表72a、再认证表72b中。

另外,种子表71、通常认证表72a以及再认证表72b预先具有规定数量(即,终端装置的数量)的记录,并对记录内的管理编号以外的其他域(field)设定初始值。

接下来,对数据处理进行说明。

图10和图11是说明第二实施方式中认证服务器3所执行的数据处理的流程图。

在认证服务器3中,服务器侧认证处理部82在从终端装置1接收到包含一次性认证码c(通常认证模式下的一次性认证码或者再认证模式下的一次性认证码)的消息之后,判断该一次性认证码c是否为已登记在通常认证表72a中的客户端侧一次性认证码c(n-1)中的任意一个(步骤s101)。

当接收到的一次性认证码c是已登记在通常认证表72a中的客户端侧一次性认证码c(n-1)中的任意一个时,服务器侧认证处理部82在通常认证表72a中确定与接收到的一次性认证码c相关联的管理编号(步骤s102)。该情况下,执行通常认证模式下的一次性认证。

服务器侧认证处理部82从种子表71读出与所确定的管理编号相关联的q(n-1)和k(n-1)(步骤s103)

然后,服务器侧认证处理部82利用读出的k(n-1)将接收到的k(n-1)*r(n)解密为r(n),并将该r(n)与该管理编号相关联地写入种子表71中(步骤s104)。

接着,服务器侧认证处理部82生成下次认证用服务器侧种子。首先,服务器侧认证处理部82生成随机数q,并在将该随机数q用作下次认证用服务器侧种子时,判断下次认证用的客户端侧一次性认证码是否与其他的终端装置1的客户端侧一次性认证码中的任意一个一致(步骤s106)。即,判断使用生成的随机数q时的客户端侧一次性认证码的唯一性(即,不存在具有相同值的其他一次性认证码)是否得到确保。

此时,服务器侧认证处理部82按照下式计算出将该随机数q用作下次认证用服务器侧种子时的下次认证用客户端侧一次性认证码x1,并判断该一次性认证码x1是否已被登记在通常认证表72a或者再认证表72b中。

x1=hc(r(n),q)

然后,当判断为利用所生成的随机数q无法确保唯一性时,服务器侧认证处理部82重新生成随机数q,直到唯一性得到确保为止。

另一方面,当判断为利用所生成的随机数q能够确保唯一性时,服务器侧认证处理部82将随机数q设定为下次认证用服务器侧种子q(n),并将该种子q(n)与该管理编号相关联地写入种子表71中(步骤s107)。

然后,服务器侧认证处理部82生成服务器侧一次性认证码s(n-1)和加密后的下次认证用服务器侧种子k(n-1)*q(n),并发送给终端装置1(步骤s108)。

另外,服务器侧认证处理部82将步骤s106中判断时计算出的x1作为下次认证用客户端侧一次性认证码c(n),并利用该c(n)更新通常认证表72a中与该管理编号相关联的一次性认证码(步骤s109)。此时,服务器侧认证处理部82从种子表71中读出与该管理编号相关联的通常认证地址,并利用该通常认证地址而确定通常认证表72a中该管理编号的记录,从而更新该记录内的一次性认证码。

之后,服务器侧认证处理部82将通常认证表72a内的记录按照一次性认证码的值呈升序地进行排序,对于通过排序而导致位置发生变更的记录,更新种子表71中与该记录的管理编号相关联的通常认证地址(步骤s110)。

然后,服务器侧认证处理部82生成下次认证用通用密钥k(n),并与该管理编号相关联地写入种子表71中(步骤s111)。

进而,服务器侧认证处理部82在种子表71中利用该管理编号的下次认证用的种子r(n)、q(n)和通用密钥k(n),更新本次认证用的种子r(n-1)、q(n-1)和通用密钥k(n-1)(步骤s112)。

由此,关于通常认证模式下的一次性认证的数据处理执行完毕。

另一方面,当在步骤s101中判断为接收到的一次性认证码c尚未登记在通常认证表72a中时,服务器侧认证处理部82判断接收到的一次性认证码c是否为已登记在再认证表72b中的客户端侧一次性认证码cx(m-1)中的任意一个(步骤s121)。

当接收到的一次性认证码c是已登记在再认证表72b中的客户端侧一次性认证码cx(m-1)中的任意一个时,服务器侧认证处理部82在再认证表72b中确定与接收到的一次性认证码c相关联的管理编号(步骤s122)。该情况下,执行再认证模式下的一次性认证。

服务器侧认证处理部82从种子表71中读出与所确定的管理编号相关联的qx(m-1)和kx(m-1)(步骤s123)。

然后,服务器侧认证处理部82利用读出的kx(m-1)将接收到的kx(m-1)*rx(m)解密为rx(m),并将该rx(m)与该管理编号相关联地写入种子表71中(步骤s124)。

接着,服务器侧认证处理部82生成下次认证用服务器侧种子。首先,服务器侧认证处理部82生成随机数q,并在将该随机数q用作下次认证用服务器侧种子的情况下,判断下次认证用的客户端侧一次性认证码是否与通常认证模式或者再认证模式下的其他的客户端侧一次性认证码中的任意一个一致(步骤s126)。即,判断使用生成的随机数q时的客户端侧一次性认证码的唯一性(即,不存在具有相同值的其他一次性认证码)是否得到确保。

此时,服务器侧认证处理部82按照下式计算出将该随机数q用作下次认证用服务器侧种子时的下次认证用的客户端侧一次性认证码x2,并判断该一次性认证码x2是否已被登记在通常认证表72a或者再认证表72b中。

x2=hcx(rx(m),q)

然后,当判断为利用所生成的随机数q无法确保唯一性时,服务器侧认证处理部82重新生成随机数q,直到唯一性得到确保为止。

另一方面,当判断为利用所生成的随机数q能够确保唯一性时,服务器侧认证处理部82将随机数q设定为下次认证用服务器侧种子qx(m),并将该种子qx(m)与该管理编号相关联地写入种子表71中(步骤s127)。

然后,服务器侧认证处理部82生成服务器侧一次性认证码sx(m-1)和加密后的下次认证用服务器侧种子kx(m-1)*qx(m),并发送给终端装置1(步骤s128)。

另外,服务器侧认证处理部82将步骤s126中判断时计算出的x2作为下次认证用客户端侧一次性认证码cx(m),并利用该cx(m)更新再认证表72b中与该管理编号相关联的一次性认证码(步骤s129)。此时,服务器侧认证处理部82从种子表71中读出与该管理编号相关联的再认证地址,并利用该再认证地址而确定再认证表72b中该管理编号的记录,从而更新该记录内的一次性认证码。

之后,服务器侧认证处理部82将再认证表72b内的记录按照一次性认证码的值呈升序地进行排序,对于通过排序而导致位置发生变更的记录,更新种子表71中与该记录的管理编号相关联的再认证地址(步骤s130)。

然后,服务器侧认证处理部82生成下次认证用通用密钥kx(m),并与该管理编号相关联地写入种子表71中(步骤s131)。

进而,服务器侧认证处理部82在种子表71中,利用该管理编号的下次认证用种子rx(m)、qx(m)和通用密钥kx(m),更新本次认证用的种子rx(m-1)、qx(m-1)和通用密钥kx(m-1)(步骤s132)。

然后,服务器侧认证处理部82根据再认证模式的种子rx(m)、qx(m)和通用密钥kx(m),生成通常认证模式下的下次认证用的种子r(n)、q(n)和通用密钥k(n),并将该种子r(n)、q(n)和通用密钥k(n)与该管理编号相关联地写入种子表71中(步骤s133)。

由此,关于再认证模式下的一次性认证的数据处理执行完毕。

如上所述,在上述第二实施方式中,利用管理编号来管理多台终端装置1,能够针对各终端装置1分别独立地进行一次性认证。

另外,关于上述实施方式,也可以在不脱离其主题的要旨和范围并且不减弱其所期望的优点的范围内进行各种变更和修改,由于这些变更和修改对于本领域技术人员而言是显而易见的,因而这些变更和修改也应该包含在权利要求范围内。

例如,在第一、第二实施方式中,也可以形成为:在利用再认证模式下的相互认证来恢复通常认证模式下的相互认证的种子,且再认证模式下的相互认证失败时,利用再再认证模式下的相互认证来恢复再认证模式的相互认证的种子。

另外,在第一、第二实施方式中,也可以形成为:在认证服务器3中,服务器侧认证处理部82在认证服务器3启动时,将种子表71和认证码表72从存储装置55读取至ram53,根据ram53中的种子表71和认证码表72执行基于一次性认证的相互认证,且在认证服务器3关机时,利用ram53中的种子表71和认证码表72来更新存储装置55中的种子表71和认证码表72。

另外,在上述第一、第二实施方式中,也可以形成为:认证服务器3的服务器侧认证处理部82将种子表71中的再认证模式的种子cx(i)、qx(i)另外存储在外部的非易失性存储装置中以进行备份,在认证服务器3发生服务器停机后恢复时,利用存储在该外部的非易失性存储装置中的种子cx(i)、qx(i)将存储装置55内的种子表71中的再认证模式的种子cx(i)、qx(i)覆盖而进行恢复。

(工业上的可利用性)

本发明能够适用于例如认证客户端的网络系统中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1