本发明涉及信息安全技术领域,并且更具体地涉及一种压缩加、解密的方法和系统。
背景技术:
目前,常用的压缩加密算法主要有以下几种:
1.行程长度编码(Run Length Encoding,RLE)
RLE是一种针对无损压缩的非常简单的压缩法,其好处是加压缩和解压缩都非常快。它用重复字节和重复次数进行简单描述以代替重复的字节。尽管简单并且对于通常的压缩非常低效,但它有的时候却非常有用(例如,JPEG就使用它)。
图1示出了RLE的原理图,说明了如何使用RLE算法对一个数据流编码的例子,其中出现六次的符号“93”已经用3个字节来代替:一个标记字节(在本例中为‘0’)、重复的次数(‘6’)和符号本身(“93”)。RLE解码器遇到符号‘0’的时候,它表明后面的两个字节决定了需要输出哪个符号以及输出多少次。
实现RLE可以使用很多不同的方法,基本压缩库中详细实现的方式是非常有效的一种,其中,使用一个特殊的标记字节来指示重复字节的开始,而不是将重复字节和非重复字节都进行行程编码。
2.哈夫曼编码
哈夫曼编码是一种一致性编码法,用于数据的无损压缩。该编码方法的特殊之处在于,它使用预先的二进制码字来替代每个符号,码字的长度由符号出现的频率决定(出现频率高的符号使用较短的码字,反之出现频率低的符号使用较长的码字,这便使得编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。
哈夫曼编码对不同信源的编码效率是不同的,只有当信源概率分布不均匀时,哈夫曼编码才会收到显著的效果。然而,哈夫曼编码并不处理符号的顺序以及重复或序号的序列。
3.Lempel-Ziv(LZ)压缩算法
LZ压缩算法拥有LZ77、LZ78、LZW几种不同的演变算法,LZ压缩模式有许多不同的变量。基本压缩库由LZ77算法实现(Lempel-Ziv,1977),具有很好的执行效果,而且源代码也非常容易理解。LZ编码器能用于通用目标的压缩,特别是对于文本压缩具有很好的执行效果。通常,它也在RLE和哈夫曼编码器(RLE,LZ,哈夫曼)中使用来获得更多的压缩。
使用LZ77的一个问题是由于算法需要字符串匹配,对于每个输入流的单个字节,每个流中此字节前面的那个字节都必须被作为字符串的开始从而尽可能的进行字符串匹配,这意味着算法非常慢。另一个问题是为了最优化压缩而调整字符串引用的表示形式并不容易。LZ的基本压缩库使用一个清晰的实现来保证所有的符号和引用是字节对齐的,因此牺牲了压缩比率,并且字符串匹配程序并不是最优化的(没有缓存、历史缓冲区等),这意味着压缩程序非常慢。
上述当前主流的压缩加密方法中,只涉及到单纯的压缩加解密功能,未涉及对压缩加密后文件的粒度控制,无法支持安全相关的附加属性,不能满足某些特定情况下的加解密需求。当上述压缩加密方法具体应用在安全产品中时,具有如下缺点:
1.如果恶意无限次尝试解密压缩文件,理论上总有解密的可能,也可通过相关工具进行无限次尝试,达到解密目的,无法根据解密错误或正确的次数进行控制。
2.无法根据解密时间限定判断是否可进行解密。
3.无法根据当前主机环境判断是否可进行解密。
技术实现要素:
针对上述现有技术中存在的问题,本发明的目的在于提供一种可控制解密次数、时间和环境的压缩加解密方法,其可以检测解密环境,存储、更新加解密的时间、次数,避免恶意解密。
为了实现上述目的,本发明采用的技术方案如下:
一种压缩加密的方法,包括如下步骤:
步骤1:在电脑终端安装压缩产品客户端;
步骤2:选择待压缩加密的文件;
步骤3:设置压缩加密条件;
步骤4:生成压缩文件包。
进一步,加密条件包括:加密密码、解密密码、解密次数、解密时间、解密环境。
进一步,解密次数是1次或多次。
进一步,解密时间是基于解密环境中系统时间的时间段。
进一步,解密环境包括互联网、指定IP地址、指定网址、操作系统。
进一步,操作系统包括Win98、WinME、Win2000、WinXP、Vista、Win7、Win8。
一种压缩解密的方法,包括如下步骤:
步骤1:在电脑终端安装产品客户端;
步骤2:打开待解密的文件;
步骤3:启动解密程序并判断是否符合解密条件,如果符合解密条件,解密文件并更新解密条件,如果不符合,进行解密失败处理并提示相关信息。
进一步,相关信息包括:“当前处于外围环境,无法解密”、“不在可解密时间段,无法解密”、“已超过解密次数,无法解密”、“尝试解密次数已超过解密次数上限或者尝试在互联网环境解密或者尝试在不当时间内解密,无法解密”、“尝试解密次数已超过解密次数上限或者尝试在互联网环境解密或者尝试在非解密时间内解密,已自动上报违规日志”。
一种压缩加、解密的系统,包括:
账户管理模块,用于管理用户部门、用户账户、用户终端信息;
密钥管理模块,用于管理加解密密钥;
原文件管理模块,用于管理压缩加密前的文件;
压缩加解密模块,用于对选择的文件进行加解密;
压缩文件管理模块,用于管理压缩加密后的文件;
系统策略管理模块,用于设置压缩加密条件;
系统安全防护模块,其功能包括防止恶意篡改本地时间、防止恶意删除本地文件、检查系统环境、同步系统环境中同一压缩文件的解密次数;
对外接口管理模块,其功能包括同步账户信息、传递加密文件属性和加解密接口。
本发明的优点及有益效果:
(1)兼容性好
本发明结合通用的加、解密官方文档和开源代码来实现最基础的加密、解密功能,可避免使用未公开的数据结构带来的兼容问题,降低对操作系统的依赖性。本发明逻辑简洁,可适用于win98到win8一系列操作系统。
(2)性能高
本发明中,对解密环境、解密次数和解密时间等的检测都是通过本地或网络接口联动完成,包括后续的解密成功或失败后的操作都可在极短时间内完成,因此,本发明的性能相对于只有加解密功能的方法的性能几乎没有差异。
(3)安全性高
本发明可基于内网检测解密次数,基于网络检测解密环境,基于系统防止手动修改时间和数据自动销毁等,因此,本发明可以大大提高系统的安全性并且防止压缩加密文件中数据的流失。
附图说明
图1为现有的行程长度编码的原理示意图;
图2为本发明的压缩加密方法的流程图;
图3为本发明的压缩解密方法的流程图;
图4为本发明的压缩加解密系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1是现有的行程长度编码(RLE)的原理图,说明了如何使用RLE算法对一个数据流编码的例子,其中出现六次的符号“93”已经用3个字节来代替:一个标记字节(在本例中为‘0’)、重复的次数(‘6’)和符号本身(“93”)。换言之,当RLE解码器遇到符号‘0’的时候,解码器需要输出6次“93”字符。
图2是本发明的压缩加密方法的流程图。在框201中,将产品客户端(例如,压缩加密软件)安装在电脑终端。在框202中,通过产品客户端选择并打开待压缩加密的文件以进行后续操作。在框203中,将对压缩加密条件进行设置,包括设置加密密码、解密密码、解密次数、解密时间、解密环境等,以控制解密环境、解密次数和解密时间。换言之,对解密环境的控制将判断电脑终端是否可以连接到互联网、是否可以连接指定的IP地址和/或网址、电脑终端是否安装有杀毒软件、电脑终端是否是指定的操作系统版本等;解密次数的控制包括:一方面,如果尝试解密失败的次数达到解密次数的上限,将自动清除和/或不可逆地销毁已加密的数据,另一方面,当解密的次数已经达到所设置的解密次数时,该压缩文件包将不能再被打开,进一步,可以结合网络版终端控制某一网络环境中此压缩数据包一共可以解压的次数,该解压次数不受复制粘贴的限制,也不受同一台主机的控制;对解密时间的控制是:当解压时,如果解压环境的系统在设置的解压时间内,则可以进行解压操作,否则禁止解压操作。在框204中,对选定的待压缩文件进行压缩加密并将设置的加密条件写入压缩文件包。在框205中,将生成压缩文件包,至此,压缩加密流程结束。
图3是本发明的压缩解密方法的流程图。在框301中,首先将产品客户端(例如,解压软件)安装在电脑终端。在框302中,在客户端中打开待解密的压缩文件包。在框303中,启动解密程序,并根据交换界面填写相关信息,例如解密密码等。在框304中,将对解密条件进行判断,如果解密条件满足压缩加密过程中设置的解密条件,则流程前进到框306对压缩文件包进行解密,同时,客户端将自动获取解密环境的系统版本、系统时间等信息,并且更新解密次数,解密流程结束;如果解密条件不满足压缩加密过程中设置的解密条件,则进行解密失败处理(例如,自动删除压缩文件包、自动销毁压缩文件包、上报日志等)并通过交互界面向用户提示相关信息,然后,流程返回至解密开始状态。系统向用户提示相关信息具体包括以下情况:
1)当尝试解密时,检测到加解密系统已连接到互联网,则提示“当前处于外网环境,无法解密”的信息;
2)当尝试解密时,检测到当前时间与加密设置条件中的解密时间不相符时,则提示“不在可解密时间段,无法解密”的信息;
3)当尝试解密时,检测到已经解密的次数超过加密设置条件中的解密次数时,提示“已超过解密次数,无法解密”的信息;
4)当尝试解密时,检测到不符合加密设置条件并且设置了自动销毁时,提示“尝试解密次数已超过上限或者尝试在互联网环境中解密或者尝试在不当时间内解密,已自动销毁加密数据”的信息;
5)当尝试解密时,检测到不符合加密设置条件并且设置了上报日志时,提示“尝试解密次数已超过上限或者尝试在互联网环境解密或者尝试在不当时间内解密,已自动上报违规日志”的信息,如果当前无法连接到日志服务器,则先将违规日志保存在本地,待连接到日志服务器时再将违规日志上报日志服务器。
图4是本发明的压缩加解密系统的结构示意图。该压缩加解密系统包括账户管理模块、密钥管理模块、原文件管理模块、压缩加解密模块、系统策略管理模块、系统安全防护模块、压缩文件管理模块和对外接口管理模块。账户管理模块用于管理用户部门、用户账户、用户终端等信息;密钥管理模块用于管理用户加解密密钥;原文件管理模块用于管理压缩加密前的文件,可以在加解密系统中留存或生产文件的唯一标示以用于后期处理(例如追查);压缩加解密模块用于对选择的文件进行压缩加解密,以生成压缩文件包;系统策略管理模块用于管理加解密条件,设置各加解密条件的范围,例如设置某些用户必须设定加解密时间、解密次数等信息;系统安全防护模块用于防止用户恶意篡改本地系统时间、防止用户恶意删除本地文件、检查加解密系统所在的系统、同步加解密系统所在的系统中同一压缩文件的解密次数等;压缩文件管理模块用于管理压缩加密后文件,可以在加解密系统中留存或生产文件的唯一标示以用于后续处理(例如追查);对外接口管理模块用于在加解密系统与其他系统联动时同步用户账户信息、传递加密文件属性和加解密接口等。
以上所述实施例仅表达了本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。