去中心化的SDN接入身份认证研究①

2018-09-17 08:49华,刘
计算机系统应用 2018年9期
关键词:拜占庭视图时延

秦 华,刘 乐

1(北京工业大学 网络中心,北京 100124)

2(北京工业大学 信息学部,北京 100124)

随着移动互联网和SDN技术的普遍使用,用户跨域接入网络的需求增长很快,网络接入身份认证面临了巨大的挑战.传统的接入认证方式依赖于认证服务器,可以很好地支持用户在SDN域内移动,FlowNAC[1]与SDFAC[2]均使用扩展后的IEEE802.1x协议,由可信第三方设备根据用户提交的身份信息对接入者进行认证.文献[3]在SDN网络的控制器中设计安全内核SEK,并加入了身份认证功能.文献[4]则给出基于OpenFlow的身份认证控制器SNAC.

跨域用户身份认证不仅依赖于两个域的认证服务器,还依赖于两个域之间事先建立的信任关系.Eduroam[5]在所有相关的域中建立了一套域间信任机制,实现用户使用原域的合法账号,就能在全球已加入Eduroam联盟的其它域登录并访问网络.用户的信息通过用户当前所在域的认证服务器转发给上一级认证服务器,再转发到用户所在域的服务器,最后再将应答发送给接入域.文献[6]介绍并讨论了将Eduroam部署到SDN中的相关问题.文献[7]提出分布式跨域认证系统.在该系统中,用户在经过各自域的认证服务器认证后,由安全通信模块完成跨域的认证信息交互.

无论是本域接入还是跨域接入,上述接入认证方案均由专门的认证服务器实现对用户身份的认证.但是,若既要满足用户认证上网,又要方便用户随时随地接入网络,在认证服务器之间事先建立认证信任关系存在一定的技术复杂性和可行性,无法很好地支持用户灵活跨域上网的认证需求,因此需要研究新的网络接入认证方法.

本文研究去中心化的网络接入身份认证,要求接入身份认证方法既不依赖于认证服务器,同时又不用事先建立域间认证信任关系.借鉴区块链技术[8–11],本文提出了在无需相互信任的主机间设计共识机制实现身份认证,同时记录认证结果支持认证结果可追溯的方案.论文在SDN网络中设计并实现了去中心化的接入身份认证方案BchainNAC.

1 问题描述

定义1.集合AH(Access Host)为已成功接入网络的主机集合.AH集合内节点总数为n,每一个节点按照接入网络的先后顺序设置编号,其中任意一个节点的编号为i∈{1,n},节点记为AHi.本文中AH集合内所有节点组成验证者.

定义2.集合EH(Entry Host)为申请接入网络的主机集合,其中任意一个节点记为EHj,j∈Z.本文中EHj被看作证明者.

本文研究的主要问题是利用AH中的节点对EHj进行身份验证.主要研究内容如下:

(1)在域和域之间无法事先建立信任关系或者是在接入域中无法事先为用户建立帐号等情况下,利用接入申请者公开的身份信息进行身份验证,本文利用接入申请者的公钥信息来进行身份认证.

(2)为了不依赖于认证服务器解决跨域用户接入身份认证,本文借鉴区块链技术的去中心化思想,利用已经接入网络的主机对申请者的身份分别进行认证并达成共识.

(3)为实现认证结果的可追溯性,研究认证结果的存储方法.本文利用区块链存储技术,对认证结果进行存储,支持认证结果可追溯.

2 基于非交互的零知识身份认证证明

假设申请接入网络的主机EHj已生成私钥k,并使用椭圆曲线算法计算得到公钥K,且拥有包含公钥信息的数字证书C.根据非交互式零知识证明[12]原理,AH以非交互式的方式验证EHj身份的可信性.EHj只需向AH集合提交包含自身公钥信息的证明m,由AH集合内的AHi验证m中 认证凭证的所有权以及m中的公钥K与私钥k的对应关系.

m是EHj提交的身份信息,其取值是由Elliptic Curve Cryptography(椭圆加密算法,简称 ECC)[13]对EHj的数字证书C进行数字签名生成.为避免传输过程中产生错误,EHj除了向AH提交证明m以外,还需提交一个辅助证明参数A.A是由数字和字母组成的字符串,是由Base58check[14]对公钥K与对公钥K进行4次哈希运算后生成的字符串的前4位进行连接操作所生成的字符串进行编码而成的.A的取值如下列公式(1)所示:其中,co n cat 函数[15]完成字符串的连接操作;lef t函数[15]完成取字符串的前4位操作;SH A256位哈希函数;RIOPEMD160是信息摘要算法,输出定长为20字节的值.

AH内的节点根据EHj发送的m、A,通过下面三项验证内容来证明EHj的身份可信,即:

(1)验证申请信息的数据格式是否符合系统规则.

系统规则包括数据结构正确、输入输出表不为空、申请信息的大小不能小于最小字节等.

(2)验证m是否有效.

EHj的公钥K对数字签名解密,并与原文的摘要进行比对验证.

(3)验证A是否有效.

AH内的节点计算原始数据的校验码并与A作比对.

3 身份认证共识

AH集合内的节点分别通过上述方法验证EHj的身份后,还需要使用共识机制对验证结果达成共识,集合AH才能对EHj的身份做出最终的判断.

区块链基础架构的共识层中封装许多共识算法[16–19].本文改进实用拜占庭容错算法[20,21],设计了AH集合对EHj的身份达成共识的过程.达成共识的过程包括共识节点对EHj身份达成共识、共识节点存储共识结果.

为保证AH内节点对EHj的接入申请达成共识,需要所有参与达成共识的主机有共同的初始状态,为实现共识结果可追溯,需要存储每一次共识的结果,因此,借鉴区块链架构中共识层和数据层技术,本文设计“区块+链”的结构来存储认证结果.这种存储结构使认证结果具有如下两个特点:第一,每一个区块记录了上一个接入申请完成到该区块生成之前的接入结果,保证了数据的完整性,实现认证结果的可追溯.第二,一旦新的区块生成并被加入到存储结果的最后一个位置后,区块的接入认证记录再也不会改变或者删除,保证了数据库的严谨性,实现认证结果集体维护.

3.1 区块设计

区块是记录共识状态的数据单元,由块头和块身组成.区块块头中主要包括前一区块散列值、下一区块散列值、时间戳[22]、共识结果、区块高度,各参数的主要作用分别为:

前一区块散列值、下一区块散列值:实现新生区块与前一区块、下一区块的链接,以便该区块与前后区块形成先后顺序,在区块间形成链状结构.

时间戳:记录当前区块的写入时间,为数据增加时间维度,使其具有极强的可验证性和可追溯性.

共识结果:记录本次共识的结果.

区块高度:记录当前已存储的区块链中区块的个数,用h来表示,h≥ 0,指网络中已成功进行接入身份认证的主机数量.

3.2 共识机制

针对每一台申请加入网络的主机EHj,集合AH中参与共识的节AHi,均需要对EHj的接入申请进行验证,并使用共识机制对验证结果达成共识.

集合AH内的节点都需要参与对EHj的身份验证、对验证结果达成共识的过程,然而集合AH内的节点有可能无法参与并提交认证信息.因此,集合AH是一个拜占庭系统[23],本文设计的共识机制需要具有一定的容错能力,保证共识机制的安全性和可用性.针对实用拜占庭容错算法的应用场景与本文研究的AH集合的拜占庭系统存在的不同,本文从以下两个方面改进拜占庭容错算法,解决网络中接入身份认证的共识问题.

(1)实用拜占庭容错算法中的节点既可以成为发起共识的申请者,也可以成为达成共识的参与者,而本文研究的网络中集合AH所在的拜占庭系统仅包含参与共识过程的验证者.因此,本文中的共识算法需为每一次共识过程选取一个主节点,AH内的其他节点为副本节点.主节点负责发起一次共识,监控AH对本次共识的共识结果,并通知EHj及AH中的其他节点共识结果.

(2)实用拜占庭容错算法只需要对申请者的请求达成共识,而本文中的共识算法除了需要对申请者的请求达成共识之外,为实现共识结果可追溯,存储共识结果还需要对生成认证结果存储区块达成共识.因此,本文中的共识算法需要分别对EHj身份的认证结果、同意生成认证结果区块的结果达成共识.

3.3 改进的拜占庭容错算法

假设网络初始化后已经存在一定数量的主机.依据拜占庭容错算法可知,只有参与共识的错误节点数f不超过才能达到系统正常运行的安全性和可用性需要.

定义3.视图是一次共识从开始到结束所使用的全部数据的数据集合.每个视图分配一个编号v,编号从0开始且v<n.在AH集合对EHj的身份达成共识的过程中,可能会发起多次共识过程,视图编号v的值逐渐递增,直至在该视图下对EHj的身份达成共识.

假设每次产生区块的时间间隔为t,AH从接收EHj的接入申请到对认证达成共识的过程如图1所示,改进的拜占庭容错算法的步骤如下文.

图1 共识过程

步骤1.AH选取主节点.

AH内所有节点从各自本地存储的区块中读取h,计算主节点,AHi通过:

随机决定主节点AHp,p为主节点的编号.AHi通过比对p与本节点编号,判断本节点是否为主节点.

步骤2.主节点发起共识.

(1)主节点AHp验 证m、A并用ECC 对m的散列值进行数字签名获得表示主节点已验证m、A.

(2)主节点提取本地存储的区块信息生成包含存储区块版本号、前一区块散列值、h等 信息的block,并根据对m、A的验证结果判断是否对block使用E CC进行数据签名获得blockσp.如果验证结果为同意接入,则计算否则不计算blockσp.

(3)主节点AHp向AH中广播包含<h,v,p,block,blockσp>的消息,发起共识.

步骤3.副本节点参与共识.

(1)副本节点AHi(i≠p)收到主节点发送的消息后,验证m、A,并用 E CC 对m的散列值进行数字签名获得mσi.

(2)副本节点AHi(i≠p)根据对m、A的验证结果判断是否对block使用E CC 进行数据签名获得blockσi.如果验证结果为同意接入,则计算blockσi,否则不计算blockσi.

(3)副本节点AHi(i≠p)向AH广播包含 <h,v,i,mσi,blockσi>的信息.

步骤4.AH判定共识及操作.

(1)AH内任一节点依据收到的mσi、blockσi的数量判定共识结果.若mσi、blockσi的数量满足关系:n−f≤mσi的数量≤n,且blockσi的数量≥n–f,共识结果为同意EHj接入网络,并同意生成区块,此时节点在本地生成共识结果区块,并将新生成的区块保存在本地;若mσi、blockσi的数量满足关系:n−f≤mσi的数量≤n,blockσi的数量≤n–f,共识结果为拒绝EHj接入网络,并拒绝生成区块,此时节点不做其他操作.

(2)如果在当前视图下AH在经过2v+i∗t的时间间隔仍未达成共识或者接收到非法接入认证申请后,可以更换视图,直到AH成共识为止.更换视图的方法为AHi发起视图更换请求,视图编号加1,当AHi至少收到n−f个来自不同的副本节点返回的响应时,则返回步骤1,重新开始新一轮达成共识的过程.AH

步骤5.AH对共识的处理.

(1)AH内已确定共识结果的节点依据共识结果处理此次共识.

(2)主节点AHp在获知共识结果后,处理共识结果,将共识结果发送给EHj,并在AH中广播共识结果.

(3)在收到主节点AHp发送的共识结果时仍未知此次共识结果的节点接收主节点AHp的共识结果,依据共识结果处理此次共识.

4 实验及结果分析

依据以上对去中心化的网络接入身份认证问题的研究,本文在SDN网络[24–27]中设计并实现了去中心化的接入身份认证方案BchainNAC.搭建如图2所示的原型环境.

实验环境如下:一台OpenDaylight控制器[28,29]、一台普通交换机、3台OpenFlow交换机、4台主机.在交换协议开发平台上部署Open VSwitch[30,31](开放式虚拟交换机,简称OVS)模拟SDN交换机.使用网桥建立OpenFlow交换机与控制器的连接,由普通交换机作为中转实现控制器与多台OpenFlow交换机连接.主机h1、h2、h3、h4为已经连入SDN的主机.主机h5为接入认证的申请者.每一台主机的配置为:CPU的个数为1,核数为1;内存容量为1GB.

图2 原型环境

测试场景:向原型实验环境中逐渐加入50台主机,且每10台为一组,划分为5组.

将从申请者发起接入申请到申请者获得认证结果所用的时延记作Tt.统计每一组加入SDN时使用的平均时延Tt,实验结果如图3所示.

测试结果及分析:参与共识的主机数与完成接入申请所用时延成正比.从1台到50台接入SDN,Tb的增幅不大,增幅维持在1 s之内.

图3 时延

以组为单位,分别统计参与共识的主机的CPU利用率、内存的使用率,实验结果如图4、图5所示.

图4 CPU 利用率

图5 内存使用率

测试结果及分析:参与共识的主机CPU、内存消耗不大,且每台主机的CPU利用率维持在0.5%、内存使用率维持在0.67%.

将身份认证共识分成两个部分:对接入者身份达成共识、通知申请者认证结果和其他节点存储认证结果.前者使用的时延记作Tc,后者使用的时延为Tt.以组为单位,分别统计每组内平均时延Tc与平均时延Tt占身份认证共识时延的百分比,实验结果如图6所示:

测量结果及分析:对接入者身份达成共识所用时延为身份认证阶段主要时延.通过分析,得知影响共识的主要因素包括:参与共识的主机的个数;主机之间通信的质量;加、解密算法的复杂度.

通过以上实验可知,在SDN网络中,去中心化的接入身份认证所用时延会随着接入SDN网络中主机数的增多而有所提升,但增幅稳定,在接受范围之内.主机因参与共识消耗的CPU及内存较低.通过分析身份认证共识,可以从影响共识的因素入手,优化共识过程.

图6 Tc与Tt占身份认证共识的百分比

5 总结

本文研究去中心化的网络接入身份认证问题,提出的身份认证方案不泄露除自身公钥以外的任何额外信息,既满足移动主机接入网络的灵活需求,又充分考虑网络中主机的不确定性.下一步将继续优化共识机制的效率,以便在更大规模网络中推广应用.

猜你喜欢
拜占庭视图时延
计算机网络总时延公式的探讨
拜占庭帝国的绘画艺术及其多样性特征初探
《舍不得星星》特辑:摘颗星星给你呀
基于GCC-nearest时延估计的室内声源定位
基于移动站的转发式地面站设备时延标校方法
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
《西方史学通史》第三卷“拜占庭史学”部分纠缪
Django 框架中通用类视图的用法