矢量地图数据文件具有数据量小、结构紧凑和冗余度低等特点,是地理空间数据的一种主要表现形式,也是地理信息系统的最主要的数据源。随着GIS应用的普及,矢量地图数据文件的安全问题也日益引起人们的重视。加密技术是保障数据安全的最主要的手段,即对数据文件进行加密处理,只有拥有密钥的合法用户才能正常使用数据,而非法的拦截者获取的是无意义的数据,从而无法使用。因此,研究对矢量地图数据文件进行加密和解密非常必要。

一、基于混沌序列的矢量地图数据加密算法

混沌系统用于数据文件加密最早由英国数学家Matthews提出,混沌密码之所以引起人们的研究兴趣,是因为某些确定而简单的离散动力学系统所产生的混沌序列具有非常好的伪随机性和初值敏感性,伪随机性符合Shannon所提出的密码设计应遵循的混乱原则;初值敏感性符合Shannon所提出的密码设计应遵循的扩散原则。另外,通过选取具有白噪声统计特性及雪崩效应等特性的非线性混沌动力系统作为序列密码密钥流生成器,就可构成有效的混沌序列密码应用。

而由混沌系统对初值和参数的极端敏感性可知,选用混沌系统的某一初值或参数作为密钥足合适的。因为采用两个微小差异的初值或参数产生的混沌序列足截然不同的,这样即使攻击对手获知了所采用的混沌模型方面的知识,但若不知道作为密钥的初值或参数,它将无法破译/提取加密的信息,从而能够保证混沌加密系统的安全性。

本文结合上述思想,根据矢量地图数据的特点,设计了基于混沌序列的矢量地图数据的加密算法,加密算法采用Logistic映射生成随机序列,再把随机序列映射成加密密钥流,然后,把加密密钥流与矢量数据流逐字节进行“异或¨操作,从而完成数据文件的加密。图1为示意图。

基于混沌序列的矢量地图数据文件加密方法

二、基于混沌序列的矢量地图数据文件加密方法

1、密钥的生成

Logistic混沌系统的密钥即为系统的初值,它是一个取值范围在(0.1)间的双精度实数,如果让用户使用一个双精度数据作为密钥,显然使用不便。因此,可以设计下面的密钥生成方法。

设有一长为m(m>1)的口令字符串S = C1C2C3……Cm,将该字符串按给定操作映射为(0,1)间的某个实数xo,用x0作为混沌映射的初值,即密钥。例如,可以把映射操作定义为将组成字符串的各个字符映射成ASCII码,再把ASCII码按照某种规则收缩、排列,形成(0,1)间的一个实数。如输入口令的字符串为S=“Drunkl’’,则按照上述方法映射为xo=0. 388487807719,这样,用户使用时不是记住烦琐的实数xo=0.388487807719,而是记住一个有意义的字符串S=“Drunkl”,既方便使用,又满足密钥的条件。

2、加密密钥流的形成 

以密钥xo为初值,对式

基于混沌序列的矢量地图数据文件加密方法

进行反复迭代,生成足够长度的随机序列{xk,k=0,1,2,3.……1},对随机序列{ xk,k=0,1,2,3,……}的各个元素xk,从小数点后首位非0数字开始,顺序取9位数字组成一个长整型数据Ldk,再对这个长整型数据Ldk进行取模运算,得到一个[0,255]之间的整型数据dk。所有元素处理完后,把所得的整型数据序列{dk,k=1,2,3,……}作为加密密钥流。

为了增强随机性,舍弃开始部分长度为n的序列,即从序列的第n+1位开始作为密钥流,进行信息的加密。

n的确定:设字符串SS=Ck+1Ck+2Ck+3……Cm(k=m/2)为口令字符串S= C1C2C3…Cm的子串,按与生成初值相同的操作,把它映射为(0.1)间的某个实数d,然后对d进行扩散、取整,生成一个长整型数据L,再对L进行取模运算,即按式可得n:

基于混沌序列的矢量地图数据文件加密方法

3、文件加密操作

在加密端,把矢量地图数据文件转变成二进制文件格式,依次取出各字节流{mk,k=0,1,2,3,……}与加密密钥流{dk,k=0,1,2,3,……}进行“异或”操作,生成乱码形式的密文流{pk,k =0,1,2,3,……},即Pk=mk+dk,完成整个数据文件的加密。

由于mk+dk+dk=mk,因此,在解密端,采取与加密端相反的操作,即将密文流{Pk,k=0,1,2,3,……}与完全相同的解密密钥流{dk,k=0,1,2,3,……}执行”异或”运算,恢复出明文流{mk,k=0,1,2,3,……},完成整个数据文件的解密。

小知识之GIS

GIS即地理信息系统。

地理信息系统(Geographic Information System或 Geo-Information system,GIS)有时又称为“地学信息系统”。它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。