具体实施方式
图1是示出了具有本发明的监控装置的一种无线测试及数据传输系统。该系统包括:无线传感器网络节点1,用于检测和采集智能电网用户端信息;监控装置3,用于控制整个系统的运行和数据处理;无线数据传输模块2,用于无线传感器网络节点采集的用户数据无线传输给监控装置;所述无线传感器网络节点1包括多个传感器节点11和无线数据采集终端12;其中,所述无线传感器网络节点1的无线数据采集终端12与监控装置通3过无线数据传输模块2无线连接。
所述监控装置3包括:数据监控及处理模块31,控制中心32,客户端监控模块33和显示终端34。优选的,所述控制中心32为低功耗单片机,优选采用MSP430F149单片机,当然亦可以采用其他的单片机,比如ARM单片机或者是AVR单片机。
所述数据监控及处理模块31和无线数据传输模块2可共同构建安全通信通道,双向连接无线数据采集终端12与控制中心32,控制中心32对所述进入监控装置3的数据进行处理和控制。
控制中心32通过安全通信通道完成对无线数据采集终端的安全验证,如果采集终端不安全,则阻止该采集终端12进入监控装置3进行数据存储与交换,如果采集终端12安全,则允许该无线数据采集终端12进行数据存储与交换。
控制中心32可对系统内所有数据的存储和交换过程,进行加密处理。
所述客户端控制模块34,可将控制中心32的控制指令,通过无线传输的形式发送给无线数据采集终端12,以控制无线数据采集终端12的数据采集。
控制中心32安装有监控软件并配置有后台实时数据库,所述监控软件具有监控功能且能将数据存储为软件格式。中控模块安装定制开发的监控软件,实现对监控数据的连续采集、查看和保存。该软件具有多种监控功能,如实时监控、实时曲线显示、历史曲线显示、报警等。软件配置后台实时数据库,可根据实际需求存储所采集的数据,如定时存储、变化存储等;同时软件支持将数据存储为Excel等常用软件格式,便于后续对数据的使用。
所述无线数据采集终端12设置有防火墙模块,无线数据采集终端12和无线数据传送模块2内各设置有一个加密模块,无线数据传送模块中还设置有一个身份验证模块,数据传送模块和防火墙模块之间设置有相互独立的双通道连接模块。
所述无线数据采集终端12包括:包括MCU、模拟量输入单元、开关量输入单元、继电器输出单元、数字量输出单元、SRAM单元、RTC单元、看门狗单元、RS232/RS485/RS422单元、无线单元以及电源单元;其中模拟量输入单元、开关量输入单元与MCU连接,MCU与继电器输出单元、数字量输出模块单元,同时MCU还与SRAM单元、RTC单元、看门狗单元、RS232/RS485/RS422单元、无线单元以及LED指示灯单元;RS232/RS485/RS422单元与用户接口电路连接,无线单元连接ZigBee传输天线和适配器电路。
所述无线数据传输模块2包括ZigBee接收天线、适配器电路和数据总线,用于接收数据采集终端无线信号,并经由数据总线传输给所述数据处理模块。
所述传感器节点11可包括:括空气温度传感器、空气湿度传感器、电压传感器、电流传感器、有功传感器、无功传感器中的一种或两种及以上的组合。
所述无线数据采集终端12采用高性能工业级无线模块、高性能工业级32位通信处理器,支持多级休眠和唤醒模式,最大限度降低功耗,内置实时时钟(RTC),支持定时开关机。优选采用金属外壳,保护等级IP30,金属外壳和系统安全隔离,特别适合于工控现场的应用。所述无线数据采集终端采用WDT看门狗设计,保证系统稳定,采用完备的防掉线机制,保证数据终端永远在线,S232/RS485接口内置15KVESD保护,天线接口防雷保护。
图2示出了本发明的一种无线测试及数据传输系统的监控方法。该方法具体包括如下步骤:
S1.构建一个包括控制中心、无线数据采集终端和无线数据传输模块在内的通信系统,无线数据采集终端能够向所述无线数据传输模块发送和接收数据;
S2.建立安全通信通道,双向连接无线数据采集终端与控制中心,控制中心对所述进入系统的无线数据采集终端的数据进行处理和控制;
S3.控制中心通过安全通信通道完成无线数据采集终端的安全验证,如果采集终端不安全,则阻止该无线数据采集终端进入系统进行数据加密存储与交换,如果采集终端安全,则允许该采集终端进行数据加密存储与交换。
在S2中采用如下步骤完成安全通信通道的建立:
S21.在无线数据采集终端向控制中心发送连接申请时,无线数据采集终端首先查询是否已缓存与控制中心的会话连接信息,是则使用会话连接信息中缓存的摘要算法对会话密钥进行摘要计算,将会话号与摘要结果写入连接申请包的会话ID与会话密钥摘要字段中;再查询是否已缓存控制中心证书,是则将控制中心的证书序列号写入连接申请包的控制中心证书序列号字段中,再将无线数据采集终端证书的序列号写入无线数据采集终端证书序列号字段中;填写非对称加密和数字签名算法组合列表,并向控制中心发送连接申请;
S22.控制中心接收到无线数据采集终端发送的连接申请数据包后,根据会话号查询是否缓存有对应的会话连接信息,是则使用会话连接信息中缓存的摘要算法对会话密钥进行摘要计算,将计算结果与无线数据采集终端发送的会话密钥的摘要数据进行比对;如果对比结果一致,则将会话密钥与对称算法作为安全通信通道中数据保护的密钥与算法,并进入下一步;
S23.控制中心向终端发送协商结束命令,终端收到控制中心发送的协商结束命令后,安全通道建立结束。
S22中,如果对比结果不一致,则执行下述步骤流程:
S221.控制中心读取无线数据采集终端发送的控制中心证书的序列号,如果与本端使用的证书序列号一致,则不发送控制中心的证书至无线数据采集终端,并执行下一步流程;
S222.控制中心读取无线数据采集终端发送的无线数据采集终端证书的序列号,根据该序列号查询是否已缓存无线数据采集终端证书;是则不需要无线数据采集终端向控制中心发送无线数据采集终端的证书,并执行下述工作流程:
S2221.控制中心读取无线数据采集终端发送的算法组合列表,选择一组加密强度最高的算法组合作为以下流程中使用的加密算法组合,发送至无线数据采集终端,并执行下一步流程;
S2222.控制中心生成一组临时的非对称密钥对,使用控制中心的私钥以及所述步骤S2221中所选择的算法组合中的非对称算法对临时公钥进行数字签名,将签名结果与临时公钥组包,向终端发送密钥交互数据包;
S2223.向无线数据采集终端发送连接申请结束数据包;
S2224.无线数据采集终端收到控制中心发送的连接申请响应数据包,缓存密钥协商算法组合与会话号;无线数据采集终端如果收到控制中心发送的控制中心证书数据包,对控制中心证书进行合法性验证,验证成功,则使用证书中的序列号作为标识,缓存控制中心的数字证书;验证失败,则退出本流程,断开连接;无线数据采集终端如果收到控制中心发送的申请无线数据采集终端证书的申请数据包,则将本端的证书组包成证书数据包,向控制中心发送;无线数据采集终端收到控制中心发送的密钥协商数据包,则使用缓存的控制中心证书中的公钥与所述缓存的密钥协商算法组合中的非对称算法,对控制中心的临时公钥签名信息进行验证,如果不成功则退出流程,并断开链接;如果成功则执行下一步;
S2225.无线数据采集终端随机生成一个会话密钥,作为安全通道中数据保护的密钥,使用算法组合中的对称算法作为保护算法;使用会话号作为标识,将会话密钥、对称算法与摘要算法进行缓存;使用非对称算法对会话密钥进行加密,并使用非对称算法对加密后的会话密钥进行数字签;将加密后的会话密钥以及数字签名组包,向控制中心发送密钥协商数据包;
S2226.向控制中心发送协商结束命令;
S2227.控制中心如果收到无线数据采集终端证书数据包,对无线数据采集终端证书进行合法性验证,如果验证成功,使用证书中的序列号作为标识,缓存控制中心的数字证书;如果验证失败,则退出本流程,断开连接;
S2228.控制中心收到无线数据采集终端发送的密钥协商数据包后,使用无线数据采集终端证书中的公钥以及步骤S22中所选择的算法组合中的非对称算法对签名数据进行签名验证,如果不成功则退出流程,并断开链接;如果成功则使用本端私钥与非对称算法解密会话密钥,并使用步骤S22中产生的会话号作为标识,将会话密钥、对称算法与摘要算法进行缓存;并将会话密钥与对称算法名作为安全通信通道中数据保护的密钥与算法;执行步骤S23。
优选的,所述步骤S221中,如果没有缓存无线数据采集终端证书,则在所述步骤S2221和所述步骤S2222之间增加以下流程:控制中心向无线数据采集终端发送控制中心证书;控制中心发送获取无线数据采集终端证书的请求给无线数据采集终端。
优选的,在步骤S3中,所述控制中心对通过安全认证的且进入系统的无线数据采集终端的进行数据加密存储和交换的具体过程由S31导入源数据,S32截取数据,S33进制转换,S34字符转码,S35数据重组,S36字符串替代和S37数据缺失存贮等步骤组成完成,除了步骤S31和步骤S32外,其他的过程顺序可以变更。
优选的,步骤S32中,在截取字符的函数中,需要三个元素,即待截取字符,截取的位数和截取的起始位置,源数据是待截取字符,而截取的长度是指定,截取的起始位置值是将用户输入的密码,机器码,或服务器端返回的数据拆分成几个之后都加1,拆分的个数需要和计划导入的源数据的组数相同。
以MID(text,start_num,num_chars)函数通过银行卡密码截取为例,其中text表示待截取字符也就是源数据,num_chars表示截取的位数,start_num即表示截取的起始位置,num_chars可以指定,需要升级时,只需要将源数据位数改变,并重新指定num_chars值,例如将num_chars值由10位指定成20位,则截取的字符由10位变成20位,这就是扩充算法,而start_num值可以将银行卡输入密码的6个数字进行分拆,将其拆分的值加1,作为start_num值截取字符即可,拆分方法比较多,示例MID(password,1,1),MID(password,2,1),MID(password,3,1),MID(password,4,1),MID(password,5,1),MID(password,6,1),即将6位password值变成了6位单独的字符,例如,源数据的6组中第一组记为text1,利用MID(text1,MID(password,1,1)+1,20),就可以以密码password的第一位数字加1的位置开始截取text1,截取20位,截取字符的目的是将简单数据混杂在复杂数据中,例如,在银行卡密码的设计过程中,通过这一步,将密码混杂在源数据中,引进6组源数据后,text值就是源数据,而start_num值就是MID(password,A,1)+1值,A是密码字符的位置,这样,就可以获得6组新数据,它们是截取了从第1位到第10位中的一个位数开始的num_chars值长度的数据,例如,密码拆分后的数据为6,就表示从第7位开始截取,num_chars值为20,就表示截取的位数为20,在一个简单密码000000和复杂密码658973中,二者的意义分别表示前者是从6个源数据的第1位开始截取,而后者表示从6个源数据的第7位,第6位,第9位,第10位,第8位,第4位开始截取,与密码的复杂程度无关,只要密码输入人员没有将硬件提供给别人,并同时让别人看到密码输入动作,单单从存贮的密码进行破解时,二者的破解难度是没有区别的,在这一步过程中,每一个源数据存在10个子数据,也就是密码组合数增加了一百万倍。
优选的,在步骤S33进制转换中,如果有需要,可以将任何一种数据转换成另一种进制的数据,在低进制数据转换成高进制数据的过程中,由于高进制数据需要更多的基本元素表示,这里的基本元素就是类似10进制的0到9这10个数字,可以将比较简单的数据变成复杂的数据,同时缩短了数据长度,比方说纯数字数据变成数字和字母混合的数据,有时候,需要将复杂数据变成简单数据或者将非数字数据转换成数字数据。
比方说机器码一般是数字和字母混合数据,而汉字是非数字数据,在GB2312标准中,可以直接引用汉字的区位码,将其转换成数字数据,或者将GB2312标准的文本理解成7445进制的数字(7445包含非汉字符号),据此将中文文档进行加密或应用于数字证书,将中文文本理解成7445进制,转换成10进制,其数据庞大得惊人,以5位数为例,转换成10进制,位数达20位,最高值是2.2873E+19,再转换成62进制数据,也就是转换成数字和字母混合数据即可,加密不使用负数数据,因此,进位和10进制数据一样,也是进制数的一次方,二次方,三次方等依次递增,转换后的数据位数达不到程序设计需要的位数时,用0补足高位数,例如转换后的10进制数据为123,而需要的位数是5位,就在高位上加0为00123补足5位,大部分人接触英文字母和数字比较多,示例是62进制和10进制转换,用阿拉伯数字0到9表示0到9,字母的小写a到z表示10到35,字母的大写A到Z表示36到61,亦可以有其他的指定方案,后面部分讲述的数字或字母的本位码,转码算法也遵循同样的规律,例如将62进制数据A6bJ9转换成10进制数据为36*624+6*623+11*622+45*62+9=533423147,是9位数。
优选的,在步骤S34中的字符转码是利用字符转码算法实现的,用一个字符或一组字符通过转码算法获得另一个字符或一组字符的方法就是字符转码,无论是单个字符还是一组字符,转码都是一一转码,只是后者是同时转换几个字符,单一字符的转码意义是不大的,所以是字符组进行转码,字符组转码需要转码算法指令集和转码表共同实现。
示例是设计四种数字与字母的转码算法,命名为ABCD算法,转码算法遵循以下规律:
1:不同的源码相同的算法转换之后结果是不能相同的;
2:同一源码的几种算法的转换结果互相也不能相同;
3:转码的结果不能与源码相同;
4:转码要设置几种转码算法,以强化密码的组合复杂性,
示例是以数字和字母的本位码为基础条件进行转换的,数字0到9的本位码分别是数字0到9,小写字母a到z的本位码分别是数字10到35;大写字母A到Z的本位码分别是数字36到61。
在ABCD算法中,其中第1算法,第2算法,第3算法是以本位码为基础进行的数学运算,但是第4算法经过人工调整,没有什么算法规律,
第1算法:数字或字母的本位码加该本位码后的第2位奇数就是此数字或字母的转码算法,结果≥62的,就减62,记载其本位码对应的数字或字母;
第2算法:数字或字母的本位码加该本位码后第13位奇数就是此数字或字母的B转码算法,结果≥62的,就减62,记载其本位码对应的数字或字母;
第3算法:数字或字母的本位码加30就是该数字或字母的转码算法,结果≥62的,就减62,记载其本位码对应的数字或字母;
第4算法:第4算法部分遵循数字或字母的本位码加该本位码后的第3个偶数就是该数字或字母的转码算法,结果≥62的,就减62,为了防止数据相同性冲突,做了部分位置调整,记载其本位码对应的数字或字母,从它的设计原理可以知道,转码前后的每一个数字和字母都不会相同,这是一个最基本的设计要点,调用时,第1算法,第2算法,第3算法都可以直接使用数据表调用,也可以使用数学运算换算,但是,第4算法经过了人工调整,需要使用数据表调用,也可以设计其他的转码算法,示例的转码算法利用了同类字段进行算法的ABCD排序。
转码算法指令集:待转码的每个字符作为源码,需要指令转码方向才能获得正确的结果,指令集的数据和待转码的数据存在对应关系,即一个指令字符对应一个待转码字符,经过指令规则转换成另外一个字符,例如,指令集数据为BACC,待转码数据为1234,就是将1234的四个数据分别执行B算法,A算法,C算法,C算法。
优选的,步骤S36中替代字符串是将字符中的部分字符用别的字符替代的一种加密技术,替代可以是单个替代,也可以是字符串替代,较优的设计方案是字符串替代,替代利用字符替代表完成,字符替代表数据分为记录编号和替代字符串,记录编号出现的字符就是需要替代的字符。
例如记录编号出现5,A,b,6,就是将要替代的数据中所有的5,A,b,6字符都抽取出来,进行分组,分组后的字符位数需要与记录编号位数一致,最后一组没有相应的位数时,可以放弃替代或指定增加位数,例如指定第一个字符叠加到符合位数,查找字符替代表中与之对应的记录编号,确定替代字符串,由于抽取出来的几个字符原位置是不相同的,需要确定插入位置,较常见的方法是将抽取出来的几个字符转换成10进制数据,利用取余函数确定,例如,余数加1为几,就在第几个字符的原位置插入,将其他字符的空格清除,获得新数据,字符替代表的记录编号设计需要注意,记录编号需要列举所有可能出现的组合,否则可能出现运算错误,3位替代时,需要27组,也就是3的三次方,4位替代时,记录编号就需要256组,是4的4次方,如果是5位就是5的5次方,已经高达3125组,所以替代的字符数需要适中,数据表数据太庞大和太小都不妥当,替代数据不应太长,否则有可能被长数据查找到字符替代表,4位替代时,替代数据只需要256组,用英文大小写字母和数字表示时,一位和两位就足够了,如此短的数据替代,便没有办法通过查找替代字符串反向查找到字符替代表,不允许出现加密过程或加密数据不存在的字符,这也是为了防止通过替代字符串查找到字符替代表,原因很简单,假如某个字符只在某个数据表中出现,一下子就能查找到,只要是加密过程或加密数据存在的字符都可以作为替代字符,即使是替代的原数据字符也可以出现,例如,替换5,A,b,6这四个字符,那么,替代数据中仍旧允许出现5,A,b,6,由于替代的字符位数不等,所以最终密码的位数是不确定的,替代字符可以采用叠加加密方法多次加密,设计多份字符替代表,通过多个变量连接数据完成多次加密,例如变量数据2356,6987,3075,9837,8863,5534,将6组数据分别除以字符替代表的总数,连接到对应的数据表依次完成替代,也就是先通过2356连接到对应的数据表完成替代,又以替代后的数据作为源数据,用第2组数据连接到对应的数据表完成替代,依次类推,字符替代表与同类数据表有一点区别,就是不同的表记录编号可以是不同的,是指记录编号位数也可以不同,例如,表1是替代5,A,b,6,表2是替代c,8,H,k,或者表1完成3位字符替代,表2完成的是4位字符替代,因为程序是设计通过检索记录编号的位数和字符,确定替代的字符和分组位数,在程序设计中,字符转码,进制转换和截取字符以获得固定长度的数据为佳,而字符替代完成后,数据长度不确定,这给重排字符位置这一步加密过程的字符长度分割表的编制工作带来困难,字符长度分割表的不确定长度值虽然取值比较随意,但也不能出现负值,也就是其他确定长度值的总数不能大于数据的位数,为此,字符替代这一步需要在其他步骤之后,数据缺失保存之前,否则设计有难度。
优选的,步骤S37中的缺失算法,由连接变量引进源数据时,连接变量往往有几组,连接变量分成几组,相应的引进的源数据也有几组,连接变量组数太少,密码容易破解,如果连接变量未能记录完全,那么,依据该数据的值域,也就是该数据可能出现的值,依次加密,也能获得和加密结果一致的值,而计算可能需要的次数与缺失的值的多少有关,缺失值越多时,可能需要的计算次数越多。
例如,缺失一组数据ABCD,ABCD的取值范围都是0到9,那么,从0000到9999,始终都可以找到匹配值,假如源数据是6639,则从0000运算到6639,就会获得结果,在这个过程中,最多需要10000次运算,而对于加密的结果,如果数据记录同样不全,但这种不全的数据位置能够由运算时获取,在依次加密进行比对时,实际上加密的结果被不全的这几个字符分割成了几段,运算的结果需要和这几段数据全部吻合,如果加密后的数据位数很长,那么,出现相同密码的可能性也微乎其微,由于数据记录不全,从记录的密码进行破解几乎没有可能,缺失算法的缺失值不能太复杂,否则迟迟获不到结果,缺失算法的缺点是和非对称算法一样很耗时,没有必要,可以不采用。
如上所述,虽然根据实施例所限定的实施例和附图进行了说明,但对本技术领域具有一般知识的技术人员来说能从上述的记载中进行各种修改和变形。例如,根据与说明的技术中所说明的方法相不同的顺序来进行,和/或根据与说明的系统、结构、装置、电路等构成要素所说明的方法相不同的形态进行结合或组合,或根据其他构成要素或均等物进行替换或置换也可达成适当的效果。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。