一种基于用户自主的标识认证实现方法

xiaoxiao2020-10-23  8

一种基于用户自主的标识认证实现方法
【技术领域】
[0001]本发明涉及标识认证系统,提供一种基于用户自主的标识认证系统实现方法,属于网际安全(Cyber security)技术领域。
【背景技术】
[0002]随着网络和信息技术逐渐进入人们的生产与生活,保护信息的真实性、私密性、负责性(不可抵赖性)成为政府和社会共同关心的问题。鉴于在网络空间所有现实空间的实体,同时也是信息活动的主体,都以抽象的标识表达,通过认证技术将标识与实体绑定,构建支持数字签名和密钥交换的标识认证系统,成为实现网际安全(网络空间安全)的基础。与此同时,按照电子签名法的规定,认证系统还必须解决用户密钥的自主控制问题。
[0003]围绕自主认证系统构建,现已形成两个有代表性的技术系统,一是基于公钥证书的第三方认证系统,如公钥基础设施(PKI),二是基于公钥体制的PGP(Pretty GoodPrivacy)加密系统。
[0004]PKI系统采用X509标准,提供了两种证书生成模式:一是签名密钥由用户自己生成,二是由认证中心(CA)协助生成。按照第一种模式,其过程如下:
[0005]I)用户按照认证系统所规定的方法,自行生成公私密钥对,将私钥自行保存,并向CA提交自己的公钥和身份证明;
[0006]2)CA对用户进行身份确认,审核通过后,CA用其根密钥对用户提交的公钥作数字签名,将其生成公钥证书,然后通过面对面、信函或电子方式将公钥证书安全地发放给用户;
[0007]3)CA将用户的公钥证书发布到相应的目录服务器供查询、下载。
[0008]第二种模式是用户到CA中心生产并获得公私密钥对,CA在完成密钥生产后应自动销毁本地的用户密钥对拷贝,其他步骤与第一种模式相同。
[0009]PKI通过让用户自己生成密钥,解决了私钥自主控制问题,并通过用CA的根密钥对用户标识和公钥PK做数字签名,将二者绑定生成数字证书,构成基于实名的第三方证明体系,其服务对象主要是政府和商业机构。由于其实现方法较复杂,用途比较单一,难以满足社会和公众对网络化、匿名化、多元化,简洁高效的综合认证服务的要求。
[0010]PGP(Pretty Good Privacy)系统主要用于信息加密,但也可以用于签名和验证,并自定义了一套类X509标准。PGP的密钥由用户自己生成,支持匿名体系,是面向大众,完全自主开放的加密系统。该系统其主要问题在于,它是一个完全自主开放的体系,没有统一的管理,造成密钥关系复杂,难以证明公钥主体的真实性,应用受到很大限制。

【发明内容】

[0011]有鉴于此,本发明针对上述两种体系存在的问题提出一种基于用户自主的标识认证实现方法和系统。该系统由服务端和客户端构成,具备以下3大特点:
[0012]1、标识可以由用户自行定义,可以是实名也可以是匿名,密钥可以由用户通过系统提供的工具自己生成,从而实现用户对自用密钥的自主控制和管理;
[0013]2、通过用用户标识和种子密钥生成用户标识密钥,对用户公钥做数字签名和验证,实现了用户标识与密钥的天然绑定及一体化证明;
[0014]3、通过种子公钥集的构建和管理,解实现了不同信任域用户间的直接跨域交叉认证。
[0015]该系统不仅适用于匿名认证也支持实名认证,体系简洁灵活,可以用于构建多元化的基于标识的认证服务系统。
[0016]该系统由服务端和用户端构成:
[0017]用户端的工作包括:自定义用户标识Uid,生成公私密钥对sk和PK,将Uid和PK提交服务端审核,并将sk连同服务端返回的uID、种子密钥标识seedID、签名公钥数据PKsig写入用户密钥装置Key-device。
[0018]服务端的工作包括:生成种子密钥对并公布种子公钥;审查用户标识,通过后用种子私钥计算出标识私钥对用户提交的PK做数字签名生成PKsigdf UID、seedID、PKsig打包返给用户方。具体实现步骤如下:
[0019]1、服务端定义种子密钥标识seedID,并生成种子私钥seedsk和种子公钥seedPK(图1-4)。seedsk和seedPK共用同一 seedID,通过文件后缀如.sk和.PK加以区分。seedsk由服务端秘密保管,用于生成isk, seedPK可以对外发布,供计算iPK。种子密钥生成方法如下:
[0020]I)首先利用随机数发生器RNG生成一段随机序列作为sk,将sk经椭圆曲线(ECC)群标量乘法运算生成与sk相对应的PK ;经重复操作生成一定数量的公私密钥对,如256个;
[0021]2)将私钥和公钥分别按照一定的顺序相互对应排列成矩阵,如16X16,分别生成seedsk和 seedPK ;
[0022]3)用seedID通过seedsk生成isk对seedPK做数字签名生成seedPKsig,用于验证seedPK的真实性,防止替换攻击。
[0023]2、用户端按照系统制定的规则自行定义用户标识UlD (图1-1),UlD可以是实名也可以是匿名,而后用户端利用系统提供的工具生成自用密钥对,包括私钥sk和公钥PK(图1-2和3) ο方法为:
[0024]I)利用RNG生成一定长度的随机序列(如192位)作为sk ;
[0025]2)将sk经椭圆曲线(ECC)群标量乘法运算生成PK。
[0026]密钥对生成后,用户端登录服务端,提交uID,所提交的UlD必须具有唯一性,如出现重名,服务端将提示用户端重新定义,否则拒绝接纳。服务端接受UlD后用户端进一步提交PK。根据实际需要及可能,UlD和密钥对(包括sk和PK)也可以由服务端代用户生成。
[0027]3、服务端利用用户端提交的UlD及seedsk生成isk(图1_5)对用户端提交的PK进行签名生成PKsig (图1-6)。具体方法如下:
[0028]I)服务端以用户提交的uID为hash函数的输入,计算出该uID的hash值hID ;
[0029]2)以hID构建选取数列,从seedsk选取一定数量的私钥,经模加运算生成isk ;
[0030]3)用isk对用户提交的PK做数字签名生成PKsig,包括PK和对PK的签名,服务端将uID、SeedID以及PKsig打包返回用户端,同时将相关数据自动保存到数据库中供查询和下载。
[0031]4、客户端将下载数据,包括uID、seedID以及PKsig连同sk—并写入用户密钥装置的安全芯片内(图1-7),密钥装置可以封装成USB-key、IC卡、TF-卡等方便使用的形态。采用密钥装置是为了保护用户私钥的安全。
[0032]此外,服务端可以将自己或其它服务端生成的seedPK汇集成种子公钥集。当验证签名时,验证方用签名数据中的seedID从种子公钥集中选取与之对应的seedPK,从而实现跨域交叉认证(图2)。为保证种子公钥集内种子公钥的真实性和完整性,服务端可以用自身的私钥对各种子密钥进行数字签名,验证方增加相应验证过程。
[0033]本发明提供的认证方法支持数字签名和密钥交换。数字签名主要用于认证,密钥交换则通过对数据的加密保证数据的安全。具体过程如下:
[0034]1、数字签名/验证
[0035]签名方用自身的sk生成签名数据Datasig提交给验证方,Datasig中包含对内容的签名Contsig以及签名方的uID、IDseedPK和PKsig。
[0036]验证方首先根据Datasig中的seedID从种子公钥集中选取对应的seedPK,用uID计算出签名方的iPK对PKsig进行验证,通过后提取签名方的PK对Contsig进行验证。具体过程如下:
[0037]A)用户A用自己的私钥sk对消息m作数字签名,流程如下:
[0038]①随机选取k e Zn
[0039]②计算k.G = (X, y)(椭圆曲线群标量乘法)
[0040]③计算 r = X mod η
[0041]④计算S = k~l (h(m)+sk.r)mod η
[0042]⑤A将m和签名(r,S)发给B
[0043]A的签名数据Datasig中包括Contsig及包含seedID、用户uID及PK的PKsig。
[0044]B)用户B对签名验证流程如下:
[0045]①用签名中的seedID从种子密钥集选取A所在信任域的seedPK ;
[0046]②用A的UlD和选出的seedPK成标识公钥iPK验证A的PK
[0047]③计算 ul = h(m).S-1mod η
[0048]u2 = r.S-1mod η
[0049]④计算R = ul.G+u2.PK (椭圆曲线点运算)
[0050]记 R = (X,,γ')
[0051]⑤计算V = X' mod η,若V = r则认证通过,签名有效,否则签名无效。
[0052]服务端通过发布已经作废的seedID和uID,提供作废列表查询服务,并用seedPK的isk对发布数据做数字签名为防止伪造和篡改。
[0053]2、密钥交换
[0054]A)发方A密钥发送过程:
[0055]①发方A通过B方或从服务端数据库获得B方的公钥数据,包括用户uID、IDseedPK,PK 和 PKsig ;
[0056]②通过IDseedPK选择B方信任域的种子公钥seedPK,用B的ID生成IPKB对B的PK进行验证,如通过进行下一步;
[0057]③随机选取k e Zn
[0058]④计算k.G = (X, y)(标量乘法)
[0059]⑤取r = X (mod η)作为会话密钥
[0060]⑥计算k.PKB
[0061]⑦将k.PKB发给B
[0062]收方B获取会话密钥流程:
[0063]①收到k.PKB
[0064]②计算SKB-1.(k.PKB) = k.G = (x, y)
[0065]③取r = X (mod η)作为会话密钥
[0066]本发明的有益效果是:社会对支持匿名和自主安全服务的认证系统有强烈的客观需求。本方法通过用户自定义匿名或实名标识,自行生成和保管个人密钥,同时解决了实名、匿名和自主问题;通过采用种子密钥生成用户标识密钥对用户自主生成的公钥做数字签名和验证,实现了用户标识与密钥的天然绑定及一体化证明;通过种子公钥集的构建和管理,实现了不同信任域用户间的直接跨域交叉认证。相比PKI和PGP认证系统,不仅结构简洁,抗攻击能力也更强(与采用单一根密钥的PKI系统向比,其强度与密钥数量呈倍数关系)。
[0067]本发明利用公钥体制中公钥可以公开的特性,建立起基于用户自主的认证服务系统,从而满足社会和公众对自主、多元,支持匿名的安全认证服务的要求。在此基础上,任何企业、单位、组织和个人,只需通过网络生成属于自己的唯一标识(实名或匿名)和与之相对应的密钥,就可以建立起独立自主的信息安全管理系统,保护自身的信息安全。同时也可根据需要,通过标识的互认,与外界建立自主管理下的信任关系,实现信息的安全交互。除此之外,还可通过将用户的标识与手机号码、银行账号等绑定,将应用拓展到电子商务、移动支付等领域。
【附图说明】
[0068]为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述:
[0069]附图中
[0070]Σ ++表示椭圆曲线点加运算
[0071]Σ + 表示模η整数运算
[0072].G 表示椭圆曲线群标量乘法运算
[0073]图1示出了基于用户自主的标识认证系统实现方法的流程
[0074]图2示出了通过构建种子公钥集实现交叉认证的过程
[0075]图3示出了标识认证系统的签名和验证过程
[0076]在图1中,用户端根据系统规定(如对字符和长度的要求)定义自己的用户标识(uID),并利用系统提供的工具生成自己的公私密钥对。而后将UlD和PK提交到服务端。
[0077]服务端接到用户端提交的数据后,服务用户提交的UlD通过seedsk计算出isk,对用户提交的PK做数字签名生成PKsig,并将uID、seedID以及PKsig返还用户端,同时自动保存到服务端的数据库中供查询和下载。
[0078]客户端从服务端取得uID、seedID和PKsig后,连同原先生成的sk—并写入用户密钥装置。
[0079]图2示出示出了通过构建种子公钥集实现交叉认证的过程。图中,按照种子密钥划分的多个信任域,如域A、域B和域η。在域A中有标识为uIDl的用户,在域B中有标识为uID2的用户,在域η中有标识为UlDn的用户。服务端将各信任域的种子公钥seedPK按照规定格式生成种子公钥集。验证方可用直接通过密钥标识选取对应的种子公钥seedPK,而后用签名方的实体标识(uIDl、uID2、uIDn)经hash变换产生的数列从种子公钥中取值,并经过椭圆曲线点运算生成对象用户的标识公钥iPK,验证用户的PKsig,并获得该用户的公钥,从而实现交叉认证。
[0080]图3标识认证系统的签名及验证过程。图中,签名方用自身密钥装置内的sk生成签名数据Datasig提交给验证方,签名数据中包含对内容的签名Contsig以及签名方uID、seedID 和 PKsig。
[0081]验证方首先根据Datasig中的seedID从种子公钥集中选取与之对应的seedPK,用UlD计算出签名方的iPK对PKsig进行验证,通过后提取签名方的PK对Contsig进行验证。
【具体实施方式】
[0082]以上所述仅为本发明的优选实施例,并不用于限制本发明,显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.基于用户自主的标识认证系统实现方法,其特征在于,包括: 步骤a.用户端定义用户标识UlD ; 步骤b.用户端用密钥生成工具生成自用密钥对,包括私钥sk和公钥PK ; 步骤c.服务端定义种子密钥标识seedID并生成种子密钥,包括种子私钥seedsk和种子公钥seedPK ; 步骤d.用户端登录服务端,提交uID,服务端查重并接受UlD后,用户端进一步提交PK; 步骤e.服务端将用户端提交的UlD通过seedsk生成该uID的标识私钥isk对用户端提交的PK做数字签名生成PKsig (包括PK及isk对PK的签名),将uID、seedID和PKsig打包返回用户端,并自动将相关数据保存到数据库中,供查询和下载; 步骤f.服务端将自己或其它服务端生成的seedPK汇集成种子公钥集,提供跨域交叉认证服务; 步骤g.用户端将自行生成的sk以及从服务端返回的数据,包括uID、seedID、和PKsig写入用户密钥装置Key-device ; 步骤h.签名方用自身的sk生成签名数据Datasig提交给验证方,Datasig中包含对内容的签名Contsig及签名方的uID、seedID以及PKsig ; 步骤1.验证方通过Datasig中提供的seedID从种子公钥集中选取与之对应的seedPK,并用UlD计算出签名方的iPK,对PKsig进行验证,验证通过后提取签名方的PK对Contsig进行验证。2.根据权利要求1步骤a所述方法,其特征在于,所述uID可由用户自定义也可以由服务端代用户定义,可以是实名也可以是匿名。3.根据权利要求1步骤b所述方法,其特征在于,所述sk为利用随机数发生器生成的随机序列,PK由Sk经椭圆曲线群标量乘法运算生成,可以由用户生成也可以由服务端代为生成。4.根据权利要求1步骤c所述方法,其特征在于,种子密钥标识seedID为种子密钥的文件名,是种子公钥和种子私钥的共用标识,二者通过文件名后缀,如.Pk或.sk加以区分。5.根据权利要求1步骤C,种子密钥由服务端生成,方法是:首先用权利要求1步骤b提供的方法生成一定数量的公私密钥对,如256个,而后将私钥和公钥分别按照相互对应的顺序排列成矩阵,如16X16,分别生成seedsk和seedPK,其中,seedsk由服务端秘密保管,用于生成用户标识私钥isk,seedPK对外公开,用于计算用户标识公钥iPK。6.根据权利要求1步骤d和权利要求2所述方法,所提交的uID应具有唯一性,如出现重名,需要重新定义,否则服务端将拒绝接纳。7.根据权利要求1步骤e和权利要求5所述方法,其特征在于:所述用户isk和PKsig的生成方法分别为:服务端以用户提交的UlD为hash函数的输入,计算出该UlD的hash值hID,并以hID构建选取数列,从seedsk矩阵选取一定数量的私钥,经模加运算生成用户标识私钥isk,而后用该isk对用户提交的PK做数字签名生成PKsig,连同PKsig连同uID、seedID返回用户端,同时自动将其保存到数据库中,供查询和下载。8.根据权利要求1步骤e.和权利要求7所述方法,所涉及的数据项包括用户端定义的uID、服务端定义的seedID以及服务端生成的含有PK以及isk对PK的签名值的PKsig。9.根据权利要求1步骤e.以及权利要求7和8所述方法,其特征在于,用户端将uID, seedID、PKsig连同sk—并写入用户密钥装置内的安全芯片中,密钥装置可以设计成USB-key、IC卡、TF-卡等方便使用的形态。10.根据权利要求1步骤f所述方法,其特征在于,所述服务端通过将其它服务端生成的seedPK汇集成种子公钥集供客户端下载,验证签名时,验证方首先从Datasig中提取seedID从种子公钥集中选取与之对应的seedPK,并提取uID计算出签名方的iPK对PKsig进行验证,验证通过后,从PKsig数据中提取PK对Contsig进行验证,从而实现跨域交叉认证。11.根据权利要求5及权利要求10所述方法,其特征在于,服务端用seedID及seedsk生成seedID的isk,并用其对自己生成的seedPK或种子公钥集中其它seedPK做数字签名,生成seedPKsig,与此同时,在公钥计算前增加对seedPKsig的验证环节以防止替换攻击,保证seedPK的真实性。12.根据权利要求1所述方法,其特征在于,步骤d所述服务端通过发布已经作废的seedPK和PK的标识,提供作废列表查询服务。为防止伪造和篡改,可用服务端seedID生成的isk对发布数据做数字签名。
【专利摘要】本发明公开了一种基于用户自主的标识认证实现方法。在该系统中,标识和密钥均由用户自行定义生成,支持实名和匿名认证及对密钥的自主控制和管理;通过采用种子密钥生成用户标识密钥对用户公钥做数字签名和验证,实现了用户标识与密钥的绑定及证明;通过种子公钥集的构建和管理,实现了不同信任域用户间的直接跨域交叉认证。该系统简洁灵活不仅适用于匿名认证也支持实名认证,可以用于构建多元化的基于标识的认证服务系统。
【IPC分类】H04L9/32, H04L9/30
【公开号】CN104901804
【申请号】CN201410428727
【发明人】赵捷, 陈晰
【申请人】赵捷, 陈晰
【公开日】2015年9月9日
【申请日】2014年8月28日

最新回复(0)