一种面向智能家居的用户可监管匿名身份认证方法与流程

文档序号:22804549发布日期:2020-11-04 04:07阅读:394来源:国知局
一种面向智能家居的用户可监管匿名身份认证方法与流程

本发明涉及匿名认证技术领域,具体涉及一种面向智能家居的用户可监管匿名身份认证方法。



背景技术:

随着机器学习、人工智能技术的飞速发展,具备自治和保姆式服务的智能家居网正变得越来越普及。智能家居设备不仅可以感知家庭环境,而且可以自主的为家庭用户做出各种行为,如访问外网进行购买、订阅、请求帮助、能源分享等等,使得用户可以轻松享受生活。

在这种场景下,虽然已经有一些匿名身份认证技术被提出;但是,所提出的协议不能满足用户对智能设备代表用户执行的各种网络行为进行随时监管的需求。因此,本发明提出了智能家居网内智能设备代表用户访问外网服务场景下的、用户可监管的匿名认证方法,使得智能家居访问应用服务时的匿名性的同时允许用户监管。



技术实现要素:

本发明主要针对先存在的匿名身份认证技术的不足,提供的一种一种面向智能家居的用户可监管匿名身份认证方法。本发明包括ifttt服务器、用户、智能设备、应用服务器和区块链组件,各个组件交互步骤如下:

(1)系统初始化;ifttt服务器、用户和区块链分别初始化,生成系统所需参数;

(2)用户和应用服务器分别向ifttt服务器注册;获取各自的is-认证密钥用以证明自己的真实性和合法性;

(3)智能设备向用户注册;智能设备在进行外网访问前,需要向用户进行注册,以获得用户的is-认证密钥以及用户的身份id;而用户端通过管理授权智能设备的id和对应的公钥实现后续监管;

(4)智能设备代表用户访问应用服务器实现匿名双向认证;智能设备生成可供用户监管的公钥,并使用用户的is-认证密钥和身份id,向应用服务器发起认证请求,实现匿名的双向认证;

(5)认证结果上链;双向认证完毕后,应用服务器向区块链写入认证结果,将本次认证的智能设备的公钥和对所认证公钥的签名等信息以区块链业务交易的形式存储到区块链中;

(6)用户监管智能设备;用户通过自己的私钥sku解密属于自己智能设备产生的一次性公钥,然后利用自己的is-认证密钥解密出该智能设备和应用服务器通信的会话密钥从而实现完全监管。

进一步的,步骤(1)所述的初始化,具体如下:

ifttt服务器初始化:为应用服务器和用户提供可信is-认证密钥准备好参数;用户初始化:为内部的智能设备安全通信准备好参数;区块链初始化:基于双线性映射加密方案的参数,为所有用户和智能设备的监管准备好参数;具体实现如下:

1-1.用户u单独为家居网内智能设备初始化参数和公私钥对:

用户u首先选择一个大素数pu,并在有限域下选择一条椭圆曲线接着,用户u选择一个阶为nu的椭圆曲线上的一个基点pu,以及一个随机数xu,计算qu=xu·pu;然后,用户u秘密保存自己的私钥sku=xu;当智能设备注册时,用户将其公钥pku=qu和参数{epu(au,bu),pu,pu}发给智能设备;

1-2.区块链平台为所有的用户初始化系统公共参数

区块链平台为所有用户选定一个双线性群生成元并令p1=ψ(p2),同时选择函数形成公共参数:

其中p为群的阶,为双线性映射函数——weil配对算法;明文空间密文空间当智能设备注册时,用户将其从区块链平台获得的公共参数pp发给智能设备。

进一步的,步骤(2)和步骤(3)所述的注册其具体实现如下:

2-1.用户ui通过ifttt网关hgig向ifttt服务器is注册并获取is-认证密钥注册完成后,is并不存储认证密钥及任何用户相关信息;ifttt网关hgig备份存储信息,用以预防用户的智能手机丢失后的恢复;用户ui则存储其中eidi为用户注册时预留的恢复用的扩展信息生成的伪名,user_secret是存储认证相关的随机数对,vl是为了实现本地用户密码验证的校验值;

所述的智能手机是指控制智能设备的客户端;

2-2.应用服务器sj向ifttt服务器is注册并获取is-认证密钥注册完成后,应用服务器sj存储其中noncej=(r1j,r2j)是注册时产生的随机数对,即r1j和r2j均为随机数,sidj为对用户公开的身份;而ifttt服务器is并不存储仅仅存储sj的伪名及相关信息{rsidj,mr2j},其中同时将应用服务器的公钥和私钥r2j分别用pkas和skas表示;

2-3.智能设备sdt向用户u注册:

sdt生成公私钥对:sdt根据自己的身份标识tid∈{0,1}*生成接着生成随机数生成私钥:秘密保存,并计算形成sdt的公钥信息pk:

sdt向用户u注册:

①智能设备发起请求,从用户u处获得公钥pku,参数以及公共参数pp;

②sdt使用用户的u的公钥pku执行基于椭圆曲线的加密消息并发送给用户u;

③用户u收到rm1后,利用自己的私钥进行解密获得用户根据智能设备的tid,重新计算其h1运算的结果与比对是否一致,来验证该智能设备是否属于自己的智能设备;如果一致,用户u首先保存好sdt的公钥信息pk;并生成随机数μ1,μ2∈{0,1}*,将要传输的is-认证密钥以及用户的身份ridi,做如下计算:

r2=h3(ridi||μ2)

回送{rm2,rm3}给智能设备sdt,为方便后面描述简记rm2和rm3如下:rm2={rm2l,rm2r},rm3={rm3l,rm3r};

④sdt收到后,使用私钥以及rm2,计算出接着,取出rm2的rm2r,进行如下操作,计算出和μ′1:

因为,

接着,sdt使用然后再计算r′1p1是否等于rm2l(即r1p1),如果相等,则保存否则终止;

sdt用上面第③④步相同的计算,从rm3中取出ridi并存储:

使用私钥以及rm3,计算出接着,取出rm3的rm3r,进行如下操作,计算出rid′j和μ′2:

因为,

接着,sdt使用h3(rid′i||μ′2)=r′2,然后再计算r′2p1是否等于rm3l(即r2p1),如果相等,则保存ridi,否则终止;

至此,智能设备存储自己的公钥信息pk,秘密保存存储

进一步的,步骤(4)所述的匿名双向认证,智能设备sdt代表用户u向应用服务器as访问时,每一次应用业务访问均生成一次性伪公钥(fpk):

3-1智能设备sdt生成一次性伪公钥fpk向服务器as发起认证请求:

sdt首先获取应用服务器的身份sidj及相应的公钥pkas,并随机生成k以及点qt=(x,y),进行如下计算:接着,sdt生成随机数ppub=t·p1,生成一次性伪公钥

其中,因为:并生成伪公钥对应的私钥:fsk=t·fpk,存储于本地用于完成后续的交互所需;

再者,计算mm2=pxor(m2,qt),mfpk=pxor(fpk,qt),mppub=pxor(ppub,qt),vu=h(m1||sidj||fpk||ppub||t1),v=h(mm2,m3,mfpk,mppub,vu,t1);

所述的pxor操作,具体如下:

定义1:pxor(a,b);表示点a和点b的横纵坐标分别做异或操作,即

定义2:pxor(a,b);表示数a和点b的横纵坐标都做异或操作,即

最后,sdt发送{mm2,m3,mfpk,mppub,vu,t1,v}给应用服务器;需要说明的是当一次业务需要多次不同时间登录进行操作时,需要多次认证的话,qt是每次登录认证时随机生成的,其他的对应一次业务不变;

3-2.应用服务器as认证智能设备sdt

应用服务器收到后,首先检查tnow-t1≤δt是否符合?其中tnow指as收到信息的时刻,t1指sdt发送信息的时刻,δt指系统设置的阈值;如果上述表达式结果符合条件,则计算h(mm2,m3,mfpk,mppub,vu,t1)并验证是否与收到v一致?若不一致,则终止认证;否则应用服务器首先用自己的私钥skas从m3中解密出计算fpk*=pxor(mfpk,qt*),以及验证如果相等,应用服务器认为该sdt代表的用户为合法用户;接着,应用服务器计算hqt*=(h(x*),h(y*)),最后将{m4,t2,h(m4,t2)}返回给智能设备sdt;

3-3智能设备sdt认证应用服务器as并确认会话密钥

sdt收到后,检查t′now-t2≤δt是否符合,其中t′now指sdt收到信息的时刻,f2指as发送信息的时刻,δt指系统设置的阈值,若不符合终止认证,否则计算hqt′=pxor(m4,m1)=(x′,y′),同时计算hqt=(h(x),h(y)),并判断hqt′=hqt是否成立?如果成立则说明该应用服务器为ifttt服务器认证的合法应用服务器,同时将h(m1)作为本次通话的会话密钥;

接着,sdt随机生成r,计算出因为同时,计算m5=pxor(hqt,qt),m6=pxor(r,qt),msignfsk(fpk)=pxor(signfsk(fpk),qt),v=h(m5,m6,msignfsk(fpk),t3);

最后,向应用服务器回送{m5,m6,msignfsk(fpk),t3,v};

3-4应用服务器as确认会话密钥

应用服务器收到后,检查t″now-t3≤δt是否符合,其中t″now指as收到信息的时刻,t3指sdt发送信息的时刻,δt指系统设置的阈值;如果上述表达式结果符合条件,接着验证h(m5,m6,msignfsk(fpk),t3)是否与v符合,若不符合终止认证,否则计算pxor(hqt*,qt*)是否与m5相等?如果相等则说明智能设备sdt已经认证完毕并已确定了本次会话密钥同时认为qt*=qt,然后计算r=pxor(m6,qt*),signfsk(fpk)=pxor(msignfsk(fpk),qt*),执行上链操作,详见权力要求5;上链操作完毕,应用服务器也将作为本次通话的会话密钥,后续的业务流程将使用该密钥完成。

进一步的,认证结果上链保存特征实现如下:

认证结束时,应用服务器将身份认证结果写入到区块链中;区块链的交易是以应用服务器的公钥作为地址发出的交易,除了含有应用服务器的签名、身份sidj外,必须包含智能设备sdt的fpk,r,signfsk(fpk),ppub,time1,其中time1为交易生成时间,其与signfsk(fpk)中隐含的t3之间的距离必须小于δt,矿工验证才能通过,确认其为新鲜的真实认证交易;

4-1.认证结果交易上链

为了完成有效的业务监管,智能设备和应用服务器完成双向认证后,应用服务器发起type为auth的交易,即

其中tcontent为:

{sidj,fpk,r,signfsk(fpk),ppub,time1,

矿工收到该交易后,确认该交易是auth类型,判断tin中的前一交易tpre和输入脚本是否均为如果不是就终止;否则首先使用fpk,r,ppub,计算然后再计算矿工首先判断fpk*是否等于fpk,接着判断time1-t3≤δt,其中δt是预留的传输时延的阈值;如果均满足,则验证签名是否正确;如果三项验证均满足,矿工将该交易打包上链;上链完成后,应用服务器才确认此次认证成功,并确定此次业务的密钥为

4-2.认证后业务交易上链

当应用服务器和智能设备sdt后续进行业务交互产生需要监管的数据时,其产生type为merch的交易,tin是中的前一交易tpre必须是type为auth的交易或者一个可以追溯到auth交易的一个merch交易;

如果该交易由应用服务器发起,可表示为:

其中tcontent为:

{sidj,fpk,r,ppub,m,signfsk(m),time1,

其中,m为应用服务器和智能设备sdt的使用会话密钥加密的业务数据,其可以随时供应用服务器和智能设备查阅,同时方便用户u监管自己的智能设备;为基于椭圆曲线算法的签名过程;time为智能设备sdt对业务内容进行签名的时间,time1为交易生成时间。

如果该交易由智能设备sdt发起,可表示为

其中tcontent为:

同样的,m为应用服务器和智能设备sdt的使用会话密钥加密的业务数据;为基于椭圆曲线算法的签名过程;time为应用服务器对业务内容进行签名的时间,time1为交易生成时间;其中:

矿工收到应用服务器发起的业务交易后,首先根据tin找到初始的auth交易,如果没找到则退出,否则使用fpk,r,ppub,计算然后再计算矿工首先判断m*是否等于m,如果相等则进一步判断time1-time≤δt;其中δt是预留的传输时延的阈值;最后验证签名是否正确;如果三项验证均满足,矿工将该交易打包上链;

矿工收到智能设备sdt发起的交易验证过程同上,具体为:

矿工收到智能设备sdt发起的业务交易后,同样先根据tin找到初始的auth交易,如果没找到则退出,否则使用pkas从取出m*和time,并判断m*是否等于m,如果相等则使用fpk,r,ppub,计算然后再计算

矿工首先判断以及sidj*=sidj,fpk*=fpk,r*=r,ppub*=ppub,如果均相等则进一步判断time1*-time≤δt;其中δt是预留的传输时延的阈值;如果三项验证均满足,矿工将该交易打包上链。

进一步的,监管特征实现如下:

用户通过查询区块链交易,针对每个交易的fpk,首先使用自己的私钥sku进行解密,如果可以成功解密出同时再使用验证签名一致的情况下,即可说明此交易的fpk是用户所属智能设备进行的操作,为进一步查阅其后续业务数据流,用户u使用自己的进行同时计算出h(m1)为本次会话的会话密钥,从而可以解密后续业务数据的密文m进行监管。

本发明有益效果:

本发明引入区块链技术,构建用户可监管的智能设备访问外网时的匿名认证方法,利用区块链不可篡改的特性,用户可以随时通过区块链监管智能设备的所有行为,从而实现完全控制该智能设备。

附图说明

图1系统模型图;

图2整体流程图;

具体实施方式

下面结合附图和实施例对本发明作进一步说明。

如图1和2所示,一种面向智能家居的用户可监管匿名身份认证方法,其特征在于包括ifttt服务器、用户、智能设备、应用服务器和区块链组件,各个组件交互步骤如下:

1初始化在该过程中,ifttt服务器初始化:为应用服务器和用户提供可信is-认证密钥准备好参数;其次,用户初始化:为内部的智能设备安全通信准备好参数;最后,区块链初始化:基于双线性映射加密方案的参数,为所有用户和智能设备的监管准备好参数。

1-1用户u单独为家居网内智能设备初始化参数和公私钥对

用户u首先选择一个大素数pu,并在有限域下选择一条椭圆曲线接着,u选择一个阶为nu的椭圆曲线上的一个基点pu,以及一个随机数xu,计算qu=xu·pu。然后,u秘密保存自己的私钥sku=xu;当智能设备注册时,用户将其公钥pku=qu和参数发给智能设备。

1-2区块链平台为所有的用户初始化系统公共参数

区块链平台为所有用户选定一双线性群生成元并令p1=ψ(p2),同时选择函数形成公共参数:

其中p为群的阶,为双线性映射函数——weil配对算法。明文空间密文空间当智能设备注册时,用户将其从区块链平台获得的公共参数pp发给智能设备。

2用户和应用服务器分别向ifttt服务器注册用户和应用服务器均事先向ifttt服务器注册并获得is-认证密钥方可进行下一步。

2-1用户ui通过ifttt网关hgig向ifttt服务器is注册并获取is-认证密钥注册完成后,is并不存储认证密钥及任何用户相关信息;ifttt网关hgig备份存储信息,用以预防用户智能手机丢失时的恢复;用户ui则存储其中eidi为用户注册时预留的恢复用的扩展信息生成的伪名,user_secret是存储认证相关的随机数对,vl是为了实现本地用户密码验证的校验值。

2-2应用服务器sj向ifttt服务器is注册并获取is-认证密钥注册完成后,sj存储其中noncej=(r1j,r2j)是注册时产生的随机数对,即r1j和r2j均为随机数,sidj为对用户公开的身份;而ifttt服务器is并不存储仅仅存储sj的伪名及相关信息{rsidj,mr2j},其中rsidj=h(sidj||r1j),为方便理解,将应用服务器的公钥和私钥r2j分别用pkas和skas表示。

智能设备向用户注册:智能设备sdt向用户u注册

3-1sdt生成公私钥对:sdt根据自己的身份标识tid∈{0,1}*生成接着生成随机数生成私钥:秘密保存,并计算形成sdt的公钥信息pk:

3-2sdt向用户u注册:

(1)智能设备发起请求,从用户u处获得公钥pku,参数{epu(au,bu),pu,pu}以及公共参数pp。

(2)sdt使用用户的u的公钥pku执行基于椭圆曲线的加密消息并发送给用户u。

(3)u收到rm1后,利用自己的私钥进行解密获得用户根据智能设备的tid,重新计算其h1运算的结果与比对是否一致,来验证该智能设备是否属于自己的智能设备。如果一致,用户u首先保存好sdt的公钥信息pk;并生成随机数μ1,μ2∈{0,1}*,将要传输的is-认证密钥以及用户的身份ridi,做如下计算:

r2=h3(ridi||μ2)

回送{rm2,rm3}给智能设备sdt,为方便后面描述简记rm2和rm3如下:rm2={rm2l,rm2r},rm3={rm3l,rm3r}。

(4)sdt收到后,使用私钥以及rm2,计算出接着,取出rm2的rm2r,进行如下操作,计算出和μ′1:

因为,

接着,sdt使用然后再计算r′1p1是否等于rm2l(即r1p1),如果相等,则保存否则终止。sdt用上面第(3)(4)步相同的计算,从rm3中取出ridi并存储。至此,智能设备存储自己的公钥信息pk,秘密保存存储

智能设备代表用户访问应用服务器实现匿名双向认证:智能设备sdt代表用户向应用服务器as访问时,每一次应用业务访问均生成伪公钥(fpk):例如购买行为中的一个订单交易对应一个fpk;智能设备sdt与应用服务器as的匿名认证流程如表1所示。

表1sdt与as匿名认证流程

4-1智能设备sdt生成一次性业务公钥fpk向服务器as发起认证请求

sdt首先获取应用服务器的身份sidj及相应的公钥pkas,并随机生成k以及点qt=(x,y),进行如下计算:m2=k·ridi,接着,sdt生成随机数ppub=t·p1,生成一次性公钥

其中,因为:并生成私钥:fsk=t·fpk,存储于本地用于完成后续的交互所需。

再者,计算mm2=pxor(m2,qt),mfpk=pxor(fpk,qt),mppub=pxor(ppub,qt),vu=h(m1||sidj||fpk||ppub||t1),v=h(mm2,m3,mfpk,mppub,vu,t1)。

最后,sdt发送{mm2,m3,mfpk,mppub,vu,t1,v}给应用服务器;需要说明的是当一次业务需要多次不同时间登录进行操作时,需要多次认证的话,qt是每次登录认证时随机生成的,其他的对应一次业务不变。

4-2应用服务器as认证智能设备sdt

应用服务器收到后,首先检查tnow-t1≤δt是否符合?其中tnow指as收到信息的时刻,t1指sdt发送信息的时刻,δt指系统设置的阈值;如果符合,则计算h(mm2,m3,mfpk,mppub,vu,t1)并验证是否与收到v一致?若不一致,则终止认证;否则应用服务器首先用自己的私钥skas从m3中解密出计算fpk*=pxor(mfpk,qt*),以及验证如果相等,应用服务器认为该sdt代表的用户为合法用户;接着,应用服务器计算hqt*=(h(x*),h(y*)),最后将{m4,t2,h(m4,t2)}返回给智能设备sdt。

4-3智能设备sdt认证应用服务器as并确认会话密钥

sdt收到后,检查t′now-t2≤δt是否符合,其中t′now指sdt收到信息的时刻,t2指as发送信息的时刻,δt指系统设置的阈值,若不符合终止认证,否则计算hqt′=pxor(m4,m1)=(x′,y′),同时计算hqt=(h(x),h(y)),并判断hqt′=hqt是否成立?如果成立则说明该应用服务器为ifttt服务器认证的合法应用服务器,同时将h(m1)作为本次通话的会话密钥。

接着,sdt随机生成r,计算出因为同时,计算m5=pxor(hqt,qt),m6=pxor(r,qt),msignfsk(fpk)=pxor(signfsk(fpk),qt),v=h(m5,m6,msignfsk(fpk),t3)。

最后,向应用服务器回送{m5,m6,msignfsk(fpk),t3,v}。

4-4应用服务器as确认会话密钥

应用服务器收到后,检查t″now-t3≤δt是否符合,其中t″now指as收到信息的时刻,t3指sdt发送信息的时刻,δt指系统设置的阈值;并验证h(m5,m6,msignfsk(fpk),t3)是否与v符合,若不符合终止认证,否则计算pxor(hqt*,qt*)是否与m5相等?如果相等则说明智能设备sdt已经认证完毕并已确定了本次会话密钥同时认为qt*=qt,然后计算r=pxor(m6,qt*),signfsk(fpk)=pxor(msignfsk(fpk),qt*),执行上链操作,详见权力要求5;上链操作完毕,应用服务器也将作为本次通话的会话密钥,后续的业务流程将使用该密钥完成。

认证结果上链保存:saa-daes协议中用户可监管的认证交易格式tx,描述如下所示:

tid是交易标识;ttype表示本交易的类型,为了实现用户全程监管,交易可以分为{auth,merch}两种类型,其中auth表示tcontent为认证结果,merch表示tcontent为交互业务记录;tin表示交易的输入项,即交易成立前验证所需参数和智能合约(脚本);tout表示交易的输出项,即交易传递给下一交易生成验证时所需参数和智能合约(脚本)。为更清晰阐述,tx格式可表示为表2。

表2认证交易tx

其中,tpre表示前一次交易;是一个输入脚本,用于验证本交易有效性;ω是一个输出脚本,给出获取交易tx中内容所需条件;pki,pkj是交易发起者和交易接收者的公钥(地址);对应的,ski是交易发起者的私钥。body包括tpre,ttype,tcontent,pki,pkj;σ表示交易发起者对该交易的签名;如果该交易是一个初始交易,那么它的输入前一交易和脚本为空,可用表示。

认证结束时,应用服务器将身份认证结果写入到区块链中。区块链的交易是以应用服务器的公钥作为地址发出的交易,除了含有应用服务器的签名、身份sidj外,必须包含智能设备sdt的fpk,r,signfsk(fpk),ppub,time1,其中time1为交易生成时间,其与signfsk(fpk)中隐含的t3之间的距离必须小于δt,矿工验证才能通过,确认其为新鲜的真实认证交易;

5-1认证结果交易上链

为了完成有效的业务监管,智能设备和应用服务器完成双向认证后,应用服务器发起type为auth的交易,即

其中tcontent为:

{sidj,fpk,r,signfsk(fpk),ppub,time1,

矿工收到该交易后,确认该交易是auth类型,判断tin中的前一交易tpre和输入脚本是否均为如果不是就终止;否则首先使用fpk,r,ppub,计算然后再计算矿工首先判断fpk*是否等于fpk,接着判断time1-t3≤δt(其中δt是预留的传输时延的阈值,防止重放攻击);如果均满足,则验证签名是否正确;如果三项验证均满足,矿工将该交易打包上链。上链完成后,应用服务器才确认此次认证成功,并确定此次业务的密钥为

5-2认证后业务交易上链

当应用服务器和智能设备sdt后续进行业务交互产生需要监管的数据时,其产生type为merch的交易,tin是中的前一交易tpre必须是type为auth的交易或者一个可以追溯到auth交易的一个merch交易。

如果该交易由应用服务器发起,可表示为:

其中tcontent为:

{sidj,fpk,r,ppub,m,signfsk(m),time1,

如果该交易由智能设备sdt发起,可表示为

其中tcontent为:

需要说明的是,此时的m为应用服务器和智能设备sdt的使用会话密钥加密的业务数据,其可以随时供应用服务器和智能设备查阅,同时方便用户u监管自己的智能设备。

矿工收到应用服务器发起的业务交易后,首先根据tin找到初始的auth交易,如果没找到则退出,否则使用fpk,r,ppub,计算然后再计算矿工首先判断m*是否等于m,接着判断time1-time≤δt(其中δt是预留的传输时延的阈值,防止重放攻击);最后验证签名是否正确;如果三项验证均满足,矿工将该交易打包上链。

矿工收到智能设备sdt发起的交易验证过程如上,不做赘述。

用户监管智能设备:用户通过查询区块链交易,针对每个交易的fpk,首先使用自己的私钥sku进行解密,如果可以成功解密出同时再使用验证签名一致的情况下,即可说明此交易的fpk是用户所属智能设备进行的操作,为进一步查阅其后续业务数据流,用户u使用自己的进行同时计算出h(m1)为本次会话的会话密钥,从而可以解密后续业务数据的密文m进行监管。

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