本发明涉及网络与信息安全技术领域,尤其涉及一种安全高效的线上线下组密钥分发方法。
背景技术:
秘密共享:(t,n)门限秘密共享的基本思想是将一个秘密分割成n个秘密份额,并将每一个份额分发给一个参与者,只有t(t≤n)个或t个以上的参与者合作才能恢复秘密,少于t个参与者无法恢复秘密,其中t为门限值。(t,n)门限秘密共享方案有很多种实现方式,其中应用最为广泛的就是shamir秘密共享方案:
该方案假定d是秘密分发者,n是参与者的数目,t是门限值,p是大素数且远大于n;秘密空间与份额空间均为有限域gf(p)。(t,n)门限秘密共享方案分为两个组成部分:
1)秘密分发阶段:
(1)秘密分发者d随机选择一个gf(p)上最多为t-1次的多项式f(x):f(x)=a0+a1x+a2x2+…+at-1xt-1modp,其中a0=f(0)=s,s为秘密,d对f(x)保密。
(2)d在有限域gf(p)中选择n个互不相同的非零元素xl,x2,…,xn,计算si=f(xi),1≤i≤n。
(3)将(xi,si,)(l≤i≤n)秘密分配给参与者ui,值xi是ui的公开信息,si作为ui的秘密份额。
2)秘密重构阶段:
任何m,(n≥m≥t),个参与者,比如,{u1,u2,…,um},可以利用他们的秘密份额{sl,s2,…,sm}通过lagrange插值公式
组密钥分发:通常,组密钥分发是用来给一个组内成员高效的分发一个相同的密钥,便于组用户之间进行安全的通讯。leinharn和changlulin在2010年发表的authenticatedgroupkeytransferprotocolbasedonsecretsharing一文中提出了一种基于shamir(t,n)门限秘密共享的组密钥分发方案。其具体的方案如下:
1)密钥生成中心初始化:
密钥生成中心随机选择两个安全素数p和q使得(p-1)/2和(q-1)/2也是素数,然后计算n=p*q,并且公开n。
2)用户注册:
每个用户需要在密钥生成中心进行注册。密钥生成中心负责管理所有的组员的添加和删除。密钥生成中心需要和每个用户秘密分享一个坐标(xi,yi),
3)组密钥生成和分发:
在密钥分发之前,密钥生成中心随机生成一个组密钥准备分发给所有的合法用户。所有密钥生成中心和用户之间的通讯都可以广播进行。假设有t个用户{ui|i=1,2,…,t}共享(xi,yi),i=1,2…,t。这个密钥生成和分发阶段分为以下五步:
1、由一个用户代表分发一个组密钥请求给密钥生成中心,附上用户列表{ui|i=1,2,…,t}。
2、密钥生成中心广播{ui|i=1,2,…,t}作为回应。
3、每个用户ui发给密钥生成中心一个随机挑战ri。
4、密钥生成中心随机选择一个组密钥k并且生成一个t阶的多项式f(x)穿过以下t+1个坐标:(0,k)和
5、对于每个用户ui除了自己的秘密坐标
上述方案的缺陷在于:
<1>在此方案中,所有的计算都是要在有限域
<2>密钥生成中心在用户发送随机挑战之前并不能进行任何密钥生成和分发的计算,所以线下时间没有得到有效的利用。
正因为上述方案计算的有限域过大而且在线下时并不能进行任何的计算,其应用范围及实用性大大降低。
技术实现要素:
本发明的目的是提供一种安全高效的线上线下组密钥分发方法,可以提高整体的密钥分发响应速度和运算效率。
本发明的目的是通过以下技术方案实现的:
一种安全高效的线上线下组密钥分发方法,包括:
准备阶段:密钥生成中心选择并公开一个单项哈希函数和一个随机素数;每个用户在密钥生成中心进行注册,在此过程中,每个用户和密钥生成中心协商一个私有坐标;
线下阶段:假设共有m个用户在密钥生成中心注册成为合法用户,所述m个用户与密钥生成中心协商的私有坐标生成一个坐标组ω;密钥生成中心随机生成一个m阶的多项式f(x),并在f(x)上选择2m个不同的坐标形成两个坐标组ω1与ω2,使得
线上阶段:密钥生成中心收到用户发送的组密钥初始化消息后进行线上阶段,广播包含组密钥标识符的消息作为回应,并接收到每个用户返回的包含相应用户随机选择的坐标的请求消息;对于每个用户,密钥生成中心利用其私有坐标以及随机选择的坐标来构造一个线性方程gi(x),并使用坐标组ω1相应坐标计算gi(x′i)与
由上述本发明提供的技术方案可以看出,降低密钥生成中心和用户的运算量,并且充分利用密钥生成中心在给用户分发组密钥之前的空余线下时间,将尽可能多的计算量放到线下,以此来提高整体的密钥分发响应速度和运算效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本发明实施例提供的一种安全高效的线上线下组密钥分发方法的流程图;
图2为本发明实施例提供的准备阶段的示意图;
图3为本发明实施例提供的线下阶段、线上阶段的的示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
本发明实施例提供一种安全高效的线上线下组密钥分发方法,该方法中,密钥生成中心负责给用户分发和更新密钥。不同于传统的方案(harn-lin方案),在该方法中,密钥生成中心在给用户分发密钥之前的阶段被称为线下阶段,在此阶段中,密钥生成中心可以进行主要密钥生成相关的计算,以便于在用户发出请求后,尽快给组用户分发密钥。该方法主要流程如图1所示,包括如下步骤:
1、准备阶段:密钥生成中心选择并公开一个单项哈希函数和一个随机素数;每个用户在密钥生成中心进行注册,在此过程中,每个用户和密钥生成中心协商一个私有坐标。
如图2所示,本发明实施例中,公开的单项哈希函数记为h(.),随机素数记为p。本领域技术人员可以理解p可以是任何一个较大的素数,具体可以由本领域技术人员根据实际情况或者经验来设定。
每个用户在密钥生成中心进行注册,在此过程中,每个用户和密钥生成中心协商一个私有坐标(xi,yi),
2、线下阶段:假设共有m个用户在密钥生成中心注册成为合法用户,所述m个用户与密钥生成中心协商的私有坐标生成一个坐标组ω;密钥生成中心随机生成一个m阶的多项式f(x),并在f(x)上选择2m个不同的坐标形成两个坐标组ω1与ω2,使得
如图3所示,本阶段主要分为如下几个过程:
1)假设在准备阶段过后,共有m个在密钥生成中心注册过的合法用户,所述m个用户构成用户组u={u1,u2,…,um},所述m个用户与密钥生成中心协商的私有坐标生成一个坐标组ω={(x1,y1),(x2,y2),…,(xm,ym)};其中,ui表示用户标识(即第个i用户),其与密钥生成中心协商的私有坐标为(xi,yi),i=1,2,…,m。
2)密钥生成中心随机生成一个m阶的多项式f(x)=a0+a1x+...+amxm,并选择其中常数项a0作为组密钥k等待发送;其中,a1,…,am为多项式中的系数,x为未知数,作为多项式中的不定项。
3)密钥生成中心在f(x)上选择2m个不同的坐标形成两个坐标组ω1与ω2::ω1={(x′1,y′1),(x′2,y′2),…,(x′m,y′m)}与ω2={(x1,y1),(x2,y2),…,(xm,ym)},使得
4)对于每个用户,密钥生成中心选择每个在ω1中的横坐标和所有在ω2中的坐标点计算原始的组密钥分发信息:
其中,mod为求余函数。
5)密钥生成中心利用单项哈希函数计算一个偏移量h(x′i,y′i),并将原始的组密钥分发信息d′i与偏移量h(x′i,y′i)相结合计算一个被保护的组密钥分发信息:di=d′i+h(x′i,y′i)modp。
3、线上阶段:密钥生成中心收到用户发送的组密钥初始化消息后进行线上阶段,广播包含组密钥标识符的消息作为回应,并接收到每个用户返回的包含相应用户随机选择的坐标的请求消息;对于每个用户,密钥生成中心利用其私有坐标以及随机选择的坐标来构造一个线性方程gi(x),并使用坐标组ω1相应坐标计算gi(x′i)与
还请参见图3,本阶段主要分为如下几个过程:
1)由一个用户代表发送一个组密钥初始化消息i给密钥生成中心。
2)密钥生成中心收到用户发送的组密钥初始化消息后进行线上阶段,广播包含组密钥标识符的消息作为回应。所广播的包含组密钥标识符的消息为rσ={σ,x1,x2,…,xm};其中,σ表示组密钥标识符。
3)每个用户随机选择一个坐标
本发明实施例中,请求消息为
4)对于每个用户,密钥生成中心利用其私有坐标(xi,yi)以及随机选择的坐标
5)密钥生成中心利用坐标组ω1中的(x′i,y′i)来带入线性方程gi(x)作为其中的不定项x,从而计算gi(x′i)与
6)密钥生成中心生成组密钥分发信息
7)密钥生成中心完成密钥分发工作并且进入线下状态,等待下次的组密钥请求。
本发明实施例中,还包括用户进行组密钥恢复和验证的过程,还请参见图3,主要如下:
1)对于每个用户,其使用其私有坐标(xi,yi)以及随机选择的坐标
2)用户使用坐标(x′i,y′i)以及rσ中的m个横坐标x1,x2,…xm去计算出拉格朗日差值项
3)用户计算组密钥ki=di+δi-h(x′i,y′i)modp;其中,h(x′i,y′i)表示密钥生成中心利用单项哈希函数计算出的偏移量。
4)用户利用单项哈希函数计算hi=h(ki,σ),如果hi=h(k,σ)成立,则表明用户接收到的组密钥正确且来自密钥生成中心;否则,需要重新向密钥生成中心请求生成新的组密钥。
本发明实施例上述方案与harn-lin方案不同之处在于:
<1>在harn-lin的方案中,所有的计算都要在
<2>在harn-lin的方案中,密钥生成中心在收到用户的组密钥生成请求之前不能进行任何的计算,本发明实施例上述方案中密钥生成中心可以将大部分的运算放在密钥请求之前,以此来提高组密钥的分发效率。
本发明实施例上述方案主要具有如下优点:
1)便捷性:每个用户仅需要与密钥生成中心秘密协商一个坐标。其余信息均可公开发送,无需加解密。
2)自主性:用户可以自行验证所得密钥是否来自于密钥生成中心。
3)安全性:当用户退出用户组后,则不能得到任何新的组密钥信息。且该协议可以抵抗被动攻击,冒充攻击和重放攻击等多种攻击。
4)高效性:该协议不依赖任何数学难题,可以降低密钥生成中心和用户的运算量,加快运算速度,且能够减少密钥生成中心的存储空间,降低通讯开销。
5)快响应:密钥分发阶段分为线上和线下两个阶段。密钥生发中心可以在线下执行大多数计算,所以可以在线上阶段快速响应用户分发密钥请求,提高整体的密钥分发响应速度和运算效率。
为了便于理解,下面以3个组用户成员为例子进行具体的实施方案举例。
1、准备阶段
1.1、密钥生成中心选择并公开一个随机的素数p,使用sha-256作为单项哈希函数h(.)。
1.2、每个用户u1,u2和u3依次在密钥生成中心进行注册,并分别和密钥生成中心共享私有坐标(x1,y1),(x2,y2)和(x3,y3)。
2、分发阶段
2.1、线下阶段
2.1.1、准备阶段过后,此3个用户形成一个用户组u={u1,u2,u3},他们和密钥生成中心协商的坐标生成一个坐标组ω={(x1,y1),(x2,y2),(x3,y3)}。
2.1.2、密钥生成中心随机生成一个3阶的多项式f(x)=a0+a1x+a2x2+a3x3modp,并且选择常数项a0作为组密钥k等待发送。
2.1.3、密钥生成中心在f(x)上选择2*3个不同的坐标形成两个坐标组ω1={(x′1,y′1),(x′2,y′2),…,(x′m,y′m和ω2={(x1,y1),(x2,y2),...,(xm,ym)},使得
2.1.4、密钥生成中心选择每个在ω1中的横坐标和所有在ω2中的坐标点计算原始的组密钥分发信息:
d'1,d'2,d'3分别为对应用户u1,u2和u3的原始组密钥分发信息。
2.1.5、密钥生成中心计算一个偏移量h(x'i,y'i)并且计算一个被保护的组密钥分发信息di=d'i+h(x'i,y'i)modp。d1,d2,d3分别为对应用户u1,u2和u3的被保护的组密钥分发信息。
2.2、线上阶段
2.2.1、由一个用户代表u1发送一个组密钥初始化消息i给密钥生成中心。
2.2.2、当密钥生成中心收到组密钥初始化消息,就进入到线上阶段并且广播消息rσ={σ,x1,x2,x3}作为回应,其中σ是密钥生成中心选择的组密钥标识符。
2.2.3、用户ui选择一个坐标
2.2.4、于每一个用户ui,密钥生成中心持有和
2.2.5、密钥生成中心使用ω1中的坐标(x'i,y'i)去计算两个值gi(x'i)和
2.2.6、密钥生成中心生成并发送密钥分发消息
2.2.7、密钥生成中心完成密钥分发工作并且进入线下状态,等待下次的组密钥请求。
3、组密钥恢复和验证
3.1、每个用户ui同样计算
3.2、每个用户ui使用坐标(x'i,y'i)和rσ中的3个横坐标x1,x2,x3去计算出一个拉格朗日差值项
3.3、用户ui可以计算出组密钥ki=di+δi-h(x'i,y'i)modp。
3.4、每个用户ui计算hi=h(ki,σ)。如果hi=h{k,σ}成立,则此次组密钥分发成功;否则需要重新请求分发组密钥。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。