相互认证方法及认证设备与流程

文档序号:11589734阅读:325来源:国知局
相互认证方法及认证设备与流程

本文所讨论的实施例涉及相互认证方法及认证设备。



背景技术:

当多个信息处理装置经由网络与彼此执行数据通信时,存在各种安全风险。例如,数据可能被通信路径上的第三方盗取或篡改,或者第三方可能通过使用未经授权的信息处理装置来欺骗地登录。基于该背景,为了确保安全,可以使用密码通信技术。该密码通信技术的示例包括安全套接层(ssl)和传输层安全(tls)。ssl和tls可以用在各种类型的数据通信例如万维网(www)通信、电子邮件传输和虚拟专用网络(vpn)通信中。

在密码通信技术中,存在以下情况:通过使用公钥密码学技术来执行握手。例如,当两个信息处理装置执行握手时,希望执行数据通信的两个信息处理装置中的每个信息处理装置通过使用其通信对端(peer)的公钥来对密钥材料例如随机数进行加密,并且发送所加密的密钥材料。通过使用公钥加密的密钥材料仅可以由经授权的信息处理装置来解密,所述经授权的信息处理装置具有与公钥对应的私钥。因此,当两个信息处理装置中的每个信息处理装置确定其通信对端已经正确地识别相应的加密密钥材料时,两个信息处理装置中的每个信息处理装置可以验证其通信对端。

此外,例如,当执行握手时,两个信息处理装置可以基于预定的密钥生成算法和在两个信息处理装置之间交换的密钥材料来独立地生成共享密钥。如果两个信息处理装置是经授权的信息处理装置,则该两个信息处理装置生成相同的共享密钥。因此,该两个信息处理装置可以对共享密钥进行协定,而不发送共享密钥本身。之后,该两个信息处理装置可以基于所协定的共享密钥来加密和发送数据。

已经提出了基于身份的(基于id的)密码学作为一种公钥密码学技术。在基于id的密码学中,使用人可以识别的任何标识符例如网络地址、主机名称或装置号或通过转换这样的标识符而获得的数值作为公钥,而不使用数学生成的数值作为公钥。在基于id的密码学中,当已知通信对端的标识符时,可以执行密码处理,并且存在以下情况:不需要证明公钥被分配给通信对端的证书。

参见,例如,日本公开特许公报第2010-4288号。

在密码通信技术中,例如,两个信息处理装置可以根据以下过程来执行握手。一个信息处理装置访问另一个信息处理装置。后一信息处理装置发送通过使用前一信息处理装置的公钥来执行加密而获得的密钥材料。前一信息处理装置发送通过使用后一信息处理装置的公钥来执行加密而获得的密钥材料。此外,前一信息处理装置生成用于确定是否已经根据密钥材料精确地生成了共享密钥的验证数据,并且发送该验证数据。后一信息处理装置也生成并且发送验证数据。当两个信息处理中的每个信息处理装置验证其相应的验证数据时,两个信息处理装置确定共享密钥已经达成一致。

然而,根据上述握手过程,在两个信息处理装置之间执行了四次通信。如果可以减少通信的数量,则可以缩短认证时间,并且可以减少数据通信开始之前的开销。



技术实现要素:

实施例的一个方面中的目的是提供能够缩短认证时间的相互认证方法、认证设备和认证程序。

根据一个方面,提供了一种由第一信息处理设备和第二信息处理设备执行的相互认证方法,所述相互认证方法包括:由第一信息处理设备通过使用与关于第二信息处理设备的第二标识信息对应的第二公钥对第一随机数进行加密来生成第一加密数据;由第一信息处理设备将关于第一信息处理设备的第一标识信息、第二标识信息和第一加密数据发送至第二信息处理设备;由第二信息处理设备通过使用与第一标识信息对应的第一公钥对第二随机数进行加密来生成第二加密数据;由第二信息处理设备基于第二随机数、第一加密数据和与第二公钥对应的第二私钥来生成第二候选共享密钥;由第二信息处理设备通过使用第二候选共享密钥来生成第二验证数据;由第二信息处理设备将第二加密数据和第二验证数据发送至第一信息处理设备;由第一信息处理设备基于第一随机数、第二加密数据和与第一公钥对应的第一私钥来生成第一候选共享密钥;由第一信息处理设备通过使用第一候选共享密钥来生成第一验证数据;由第一信息处理设备通过使用第一候选共享密钥来检查第二验证数据;由第一信息处理设备将第一验证数据发送至第二信息处理设备;以及由第二信息处理设备通过使用第二候选共享密钥来检查第一验证数据。

附图说明

图1例示了根据第一实施例的认证系统的示例;

图2例示了根据第二实施例的系统的示例;

图3例示了能够实现根据第二实施例的客户端装置的功能的硬件配置的示例;

图4是例示根据第二实施例的客户端装置的功能的示例的框图;

图5是例示根据第二实施例的服务器装置的功能的示例的框图;

图6是例示根据第二实施例的认证处理(无错误)的流程的序列图;

图7是例示根据第二实施例的认证处理(有错误)的流程的序列图;

图8是例示根据tls的握手的认证处理(比较例:无错误)的流程的序列图;

图9例示了根据第二实施例的客户端装置的状态转换;

图10例示了根据第二实施例的服务器装置的状态转换;

图11是例示根据第二实施例的变型的认证处理(有错误)的流程的序列图;

图12例示了根据第二实施例的变型的客户端装置的状态转换;以及

图13例示了根据第二实施例的变型的服务器装置的状态转换。

具体实施方式

以下将参照附图来描述实施例,其中,相同的附图标记通篇指代相同的元件。

<1.第一实施例>

将描述第一实施例。

图1例示了根据第一实施例的认证系统的示例。

根据第一实施例的认证系统包括认证装置10和20。认证装置10和20执行相互认证并且对数据通信中要使用的共享密钥进行协定。认证装置10和20经由网络来执行通信。例如,在第一实施例中描述的各种类型的信息可以被包括在关于协议例如传输控制协议(tcp)/因特网协议(ip)的消息中,并且然后被发送。例如,在第一实施例中描述的通信过程可以应用于密码通信技术例如ssl/tls。

认证装置10和20可以是被称为信息处理装置或计算机的装置。认证装置10和20可以是便携式装置例如移动电话和膝上型个人计算机(pc)或者可以是固定式装置例如台式pc和服务器计算机。在第一实施例中,首先,认证装置10访问认证装置20。因此,认证装置10可以被称为客户端,并且认证装置20可以被称为服务器。

认证装置10包括通信单元11和控制单元12。认证装置20包括通信单元21和控制单元22。通信单元11和21中的每个通信单元是与另一装置进行通信的通信接口。通信单元11和21中的每个通信单元可以是经由电缆来执行通信的有线接口,或者可以是经由无线链路来执行通信的无线接口。

例如,控制单元12和22中的每个控制单元是处理器例如中央处理器(cpu)或数字信号处理器(dsp)。然而,控制单元12和22中的每个控制单元可以包括用于特定用途的电子电路例如专用集成电路(asic)或现场可编程门阵列(fpga)。这些处理器执行存储在存储器例如随机存取存储器(ram)中的程序。该程序包括写有以下要描述的处理的认证程序。一组处理器(多处理器)可以被称为“处理器”。

标识信息13(第一标识信息)与认证装置10相关联。标识信息13是与认证装置10或认证装置10的用户有关的信息。例如,认证装置10的ip地址、主机名称或装置号可以用作标识信息13。例如,可以使用认证装置10的用户的用户id或电话号码。同样地,标识信息23(第二标识信息)与认证装置20相关联。标识信息23是与认证装置20或认证装置20的用户有关的信息。

关于认证装置10,定义了在公钥密码学技术中使用的公钥14(第一公钥)和私钥15(第一私钥)。虽然公钥14已经被公开,但是私钥15仅由认证装置10秘密地保存。使用公钥14加密的数据仅可以使用私钥15来解密。公钥14和私钥15与标识信息13相关联。同样地,关于认证装置20,定义了在公钥密码学技术中使用的公钥24(第二公钥)和私钥25(第二私钥)。虽然公钥24已经被公开,但是私钥25仅由认证装置20秘密地保存。使用公钥24加密的数据仅可以使用私钥25来解密。公钥24和私钥25与标识信息23相关联。

如果使用基于id的密码学作为公钥密码学技术,则认证装置10可以根据标识信息23来生成公钥24。此外,认证装置20可以根据标识信息13来生成公钥14。然而,在第一实施例中,可以使用除了基于id的密码学以外的公钥密码学技术。认证装置10可以在存在于认证装置10内部或外部的数据库中搜索与标识信息23对应的公钥24,或者可以从认证装置20直接获取公钥24。认证装置20可以在存在于认证装置20内部或外部的数据库中搜索与标识信息13对应的公钥14,或者可以从认证装置10直接获取公钥14。

通信单元11与认证装置20执行通信,如下所示。通信单元11将标识信息13和23以及加密数据18(第一加密数据)发送至认证装置20。在发送加密数据18之后,通信单元11从认证装置20接收加密数据28(第二加密数据)和验证数据29(第二验证数据)。在接收验证数据29之后,通信单元11将验证数据19(第一验证数据)发送至认证装置20。

控制单元12通过生成随机数17(第一随机数)并通过使用与标识信息23对应的公钥24对随机数17进行加密来生成加密数据18。当通信单元11接收到加密数据28时,控制单元12根据随机数17、加密数据28和私钥15来生成候选共享密钥16(第一候选共享密钥)。控制单元12通过使用候选共享密钥16来生成验证数据19。例如,使用候选共享密钥16来对验证数据19进行加密。当通信单元11接收到验证数据29时,控制单元12通过使用候选共享密钥16来检查验证数据29。例如,控制单元12以与认证装置20使用的方法相同的方法来创建与验证数据29对应的验证数据,并且将所创建的验证数据与验证数据29进行比较。在这种情况下,如果两个验证数据匹配,则控制单元12对验证数据进行验证。如果两个验证数据不匹配,则控制单元12不对验证数据进行验证。

通信单元21与认证装置10执行通信,如下所示。通信单元21从认证装置10接收标识信息23和13以及加密数据18。在接收加密数据18之后,通信单元21将加密数据28和验证数据29发送至认证装置10。在发送验证数据29之后,通信单元21从认证装置10接收验证数据19。

当通信单元21接收到标识信息13时,控制单元22通过生成随机数27(第二随机数)并通过使用与标识信息13对应的公钥14对随机数27进行加密来生成加密数据28。当通信单元21接收到加密数据18时,控制单元22根据随机数27、加密数据18和私钥25来生成候选共享密钥26(第二候选共享密钥)。控制单元22通过使用候选共享密钥26来生成验证数据29。例如,使用候选共享密钥26来对验证数据29进行加密。当通信单元21接收到验证数据19时,控制单元22通过使用候选共享密钥26来检查验证数据19。例如,控制单元22以与认证装置10使用的方法相同的方法来创建与验证数据19对应的验证数据,并且将所创建的验证数据与验证数据19进行比较。在这种情况下,如果两个验证数据匹配,则控制单元22对验证数据进行验证。如果两个验证数据不匹配,则控制单元22不对验证数据进行验证。

如果控制单元12和22对验证数据19和29进行验证,则确定候选共享密钥16和26是相同的。即,共享密钥在认证装置10与认证装置20之间达成一致。之后,认证装置10通过使用候选共享密钥16作为共享密钥来执行密码通信,并且认证装置20通过使用候选共享密钥26作为共享密钥来执行密码通信。

此外,由于使用认证装置20的公钥24来加密随机数17,所以仅具有与公钥24对应的私钥25的认证装置20可以识别随机数17。此外,由于使用认证装置10的公钥14来加密随机数27,所以仅具有与公钥14对应的私钥15的认证装置10可以识别随机数27。因此,通过确定已经生成了相同的共享密钥,认证装置10和20中的每个认证装置可以认证其通信对端。

当通信单元21接收到标识信息13和23时,控制单元22可以确定是否接受标识信息13和23。如果控制单元22接受标识信息13和23,则控制单元22继续以上处理。然而,如果控制单元22不接受标识信息13和23中的至少一个标识信息,则控制单元22可以终止与认证装置10的通信。例如,当标识信息13未被包括在预定的白名单中或者被列入在预定的黑名单中时,控制单元22不接受标识信息13。例如,当标识信息23不表示认证装置20或者当标识信息23过期时,控制单元22不接受标识信息23。在这种情况下,控制单元22可以选择不同的标识信息作为认证装置20的标识信息23,并且给予重新发送加密数据18的机会。

接着,将检查根据第一实施例的通信过程的效率。

以下通信过程有可能作为由认证装置10和20执行的通信过程的另一示例。首先,认证装置10将标识信息13发送至认证装置20。响应于认证装置10的访问,认证装置20将标识信息23和加密数据28发送至认证装置10。由于认证装置20尚未接收到加密数据18,所以认证装置20在此时不发送验证数据29。认证装置10将加密数据18和验证数据19发送至认证装置20。认证装置20将验证数据29发送至认证装置10。依照通信过程的该示例,在认证装置10与认证装置20之间执行了四次通信。

相反,依照根据第一实施例的通信过程,加密数据18连同标识信息13被较早地从认证装置10发送至认证装置20。即,在发送加密数据28之前发送加密数据18。因此,作为对该发送的答复,可以将验证数据29连同加密数据28从认证装置20发送至认证装置10。即,在发送验证数据19之前发送验证数据29。因此,在将验证数据19从认证装置10发送至认证装置20之后,由于认证装置20不需要将验证数据29发送至认证装置10,所以通信的数量减少为3。因此,缩短了认证装置10与认证装置20之间的认证时间。

<2.第二实施例>

接着,将描述第二实施例。第二实施例提供了通过使用密码通信技术例如ssl或tls来减小执行握手时产生的通信负荷的机制。

在开始tls通信时执行的握手中,交换诸如clienthello、serverhello、serverhellodone、changecipherspec、certificate(s)、serverkeyexchange、clientkeyexchange、finished(c)和finished(s)等消息。当在相互认证中执行短暂的diffie-hellman密钥交换(dhe)时,在操作为握手发起者的客户端装置与操作为响应者的服务器装置之间交换以下消息。

首先,客户端装置发送clienthello。当接收到clienthello时,服务器装置将serverhello、certificate(s)和serverkeyexchange发送至客户端装置。certificate(s)中包括证书。serverkeyexchange中包括客户端装置在生成共享密钥时使用的密钥材料(服务器生成的密钥材料)。以下将描述如何生成服务器生成的密钥材料。

当接收到serverkeyexchange时,客户端装置检查certificate(s)中的证书,并且通过使用包括在证书中的服务器装置的公钥来生成密钥材料(客户端生成的密钥材料)。客户端装置通过使用服务器装置在生成共享密钥时使用的密钥材料(客户端生成的密钥材料)和服务器生成的密钥材料来生成主私有信息。此外,客户端装置通过使用主私有信息来生成验证符(verifier)(客户端生成的验证符)。以下将描述如何生成客户端生成的密钥材料和主私有信息。

客户端装置将客户端生成的密钥材料包括在clientkeyexchange中,将客户端生成的验证符包括在finished(c)中,并且将clientkeyexchange和finished(c)发送至服务器装置。当接收到clientkeyexchange和finished(c)时,服务器装置通过使用服务器生成的密钥材料和客户端生成的密钥材料来生成与由客户端装置生成的主私有信息相同的主私有信息。服务器装置检查客户端生成的验证符,并且通过使用主私有信息来生成验证符(服务器生成的验证符)。

服务器装置将服务器生成的验证符包括在finished(s)中,并且将finished(s)发送至客户端装置。当接收到finished(s)时,客户端装置检查包括在finished(s)中的服务器生成的验证符。如果客户端生成的验证符和服务器生成的验证符被验证,则确定在处理期间没有密钥材料被篡改。即,确定已经精确地执行了密钥交换和密钥协定。之后,客户端装置和服务器装置能够通过使用主私有信息来执行安全的数据通信。

以上序列仅仅是示例。例如,作为变型,可以省略与certificate(s)等有关的处理和与证书有关的验证处理。此外,作为变型,基于id的密码学可以用于生成包括在serverkeyexchange或clientkeyexchange中的密钥材料以及用于生成主私有信息。此外,作为变型,标识符可以包括在要被发送的clienthello或serverhello中。作为变型,对于基于id的密码学,公开参数可以包括在clienthello中。

根据第二实施例的技术提供了以下机制:当执行如上所述的握手时,减少可以在未接收到来自通信对端的答复的情况下连续发送的一组消息的通信次数。

接着,将描述密钥交换的机制,其包括生成密钥和密钥材料的方法。

在下文中,将用p来表示特征,并且将用e(fp)来表示由素数域fp定义的椭圆曲线上的加法循环群。此外,将用r来表示能够整除e(fp)的阶#e(fp)的最大素数,并且满足r|pk-1的k将被称为嵌入次数(embeddingdegree)。此外,r|pk-1表示r是pk-1的除数。此外,将用e(fp){r}来表示e(fp)中的阶r的加法子群。

由以下表达式(1)来定义双线性映射e。双线性映射e由函数(配对函数)来表示,所述函数接收循环群g1的元素和循环群g2的元素作为输入和输出扩展域g3上的元素。g/h表示g相对于h的商群或因子群。此外,fpk*/(fpk*)r表示由fpk*的元素形成的循环群,fpk*在被升为r次幂时表示1。

e:g2×g1→g3(或者e:g1×g2→g3),

其中,g1:e(fp){r},

g2:e(fpk){r},

g3:fpk*/(fpk*)r

…(1)

此外,将用zr来表示从0至(r-1)的一组整数。关于zr的元素α(α∈zr)和循环群g1或g2的元素p(p∈g1或g2),标量乘法αp被定义为执行α次p的加法的操作。此外,关于扩展域g3的元素x(x∈g3),幂乘法xα被定义为执行α次x的乘法的操作。在这种情况下,双线性是满足以下表达式(2)的性质。

e(xp,q)=e(p,xq)=e(p,q)x

…(2)

确定并秘密地保存主私钥s(s∈zr)的私钥生成器(pkg)确定p(p∈g1)、q(q∈g2)、e、h(哈希(hash)函数)和p0(p0=sp∈g1)作为公开参数,并且使这些公开参数(p、q、e、h、p0)公开。主私钥s与以上主私有信息不同。

例如,假定服务器装置和客户端装置分别对应于标识符ida和标识符idb,并且服务器装置和客户端装置知道标识符ida和idb,则与标识符ida对应的公钥pa由以下表达式(3)来定义,并且可以由任何人通过使用公开参数来计算。同样地,与标识符idb对应的公钥pb由以下表达式(4)来定义,并且可以由任何人通过使用公开参数来计算。

与标识符ida对应的私钥sa由以下表达式(5)来定义,并且可以由保存有主私钥s的pkg来计算。同样地,与标识符idb对应的私钥sb由以下表达式(6)来定义,并且可以由保存有主私钥s的pkg来计算。pkg向经授权的实体(服务器装置)提供私钥sa,所述经授权的实体(服务器装置)具有借助于标识符ida而被认证的权利。此外,pkg向经授权的实体(客户端装置)提供私钥sb,所述经授权的实体(客户端装置)具有借助于标识符idb而被认证的权利。

pa=ap+p0=(a+s)p,

其中,a=h(ida)

…(3)

pb=bp+p0=(b+s)p,

其中,b=h(idb)

…(4)

sa=(a+s)-1q

…(5)

sb=(b+s)-1q

…(6)

当在客户端装置与服务器装置之间执行密钥交换时,服务器装置生成随机数ra,并且通过使用公钥pb来生成服务器生成的密钥材料ra(ra=rapb)。接着,服务器装置将服务器生成的密钥材料ra发送至客户端装置。客户端装置生成随机数rb,并且通过使用公钥pa来生成客户端生成的密钥材料rb(rb=rbpa)。接着,客户端装置将客户端生成的密钥材料rb发送至服务器装置。

当接收到服务器生成的密钥材料ra时,客户端装置通过使用私钥sb、服务器生成的密钥材料ra、随机数rb和公开参数来计算共享密钥zb(zb=e(ra,rbsb))。当接收到客户端生成的密钥材料rb时,服务器装置通过使用私钥sa、客户端生成的密钥材料rb、随机数ra和公开参数来计算共享密钥za(za=e(rb,rasa))。如上所述生成的这些密钥有时被称为会话密钥。然而,在本文中,这些密钥将被称为共享密钥。

除非服务器生成的密钥材料ra和客户端生成的密钥材料rb在发送的同时被篡改,否则以上共享密钥za和zb匹配,如根据以下表达式(7)和(8)所计算的那样。即,服务器装置和客户端装置能够获得共享密钥,并且完成密钥交换。在开始tls通信时执行的握手中,通过使用客户端生成的验证符和服务器生成的验证符来确定是否已经执行了篡改。

zb=e(ra,rbsb)=e(rapb,rbsb)

=e(pb,sb)rarb

=e((b+s)p,(b+s)-1q)rarb

=e(p,q)rarb

…(7)

za=e(rb,rasa)=e(rbpa,rasa)

=e(pa,sa)rarb

=e((a+s)p,(a+s)-1q)rarb

=e(p,q)rarb

…(8)

除了以上方式以外,存在使用基于id的密码学来执行密钥交换的另一方式。例如,可以使用通信对端的公钥来对随机数进行加密,并且可以使用经加密的随机数作为密钥材料。在这种情况下,由于已经接收到密钥材料的通信对端可以通过使用私钥来根据密钥材料对随机数进行解密,所以可以使用经解密的随机数作为共享密钥。

在tls中,以上共享密钥za和zb被用作预备主(pre-master)私有信息,并且根据预备主私有信息来生成主私有信息。接着,通过使用主私有信息对通信数据进行加密来实现客户端装置与服务器装置之间的密码通信。在tls规范中,如下所示确定根据预备主私有信息来生成主私有信息的机制。

在tls规范中,如由以下表达式(9)所表示的那样来定义用于根据预备主私有信息(pre_master_secret)来生成主私有信息(master_secret)的处理。(例如,参见“作者t.dierks和c.allen,tls协议版本1.0,ietfrequestforcomments(rfc)2246,1999年1月”)。

master_secret=prf(pre_master_secret,“mastersecret”,

clienthello.random+serverhello.random){0..47}

…(9)

在以上表达式(9)中,“mastersecret(主秘密)”表示与固定字符串(标签)“mastersecret”对应的字节串。此外,clienthello.random和serverhello.random分别是在clienthello和serverhello中发送的随机数。此外,{0..47}表示由可以输出任意长度的字节串的prf输出的输出值的初始48个字节。如由以下表达式(10)指出的那样来定义prf。

prf(secret,label,seed)=p_md5(s01,label+seed)xor

p_sha-1(s02,label+seed)

…(10)

在以上表达式(10)中,“secret(秘密)”是私钥。假定根据字节将“secret”分成第一半和第二半的两部分,则s01是第一半的字节串,并且s02是第二半的字节串。如果“secret”的字节数是奇数,则重复使用“secret”的中心的字节作为字节串s01的最后字节和字节串s02的第一字节。此外,“+”表示字节串的连接(concatenation)。

p_hash(secret,seed)通过使用哈希函数hash、根据私有值“secret”和附加信息“seed(种子)”来生成任意长度的字节串。如由以下表达式(11)指出的那样来定义该p_hash(secret,seed)。hmac_hash(secret,value(值))是相对于值的基于哈希的消息认证码(hmac)。此外,当i=1、2、3……时,如由以下表达式(12)指出的那样来定义函数a。

p_hash(secret,seed)=hmac_hash(secret,a(1)+seed)+

hmac_hash(secret,a(2)+seed)+

hmac_hash(secret,a(3)+seed)+...

…(11)

a(0)=seed,

a(i)=hmac_hash(secret,a(i-1))

…(12)

主私有信息被作为通过以下方式获得的结果而给出:使用预备主私有信息作为私钥并且使用包括在clienthello和serverhello中的随机数的连接作为附加信息(种子),对通过hmac-md1扩展至48个字节的值和通过hmac-sha-1扩展至48个字节的值执行xor(异或)。

[2-1.系统]

接着,将参照图2来描述根据第二实施例的系统。图2例示了根据第二实施例的系统的示例。

如图2中所示,根据第二实施例的系统包括经由网络74彼此连接的客户端装置100和服务器装置200。

客户端装置100和服务器装置200是计算机。例如,客户端装置100是计算机例如移动电话、智能电话、平板终端或pc。例如,服务器装置200是计算机例如pc或通用计算机。

客户端装置100是当执行握手时作为发起者而进行操作的计算机。服务器装置200是当执行握手时作为响应者而进行操作的计算机。

网络74是有线或无线网络。例如,客户端装置100能够将信息包括在关于例如tcp/ip的协议的消息中,并且将包括信息的消息发送至服务器装置200。例如,服务器装置200能够将信息包括在关于例如tcp/ip的协议的消息中,并且将包括信息的消息发送至客户端装置100。

将通过使用图2中的系统作为示例来进行以下描述。

[2-2.硬件]

首先,将参照图3来描述客户端装置100的硬件配置。图3例示了能够实现根据第二实施例的客户端装置100的功能的硬件配置的示例。

客户端装置100包括cpu101、ram102、硬盘驱动器(hdd)103、图像信号处理单元104、输入信号处理单元105、媒体读取器106和通信接口107。cpu101是根据第一实施例的控制单元12的示例。

cpu101是包括执行程序指令的运算电路的处理器。cpu101将保存在hdd103中的程序或数据的至少一部分加载至ram102,并且执行程序。

cpu101可以包括多个处理器核,并且客户端装置100可以包括多个处理器。可以通过使用多个处理器或处理器核来并行地执行以下描述的处理。此外,一组处理器(多处理器)可以被称为“处理器”。

ram102是暂时保存由cpu101执行的程序或cpu101用于计算的数据的易失性存储器。客户端装置100可以包括除了ram以外的不同种类的存储器。客户端装置100可以包括多个存储器。

hdd103是保存软件程序例如操作系统(os)和应用软件以及数据的非易失性存储装置。客户端装置100可以包括不同种类的存储装置例如闪存或固态驱动器(ssd)。客户端装置100可以包括多个非易失性存储装置。

图像信号处理单元104根据来自cpu101的指令将图像输出至连接至客户端装置100的显示器71。显示器71的示例包括阴极射线管(crt)显示器、液晶显示器(lcd)、等离子显示面板(pdp)和有机电激发光(oel)显示器。

输入信号处理单元105从连接至客户端装置100的输入装置72获取输入信号,并且将输入信号输出至cpu101。

输入装置72的示例包括定点装置例如鼠标、触控面板、触控板或轨迹球、键盘、远程控制器和按钮开关。多种输入装置可以连接至客户端装置100。显示器71和输入装置72中的至少一者可以与客户端装置100的外壳一体化地形成。

媒体读取器106是读取记录在存储介质73中的程序或数据的读取装置。存储介质73的示例包括磁盘如软盘(fd)或hdd、光盘如压缩盘(cd)或数字多功能盘(dvd)、磁光盘(mo)和半导体存储器。例如,媒体读取器106将从存储介质73读出的程序或数据存储在ram102或hdd103中。

通信接口107连接至网络74,并且经由网络74与其他信息处理装置进行通信。通信接口107可以是经由电缆连接至通信装置如开关的有线通信接口,或者可以是经由无线链路连接至基站的无线通信接口。

因此,已经描述了客户端装置100的硬件配置的示例。还可以通过使用与图3所示的客户端装置100的硬件配置相同的硬件配置来实现服务器装置200的功能。因此,将省略可以实现服务器装置200的功能的硬件配置的详细描述。

[2-3.功能]

接着,将描述客户端装置100和服务器装置200的功能。

(客户端装置100)

首先,将参照图4来描述客户端装置100的功能。图4是例示根据第二实施例的客户端装置100的功能的示例的框图。

如图4中所示,客户端装置100包括存储单元111、密钥材料生成单元112、通信单元113、共享密钥生成单元114和验证处理单元115。

例如,可以通过使用以上ram102或hdd103来实现存储单元111的功能。例如,可以通过使用以上cpu101来实现密钥材料生成单元112、共享密钥生成单元114和验证处理单元115的功能。例如,可以通过使用以上cpu101或通信接口107来实现通信单元113的功能。

存储单元111保存客户端标识信息111a和服务器标识信息111b。客户端标识信息111a是用于标识客户端装置100的标识信息。服务器标识信息111b是用于标识服务器装置200的标识信息。将由pkg公开的公开参数和由pkg提供的私钥存储在存储单元111中。

密钥材料生成单元112生成随机数,并且通过使用所生成的随机数和服务器装置200的公钥来生成客户端生成的密钥材料。通信单元113将消息例如clienthello、clientkeyexchange和finished(c)发送至服务器装置200。此外,通信单元113从服务器装置200接收消息例如serverhello、serverkeyexchange和finished(s)。

共享密钥生成单元114通过使用包括在从服务器装置200接收到的消息中的服务器生成的密钥材料、由密钥材料生成单元112生成的随机数、公开参数和由pkg提供的私钥来生成主私有信息。验证处理单元115通过使用由共享密钥生成单元114生成的主私有信息来生成客户端生成的验证符。此外,验证处理单元115检查包括在从服务器装置200接收到的消息中的服务器生成的验证符。

(服务器装置200)

接着,将参照图5来描述服务器装置200的功能。图5是例示根据第二实施例的服务器装置200的功能的示例的框图。

如图5中所示,服务器装置200包括存储单元211、通信单元212、密钥材料生成单元213、共享密钥生成单元214和验证处理单元215。

例如,可以通过使用与以上ram102或hdd103对应的硬件资源来实现存储单元211的功能。例如,可以通过使用与以上cpu101对应的硬件资源来实现密钥材料生成单元213、共享密钥生成单元214和验证处理单元215的功能。例如,可以通过使用与以上cpu101或通信接口107对应的硬件资源来实现通信单元212的功能。

将服务器标识信息211a存储在存储单元211中。服务器标识信息211a是用于标识服务器装置200的标识信息。将由pkg公开的公开参数和由pkg提供的私钥存储在存储单元211中。还可以将用于确定被授权的客户端装置的客户端标识信息的列表存储在存储单元211中。

通信单元212从客户端装置100接收消息例如clienthello、clientkeyexchange和finished(c)。通信单元212将消息例如serverhello、serverkeyexchange和finished(s)发送至客户端装置100。密钥材料生成单元213生成随机数,并且通过使用所生成的随机数和客户端装置100的公钥来生成服务器生成的密钥材料。

共享密钥生成单元214通过使用包括在从客户端装置100接收到的消息中的客户端生成的密钥材料、由密钥材料生成单元213生成的随机数、公开参数和由pkg提供的私钥来生成主私有信息。验证处理单元215通过使用由共享密钥生成单元214生成的主私有信息来生成服务器生成的验证符。此外,验证处理单元215检查包括在从客户端装置100接收到的消息中的客户端生成的验证符。

因此,已经描述了客户端装置100和服务器装置200的功能。

[2-4.处理的流程]

接着,将描述客户端装置100和服务器装置200在执行握手时执行的认证处理的流程。

(序列:当服务器标识信息中不存在错误时)

首先,将参照图6来描述当服务器装置200接受从客户端装置100发送至服务器装置200的标识符作为在认证处理中使用的服务器标识信息时执行的认证处理(无错误)的流程。图6是例示根据第二实施例的认证处理(无错误)的流程的序列图。

以下描述假定客户端装置100和服务器装置200保存有由pkg公开的公开参数(p、q、e、h、p0)。在参数中,p表示循环群g1的生成器,q表示循环群g2的生成器,e表示由以上表达式(1)给出的双线性映射,h表示哈希函数,p0表示根据由pkg秘密保存的主私钥s和p生成的循环群g1的生成器(p0=sp∈g1)。

此外,以下描述假定客户端装置100保存有由pkg提供的私钥sc(sc=h(idc)+s)-1q),并且服务器装置200至少保存有由pkg提供的私钥ss0(ss0=(h(ids0)+s)-1q)或私钥ss1(ss1=(h(ids1)+s)-1q)。此外,以下描述假定至少标识符ids0或标识符ids1可以用作标识服务器装置200的标识符。

(s101)通信单元113将在认证处理中使用的客户端标识信息111a(标识符idc)和服务器标识信息111b(标识符ids0)包括在clienthello中。根据需要,包括标识符idc和ids0的这样的clienthello将被称为clienthello{idc,ids0}。通信单元113将clienthello{idc,ids0}发送至服务器装置200。

(s102)密钥材料生成单元112生成随机数rc。此外,密钥材料生成单元112通过使用公开参数h、p和p0以及标识符ids0来生成服务器装置200的公钥ps0(ps0=h(ids0)p+p0)。接着,密钥材料生成单元112通过使用随机数rc和服务器装置200的公钥ps0来生成客户端生成的密钥材料rc0(rc0=rcps0)。

通信单元113将客户端生成的密钥材料rc0包括在clientkeyexchange中。根据需要,包括客户端生成的密钥材料rc0的这样的clientkeyexchange将被称为clientkeyexchange{rc0}。通信单元113将clientkeyexchange{rc0}发送至服务器装置200。

客户端装置100可以在未接受到来自服务器装置200的答复的情况下将这些clienthello和clientkeyexchange发送至服务器装置200。因此,在图6的示例中,客户端装置100将clienthello{idc,ids0}和clientkeyexchange{rc0}作为客户端装置100在未接收到来自服务器装置200的答复的情况下可以发送的消息群(com#1)来发送。根据需要,发送这样的消息群将被称为线程(flight)。com#1是单线程。

(s103)通信单元212接收clienthello{idc,ids0}和clientkeyexchange{rc0}。

密钥材料生成单元213生成随机数rs0。此外,密钥材料生成单元213通过使用公开参数h、p和p0以及从clienthello提取的标识符idc来生成客户端装置100的公钥pc(pc=h(idc)p+p0)。此外,密钥材料生成单元213通过使用随机数rs0和公钥pc来生成服务器生成的密钥材料rs0(rs0=rs0pc)。

共享密钥生成单元214通过使用从clientkeyexchange提取的客户端生成的密钥材料rc0、随机数rs0、与标识符ids0对应的私钥ss0以及公开参数e来生成共享密钥zs。在这种情况下,共享密钥zs由以下表达式(13)来给出。此外,根据tls规范(参见以上表达式(9)至(12)),共享密钥生成单元214通过使用共享密钥zs作为预备主私有信息来生成主私有信息ms。

zs=e(rc0,rs0ss0)

…(13)

(s104)通信单元212将用于在s103中生成共享密钥zs的标识符ids0包括在serverhello中。根据需要,包括标识符ids0的这样的serverhello将被称为serverhello{ids0}。通信单元212将serverhello{ids0}发送至客户端装置100。

(s105)通信单元212将在s103中生成的服务器生成的密钥材料rs0包括在serverkeyexchange中。根据需要,包括服务器生成的密钥材料rs0的这样的serverkeyexchange将被称为serverkeyexchange{rs0}。通信单元212将serverkeyexchange{rs0}发送至客户端装置100。

(s106)验证处理单元215通过使用主私有信息ms来生成服务器生成的验证符(验证符verify_data)。验证符verify_data是12字节的字节串。在tls规范中,如由以下表达式(14)指出的那样来定义验证符verify_data。

verify_data=prf(master_secret,finished_label,

md5(handshake_messages)+sha-

1(handshake_messages)){0..11}

…(14)

在以上表达式(14)中,“mastersecret(主秘密)”表示主私有信息ms,并且“finished_label”是与固定字符串(标签)对应的字节串。在服务器生成的验证符的情况下,将“finished_label”设置为字节串“serverfinished”。在以下要描述的客户端生成的验证符的情况下,将“finished_label”设置为字节串“clientfinished”。此外,“handshake_messages”是通过以下方式获得的字节串:在握手中,连接在包括verify_data的finished之前交换的所有消息。

验证符verify_data被作为通过以下方式获得的结果而给出:使用主私有信息作为私钥,并且使用通过连接字节串(该字节串是通过连接在包括该verify_data的finished之前交换的所有消息而获得的)的md5哈希值和sha-1哈希值获得的字节串作为附加信息(种子),对通过hmac-md1扩展至12个字节的值和通过hmac-sha-1扩展至12个字节的值执行xor(异或)。此外,{0..11}表示由可以输出任意长度的字节串的prf输出的输出值的初始11个字节。

根据以上表达式(14),验证处理单元215通过使用主私有信息ms来生成验证符verify_data,并且使用所生成的验证符verify_data作为服务器生成的验证符。通信单元212将服务器生成的验证符包括在finished(s)中。接着,通信单元212将finished(s)发送至客户端装置100。

服务器装置200可以在未接收到来自客户端装置100的答复的情况下将这些serverhello、serverkeyexchange和finished(s)发送至客户端装置100。因此,在图6的示例中,服务器装置200将serverhello{ids0}、serverkeyexchange{rs0}和finished(s)作为服务器装置200在未接收到来自客户端装置100的答复的情况下可以发送的消息群(com#2)来发送。即,com#2是单线程。

(s107)通信单元113接收serverhello{ids0}、serverkeyexchange{rs0}和finished(s)。

共享密钥生成单元114通过使用从serverkeyexchange提取的服务器生成的密钥材料rs0、随机数rc、与标识符idc对应的私钥sc以及公开参数e来生成共享密钥zc。在这种情况下,共享密钥zc由以下表达式(15)来给出。接着,根据tls规范(参见以上表达式(9)至(12)),共享密钥生成单元114通过使用共享密钥zc作为预备主私有信息来生成主私有信息mc。

zc=e(rs0,rcsc)

…(15)

(s108)验证处理单元115通过使用主私有信息mc来生成客户端生成的验证符(验证符verify_data)。在s108中,验证处理单元115通过使用与用于以上主私有信息ms的方法相同的方法来生成验证符verify_data。然而,生成方法的区别在于:使用主私有信息mc作为master_secret,并且使用字节串“clientfinished”作为finished_label。

验证处理单元115确定从finished(s)提取的服务器生成的验证符与客户端生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符匹配,则确定认证成功。相反,如果服务器生成的验证符与客户端生成的验证符不匹配,则确定认证失败。

(s109)通信单元113将客户端生成的验证符包括在finished(c)中。接着,通信单元113将finished(c)发送至服务器装置200。由于客户端装置100可以在未接收到来自服务器装置200的答复的情况下响应于其他消息而发送finished(c)(com#3),所以该发送是在单线程下进行的。

(s110)验证处理单元215确定从finished(c)提取的客户端生成的验证符与在s106中生成的服务器生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符匹配,则确定认证成功。相反,如果服务器生成的验证符与客户端生成的验证符不匹配,则确定认证失败。

在完成s110中的处理后,结束图6中所示的该系列处理。如上所述,如图6中的序列所示的,在握手中执行了三个线程(com#1、#2、#3)。

(序列:当在服务器标识信息中存在错误时)

接着,将参照图7来描述当服务器装置200不接受从客户端装置100发送至服务器装置200的标识符作为在认证处理中使用的服务器标识信息时执行的认证处理(有错误)的流程。图7是例示根据第二实施例的认证处理(有错误)的流程的序列图。

(s121)通信单元113将在认证处理中使用的客户端标识信息111a(标识符idc)和服务器标识信息111b(标识符ids0)包括在clienthello中。通信单元113将clienthello{idc,ids0}发送至服务器装置200。

(s122)密钥材料生成单元112生成随机数rc0。此外,密钥材料生成单元112通过使用公开参数h、p和p0以及标识符ids0来生成服务器装置200的公钥ps0(ps0=h(ids0)p+p0)。接着,密钥材料生成单元112通过使用随机数rc0和服务器装置200的公钥ps0来生成客户端生成的密钥材料rc0(rc0=rc0ps0)。

通信单元113将客户端生成的密钥材料rc0包括在clientkeyexchange中。接着,通信单元113将clientkeyexchange{rc0}发送至服务器装置200。

(s123)通信单元212从clienthello提取标识符ids0,并且确定是否接受标识符ids0作为在该认证处理中使用的标识符。在图7的示例中,不接受标识符ids0。例如,当标识符ids0的有效期过期时,不接受标识符ids0。

(s124)通信单元212将错误(error)和标识符ids1包括在serverhello中,所述错误是指示错误的发生的信息,所述标识符ids1能够被接受为在认证处理中使用的标识符。根据需要,包括错误和标识符ids1的这样的serverhello将被表示为serverhello{error,ids1}。通信单元212将serverhello{error,ids1}发生至客户端装置100。

(s215)当接收到serverhello{error,ids1}时,通信单元113确定是否接受标识符ids1并通过使用标识符ids1来继续进行认证处理。在图7的示例中,接受标识符ids1。

密钥材料生成单元112生成随机数rc1。此外,密钥材料生成单元112通过使用公开参数h、p和p0以及标识符ids1来生成服务器装置200的公钥ps1(ps1=h(ids1)p+p0)。接着,密钥材料生成单元112通过使用随机数rc1和服务器装置200的公钥ps1来生成客户端生成的密钥材料rc1(rc1=rc1ps1)。

通信单元113将客户端生成的密钥材料rc1包括在clientkeyexchange中。接着,通信单元113将clientkeyexchange{rc1}发送至服务器装置200。

(s126)通信单元212接收clientkeyexchange{rc1}。接着,密钥材料生成单元213生成随机数rs1。此外,密钥材料生成单元213通过使用公开参数h、p和p0以及从clienthello提取的标识符idc来生成客户端装置100的公钥pc(pc=h(idc)p+p0)。此外,密钥材料生成单元213通过使用随机数rs1和公钥pc来生成服务器生成的密钥材料rs1(rs1=rs1pc)。

共享密钥生成单元214通过使用从clientkeyexchange提取的客户端生成的密钥材料rc1、随机数rs1、与ids1对应的私钥ss1以及公开参数e来生成共享密钥zs。在这种情况下,共享密钥zs由以下表达式(16)来给出。此外,根据tls规范(参见以上表达式(9)至(12)),共享密钥生成单元214通过使用共享密钥zs作为预备主私有信息来生成主私有信息ms。

zs=e(rc1,rs1ss1)

…(16)

(s127)通信单元212将在s126中生成的服务器生成的密钥材料rs1包括在serverkeyexchange中。接着,通信单元212将serverkeyexchange{rs1}发送至客户端装置100。

(s128)验证处理单元215通过使用主私有信息ms来生成服务器生成的验证符(验证符verify_data)。通信单元212将服务器生成的验证符包括在finished(s)中。接着,通信单元212将finished(s)发送至客户端装置100。

(s129)通信单元113接收serverkeyexchange{rs1}和finished(s)。

共享密钥生成单元114通过使用从serverkeyexchange提取的服务器生成的密钥材料rs1、随机数rc1、与标识符idc对应的私钥sc以及公开参数e来生成共享密钥zc。在这种情况下,共享密钥zc由以下表达式(17)来给出。接着,根据tls规范(参见以上表达式(9)至(12)),共享密钥生成单元114通过使用共享密钥zc作为预备主私有信息来生成主私有信息mc。

zc=e(rs1,rc1sc)

…(17)

(s130)验证处理单元115通过使用主私有信息mc来生成客户端生成的验证符(验证符verify_data)。此外,验证处理单元115确定从finished(s)提取的服务器生成的验证符与客户端生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符匹配,则确定认证成功。相反,如果服务器生成的验证符与客户端生成的验证符不匹配,则确定认证失败。

(s131)通信单元113将客户端生成的验证符包括在finished(c)中。接着,通信单元113将finished(c)发送至服务器装置200。

(s132)验证处理单元215确定从finished(c)提取的客户端生成的验证符与在s128中生成的服务器生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符匹配,则确定认证成功。相反,如果服务器生成的验证符与客户端生成的验证符不匹配,则确定认证失败。

在完成s132中的处理后,结束图7中所示的该系列处理。如图7中的序列所示的,在握手中执行了五个线程(com#1至com#5)。

(序列:比较例)

接着,将参照图8来描述在执行tls握手时执行的根据比较例的认证处理(无错误)的流程。图8是例示在执行tls握手时执行的根据比较例的认证处理(无错误)的流程的序列图。

(s901)客户端装置选择标识符idc作为客户端标识信息,将标识符idc包括在clienthello中,并且将clienthello发送至服务器装置。将clienthello{idc}作为单线程(com#1)来发送。

(s902)当接收到clienthello{idc}时,服务器装置选择标识符ids作为在认证处理中使用的服务器标识信息,将标识符ids包括在serverhello中,并且将serverhello发送至客户端装置。

(s903)服务器装置生成服务器生成的密钥材料rs,将服务器生成的密钥材料rs包括在serverkeyexchange中,并且将serverkeyexchange发送至客户端装置。

将serverhello{ids}和serverkeyexchange{rs}作为单线程(com#2)来发送。

(s904)当接收到serverhello{ids}和serverkeyexchange{rs}时,客户端装置生成主私有信息mc。

(s905)客户端装置生成客户端生成的密钥材料rc,将客户端生成的密钥材料rc包括在clientkeyexchange中,并且将clientkeyexchange发送至服务器装置。

(s906)客户端装置通过使用主私有信息mc来生成客户端生成的验证符,将客户端生成的验证符包括在finished(c)中,并且将finished(c)发送至服务器装置。

将clientkeyexchange{rc}和finished(c)作为单线程(com#3)来发送。

(s907)当接收到clientkeyexchange{rc}和finished(c)时,服务器装置生成主私有信息ms。

(s908)服务器装置通过使用主私有信息ms来生成服务器生成的验证符,并且通过使用服务器生成的验证符来检查包括在finished(c)中的客户端生成的验证符。

(s909)服务器装置将服务器生成的验证符包括在finished(s)中,并且将finished(s)发送至客户端装置。将finished(s)作为单线程(com#4)来发送。

(s910)当接收到finished(s)时,客户端装置通过使用客户端生成的验证符来检查包括在finished(s)中的服务器生成的验证符。

如上所述,在执行tls握手时执行的根据比较例的该认证处理(无错误)中,执行了四个线程。相比而言,在图6所示的认证处理中,执行了三个线程。即,如果使用图6所示的方法,则线程的数量减小,并且执行握手时产生的通信负荷减小。

(状态转换:客户端装置100)

接着,将参照图9来描述客户端装置100的状态转换。图9例示了根据第二实施例的客户装置100的状态转换。

(状态c0至c3)

如图6和图7中所示,客户端装置100从服务器装置200接收一定的消息,并且响应于这些接收到的消息来执行处理。如图9中所示,将客户端装置100设置为处于执行握手之前的初始状态(状态c0)、处于客户端装置100等待从服务器装置200发送的消息的待机状态(状态c1和c3)、以及处于完成握手的完成状态(状态c2)。

当满足一定的条件时,客户端装置100的状态改变。在图9的示例中,从状态c0至状态c1的转换表示为转换c01,并且从状态c0至状态c3的转换表示为转换c03。此外,从状态c1至状态c2的转换表示为转换c12,并且从状态c3至状态c2的转换表示为转换c32。如下所示来设置关于各个转换c01、c03、c12和c32的条件以及在满足这些各个条件时执行的处理内容。

(转换c01)

当处于状态c0的客户端装置100开始tls通信时,满足关于转换c01的条件。

在转换c01中,通信单元113确定在本认证处理中使用的客户端标识信息111a(标识符idc)和服务器标识信息111b(标识符ids0)。

密钥材料生成单元112生成随机数rc0。此外,密钥材料生成单元112通过使用公开参数h、p和p0以及标识符ids0来生成服务器装置200的公钥ps0(ps0=h(ids0)p+p0)。接着,密钥材料生成单元112通过使用随机数rc0和服务器装置200的公钥ps0来生成客户端生成的密钥材料rc0(rc0=rc0ps0)。

通信单元113将标识符idc和ids0包括在clienthello中。接着,通信单元113将clienthello{idc,ids0}发送至服务器装置200。此外,通信单元113将客户端生成的密钥材料rc0包括在clientkeyexchange中。接着,通信单元113将clientkeyexchange{rc0}发送至服务器装置200。

(转换c03)

当处于状态c0的客户端装置100接收到serverhello(有错误)时,满足关于转换c03的条件。

例如,当服务器装置200不接受包括在从通信单元113发送的clienthello{idc,ids0}中的标识符ids0时(参见图7),服务器装置200发送serverhello{error,ids1}。当客户端装置100接收到包括这样的错误的serverhello时,发生转换c03。

在转换c03中,通信单元113从serverhello提取标识符ids1,接受标识符ids1,并且确定是否通过使用标识符ids1来继续进行认证处理。如果通信单元113不接受标识符ids1,则确定握手失败。

如果通信单元113接受标识符ids1,则密钥材料生成单元112生成随机数rc1。此外,密钥材料生成单元112通过使用公开参数h、p和p0以及标识符ids1来生成服务器装置200的公钥ps1(ps1=h(ids1)p+p0)。此外,密钥材料生成单元112通过使用随机数rc1和服务器装置200的公钥ps1来生成客户端生成的密钥材料rc1(rc1=rc1ps1)。

通信单元113将客户端生成的密钥材料rc1包括在clientkeyexchange中。接着,通信单元113将clientkeyexchange{rc1}发送至服务器装置200。

(转换c12)

当处于状态c1的客户端装置100接收到serverhello、serverkeyexchange和finished(s)时,满足关于转换c12的条件。

在转换c12中,共享密钥生成单元114从serverkeyexchange提取服务器生成的密钥材料rs0,并且通过使用服务器生成的密钥材料rs0、随机数rc0、与标识符idc对应的私钥sc以及公开参数e来生成共享密钥zc。接着,根据tls规范,共享密钥生成单元114通过使用共享密钥zc作为预备主私有信息来生成主私有信息mc。

验证处理单元115通过使用主私有信息mc来生成客户端生成的验证符(验证符verify_data)。此外,验证处理单元115确定从finished(s)提取的服务器生成的验证符与客户端生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符不匹配,则确定握手失败。

如果服务器生成的验证符与客户端生成的验证符匹配,则通信单元113将客户端生成的验证符包括在finished(c)中,并且将finished(c)发送至服务器装置200。

(转换c32)

当处于状态c3的客户端装置100接收到serverkeyexchange和finished(s)时,满足关于转换c32的条件。

在转换c32中,共享密钥生成单元114从serverkeyexchange提取服务器生成的密钥材料rs1。此外,共享密钥生成单元114通过使用服务器生成的密钥材料rs1、随机数rc1、与标识符idc对应的私钥sc以及公开参数e来生成共享密钥zc。此外,根据tls规范,共享密钥生成单元114通过使用共享密钥zc作为预备主私有信息来生成主私有信息mc。

验证处理单元115通过使用主私有信息mc来生成客户端生成的验证符(验证符verify_data)。此外,验证处理单元115确定从finished(s)提取的服务器生成的验证符与客户端生成的验证符是否匹配。

如果服务器生成的验证符与客户端生成的验证符不匹配,则确定握手失败。如果服务器生成的验证符与客户端生成的验证符匹配,则通信单元113将客户端生成的验证符包括在finished(c)中,并且将finished(c)发送至服务器装置200。

(状态转换:服务器装置200)

接着,将参照图10来描述服务器装置200的状态转换。图10例示了根据第二实施例的服务器装置200的状态转换。

(状态s0至s3)

如图6和图7中所示,服务器装置200从客户端装置100接收一定的消息,并且响应于这些接收到的消息来执行处理。如图10中所示,将服务器装置200设置为处于服务器装置200等待从客户端装置100发送的消息的待机状态(状态s0、s1和s3)、以及完成握手的完成状态(状态s2)。

当满足一定的条件时,服务器装置200的状态改变。在图10的示例中,从状态s0至状态s1的转换表示为转换s01,并且从状态s0至状态s3的转换表示为转换s03。此外,从状态s1至状态s2的转换表示为转换s12,并且从状态s3至状态s1的转换表示为转换s31。如下所示来设置关于各个转换s01、s03、s12和s31的条件以及在满足这些各个条件时执行的处理内容。

(转换s01)

当处于状态s0的服务器装置200接收到clienthello和clientkeyexchange,并且接受clienthello中的标识符ids0时,满足关于转换s01的条件。

在转换s01中,通信单元212从clienthello提取标识符idc,并且确定是否接受标识符idc作为希望成为本认证处理中的通信对端的客户端装置100的标识符。

例如,当对标识符idc设置有效期时,除非有效期过期,否则通信单元212接受标识符idc。当服务器装置200保存有被授权为握手对端的客户端装置的标识符列表时,如果在列表中包括标识符idc,则通信单元212接受标识符idc。如果通信单元212不接受标识符idc,则确定握手失败。

如果通信单元212接受标识符idc,则密钥材料生成单元213从clientkeyexchange提取客户端生成的密钥材料rc0并且生成随机数rs0。此外,密钥材料生成单元213通过使用公开参数h、p和p0以及从clienthello提取的标识符idc来生成客户端装置100的公钥pc(pc=h(idc)p+p0)。此外,密钥材料生成单元213通过使用随机数rs0和公钥pc来生成服务器生成的密钥材料rs0(rs0=rs0pc)。

共享密钥生成单元214通过使用从clientkeyexchange提取的客户端生成的密钥材料rc0、随机数rs0、与标识符ids0对应的私钥ss0、以及公开参数e来生成共享密钥zs。接着,根据tls规范,共享密钥生成单元214通过使用共享密钥zs作为预备主私有信息来生成主私有信息ms。

通信单元212将标识符ids0包括在serverhello中。此外,通信单元212将服务器生成的密钥材料rs0包括在serverkeyexchange中。接着,通信单元212将serverhello{ids0}和serverkeyexchange{rs0}发送至客户端装置100。验证处理单元215通过使用主私有信息ms来生成服务器生成的验证符(验证符verify_data)。通信单元212将服务器生成的验证符包括在finished(s)中,并且将finished(s)发送至客户端装置100。

(转换s03)

当处于状态s0的服务器装置200接收到clienthello和clientkeyexchange,并且不接受clienthello中的标识符ids0时,满足关于转换s03的条件。例如,如果标识符ids0的有效期过期,则服务器装置200不接受标识符ids0。

在转换s03中,通信单元212从clienthello提取标识符idc,并且确定是否接受标识符idc作为希望成为本认证处理中的通信对端的客户端装置100的标识符。

例如,当对标识符idc设置有效期时,除非有效期过期,否则通信单元212接受标识符idc。当服务器装置200保存有被授权为握手对端的客户端装置的标识符列表时,如果在列表中包括标识符idc,则通信单元212接受标识符idc。如果通信单元212不接受标识符idc,则确定握手失败。

如果通信单元212不接受标识符idc,则通信单元212确定能够被接受为在认证处理中使用的标识符的替选标识符ids1。接着,通信单元212将错误和标识符ids1包括在serverhello中,并且将serverhello{error,ids1}发生至客户端装置100,所述错误是指示错误的发生的信息。

(转换s31)

当处于状态s3的服务器装置200接收到clientkeyexchange时,满足关于转换s31的条件。

在转换s31中,密钥材料生成单元213从clientkeyexchange提取客户端生成的密钥材料rc1并且生成随机数rs1。此外,密钥材料生成单元213通过使用公开参数h、p和p0以及从clienthello提取的标识符idc来生成客户端装置100的公钥pc(pc=h(idc)p+p0)。接着,密钥材料生成单元213通过使用随机数rs1和公钥pc来生成服务器生成的密钥材料rs1(rs1=rs1pc)。

共享密钥生成单元214通过使用从clientkeyexchange提取的客户端生成的密钥材料rc1、随机数rs1、与标识符ids1对应的私钥ss1、以及公开参数e来生成共享密钥zs。接着,根据tls规范,共享密钥生成单元214通过使用共享密钥zs作为预备主私有信息来生成主私有信息ms。

通信单元212将服务器生成的密钥材料rs1包括在serverkeyexchange中,并且将serverkeyexchange{rs1}发送至客户端装置100。验证处理单元215通过使用主私有信息ms来生成服务器生成的验证符(验证符verify_data)。通信单元212将服务器生成的验证符包括在finished(s)中,并且将finished(s)发送至客户端装置100。

(转换s12)

当处于状态s1的服务器装置200接收到finished(c)时,满足关于转换s12的条件。

验证处理单元215确定从finished(c)提取的客户端生成的验证符与服务器生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符不匹配,则确定握手失败。

已经描述了当客户端装置100和服务器装置200执行握手时执行的认证处理的流程。

[2-5.变型]

接着,将描述根据第二实施例的变型。

(序列:当在服务器标识符中存在错误时)

将参照图11来描述根据本变型的认证处理(有错误)的流程。将在假设服务器装置200不接受从客户端装置100发送的标识符作为服务器标识信息的情况下来描述以下认证处理。图11是例示根据第二实施例的变型的认证处理(有错误)的流程的序列图。

(s201)通信单元113将在认证处理中使用的客户端标识信息111a(标识符idc)和服务器标识信息111b(标识符ids0)包括在clienthello中。通信单元113将clienthello{idc,ids0}发送至服务器装置200。

(s202)密钥材料生成单元112生成随机数rc0。此外,密钥材料生成单元112通过使用公开参数h、p和p0以及标识符ids0来生成服务器装置200的公钥ps0(ps0=h(ids0)p+p0)。接着,密钥材料生成单元112通过使用随机数rc0和服务器装置200的公钥ps0来生成客户端生成的密钥材料rc0(rc0=rc0ps0)。

通信单元113将客户端生成的密钥材料rc0包括在clientkeyexchange中。接着,通信单元113将clientkeyexchange{rc0}发送至服务器装置200。

(s203)通信单元212从clienthello提取标识符ids0,并且确定是否接受标识符ids0作为在认证处理中使用的标识符。在图11的示例中,通信单元212不接受标识符ids0。例如,当标识符ids0的有效期过期时,通信单元212不接受标识符ids0。

(s204)通信单元212将错误和标识符ids1包括在serverhello中,所述错误是指示错误的发生的信息,所述标识符ids1作为在认证处理中能够被接受的标识符。接着,通信单元212将serverhello{error,ids1}发生至客户端装置100。

(s205)密钥材料生成单元213生成随机数rs1。此外,密钥材料生成单元213通过使用公开参数h、p和p0以及从clienthello提取的标识符idc来生成客户端装置100的公钥pc(pc=h(idc)p+p0)。此外,密钥材料生成单元213通过使用随机数rs1和公钥pc来生成服务器生成的密钥材料rs1(rs1=rs1pc)。

通信单元212将服务器生成的密钥材料rs1包括在serverkeyexchange中。通信单元212将serverkeyexchange{rs1}发送至客户端装置100。

(s206)当接收到serverhello{error,ids1}和serverkeyexchange{rs1}时,通信单元113确定是否接受标识符ids1并通过使用标识符ids1来继续进行认证处理。在图11的示例中,通信单元113接受标识符ids1。

密钥材料生成单元112生成随机数rc1。此外,密钥材料生成单元112通过使用公开参数h、p和p0以及标识符ids1来生成服务器装置200的公钥ps1(ps1=h(ids1)p+p0)。此外,密钥材料生成单元112通过使用随机数rc1和服务器装置200的公钥ps1来生成客户端生成的密钥材料rc1(rc1=rc1ps1)。

共享密钥生成单元114通过使用从serverkeyexchange提取的服务器生成的密钥材料rs1、随机数rc1、与标识符idc对应的私钥sc以及公开参数e来生成共享密钥zc。接着,根据tls规范,共享密钥生成单元114通过使用共享密钥zc作为预备主私有信息来生成主私有信息mc。

(s207)通信单元113将客户端生成的密钥材料rc1包括在clientkeyexchange中。接着,通信单元113将clientkeyexchange{rc1}发送至服务器装置200。

(s208)验证处理单元115通过使用主私有信息mc来生成客户端生成的验证符(验证符verify_data)。通信单元113将客户端生成的验证符包括在finished(c)中。接着,通信单元113将finished(c)发送至服务器装置200。

(s209)通信单元212接收clientkeyexchange{rc1}和finished(c)。共享密钥生成单元214通过使用从clientkeyexchange提取的客户端生成的密钥材料rc1、随机数rs1、与标识符ids1对应的私钥ss1、以及公开参数e来生成共享密钥zs。接着,根据tls规范,共享密钥生成单元214通过使用共享密钥zs作为预备主私有信息来生成主私有信息ms。

(s210)验证处理单元215通过使用主私有信息ms来生成服务器生成的验证符(验证符verify_data)。验证处理单元215确定从finished(c)提取的客户端生成的验证符与服务器生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符匹配,则确定认证成功。相反,如果服务器生成的验证符与客户端生成的验证符不匹配,则确定认证失败。

(s211)通信单元212将服务器生成的验证符包括在finished(s)中。接着,通信单元212将finished(s)发送至客户端装置100。

(s212)通信单元113接收finished(s)。验证处理单元115确定从finished(s)提取的服务器生成的验证符与客户端生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符匹配,则确定认证成功。相反,如果服务器生成的验证符与客户端生成的验证符不匹配,则确定认证失败。

在完成s212中的处理后,结束图11中所示的一系列处理。在图11的序列中,当执行握手时执行了四个线程(com#1至com#4)。即,根据本变型,与图7中的序列相比,需要更少的线程。

(状态转换:客户端装置100)

接着,将参照图12来描述根据本变型的客户端装置100的状态转换。图12例示了根据第二实施例的变型的客户装置100的状态转换。

(转换c01)

当处于状态c0的客户端装置100开始tls通信时,满足关于转换c01的条件。

在转换c01中,通信单元113确定在本认证处理中使用的客户端标识信息111a(标识符idc)和服务器标识信息111b(标识符ids0)。

密钥材料生成单元112生成随机数rc0。此外,密钥材料生成单元112通过使用公开参数h、p和p0以及标识符ids0来生成服务器装置200的公钥ps0(ps0=h(ids0)p+p0)。接着,密钥材料生成单元112通过使用随机数rc0和服务器装置200的公钥ps0来生成客户端生成的密钥材料rc0(rc0=rc0ps0)。

通信单元113将标识符idc和ids0包括在clienthello中。接着,通信单元113将clienthello{idc,ids0}发送至服务器装置200。此外,通信单元113将客户端生成的密钥材料rc0包括在clientkeyexchange中。接着,通信单元113将clientkeyexchange{rc0}发送至服务器装置200。

(转换c03)

当处于状态c0的客户端装置100接收到serverhello(有错误)和serverkeyexchange时,满足关于转换c03的条件。

在转换c03中,通信单元113从serverhello提取标识符ids1,并且确定是否接受标识符ids1并通过使用标识符ids1来继续进行认证处理。如果通信单元113不接受标识符ids1,则确定握手失败。

如果通信单元113接受标识符ids1,则密钥材料生成单元112生成随机数rc1。此外,密钥材料生成单元112通过使用公开参数h、p和p0以及标识符ids1来生成服务器装置200的公钥ps1(ps1=h(ids1)p+p0)。此外,密钥材料生成单元112通过使用随机数rc1和服务器装置200的公钥ps1来生成客户端生成的密钥材料rc1(rc1=rc1ps1)。

共享密钥生成单元114从serverkeyexchange提取服务器生成的密钥材料rs1。此外,共享密钥生成单元114通过使用服务器生成的密钥材料rs1、随机数rc1、与标识符idc对应的私钥sc以及公开参数e来生成共享密钥zc。接着,根据tls规范,共享密钥生成单元114通过使用共享密钥zc作为预备主私有信息来生成主私有信息mc。

通信单元113将客户端生成的密钥材料rc1包括在clientkeyexchange中,并且将clientkeyexchange{rc1}发送至服务器装置200。此外,通信单元113将客户端生成的验证符包括在finished(c)中,并且将finished(c)发送至服务器装置200。

(转换c12)

当处于状态c1的客户端装置100接收到serverhello、serverkeyexchange和finished(s)时,满足关于转换c12的条件。

在转换c12中,共享密钥生成单元114从serverkeyexchange提取服务器生成的密钥材料rs0,并且通过使用服务器生成的密钥材料rs0、随机数rc0、与标识符idc对应的私钥sc以及公开参数e来生成共享密钥zc。接着,根据tls规范,共享密钥生成单元114通过使用共享密钥zc作为预备主私有信息来生成主私有信息mc。

验证处理单元115通过使用主私有信息mc来生成客户端生成的验证符(验证符verify_data)。此外,验证处理单元115确定从finished(s)提取的服务器生成的验证符与客户端生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符不匹配,则确定握手失败。

如果服务器生成的验证符与客户端生成的验证符匹配,则通信单元113将客户端生成的验证符包括在finished(c)中,并且将finished(c)发送至服务器装置200。

(转换c32)

当处于状态c3的客户端装置100接收到finished(s)时,满足关于转换c32的条件。

验证处理单元115确定从finished(s)提取的服务器生成的验证符与客户端生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符不匹配,则确定握手失败。

(状态转换:服务器装置200)

接着,将参照图13来描述根据本变型的服务器装置200的状态转换。图13例示了根据第二实施例的变型的服务器装置200的状态转换。

(转换s01)

当处于状态s0的服务器装置200接收到clienthello和clientkeyexchange,并且接受clienthello中的标识符ids0时,满足关于转换s01的条件。

在转换s01中,通信单元212从clienthello提取标识符idc,并且确定是否接受标识符idc作为希望成为认证处理中的通信对端的客户端装置100的标识符。

例如,当对标识符idc设置有效期时,除非有效期过期,否则通信单元212接受标识符idc。当服务器装置200保存有被授权为握手对端的客户端装置的标识符列表时,如果在列表中包括标识符idc,则通信单元212接受标识符idc。如果通信单元212不接受标识符idc,则确定握手失败。

如果通信单元212接受标识符idc,则密钥材料生成单元213从clientkeyexchange提取客户端生成的密钥材料rc0并且生成随机数rs0。此外,密钥材料生成单元213通过使用公开参数h、p和p0以及从clienthello提取的标识符idc来生成客户端装置100的公钥pc(pc=h(idc)p+p0)。此外,密钥材料生成单元213通过使用随机数rs0和公钥pc来生成服务器生成的密钥材料rs0(rs0=rs0pc)。

共享密钥生成单元214通过使用从clientkeyexchange提取的客户端生成的密钥材料rc0、随机数rs0、与标识符ids0对应的私钥ss0、以及公开参数e来生成共享密钥zs。接着,根据tls规范,共享密钥生成单元214通过使用共享密钥zs作为预备主私有信息来生成主私有信息ms。

通信单元212将标识符ids0包括在serverhello中。此外,通信单元212将服务器生成的密钥材料rs0包括在serverkeyexchange中。接着,通信单元212将serverhello{ids0}和serverkeyexchange{rs0}发送至客户端装置100。验证处理单元215通过使用主私有信息ms来生成服务器生成的验证符(验证符verify_data)。通信单元212将服务器生成的验证符包括在finished(s)中,并且将finished(s)发送至客户端装置100。

(转换s03)

当处于状态s0的服务器装置200接收到clienthello和clientkeyexchange,并且不接受clienthello中的ids0时,满足关于转换s03的条件。例如,如果标识符ids0的有效期过期,则服务器装置200不接受标识符ids0。

在转换s03中,通信单元212从clienthello提取标识符idc,并且确定是否接受标识符idc作为希望成为认证处理中的通信对端的客户端装置100的标识符。

例如,当对标识符idc设置有效期时,除非有效期过期,否则通信单元212接受标识符idc。当服务器装置200保存有被授权为握手对端的客户端装置的标识符列表时,如果在列表中包括标识符idc,则通信单元212接受标识符idc。如果通信单元212不接受标识符idc,则确定握手失败。

如果通信单元212不接受标识符idc,则通信单元212确定能够被接受为在认证中使用的标识符的替选标识符ids1。密钥材料生成单元213从clientkeyexchange提取客户端生成的密钥材料rc1并且生成随机数rs1。此外,密钥材料生成单元213通过使用公开参数h、p和p0以及从clienthello提取的标识符idc来生成客户端装置100的公钥pc(pc=h(idc)p+p0)。接着,密钥材料生成单元213通过使用随机数rs1和公钥pc来生成服务器生成的密钥材料rs1(rs1=rs1pc)。

通信单元212将错误和标识符ids1包括在serverhello中,并且将serverhello{error,ids1}发生至客户端装置100,所述错误是指示错误的发生的信息。此外,通信单元212将服务器生成的密钥材料rs1包括在serverkeyexchange中,并且将serverkeyexchange{rs1}发送至客户端装置100。

(转换s32)

当处于状态s3的服务器装置200接收到clientkeyexchange时,满足关于转换s32的条件。

在转换s32中,密钥材料生成单元213从clientkeyexchange提取客户端生成的密钥材料rc1并且生成随机数rs1。此外,密钥材料生成单元213通过使用公开参数h、p和p0以及从clienthello提取的标识符idc来生成客户端装置100的公钥pc(pc=h(idc)p+p0)。此外,密钥材料生成单元213通过使用随机数rs1和公钥pc来生成服务器生成的密钥材料rs1(rs1=rs1pc)。

共享密钥生成单元214通过使用从clientkeyexchange提取的客户端生成的密钥材料rc1、随机数rs1、与标识符ids1对应的私钥ss1、以及公开参数e来生成共享密钥zs。接着,根据tls规范,共享密钥生成单元214通过使用共享密钥zs作为预备主私有信息来生成主私有信息ms。

验证处理单元215通过使用主私有信息ms来生成服务器生成的验证符(验证符verify_data)。此外,验证处理单元215确定从finished(c)提取的客户端生成的验证符与服务器生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符不匹配,则确定握手失败。如果服务器生成的验证符与客户端生成的验证符匹配,则通信单元212将服务器生成的验证符包括在finished(s)中,并且将finished(s)发送至客户端装置100。

(转换s12)

当处于状态s1的服务器装置200接收到finished(c)时,满足关于转换s12的条件。

验证处理单元215确定从finished(c)提取的客户端生成的验证符与服务器生成的验证符是否匹配。如果服务器生成的验证符与客户端生成的验证符不匹配,则确定握手失败。

这样,已经描述了第二实施例。

根据一个方面,减小了认证时间。

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