雾系统中的动态安全信道建立方法与流程

文档序号:15402082发布日期:2018-09-11 17:46阅读:217来源:国知局

本发明属于信息安全领域,关于雾计算中安全信道的建立问题,涉及广播加密和组密钥协商,具体涉及到在贡献广播加密基础上改进的动态贡献广播加密。



背景技术:

在过去几年中,云计算已经引起了商界和学术界的广泛关注。它根据端用户的需求灵活的为其分配所需要的资源。然而,随着物联网设备的快速增长,传统的基于云的方法在将来可能无法为端用户提供充足的服务。进一步就是说,对于那些延迟敏感的应用,由于网络带宽的限制以及传统云和某个端用户之间远的地理位置等因素,目前的云计算平台很难满足低延迟的需求。为了满足上述应用的服务质量,必须发展新的云计算架构。

雾计算是对云计算的扩展,并且已经表明是对上述传统云存在问题的一个有效解决方法。这种新的架构可以在网络边缘直接进行计算。由于雾计算是在网络边缘实施的,因此可以为应用提供更好的服务质量和用户体验。在雾计算中,雾节点如智能车辆、边缘路由器、蜂窝基站等可以在地理位置上分布并支持移动性。端用户、雾和云形成一个三层分层网络,可以支持一系列应用场景,例如智能交通、产业自动化、智能电网、无线传感网络。

在一个雾架构中,雾节点一般分布在不同的位置。在每一个位置的单个雾节点可以形成一个雾。进一步说,大量的雾节点就可以形成一个合作的雾系统,这个雾系统具有足够的能力满足大部分端用户的需求。虽然一些雾部署需要详细的部署计划,但雾也允许有或者无计划的ad-hoc部署。特别是,以后的部署场景更具有挑战性,因为系统的成员可能是非常动态的。

尽管雾计算有很多优势但是也面对很多重要的挑战。最大的一个挑战就是和传统的云相比,雾节点具有非集中和分散的特性。在雾计算中必须支持安全的点到点和多播信道,一般是通过安全密钥来实现。密钥管理方案通常是用来生成、分发和维护密钥的。在过去已经有很多工作致力于开发这种密钥管理方案。然而,这些方案应用于雾计算中,仍然面临着许多技术挑战,大多数现在存在的方案所面临的一个挑战便是通信和计算复杂度。特别是,在一个大的协作雾系统中,成员可能是动态的。雾节点可能会动态的加入或者离开一个雾系统。由于雾系统中的节点随着时间的推移而变化,为了保证系统的安全,频繁的同步消息必须在系统中的雾节点之间进行交换。

在雾计算中用于建立安全信道的密钥管理方案可以分为集中式和分散式两种。最著名的集中式密钥管理技术是基于广播加密(be)的,它允许一个发送者通过一个公开的信道将加密的消息高效的发送给系统中任意一个雾节点的子集,并且限制只有这个子集中的雾节点才有权力读取这些加密的消息。在经典的基于广播加密的密钥管理方案中,需要一个完全可信的第三方用来为系统中的节点生成和分发密钥。由于这个第三方知道系统中任意节点的解密密钥,因此它可以读取系统中任意节点广播的密文。进一步说,如果这个第三方离开了这个系统,这个系统必须进行重新初始化,这会导致很大的通信和计算代价。在一些特定的场景中,比如说车载雾计算,是很难找到一个固定的第三方。

一种广泛使用的非集中式的密钥管理技术是基于群密钥协商(gka)的。一群雾节点可能会使用gka协议在公开网络中协商一个共享密钥。然而,一个传统的gka协议应用到雾计算中,将会面临几个挑战。第一,端用户仅限是雾系统中的雾节点。如果一个端用户想给雾系统发送一个加密的消息,首先它必须加入到这个雾系统中成为雾节点。这就意味着这个用户必须同系统中的当前雾节点一起运行一个gka协议生成一个新的密钥。但是这是低效的,因为端用户可能会频繁的改变。也就是说,并不是每个端用户都想当作雾节点。第二,不像基于广播加密的密钥管理方案,gka只允许端用户将加密的内容发送给系统中的所有雾节点,而不是雾节点的任意一个子集。为了排除一些来自接收者集合的雾节点,一个基于gka的方案也需要系统中的雾节点彼此相互交流建立一个新的密钥。

最近,一种叫做贡献广播加密(conbe)的混合密码原语被提出,用来解决现存的密钥管理方案中存在的挑战。在conbe中,一组拥有不同私钥的雾节点通过协商一个公钥建立一个雾系统。任何一个知道公共加密密钥的端用户,可以将加密的消息发送给雾系统中的任意一个雾节点子集合。只有组中被选取的雾节点可以解密消息。与be相比,conbe不需要一个可信第三方来管理雾系统的密钥。与gka相比,conbe可以让任何端用户将加密的消息发送到雾系统中,并且允许端用户在雾系统中选择一个雾节点子集合作为接收者结合。

conbe是雾计算中用于密钥管理的新型安全工具。然而,现有的conbe方案只考虑了静态的情况。如果一个静态的conbe被使用,雾系统中的雾节点必须在系统初始化的时候就确定。进一步也就是说,当雾系统初始化时系统的大小就固定了,是由初始化时雾节点的数量决定的。事实上,雾系统很期望的一个属性便是雾节点可以以一种高效的方式加入或者离开系统。



技术实现要素:

本发明的目的在于:针对现有安全信道中密钥管理方法存在通信代价高、静态等缺陷,提出了一种高效的、动态的信道建立方法。

实现本发明目的的具体技术方案是:

一种在雾系统中的动态安全信道建立方法,包括如下实体:端用户、雾节点、生成和分发系统参数的机构即可信机构ta,具体包括下列步骤:

(1)全局设置

ta根据初始的安全参数λ运行算法生成系统参数δ;

(2)初始化

系统将运行一个初始化协议;该协议是包含几个初始雾节点(u1,…,ut)的概率多项式时间的交互协议;运行这个协议协商一个组的大小、一个初始公共加密密钥以及每个雾节点的解密密钥;

(3)外部节点加入

当一个外部节点加入到雾系统中,系统会运行外部节点加入协议;这个协议的输入是一个索引i,允许一个节点作为第i个雾节点加入到雾系统中并获得它的解密密钥;运行这个协议之后,公共加密密钥以及每个雾节点的解密密钥必须更新成新的;

(4)雾节点离开

当一个雾节点离开这个雾系统时,系统运行雾节点离开协议;这个协议的输入是一个索引i,将第i个雾节点从系统中删除;运行这个协议之后,公共加密密钥以及每个雾节点的解密密钥必须更新成新的;

(5)加密

一个知道公共加密密钥e的端用户运行加密算法发送会话密钥的密文c给那些索引在索引集合中的雾节点;这个端用户将发送给给在中的雾节点;

(6)解密

一个雾节点的索引为以及解密密钥为sj,运行解密算法解密密文c,从而获得会话密钥。

本发明中,假设雾节点之间在初始化、外部节点加入、雾节点离开这些阶段中通过已经认证的信道进行通信。然而,在这些协议执行过程中不需要秘密信道。建立认证信道最常用的方法是使用数字签名。

当一个端用户想安全的给雾系统中的任意一个雾节点子集发送消息。本发明解决了以下问题:

①没有一个完全可信的第三方给雾节点生成密钥;

②端用户可以是任何节点,不管其是否在雾系统中;

③雾系统是动态的,即系统在第一次初始化后一个用户可以离开和加入这个系统。

附图说明

图1为本发明的流程图。

具体实施方式

本发明的在雾系统中的动态安全信道建立方法,包括如下实体:端用户、雾节点、生成和分发系统参数的机构即可信机构ta,具体包括下列步骤:

(1)全局设置

输入一个安全参数λ,ta根据λ选取一个阶为素数q的循环乘法群其中的生成元为p1,存在双线性映射双线性映射满足以下性质:

a)双线性:对任意的均有成立;

b)非退化性:满足不等于

c)可计算性:存在有效算法,对于均可计算γ是允许组大小的最大值;令集合在本发明的方法中,ta还生成n个形为的元组,n是系统规模可选的种类数。每个元组对应一个可选的组大小。假设对应的组大小是n,则它的生成如下:

1)任取一个整数i,且1≤i≤n,随机选取正整数计算中间值

2)对于1≤i,j≤n,i≠j,计算中间值

3)令

4)令

5)公开系统参数:

在本发明的动态安全信道建立方法中,假设ta是完全可信的并且系统参数δ中的元组是由单个ta生成的。如果雾节点的数量少于组的大小并且ta是不可信的,那么ta可在系统参数生成时嵌入后门,ta可解密发送到雾系统中的密文。原因在于ta可能计算和存储值fiiθ。为了避免以上后门,这里要求ta必须在生成元组后销毁随机数riθ,siθ。一个更有效的方法是使用门限机制,即使用多个ta合作生成元组假设有k个ta,则生成元组的过程如下:

1)任取一个整数i,l,且1≤i≤n,1≤l≤k,随机选取正整数计算中间值

2)对于1≤i,j≤n,i≠j,1≤l≤k,计算中间值

3)计算中间值

4)令

5)令

使用这种门限的方法的好处就是当ta的数量少于k时,无法计算出值fiiθ。

在本发明的动态安全信道建立方法中,一个端用户或者一个雾节点不需要知道或者存储所有的系统参数。假设组大小n与元组相对应。对于一个端用户,他只需要知道参数对于组中的第l个雾节点,他必须存储参数

(2)初始化

雾节点数量的初始值为t,协商的组的大小为n,与元组相对应。这个协议有两个步骤。

第一步:取1≤i≤t,第i个雾节点首先作如下操作:

1)随机选取正整数

2)计算中间值

3)取1≤j≤n,计算中间值

4)公开消息

第二步:取1≤l≤t,第l个组用户作如下操作:

1)计算公共加密密钥

2)计算中间值

3)令作为解密密钥;

4)设st为n位全0串,[st]i表示串st的第i位。对于1≤l≤t,令[st]i=1;

5)第l个用户存储的成员信息为:

(3)外部节点加入

一个外部节点node加入到雾系统中作为第i个雾节点。它需要[st]i=0。这个协议有三个步骤:

第一步:当外部节点node加入到雾系统中,要执行以下操作:

1)随机选取正整数

2)计算中间值

3)取1≤j≤n,计算中间值

4)将消息发送给系统中的所有雾节点;

第二步:当第j个雾节点接收到以上的消息,执行以下操作:

1)令

2)将系统的公钥更新为:

3)更新第j个雾节点的新解密密钥为:

4)置[st]i=1;

雾系统中的一个最低索引雾节点也需要将他自己保持的消息

发送给node;

第三步:当node接收到消息它计算它的解密密钥

然后存储消息

(4)雾节点离开

假设第i个雾节点永久离开这个雾系统,这个雾节点将公开消息然后第j(j≠i)个雾节点执行以下操作:

1)令

2)将公共加密密钥更新为:

3)将第j个组用户的解密密钥更新为:

4)置[st]i=0;

这个算法允许雾节点永久的离开这个雾系统。通过这种机制,在初始化中使得雾节点不需要协商一个非常大的n。

(5)加密

任意一个知道系统公钥的节点都可以作为一个端用户。假设一个端用户想要安全地向系统中的一个雾节点子集发送一个会话密钥。假定这些雾节点的索引形成集合这个端用户需要执行以下步骤:

1)令公钥

2)选择正整数计算密文w2=ea

3)将密文c=(w1,w2)发送给组用户;

(6)解密

为了推导出会话密钥,第i个雾节点需要执行以下操作:

1)计算中间值

2)计算会话密钥

解密算法的正确性可以通过如下操作来验证:

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