技术领域
[0001] 本公开涉及加密技术领域,特别涉及一种基于正交拉丁方的加密方法、装置和计算机设备。
相关背景技术
[0002] 拉丁方是一个特殊的方阵,即各元素在每行每列均只出现一次。拉丁方的应用从20世纪早期开始,首先被作为平衡非完整块设计应用在统计分析中,后来经常被用于工程和实验设计中,在实际应用中非常广泛,可应用于众多领域中。另一方面正交拉丁方是一种特殊的拉丁方,其构造和应用方面的研究也已有多年历史,在对称密码算法设计中一直受到人们的关注,许多对称密码设计工作者都致力于拉丁方与正交拉丁方的研究。
[0003] 但是目前已有的构造正交拉丁方的方法均较为复杂,正交拉丁方阶数较小,能够用于密码算法设计的正交拉丁方构造方法较少。
具体实施方式
[0041] 为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
[0042] 为了更清楚地表述本公开提供的方案,下面先对本公开中涉及的一些名词进行解释:
[0043] 拉丁方:
[0044] 若n行n列的方阵满足每行每列均为0~n‑1的一个置换,那么该方阵是一个n阶拉2
丁方,n为大于1的整数。一个n阶拉丁方有n个元素。
[0045] 正交拉丁方:
[0046] 设拉丁方 和拉丁方 若拉丁方L1和L2组成的方阵2
中n个元素对 互不相同,那么拉丁方L1和拉丁方L2互为正
交拉丁方。其中,i、j为大于或等于0并且小于n的整数。
[0047] 域:
[0048] 设非空集合F,具有两种代数运算:加法“+”与乘法 若F满足:
[0049] (1)、(F,+)构成一个加群;
[0050] (2)、 构成一个乘群;
[0051] (3)、乘法运算对于加法运算在F上满足分配律:
[0052] 且
[0053] 其中对任意的a、b、c∈F均成立;
[0054] (4)、乘法运算和加法运算均满足交换律:
[0055] 且a+b=b+a;
[0056] 则称F关于“+”与 构成一个域。
[0057] 有限域:
[0058] 域中元素个数是有限个,那么称为有限域。
[0059] 二元域:
[0060] 整数0和1构成的域称为二元域,用F2表示。
[0061] 图1是本公开实施例提供的一种基于正交拉丁方的加密方法流程图。参见图1,该方法包括如下步骤:
[0062] 101:获取二维满秩矩阵。
[0063] 其中,所述二维满秩矩阵中的各个元素均属于 所述 表示有限域 去掉零k元素的集合,所述 表示由f(x)生成的有2 个元素的有限域,模多项式f
(x)是二元域F2上的k次不可约多项式,k为大于1的整数。
[0064] 由有限域的定义可知 有2k个元素。
[0065] 有限域 中的每个多项式元素的系数(c0,c1,…,ck‑1)均可以映射至k比特二进制数c0||c1||…||ck‑1,因而基于该映射关系,可以确定出 中各个元素与拉丁方元素的映射关系。
[0066] 102:遍历二维向量的取值,计算所述二维满秩矩阵和各个所述二维向量的取值的k 2乘积,得到(2) 个结果向量。
[0067] 其中,所述二维向量中的各个元素均属于所述
[0068] 103:基于所述(2k)2个结果向量中的第一个元素确定第一个2k阶拉丁方,基于所述k 2 k(2) 个结果向量中的第二个元素确定第二个2阶拉丁方,得到互为正交拉丁方的两个拉丁方。
[0069] 104:基于所述两个拉丁方确定置换表,采用所述置换表进行数据加密。
[0070] 当然,这里的置换表也可以用于解密过程,本公开对此不做限制。
[0071] 在本公开实施例中,上述基于正交拉丁方的置换表可以应用在对称加密、分组加密等加密算法中,例如,在明文数据加密时,在置换表中查找明文数据中指定位置的比特串对应位置的元素,然后采用查找得到的元素替换该比特串。
[0072] 在本公开实施例中,通过获取二维满秩矩阵,遍历二维向量的取值,计算所述二维满秩矩阵和各个所述二维向量的取值的乘积,得到多个结果向量,基于多个结果向量中的两个元素分别得到两个拉丁方。由于二维满秩矩阵中的各个元素均属于 二维向量中的各个元素均属于所述 所述 表示有限域 去掉零元素的集合,所述k
表示由f(x)生成的有2个元素的有限域,模多项式f(x)是二元域F2上的
k次不可约多项式。因此,按照上述方式得到的两个拉丁方互为正交拉丁方,采用互为正交拉丁方的两个拉丁方即可确定用于加密的置换表。本公开实施例提供了一种简单的阶数较大且可以用于密码算法设计的正交拉丁方构造过程,基于构造的正交拉丁方确定用于对称加密的置换表,为正交拉丁方在密码算法设计中的应用提供有力的支撑,轻松实现了基于正交拉丁方的加密。也即可以降低基于正交拉丁方的加密所需的资源,提高效率,且由于能够实现高阶正交拉丁方,能够在更多场景应用该基于正交拉丁方的加密方案。
[0073] 在本公开实施例的一种实现方式中,所述获取二维满秩矩阵,包括:
[0074] 随机选取一个所述二维满秩矩阵
[0075] 其中,
[0076] 由于 上至少存在2k‑2个二维满秩矩阵A,例如当a1=a3=1,a2≠a4( 有2k‑2个a2≠a4的情况)时,矩阵 即为一个二维满秩矩阵。当k越大时,存在的二维满秩矩阵越多,因此,可以随机选取一个二维满秩矩阵,进而使得用于对称密码算法的正交拉丁方具有随机性。
[0077] 在本公开实施例的一种实现方式中,所述基于所述(2k)2个结果向量中的第一个元k k 2 k素确定第一个2阶拉丁方,基于所述(2) 个结果向量中的第二个元素确定第二个2阶拉丁方,包括:
[0078] 获取所述 中各个元素与拉丁方元素的映射关系;
[0079] 基于所述映射关系将所述(2k)2个结果向量映射到拉丁方元素;
[0080] 选取映射后的所述(2k)2个结果向量的第一个元素组成第一个2k阶拉丁方,选取映k 2 k射后的所述(2) 个结果向量的第二个元素组成第二个2阶拉丁方。
[0081] 在该实现方式中,通过将 中各个元素映射到拉丁方元素,然后取结果向量的两个元素分别组成两个拉丁方,由于结果向量互不相同,因而通过拆分结果向量得到的两个拉丁方互为正交拉丁方。
[0082] 在本公开实施例的一种实现方式中,所述基于所述两个拉丁方确定置换表,采用所述置换表进行数据加密,包括:
[0083] 将所述两个拉丁方组合成对称密码算法的置换表,基于所述置换表对明文数据中的比特进行置换得到密文。
[0084] 在该实现方式中,采用两个互为正交拉丁方的拉丁方作为对称密码算法的置换表,保证了对称密钥的安全性。
[0085] 其中,上述置换表用于将2k比特数值输入置换为2k比特数值输出。
[0086] 如果是解密过程,则基于所述置换表对密文数据中的比特进行置换得到明文即可。
[0087] 下面结合示例对图1中的基于正交拉丁方的加密方法进行详细说明:
[0088] 201:随机选取一个二维满秩矩阵
[0089] 其中,
[0090] 202:计算
[0091] 其中,
[0092] Ax表示矩阵A乘以向量x,矩阵A的每个元素属于 x是一个二维向量,其中x的每个元素属于 b是矩阵A乘以向量x的结果值,也是一个二维向量。
[0093] 203:遍历所有(2k)2个x得到(2k)2个结果向量k k
[0094] 204:将所有的b1组成一个2阶拉丁方 将所有的b2组成一个2阶拉丁方 两个拉丁方互为正交拉丁方。
[0095] 其中,拉丁方 和拉丁方 中每个元素均可以对应k比特的二进制数。
[0096] 205:将两个拉丁方组成的正交拉丁作为2k比特数的置换表,在对称密码算法设计中作为组件使用,确定对称密钥。
[0097] 当有限域 中的k=2时,上述基于正交拉丁方的加密方法的过程如下:2
[0098] 选取的模多项式f(x)是不可约多项式x +x+1时,此时 根据上2
述步骤构造4=2阶正交拉丁方过程如下所示。这里定义有限域 上元素转换为拉丁方元素的映射为0→0、1→1、x→2、x+1→3。
[0099] 第1步:随机选取 上一个二维满秩矩阵
[0100] 第2步:计算 其中 遍历x可以得到如下表1的结果。
[0101] 参见表1,第一行为x1的取值,第一列为x2的取值,其余表格表示对应的结果向量(b1,b2)的取值。
[0102] 表1
[0103]
[0104] 第3步:在第2步结果的基础上再根据上述有限域上元素转换为拉丁方元素的映射定义可以得到如下表2和表3所示的两个互相正交的拉丁方:
[0105] 表2
[0106] 0 3 1 22 1 3 0
3 0 2 1
1 2 0 3
[0107] 表3
[0108] 0 1 2 32 3 0 1
3 2 1 0
1 0 3 2
[0109] 第4步:基于两个互为正交的拉丁方相互组合之后的可以构成如下表4的一个置换表,该置换表中数据可以采用十六进制表示。
[0110] 其中,两个拉丁方中每个元素为k比特,组合后的置换表中每个元素为2k比特。
[0111] 例如,表2和表3中的元素均为2比特,将相同位置的表2的2比特和表3的2比特组成4比特数据,表2的2比特在前,表3的2比特在后。然后将4比特数据转换为16进制,得到如下所示表4的置换表。
[0112] 示例性地,表2中00和表3中00组合得到0x0,表2中11和表3中01组合得到0xD,表2中01和表3中10组合得到0x6,依次类推。
[0113] 表4
[0114]0x0 0xD 0x6 0xB
0xA 0x7 0xC 0x1
0xF 0x2 0x9 0x4
0x5 0x8 0x3 0xE
[0115] 第5步:在对称密码算法中可以将指定位置2k比特数查该置换表得到置换后的值。
[0116] 例如,在表4的示例中,将指定位置4比特数查该置换表得到置换后的值。
[0117] 其中,表4的位置按照第一行从左到右、第二行从左到右、第三行从左到右、第四行从左到右的顺序依次为编号0~15。
[0118] 例如,明文数据中数值为5的比特串,查该表后变为数值为7的比特串。明文数据中数值为6的比特串,查该表后变为数值为C的比特串。
[0119] 图2是本公开实施例提供的一种基于正交拉丁方的加密装置的结构示意图。该基于正交拉丁方的加密装置可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或者一部分。参见图2,所述基于正交拉丁方的加密装置包括:获取模块301、计算模块302、第一确定模块303和第二确定模块304。
[0120] 其中,获取模块301,用于获取二维满秩矩阵,所述二维满秩矩阵中的各个元素均属于 所述 表示有限域 去掉零元素的集合,所述 表示由f(x)k
生成的有2 个元素的有限域,模多项式f(x)是二元域F2上的k次不可约多项式,k为大于1的整数;
[0121] 计算模块302,用于遍历二维向量的取值,计算所述二维满秩矩阵和各个所述二维k 2向量的取值的乘积,得到(2) 个结果向量,所述二维向量中的各个元素均属于所述[0122] 第一确定模块303,用于基于所述(2k)2个结果向量中的第一个元素确定第一个2kk 2 k
阶拉丁方,基于所述(2) 个结果向量中的第二个元素确定第二个2阶拉丁方,得到互为正交拉丁方的两个拉丁方;
[0123] 第二确定模块304,用于基于所述两个拉丁方确定置换表,采用所述置换表进行数据加密。
[0124] 可选地,所述获取模块301,用于:
[0125] 随机选取一个所述二维满秩矩阵
[0126] 其中,
[0127] 可选地,所述第一确定模块303,用于:
[0128] 获取所述 中各个元素与拉丁方元素的映射关系;
[0129] 基于所述映射关系将所述(2k)2个结果向量映射到拉丁方元素;
[0130] 选取映射后的所述(2k)2个结果向量的第一个元素组成第一个2k阶拉丁方,选取映k 2 k射后的所述(2) 个结果向量的第二个元素组成第二个2阶拉丁方。
[0131] 可选地,所述第二确定模块304,用于:
[0132] 将所述两个拉丁方组合成对称密码算法的置换表,基于所述置换表对明文数据中的比特进行置换得到密文。
[0133] 需要说明的是:上述实施例提供的基于正交拉丁方的加密装置在进行基于正交拉丁方的加密时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于正交拉丁方的加密装置与基于正交拉丁方的加密方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0134] 图3是本公开实施例提供的一种计算机设备的结构框图。计算机设备400包括中央处理单元(CPU)401、包括随机存取存储器(RAM)402和只读存储器(ROM)403的系统存储器404,以及连接系统存储器404和中央处理单元401的系统总线405。计算机设备400还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)406,和用于存储操作系统413、应用程序414和其他程序模块415的大容量存储设备407。
[0135] 基本输入/输出系统406包括有用于显示信息的显示器408和用于用户输入信息的诸如鼠标、键盘之类的输入设备409。其中显示器408和输入设备409都通过连接到系统总线405的输入输出控制器410连接到中央处理单元401。基本输入/输出系统406还可以包括输入输出控制器410以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器410还提供输出到显示屏、打印机或其他类型的输出设备。
[0136] 大容量存储设备407通过连接到系统总线405的大容量存储控制器(未示出)连接到中央处理单元401。大容量存储设备407及其相关联的计算机可读介质为计算机设备400提供非易失性存储。也就是说,大容量存储设备407可以包括诸如硬盘或者CD‑ROM驱动器之类的计算机可读介质(未示出)。
[0137] 不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD‑ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器404和大容量存储设备407可以统称为存储器。
[0138] 根据本公开的各种实施例,计算机设备400还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备400可以通过连接在系统总线405上的网络接口单元411连接到网络412,或者说,也可以使用网络接口单元411来连接到其他类型的网络或远程计算机系统(未示出)。
[0139] 存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,中央处理器401通过执行该一个或一个以上程序来实现图1或图2所示的基于正交拉丁方的加密方法。
[0140] 在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由计算机设备的处理器执行以完成本公开各个实施例所示的基于正交拉丁方的加密方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD‑ROM、磁带、软盘和光数据存储设备等。
[0141] 以上所述仅为本公开的可选实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。