为了防止通信过程中重要信息泄露,确保网络信息传输的安全,我们根据可逆矩阵的特性并结合加密算法原理,提出了一种新的可逆矩阵加密算法,并且根据可逆矩阵加密算法自身的加密特性,研究了其应用模式。

一、可逆矩阵加密算法理论分析

1、加密算法的加密原理

信息发送端首先根据密钥矩阵A的阶数(||A||=n),将明文转换为n维数向量X,然后将X与A相乘得到密文Y,既Y-AX,再将Y发送,信息端接受到Y后,则利用密钥矩阵A-1(其中A与A-1互为可逆矩阵)与Y相乘,则会得到明文X,既:A-1Y=A-1AX=X。

例如:一个密钥矩阵:

另一个密钥矩阵:

信息发送端欲发送信息ABC。首先根据ASCII码表将ABC转为三维数向量:

则对应的密文:

将密文接收端接收到密文Y时,利用解密密钥矩阵A-1,根据公式求得:

然后利用ASCII码表则可解析出发送信息为ABC。

2、加密算法安全性分析

在已知加密密钥矩阵A的情况下,求得解密密钥矩阵A-1理想算法的时间复杂度为13,其中n为A的阶数。而在A未知的情况下,求得A—t的可能性为0。因为,每一个n阶矩阵都有无数个可逆矩阵存在,而每一个可逆矩阵只有唯一的一个矩阵与它互为逆矩阵,从无数个可选矩阵中选取唯一的与加密矩阵对应的解密矩阵的可能性为0,故在A未知的情况下,求得A-1的可能性为0。本文提出的C/S应用模式,服务端具有无数个成对的密钥矩阵,服务端可以定期的为需要安全服务的通信双方各自随机安全地提供一个密钥矩阵队列,这两个密钥矩阵队列对应位置的对应的矩阵互为可逆矩阵。在每次通信时,信息发送端根据一定的规则从密钥矩阵队列中选择一个密钥矩阵A加密信息,而每次选择都随外界条件变化而变化,因此相当于从无数个密钥矩阵中随机选取一个密钥矩阵加密信息,只有对应的信息接收端利用反规则和对应的密钥矩阵队列,才可以解密出发送的信息内容。窃密者即使知道加密和解密规则,也会由于密钥空间的无限而无法获取解密密钥矩阵A-1,从而也无法获取密文信息。因此该加密算法是安全的。

3、加密算法的加密和解密复杂度分析

加密复杂度:在已知加密密钥矩阵A(||A||=n)和数向量X的情况下,求得密文Y需要计算n*n乘法和n*n次加法。

解密复杂度:在已知解密矩阵A-1(||A-1||=n)和密文数向量Y的情况下,求得明文X也需要计算n*n乘法和n*n次加法。

根据上面的结论,我们可以知道矩阵的阶数大小直接影响到算法的执行效率,所以选择阶数适合的密钥矩阵很重要。

二、可逆矩阵加密算法的密钥生成

1、基本概念介绍

密钥矩阵库:密钥矩阵存放的数据库。能够按照密钥矩阵的阶数,对存放密钥矩阵进行成对的存取。

随机密钥矩阵选择器:用来随机选取成对密钥矩阵的算法。可以根据用户初始化参数n,在矩阵阶数为n的密钥矩阵库里随机的选取其中的一对密钥矩阵。

初等可逆矩阵生成器:用来生成可逆矩阵的算法。可以根据用户的初始化参数n,随机生成一个n阶密钥矩阵。

2、密钥生成算法的流程

首先,随机密钥选择器根据初始化参数[A,Aq,n](n=||A||)中n的值,从密钥矩阵库里随机选取一个n阶密钥矩阵,如果选取失败,就会触发初等可逆矩阵生成器,使其生成—个n密钥矩阵,并将其送人密钥矩阵库里。然后将随机密钥矩阵选择器选取产生(或初等可逆矩阵生成器生成)的密钥矩阵[p,p-1]和初始化参数[A,A-1]送入矩阵乘法器,接着就会产生B,B-1,n,最后初始化参数构造器就会根据[B,Bq,n],构造出两个新的初始化参数,这两参数将会进行下一次的运算,如此反复循环直到结束。其主要流程如图1所示:

三、可逆矩阵加密算法的工作模式

1、数据格式定义

在进行加密通信时,传输的数据包括时间和信息内容。其中a代表信息发送的时间,b代表信息内容。

2、通信信息表定义

在进行加密通信时,通信双方为了生成实时动态的密钥矩阵所维护的通信状态表。其中D代表目的通信目的方,C代表通信次数计数器,Q代表密钥矩阵队列地址。

3、加密算法工作过程综述

由于密钥矩阵是无限的,需要较大的存储容量,大部分通信设备的存储容量有限,又考虑到密钥的安全性维护、管理和密钥矩阵分发工作。本算法采用C/S模式,减轻了用户端的负担。

用户在需要进行安全通信时,首先与通信对方进行交互,取得对方同意后,向密钥服务器提出密钥申请,密钥服务器将随机产生—对密钥矩阵队列分别发给通信双方(这对密钥矩阵队列对应位置的密钥矩阵对应的矩阵互为可逆矩阵),通信双方则利用自己的密钥矩阵队列进行通信。一定时间和次数之后,再向密钥服务器申请,生成新密钥队列,直到通信结束。具体过程如下所示;

准备阶段:

(1)A向B发送安全通信请求;

(2)B向A发送安全通信回应;

(3)如果B同意与A进行安全通信,则A通过密钥服务器的密钥服务接口向发出密钥队列请求信息;

(4)密钥服务接口通过访问密钥矩阵库,随机生成一对一定大小的密钥矩阵队列,将其中一个密钥矩阵队列发送到A;

(5)将另一个密钥矩阵队列发送到B。

此时,A端和B端分别生成各自的通信信息表,D将赋值为对方的地址,C初始化为0,Q存放各自密钥矩阵队列的索引地址。具体过程如图2所示。

4、数据加密

当通信A端有信息数据要发送时,则要进行数据加密。首先将通信信息表(信息D、C和Q)和数据格式表(时间a)送进密钥矩阵选择器,密钥矩阵首先根据D和Q的信息确定密钥矩阵队列的地址,然后再根据C的信息,在密钥矩阵队列里随机选取时间加密密钥矩阵A,再根据发送时间a,随机生成加密信息内容的密钥矩阵B,接着分别将(时间a和密钥矩阵A)和(信息b和密钥矩阵B)送入加密器,分别对时间信息a和传输信息bjj日密,生成密文Aa~IIBb,则完成加密过程。具体过程如图3所示。

5、数据解密

数据解密是数据加密的一个反过程。首先,利用通信信息表的信息,通过密钥矩阵选择器选取出对应于密钥矩阵A的可逆矩阵A-1,然后利用Aq解密出信息的发送时间a,根据时间信息a,生成对应于密钥矩阵B的B-1,然后利用B-1解密出信息b。

6、密钥传榆安全维护方法

密钥服务器首先从密钥矩阵库里随机选择—系列的成对的密钥矩阵队列,再将这一系列的密钥矩阵队列分成对应的两份。其中一份用于生成服务器端的通信信息表(其中D是服务端生成的客户端的代码),另—份生成与服务器通信信息表对应的安全通信服务卡。安全通信卡类似于银行卡,它包含三部分,一部份是服务器端的地址信息,另一部分是标示自己身份的信息(与服务器端的地址D相对应),还有一部分则是与服务器首次通信的密钥矩阵队列信息。服务端服务请求端与服务端的通信,类似于上面的加密通信过程(上面的安全通信都是基于通信双方已经初始了自己与服务端的通信信息表)。唯一有所不同的就是当一个对象需要安全通信时,如果它是第一次通信时,需要根据给自己分发的安全通信服务卡,初始化自己与服务器通信的信息表,然后就可以按照和普通通信端一样向服务器发送加密请求。服务器也会根据发送的请求,用与对应用户的密钥矩阵队列加密响应,并且定期更新服务端和通信端的密钥矩阵队列。

小知识之可逆矩阵

可逆矩阵是线性代数中的一个矩阵,其定义为在线性代数中,给定一个 n 阶方阵A,若存在一n 阶方阵B, 使得AB=BA=In(或AB=In、BA=In 任满足一个),其中In 为n 阶单位矩阵,则称A 是可逆的,且B 是A 的逆阵,记作 A^(-1)。