发明名称 一种Ad hoc组密钥管理方案
摘要 本发明公开了一种Ad hoc组密钥管理方法,所述的步骤主要包括密钥片段准备阶段和组密钥协商阶段,对成员加入以及成员离开的情况通过组密钥更新协议对组密钥进行管理的方法。该方法提出一种安全、高效的组密钥管理方法。本发明所述的协议具有安全性好,通信量少、计算速度快,占用资源少,适应能力强的特点,特别适合于资源受限的网络环境,为开发组密钥协商协议提出了一个新的研究方向。
申请公布号 CN102256248B 申请公布日期 2015.01.21
申请号 CN201110186223.8 申请日期 2011.07.05
申请人 淮阴工学院 发明人 步山岳;寇海洲;李翔
分类号 H04W12/04(2009.01)I;H04W84/18(2009.01)I;H04L9/32(2006.01)I 主分类号 H04W12/04(2009.01)I
代理机构 代理人
主权项 一种Ad hoc组密钥管理方法,用到的主要符号:TC:系统离线可信任机构,负责产生组成员所需要的参数;q:大模数,通常是一个正整数,q值的大小与具体的实例相关;p:小模数,通常是一个小的正整数或者是一个具有小系数的多项式;r:眩值,用来表示在加密时作为临时眩值的多项式;P:协议中组成员的集合,当组中有n个成员时,P={P<sub>1</sub>,P<sub>2</sub>…,P<sub>n</sub>};id:协议中组成员的身份标识符集,当组中有n个成员时,id={id<sub>1</sub>,id<sub>2</sub>…,id<sub>n</sub>},,协议为每个成员p<sub>i</sub>分配唯一身份标识符id<sub>i</sub>(i=1,2,…,n),该任务由TC完成;(pk<sub>i</sub>,sk<sub>i</sub>):其中pk<sub>i</sub>是P<sub>i</sub>的公钥,sk<sub>i</sub>是P<sub>i</sub>的私钥;NTRUSign(·):表示NTRU签名方案;NTRUVerf(·):表示NTRU验证方案;(SK<sub>i</sub>,VK<sub>i</sub>):其中SK<sub>i</sub>是P<sub>i</sub>的签名密钥,VK<sub>i</sub>是P<sub>i</sub>的验证密钥;m<sub>i</sub>:每个成员贡献的密钥片段,由成员P<sub>i</sub>随机产生;H(·):方案中使用的单向散列函数;KID:组密钥协商成功确认标识,在每次密钥协商前,由TC发布;令Z是整数环,用Z[X]代表在Z上的多项式环,Z[X]/(X<sup>N</sup>‑1)表示N次卷积多项式环,其特征在于,包括以下步骤:A.可信机构TC中心为系统提供初始化参数;B.成员P提供自己的密钥片段m,对m进行变换,得到E;C.成员P对E和P的身份标识id进行签名,得到S;D.成员P广播(S,E);E.成员P验证其他P的S,如果验证失败则需要重复步骤B,如果验证成功进行下一步F;F.P对E进行反变换,计算所有成员提供的m之和K;G.P广播<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>H</mi><mo>=</mo><mi>H</mi><mrow><mo>(</mo><mi>K</mi><mo>&CirclePlus;</mo><mi>KID</mi><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000127099680000011.GIF" wi="339" he="49" /></maths>H.P比较所有H是否相等,如果不相等重复步骤B,如果相等组密钥为GK=H(K<sub>j</sub>),密钥协商成功;该方法的组密钥协商协议流程:(1)密钥片段准备阶段:a.成员P<sub>i</sub>(1≤i≤n)随机选择一个数r<sub>i</sub>、m<sub>i</sub>∈Z[X]/(X<sup>N</sup>‑1),并计算:E<sub>ij</sub>=r<sub>i</sub>*pk<sub>j</sub>+m<sub>i</sub>(modq)  (1)<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>S</mi><mi>ij</mi></msub><mo>=</mo><msub><mi>NTRUSign</mi><msub><mi>SK</mi><mi>i</mi></msub></msub><mrow><mo>(</mo><msub><mi>E</mi><mi>ij</mi></msub><mo>|</mo><mo>|</mo><msub><mi>id</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><mn>1</mn><mo>&le;</mo><mi>j</mi><mo>&le;</mo><mi>n</mi><mo>,</mo><mi>j</mi><mo>&NotEqual;</mo><mi>i</mi><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000127099680000022.GIF" wi="857" he="97" /></maths>b.成员p<sub>i</sub>向组内其他成员广播(S<sub>ij</sub>,E<sub>ij</sub>);(2)组密钥协商阶段:c.成员P<sub>j</sub>(1≤j≤n)计算<img file="FSB0000127099680000023.GIF" wi="368" he="62" />如果没有通过验证,则要求重新提供(S<sub>ij</sub>,E<sub>ij</sub>),如果通过验证,则执行步骤d;d.成员P<sub>i</sub>用计算:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msubsup><mi>K</mi><mi>j</mi><mo>&prime;</mo></msubsup><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo>,</mo><mi>i</mi><mo>&NotEqual;</mo><mi>j</mi></mrow><mi>n</mi></munderover><msub><mi>sk</mi><mi>j</mi></msub><mo>*</mo><msub><mi>E</mi><mi>ij</mi></msub><mrow><mo>(</mo><mi>mod</mi><mi>p</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000127099680000021.GIF" wi="925" he="142" /></maths>K<sub>j</sub>=K′<sub>j</sub>+m<sub>j</sub>(j=1,2,…,n)  (3)e.成员P<sub>j</sub>销毁自己的m<sub>j</sub>,保留K′<sub>j</sub>,计算并广播<img file="FSB0000127099680000024.GIF" wi="409" he="64" />f.成员P<sub>j</sub>比较所有的H<sub>j</sub>(1≤j≤n),如果发现不相等情况,则要求重新进行密钥协商,如果全部相等,则密钥协商完成,组密钥为:GK=H(K<sub>j</sub>);该方法成员加入组密钥流程:假设有n1个新成员P<sub>j</sub>(i=n+1,…n+n1)加入网络之前,TC已经为P<sub>i</sub>分配了(pk<sub>i</sub>,sk<sub>i</sub>)、(SK<sub>i</sub>,Vk<sub>i</sub>)、id<sub>i</sub>参数,并向组内广播P<sub>i</sub>的pk<sub>i</sub>、id<sub>i</sub>和KID,组内规定由P<sub>n</sub>为发起人,所述的步骤(1)需要更新密钥片段,成员P<sub>n</sub>随机选择一个数r<sub>n</sub>、m<sub>n</sub>∈Z[X]/(X<sup>N</sup>‑1),并计算:E<sub>nj</sub>=r<sub>n</sub>*pk<sub>j</sub>+(K′<sub>n</sub>+m<sub>n</sub>)(modq)  (4)<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>S</mi><mi>nj</mi></msub><mo>=</mo><msub><mi>NTRUSign</mi><msub><mi>SK</mi><mi>n</mi></msub></msub><mrow><mo>(</mo><msub><mi>E</mi><mi>nj</mi></msub><mo>|</mo><mo>|</mo><msub><mi>id</mi><mi>n</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><mn>1</mn><mo>&le;</mo><mi>j</mi><mo>&le;</mo><mi>n</mi><mn>1</mn><mo>,</mo><mi>j</mi><mo>&NotEqual;</mo><mi>i</mi><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000127099680000025.GIF" wi="890" he="67" /></maths>成员P<sub>n</sub>向组内其他成员广播(S<sub>nj</sub>,E<sub>nj</sub>)。成员P<sub>i</sub>(n+1≤i≤n+n1)随机选择一个数r<sub>i</sub>、m<sub>i</sub>∈Z[X]/(X<sup>N</sup>‑1),并计算E<sub>ij</sub>:E<sub>ij</sub>=r<sub>i</sub>*pk<sub>j</sub>+m<sub>i</sub>(modq)    (5)<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msub><mi>S</mi><mi>ij</mi></msub><mo>=</mo><msub><mi>NTRUSign</mi><msub><mi>SK</mi><mi>i</mi></msub></msub><mrow><mo>(</mo><msub><mi>E</mi><mi>ij</mi></msub><mo>|</mo><mo>|</mo><msub><mi>id</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><mn>1</mn><mo>&le;</mo><mi>j</mi><mo>&le;</mo><mi>n</mi><mn>1</mn><mo>,</mo><mi>j</mi><mo>&NotEqual;</mo><mi>i</mi><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000127099680000034.GIF" wi="861" he="63" /></maths>所述的步骤(2)还包括步骤d1其具体为:c.成员P<sub>j</sub>(1≤j≤n‑1)计算<img file="FSB0000127099680000035.GIF" wi="347" he="62" />(n≤i≤n+n1),如通过验证,则计算:<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msub><mi>K</mi><mi>j</mi></msub><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>n</mi><mn>1</mn></mrow></munderover><msub><mi>sk</mi><mi>j</mi></msub><msub><mi>E</mi><mi>ij</mi></msub><mi>mod</mi><mi>p</mi><mo>,</mo><mrow><mo>(</mo><mi>j</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000127099680000031.GIF" wi="870" he="122" /></maths>d1.成员P<sub>n</sub>计算<img file="FSB0000127099680000036.GIF" wi="361" he="64" />(n+1≤j≤n+n1)进行验证,如通过验证,则计算:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><msub><mi>K</mi><mi>n</mi></msub><mo>=</mo><msubsup><mi>K</mi><mi>n</mi><mo>&prime;</mo></msubsup><mo>+</mo><msub><mi>m</mi><mi>n</mi></msub><mo>+</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mi>n</mi><mo>+</mo><mn>1</mn></mrow><mrow><mi>n</mi><mn>1</mn></mrow></munderover><msub><mi>sk</mi><mi>n</mi></msub><msub><mi>E</mi><mi>jn</mi></msub><mi>mod</mi><mi>p</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000127099680000032.GIF" wi="942" he="128" /></maths>d.成员P<sub>j</sub>(n+1≤j≤n+n1)计算<img file="FSB0000127099680000037.GIF" wi="346" he="63" />(n≤i≤n+n1,i≠j),如通过验证,则计算:<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><msubsup><mi>K</mi><mi>j</mi><mo>&prime;</mo></msubsup><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mi>n</mi><mo>,</mo><mi>i</mi><mo>&NotEqual;</mo><mi>j</mi></mrow><mrow><mi>n</mi><mn>1</mn></mrow></munderover><msub><mi>sk</mi><mi>j</mi></msub><msub><mi>E</mi><mi>ij</mi></msub><mi>mod</mi><mi>p</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000127099680000033.GIF" wi="1117" he="131" /></maths>K<sub>j</sub>=K′<sub>j</sub>+m<sub>j</sub>        (9)e.成员P<sub>j</sub>销毁自己的m<sub>j</sub>,保留K′<sub>j</sub>,计算并广播<maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><msub><mi>H</mi><mi>j</mi></msub><mo>=</mo><mi>H</mi><mrow><mo>(</mo><msub><mi>K</mi><mi>j</mi></msub><mo>&CirclePlus;</mo><mi>KID</mi><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FSB0000127099680000038.GIF" wi="415" he="62" /></maths>(1≤j≤n+n1);f.成员P<sub>j</sub>比较所有的H<sub>j</sub>(1≤j≤n+n1),如果全部相等,密钥协商完成,组密钥为:GK=H(K<sub>j</sub>);该方法成员离开组密钥更新协议流程:假设组内有L个成员离开,剩余成员的集合为D,TC从成员身份标识符集中删除离开成员的id<sub>L</sub>,并发出组密钥协商标识KID,在D内,规定最大编号id<sub>k</sub>的成员P<sub>k</sub>为发起人,其具体步骤为:a.成员P<sub>k</sub>随机选择一个数r<sub>k</sub>、m<sub>k</sub>∈Z[X]/(X<sup>N</sup>‑1),并计算:E<sub>kj</sub>=r<sub>k</sub>*pk<sub>j</sub>+(K′<sub>k</sub>+m<sub>k</sub>)(modq)   (10)<maths num="0010" id="cmaths0010"><math><![CDATA[<mrow><msub><mi>S</mi><mi>kj</mi></msub><mo>=</mo><msub><mi>NTRUSign</mi><msub><mi>sk</mi><mi>k</mi></msub></msub><mrow><mo>(</mo><msub><mi>E</mi><mi>kj</mi></msub><mo>|</mo><mo>|</mo><msub><mi>id</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><mn>1</mn><mo>&le;</mo><mi>j</mi><mo>&le;</mo><mi>n</mi><mo>,</mo><mi>j</mi><mo>&NotEqual;</mo><mi>L</mi><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FSB0000127099680000041.GIF" wi="945" he="84" /></maths>b.成员P<sub>k</sub>向组内D其他所有成员广播(S<sub>kj</sub>,E<sub>kj</sub>);c.其他成员P<sub>j</sub>∈D计算<img file="FSB0000127099680000042.GIF" wi="379" he="62" />如通过验证,则计算:K<sub>j</sub>=sk<sub>j</sub>*E<sub>kj</sub>modp       (11)d.成员P<sub>j</sub>计算并广播<img file="FSB0000127099680000043.GIF" wi="406" he="63" />(1≤j≤n,j≠L);f.D中成员比较其他成员广播的散列值,如果全部相等,则组密钥更新成功,组成员的密钥为:GK=H(K<sub>j</sub>),(1≤j≤n,j≠L)。
地址 223003 江苏省淮安市淮阴工学院计算机学院