一种应用于分布式系统的加密方法及系统
技术领域
本发明涉及数据安全领域,尤其涉及一种应用于分布式系统的加密方法及系统。
背景技术
随着科学技术的发展,人们对电脑技术的研究更加地全面,对机密信息的探测途径越来越多。对于密码算法而言,传统仅局限于通信信道中信息的截取与分析已经无法满足攻击者的需求,他们已经逐渐开始将目标定位于密码算法的运行平台(如个人电脑、服务器等),通过越来越先进的技术对算法运行时的内部状态进行观测、改动等操作,从而获取机密信息,破坏密码算法所要保护的机密性、完整性、不可否认性等。
这样的攻击方式被称之为白盒攻击。传统的密码算法在这样的攻击环境的平台上运行毫无安全性可言,因此需要研究开发出一种新的密码技术,能够在不可信任平台上运行时保证所需的安全性,达到更高级别信息安全的目的。
白盒密码即是这样一种密码技术,通过结合代数、概率、混淆、软件保护、信息隐藏等知识,研究如何设计安全的白盒密码算法和白盒攻击环境下密码算法的安全评估;用于保护密码算法及其相关软件在不可信任环境下的安全执行;白盒密码是对传统黑盒密码安全概念的一次颠覆,它将更加全面地保护机密信息。
白盒密码可以应用到任何在不可信任的运行平台上执行的密码方案,因此其应用前景非常的广泛,可以应用于数字内容的安全发行,为内容创作者和提供者的数字资产提供防止盗窃或滥用的安全保护;可以应用于无线自组网络、云计算等的安全计算,为不可信任终端处理机密信息提供防观测、防篡改、防窃取等服务;可以应用于软件保护,破坏软件设计的原有的结构从而防止逆向工程等等。
然而,在白盒密码的技术实现方面,到目前为止还未有公认的安全的且实现效率较高的白盒密码方案出现,因此,设计能够抵抗白盒攻击的安全有效的密码算法迫在眉睫,是目前保证网络安全的一个重要手段。
发明内容
为了解决上述技术问题,本发明提供一种应用于分布式系统的加密方法及系统。
本发明是以如下技术方案实现的:
一种加密方法,所述方法应用于服务器-客户端架构或者服务器-浏览器架构的分布式系统之中,所述方法包括:
服务器获取用户的数据加密请求,所述数据加密请求包括关键字、安全等级标识、待加密数据的长度和用户标识;
根据所述关键字和用户标识获取用户所在的一个或者多个群组标识;所述群组标识包括所述群组标识中的群组所具备的安全等级;若获取到的群组标识为多个,则从中按照约定算法选择一个目标群组标识;若获取到的群组标识只有一个,则获取到的群组标识即为目标群组标识;所述目标群组的安全等级不低于所述安全等级标识表征的安全等级;
按照预设算法根据所述用户标识、目标群组标识和所述待加密数据的长度得到特征值;所述特征值算法为p=Mid1+Nid2+mod(L/1024),其中p表示特征值,Mid1为用户标识对应的特征值第一分量,Nid2为目标群组标识对应的特征值第二分量,L为待加密数据长度,以kb为单位;
根据所述特征值在预设的加密算法集合中抽取加密因子并将所述加密因子传输至客户端,所述加密因子混合表、包括第一混合种子、第二混合种子、第一加密算法和第二加密算法;
客户端按照所述混合表设置按键与输入的字符的对应关系,根据所述对应关系和输入的按键序列获取字符,并将所述字符存储至字符输入区;按照预设的第一混合算法将字符输入区的字符与所述第一混合种子混合以生成目标字符串;
根据所述第一加密算法对所述目标字符串进行加密得到加密字符串;按照预设的第二混合算法将所述加密字符串和所述第二混合种子进行混合以得到混合加密字符串;
获取自身硬件信息,根据所述硬件信息和所述混合加密字符串生成加密密钥;
根据所述第二加密算法将所述混合加密字符串,结合所述加密密钥运算得到加密密文,将所述加密密文发送至服务器。
进一步地,所述第一混合种子和第二混合种子可以包括一个或多个字符串的组合,所述字符串可以包括英文、数字、符号及其组合。
进一步地,若所述第一加密算法为公钥加密算法,则所述加密因子还包括加密密钥,不同的第一加密算法所对应的公钥加密算法的保密级别和得到的加密密钥长度不同。
进一步地,所述第一加密算法是异或运算或者对称算法等任意一种可逆运算方法;所述第二加密算法是SM3、MD5等杂凑算法进行运算得到的算法。
进一步地,所述待加密数据可以为应用于某种加密算法的密钥。
进一步地,所述特征值为正整数。
一种加密系统,所述系统包括服务器和客户端,
所述服务器包括:
请求获取模块,用于服务器获取用户的数据加密请求,所述数据加密请求包括关键字、安全等级标识、待加密数据的长度和用户标识;
目标群组标识获取模块,用于根据所述关键字和用户标识获取用户所在的一个或者多个群组标识;所述群组标识包括所述群组标识中的群组所具备的安全等级;若获取到的群组标识为多个,则从中按照约定算法选择一个目标群组标识;若获取到的群组标识只有一个,则获取到的群组标识即为目标群组标识;所述目标群组的安全等级不低于所述安全等级标识表征的安全等级;
特征值获取模块,用于按照预设算法根据所述用户标识、目标群组标识和所述待加密数据的长度得到特征值;所述特征值算法为p=Mid1+Nid2+mod(L/1024),其中p表示特征值,Mid1为用户标识对应的特征值第一分量,Nid2为目标群组标识对应的特征值第二分量,L为待加密数据长度,以kb为单位;
加密因子处理模块,用于根据所述特征值在预设的加密算法集合中抽取加密因子并将所述加密因子传输至客户端,所述加密因子包括混合表、第一混合种子、第二混合种子、第一加密算法和第二加密算法;
所述客户端包括:
字符输入模块,用于按照所述混合表设置按键与输入的字符的对应关系,根据所述对应关系和输入的按键序列获取字符,并将所述字符存储至字符输入区;
目标字符串生成模块,用于按照预设的第一混合算法将字符输入区的字符与所述第一混合种子混合以生成目标字符串;
混合加密字符串得到模块,用于根据所述第一加密算法对所述目标字符串进行加密得到加密字符串;按照预设的第二混合算法将所述加密字符串和所述第二混合种子进行混合以得到混合加密字符串;
加密密钥生成模块,用于获取自身硬件信息,根据所述硬件信息和所述混合加密字符串生成加密密钥;
加密密文处理模块,用于根据所述第二加密算法将所述混合加密字符串,结合所述加密密钥运算得到加密密文,将所述加密密文发送至服务器。
本发明的有益效果是:
本发明提供一种应用于分布式系统的加密方法及系统,通过根据用户标识、关键字以及安全等级标识获取加密因子,并根据加密因子对待加密数据进行加密,使得整个加密过程实现了将算法密钥融合到算法中的加密技术。充分利用用户的个人信息以及社交信息获取对应的加密因子,使得加密因子因用户的需求而动态变动,从而在终端产生出不同的加密算法,不仅使得用户能够有更为自主的选择加密方法,而且能够进一步提升加密的复杂度,提升了数据安全性。进一步地,加密因子通过提供混合表对终端获取的字符进行加密,进一步提升了数据安全性。
附图说明
图1是本发明实施例提供的应用于分布式系统的加密方法流程图;
图2是本发明实施例提供的加密因子的获取方法流程图;
图3是本发明实施例提供的群组的查找方式流程图;
图4是本发明实施例提供的加密过程流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
实施例1:
一种应用于分布式系统的加密方法,所述方法应用于服务器-客户端架构或者服务器-浏览器架构的分布式系统之中,如图1所示所述方法包括:
S101.服务器获取用户的数据加密请求,并返回加密因子。
具体地,所述数据加密请求包括关键字、安全等级标识、待加密数据的长度和用户标识。所述待加密数据可以为某个加密算法的密钥。所述关键字可以为空。
具体地,加密因子的获取方法如图2所示,包括下述步骤:
S1011.根据所述用户标识获取用户所在的一个或者多个群组标识;所述群组标识包括所述群组标识中的群组所具备的安全等级。
S1012.判断获取到的群组标识的数量。
群组是可表示多用户之间通信关系的数据对象,群组中的各个用户标识所对应的终端之间可以进行一对多、多对一以及多对多之间的通信。可利用群组标识将多个用户标识联系起来而用来表示群组,群组中的任意一个用户标识所对应的终端能够与该群组中的其它用户标识所对应的终端通信,从而可以实现多方通信。群组包括但不限于即时通信群组、基于社交网络的群组、多人语音通信组、多人视频通信组、基于已有的群组而建立的讨论组、多人会话组等。不同的群组的安全等级可能不同,其对应的加密因子也可能产生不同,因此,本实施例中对于群组的选择结果将直接影响到加密因子的获取结果,从而对终端的加密复杂度产生影响。而用户并不能够完全按照自己的意愿选择加密因子,而需要受制于用户所处的社会关系(群组),避免低等级的用户使用高等级的加密服务而导致的资源浪费。
所述群组的查找方式如图3所示,包括:
S1.根据用户标识获取用户所在的群组集,所述群组集为用户所在的全部群组构成的集合;
S2.在所述群组集中查找到与关键字匹配的群组;
服务器响应于该群组查找请求,根据群组查找请求所携带的关键字来查找与该关键字匹配的群组。具体可以将该关键字进行分词获得关键字分词,判断该关键字分词是否存在于群组的群组文本资料中来判断该关键字是否与该群组匹配。从而可以查找到与关键字匹配的群组,获得查找到的群组。其中,群组文本资料包括但不限于群组标识、群组名称、群组介绍信息、群组分类信息、群组地理位置信息和群组标签信息等。
S3.根据多个维度的排序因子分别计算每个查找到的群组对应每一维度的排序值。
排序值是对查找到的群组进行排序的数值形式的直接依据,比如可以百分制分数的形式表示。预设了多个维度,对于每一个查找到的群组,服务器将计算其对应多个维度中每一个维度的排序值。具体计算对应一个维度的排序值时,根据该维度的排序因子进行计算。排序因子是指为对查找到的群组进行排序而计算相应的排序值时应考虑的因素或成分。排序因子包括但不限于群组成员数量、群组成员容量、是否为预设指定群组、群组活跃度、群组活跃等级、群组地理位置、是否被举报存在安全风险的群组安全属性、经服务器自动分析而确定的群组是否存在安全风险的群组安全属性、群组标志位、加入群组的难易等级、群组资料完整度、群组有效管理数、群组信息丰富度、群组关系稠密度、群组性别分布数据、群组年龄分布数据和根据关键字和群组文本资料计算获得的文本相关度。
S4.根据多个维度各自的排序优先级别和每个查找到的群组所对应每一维度的排序值对查找到的群组进行排序。
多个维度中每个维度各自具有排序优先级别,且每个维度的排序优先级别高低各不相同,排序优先级别高的维度在排序时优先被考虑。具体地,总体上按照排序优先级别从高到低的顺序而根据相应的维度的排序值对查找到的群组进行排序,当多个群组对应同一维度的排序值相同时,再按照该多个群组对应的排序优先级别仅次于该同一维度的维度的排序值来对该多个群组进行局部排序。
S5.获取带有排序结果的一个或多个群组标识。
S6.从所述排序结果中删除不符合安全规定的群组标识,所述不符合安全规定的群组的安全等级低于所述安全等级标识表征的安全等级。
S1013.若获取到的群组标识为多个,则从中按照约定算法选择一个目标群组标识。
进一步地,服务器可以将S6中的结果反馈至用户,由用户选择目标群组标识,也可以按照约定算法由服务器自行选择。
S1014.若获取到的群组标识只有一个,则获取到的群组标识即为目标群组标识。
S1015.按照预设算法根据所述用户标识、目标群组标识和所述待加密数据的长度得到特征值;所述特征值算法为p=Mid1+Nid2+mod(L/1024),其中p表示特征值,Mid1为用户标识对应的特征值第一分量,Nid2为目标群组标识对应的特征值第二分量,L为待加密数据长度,以kb为单位。
具体地,Mid1和Nid2可以在服务器一侧进行设置,特征值算法也可以根据实际需要进行变动。
S1016.根据所述特征值在预设的加密算法集合中抽取加密因子,所述加密因子包括混合表、第一混合种子、第二混合种子、第一加密算法和第二加密算法。
加密算法集合用于表征特征值以及与特征相对应的加密因子之间的对应关系,所述特征值为正整数,每个特征值对应于唯一的一组加密因子。特征值越高,对应的加密因子越复杂,相应的,使用加密因子对数据进行加密的安全性也就越高。
S102.客户端根据所述加密因子对数据进行加密,并将加密结果反馈至服务器。
具体地,客户端加密过程如图4所示,包括:
S1021.按照所述混合表设置按键与输入的字符的对应关系,根据所述对应关系和输入的按键序列获取字符,并将所述字符存储至字符输入区。
具体地,所述混合表可以由服务器进行设置,也可以由用户提交至服务器,并由服务器在所述用户发起数据加密请求时,将预先提交的混合表作为其中一个加密因子反馈给用户。
在一个可行的实施例中,所述加密因子内容举例如下。
键【0】,对应空格;
键【1】,对应数字1;
键【2】~【9】,对应数字2~9;
键【*】,对应重复获取之前刚刚获取的字符;
键【c】,删除之前刚刚获取的字符。
S1022.按照预设的第一混合算法将字符输入区的字符与所述第一混合种子混合以生成目标字符串。
获取用户输入的字符,并按照预设的采集顺序将获取到的字符进行排列,并按照预设的第一混合算法将获取到的字符与所述第一混合种子混合以生成目标字符串。
具体地,所述采集顺序用户可以与服务器约定。比如正向采集、逆向采集以及跳跃采集均可。
S1023.根据所述第一加密算法对所述目标字符串进行加密得到加密字符串。
进一步地,若所述第一加密算法为公钥加密算法,则所述加密因子还包括加密密钥,不同的第一加密算法所对应的公钥加密算法的保密级别和得到的加密密钥长度不同。
S1024.按照预设的第二混合算法将所述加密字符串和所述第二混合种子进行混合以得到混合加密字符串。
进一步地,所述第一混合种子和第二混合种子可以包括一个或多个字符串的组合,所述字符串可以包括英文、数字、符号及其组合。
S1025.获取自身硬件信息,根据所述硬件信息和所述混合加密字符串生成加密密钥。
具体地,硬件相关信息包括屏幕参数、尺寸、材质、内存容量、外存容量、CPU性能、摄像头像素、终端型号、应用终端IMEI、应用终端MAC地址中的任意一种或多种。
S1026.根据所述第二加密算法将所述混合加密字符串,结合所述加密密钥运算得到加密密文,将所述加密密文发送至服务器。
进一步地,所述第一加密算法还可以是异或运算或者对称算法等任意一种可逆运算方法;所述第二加密算法可以是SM3、MD5等杂凑算法进行运算得到的算法。
实施例2:
一种应用于分布式系统的加密系统,所述系统包括服务器201和客户端202,
所述服务器201包括:
请求获取模块2011,用于服务器获取用户的数据加密请求,所述数据加密请求包括关键字、安全等级标识、待加密数据的长度和用户标识;
目标群组标识获取模块2012,用于根据所述关键字和用户标识获取用户所在的一个或者多个群组标识;所述群组标识包括所述群组标识中的群组所具备的安全等级;若获取到的群组标识为多个,则从中按照约定算法选择一个目标群组标识;若获取到的群组标识只有一个,则获取到的群组标识即为目标群组标识;所述目标群组的安全等级不低于所述安全等级标识表征的安全等级;
特征值获取模块2013,用于按照预设算法根据所述用户标识、目标群组标识和所述待加密数据的长度得到特征值;所述特征值算法为p=Mid1+Nid2+mod(L/1024),其中p表示特征值,Mid1为用户标识对应的特征值第一分量,Nid2为目标群组标识对应的特征值第二分量,L为待加密数据长度,以kb为单位;
加密因子处理模块2014,用于根据所述特征值在预设的加密算法集合中抽取加密因子并将所述加密因子传输至客户端,所述加密因子包括混合表、第一混合种子、第二混合种子、第一加密算法和第二加密算法;
所述客户端202包括:
字符输入模块2021,用于按照所述混合表设置按键与字母、字符、数字以及符号的对应关系,根据所述对应关系,将输入的按键序列所对应的各类型字符存储于字符输入区;
目标字符串生成模块2022,用于按照预设的第一混合算法将字符输入区的字符与所述第一混合种子混合以生成目标字符串;
混合加密字符串得到模块2023,用于根据所述第一加密算法对所述目标字符串进行加密得到加密字符串;按照预设的第二混合算法将所述加密字符串和所述第二混合种子进行混合以得到混合加密字符串;
加密密钥生成模块2024,用于获取自身硬件信息,根据所述硬件信息和所述混合加密字符串生成加密密钥;
加密密文处理模块2025,用于根据所述第二加密算法将所述混合加密字符串,结合所述加密密钥运算得到加密密文,将所述加密密文发送至服务器。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。