基于动态循环位移的地理数据加密系统及方法转让专利

申请号 : CN202210995530.9

文献号 : CN115632756B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈培恩袁超张孝成胡艳陈俊霖李宇晗夏定辉雷小虎曾攀吴国梁陈静吕帅蒋雪姜紫薇张国琴

申请人 : 重庆市地理信息和遥感应用中心

摘要 :

本发明公开了一种基于动态循环位移的地理数据加密系统及方法,方法包括:将原始地理信息数据文件转换成二进制生成数据A,将地理信息数据A采用国密算法进行加密,得到加密后的二进制位序列B;对二进制位序列B进行双向移位加密,得到地理信息数据C;对于地理信息数据C,进行循环移位加密处理获得所需的地理信息加密数据D。其显著效果是:实现了对地理信息数据的多层加密处理,使得地理信息数据内的信息不可篡改,有效避免了分发数据、外发数据时存在的风险,还可避免数据的版权纠纷,在无授权或单一授权环境下无法使用,大大提高了地理信息数据的安全性。

权利要求 :

1.一种基于动态循环位移的地理数据加密方法,其特征在于包括如下步骤:步骤1、将原始地理信息数据文件转换成二进制,得到128位二进制表示的地理信息数据A;

步骤2、将地理信息数据A采用国密算法进行加密,得到加密后的二进制位序列B;

步骤3、对二进制位序列B进行双向移位加密,得到地理信息数据C;

步骤3中对二进制位序列B进行双向移位加密的具体步骤如下:步骤3.1、对二进制位序列B的正向移位加密:利用外部加密密钥(α,β),按照公式 计算得到倾斜帐篷混沌映射的初值x1,并按照公式 计算得到倾斜帐篷混沌映射的μ,其中,PB_1为二进制位序列B中元素为二进制‘1’的总个数,PB_0为二进制位序列B中元素为二进制‘0’的总个数,m为二进制位序列B的长度,利用初值x1和参数μ,按照公式 对倾斜帐篷混沌映射xk进行200次迭代,得到第200次迭代后的混沌信号x201,

令混沌信号初值y1=x201,并从二进制位序列B中从头到尾正向取M个元素,得到第一个二进制位分组序列BF{1}={B1,B2,…,BM},令j=1,进行如下操作:S11、由混沌信号yj和参数μ,对所示倾斜帐篷混沌映射xk进行单次迭代,得到混沌信号yj+1,同时利用混沌信号yj+1,按照公式direction_shift1=mod(Y1i‑Y2i,2),k_shift1=mod(Y1i+Y2i,9)计算分别得到移位方向direction_shift1、移位个数k_shift1,M M M M

其中,Y1j=[(yj+1·10‑[yj+1.10])·10000],Y2j=[(yj+1·10‑[yj+1·10])·10000];

S12、当direction_shift1=0时,将二进制位分组序列BF{j}中元素循环左移kshift1位,得到正向移位后的二进制位分组序列 表示为;

S13、比较j与m的大小,若j<m‑1,则利用正向移位后的二进制位分组序列中前M‑2个元素,按照公式

对混沌信号yj+1进行调

整,

其中,bin2dec({BBM×j‑(M‑1),BBM×j‑(M‑2),…,BBM×j‑2})操作表示将二进制位分组序列{BBM×j‑(M‑1),BBM×j‑(M‑2),…,BBM×j}转换为数值型数据,同时按照公式{B(M‑1)×j(M‑2),B(M‑1)×j(M‑3),…,B(M‑1)×j,B(M‑1)×j+1}={BBM×j(M‑1),BBM×j(M‑2),…,BBM×j}将二进制位序列B中相应元素替换为正向移位后的二进制位分组序列,并令j=j+1,随后从二进制位序列B中正向取M个相应元素,得到第j个二进制位分组序列BF{m}={B(M‑1)×m‑(M‑1),B(M‑1)×m‑(M‑2),…,B(M‑1)×m},然后转到步骤S11;

若j=m‑1,则利用正向移位后的二进制位分组序列中前M‑2个元素,按照公式

对混沌信号yj+1进行调

整,同时将二进制位序列B中相应元素替换为正向移位后的二进制位分组序列替换公式为{B(M‑1)×j‑(M‑2),B(M‑1)×j‑(M‑3),…,B(M‑1)×j,B(M‑1)×j+1}={BBM×j‑(M‑1),BBM×j‑(M‑2),…,BBM×j},并令j=j+1,随后从二进制位序列B中正向取M个相应元素,得到第m个二进制位分组序列,表示为BF{m}={B(M‑1)×m‑(M‑1),B(M‑1)×m‑(M‑2),…,B(M‑1)×m},然后转到步骤S11;

若j=m,则将二进制位序列B中相应元素替换为正向移位后的二进制位分组序列替换公式为{B(M‑1)×m‑(M‑1),B(M‑1)×m‑(M‑2),…,B(M‑1)×m}={BBM×m‑(M‑1),BBM×m‑(M‑2),…,BBM×m},并令序列 与序列B相等停止操作,从而得到正向移位加密后的二进制位序列

步骤3.2、对正向移位加密后的二进制位序列 进行逆向移位加密:首先利用初值x1和参数μ,对倾斜帐篷混沌映射xk进行300次迭代,得到第300次迭代后的混沌信号x301,然后令混沌信号初值z1=x301,并从二进制位序列中从尾到头逆向取M个元素,得到第一个二进制位分组序列,表示为 令j=

1,进行如下操作:

S21、由混沌信号zj和参数μ,对所述倾斜帐篷混沌映射xk进行单次迭代,得到混沌信号zj+1,同时利用混沌信号zj+1,分别按照公式direction_shift2=mod(Z1j‑Z2j‑1,2)、k_shift2=mod(Z1j+Z2j+1,9)计算分别得到移位方向direction_shift2、移位个数k_shift2,M M M M

其中,Z1j=[(zj+1·10 ‑[zj+1·10 ])·10000],Z2j=[(zj+1·10 ‑[zj+1·10 ])·

10000];

S22、当direction_shift2=0时,将二进制位分组序列 中元素循环左移k_shift2位,得到逆向移位后的二进制位分组序列 表示为当direction_shift2=1时,将二进制位分组序列BN{j}中元素循环右移k_shift2位,得到逆向移位后的二进制位分组序列 表示为S23、比较j与m的大小,若j<m‑1,则利用逆向移位后的二进制位分组序列中前M‑2个元素,按照公式

对混沌信号zj+1进行调整,

同时将二进制位序列 中相应元素替换为逆向移位后的二进制位分组序列并令j=j+

1,随后从二进制位序列 中逆向取M个相应元素,得到第j个二进制位分组序列,表示为然后转到步骤S21;

若j=m‑1,则利用逆向移位后的二进制位分组序列中前M‑2个元素,按照公式

对混沌信号zj+1进行调整,同时

将二进制位序列 中相应元素替换为逆向移位后的二进制位分组序列并令j=j+

1,随后从二进制位序列B中逆向取M个相应元素,得到第m个二进制位分组序列然后转到步骤21;

若j=m,则将二进制位序列 中相应元素替换为逆向移位后的二进制位分组序列BN{m}, 并令序列C与序列 相

等,从而得到双向移位加密后的二进制位序列步骤4、对于地理信息数据C,输入N个初始化种子 以及N个循环移位子过程的叠加顺序S1,S2,…,SN;

步骤5、令i=1;

步骤6、抽取 和Si;

步骤7、根据抽取Si的值确定循环移位子过程的种类,将 作为随机数种子生成一组随机数,记为[X(1),X(2),…,X(T)],并采用所述一组随机数对待加密数据进行所确定的循环移位子过程,每个所述随机数为Si对应的循环移位子过程的移位步数,是第i行,或第i列,或第i斜线,或第i反斜线,或第i圈的移位步数;其中,T的值根据循环移位子过程的种类及输入数据的尺寸自动确定;

步骤8、令i=i+1,并返回步骤6循环进行,直至i=N,获得所需的地理信息加密数据D。

2.根据权利要求1所述的基于动态循环位移的地理数据加密方法,其特征在于:步骤2中采用SM4算法对地理信息数据A进行加密。

3.根据权利要求1所述的基于动态循环位移的地理数据加密方法,其特征在于:所述循环移位子过程的种类包括:行循环移位RowShift、列循环移位ColumnShift、斜线循环移位SlashShift、反斜线循环移位BackslashShift和圈循环移位RoundShift。

4.根据权利要求3所述的基于动态循环位移的地理数据加密方法,其特征在于:所述采用一组随机数对待加密数据进行所确定的循环移位子过程,包括:对待加密数据从第1行到第T行依次执行行循环移位RowShift,即将第一行执行行循环移位RowShifi(1,X(1)),将第2行执行行循环移位RowShift(2,X(2)),依此类推将第T行执行行循环移位RowShift(T,X(T));或对待加密数据从第1列到第T列依次执行列循环移位ColumnShift,即将第一列执行列循环移位ColumnShift(1,X(1)),将第2列执行列循环移位ColumnShift(2,X(2)),依此类推将第T列执行列循环移位ColunmShift(T,X(T));或对待加密数据从第1斜线到第T斜线依次执行斜线循环移位SlashShift,即将第1斜线执行斜线循环移位SlashShift(1,X(1)),将第2斜线执行斜线循环移位SlashShift(2,X(2)),依此类推将第T斜线执行斜线循环移位SlashShift(T,X(T));或对待加密数据从第1反斜线到第T反斜线依次执行反斜线循环移位BackslashShift,即将第1反斜线执行反斜线循环移位BackslashShift(1,X(1)),将第2反斜线执行反斜线循环移位Backslash  Shift(2,X(2)),依此类推将第T反斜线执行反斜线循环移位BackslashShift(T,X(T));或对待加密数据从第1圈到第T圈依次执行圈循环移位RoundShift,即将第1圈执行圈循环移位RoundShift(1,X(1)),将第2圈执行圈循环移位RoundShift(2,X(2)),依此类推将第T圈执行圈循环移位RoundShift(T,X(T));

所述行循环移位RowShift(T,X(T))表示对待加密数据的第T行自左向右平移X(T)个数据;

所述列循环移位ColumnShift(T,X(T))表示对待加密数据的第T行自上而下平移X(T)个数据;

所述斜线循环移位SlashShift(T,X(T))表示对待加密数据的第T斜线从西南到东北方向循环移动X(T)个数据;

所述反斜线循环移位BackslashShift(T,X(T))表示对待加密数据的第T反斜线沿着西北到东南方向循环移动X(T)个数据;

所述圈循环移位RoundShift(T,X(T))表示对待加密数据的第T圈做顺时针循环转动X(T)个数据。

5.一种基于动态循环位移的地理数据加密系统,其特征在于:包括多通道地理信息采集模块与地理信息管理子系统,

所述多通道地理信息采集模块用于获取地理信息数据;

所述地理信息管理子系统包括数据加密模块、数据解密模块、北斗GPS监测开启模块以及权限认证模块,

所述数据加密模块用于执行权利要求1‑4任一项所述方法的步骤,对地理信息数据进行加密操作;

所述数据解密模块用于实现地理信息数据的解密操作;

所述北斗GPS监测开启模块用于实现在特定区域的特定用户能够访问数据的辅助手段,限定只有在特定区域能够执行操作或者在特定区域执行不同地理信息主管部门自带加密算法的切换操作,

所述权限认证模块用于在加密文件获得授权且处于当前安全区域内时开启相关权限。

6.根据权利要求5所述的基于动态循环位移的地理数据加密系统,其特征在于:所述权限认证模块卡其的相关权限包括地理信息数据的上传、访问、更新或下载的权限。

说明书 :

基于动态循环位移的地理数据加密系统及方法

技术领域

[0001] 本发明涉及到地理信息数据处理技术领域,具体涉及一种基于动态循环位移的地理数据加密系统及方法。

背景技术

[0002] 随着信息技术的迅速发展和地理信息的广泛应用,秘密监测和地理信息制图的安全管理面临着严峻的挑战。一些单位制作和使用地理信息进行监视和秘密测绘没有保密意义,测绘地理信息载体类型和形式较多,数字化成果应用广泛,传播渠道更加多样,这对地理信息测绘和秘密测绘的安全性提出了严峻的挑战。地理信息安全是地理信息机构面临的一个日益复杂的问题:
[0003] (1)分发数据存在着被二次传播、挪为它用等行为;
[0004] (2)外发数据在第三方造成泄露,无法断定泄密责任问题;
[0005] (3)数据出现版权纠纷等情况,无法有效维护权益和责任界定;
[0006] (4)外发数据加解密操作只有一层加密,安全级别系数较低。

发明内容

[0007] 针对现有技术的不足,本发明的目的是提供一种基于动态循环位移的地理数据加密系统及方法,以实现地理信息数据的加密,避免泄密和篡改。
[0008] 为达到上述目的,本发明采用的技术方案如下:
[0009] 一种基于动态循环位移的地理数据加密方法,其关键在于包括如下步骤:
[0010] 步骤1、将原始地理信息数据文件转换成二进制,得到128位二进制表示的地理信息数据A;
[0011] 步骤2、将地理信息数据A采用国密算法进行加密,得到加密后的二进制位序列B;
[0012] 步骤3、对二进制位序列B进行双向移位加密,得到地理信息数据C;
[0013] 步骤4、对于地理信息数据C,输入N个初始化种子 以及N个循环移位子过程的叠加顺序S1,S2,···,SN;
[0014] 步骤5、令i=1;
[0015] 步骤6、抽取 和Si;
[0016] 步骤7、根据抽取Si的值确定循环移位子过程的种类,将 作为随机数种子生成一组随机数,记为[X(1),X(2),···,X(T)],并采用所述一组随机数对待加密数据进行所确定的循环移位子过程,每个所述随机数为Si对应的循环移位子过程的移位步数,是第i行,或第i列,或第i斜线,或第i反斜线,或第i圈的移位步数;其中,T的值根据循环移位子过程的种类及输入数据的尺寸自动确定;
[0017] 步骤8、令i=i+1,并返回步骤6循环进行,直至i=N,获得所需的地理信息加密数据D。
[0018] 进一步的,步骤2中采用SM4算法对地理信息数据A进行加密。
[0019] 进一步的,步骤3中对二进制位序列B进行双向移位加密的具体步骤如下:
[0020] 步骤3.1、对二进制位序列B的正向移位加密:
[0021] 利用外部加密密钥(α,β),按照公式 计算得到倾斜帐篷混沌映射的初值x1,并按照公式 计算得到
倾斜帐篷混沌映射的μ,其中,PB_1为二进制位序列B中元素为二进制‘1’的总个数,PB_0为二进制位序列B中元素为二进制‘0’的总个数,m为二进制位序列B的长度,利用初值x1和参数μ,按照公式 对倾斜帐篷混沌映射xk进行200次迭代,得到第200
次迭代后的混沌信号x201,
[0022] 令混沌信号初值y1=x201,并从二进制位序列B中从头到尾正向取M个元素,得到第一个二进制位分组序列BF{1}={B1,B2,···,BM},令j=1,进行如下操作:
[0023] S11、由混沌信号yj和参数μ,对所示倾斜帐篷混沌映射xk进行单次迭代,得到混沌信号yj+1,同时利用混沌信号yj+1,按照公式direction_shift1=mod(Y1i‑Y2i,2),k_shift1=mod(Y1i+Y2i,9)计算分别得到移位方向direction_shift1、移位个数k_shift1,
[0024] 其中,Y1j=[(yj+1·10M‑[yj+1·10M])·10000],Y2j=[(yj+1·10M‑[yj+1·10M])·10000];
[0025] S12、当direction_shift1=0时,将二进制位分组序列BF{j}中元素循环左移k_shift1位,得到正向移位后的二进制位分组序列 表示为;
[0026] S13、比较j与m的大小,若j<m‑1,则利用正向移位后的二进制位分组序列中前M‑2个元素,按照公式
对混沌信号yj+1进行调
整,
[0027] 其中,bin2dec({BBM×j‑(M‑1),BBM×j‑(M‑2),···,BBM×j‑2})操作表示将二进制位分组序列{BBM×j‑(M‑1),BBM×j‑(M‑2),···,BBM×j}转换为数值型数据,同时按照公式{B(M‑1)×j‑(M‑2),B(M‑1)×j‑(M‑3),···,B(M‑1)×j,B(M‑1)×j+1}={BBM×j‑(M‑1),BBM×j‑(M‑2),···,BBM×j}将二进制位序列B中相应元素替换为正向移位后的二进制位分组序列,并令j=j+1,随后从二进制位序列B中正向取M个相应元素,得到第j个二进制位分组序列BF{m}={B(M‑1)×m‑(M‑1),B(M‑1)×m‑(M‑2),···,B(M‑1)×m},然后转到步骤S11;
[0028] 若j=m‑1,则利用正向移位后的二进制位分组序列中前M‑2个元素,按照公式
对混沌信号yj+1进行调
整,同时将二进制位序列B中相应元素替换为正向移位后的二进制位分组序列
替换公式为{B(M‑1)×j‑(M‑2),B(M‑1)×j‑(M‑3),···,B(M‑1)×j,B(M‑1)×j+1}={BBM×j‑(M‑1),BBM×j‑(M‑2),···,BBM×j},并令j=j+1,随后从二进制位序列B中正向取M个相应元素,得到第m个二进制位分组序列,表示为BF{m}={B(M‑1)×m‑(M‑1),B(M‑1)×m‑(M‑2),···,B(M‑1)×m},然后转到步骤S11;
[0029] 若j=m,则将二进制位序列B中相应元素替换为正向移位后的二进制位分组序列替换公式为{B(M‑1)×m‑(M‑1),B(M‑1)×m‑(M‑2),···,B(M‑1)×m}={BBM×m‑(M‑1),BBM×m‑(M‑2),···,BBM×m},并令序列 与序列B相等停止操作,从而得到正向移位加密后的二进制位序列
[0030] 步骤3.2、对正向移位加密后的二进制位序列 进行逆向移位加密:
[0031] 首先利用初值x1和参数μ,对倾斜帐篷混沌映射xk进行300次迭代,得到第300次迭代后的混沌信号x301,然后令混沌信号初值z1=x301,并从二进制位序列中从尾到头逆向取M个元素,得到第一个二进制位分组序列,表示为 令j=1,进行如下操作:
[0032] S21、由混沌信号zj和参数μ,对所述倾斜帐篷混沌映射xk进行单次迭代,得到混沌信号zj+1,同时利用混沌信号zj+1,分别按照公式direction_shift2=mod(Z1j‑Z2j‑1,2)、k_shift2=mod(Z1j+Z2j+1,M)计算分别得到移位方向direction_shift2、移位个数k_shift2,[0033] 其中,Z1j=[(zj+1·10M‑[zj+1·10M])·10000],Z2j=[(zj+1·10M‑[zj+1·10M])·10000];
[0034] S22、当direction_shift2=0时,将二进制位分组序列 中元素循环左移k_shift2位,得到逆向移位后的二进制位分组序列 表示为
[0035] 当direction_shift2=1时,将二进制位分组序列BN{j}中元素循环右移k_shift2位,得到逆向移位后的二进制位分组序列 表示为
[0036] S23、比较j与m的大小,若j<m‑1,则利用逆向移位后的二进制位分组序列中前M‑2个元素,按照公式
对混沌信号zj+1进行调整,
[0037] 同时将二进制位序列 中相应元素替换为逆向移位后的二进制位分组序列
[0038] 并令j=j+1,随后从二进制位序列 中逆向取M个相应元素,得到第j个二进制位分组序列,表示为 然后转到步骤S21;
[0039] 若j=m‑1,则利用逆向移位后的二进制位分组序列中前M‑2个元素,按照公式
对混沌信号zj+1进行调整,同时
将二进制位序列 中 相应元素替换为逆向移位后的二进制位分组序列
并令j=j
+1,随后从二进制位序列B中逆向取M个相应元素,得到第m个二进制位分组序列
然后转到步骤21;
[0040] 若j=m,则将二进制位序列 中相应元素替换为逆向移位后的二进制位分组序列BN{m}, 并令序列C与序列相等,从而得到双向移位加密后的二进制位序列
[0041] 进一步的,所述循环移位子过程的种类包括:行循环移位RowShift、列循环移位ColumnShift、斜线循环移位SlashShift、反斜线循环移位BackslashShift和圈循环移位RoundShift。
[0042] 进一步的,所述采用一组随机数对待加密数据进行所确定的循环移位子过程,包括:
[0043] 对待加密数据从第1行到第T行依次执行行循环移位RowShift,即将第一行执行行循环移位RowShift(1,X(1)),将第2行执行行循环移位RowShift(2,X(2)),依此类推将第T行执行行循环移位RowShift(T,X(T));或
[0044] 对待加密数据从第1列到第T列依次执行列循环移位ColumnShift,即将第一列执行列循环移位ColumnShift(1,X(1)),将第2列执行列循环移位ColumnShift(2,X(2)),依此类推将第T列执行列循环移位ColumnShift(T,X(T));或
[0045] 对待加密数据从第1斜线到第T斜线依次执行斜线循环移位SlashShift,即将第1斜线执行斜线循环移位SlashShift(1,X(1)),将第2斜线执行斜线循环移位SlashShift(2,X(2)),依此类推将第T斜线执行斜线循环移位SlashShift(T,X(T));或
[0046] 对待加密数据从第1反斜线到第T反斜线依次执行反斜线循环移位BackslashShift,即将第1反斜线执行反斜线循环移位BackslashShift(1,X(1)),将第2反斜线执行反斜线循环移位Backslash Shift(2,X(2)),依此类推将第T反斜线执行反斜线循环移位BackslashShift(T,X(T));或
[0047] 对待加密数据从第1圈到第T圈依次执行圈循环移位RoundShift,即将第1圈执行圈循环移位RoundShift(1,X(1)),将第2圈执行圈循环移位RoundShift(2,X(2)),依此类推将第T圈执行圈循环移位RoundShift(T,X(T));
[0048] 所述行循环移位RowShift(T,X(T))表示对待加密数据的第T行自左向右平移X(T)个数据;
[0049] 所述列循环移位ColumnShift(T,X(T))表示对待加密数据的第T行自上而下平移X(T)个数据;
[0050] 所述斜线循环移位SlashShift(T,X(T))表示对待加密数据的第T斜线从西南到东北方向循环移动X(T)个数据;
[0051] 所述反斜线循环移位BackslashShift(T,X(T))表示对待加密数据的第T反斜线沿着西北到东南方向循环移动X(T)个数据;
[0052] 所述圈循环移位RoundShift(T,X(T))表示对待加密数据的第T圈做顺时针循环转动X(T)个数据。
[0053] 本申请还提出了一种基于动态循环位移的地理数据加密系统,包括多通道地理信息采集模块与地理信息管理子系统,
[0054] 所述多通道地理信息采集模块用于获取地理信息数据;
[0055] 所述地理信息管理子系统包括数据加密模块、数据解密模块、北斗GPS监测开启模块以及权限认证模块,
[0056] 所述数据加密模块用于执行上述方法的步骤,对地理信息数据进行加密操作;
[0057] 所述数据解密模块用于实现地理信息数据的解密操作;
[0058] 所述北斗GPS监测开启模块用于实现在特定区域的特定用户能够访问数据的辅助手段,限定只有在特定区域能够执行操作或者在特定区域执行不同地理信息主管部门自带加密算法的切换操作,
[0059] 所述权限认证模块用于在加密文件获得授权且处于当前安全区域内时开启相关权限。
[0060] 进一步的,所述权限认证模块卡其的相关权限包括地理信息数据的上传、访问、更新或下载的权限。
[0061] 本发明的显著效果是:基于SM4国密加密算法、双向移位加密算法和动态循环位移加密算法的多元素加密方式,实现了对地理信息数据的多层加密处理,使得地理信息数据内的信息不可篡改,有效避免了分发数据、外发数据时存在的风险,还可避免数据的版权纠纷,在无授权或单一授权环境下无法使用,大大提高了地理信息数据的安全性。

附图说明

[0062] 图1是本发明的方法流程图;
[0063] 图2是本发明的系统框图。

具体实施方式

[0064] 下面结合附图对本发明的具体实施方式以及工作原理作进一步详细说明。
[0065] 如图1所示,一种基于动态循环位移的地理数据加密方法,其具体步骤如下:
[0066] 步骤1、将原始地理信息数据文件转换成二进制,得到128位二进制表示的地理信息数据A;
[0067] 步骤2、将地理信息数据A采用国密算法进行加密,得到加密后的二进制位序列B;
[0068] 本例中,采用SM4算法对地理信息数据A进行加密,该算法采用密钥扩展算法基于加密密钥生产轮密钥,然后采用轮密钥将128位的二进制数据进行迭代处理,之后采用反序变换算法获得加密后的数据,具体的:
[0069] 所述轮函数F采用非线性迭代结构,以字为单位进行加密运算,称一次迭代运算为一轮变换。设输入为 轮密钥为 则轮函数F为:SM4的轮函数将输入部分看做4个32bit长度的数
据,每轮的后3个部分都向左移动32bit的数据长度,这三组数据异或后进入非线性部分τ和线性部分L,运算后的结果与第一组数据异或置于最右面。如此循环往复32轮,也就是数据一共左转了8个周期,将其中的混乱因素不断扩散至每个bit位中。
[0070] 步骤3、对二进制位序列B进行双向移位加密,得到地理信息数据C;
[0071] 具体步骤如下:
[0072] 步骤3中对二进制位序列B进行双向移位加密的具体步骤如下:
[0073] 步骤3.1、对二进制位序列B的正向移位加密:
[0074] 利用外部加密密钥(α,β),按照公式 计算得到倾斜帐篷混沌映射的初值x1,并按照公式 计算得到
倾斜帐篷混沌映射的μ,其中,PB_1为二进制位序列B中元素为二进制‘1’的总个数,PB_0为二进制位序列B中元素为二进制‘0’的总个数,m为二进制位序列B的长度,利用初值x1和参数μ,按照公式 对倾斜帐篷混沌映射xk进行200次迭代,得到第200
次迭代后的混沌信号x201,
[0075] 令混沌信号初值y1=x201,并从二进制位序列B中从头到尾正向取M(本例中M的取值为9)个元素,得到第一个二进制位分组序列BF{1}={B1,B2,···,BM},令j=1,进行如下操作:
[0076] S11、由混沌信号yj和参数μ,对所示倾斜帐篷混沌映射xk进行单次迭代,得到混沌信号yj+1,同时利用混沌信号yj+1,按照公式direction_shift1=mod(Y1i‑Y2i,2),k_shift1=mod(Y1i+Y2i,9)计算分别得到移位方向direction_shift1、移位个数k_shift1,
[0077] 其中,Y1j=[(yj+1·10M‑[yj+1·10M])·10000],Y2j=[(yj+1·10M‑[yj+1·10M])·10000];
[0078] S12、当direction_shift1=0时,将二进制位分组序列BF{j}中元素循环左移k_shift1位,得到正向移位后的二进制位分组序列 表示为;
[0079] S13、比较j与m的大小,若j<m‑1,则利用正向移位后的二进制位分组序列中前M‑2个元素,按照公式
对混沌信号yj+1进行调
整,
[0080] 其中,bin2dec({BBM×j‑(M‑1),BBM×j‑(M‑2),···,BBM×j‑2})操作表示将二进制位分组序列{BBM×j‑(M‑1),BBM×j‑(M‑2),···,BBM×j}转换为数值型数据,同时按照公式{B(M‑1)×j‑(M‑2),B(M‑1)×j‑(M‑3),···,B(M‑1)×j,B(M‑1)×j+1}={BBM×j‑(M‑1),BBM×j‑(M‑2),···,BBM×j}将二进制位序列B中相应元素替换为正向移位后的二进制位分组序列,并令j=j+1,随后从二进制位序列B中正向取M个相应元素,得到第j个二进制位分组序列BF{m}={B(M‑1)×m‑(M‑1),B(M‑1)×m‑(M‑2),···,B(M‑1)×m},然后转到步骤S11;
[0081] 若j=m‑1,则利用正向移位后的二进制位分组序列中前M‑2个元素,按照公式
对混沌信号yj+1进行调
整,同时将二进制位序列B中相应元素替换为正向移位后的二进制位分组序列
替换公式为{B(M‑1)×j‑(M‑2),B(M‑1)×j‑(M‑3),···,B(M‑1)×j,B(M‑1)×j+1}={BBM×j‑(M‑1),BBM×j‑(M‑2),···,BBM×j},并令j=j+1,随后从二进制位序列B中正向取M个相应元素,得到第m个二进制位分组序列,表示为BF{m}={B(M‑1)×m‑(M‑1),B(M‑1)×m‑(M‑2),···,B(M‑1)×m},然后转到步骤S11;
[0082] 若j=m,则将二进制位序列B中相应元素替换为正向移位后的二进制位分组序列替换公式为{B(M‑1)×m‑(M‑1),B(M‑1)×m‑(M‑2),···,B(M‑1)×m}={BBM×m‑(M‑1),BBM×m‑(M‑2),···,BBM×m},并令序列 与序列B相等停止操作,从而得到正向移位加密后的二进制位序列
[0083] 步骤3.2、对正向移位加密后的二进制位序列 进行逆向移位加密:
[0084] 首先利用初值x1和参数μ,对倾斜帐篷混沌映射xk进行300次迭代,得到第300次迭代后的混沌信号x301,然后令混沌信号初值z1=x301,并从二进制位序列中从尾到头逆向取M个元素,得到第一个二进制位分组序列,表示为 令j=1,进行如下操作:
[0085] S21、由混沌信号zj和参数μ,对所述倾斜帐篷混沌映射xk进行单次迭代,得到混沌信号zj+1,同时利用混沌信号zj+1,分别按照公式direction_shift2=mod(Z1j‑Z2j‑1,2)、k_shift2=mod(Z1j+Z2j+1,9)计算分别得到移位方向direction_shift2、移位个数k_shift2,[0086] 其中,Z1j=[(zj+1·10M‑[zj+1·10M])·10000],Z2j=[(zj+1·10M‑[zj+1·10M])·10000];
[0087] S22、当direction_shift2=0时,将二进制位分组序列 中元素循环左移k_shift2位,得到逆向移位后的二进制位分组序列 表示为
[0088] 当direction_shift2=1时,将二进制位分组序列BN{j}中元素循环右移k_shift2位,得到逆向移位后的二进制位分组序列 表示为
[0089] S23、比较j与m的大小,若j<m‑1,则利用逆向移位后的二进制位分组序列中前M‑2个元素,按照公式
对混沌信号zj+1进行调整,
[0090] 同时将二进制位序列 中相应元素替换为逆向移位后的二进制位分组序列
[0091] 并令j=j+1,随后从二进制位序列 中逆向取M个相应元素,得到第j个二进制位分组序列,表示为 然后转到步骤S21;
[0092] 若j=m‑1,则利用逆向移位后的二进制位分组序列中前M‑2个元素,按照公式
对混沌信号zj+1进行调整,同时
将二进制位序列 中相应元素替换为逆向移位后的二进制位分组序列
并令j=j+1,随后从
二进制位序列B中逆向取M个 相应元素 ,得到第m个二进制位分组序列
然后转到步骤21;
[0093] 若j=m,则将二进制位序列 中相应元素替换为逆向移位后的二进制位分组序列BN{m}, 并令序列C与序列相等,从而得到双向移位加密后的二进制位序列
[0094] 步骤4、对于地理信息数据C,输入N个初始化种子 以及N个循环移位子过程的叠加顺序S1,S2,···,SN;
[0095] 步骤5、令i=1;
[0096] 步骤6、抽取 和Si;
[0097] 步骤7、根据抽取Si的值确定循环移位子过程的种类,将 作为随机数种子生成一组随机数,记为[X(1),X(2),···,X(T)],并采用所述一组随机数对待加密数据进行所确定的循环移位子过程,每个所述随机数为Si对应的循环移位子过程的移位步数,是第i行,或第i列,或第i斜线,或第i反斜线,或第i圈的移位步数;其中,T的值根据循环移位子过程的种类及输入数据的尺寸自动确定;
[0098] 本例中,所述循环移位子过程的种类包括:行循环移位RowShift、列循环移位ColumnShift、斜线循环移位SlashShift、反斜线循环移位BackslashShift和圈循环移位RoundShift。
[0099] 所述采用一组随机数对待加密数据进行所确定的循环移位子过程,包括:
[0100] 第一种方式:对待加密数据从第1行到第T行依次执行行循环移位RowShift,即将第一行执行行循环移位RowShift(1,X(1)),将第2行执行行循环移位RowShift(2,X(2)),依此类推将第T行执行行循环移位RowShift(T,X(T));
[0101] 第二种方式:对待加密数据从第1列到第T列依次执行列循环移位ColumnShift,即将第一列执行列循环移位ColumnShift(1,X(1)),将第2列执行列循环移位ColumnShift(2,X(2)),依此类推将第T列执行列循环移位ColumnShift(T,X(T));
[0102] 第三种方式:对待加密数据从第1斜线到第T斜线依次执行斜线循环移位SlashShift,即将第1斜线执行斜线循环移位SlashShift(1,X(1)),将第2斜线执行斜线循环移位SlashShift(2,X(2)),依此类推将第T斜线执行斜线循环移位SlashShift(T,X(T));
[0103] 第四种方式:对待加密数据从第1反斜线到第T反斜线依次执行反斜线循环移位BackslashShift,即将第1反斜线执行反斜线循环移位BackslashShift(1,X(1)),将第2反斜线执行反斜线循环移位Backslash Shift(2,X(2)),依此类推将第T反斜线执行反斜线循环移位BackslashShift(T,X(T));
[0104] 第五种方式:对待加密数据从第1圈到第T圈依次执行圈循环移位RoundShift,即将第1圈执行圈循环移位RoundShift(1,X(1)),将第2圈执行圈循环移位RoundShift(2,X(2)),依此类推将第T圈执行圈循环移位RoundShift(T,X(T));
[0105] 其中,所述行循环移位RowShift(T,X(T))表示对待加密数据的第T行自左向右平移X(T)个数据;所述列循环移位ColumnShift(T,X(T))表示对待加密数据的第T行自上而下平移X(T)个数据;所述斜线循环移位SlashShift(T,X(T))表示对待加密数据的第T斜线从西南到东北方向循环移动X(T)个数据;所述反斜线循环移位BackslashShift(T,X(T))表示对待加密数据的第T反斜线沿着西北到东南方向循环移动X(T)个数据;所述圈循环移位RoundShift(T,X(T))表示对待加密数据的第T圈做顺时针循环转动X(T)个数据。
[0106] 步骤8、令i=i+1,并返回步骤6循环进行,直至i=N,获得所需的地理信息加密数据D。
[0107] 本实施例还提出了一种基于动态循环位移的地理数据加密系统,包括多通道地理信息采集模块与地理信息管理子系统,如图2所示:
[0108] 所述多通道地理信息采集模块用于获取地理信息数据;
[0109] 所述地理信息管理子系统包括数据存储模块、数据加密模块(加密芯片)、数据解密模块、北斗GPS监测开启模块以及权限认证模块,
[0110] 所述数据存储模块用于存储获取的地理信息数据;
[0111] 所述数据加密模块也即是加密芯片用于执行上述方法的步骤,对地理信息数据进行加密操作;
[0112] 所述数据解密模块用于实现地理信息数据的解密操作;
[0113] 所述北斗GPS监测开启模块用于实现在特定区域的特定用户能够访问数据的辅助手段,限定只有在特定区域能够执行操作或者在特定区域执行不同地理信息主管部门自带加密算法的切换操作,
[0114] 所述权限认证模块用于在加密文件获得授权且处于当前安全区域内时开启客户端的相关权限。
[0115] 进一步的,所述权限认证模块卡其的相关权限包括地理信息数据的上传、访问、更新或下载的权限。
[0116] 本实施例基于SM4国密加密算法、双向移位加密算法和动态循环位移加密算法的多元素加密方式,实现了对地理信息数据的多层加密处理,使得地理信息数据内的信息不可篡改,有效避免了分发数据、外发数据时存在的风险,还可避免数据的版权纠纷,在无授权或单一授权环境下无法使用,大大提高了地理信息数据的安全性。
[0117] 以上对本发明所提供的技术方案进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。