法律状态公告日
法律状态信息
法律状态
2019-08-09
授权
授权
2019-04-05
实质审查的生效 IPC(主分类):H04L9/32 申请日:20190116
实质审查的生效
2019-03-12
公开
公开
技术领域
本发明涉及互联网安全通讯领域,特别涉及一种结合广播优势的身份基安全互认证方法。
背景技术
随着互联网技术的高速发展,规模庞大的互联网系统部署在城市建设、工业控制、智能生活等众多方面,极大的提高了工作效率,降低了劳动成本。但与此同时互联网系统的节点众多、覆盖范围广泛等特性导致互联网安全问题十分突出。当前互联网中有大量终端节点主要通过无线网络与接入节点相连进行信息传输,无线网络的开放性使其很容易受到身份伪造、隐私破坏、拒绝服务攻击等安全威胁。安全认证是认证合法用户身份、保证网络安全的核心关键步骤,对互联网的安全部署和应用具有至关重要的作用。普通互联网节点一般资源有限,难以承载复杂级别较高的安全认证服务。因此,必须设计轻量级,即计算开销、时间开销、存储开销较小的安全认证方法用于互联网安全认证。
传统的网络安全认证方法包括基于公钥基础设施的认证、基于哈希函数和对称加密的认证、身份基认证。然而,传统安全认证方案存在着如下技术问题:
1)基于公钥基础设施(Public Key Infrastructure,PKI)的认证方法指,认证消息发送者在认证开始前向证书授权中心申请对应自身身份的证书和公钥私钥,认证消息发送者请求认证时采用PKI签名算法结合自身私钥对所发送消息进行签名,消息接受者收到消息后先验证发送者证书合法性,验证证书合法性成功后再根据对应签名验证算法结合发送者PKI公钥对消息签名进行验证,根据签名验证结果判断认证是否成功。采用此方法时,认证服务器必须存储有每个待认证节点的证书或在认证过程中传输待认证节点的证书,并在每次认证时需要对证书进行合法性验证,而每当需要更新或撤销证书,所有节点都必须进行对应的证书更新、撤销操作。复杂的证书管理操作将给认证服务器和合法节点带来极大的证书存储管理开销及额外的认证时间开销;
2)基于哈希函数和对称加密的认证方法指,认证消息发送者和认证消息接收者在认证开始前共有部分秘密信息,认证消息发送者请求认证时采用哈希函数与对称加密机制结合秘密信息对所发送消息进行签名,消息接受者根据对应签名验证算法结合秘密信息对消息签名进行验证,根据签名验证结果判断认证是否成功。此方法中认证双方需要在认证开始前共有部分秘密信息,一般适用于一对一或一对多的认证,其网络扩展性较差,难以实现任意互联网节点双方的互认证;
3)身份基认证方法指,认证消息发送者请求认证时采用身份基密码学签名算法结合自身私钥对所发送消息进行签名,认证消息接收者根据对应签名验证算法结合发送者身份公钥对消息签名进行验证,根据签名验证结果判断对发送者的认证是否成功。传统的身份基认证方法大多采用单向的“请求-应答”认证模式,且签名验证时间较长、签名大小较大,不适用于当前常用互联网场景下的核心接入节点与大范围内的大量节点之间的安全互认证。
当前常用互联网场景下,大量互联网节点需要接入节点进行数据传输、汇聚、处理,接入节点具有良好的广播优势。广播通信指发送节点通过广播信道一次性向服务范围内的所有接收节点发送相同的消息,其优势包括一对多通信和通信资源开销小等,一般用于向所有接收节点发送消息通知,还没有将广播优势用于安全互认证的公开报导。鉴于此,如何利用接入节点的广播优势实现与服务范围内的大量互联网节点之间的轻量级安全互认证,有效提高互联网节点接入认证的安全性与高效性成为本领域研究人员亟待解决的问题。
发明内容
本发明要解决的技术问题是解决传统安全认证方案证书管理复杂、传输带宽和计算时间开销大、无法实现任意互联网节点双方的互认证、无法实现核心节点与大范围内的大量互联网节点之间的安全互认证的问题。
本发明的技术方案是充分利用互联网核心节点的广播优势,设计生成身份基服务器签名,实现用户对认证服务器的认证;设计生成身份基用户签名,实现认证服务器对用户的认证。
本发明的具体技术方案是:
第一步,构建结合广播优势的身份基安全互认证系统。结合广播优势的身份基安全互认证系统由多个待认证用户节点(User Node,UN)、认证服务器(AuthenticationServer,AS)、安全核心节点(Core Node,CN)、私钥生成中心(Private Key Generator,PKG)组成。UN为一般互联网通信实体(如传感器、手机、智能终端等),需要与CN相连进行数据传输,但UN通信的安全性无法得到保证,需要AS对UN身份进行认证;CN是具备数据转发与广播能力的互联网无线网关,与UN和AS相连,其安全性可得到保证;AS为互联网中提供认证服务的通信实体(如具有较强计算能力与存储能力的服务器),与CN相连,为UN提供认证服务,对UN身份进行认证,其通信的安全性也无法得到保证,UN也需要认证AS身份合法性;PKG为身份基密码学中的固有安全实体(如安全机构、安全部门),仅在私钥生成中与有安全认证需求的通信实体(包括UN与AS)通过安全途径(如线下)交互,通过UN与AS的身份信息结合系统主密钥生成UN与AS互认证过程中使用的私钥,其安全性可得到保证。
PKG安装有身份基密码学参数初始化模块和私钥生成模块。AS安装有认证服务器签名生成模块、用户签名验证模块、AS消息收发模块,AS的身份信息为IDAS。CN安装有数据广播模块和数据转发模块。UN安装有用户签名生成模块、认证服务器签名验证模块、UN消息收发模块,UN的身份信息为IDUN。
PKG的身份基密码学参数初始化模块与和PKG的私钥生成模块相连,身份基密码学参数初始化模块接收系统管理员指定的安全参数,根据安全参数产生身份基密码学参数,包括系统参数和系统主密钥,身份基密码学参数初始化模块将系统主密钥加密存储,同时将系统主密钥和系统参数发送给私钥生成模块。
私钥生成模块与UN、AS和PKG的身份基密码学参数初始化模块相连,私钥生成模块分别从UN、AS接收生成私钥的请求和身份信息,从身份基密码学参数初始化模块接收系统主密钥和系统参数,私钥生成模块根据身份信息、系统主密钥和系统参数生成私钥,将私钥和系统参数分别发送给UN、AS。
认证服务器签名生成模块与用户签名验证模块、AS消息收发模块相连,AS向UN发起认证请求时,认证服务器签名生成模块生成预认证消息,根据AS的私钥生成对预认证消息的AS签名,并将预认证消息和AS签名发送给AS消息收发模块;AS向UN回复认证成功时,认证服务器签名生成模块从用户签名验证模块接收验签结果,生成认证回复消息,并根据AS的私钥生成对认证回复消息的AS签名,并将认证回复消息和AS签名发送给AS消息收发模块。
用户签名验证模块与认证服务器签名生成模块、AS消息收发模块相连,用户签名验证模块从AS消息收发模块接收请求认证消息和UN签名,对UN签名进行验证,将验签结果向认证服务器签名生成模块反馈。
AS消息收发模块与认证服务器签名生成模块、用户签名验证模块、CN的数据广播模块和数据转发模块相连,通过安全途径与PKG的私钥生成模块相连。AS向UN发起认证请求时,AS消息收发模块从认证服务器签名生成模块接收预认证消息和AS签名,将预认证消息和AS签名组成安全预认证消息,向数据广播模块发送安全预认证消息;UN向AS发起认证请求时,AS消息收发模块从数据转发模块接收安全认证请求消息,将安全认证请求消息解析为请求认证消息和UN签名,并将请求认证消息和UN签名发送到用户签名验证模块;AS向UN回复认证成功时,AS消息收发模块从认证服务器签名生成模块接收认证回复消息和AS回复签名,将认证回复消息和AS回复签名组成安全认证回复消息,并将安全认证回复消息发送给数据转发模块发送。当与PKG的私钥生成模块通过安全途径相连时,向PKG的私钥生成模块发送AS身份信息、生成AS私钥的请求,并从PKG的私钥生成模块接收AS私钥、系统参数。
数据广播模块与AS消息收发模块、UN消息收发模块相连,数据广播模块从AS消息收发模块收到安全预认证消息,并将安全预认证消息广播发送到所有UN的UN消息收发模块。
数据转发模块与AS消息收发模块、UN消息收发模块相连。数据转发模块从UN消息收发模块接收安全认证请求消息,将安全认证请求消息发送到AS消息收发模块;数据转发模块还从AS消息收发模块接收安全认证回复消息,将安全认证回复消息发送到UN消息收发模块。
UN消息收发模块与用户签名生成模块、认证服务器签名验证模块、CN的数据广播模块和数据转发模块相连,通过安全途径与PKG的私钥生成模块相连。AS向UN发起认证请求时,UN消息收发模块从数据广播模块接收安全预认证消息,将安全预认证消息解析为预认证消息和AS签名,并将预认证消息和AS签名发送到认证服务器签名验证模块;UN向AS发起认证请求时,UN消息收发模块从用户签名生成模块接收请求认证消息和UN签名,将请求认证消息和UN签名组合成安全认证请求消息,将安全认证请求消息发送给数据转发模块发送;AS向UN回复认证成功时,UN消息收发模块从数据转发模块接收安全认证回复消息,并将安全认证回复消息解析为认证回复消息和AS回复签名,将AS回复签名发送给认证服务器签名验证模块。当与PKG的私钥生成模块通过安全途径相连时,向PKG的私钥生成模块发送UN身份信息、生成UN私钥的请求,并从PKG的私钥生成模块接收UN私钥、系统参数。
认证服务器签名验证模块与用户签名生成模块、UN消息收发模块相连。AS向UN发起认证请求时,认证服务器签名验证模块从UN消息收发模块接收预认证消息和AS签名,对AS签名验证生成验签结果,并将验签结果发送给用户签名生成模块;
用户签名生成模块与认证服务器签名验证模块、UN消息收发模块相连。用户签名生成模块从认证服务器签名验证模块接收验签结果,生成请求认证消息和UN签名,将请求认证消息和UN签名发送给UN消息收发模块。
第二步,PKG根据系统管理员输入的安全参数生成身份基密码学参数,包括系统参数和系统主密钥,方法是:
2.1PKG从键盘获得系统管理员输入的安全参数k,k为正整数;
2.2身份基密码学参数初始化模块使用BDH(Bilinear Diffie-Hellman译为双线性对的迪菲-赫尔曼问题,Diffie、Hellman为人名)参数生成方法(参见丹.鲍恩.基于weil对的身份基加密[J].siam计算期刊,2001,32(3):213-229,第8页,第15行-第24行,BDHParameter Generator.英文文献索引为Boneh D,Franklin M.Identity basedencryption from the Weil pairing[J].Siam Journal on Computing,2001,32(3):213-229)产生安全级别为k位(k越大安全等级越高)的身份基密码学参数,包括生成元为P、阶为q的加法循环群G1,阶为q的乘法循环群G2(G1、G2为椭圆曲线上的点组成的集合,G1和G2中的元素是椭圆曲线上的点),P∈G1、
2.3身份基密码学参数初始化模块计算系统公钥Ppub,Ppub=s·P,其中“·”表示G1中元素P的标量乘法运算(标量乘法运算,参见现代数学基础丛书《椭圆曲线公钥密码导引》,祝跃飞,张亚娟,第七章7.2节第220页算法7.6),与普通非循环整数域乘法完全不同,知道系数和原始点,可用标量乘法计算出新的点,知道新的点和原始点,无法逆运算出系数。在公式Ppub=s·P中,s是系数,P是生成元即原始点,Ppub为新的点。(标量乘法运算本质是循环加法群G1的s个P的加法运算,P都是相同的,例如整数加法域中4*6是指4个6相加,4y是指4个y相加。)
2.4身份基密码学参数初始化模块把九元组
2.5身份基密码学参数初始化模块将系统主密钥s和系统参数params发送给私钥生成模块。
第三步,PKG使用身份信息、系统参数及系统主密钥s生成私钥,完成私钥的分发,方法是:
3.1UN与AS分别通过安全途径(如线下面对面交接)建立安全连接。
3.2UN与AS向PKG的私钥生成模块发送生成私钥的请求。
3.3UN与AS向PKG的私钥生成模块发送UN身份信息和AS身份信息。
3.4PKG的私钥生成模块使用身份信息、系统参数params及系统主密钥s生成私钥,方法是:
3.4.1私钥生成模块计算UN的私钥dUN,dUN=(s+H1(IDUN))-1·P,IDUN为UN的身份信息,H1(IDUN)指IDUN的哈希值,将任意长度二进制字符串IDUN映射为正整数集合
3.4.2私钥生成模块计算AS的私钥dAS,dAS=(s+H1(IDAS))-1·P。
3.5私钥生成模块通过安全途径(如线下面对面交接)分别向UN和AS发送私钥与系统参数。
3.6AS从PKG的私钥生成模块接收私钥dAS和系统参数,断开与PKG的安全连接,秘密保存私钥dAS,将系统参数用于后续认证;UN从PKG的私钥生成模块接收私钥dUN和系统参数,断开与PKG的安全连接,秘密保存私钥dUN,将系统参数用于后续认证。
第四步到第六步,AS与UN进行安全互认证,具体方法为:
第四步,AS通过广播周期性的向UN发起预认证请求,具体步骤是:
4.1令当前周期数i=1,记AS的认证服务器签名生成模块启动时的系统时间为启动时间t0。
4.2记AS的认证服务器签名生成模块当前系统时间为t,若t-t0<ΔT,转4.2;若t-t0≥ΔT(优选值为1秒≤ΔT≤10秒),令周期数i=i+1,t0=t,认证服务器签名生成模块生成预认证消息和AS签名。方法为:
4.2.1认证服务器签名生成模块生成预认证消息m1,
预认证消息m1=IDAS||TimestampAS||SequenceAS,IDAS为AS的身份信息,TimestampAS为AS时间戳,TimestampAS由AS的当前系统时间生成,SequenceAS为AS生成的消息序列号,SequenceAS的取值为AS上一个发送出的消息中的SequenceAS+1,“||”表示将字符串连接。
4.2.2认证服务器签名生成模块生成第i个周期中对预认证消息m1的AS签名σAS(m1),方法是:
4.2.2.1认证服务器签名生成模块计算得到第i个周期的签名随机参数Ri,Ri=riP,ri为第i个周期下的随机数,
4.2.2.2认证服务器签名生成模块计算得到第i个周期中对预认证消息m1的哈希值h1,h1=H2(m1,Ri);
4.2.2.3认证服务器签名生成模块计算得到第i个周期中对预认证消息m1的AS签名参数S1,S1=(h1+ri)·dAS;
4.2.2.4认证服务器签名生成模块得到第i个周期的AS签名σAS(m1),σAS(m1)=(S1,Ri),即S1,Ri这2个元素组成的二元组称为AS签名。
4.3认证服务器签名生成模块将预认证消息m1和第i个周期的AS签名σAS(m1)发送给AS消息收发模块。
4.4AS消息收发模块接收认证服务器签名生成模块发送的预认证消息m1和AS签名σAS(m1)。
4.5AS消息收发模块构建安全预认证消息PRE_AUTHEN,PRE_AUTHEN=m1||σAS(m1),即PRE_AUTHEN=m1||S1||Ri。
4.6AS消息收发模块将安全预认证消息PRE_AUTHEN发送到CN的数据广播模块。
4.7CN的数据广播模块接收安全预认证消息PRE_AUTHEN;
4.8CN的数据广播模块向CN服务范围内的所有UN广播安全预认证消息PRE_AUTHEN。
4.9每个UN消息收发模块接收安全预认证消息PRE_AUTHEN,将PRE_AUTHEN中包含的预认证消息m1和AS签名σAS(m1)=(S1,Ri)发送到UN的认证服务器签名验证模块。
4.10UN的认证服务器签名验证模块接收预认证消息预认证消息m1和AS签名σAS(m1)=(S1,Ri);
4.11UN的认证服务器签名验证模块对AS签名σAS(m1)进行验证,方法为:
4.11.1认证服务器签名验证模块计算AS公钥PAS,PAS=Ppub+H1(IDAS)·P,其中AS身份信息IDAS为预认证消息m1中的元素,生成元P和系统公钥Ppub为系统参数中的元素;
4.11.2认证服务器签名验证模块计算预认证消息m1的哈希值的校验值h′1,h′1=H2(m1,Ri);
4.11.3认证服务器签名验证模块验证签名正确性,若
4.12UN的认证服务器签名验证模块将AS签名成功的验签结果反馈到UN的用户签名生成模块,表示UN完成对AS签名的认证,转第五步。
4.13UN的认证服务器签名验证模块将AS签名失败的验签结果反馈到UN的用户签名生成模块,表示UN验证AS签名失败,转4.2。
第五步,UN向AS发起认证请求,步骤如下:
5.1UN的用户签名生成模块从认证服务器签名验证模块接收AS签名成功的验签结果;
5.2用户签名生成模块生成请求认证消息m2和对请求认证消息m2的UN签名σUN(m2),方法是:
5.2.1用户签名生成模块生成请求认证消息m2,
请求认证消息m2=IDUN||TimestampUN||SequenceUN,即m2由UN自身身份信息IDUN、UN当前时间戳TimestampUN和UN生成的消息序列号SequenceUN组成,TimestampUN由UN当前系统时间生成,SequenceUN的取值为UN上一个发送出的消息中的SequenceAS+1;
5.2.2用户签名生成模块计算得到随机参数x∈G2,
5.2.3用户签名生成模块计算得到请求认证消息m2的哈希值h2,h2=H3(m2,x);
5.2.4用户签名生成模块计算得到UN签名参数S2,S2=(k-h2)·dUN;
5.2.5用户签名生成模块计算得到UN签名σUN(m2),σUN(m2)=(S2,h2),即S2,h2这2个元素组成的二元组称为UN签名。
5.3用户签名生成模块将请求认证消息m2和UN签名σUN(m2)发送给UN消息收发模块;
5.4UN消息收发模块接收请求认证消息m2和UN签名σUN(m2);
5.5UN消息收发模块构建安全认证请求消息SOLICITATION,
SOLICITATION=m2||σUN(m2),即SOLICITATION=m2||S2||h2;
5.6UN消息收发模块将安全认证请求消息SOLICITATION发送到CN的数据转发模块;
5.7CN的数据转发模块从UN消息收发模块接收安全认证请求消息SOLICITATION;
5.8CN的数据转发模块向AS数据收发模块发送安全认证请求消息SOLICITATION;
5.9AS消息收发模块接收CN数据转发模块转发的安全认证请求消息SOLICITATION;
5.10AS消息收发模块将安全认证请求消息SOLICITATION中包含的请求认证消息m2和UN签名σUN(m2)=(S2,h2)发送到AS的用户签名验证模块。
5.11AS的用户签名验证模块接收请求认证消息m2和UN签名σUN(m2)。
5.12AS的用户签名验证模块对UN签名σUN(m2)进行验证,方法为:
5.12.1用户签名验证模块计算得到变量p∈G2,
5.12.2用户签名验证模块计算得到UN公钥PUN,PUN=Ppub+H1(IDUN)·P;
5.12.3用户签名验证模块计算得到随机参数校验值,
5.12.4用户签名验证模块验证签名正确性,若h2=H3(m2,x′)成立,说明验证成功,生成UN签名成功的验签结果,转步骤5.13;若不成立则说明验证失败,生成UN签名失败的验签结果,转步骤5.14。
UN签名正确性证明如下:
5.13AS用户签名验证模块将UN签名成功的验签结果反馈到AS的认证服务器签名生成模块,表示AS完成对UN的认证,转第六步。
5.14AS用户签名验证模块将UN签名失败的验签结果反馈到AS的认证服务器签名生成模块,表示AS验证UN签名失败,结束本次认证过程,转4.2。
第六步,AS向UN回复认证结果,具体步骤是:
6.1AS的认证服务器签名生成模块从用户签名验证模块接收UN签名成功的验签结果;
6.2AS的认证服务器签名生成模块生成认证回复消息m3和AS对认证回复消息m3的签名σAS(m3)=(S3,Ri),方法是:
6.2.1认证服务器签名生成模块生成认证回复消息m3,m3由AS自身身份信息IDAS、AS当前时间戳TimestampAS、AS生成的消息序列号SequenceAS和AS生成的接入配置信息Configuration组成,即:
m3=IDAS||TimestampAS||SequenceAS||Configuration,
其中接入配置信息Configuration由认证服务器签名生成模块从AS服务器的接入配置协议中的配置文件读取,与具体系统所使用的互联网通信方式(如Wifi、蓝牙、5G等)相关。
6.2.2认证服务器签名生成模块计算得到第i周期中对认证回复消息m3的哈希值h3,h3=H2(m3,Ri);
6.2.3认证服务器签名生成模块计算得到第i周期中对认证回复消息m3的AS签名参数S3=(h3+ri)·dAS;
6.2.4认证服务器签名生成模块计算得到第i周期中对认证回复消息m3的AS回复签名σAS(m3),σAS(m3)=(S3,Ri);
6.3认证服务器签名生成模块将认证回复消息m3和对认证回复消息m3的AS回复签名σAS(m3)=(S3,Ri)中的签名参数S3发送到AS消息收发模块。
6.4AS消息收发模块从认证服务器签名生成模块接收到认证回复消息m3和签名参数S3,构建安全认证回复消息REPLY,REPLY=m3||S3;
6.5AS消息收发模块将安全认证回复消息REPLY发送到CN的数据转发模块。
6.6CN的数据转发模块从AS消息收发模块接收REPLY;
6.7CN的数据转发模块向安全认证请求消息SOLICITATION中的IDUN所指的UN数据收发模块转发REPLY;
6.8UN消息收发模块从CN的数据转发模块接收安全认证回复消息REPLY;
6.9UN消息收发模块将REPLY中包含的认证回复消息m3和签名参数S3发送到UN的认证服务器签名验证模块。
6.10UN的认证服务器签名验证模块接收认证回复消息m3和AS回复签名参数S3。
6.11认证服务器签名验证模块验证对AS的签名进行验证,方法是:
6.11.1UN的认证服务器签名验证模块计算得到AS公钥PAS,PAS=Ppub+H1(IDAS)·P,其中AS身份信息IDAS为认证回复消息m3中的元素,生成元P和系统公钥Ppub为系统参数中的元素;
6.11.2认证服务器签名验证模块计算认证回复消息m3的哈希值的校验值h′3,h′3=H2(m3,Ri);
6.11.3认证服务器签名验证模块验证对AS的签名进行验证,若
AS签名正确性证明如下:
其中的S包括第四步的S1和第六步中的S3,h包括第四步的h1和第六步中的h3。
6.12UN的认证服务器签名验证模块将AS签名成功的验签结果发送给用户签名生成模块,表示UN接受AS的安全认证回复消息;
6.13UN的认证服务器签名验证模块按照认证回复消息m3中的Configuration参数进行接入配置,完成与AS的互认证及安全接入。安全互认证结束,转4.2。
6.14UN的认证服务器签名验证模块将AS签名失败的验签结果发送给用户签名生成模块,表示UN验证AS签名失败,结束本次认证过程,转4.2。
采用本发明可以达到以下技术效果:
1.本发明第一步结构建合广播优势的身份基安全互认证系统;第二步中PKG完成身份基密码学参数初始化;第三步中PKG为UN和AS生成私钥;第四步中AS周期性生成并广播预认证消息和签名,UN接收处理AS的预认证消息和签名,完成UN对AS的认证;第五步中UN生成并发送UN的认证请求消息和签名,AS接收处理UN的认证请求消息和签名,完成AS对UN的认证;第六步中AS生成并发送认证回复消息和签名,UN接收处理AS的认证回复消息和签名,结合第四步中的信息完成UN对AS的认证和安全接入。上述步骤完成了UN与AS的互认证及UN的安全接入,认证了合法用户身份,有效保证互联网节点通信接入的安全性。
2.本发明与传统的基于公钥基础设施的互联网安全认证方案相比,不需要考虑复杂的证书管理问题,适用于海量互联网节点场景下的部署。
3.本发明与传统的身份基安全认证方法相比,用户签名验证时间有效减小;结合广播预认证机制,实际单播传输的认证服务器签名大小可大大减小。因为CN节点的广播资源充裕,单播资源有限,主要考虑的是单播资源的开销。第四步中的认证服务器签名是通过广播传输的,因此视为结合广播优势;第六步中的认证服务器签名中的Ri已在第四步中通过广播传输,仅需通过单播传输S3,因此视为结合广播优势。单播传输开销得到大大减小。
本发明可解决互联网设备安全认证时的计算开销、时间开销、存储开销大等问题,有效提高互联网节点安全认证的高效性。
附图说明
图1为本发明总体流程图;
图2为本发明第一步构建的结合广播优势的身份基安全互认证系统逻辑结构图;
具体实施方式
图1为本发明的总体流程图,其中第一步到第三步进行认证系统初始化,第四步到第六步进行用户接入安全互认证,具体步骤如下:
第一步,构建结合广播优势的身份基安全互认证系统。如图2所示,结合广播优势的身份基安全互认证系统由多个待认证用户节点UN、认证服务器AS、安全核心节点CN、私钥生成中心PKG组成。
PKG安装有身份基密码学参数初始化模块和私钥生成模块。AS安装有认证服务器签名生成模块、用户签名验证模块、AS消息收发模块,AS的身份信息为ID_AS。CN安装有数据广播模块和数据转发模块。UN安装有用户签名生成模块、认证服务器签名验证模块、UN消息收发模块,UN的身份信息为IDUN。
PKG的身份基密码学参数初始化模块与和PKG的私钥生成模块相连,身份基密码学参数初始化模块接收系统管理员指定的安全参数,根据安全参数产生身份基密码学参数,包括系统参数和系统主密钥,身份基密码学参数初始化模块将系统主密钥加密存储,同时将系统主密钥和系统参数发送给私钥生成模块。
私钥生成模块与UN、AS和PKG的身份基密码学参数初始化模块相连,私钥生成模块分别从UN、AS接收生成私钥的请求和身份信息,从身份基密码学参数初始化模块接收系统主密钥和系统参数,私钥生成模块根据身份信息、系统主密钥和系统参数生成私钥,将私钥和系统参数分别发送给UN、AS。
认证服务器签名生成模块与用户签名验证模块、AS消息收发模块相连,AS向UN发起认证请求时,认证服务器签名生成模块生成预认证消息,根据AS的私钥生成对预认证消息的AS签名,并将预认证消息和AS签名发送给AS消息收发模块;AS向UN回复认证成功时,认证服务器签名生成模块从用户签名验证模块接收验签结果,生成认证回复消息,并根据AS的私钥生成对认证回复消息的AS签名,并将认证回复消息和AS签名发送给AS消息收发模块。
用户签名验证模块与认证服务器签名生成模块、AS消息收发模块相连,用户签名验证模块从AS消息收发模块接收请求认证消息和UN签名,对UN签名进行验证,将验签结果向认证服务器签名生成模块反馈。
AS消息收发模块与认证服务器签名生成模块、用户签名验证模块、CN的数据广播模块和数据转发模块、通过安全途径与PKG的私钥生成模块相连。AS向UN发起认证请求时,AS消息收发模块从认证服务器签名生成模块接收预认证消息和AS签名,将预认证消息和AS签名组成安全预认证消息,向数据广播模块发送安全预认证消息;UN向AS发起认证请求时,AS消息收发模块从数据转发模块接收安全认证请求消息,将安全认证请求消息解析为请求认证消息和UN签名,并将请求认证消息和UN签名发送到用户签名验证模块;AS向UN回复认证成功时,AS消息收发模块从认证服务器签名生成模块接收认证回复消息和AS回复签名,将认证回复消息和AS回复签名组成安全认证回复消息,并将安全认证回复消息发送给数据转发模块发送。当与PKG的私钥生成模块通过安全途径相连时,向PKG的私钥生成模块发送AS身份信息、生成AS私钥的请求,并从PKG的私钥生成模块接收AS私钥、系统参数。
数据广播模块与AS消息收发模块、UN消息收发模块相连,数据广播模块从AS消息收发模块收到安全预认证消息,并将安全预认证消息广播发送到所有UN的UN消息收发模块。
数据转发模块与AS消息收发模块、UN消息收发模块相连。数据转发模块从UN消息收发模块接收安全认证请求消息,将安全认证请求消息发送到AS消息收发模块;数据转发模块还从AS消息收发模块接收安全认证回复消息,将安全认证回复消息发送到UN消息收发模块。
UN消息收发模块与用户签名生成模块、认证服务器签名验证模块、CN的数据广播模块和数据转发模块、通过安全途径与PKG的私钥生成模块相连。AS向UN发起认证请求时,UN消息收发模块从数据广播模块接收安全预认证消息,将安全预认证消息解析为预认证消息和AS签名,并将预认证消息和AS签名发送到认证服务器签名验证模块;UN向AS发起认证请求时,UN消息收发模块从用户签名生成模块接收请求认证消息和UN签名,将请求认证消息和UN签名组合成安全认证请求消息,将安全认证请求消息发送给数据转发模块发送;AS向UN回复认证成功时,UN消息收发模块从数据转发模块接收安全认证回复消息,并将安全认证回复消息解析为认证回复消息和AS回复签名,将AS回复签名发送给认证服务器签名验证模块。当与PKG的私钥生成模块通过安全途径相连时,向PKG的私钥生成模块发送UN身份信息、生成UN私钥的请求,并从PKG的私钥生成模块接收UN私钥、系统参数。
认证服务器签名验证模块与用户签名生成模块、UN消息收发模块相连。AS向UN发起认证请求时,认证服务器签名验证模块从UN消息收发模块接收预认证消息和AS签名,对AS签名验证生成验签结果,并将验签结果发送给用户签名生成模块;
用户签名生成模块与认证服务器签名验证模块、UN消息收发模块相连。用户签名生成模块从认证服务器签名验证模块接收验签结果,生成请求认证消息和UN签名,将请求认证消息和UN签名发送给UN消息收发模块发送。
第二步,PKG进行身份基密码学参数初始化。PKG根据系统管理员输入的安全参数生成身份基密码学参数,包括系统参数和系统主密钥,方法是:
2.1PKG从键盘获得系统管理员输入的安全参数k,k为正整数;
2.2身份基密码学参数初始化模块使用BDH参数生成方法产生安全级别为k位的身份基密码学参数,包括生成元为P∈G1、阶为
2.3身份基密码学参数初始化模块计算系统公钥Ppub,Ppub=s·P,其中“·”表示G1中元素P的标量乘法运算,与普通非循环整数域乘法完全不同,知道系数和原始点,可用标量乘法计算出新的点,知道新的点和原始点,无法逆运算出系数。在公式Ppub=s·P中,s是系数,P是生成元即原始点,Ppub为新的点。
2.4身份基密码学参数初始化模块把九元组
2.5身份基密码学参数初始化模块将系统主密钥s和系统参数params发送给私钥生成模块。
第三步,PKG使用身份信息、系统参数及系统主密钥s生成私钥,完成私钥的分发,方法是:
3.1UN与AS分别通过安全途径建立安全连接。
3.2UN与AS向PKG的私钥生成模块发送生成私钥的请求。
3.3UN与AS向PKG的私钥生成模块发送UN身份信息和AS身份信息。
3.4PKG的私钥生成模块使用身份信息、系统参数params及系统主密钥s生成私钥,方法是:
3.4.1私钥生成模块计算UN的私钥dUN,dUN=(s+H1(IDUN))-1·P,IDUN为UN的身份信息,H1(IDUN)指IDUN的哈希值,将任意长度二进制字符串IDUN映射为正整数集合
3.4.2私钥生成模块计算AS的私钥dAS,dAS=(s+H1(IDAS))-1·P。
3.5私钥生成模块通过安全途径(如线下面对面交接)分别向UN和AS发送私钥与系统参数。
3.6AS从PKG的私钥生成模块接收私钥dAS和系统参数,断开与PKG的安全连接,秘密保存私钥dAS,将系统参数用于后续认证;UN从PKG的私钥生成模块接收私钥dUN和系统参数,断开与PKG的安全连接,秘密保存私钥dUN,将系统参数用于后续认证。
第四步到第六步,AS与UN进行安全互认证,具体方法为:
第四步,AS通过广播周期性的向UN发起预认证请求,具体步骤是:
4.1令当前周期数i=1,记AS的认证服务器签名生成模块启动时的系统时间为启动时间t0。
4.2记AS的认证服务器签名生成模块当前系统时间为t,若t-t0<ΔT,转4.2;若t-t0=ΔT(优选值为1秒≤ΔT≤10秒),令周期数i=i+1,t0=t,认证服务器签名生成模块生成预认证消息和AS签名。方法为:
4.2.1认证服务器签名生成模块生成预认证消息m1,
预认证消息m1=IDAS||TimestampAS||SequenceAS,IDAS为AS的身份信息,TimestampAS为AS时间戳,TimestampAS由AS的当前系统时间生成,SequenceAS为AS生成的消息序列号,SequenceAS的取值为AS上一个发送出的消息中的SequenceAS+1,“||”表示将字符串连接。
4.2.2认证服务器签名生成模块生成第i个周期中对预认证消息m1的AS签名σAS(m1),方法是:
4.2.2.1认证服务器签名生成模块计算得到第i个周期的签名随机参数Ri,Ri=riP,ri为第i个周期下的随机数,
4.2.2.2认证服务器签名生成模块计算得到第i个周期中对预认证消息m1的哈希值h1,h1=H2(m1,Ri);
4.2.2.3认证服务器签名生成模块计算得到第i个周期中对预认证消息m1的AS签名参数S1,S1=(h1+ri)·dAS;
4.2.2.4认证服务器签名生成模块得到第i个周期的AS签名σAS(m1),σAS(m1)=(S1,Ri),即S1,Ri这2个元素组成的二元组称为AS签名。
4.3认证服务器签名生成模块将预认证消息m1和第i个周期的AS签名σAS(m1)发送给AS消息收发模块。
4.4AS消息收发模块接收认证服务器签名生成模块发送的预认证消息m1和AS签名σAS(m1)。
4.5AS消息收发模块构建安全预认证消息PRE_AUTHEN,PRE_AUTHEN=m1||σAS(m1),即PRE_AUTHEN=m1||S1||Ri。
4.6AS消息收发模块将安全预认证消息PRE_AUTHEN发送到CN的数据广播模块。
4.7CN的数据广播模块接收安全预认证消息PRE_AUTHEN;
4.8CN的数据广播模块向CN服务范围内的所有UN广播安全预认证消息PRE_AUTHEN。
4.9每个UN消息收发模块接收安全预认证消息PRE_AUTHEN,将PRE_AUTHEN中包含的预认证消息m1和AS签名σAS(m1)=(S1,Ri)发送到UN的认证服务器签名验证模块。
4.10UN的认证服务器签名验证模块接收预认证消息预认证消息m1和AS签名σAS(m1)=(S1,Ri);
4.11UN的认证服务器签名验证模块对AS签名σAS(m1)进行验证,方法为:
4.11.1认证服务器签名验证模块计算AS公钥PAS,PAS=Ppub+H1(IDAS)·P,其中AS身份信息IDAS为预认证消息m1中的元素,生成元P和系统公钥Ppub为系统参数中的元素;
4.11.2认证服务器签名验证模块计算预认证消息m1的哈希值的校验值h′1,h′1=H2(m1,Ri);
4.11.3认证服务器签名验证模块验证签名正确性,若
4.12UN的认证服务器签名验证模块将AS签名成功的验签结果反馈到UN的用户签名生成模块,表示UN完成对AS签名的认证,转第五步。
4.13UN的认证服务器签名验证模块将AS签名失败的验签结果反馈到UN的用户签名生成模块,表示UN验证AS签名失败,转4.2。
第五步,UN向AS发起认证请求,步骤如下:
5.1UN的用户签名生成模块从认证服务器签名验证模块接收AS签名成功的验签结果;
5.2用户签名生成模块生成请求认证消息m2和对请求认证消息m2的UN签名σUN(m2),方法是:
5.2.1用户签名生成模块生成请求认证消息m2,
请求认证消息m2=IDUN||TimestampUN||SequenceUN,即m2由UN自身身份信息IDUN、UN当前时间戳TimestampUN和UN生成的消息序列号SequenceUN组成,TimestampUN由UN当前系统时间生成,SequenceUN的取值为UN上一个发送出的消息中的SequenceAS+1;
5.2.2用户签名生成模块计算得到随机参数x∈G2,
5.2.3用户签名生成模块计算得到请求认证消息m2的哈希值h2,h2=H3(m2,x);
5.2.4用户签名生成模块计算得到UN签名参数S2,S2=(k-h2)·dUN;
5.2.5用户签名生成模块计算得到UN签名σUN(m2),σUN(m2)=(S2,h2),即S2,h2这2个元素组成的二元组称为UN签名。
5.3用户签名生成模块将请求认证消息m2和UN签名σUN(m2)发送给UN消息收发模块;
5.4UN消息收发模块接收请求认证消息m2和UN签名σUN(m2);
5.5UN消息收发模块构建安全认证请求消息SOLICITATION,
SOLICITATION=m2||σUN(m2),即SOLICITATION=m2||S2||h2;
5.6UN消息收发模块将安全认证请求消息SOLICITATION发送到CN的数据转发模块;
5.7CN的数据转发模块从UN消息收发模块接收安全认证请求消息SOLICITATION;
5.8CN的数据转发模块向AS数据收发模块发送安全认证请求消息SOLICITATION;
5.9AS消息收发模块接收CN数据转发模块转发的安全认证请求消息SOLICITATION;
5.10AS消息收发模块将安全认证请求消息SOLICITATION中包含的请求认证消息m2和UN签名σUN(m2)=(S2,h2)发送到AS的用户签名验证模块。
5.11AS的用户签名验证模块接收请求认证消息m2和UN签名σUN(m2)。
5.12AS的用户签名验证模块对UN签名σUN(m2)进行验证,生成UN签名成功的验签结果或UN签名失败的验签结果,方法为:
5.12.1用户签名验证模块计算得到变量p∈G2,
5.12.2用户签名验证模块计算得到UN公钥PUN,PUN=Ppub+H1(IDUN)·P;
5.12.3用户签名验证模块计算得到随机参数校验值,
5.12.4用户签名验证模块验证签名正确性,若h2=H3(m2,x′)成立,则生成UN签名成功的验签结果,转步骤5.13;若不成立则生成UN签名失败的验签结果,转步骤5.14。
5.13AS用户签名验证模块将UN签名成功的验签结果反馈到AS的认证服务器签名生成模块,表示AS完成对UN的认证,转第六步。
5.14AS用户签名验证模块将UN签名失败的验签结果反馈到AS的认证服务器签名生成模块,表示AS验证UN签名失败,结束本次认证过程,转4.2。
第六步,AS向UN回复认证结果,具体步骤是:
6.1AS的认证服务器签名生成模块从用户签名验证模块接收UN签名成功的验签结果;
6.2AS的认证服务器签名生成模块生成认证回复消息m3和AS对认证回复消息m3的签名σAS(m3)=(S3,Ri),方法是:
6.2.1认证服务器签名生成模块生成认证回复消息m3,m3由AS自身身份信息IDAS、AS当前时间戳TimestampAS、AS生成的消息序列号SequenceAS和AS生成的接入配置信息Configuration组成,即:
m3=IDAS||TimestampAS||SequenceAS||Configuration,
其中接入配置信息Configuration由认证服务器签名生成模块从AS服务器内的接入配置协议中的配置文件中读取。
6.2.2认证服务器签名生成模块计算得到第i周期中对认证回复消息m3的哈希值h3,h3=H2(m3,Ri);
6.2.3认证服务器签名生成模块计算得到第i周期中对认证回复消息m3的AS签名参数S3=(h3+ri)·dAS;
6.2.4认证服务器签名生成模块计算得到第i周期中对认证回复消息m3的AS回复签名σAS(m3),σAS(m3)=(S3,Ri);
6.3认证服务器签名生成模块将认证回复消息m3和对认证回复消息m3的AS回复签名σAS(m3)=(S3,Ri)中的签名参数S3发送到AS消息收发模块。
6.4AS消息收发模块从认证服务器签名生成模块接收到认证回复消息m3和签名参数S3,构建安全认证回复消息REPLY,REPLY=m3||S3;
6.5AS消息收发模块将安全认证回复消息REPLY发送到CN的数据转发模块。
6.6CN的数据转发模块从AS消息收发模块接收REPLY;
6.7CN的数据转发模块向安全认证请求消息SOLICITATION中的IDUN所指的UN数据收发模块转发REPLY;
6.8UN消息收发模块从CN的数据转发模块接收安全认证回复消息REPLY;
6.9UN消息收发模块将REPLY中包含的认证回复消息m3和签名参数S3发送到UN的认证服务器签名验证模块。
6.10UN的认证服务器签名验证模块接收认证回复消息m3和AS回复签名参数S3。
6.11认证服务器签名验证模块验证对AS的签名进行验证,方法是:
6.11.1UN的认证服务器签名验证模块计算得到AS公钥PAS,PAS=Ppub+H1(IDAS)·P,其中AS身份信息IDAS为认证回复消息m3中的元素,生成元P和系统公钥Ppub为系统参数中的元素;
6.11.2认证服务器签名验证模块计算认证回复消息m3的哈希值的校验值h′3,h′3=H2(m3,Ri);
6.11.3认证服务器签名验证模块验证对AS的签名进行验证,若
6.12UN的认证服务器签名验证模块将AS签名成功的验签结果发送给用户签名生成模块,表示UN接受AS的安全认证回复消息;
6.13UN的认证服务器签名验证模块按照认证回复消息m3中的Configuration参数进行接入配置,完成与AS的互认证及安全接入。安全互认证结束,转4.2。
6.14UN的认证服务器签名验证模块将AS签名失败的验签结果发送给用户签名生成模块,表示UN验证AS签名失败,结束本次认证过程,转4.2。
机译: 跟踪和验证产品身份,来源和认证的安全互确认方法和系统
机译: 使用隐形安全属性进行身份认证的系统,插入智能卡的隐形安全属性以及使用隐形安全属性进行身份认证的方法
机译: 使用隐形安全属性进行身份认证的系统,智能卡插入的可读墨水以及使用隐形安全属性进行身份认证的方法