本发明属于软件服务技术领域,更具体地,涉及一种产品多租户安全授信方法、系统及电子设备。
背景技术:
多租户是指软件架构支持一个实例服务多个用户(customer),每一个用户被称之为租户(tenant),软件给予租户可以对系统进行部分定制的能力,如用户界面颜色或业务规则,但是他们不能定制修改软件的代码。在云计算领域,由于新的服务模型利用了虚拟化和远程访问,多租户的含义已被扩展。例如,软件即服务(saas)提供者,利用运行在一个数据库实例上的应用系统,向多个用户提供web访问服务。在这个场景下,租户之间的数据是隔离的,并且保证每个租户的数据对其他租户不可见。
不管是在传统的应用场景还是云计算应用场景下,软件提供者需要一套安全授信方法,来保证自己的软硬件产品不被滥用。现有的产品多租户安全授信方法中,通常租户使用云平台上不同的服务时,例如ecs弹性计算资源、中间件、第三方服务等,基于不同的服务提供方可能采用的授权与认证的解决方案不一致,对平台的软硬件要求高、效率低。另外,现有的产品多租户的安全授信方法多采用rsa加密算法,在速度和安全性上不能满足需求。
技术实现要素:
针对现有技术的至少一个缺陷或改进需求,本发明提供了一种产品多租户安全授信方法、系统及电子设备,通过根据被授权租户的私钥和信息摘要来生成签名证书的方式来进行安全授信,可以提高证书的安全性和高效性。
为实现上述目的,按照本发明的第一方面,提供了一种产品多租户安全授信方法,包括授权步骤和验证步骤;
所述授权步骤包括:
采用非对称加密算法对被授权租户生成唯一的一对私钥和公钥,存储公钥与被授权租户的关联关系;
读取被授权租户的个人信息及授权信息,生成被授权租户的信息摘要;
利用被授权租户对应的私钥和信息摘要生成被授权租户的签名证书;
所述验证步骤包括:
接收被验证租户的验证请求,读取被验证租户的验证信息及关联的公钥;
获取被验证租户的签名证书,利用被验证租户的验证信息及关联的公钥对被验证租户的签名证书进行验证。
优选地,所述采用非对称加密算法对被授权租户生成唯一的一对私钥和公钥的过程中加入盐值。
优选地,所述对被验证租户的签名证书进行验证包括:
利用被验证租户的验证信息及关联的公钥对被验证租户的签名证书进行解密,提取该签名证书中的信息摘要;
将被验证租户的验证信息与提取的信息摘要进行验证。
优选地,当被授权租户的授权信息发生变化,根据被授权租户的个人信息和变化的授权信息为被授权租户生成新的信息摘要;
利用被授权租户对应的私钥和新的信息摘要重新生成被授权租户的签名证书。
优选地,所述授权步骤包括:在所述生成被授权租户的签名证书之后,采用aes256加密算法对签名证书进行加密;
所述验证步骤包括:在所述对被验证租户的签名证书进行验证之前,通过解密算法对该租户的签名证书进行解密。
优选地,所述非对称加密算法为椭圆曲线数字签名算法。
按照本发明的第二方面,提供了一种产品多租户安全授信系统,其特征在于,包括授信装置和验证装置;
所述授权装置包括:
密钥生成模块,用于采用非对称加密算法对被授权租户生成唯一的一对私钥和公钥,存储公钥与被授权租户的关联关系;
信息摘要生成模块,用于读取被授权租户的个人信息及授权信息,生成被授权租户的信息摘要;
签名证书生成模块,用于利用每个租户对应的私钥和信息摘要生成每个租户的签名证书;
所述验证装置包括:
读取模块,用于接收被验证租户的验证请求,读取被验证租户的验证信息及关联的公钥;
验证模块,用于获取被验证租户的签名证书,利用被验证租户的验证信息及关联的公钥对被验证租户的签名证书进行验证。
按照本发明的第三方面,提供了一种电子设备,包括处理器和存储器,其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现上述任一项所述的方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有有益效果:
(1)使得不同的服务提供方可以采用相同的授权与认证方案,对平台的软硬件要求高、效率低,并且满足多租户共用的场景,对不同的租户只需要维护一套加密算法和验证算法,根据不同租户的私钥和信息摘要为每个租户生成不同的签名证书,安全性和效率都较现有技术有较大的提高。
(2)在非对称加密的过程中加入盐值,进一步提高了证书的安全性。另外,相较于主流的rsa数字签名算法,本发明采用ecdsa非对称加密算法进一步大大提高了证书的安全性和高效性。
(3)将私钥加密生成证书的过程和公钥解密的过程隔离开来,进一步增强了该体系的安全性。
(4)证书的保存采用了二次加密,确保在云模式下不同租户的证书解密方式不同,避免了证书“滥用共享”的情况。
(5)当授权信息改变,信息摘要的动态变更可以采用相同算法生成不同的证书,并在产品端采用相同的算法进行证书解密和证书摘要信息提取,以实现证书的动态续签。
(6)整套方案中的安全性保证和信息摘要都可以根据实际产品形态和业务形态动态扩展。
附图说明
图1是本发明实施例提供的一种产品多租户安全授信方法的原理示意图;
图2是本发明实施例提供的一种产品多租户安全授信方法的授权步骤流程图;
图3是本发明实施例提供的一种产品多租户安全授信方法的验证步骤流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明实施例提供的一种产品多租户安全授信方法、系统及电子设备的原理,如图1所示。通常,软件服务系统包括产品服务器端和产品客户端,为了对软件服务进行安全授信,在软件服务系统上部署本发明的产品多租户安全授信系统。本发明实施例的产品多租户安全授信系统包括授权装置和验证装置。授权装置被部署在产品服务器端,用来提供给产品运营团队进行产品的授权管理。验证装置被部署在产品客户端,用来对租户进行验证,判断该租户是否具有产品的使用权限等。租户通过购买等方式来获得产品的使用权限。在一种具体的实现中,授权装置和验证装置可以是一个软件小工具,与产品的源码隔离开来,便于维护。
本发明实施例所提供的一种产品多租户安全授信方法,包括授权步骤和验证步骤。授权步骤可以由服务器端的授权装置执行。验证步骤可以由嵌入产品客户端的验证装置执行。
授权步骤,如图2所示,包括:
s1,采用非对称加密算法对被授权租户生成唯一的一对私钥和公钥,存储公钥与被授权租户的关联关系。
例如,当租户在平台中首次注册时,产品多租户安全授信装置基于租户的注册请求,为每个租户生成唯一的一对私钥和公钥。
公钥信息被发送给验证装置,验证装置将每个租户的公钥与租户的唯一识别码关联保存,即公钥与租户具有一一对应的关系,以便步骤s4中可以根据验证请求读取租户对应的公钥,来对签名证书进行有效性验证和信息摘要提取。
私钥用来提供给步骤s3结合信息摘要来生成签名证书。
优选地,采用椭圆曲线数字签名算法(ellipticcurvedigitalsignaturealgorithm,缩写:ecdsa)为每个租户生成唯一的一对私钥和公钥。
优选地,在采用非对称加密算法为被授权租户生成唯一的一对私钥和公钥的过程中加入盐值(salt),即生成经盐值散列后的随机秘钥对。盐值相当于加密的密钥,增加破解的难度,加强了单向散列计算的安全性。常用的单向散列算法有md5、sha等。单向散列算法还有一个特点就是输入的任何微小变化都会导致输出的完全不同。盐值可以根据实际产品形态和业务形态动态改变,例如在常规情况下如单机产品中,可以是cpu、主板或bios序列号、mac地址等,在云镜像模式下,秘钥对生成的盐值可以是租户码、uuid。通过加入盐值可以进一步加强授信的安全性。
s2,读取被授权的租户的个人信息及授权信息,生成被授权租户的信息摘要。
个人信息可以是租户登录名、手机号、邮箱等唯一标识。
授权信息可以是租户通过购买服务等方式获得产品的授权后,产品运营团队会根据购买的具体内容生成授权信息,例如,支持的用户数量、存储空间、有效时间、授权网络ip地址段等。
授权装置会读取被授权租户的个人信息及授权信息,根据租户的个人信息以及授权信息生成对应的信息摘要。
优选地,当被授权租户的授权信息发生变化,根据被授权租户的个人信息和变化的授权信息为该租户生成新的信息摘要;利用该租户对应的私钥和新的信息摘要重新生成该租户的签名证书。例如,当租户需要续签产品授权时间、扩编授权用户数或扩容存储空间等,可以生成新的授权信息,从而更新信息摘要,生成新的签名证书,实现对授信有效性的热更新,而无需重启产品。
s3,利用每个租户对应的私钥和信息摘要生成被授权租户的签名证书。
签名证书被提供给验证装置进行验证。可以有多种具体的实现形式。一种方式是将生成的签名证书嵌入到产品客户端中;另一种方式是将生成的签名证书发送给第三方签名证书管理中心进行管理。生成的签名证书,也可以选择性地颁发给租户留档。
优选地,对生成的签名证书采用aes256加密算法进行加密保护,确保产品不同租户解密密钥不同,以防止租户之间证书共享。
验证步骤,如图3所示,包括:
s4,接收被验证租户的验证请求,读取被验证租户的验证信息及关联的公钥。
验证请求可以是租户登录产品系统时的登录请求,也可以是产品中的预先设置的定时验证请求。
该租户的验证信息可以是用户登录时的用户名、时间等信息。
关联的公钥是根据步骤s1中授权装置发送给验证装置的公钥及及公钥和被授权租户的关联关系来查找的。
s5,获取被验证租户的签名证书,利用被验证租户的验证信息及关联的公钥对被验证租户的签名证书进行验证。
若步骤s3生成的签名证书被嵌入到产品客户端中,则当验证装置接收到租户验证请求后,从产品客户端中获得该租户的签名证书。若步骤s3生成的签名证书被发送给第三方签名证书管理中心进行管理,则当验证装置接收到租户验证请求,从第三方签名证书管理中心获得该租户的签名证书。
进行验证的过程包括两个步骤:第一步骤是利用被验证租户的验证信息及关联的公钥对被验证租户的签名证书进行解密,验证公钥是否与签名证书中的私钥匹配,若验证成功则可以提取该签名证书中信息摘要。第二步骤将被验证租户的验证信息与提取后的信息摘要中的记载的信息做比对校验,来判断租户是否有产品客户端相应操作的权限。
优选地,在租户登录产品客户端后,产品客户端还可以先判断该租户是否是该产品所属租户,若判断该租户是该产品所属租户,则产品客户端读取该租户关联的公钥。
优选地,若步骤s3之后对生成的签名证书采用aes256加密算法进行加密保护,则在对该租户的签名证书进行验证之前通过解密算法对该租户的签名证书进行解密。
优选地,若根据提取的信息摘要得知已经超过了该租户的授权有效期后,则提示该租户进行续签,在租户完成续签操作后更新证书摘要信息,触发系统重新生成新的证书,也可以由产品运营团队使用运营管理平台工具生成新的有效证书,颁发给租户,然后在平台上更新证书。
应当理解的是,上述步骤虽然编有序号,但并不必然按照序号顺序执行,除非本文中有明确的说明,或者从本文的描述中可以直接推定顺序。
下面具体说明采用ecdsa非对称加密算法的优点。ecdsa算法中的签名中采取的算法为ecc,能够大大提高证书的安全性和高效性,相较于现有技术中一般采用的rsa数字签名算法,在许多方面都有对绝对的优势。主要体现在以下方面:抗攻击性强,相同的密钥长度,其抗攻击性要强很多倍;计算量小,处理速度快,ecc总的速度比rsa、dsa要快得多;存储空间占用小,ecc的密钥尺寸和系统参数与rsa、dsa相比要小得多,意味着它所占的存贮空间要小得多,这对于加密算法在ic卡上的应用具有特别重要的意义;带宽要求低,当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ecc带宽要求却低得多,带宽要求低使ecc在无线网络领域具有广泛的应用前景。
表1、2分别是表示是rsa和ecc的速度和安全性的比较。
表1:rsa和ecc速度比较
表2:rsa和ecc安全性比较
本发明实施例的一种产品多租户安全授信系统,包括授信装置和验证装置;
授权装置包括:
密钥生成模块,用于采用非对称加密算法对被授权租户生成唯一的一对私钥和公钥,所述公钥及公钥和被授权租户的关联关系被发送给验证装置;
信息摘要生成模块,用于读取被授权租户的个人信息及授权信息,生成被授权租户的信息摘要;
签名证书生成模块,用于利用每个租户对应的私钥和信息摘要生成被授权租户的签名证书;
验证装置包括:
读取模块,用于接收被验证租户的验证请求,读取被验证租户的验证信息及关联的公钥;
验证模块,用于获取被验证租户的签名证书,利用被验证租户的验证信息及关联的公钥对被验证租户的签名证书进行验证。
在一个实施例中,所述授权装置还包括加密模块,用于在所述生成每个租户的签名证书之后,采用aes256加密算法对签名证书进行加密;
所述验证装置还包括解密模块,用于在所述利用该租户关联的公钥对该租户的签名证书进行验证之前,通过解密算法对该租户的签名证书进行解密。
本实施例提供的产品多租户安全授信系统的实现原理、技术效果与上述方法类似,此处不再赘述。
下面来具体说明本发明的上述一种产品多租户安全授信方法、系统的软件实现方法。本发明的软件实现不限开发和设计语言,以下提供的为基于golang(简称go语言)的一种实现方式。
在产品服务器端的软件实现:
1、定义信息摘要结构体,主要属性:唯一性code编码、授权用户邮箱、授权用户总数、授权有效时间(如上:可动态扩展)
2、定义密钥对生成的方法并实现,根据开发语言可选用成熟的基础库调用api实现,go语言可采用"crypto/ecdsa"和"crypto/elliptic",(如上:可以动态加入盐值随机数以强化)
3、定义生成随机唯一性code编码的方法并实现,一种实现方式:通过当前时间戳的纳秒数为随机种子,生成指定位数的随机数并动态拼接为指定格式,如:xxxx-xxxx-xxxx-xxxx
4、定义aes256算法下的数据加密方法并实现,主要参数:原始数据、加密秘钥,一种实现方式:根据秘钥的长度动态拼装出32位分组key(规则自定义,如倍数重复加上缺位补齐),然后借助成熟的基础库调用api实现加密,go语言可采用"crypto/aes"
5、定义license生成方法并实现,主要参数:信息摘要数据,租户加密秘钥,一种实现方式:二进制序列化信息摘要备用,然后调用上述定义的秘钥对生成方法生成秘钥,再根据秘钥和摘要信息通过ecdsa中的hash签名算法生成证书,将证书进行base32或base64编码后,再通过租户加密秘钥调用上述定义的aes256加密方法进行二次加密,返回最后的加密数据。
产品客户端的软件实现可以放在产品源码中,包括:
1、定义aes256解密方法并实现,主要参数:加密数据,解密秘钥,一种实现方式:对应上述aes256加密算法中对秘钥的动态处理方式生成最终的32位分组key,然后调用基础库api对加密数据进行解密并返回解密后的明文数据。
2、定义license的正确性验证性方法并实现,主要参数:license数据,一种实现方式,对应上述license的编码方法,首先进行base32或base64位的解密,然后获取到前期生成的密钥对中的公钥,使用公钥对证书有效性进行验证(同上,基础库中有相应的api)
3、定义license摘要信息获取方法并实现,主要参数:加密后的license数据,一种实现方式,首先对加密后的license数据调用上述aes256解密算法进行解密获得明文数据,然后调用上述license的正确性验证方法进行正确性校验,验证通过后的license通过反序列化读取摘要信息并返回
4、定义license的有效性验证方法并实现,主要参数:加密后的license数据,一种实现方式,首先调用摘要信息获取方法获取摘要信息,通过摘要信息中的限制条件进行比对,比如:当前时间与授权有效时间的前后、当前注册用户数与授权用户总数等进行得出证书有效性的判断。
为了实现上述实施例,本发明实施例还提出一种电子设备,包括:处理器和存储器。其中,存储器和处理器之间直接或间接地电性连接,以实现数据的传输或交互。存储器中存储有计算机程序,计算机程序被处理器执行时可以实现上述任一产品多租户安全授信方法实施例的技术方案。处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理。处理器可以是一种集成电路芯片,具有信号的处理能力。处理器在接收到执行指令后,执行程序。可选地,上述存储器内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。本实施例提供的电子设备的实现原理、技术效果与上述方法类似,此处不再赘述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
1.一种产品多租户安全授信方法,其特征在于,包括授权步骤和验证步骤;
所述授权步骤包括:
采用非对称加密算法为被授权租户生成唯一的一对私钥和公钥,存储公钥与被授权租户的关联关系;
读取被授权租户的个人信息及授权信息,生成被授权租户的信息摘要;
利用被授权租户对应的私钥和信息摘要生成被授权租户的签名证书;
所述验证步骤包括:
接收被验证租户的验证请求,读取被验证租户的验证信息及关联的公钥;
获取被验证租户的签名证书,利用被验证租户的验证信息及关联的公钥对被验证租户的签名证书进行验证。
2.如权利要求1所述的一种产品多租户安全授信方法,其特征在于,所述采用非对称加密算法对被授权租户生成唯一的一对私钥和公钥的过程中加入盐值。
3.如权利要求1或2所述的一种产品多租户安全授信方法,其特征在于,所述对被验证租户的签名证书进行验证包括:
利用被验证租户的验证信息及关联的公钥对被验证租户的签名证书进行解密,提取该签名证书中的信息摘要;
将被验证租户的验证信息与提取的信息摘要进行验证。
4.如权利要求1或2任一项所述的一种产品多租户安全授信方法,其特征在于,当被授权租户的授权信息发生变化,根据被授权租户的个人信息和变化的授权信息为被授权租户生成新的信息摘要;
利用被授权租户对应的私钥和新的信息摘要重新生成被授权租户的签名证书。
5.如权利要求1或2任一项所述的一种产品多租户安全授信方法,其特征在于,
所述授权步骤包括:在所述生成被授权租户的签名证书之后,采用aes256加密算法对签名证书进行加密;
所述验证步骤包括:在所述对被验证租户的签名证书进行验证之前,通过解密算法对该租户的签名证书进行解密。
6.如权利要求1或2所述的一种产品多租户安全授信方法,其特征在于,所述非对称加密算法为椭圆曲线数字签名算法。
7.一种产品多租户安全授信系统,其特征在于,包括授信装置和验证装置;
所述授权装置包括:
密钥生成模块,用于采用非对称加密算法为被授权租户生成唯一的一对私钥和公钥,所述公钥及公钥和被授权租户的关联关系被发送给验证装置;
信息摘要生成模块,用于读取被授权租户的个人信息及授权信息,生成被授权租户的信息摘要;
签名证书生成模块,用于利用每个租户对应的私钥和信息摘要生成被授权租户的签名证书;
所述验证装置包括:
读取模块,用于接收被验证租户的验证请求,读取被验证租户的验证信息及关联的公钥;
验证模块,用于获取被验证租户的签名证书,利用被验证租户的验证信息及关联的公钥对被验证租户的签名证书进行验证。
8.如权利要求7所述的一种产品多租户安全授信系统,其特征在于,
所述授权装置还包括加密模块,用于在所述生成每个租户的签名证书之后,采用aes256加密算法对签名证书进行加密;
所述验证装置还包括解密模块,用于在所述利用该租户关联的公钥对该租户的签名证书进行验证之前,通过解密算法对该租户的签名证书进行解密。
9.如权利要求7或8所述的一种产品多租户安全授信系统,其特征在于,所述授权装置被部署在产品服务器上;
所述验证装置被部署在产品客户端上。
10.一种电子设备,包括处理器和存储器,其特征在于,
其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现如权利要求1至6中任一项所述的方法。
技术总结