字符串加密及传输处理方式研究

2023-12-29 02:54郭建明王嘉宁
信息记录材料 2023年11期
关键词:字符串加密算法密文

郭建明,王嘉宁

(甘肃机电职业技术学院 甘肃 天水 741001)

0 引言

近年来,频频暴发的数据泄露安全事件,已经为数据安全问题敲响了警钟,数据全链路保护的现状仍然不容乐观。 在加密环节,传统的字符串加密技术已经不再适应当今的网络生产环境。 各种各样先进的窃密技术、窃密软件、暴力破解、彩虹表、撞库等时刻威胁着人们的隐私安全[1]。 在通信环节,常见的通信安全威胁有多途径窃取用户数据、分析窃取到的数据,从而对拦截到的数据进行修改并再次发送,以此达到冒充用户的目的,甚至对用户和企事业单位财产造成重大损害。

为了最大程度防止用户隐私数据泄露,保障数据在全生命周期(存储周期、传输周期、处理周期及运行周期)中的安全性已然成为迫切需要解决的问题。 为了保障运行周期中的数据安全,要求做到数据的“可用”但“不可见”。这不仅有助于抵御来自外部或内部泄漏造成的数据安全风险,达到数据的纵深安全防护保障,也能够最大程度地保留原始数据的结构和意义,提高数据作为生产要素的原生价值[2]。

1 常用的加密方式

1.1 对称加密

对称加密采用了单密钥的加密方法,对于同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。 加密时将数据通过密钥转换为密文,将密文进行广播,广播区域内任何人可以接收密文,但由于大家没有密钥,所以无法对其进行解密,只有真正的接收者(密钥拥有者)接收到密文才可以对其进行解密[3]。 这种加密方式操作简便,效率极高,破译较为困难。但由于加密解密都采用相同密钥,密钥的丢失即意味着密文的原文被公开,所以,密钥的安全传输也成为一个棘手难题。

1.2 非对称加密

不同于对称加密算法在加密和解密时使用的是同一个密钥,非对称加密算法需要两个密钥分别来进行加密和解密,这两个密钥分别是公开密钥和私有密钥。 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用与之对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用与之对应的公开密钥才能解密。由于非对称加密中加密和解密的密钥不同,所以安全性同比对称加密算法更高。

1.3 信息摘要算法

信息摘要算法(message digest algorithm 5, MD5)散列函数,可以产生出一个128 位(16 字节)的散列值(hash value)。 MD5 算法以512 位的分组来处理输入的信息,且每一分组又被划分为16 个32 位的子分组,经过了一系列的处理后,算法的输出由4 个32 位分组组成,将这4 个32位分组级联后将生成一个128 位散列值[4]。 MD5 算法如今常作为一种电子签名来使用,使用MD5 算法可以为任意字符串或文件生成一个全球独一无二的“数字指纹”,通过检查MD5 值的变动便可轻松验证现字符串或文件与原字符串或文件是否为同一个。

1.4 Hash-SHA256

SHA256 隶属于Secure Hash Algorithm 2(SHA-2 族),对于任意长度的数据,SHA256 都会产生一个256 位(32字节)的哈希值(hash function),称作消息摘要。 同MD5一样,SHA256 亦可以为字符串或文件生成全球独一无二的“数字指纹”。

1.5 Homomorphic Encryption

Homomorphic Encryption 同态加密是基于数学难题的计算复杂性理论的密码学技术。 对经过同态加密的数据进行处理得到一个输出结果,将这一输出结果进行解密,这一结果与用同一种方法处理但未经过加密的原生数据得到的输出结果是一样的。 本质上,同态加密同样是一种加密函数,对明文进行环链上的加法或乘法运算再加密,加密后对密文进行相应的处理或运算,运算的最终结果应该是与原数据的逆向运算结果是相等的[5]。 由于这个良好的“可用”但“不可见”性质,人们可以轻易地委托任何第三方机构对数据进行处理而不泄露原始数据信息,具有良好的数据脱敏处理性质。

同态性质的加密函数是指两个明文a、b 满足Dec(En(a)7En(b))=a ⊕b 的加密函数,其中En 为加密运算,Dec 为解密运算,7和⊕分别对应明文和密文域上的运算。 当⊕代表加法时,称该加密为加同态加密:当⊕代表乘法时,称该加密为乘同态加密[4]。

2 传统字符串加密的潜在风险

2.1 传统加密方式及传统企业的加密方案和替换的实现

1978 年之前,还没有人提出过公钥密码学的概念,此前的加密体制只有对称加密,因此对称加密也被称为传统加密[6]。 但时至今日对称加密的使用已非常广泛。 造成这种局面的主要原因是,一般企业单位对于重构现有的加密体系是非常抵触的,一是现在数据资料价值较大,暂未出现数据泄露事件时重构非必然,二是重构将耗费大量人力、物力和财力,市面上暂时没有最好的加密和加密传输替代方案。

而对称加密在加密和解密过程中使用了相同的密钥,并且在加解密过程中使用了两种传统加密技术:代替和置换。 文章首先对于对称密码作一些概述,然后通过生动的古典密码来阐述这两种加密技术,在这一过程中将展示密码设计的思想,并对密码系统进行分析。

2.2 现有加密的潜在风险

目前密码体系的高安全性主要取决于计算加密的复杂度和困难性,密码复杂度越高、困难性越强,需要的计算算力也就越高,理论上就越不容易破解。 一方面,随着2017 年RSA-1024 被宣告破解,德国密码学家Claus Peter Schnorr 又宣称已经破解目前网络安全主流的加密标准RSA-2048,顿时,整个互联网的安全体系被乌云笼罩,显得岌岌可危[7]。 另一方面,随着量子计算的发展,计算机运算能力得到了显著的提升,它也极大地威胁到了当前的公钥密码体系的安全。

虽然量子计算距离成熟还需要一定的时间,但需要始终做到未雨绸缪,考虑其将来对计算机网络及数据安全的威胁也并非杞人忧天。 当今科技进步日新月异,量子计算也在不断刷新极限,取得突破性进展,随着各国政府、企业不断投入量子计算机研发,并且明显看到显著成果。 各方对于现有安全体系的安全性隐患的研究也在逐步提上日程,仿佛达摩克利斯之剑一直悬在现代密码学体系的头顶。

一次加密可能造成的严重后果是,窃取者可以利用计算机暴力枚举一个任意集合,对集合内的元素依次求值后存入数据库(为方便理解可称其为“枚举库”),待成功截获用户数据的加密字符串后,比对枚举库是否与之匹配,若匹配成功则通过逆推集合内元素顺序获得用户真实的明文字符串。

3 改进后的字符串加密方式

为了防止传统一次加密所带来的诸多不安全因素,可以引入Token 和Salt 值(盐值)的概念,即在时间这个不可逆自变量和自定义Salt 值的双重不确定因素下,外加用户自主定义的排列组合的随机值,相同的字符串使用相同的加密方式计算密文后结构也会不同,这将大大提升用户数据安全性,落实系统的网络安全防护要求,具体加密过程见图1。

图1 加密过程实现示意

在本加密实现过程中,为了使用最简便的方法获得最安全可靠的加密方式, 采用了Unix 时间戳(Unix Timestamp)作为Token 值。 Unix 时间戳是从1970 年1 月1 日开始所经过的秒数,在计算过程中不考虑闰秒。 字符串“Password” 进行如下运算: 明文字符串和当前Timestamp 拼接(Password1607874715),求SHA256 得到“7dde9e1da6582b82d79ee6ac71f3883696b5ce08021ea6e70a 7d2d90c4a0bbb4”,将此值再次拼接当前Timestamp 值和Salt 值(这里假设“Salt”为Salt 值)并再次作为字符串(7dde9e1da6582b82d79ee6ac71f3883696b5ce08021ea6e70a 7d2d90c4a0bbb41607874725Salt),求得散列值“f84d28252 bf28b0fe718ec8b12399cbf”。

在真实开发环境中,企事业可再根据本单位内对当前开发项目的排序,按照内部方法生成对应的app_id 和app_key。 将这两个或更多的元素进行单次加密,从而生成sign,将sign 值也通过上述加密方法参与加密,则可以在指数级别上增加破译难度,进而增加安全性[8-9]。

4 改进后字符串传输方式

4.1 传输请求

虽然本加密方式已经不可能存在逆向破译的可能性,但需要在传输过程中做到尽可能的安全。 为了使数据不会被缓存和保存,本研究采用POST 请求对加密数据进行提交,见表1。

表1 GET 请求与POST 请求对比

4.2 传输内容

为了使服务器可以进行正确验证数据,需要将必要的信息(元素)与加密数据(如果有计算sign 值,则也需要发送sign 值的计算元素)同时发往服务器协助验证[10]。 传输可采用非对称加密过程实现。 服务器先向客户端分发证书(公钥A),客户端验证证书是否合法且有效,如果证书安全则将加密元素和加密求得的散列值“f84d28252bf28b0fe718ec8b12399cbf”通过公钥A 加密发送至服务器。 服务器通过私钥B 进行解密,获得元素与散列值。

4.3 传输解密

由于本加密方法存在单向不可逆性,所以不存在所谓的“解密”方法,只能使服务器对加密字符串验证,从而起到所谓“解密”的作用。 为使服务器明白用户上传的加密数据是否正确,服务器可采取与客户端相同的加密方式对用户上传的元素进行加密,如果元素正确且计算求得的散列值与用户上传(或数据库已有的)的值匹配,则验证成功,否则验证失败,申报为非法验证,回传相应错误信息[11]。 该方法重要的前提是需要提前将用户(客户端)的系统时间与服务器(服务端)的时间设置一致,由于时间是一种公开文本,为减轻服务器负载,可直接通过明文传输或广播。 由于服务器需要计算和客户端相同的密钥用于比对,其中参数必须和客户端高度一致,否则可能造成密钥生成不一致。

5 结语

综上所述,通过制造多种常量元素和变量元素,引入了Token 和Salt 值(盐值)的概念,改进了目前的字符串加密和传输方式,便可以轻松解决撞库和彩虹表的安全隐患,从而进一步保护用户安全,避免企事业单位遭受不必要的损失。 将加密的散列值通过较为安全的传输方式并再次配合非对称加密算法,更进一步杜绝数据在传输过程中遭受拦截和篡改,从而建立一个更加可靠的通信环境。但是,本文只考虑了信息加密传输的几个基本思路及方案,并未在安全性统计等方面进行深入,使得系统只考虑了一些实验理论情况,如何应对复杂生产情况,还值得加强,后期将应用于模拟生产环境,收集大量数据,并用于矫正。 随着量子计算技术全球化的发展,传统加密算法会受到严重威胁。 因此,全球各个安全部门研究人员也正在积极寻找新的量子安全加密算法,以应对未来的新挑战。

猜你喜欢
字符串加密算法密文
一种针对格基后量子密码的能量侧信道分析框架
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
基于文本挖掘的语词典研究
基于小波变换和混沌映射的图像加密算法
云存储中支持词频和用户喜好的密文模糊检索
Hill加密算法的改进
一种新的基于对称性的字符串相似性处理算法
对称加密算法RC5的架构设计与电路实现
基于Arnold变换和Lorenz混沌系统的彩色图像加密算法