发明名称 无对运算的安全无证书混合签密方法
摘要 本发明公开了一种无对运算的安全无证书混合签密方法,用于解决现有无证书混合签密方法效率低的技术问题。技术方案是通过规定用户固定的密钥生成顺序,令KGC在生成部分密钥阶段受到用户部分公钥的限制,进而在签密者对明文进行签密阶段绑定用户部分公钥,保证能够抵抗公钥替换攻击;在用户完整私钥生成之前,利用一个与用户身份信息和部分公钥绑定的部分私钥验证等式,使得用户及时检测到积极不诚实KGC的非法行为,抵御恶意KGC攻击,提高系统的安全等级,并消除不必要的计算消耗;在签密解签密阶段,利用椭圆曲线上的标量乘运算替代昂贵耗时的双线性对运算,完成对消息的签密和解签密过程,提高了计算效率。
申请公布号 CN105024994A 申请公布日期 2015.11.04
申请号 CN201510289136.3 申请日期 2015.05.29
申请人 西北工业大学 发明人 李慧贤;范天琪;张晓莉;庞辽军
分类号 H04L29/06(2006.01)I;H04L9/30(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 西北工业大学专利中心 61204 代理人 王鲜凯
主权项 一种无对运算的安全无证书混合签密方法,其特征在于包括以下步骤:步骤一、密钥生成中心KGC选取安全参数k(k∈Z<sup>+</sup>)作为输入,执行如下步骤生成系统公开参数:a)选定一个k‑bit的素数q,并设定一个四元组{F<sub>q</sub>,E/F<sub>q</sub>,P,G<sub>q</sub>};其中,令P为循环群G<sub>q</sub>的生成元,令E/F<sub>q</sub>为有限域F<sub>q</sub>上选择的一条椭圆曲线E,令G<sub>q</sub>为一个加法循环群;b)定义H<sub>1</sub>:{0,1}<sup>*</sup>×G<sub>q</sub>×G<sub>q</sub>→<sub>R</sub>Z<sub>q</sub><sup>*</sup>,H<sub>2</sub>:{0,1}<sup>*</sup>×{0,1}<sup>n</sup>×G<sub>q</sub>×G<sub>q</sub>→<sub>R</sub>Z<sub>q</sub><sup>*</sup>,H<sub>3</sub>:Z<sub>q</sub><sup>*</sup>×G<sub>q</sub>×G<sub>q</sub>×G<sub>q</sub>×G<sub>q</sub>→{0,1}<sup>L</sup>为抗碰撞的密码学单向不可逆哈希函数;其中,L为对称秘钥空间长度,n为明文长度;c)KGC随机选取x<sub>0</sub>∈<sub>R</sub>Z<sub>q</sub><sup>*</sup>,设置系统主密钥msk=x<sub>0</sub>,并将其秘密保存,然后计算系统主公钥P<sub>pub</sub>=x<sub>0</sub>P;d)KGC选取一种安全的对称加密算法(Enc,Dec),该算法满足可认证性和机密性,用于封装数据;e)公布系统参数Params={F<sub>q</sub>,E/F<sub>q</sub>,P,G<sub>q</sub>,H<sub>1</sub>,H<sub>2</sub>,H<sub>3</sub>,P<sub>pub</sub>,Enc,Dec,L};步骤二、用户秘密值设置;身份为ID<sub>i</sub>(ID<sub>i</sub>∈{0,1}<sup>*</sup>)的用户i在系统公开参数Params后,随机选取秘密值x<sub>i</sub>∈<sub>R</sub>Z<sub>q</sub><sup>*</sup>作为自身长期私钥,计算对应的用户部分公钥P<sub>i</sub>=x<sub>i</sub>P,然后将{ID<sub>i</sub>,P<sub>i</sub>}发送给KGC;步骤三、部分密钥生成;KGC接收到用户发送的{ID<sub>i</sub>,P<sub>i</sub>},以系统主密钥x<sub>0</sub>、用户身份ID<sub>i</sub>和公开参数Params为输入,按如下步骤生成用户的另一部分公私钥对:a)随机选择r<sub>i</sub>∈<sub>R</sub>Z<sub>q</sub><sup>*</sup>,计算部分公钥R<sub>i</sub>=r<sub>i</sub>P;b)KGC通过计算等式d<sub>i</sub>=r<sub>i</sub>+x<sub>0</sub>H<sub>1</sub>(ID<sub>i</sub>,R<sub>i</sub>,P<sub>i</sub>)mod q将用户部分公钥和身份信息与部分私钥绑定,通过规定这样的执行顺序使KGC生成d<sub>i</sub>的行为受到用户的限制,以抵抗公钥替换攻击,然后再将R<sub>i</sub>和d<sub>i</sub>通过安全信道发送给用户i;用户i根据接收到的R<sub>i</sub>和d<sub>i</sub>,在生成自身完整公私钥对之前,通过验证等式(1)判断部分私钥的有效性:d<sub>i</sub>P=R<sub>i</sub>+H<sub>1</sub>(ID<sub>i</sub>,R<sub>i</sub>,P<sub>i</sub>)P<sub>pub</sub> mod q   (1)由于EC‑CDH问题的困难性,任何人都无法通过P<sub>pub</sub>=x<sub>0</sub>P和R<sub>i</sub>=r<sub>i</sub>P求解出x<sub>0</sub>r<sub>i</sub>P;因此,如果等式成立,用户继续执行步骤四;反之,用户要求KGC重新发送相应的R<sub>i</sub>和d<sub>i</sub>;步骤四、用户密钥生成;身份为ID<sub>i</sub>(ID<sub>i</sub>∈{0,1}<sup>*</sup>)的用户i在接收到KGC发送过来的有效(R<sub>i</sub>,d<sub>i</sub>)后,最终设置自己的私钥为SK<sub>i</sub>=(d<sub>i</sub>,x<sub>i</sub>),公钥PK<sub>i</sub>=(P<sub>i</sub>,R<sub>i</sub>);步骤五、签密;发送者A以系统参数Params,自己的公私钥对{SK<sub>A</sub>,PK<sub>A</sub>}和接收者B的公钥PK<sub>B</sub>为输入,按以下顺序对消息m进行签密:a)随机选取u∈<sub>R</sub>Z<sub>q</sub><sup>*</sup>,X∈<sub>R</sub>G<sub>q</sub>,计算中间变量U=uP,Y=uX;b)分别计算以下几个中间变量:Q=Y+uP<sub>B</sub>   (2)T<sub>B</sub>=H<sub>1</sub>(ID<sub>B</sub>,R<sub>B</sub>,P<sub>B</sub>)P<sub>pub</sub>+R<sub>B</sub>   (3)T=uT<sub>B</sub> mod q   (4)c)在加密消息中绑定发送者的部分公钥与身份信息h=H<sub>2</sub>(m‖Y‖ID<sub>A</sub>‖P<sub>A</sub>)   (5)计算签名值:S=(u+x<sub>A</sub>)(d<sub>A</sub>+h)<sup>‑1</sup>;d)计算对称密钥K=H<sub>3</sub>(U‖T‖x<sub>A</sub>P<sub>B</sub>‖Y‖h)   (6)e)调用对称加密算法以K为对称秘钥加密V=Enc<sub>K</sub>(m‖S);f)输出密文C=(V,U,h,Q);步骤六、解签密;接收者B在接收到密文V和秘钥封装U、h、Q后,以系统参数Params,发送者A的公钥PK<sub>A</sub>和公私钥对{SK<sub>B</sub>,PK<sub>B</sub>}为输入,按如下步骤对密文进行解密和验证:a)分别根据式(2)、式(4)计算中间变量Y'=Q‑x<sub>B</sub>U,T'=d<sub>B</sub>U;b)根据式(6)恢复对称秘钥K'=H<sub>3</sub>(U‖T'‖x<sub>B</sub>P<sub>A</sub>‖Y'‖h);c)调用对称加密算法中的解密算法对密文V解密m'‖S'=Dec <sub>K'</sub>(V);d)根据式(5)计算h'=H<sub>2</sub>(m'‖Y'‖ID<sub>A</sub>‖P<sub>A</sub>),判断等式h=h'是否成立;如果等式成立,则密文有效,m'=m,并输出明文消息m;反之,输出“⊥”,表示密文无效。
地址 710072 陕西省西安市友谊西路127号