掌桥专利:专业的专利平台
掌桥专利
首页

一种基于消息鉴别码算法的保留格式加密方法及解密方法

文献发布时间:2023-06-19 11:27:38


一种基于消息鉴别码算法的保留格式加密方法及解密方法

技术领域

本发明涉及信息安全技术领域,具体而言,涉及一种基于消息鉴别码算法的保留格式加密方法及解密方法。

背景技术

如今,计算机技术飞速发展,每天都有各种各样的敏感数据在网络上传播。有大量第三方机构对这些敏感数据进行收集、分析、挖掘,这些数据在使用的过程中也导致了不少敏感数据泄漏的问题,甚至经常发生严重的隐私泄露事件,这可能造成无法弥补的损失。在实际应用中,常见的防护手段是对这些敏感数据进行加密。但是对数据库中具有特定格式的数据,比如银行卡号、身份证号等敏感数据,使用传统的分组密码算法直接进行加密会出现一系列的问题,比如通常会导致数据长度的扩展,使得数据的类型发生变化等,这就需要修改数据库结构或应用程序来适应传统加密带来的这些变化,成本非常高。为了解决这类敏感数据的加密问题,保留格式加密(format-preserving encryption,简称FPE)被提了出来。FPE可以用来进行数据遮蔽,即通过对原始数据进行掩码转换,输出一个与原始数据的格式、关联等均一模一样的数据,从而解决从生产环境的数据向测试环境(或者开发环境)导入时可能产生的数据内容安全问题。

近年来,美国国家标准与技术研究院(National Institute of Standards andTechnology,NIST)就此问题进行了研究,并发布了NISTSP 800-38G文档,提出了FPE算法FF1、FF3-1等。FF1和FF3-1算法都将待加密消息一分为二(分别记为左支数据和右支数据),以AES系列算法为基础,采用10轮Feistel结构执行迭代,最后再将左右两块数据拼接在一起。在每一轮迭代中,右支数据进入轮函数进行基于AES的加密后得到轮函数的输出,然后,左支数据再与此轮函数的输出进行模加后得到更新后的左支数据;最后交换左右两支数据后进入下一轮。如此反复,直至迭代结束。

然而NIST提出的这些FPE算法FF1和FF3-1在使用中存在诸多问题难以解决,具体如下:

(1)首先,这些FPE算法的执行效率非常慢,比其普通的加密模块,如ECB、CBC、CTR等,执行效率显著下降;比如目前的PC机执行AES加密16个字节通常不到1个微秒;但FF1和FF3-1的加密时间是这些加密时间的几十倍至上百倍。

(2)其次,《中华人民共和国密码法》的出台并正式实施,各行业大力推进我国商用密码的应用和落地,而NIST提出的这些FPE算法均使用国外的AES系列算法,而非我国商用密码算法,这使得这些FPE算法难以实施。

发明内容

本发明旨在提供一种基于消息鉴别码算法的保留格式加密方法及解密方法,以解决上述NIST提出的FPE算法存在的问题。

本发明提供的一种基于消息鉴别码算法的保留格式加密方法,包括如下步骤:

S11,字符串拆分:将输入的待加密明文

S12,字符串迭代:设置迭代索引号为

S13,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到密文

进一步的,步骤S11包括如下子步骤:

S111,输入密钥

S112,分别取INT型整数

其中,

S113,将这两个字符串

进一步的,步骤S12包括如下子步骤:

S121,组合16个字节的字节串

式中

(1)当

取调节因子

取调节因子

最后将

(2)当

取调节因子

取调节因子

最后将

其中,[

S122,将字节串

E←

S123,将字节串

S124,执行模加运算得到BN型整数

即将BN型整数

其中,INT型整数

S125,左右互换,即

S126,按迭代次数重复执行步骤S121~S125,迭代完成后得到BN型整数

进一步的,步骤S121中的所述字节串

S1211,分别计算两个字节

即,将(

S1212,字节串

即:

(1)当

取调节因子

最后将

(2)当

取调节因子

最后将

进一步的,步骤S122中所述PRF变换的方法为:对字节串

进一步的,步骤S13包括如下子步骤:

S131,将步骤S126得到的BN型整数

S132,串联字符串

本发明还提供一种基于消息鉴别码算法的保留格式解密方法,所述解密方法用于对上述的加密方法得到的密文

S21,字符串拆分:将输入的待解密密文

S22,字符串迭代:设置迭代索引号为

S23,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到明文

进一步的,步骤S21包括如下子步骤:

S211,输入密钥

S212,分别取INT型整数

其中,

S213,将这两个字符串

进一步的,步骤S22包括如下子步骤:

S221,组合16个字节的字节串

即:

式中

(1)当

取调节因子

取调节因子

最后将

(2)当

取调节因子

取调节因子

最后将

其中,[

S222,将字节串

E←

S223,将字节串

S224,执行模减运算得到BN型整数

即将BN型整数

其中,INT型整数

S225,左右互换,即

S226,按迭代次数重复执行步骤S221~S225,迭代完成后得到BN型整数

进一步的,步骤S23包括如下子步骤:

S231,将步骤S226得到的BN型整数

S232,串联字符串

综上所述,由于采用了上述技术方案,本发明的有益效果是:

1、本发明的加密方法的执行效率显著优于NIST的FF1算法

2、本发明具有足够的安全性。

3、本发明采用国产密码算法SM3作为核心密码算法,因此可以在我国各行业的商用密码应用实施方案中应用。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明的数据类型转换示意图。

图2为本发明实施例1加密方法的流程图。

图3为本发明实施例1字符串拆分的流程图。

图4为本发明实施例1字符串迭代的流程图。

图5为本发明实施例1字符串合并的流程图。

图6为本发明实施例2的解密方法的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

首先介绍本发明涉及的基本概念:

1、数据类型

(1)字符型和字符串:定义由

(2)字节和字节串:本发明提及的字节为通常意义上的字节,即为8个0、1比特组成的字节。字节串为有限个字节组成的字节序列。

(3)整数:即普通的整数。本发明中将值较小的整数(比如不大于2

2、数据类型转换

本发明的数据类型转换如图1所示。具体如下:

(1)整数转为字符串

(2)整数转字节串[

(3)字符串转整数

(4)字节串转整数

3、主要数据

(1)明文:明文是由字符表

(2)密文:明文是由字符表

(3)调节因子:调节因子是多个字节构成的字节串,类似于CBC模式中的初始向量IV和OCB模式中的NONCE值。调节因子的作用有:改变调节因子比改变密钥代的价小,因为改变密钥必然需要重新进行子密钥扩展,而子密钥扩展算法通常都较复杂;调节值可以公开,无需像密钥一样保密;FPE方案中的密文空间比较小,使用不同的调节因子可使得同一密钥对同一明文加密得到不同的密文值,从而增加密文的多变性。

(4)密钥:秘密信息,字节串。

4、记号、缩写与符号

本发明主要涉及的记号、缩写与符号如下:

(1)

(2)

(3)

(4)

(5)[

(6)

(7)

(8)

(9)

(10)^:与运算。

(11)<<:左移位运算。

(12)

(13)

(14)

(15)

(16)

(17)

(18)

实施例1

如图2所示,本实施例提出一种基于消息鉴别码算法的保留格式加密方法,记所述加密方法表示为

S11,如图3所示,字符串拆分:将输入的待加密明文

具体地:

S111,输入:

密钥

长度为7个字节的调节因子

以及待加密明文

S112,分别取INT型整数

其中,

S113,将这两个字符串

S12,如图4所示,字符串迭代:设置迭代索引号为

具体地:

S121,组合16个字节的字节串

式中

(1)当

取调节因子

取调节因子

最后将

(2)当

取调节因子

取调节因子

最后将

其中,[

优选地,所述字节串

S1211,分别计算两个字节

即,将(

S1212,字节串

即:

(1)当

取调节因子

最后将

(2)当

取调节因子

最后将

S122,将字节串

E←

所述PRF变换的方法为:对字节串

方案一:设定

方案二:设定

方案三:设定

S123,将字节串

S124,执行模加运算得到BN型整数

即将BN型整数

其中,INT型整数

S125,左右互换,即

S126,按迭代次数重复执行步骤S121~S125,迭代完成后得到BN型整数

S13,如图5所示,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到密文

具体地:

S131,将步骤S126得到的BN型整数

S132,串联字符串

本发明实施例的加密方法具有如下有益效果:

1、效率方面:

(1)本发明的加密方法与NIST的FF1算法的关键部件执行次数对比如表1所示。

从表1可知,在保留格式加密算法中,类型转换的耗时比调用密码函数的耗时高的多,特别是整数转字符串和字符串转整数。在本发明中只需进行2次整数转字符串和字符串转整数,比起FF3-1的8次和16次,其执行次数均少得多。整数与字节串的互转次数与FF3-1相当。此外,加密函数调用方面,FF3-1算法需执行8次AES加密,本发明执行8次HMAC-SM3,与FF3-1相当。

(2)本发明的加密方法与NIST的FF1算法的加密时间对比如表2所示。测试环境为Win10操作系统,Intel Corei5-10210U CPU @ 1.60GHz处理器,16.0 GB RAM。测试方式为各算法分别对模拟生成的10

表2:

从表2可知,本发明的加密方法的执行效率显著优于NIST的FF1算法。

2、安全性方面,本发明采用通用的经过论证的Feistel架构,执行轮数与FF3-1一样为8轮,这些都确保本发明具有足够的安全性。

3、本发明采用国产密码算法SM3作为核心密码算法,因此可以在我国各行业的商用密码应用实施方案中应用。

实施例2

本实施例提供一种基于消息鉴别码算法的保留格式解密方法,所述解密方法用于对实施例1所述的加密方法得到的密文

S21,字符串拆分:将输入的待解密密文

具体地:

S211,输入密钥

S212,分别取INT型整数

其中,

S213,将这两个字符串

S22,符串迭代:设置迭代索引号为

具体地:

S221,组合16个字节的字节串

即:

式中

(1)当

取调节因子

取调节因子

最后将

(2)当

取调节因子

取调节因子

最后将

其中,[

S222,将字节串

E←

S223,将字节串

S224,执行模减运算得到BN型整数

即将BN型整数

其中,INT型整数

S225,左右互换,即

S226,按迭代次数重复执行步骤S221~S225,迭代完成后得到BN型整数

S23,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到明文

具体地:

S232,串联字符串

其中,字节串

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种基于消息鉴别码算法的保留格式加密方法及解密方法
  • 一种基于消息鉴别码算法的保留格式加密方法及解密方法
技术分类

06120112935675