一种OpenStack开源云用户的安全认证方法技术

技术编号:19067205 阅读:32 留言:0更新日期:2018-09-29 14:40
本发明专利技术提出了一种OpenStack开源云用户的安全认证方法,用于解决现有技术中存在的认证成本高的技术问题,实现步骤为:认证服务器计算自己的公钥和私钥;用户计算自己的公钥和私钥;用户向认证服务器发送认证请求;认证服务器对用户的用户名和密码进行验证;认证服务器为用户颁发签名令牌;用户向资源服务器发送签名资源请求;资源服务器对签名令牌和签名资源请求合法性进行验证;资源服务器对用户的请求进行响应;用户对资源服务器发送的密文进行解密;用户对资源服务器响应的合法性进行验证;用户对随机数的合法性进行验证;资源服务器确认用户身份。本发明专利技术采用公钥算法对认证消息进行保密,且不依赖额外硬件,降低了成本。

【技术实现步骤摘要】
一种OpenStack开源云用户的安全认证方法
本专利技术属于身份认证
,涉及一种开源云用户的安全认证方法,具体涉及一种基于公钥的OpenStack开源云用户的安全认证方法。
技术介绍
OpenStack是目前最火的开源云平台,由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。OpenStack是一个IaaS(InfrastructureasaService)软件,在云计算中主要负责虚拟机硬件资源的调度与分配。OpenStack由一系列独立模块构成,例如模块有keystone(认证服务)、nova(计算服务)、cinder(块存储服务)、glance(镜像服务)和neutron(网络服务)等。其中keystone提供认证服务,负责对接入用户的身份进行验证并对用户授权。云计算中IaaS层主要为用户提供虚拟机服务,当用户需要使用云资源时,需要向keystone发送认证请求,即俗称的登录系统,服务器会根据用户注册时授予用户的权限给用户颁发一个令牌,然后用户就可以使用这个令牌去请求对应的资源,对应的资源服务器可以通过令牌鉴别用户的身份和权限,从而提供相应的服务。传统的OpenStack安全认证只提供认证流程,对于信息的保护,只建议在传输过程中使用TLS安全传输协议,除此之外未使用任何安全加密算法,一旦用户信息泄露或者令牌被非法获取,非法分子就能轻松获得用户的资源。针对这种情况,现有的改进方法是请求认证时使用特殊辅助硬件,该硬件用于保存用户的私钥以及数字证书,对用户的身份认证需要借助里面的证书和秘钥,如公布号为CN106936760A名称为“一种登录OpenStack云系统虚拟机的装置和方法”中,用户登录系统需要使用USBKey(一种USB接口的硬件设备,内置智能芯片或者单片机,具有一定的存储空间,可以存储用户的私钥以及数字证书),通过USBKey中保存的证书和秘钥来保证用户身份的合法性。该方法存在的不足之处在于,依赖硬件设备,增加了服务成本,而且用户还需要额外保护此硬件设备,避免丢失或者被盗,同时每次请求都需要使用此设备,导致用户使用不便。
技术实现思路
本专利技术的目的在于克服上述现有技术存在的缺陷,提出了一种OpenStack开源云用户的安全认证方法,用于解决现有技术中存在的认证需要额外硬件设备导致认证成本高的技术问题。本专利技术的技术思路是:通过对通信消息进行签名,以防止通信消息被非法分子篡改,同时资源服务器利用令牌中保存的用户公钥对一个随机数进行加密,如果资源请求者能解密此随机数,则能证明资源请求者身份的合法性,从而在不借助额外硬件设备的情况下完成用户身份认证。根据上述技术思路,实现本专利技术目的采取的技术方案包含步骤如下:(1)认证服务器计算自己的公钥PKs和私钥SKs:(1a)认证服务器根据素数m确定有限域GF(2m),并在GF(2m)上选择椭圆曲线E(a,b),其中a、b表示椭圆曲线的系数;(1b)认证服务器选择椭圆曲线E(a,b)上的任意一点作为E(a,b)的基点P,并根据P的坐标计算P的素阶n;(1c)认证服务器根据P和n,计算自己的公钥PKs和私钥SKs,并将E(a,b)、P、n和PKs对外公开;(1)用户计算自己的公钥PKu和私钥SKu:用户根据P和n,计算自己的公钥PKu和私钥SKu;(3)用户向认证服务器发送认证请求信息:用户将自己的用户名、密码、公钥PKu发送给认证服务器;(4)认证服务器对用户的用户名和密码进行验证:认证服务器在服务器数据库中查询是否存在与接收到的用户名和密码相同的用户,若是,执行步骤(5),否则认证失败;(5)认证服务器为用户颁发签名令牌Tokensign:(5a)认证服务器在服务器数据库中通过用户名查询用户注册时分配给用户的标识符Uid和用户权限Ur,并通过Uid、Ur和PKu构造令牌Token={Uid,Ur,PKu};(5b)认证服务器采用基点P、素阶n和认证服务器私钥SKs,对Token进行签名,得到签名令牌Tokensign,并将Tokensign发送给用户;(6)用户向资源服务器发送签名资源请求Reqres:(6a)用户确定自己所需要的资源Res,并采用认证服务器私钥SKs、基点P和素阶n,通过认证服务器对Res进行签名,得到签名资源请求Ressign;(6b)用户选取随机数Numu,并采用Ressign、Numu和Tokensign构造资源请求Reqres={Numu,Ressign,Tokensign},再将Reqres发送给资源服务器,同时将Numu存入资源服务器数据库,并将Numu状态标记为未接收;(7)资源服务器对Ressign和Tokensign合法性进行验证:资源服务器采用认证服务器的公钥PKs、基点P和素阶n,验证Tokensign和Ressign的合法性,若Tokensign和Ressign两个均合法,执行步骤(8),否则认证失败;(8)资源服务器对用户的身份进行验证:(8a)资源服务器选取随机数Nums和Ks,并采用Nums、Ks和Numu构造资源响应Respon={Nums,Ks,Numu},同时将Nums存入资源服务器数据库,并将Nums状态标记为未接收;(8b)资源服务器采用认证服务器的私钥SKs、基点P和素阶n,通过认证服务器对Respon进行签名,得到签名资源请求Responsign;(8c)资源服务器采用用户的公钥PKu、椭圆曲线E(a,b)、基点P和素阶n对Responsign进行加密,并将密文(C1,C2)发送给用户;(9)用户对资源服务器发送的密文(C1,C2)进行解密:用户采用自己的私钥SKu、椭圆曲线E(a,b)、基点P和素阶n对资源服务器发送的密文(C1,C2)进行解密,得到签名资源请求Responsign;(10)用户对Responsign的合法性进行验证:用户采用认证服务器的公钥PKs、基点P和素阶n,对Responsign的合法性进行验证,若合法,则从Responsign中提取Nums、Numu和Ks,并执行步骤(11),否则认证失败;(11)用户对Numu的合法性进行验证:用户在本地数据库中查询Numu是否为用户发送给资源服务器且状态为未接收的随机数,若是,则将Nums发回资源服务器,同时在资源服务器数据库中将Numu状态标记为已接收,否则认证失败;(12)资源服务器确认用户身份:资源服务器在资源服务器数据库中查询Nums是否为资源服务器发送给用户且状态为未接收的随机数,若是,则用户为Tokensign的合法所有者,同时在用户本地数据库中将Nums的状态标记为已接收,否则认证失败。本专利技术与现有技术相比,具有如下优点:第一,在本专利技术中,利用公钥签名和加密算法来完成对用户的身份认证,不需要额外硬件设备的支持,降低了成本,而且,认证过程对所有认证消息进行签名,保证了消息不会被非法篡改或者伪造,同时,使用令牌进行资源请求时,资源服务器会利用令牌中的公钥加密一个随机数,并要求用户解密此随机数,从而保证了令牌不会被冒用或者重放,同样能保证系统的安全。第二,在本专利技术中,因为使用公钥技术,所以资源服务器收到请求之后,可以自行对请求作验证,不需要本文档来自技高网
...

【技术保护点】
1.一种OpenStack开源云用户的安全认证方法,其特征在于包括如下步骤:(1)认证服务器计算自己的公钥PKs和私钥SKs:(1a)认证服务器根据素数m确定有限域GF(2m),并在GF(2m)上选择椭圆曲线E(a,b),其中a、b表示椭圆曲线的系数;(1b)认证服务器选择椭圆曲线E(a,b)上的任意一点作为E(a,b)的基点P,并根据P的坐标计算P的素阶n;(1c)认证服务器根据P和n,计算自己的公钥PKs和私钥SKs,并将E(a,b)、P、n和PKs对外公开;(2)用户计算自己的公钥PKu和私钥SKu:用户根据P和n,计算自己的公钥PKu和私钥SKu;(3)用户向认证服务器发送认证请求信息:用户将自己的用户名、密码、公钥PKu发送给认证服务器;(4)认证服务器对用户的用户名和密码进行验证:认证服务器在服务器数据库中查询是否存在与接收到的用户名和密码相同的用户,若是,执行步骤(5),否则认证失败;(5)认证服务器为用户颁发签名令牌Tokensign:(5a)认证服务器在服务器数据库中通过用户名查询用户注册时分配给用户的标识符Uid和用户权限Ur,并通过Uid、Ur和PKu构造令牌Token={Uid,Ur,PKu};(5b)认证服务器采用基点P、素阶n和认证服务器私钥SKs,对Token进行签名,得到签名令牌Tokensign,并将Tokensign发送给用户;(6)用户向资源服务器发送签名资源请求Reqres:(6a)用户确定自己所需要的资源Res,并采用认证服务器私钥SKs、基点P和素阶n,通过认证服务器对Res进行签名,得到签名资源请求Ressign;(6b)用户选取随机数Numu,并采用Ressign、Numu和Tokensign构造资源请求Reqres={Numu,Ressign,Tokensign},再将Reqres发送给资源服务器,同时将Numu存入资源服务器数据库,并将Numu状态标记为未接收;(7)资源服务器对Ressign和Tokensign合法性进行验证:资源服务器采用认证服务器的公钥PKs、基点P和素阶n,验证Tokensign和Ressign的合法性,若Tokensign和Ressign两个均合法,执行步骤(8),否则认证失败;(8)资源服务器对用户的请求进行响应:(8a)资源服务器选取随机数Nums和Ks,并采用Nums、Ks和Numu构造资源响应Respon={Nums,Ks,Numu},同时将Nums存入资源服务器数据库,并将Nums状态标记为未接收;(8b)资源服务器采用认证服务器的私钥SKs、基点P和素阶n,通过认证服务器对Respon进行签名,得到签名资源请求Responsign;(8c)资源服务器采用用户的公钥PKu、椭圆曲线E(a,b)、基点P和素阶n对Responsign进行加密,并将密文(C1,C2)发送给用户;(9)用户对资源服务器发送的密文(C1,C2)进行解密:用户采用自己的私钥SKu、椭圆曲线E(a,b)、基点P和素阶n对资源服务器发送的密文(C1,C2)进行解密,得到签名资源请求Responsign;(10)用户对Responsign的合法性进行验证:用户采用认证服务器的公钥PKs、基点P和素阶n,对Responsign的合法性进行验证,若合法,则从Responsign中提取Nums、Numu和Ks,并执行步骤(11),否则认证失败;(11)用户对Numu的合法性进行验证:用户在本地数据库中查询Numu是否为用户发送给资源服务器且状态为未接收的随机数,若是,则将Nums发回资源服务器,同时在用户本地数据库中将Numu状态标记为已接收,否则认证失败;(12)资源服务器确认用户身份:资源服务器在资源服务器数据库中查询Nums是否为资源服务器发送给用户且状态为未接收的随机数,若是,则用户为Tokensign的合法所有者,同时在资源服务器数据库中将Nums的状态标记为已接收,否则认证失败。...

【技术特征摘要】
1.一种OpenStack开源云用户的安全认证方法,其特征在于包括如下步骤:(1)认证服务器计算自己的公钥PKs和私钥SKs:(1a)认证服务器根据素数m确定有限域GF(2m),并在GF(2m)上选择椭圆曲线E(a,b),其中a、b表示椭圆曲线的系数;(1b)认证服务器选择椭圆曲线E(a,b)上的任意一点作为E(a,b)的基点P,并根据P的坐标计算P的素阶n;(1c)认证服务器根据P和n,计算自己的公钥PKs和私钥SKs,并将E(a,b)、P、n和PKs对外公开;(2)用户计算自己的公钥PKu和私钥SKu:用户根据P和n,计算自己的公钥PKu和私钥SKu;(3)用户向认证服务器发送认证请求信息:用户将自己的用户名、密码、公钥PKu发送给认证服务器;(4)认证服务器对用户的用户名和密码进行验证:认证服务器在服务器数据库中查询是否存在与接收到的用户名和密码相同的用户,若是,执行步骤(5),否则认证失败;(5)认证服务器为用户颁发签名令牌Tokensign:(5a)认证服务器在服务器数据库中通过用户名查询用户注册时分配给用户的标识符Uid和用户权限Ur,并通过Uid、Ur和PKu构造令牌Token={Uid,Ur,PKu};(5b)认证服务器采用基点P、素阶n和认证服务器私钥SKs,对Token进行签名,得到签名令牌Tokensign,并将Tokensign发送给用户;(6)用户向资源服务器发送签名资源请求Reqres:(6a)用户确定自己所需要的资源Res,并采用认证服务器私钥SKs、基点P和素阶n,通过认证服务器对Res进行签名,得到签名资源请求Ressign;(6b)用户选取随机数Numu,并采用Ressign、Numu和Tokensign构造资源请求Reqres={Numu,Ressign,Tokensign},再将Reqres发送给资源服务器,同时将Numu存入资源服务器数据库,并将Numu状态标记为未接收;(7)资源服务器对Ressign和Tokensign合法性进行验证:资源服务器采用认证服务器的公钥PKs、基点P和素阶n,验证Tokensign和Ressign的合法性,若Tokensign和Ressign两个均合法,执行步骤(8),否则认证失败;(8)资源服务器对用户的请求进行响应:(8a)资源服务器选取随机数Nums和Ks,并采用Nums、Ks和Numu构造资源响应Respon={Nums,Ks,Numu},同时将Nums存入资源服务器数据库,并将Nums状态标记为未接收;(8b)资源服务器采用认证服务器的私钥SKs、基点P和素阶n,通过认证服务器对Respon进行签名,得到签名资源请求Responsign;(8c)资源服务器采用用户的公钥PKu、椭圆曲线E(a,b)、基点P和素阶n对Responsign进行加密,并将密文(C1,C2)发送给用户;(9)用户对资源服务器发送的密文(C1,C2)进行解密:用户采用自己的私钥SKu、椭圆曲线E(a,b)、基点P和素阶n对资源服务器发送的密文(C1,C2)进行解密,得到签名资源请求Responsign;(10)用户对Responsign的合法性进行验证:用户采用认证服务器的公钥PKs、基点P和素阶n,对Responsign的合法性进行验证,若合法,则从Responsign中提取Nums、Numu和Ks,并执行步骤(11),否则认证失败;(11)用户对Numu的合法性进行验证:用户在本地数据库中查询Numu是否为用户发送给资源服务器且状态为未接收的随机数,若是,则将Nums发回资源服务器,同时在用户本地数据库中将Numu状态标记为已接收,否则认证失败;(12)资源服务器确认用户身份:资源服务器在资源服务器数据库中查询Nums是否为资源服务器发送给用户且状态为未接收的随机数,若是,则用户为Tokensign的合法所有者,同时在资源服务器数据库中将Nums的状态标记为已接收,否则认证失败。2.根据权利要求1所述的一种OpenStack开源云用户的安全认证方法,其特征在于,步骤(1c)中所述的认证服务器根据P和n,计算自己的公钥PKs和私钥SKs,实现步骤为:(1c1)认证服务器在1到n-1之间随机选取一个整数作为自己私钥SKs;(1c2)认证服务器计算SKs·P,并将SKs·P作为自己的公钥PKs。3.根据权利要求1所述的一种OpenStack开源云用户的安全认证方法,其特征在于,步骤(2)中所述的用户根据P和n,计算自己的公钥PKu和私钥SKu,实现步骤为:(2a)用户在1到n-1之间随机选取一个整数作为自己私钥SKu;(2b)用户计算SKu·P,并将SKu·P作为自己的公钥PKu。4.根据权利要求1所述的一种OpenStack开源云用...

【专利技术属性】
技术研发人员:董庆宽董乙平陈原周翔宇胡杰王俊梅李随鑫
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1