发明名称 基于椭圆曲线的无密钥托管问题的多接收者签密方法
摘要 本发明公开了一种基于椭圆曲线的无密钥托管问题的多接收者签密方法,用于解决现有多接收者签密方法存在密钥托管的技术问题。技术方案是首先由用户随机选取一个秘密值作为自己的私钥,而后根据自己的私钥计算出一个验证份额,并将这个验证份额与自己的身份信息一起发送给密钥生成中心KGC。密钥生成中心KGC根据用户发过来的验证份额及身份信息,生成用户的公钥、公钥验证参数和公钥隐藏参数,并发送给用户。用户收到密钥生成中心KGC发送过来的参数后,对公钥进行验证。由于用户的私钥是自己随机选取的秘密值,密钥生成中心KGC只知道用户的公钥和对应的身份信息,故无法获取用户的私钥,无密钥托管。同时,提高了签密效率,减少了带宽。
申请公布号 CN106027239A 申请公布日期 2016.10.12
申请号 CN201610504588.3 申请日期 2016.06.30
申请人 西安电子科技大学 发明人 庞辽军;赵慧洋;闫旭霞;李慧贤
分类号 H04L9/08(2006.01)I;H04L9/30(2006.01)I 主分类号 H04L9/08(2006.01)I
代理机构 西北工业大学专利中心 61204 代理人 王鲜凯
主权项 一种基于椭圆曲线的无密钥托管问题的多接收者签密方法,其特征在于包括以下步骤:(1)生成系统参数:(1a)密钥生成中心KGC选取素数q,确定循环群G<sub>q</sub>;(1b)密钥生成中心KGC选取一条在循环群G<sub>q</sub>上的椭圆曲线E,P为椭圆曲线E上的点,其阶为p,p为素数;(1c)密钥生成中心KGC选取密码系统主密钥s,并将密码系统主密钥s秘密保存;(1d)密钥生成中心KGC构造6个密码单向哈希函数,分别记为:H<sub>0</sub>:{0,1}<sup>*</sup>→G<sub>q</sub>;H<sub>1</sub>:G<sub>q</sub>×G<sub>q</sub>×{0,1}<sup>*</sup>→Z<sub>q</sub><sup>*</sup>;H<sub>2</sub>:G<sub>q</sub>×G<sub>q</sub>→Z<sub>q</sub><sup>*</sup>;H<sub>3</sub>:Z<sub>q</sub><sup>*</sup>→{0,1}<sup>l</sup>;H<sub>4</sub>:{0,1}<sup>l</sup>→{0,1}<sup>l</sup>;H<sub>5</sub>:{0,1}<sup>l</sup>×{0,1}<sup>*</sup>×{0,1}<sup>l</sup>×Z<sub>q</sub><sup>*</sup>×…×Z<sub>q</sub><sup>*</sup>→Z<sub>q</sub><sup>*</sup>;其中,H<sub>0</sub>,H<sub>1</sub>,H<sub>2</sub>,H<sub>3</sub>,H<sub>4</sub>,H<sub>5</sub>表示密钥生成中心KGC构造的6个密码单向哈希函数,A→B表示定义域A到值域B的映射,{0,1}<sup>*</sup>表示任意长的0或1构成的串,G<sub>q</sub>为密钥生成中心KGC选取的循环群,×表示笛卡尔乘积,Z<sub>q</sub><sup>*</sup>表示基于素数q构成的非零乘法群,l表示明文消息m的长度,{0,1}<sup>l</sup>表示长度为l的0或1构成的串;(1e)密钥生成中心KGC选取对称加密算法E<sub>k</sub>和对应的对称解密算法D<sub>k</sub>,其中k表示对称密钥;(1f)密钥生成中心KGC发布密钥生成中心KGC选取循环群G<sub>q</sub>、椭圆曲线E、椭圆曲线E上的点P、6个密码单向哈希函数H<sub>0</sub>,H<sub>1</sub>,H<sub>2</sub>,H<sub>3</sub>,H<sub>4</sub>,H<sub>5</sub>、对称加密算法E<sub>k</sub>、对称解密算法D<sub>k</sub>,秘密保存密码系统主密钥s;(2)用户注册:(2a)用户注册步骤中的用户包括接收者和发送者,均需通过执行下列步骤获取自己的公钥和私钥;(2b)用户随机选取一个整数作为自己的私钥d;(2c)按照下式,用户计算验证份额V:V=dP其中,V表示用户的验证份额,d表示用户的私钥,P表示椭圆曲线E上的点;(2d)用户将自己的验证份额V和自己的身份信息ID发送给密钥生成中心KGC;(2e)密钥生成中心KGC收到用户的验证份额V和身份信息ID后,随机选取一个整数t,按照下式计算用户的公钥验证参数T:T=tP其中,T表示用户的公钥验证参数,t表示密钥生成中心KGC随机选取的整数,P表示椭圆曲线E上的点;(2f)按照下式,密钥生成中心KGC计算用户的公钥PK:PK=sV‑H<sub>0</sub>(ID)其中,PK表示用户的公钥,s表示密码系统主密钥,V表示用户的验证份额,H<sub>0</sub>表示密码单向哈希函数,ID表示用户的身份信息;(2g)按照下式,密钥生成中心KGC计算用户的公钥隐藏参数x:x=s+tH<sub>1</sub>(T,PK,ID)其中,x表示用户的公钥隐藏参数,s表示密码系统主密钥,t表示密钥生成中心KGC随机选取的整数,H<sub>1</sub>表示密码单向哈希函数,T表示用户的公钥验证参数,PK表示用户的公钥,ID表示用户的身份信息;(2h)密钥生成中心KGC将用户的公钥验证参数T、用户的公钥隐藏参数x和用户的公钥PK发送给用户;(2i)用户判断收到的公钥PK是否满足如下等式,若是,则执行步骤(2j),否则,则执行步骤(2k):xV=PK+H<sub>0</sub>(ID)+dTH<sub>1</sub>(T,PK,ID)其中,x表示用户的公钥隐藏参数,V表示用户的验证份额,PK表示用户的公钥,H<sub>0</sub>、H<sub>1</sub>表示密码单向哈希函数,ID表示用户的身份信息,d表示用户的私钥,T表示用户的公钥验证参数;(2j)密钥生成中心KGC对外公布用户的公钥PK,用户秘密保存自己的私钥d,之后退出用户注册过程;(2k)用户向密钥生成中心KGC报错,并退出用户注册过程;(3)发送者签密:(3a)发送者S判断自己是否已经执行步骤2的用户注册过程,并获取自己的公钥PK<sub>S</sub>和私钥d<sub>S</sub>,若是,则执行步骤(3b),否则,发送者S执行步骤(2)获取自己的公钥PK<sub>S</sub>和私钥d<sub>S</sub>后,执行步骤(3b);(3b)发送者S在已注册的用户中随机选取n个接收者R<sub>1</sub>,R<sub>2</sub>,...,R<sub>n</sub>,其中,n表示大于0的整数;(3c)按照下式,发送者S计算与每一个接收者R<sub>i</sub>之间的关联信息K<sub>S,i</sub>:K<sub>S,i</sub>=d<sub>S</sub>(PK<sub>i</sub>+H<sub>0</sub>(ID<sub>i</sub>))其中,K<sub>S,i</sub>表示发送者S与第i个接收者R<sub>i</sub>之间的关联信息,i=1,2,…,n,n表示发送者S在已注册的用户中随机选取的接收者的数目,d<sub>S</sub>表示发送者S的私钥,PK<sub>i</sub>表示第i个接收者R<sub>i</sub>的公钥,H<sub>0</sub>表示密码单向哈希函数,ID<sub>i</sub>表示第i个接收者R<sub>i</sub>的身份信息;(3d)按照下式,发送者S计算每一个接收者R<sub>i</sub>的伪身份值ω<sub>i</sub>:ω<sub>i</sub>=H<sub>2</sub>(K<sub>S,i</sub>,H<sub>0</sub>(ID<sub>i</sub>))其中,ω<sub>i</sub>表示第i个接收者R<sub>i</sub>的伪身份值,i=1,2,…,n,n表示发送者S在已注册的用户中随机选取的接收者的数目,H<sub>2</sub>、H<sub>0</sub>表示两个密码单向哈希函数,K<sub>S,i</sub>表示发送者S与第i个接收者R<sub>i</sub>之间的关联信息,ID<sub>i</sub>表示第i个接收者R<sub>i</sub>的身份信息;(3e)按照下式,发送者S构造接收者身份信息混合值f(x):<maths num="0001"><math><![CDATA[<mrow><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Pi;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mrow><mo>(</mo><mi>x</mi><mo>-</mo><msub><mi>&omega;</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>+</mo><mi>u</mi><mrow><mo>(</mo><mi>mod</mi><mi> </mi><mi>q</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001036501330000031.GIF" wi="566" he="119" /></maths>其中,f(x)表示接收者身份信息混合值,x表示自变量,∏表示连乘操作,n表示发送者S在已注册的用户中随机选取的接收者的数目,i表示计数游标,ω<sub>i</sub>表示第i个接收者R<sub>i</sub>的伪身份值,u表示发送者S随机选取的整数,mod表示求模操作,q为密钥生成中心KGC选取的素数;(3f)按照下式,发送者S计算密钥验证值J:<maths num="0002"><math><![CDATA[<mrow><mi>J</mi><mo>=</mo><mi>&delta;</mi><mo>&CirclePlus;</mo><msub><mi>H</mi><mn>3</mn></msub><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001036501330000032.GIF" wi="294" he="56" /></maths>其中,J表示密钥验证值,δ表示发送者S随机选取的长度为l的0或1构成的串,l表示明文消息m的长度,<img file="FDA0001036501330000033.GIF" wi="46" he="47" />表示逐位异或操作,H<sub>3</sub>表示密码单向哈希函数,u表示发送者S随机选取的整数;(3g)按照下式,发送者S计算加密消息密文Z:<maths num="0003"><math><![CDATA[<mrow><mi>Z</mi><mo>=</mo><msub><mi>E</mi><mrow><msub><mi>H</mi><mn>4</mn></msub><mrow><mo>(</mo><mi>&delta;</mi><mo>)</mo></mrow></mrow></msub><mrow><mo>(</mo><mi>m</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001036501330000034.GIF" wi="277" he="70" /></maths>其中,Z表示加密消息密文,E<sub>k</sub>表示对称加密算法,k表示对称密钥,k=H<sub>4</sub>(δ),H<sub>4</sub>表示密码单向哈希函数,δ表示发送者S随机选取的长度为l的0或1构成的串,l表示明文消息m的长度,m表示明文消息;(3h)按照下式,发送者S计算密文有效性参数h:h=H<sub>5</sub>(m,Z,J,a<sub>0</sub>,a<sub>1</sub>,...,a<sub>n‑1</sub>)其中,h表示密文有效性参数,H<sub>5</sub>表示密码单向哈希函数,m表示明文消息,Z表示加密消息密文,J表示密钥验证值,a<sub>0</sub>,a<sub>1</sub>,…,a<sub>n‑1</sub>表示接收者身份信息混合值f(x)的系数;(3i)发送者S将加密消息密文Z、密钥验证值J、接收者身份信息混合值f(x)的系数a<sub>0</sub>,a<sub>1</sub>,…,a<sub>n‑1</sub>、密文有效性参数h和发送者S的身份信息ID<sub>S</sub>构成签密密文C,并对签密密文C进行广播;(4)接收者解密:(4a)接收者R<sub>i</sub>完成步骤2的用户注册过程计算出自己的公钥PK<sub>i</sub>和私钥d<sub>i</sub>后,进行如下操作进行解密,i=1,2,…,n;(4b)按照下式,接收者R<sub>i</sub>计算与发送者S之间的关联信息K<sub>S,i</sub>:K<sub>S,i</sub>=d<sub>i</sub>(PK<sub>S</sub>+H<sub>0</sub>(ID<sub>S</sub>))其中,K<sub>S,i</sub>表示发送者S与第i个接收者R<sub>i</sub>之间的关联信息,i=1,2,…,n,n表示发送者S在已注册的用户中随机选取的接收者的数目,d<sub>i</sub>表示第i个接收者R<sub>i</sub>的私钥,PK<sub>S</sub>表示发送者S的公钥,H<sub>0</sub>表示密码单向哈希函数,ID<sub>S</sub>表示发送者S的身份信息;(4c)按照下式,接收者R<sub>i</sub>计算伪身份值ω<sub>i</sub>:ω<sub>i</sub>=H<sub>2</sub>(K<sub>S,i</sub>,H<sub>0</sub>(ID<sub>i</sub>))其中,ω<sub>i</sub>表示第i个接收者R<sub>i</sub>的伪身份值,i=1,2,…,n,n表示发送者S在已注册的用户中随机选取的接收者的数目,H<sub>2</sub>、H<sub>0</sub>表示两个密码单向哈希函数,K<sub>S,i</sub>表示发送者S与第i个接收者R<sub>i</sub>之间的关联信息,ID<sub>i</sub>表示第i个接收者R<sub>i</sub>的身份信息;(4d)按照下式,接收者R<sub>i</sub>计算发送者S随机选取的整数u:u=f(ω<sub>i</sub>)其中,u表示发送者S随机选取的整数,f(x)表示接收者身份信息混合值,x表示自变量,ω<sub>i</sub>表示第i个接收者R<sub>i</sub>的伪身份值;(4e)按照下式,接收者R<sub>i</sub>计算发送者S随机选取的长度为l的0或1构成的串δ:<maths num="0004"><math><![CDATA[<mrow><mi>&delta;</mi><mo>=</mo><mi>J</mi><mo>&CirclePlus;</mo><msub><mi>H</mi><mn>3</mn></msub><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001036501330000051.GIF" wi="294" he="62" /></maths>其中,δ表示发送者S随机选取的长度为l的0或1构成的串,l表示明文消息m的长度,J表示密钥验证值,<img file="FDA0001036501330000052.GIF" wi="44" he="47" />表示逐位异或操作,H<sub>3</sub>表示密码单向哈希函数,u表示发送者S随机选取的整数;(4f)按照下式,接收者R<sub>i</sub>计算明文消息m:<maths num="0005"><math><![CDATA[<mrow><mi>m</mi><mo>=</mo><msub><mi>D</mi><mrow><msub><mi>H</mi><mn>4</mn></msub><mrow><mo>(</mo><mi>&delta;</mi><mo>)</mo></mrow></mrow></msub><mrow><mo>(</mo><mi>Z</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001036501330000053.GIF" wi="286" he="70" /></maths>其中,m表示明文消息,D<sub>k</sub>表示对称解密算法,k表示对称密钥,k=H<sub>4</sub>(δ),H<sub>4</sub>表示密码单向哈希函数,δ表示发送者S随机选取的长度为l的0或1构成的串,l表示明文消息m的长度,Z表示加密消息密文;(4g)按照下式,接收者R<sub>i</sub>计算权限参数h′:h′=H<sub>5</sub>(m,Z,J,a<sub>0</sub>,a<sub>1</sub>,...,a<sub>n‑1</sub>)其中,h′表示权限参数,H<sub>5</sub>表示密码单向哈希函数,m表示明文消息,Z表示加密消息密文,J表示密钥验证值,a<sub>0</sub>,a<sub>1</sub>,…,a<sub>n‑1</sub>表示接收者身份信息混合值f(x)的系数;(5)接收者判断权限参数h′与密文有效性参数h是否相等;若是,则执行步骤(6),否则,执行步骤(7);(6)接收者接受明文消息,并退出接收者解密过程;(7)接收者拒绝明文消息,并退出接收者解密过程。
地址 710071 陕西省西安市太白南路2号