公开/公告号CN112651034A
专利类型发明专利
公开/公告日2021-04-13
原文格式PDF
申请/专利权人 山东山大鸥玛软件股份有限公司;
申请/专利号CN202011519496.5
申请日2020-12-21
分类号G06F21/60(20130101);G06F21/46(20130101);
代理机构37205 济南舜源专利事务所有限公司;
代理人赵阳
地址 250101 山东省济南市高新区伯乐路128号
入库时间 2023-06-19 10:35:20
技术领域
本发明涉及计算机软件加密算法应用领域,更具体的说是涉及一种基于密码本的一次一密可替换加密算法、组件及设备。
背景技术
目前对称密钥加密算法,主要采用两种加密解密方式实现,基于软件算法的软加密和基于硬件加密机的硬加密模式,两种方式各自有自己的不足。
软件加密的本质就是算法加密钥,软加密密钥一般存储在程序代码或配置文件中,采用固定的密钥进行加密,加密算法一般都采用开源算法,在较长时间内都采用相同的密钥进行加密,攻击者如果经过暴力破解或其他攻击方式获取密钥,则整个加密机制就被攻破,而要更换密钥代价很大,需要停止业务,将所有密文解密再重新加密,有一定的风险。
基于硬件的加密机通常可以保证较高的安全性,作为一个安全的黑盒,加密解密和密钥都在黑盒内部,离开加密机,数据无法加解密,只要保证加密机的安全,就能保证系统安全。但是加密机加解密效率不高,作为外部网络设备,加密解密有网络延迟,同时成本较高需采购硬件设备并部署运维,可能造成性能瓶颈以及故障隐患,如需要提高加解密效率,需要多台硬件加密机进行负载均衡。
发明内容
针对以上问题,本发明的目的在于提供一种基于密码本的一次一密可替换加密算法、组件及设备,能够对单一密钥的软件加密算法进行改进,克服算法单一,密钥更换繁琐,密钥保存不安全的缺点,发挥软件算法加密算法升级方便,与程序结合紧密、高效的优势。
本发明为实现上述目的,通过以下技术方案实现:一种基于密码本的一次一密可替换加密算法,包括:
初始化密钥空间,采用通用安全组件结合多线程机制生成符合预设条件的密钥,并生成密钥库;
将生成的每一组密钥库采用加密的文件方式存储在密钥空间内,建立用于传输密钥库文件的独立数据通道;
创建加解密过程中的密钥轮换机制,在加解密过程中随机的分配密钥库中的一个密钥;
采用随机的密钥对明文的加密过程加扰。
进一步,所述采用通用安全组件结合多线程机制生成符合预设条件的密钥具体为:
在Java环境中采用javax.crypto.KeyGenerator组件并利用多线程机制生成符合预设条件的密钥。
进一步,所述密钥空间采用262M的存储空间用于存储持2
进一步,所述加解密过程中的密钥轮换机制包括加密过程中的密钥轮换机制,具体包括:
将明文进行MD5摘要算法,取出MD5特征值中的6位HEX,生成4位64进制字符作为密钥索引,将明文加密后,把密钥索引与密文按照预定规则混肴在一起,作为密文整体进行传输。
进一步,所述加解密过程中的密钥轮换机制还包括解密过程中的密钥轮换机制,具体包括:
按照预定规则将密钥索引与密文分离,通过密钥索引从密钥库里获取密钥对密文进行解密,得到明文。
进一步,所述采用随机的密钥对明文的加密过程加扰具体为:
采用在获取密钥索引过程中随机选取密钥,完成对明文的加密过程加扰。
相应的,本发明还公开了一种基于密码本的一次一密可替换加密组件,包括:
密钥生成单元,用于初始化密钥空间,采用通用安全组件结合多线程机制生成符合预设条件的密钥,并生成密钥库;
密钥管理单元,用于将生成的每一组密钥库采用加密的文件方式存储在密钥空间内,建立用于传输密钥库文件的独立数据通道;
密钥轮换机制单元,用于创建加解密过程中的密钥轮换机制,在加解密过程中随机的分配密钥库中的一个密钥;
密钥加扰单元,用于采用随机的密钥对明文的加密过程加扰。
相应的,本发明还公开了一种基于密码本的一次一密可替换加密设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述基于密码本的一次一密可替换加密算法。
对比现有技术,本发明有益效果在于:
1、本发明将密钥存储在独立的存储空间内,能有有效避免源码泄露导致整个算法被攻破,实现了对密钥的有效管理。
2、本发明在加密解密过程中,采用密钥轮换机制,并进行了密钥加扰,提高了抗差分攻击能力,实现了真正的一次一密加密,不管是不是同一明文,对每次加密过程采用不同密钥,有效降低了暴力破解的风险。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
附图1是本发明实施例一的方法流程图。
附图2是本发明实施例一的系统结构图。
附图3是本发明的实施例二部署在独立的服务组件中,对外提供加解密服务的示意图。
附图4是本发明的实施例二将算法的核心组件作为安全中间件的一部分采用API方式调用的示意图。
附图5是本发明实施例二的加密过程示意图。
附图6是本发明实施例二的解密过程示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做出说明。
实施例一:
如图1所示的一种基于密码本的一次一密可替换加密算法,包括如下步骤:
S1:初始化密钥空间,采用通用安全组件结合多线程机制生成符合预设条件的密钥,并生成密钥库。
为了对传统单一密钥对称加密算法进行了改进,首先引入一个密钥库的概念,传统单一密钥算法只支持有限的密钥库,本算法将密钥库扩展到海量的空间,对密钥库进行管理和利用。
为进一步拓展密钥空间,增强加密强度,本加密机制,需要足够多的密钥参与加解密,因此支持多个密钥的生成,一般可以支持到16,777,216=2
S2:将生成的每一组密钥库采用加密的文件方式存储在密钥空间内,建立用于传输密钥库文件的独立数据通道。
生成的每一组密钥库采用加密的文件方式进行存储,每组密钥库的加密密钥不同,由密钥管理系统负责生成和保存,与密钥库文件通过独立的安全渠道传输。
S3:创建加解密过程中的密钥轮换机制,在加解密过程中随机的分配密钥库中的一个密钥。
具体包括:
A、加密过程:
将明文进行MD5摘要算法,取出MD5特征值中的6位HEX,生成4位64进制字符作为密钥索引,将明文加密后,把密钥索引与密文按照预定规则混肴在一起,作为密文整体进行传输。
B、解密过程:
解密过程是加密的逆过程,首先按预定规则将密钥索引与密文分离,通过密钥索引从密钥库里获取密钥对密文进行解密,得到明文。
通过这样每次加解密过程的密钥轮换过程,随机的分配庞大密钥库中的一个密钥,接近一次一密的效果,保护了密钥,避免长期使用一个密钥造成的弊端。
S4:采用随机的密钥对明文的加密过程加扰。
在上面加密过程中,密钥索引生成阶段,如果按默认的密钥索引生成规则,相同明文总会分配相同的密钥索引,也会生成相同的密文,可能被利用进行已知明文、密文攻击,降低加密强度。但是这种特性在某些应用场景下是必须的,例如手机号码被加密保存在数据库中,同时还需要通过手机号码作为唯一条件进行数据库检索,这样就必须保证相同的明文加密后总是生成不变的密文。还是上面的例子,如果用证件号码作为查询条件,查询手机号,就不要求手机号明文密文一对一,可以进一步对加密过程加扰,每次采用随机的密钥,增加算法安全性。还有一个场景,加密算法对URL传参进行加密,攻击者很容易通过构造明文密文串进行攻击或者URL回放,此时对明文密文一对一没有要求,对加密强度要求更高。
我们采用在获取密钥索引过程中直接随机选取密钥,实现密钥加扰、提高抗差分攻击能力,这是真正的一次一密加密,不管是不是同一明文,对每次加密过程采用不同密钥,某种程度类似流密钥。
相应的,如图2所示,本发明还公开了一种基于密码本的一次一密可替换加密组件,包括:
密钥生成单元,用于初始化密钥空间,采用通用安全组件结合多线程机制生成符合预设条件的密钥,并生成密钥库。
密钥管理单元,用于将生成的每一组密钥库采用加密的文件方式存储在密钥空间内,建立用于传输密钥库文件的独立数据通道。
密钥轮换机制单元,用于创建加解密过程中的密钥轮换机制,在加解密过程中随机的分配密钥库中的一个密钥。
密钥加扰单元,用于采用随机的密钥对明文的加密过程加扰。
相应的,本发明还公开了一种基于密码本的一次一密可替换加密设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述基于密码本的一次一密可替换加密算法。
实施例二:
基于实施例一,本发明提出的基于密码本的一次一密可替换加密算法可以包装在独立的服务组件中,对外提供加解密服务,所有的算法、密钥库、加解密服务都包装起来,形成一个黑盒,使用临时存储介质通过初始化方法,验证密钥库保护加密密钥后,将密钥库一次性导入服务器内存,这样密钥库只存在内存中,提高性能和安全性。将加密算法部署在独立的服务组件中,对外提供加解密服务的流程如图3所示,此时本发明提出的加密算法相当于软件加密服务器的核心组件存在。
另外,如图4所示,可以将加密算法的核心组件作为安全中间件的一部分调用,作为程序一部分部署在应用中,担任系统中加解密API,密钥库的初始化由宿主应用实现,同样需要通过密钥库管理功能,使用临时存储介质通过初始化方法,验证密钥库加密密钥后,将密钥库一次性导入系统,由于需要多个应用访问密钥库,需要将密钥库加密后保存在redis内存数据库中,所有应用通过加解密API完成加解密操作。
本发明可以替换多种加密算法,只需要改算法实现规定的接口,接口只需实现三个方法,setKey方法接收String类型的密钥,作为对称算法密钥。enCode和deCode分别是加密和解密方法,实现这样简单的接口便于灵活替换算法,具体接口定义如图3所示。
核心的代码实现过程如下:
初始化过程:首先设置初始化符合Cipher接口的加解密算法,通过 setCipher(Cipher)方法注入到加解密程序。
如图5所示,enCode加密过程包括:enCode通过calKey方法,计算key 索引idx,通过idx通过getKey方法取得密钥,将索引和密钥按规则组合,返回enCode方法,enCode方法调用内置cipher对象的enCode方法完成加密,返回密文cipherTxt,并与密钥索引组合后,将密钥索引+密文,传输给解密者。
如图6所示,deCode解密过程包括:deCode的方法根据规则,从密文中分离出密钥索引和真正密文,通过getKey方法从密钥库获取密钥,通过调用内置 cipher对象的deCode方法完成解密,返回明文,传输给密文接收者。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如U盘、移动硬盘、只读存储器(ROM, Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。
同理,在本发明各个实施例中的各处理单元可以集成在一个功能模块中,也可以是各个处理单元物理存在,也可以两个或两个以上处理单元集成在一个功能模块中。
结合附图和具体实施例,对本发明作进一步说明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所限定的范围。
机译: 用小型转轮玩基于转轮的游戏的电子设备本发明是一种体现具有多个转轮和多个迷你转轮的基于转轮的游戏的设备。迷你卷筒替代多个卷筒中的一个或多个,或者可以替换卷筒的一个或多个符号承载位置。多个迷你转盘的附加功能可以通过用覆盖所有基于迷你转盘的结果的支付线组替换与转盘或转盘位置相关联的标准支付线来实现更大数量的符号组合和获胜结果。
机译: 基于计算机的系统和方法,用于管理具有多个组件的设备的可替换组件,以及用于监视具有至少一个磨损组件的远程设备的状况的方法
机译: 基于计算机的系统和方法,用于管理具有多个组件的可替换设备组件,以及用于监视具有至少一个磨损组件的远程设备的状况的数据结构和方法