具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
本发明实施例提供了一种计算机通信的方法,所述方法包括:
101:检测存储有与服务主机匹配的身份标识码及密钥算法因子的加密模块的加载;
102:从加密模块中获取身份标识码及密钥算法因子;
103:根据身份标识码及密钥算法因子生成确定匹配服务主机过程需要的服务主机定位密钥;广播以服务主机定位密钥加密的服务主机定位信息,接收服务主机的应答;
104:根据服务主机定位密钥验证应答是否正确;如果应答正确,根据身份标识码及密钥算法因子生成链路连接密钥;发送以链路连接密钥加密的链路连接信息给所述服务主机;
105:接收服务主机的应答,根据链路连接密钥验证应答是否正确;
106:如果应答正确,发送通信数据信息给服务主机,与服务主机建立通信。
本发明实施例通过检测存储有与服务主机匹配的身份标识码及密钥算法因子的加密模块的加载,从加密模块中读取与服务主机匹配的身份标识码及密钥算法因子,并以与服务主机匹配的身份标识码及密钥算法因子生成服务主机定位密钥,用来定位匹配的服务主机,并以与服务主机匹配的身份标识码及密钥算法因子生成链路连接密钥,用来加密与服务主机进行链路连接的信息,在接收到正确的应答后才进行链路连接,并在建立的链路连接上与服务主机进行数据通信的信息,保证了网络主机访问服务主机的安全性。
实施例2
参见图2,本发明实施例提供了一种网络主机与服务主机通信的方法,以网络主机端为例进行了说明,该方法主要包括步骤201-步骤205:
201:检测存储有与服务主机匹配的身份标识码及密钥算法因子的加密模块的加载,从加密模块中获取身份标识码及密钥算法因子;
该步骤在网络主机上检测出的加密模块用于预先存储服务主机的身份标识和密钥算法因子,加密模块具体可以采用加密锁,是一种插在计算机USB口上的软硬件结合的加密产品;在网络主机上安装的加密模块检测程序就会检测到加密模块的加载,并驱动网络主机进行读取加密模块中的内容;读取与加密模块匹配的服务主机数量;加密模块中存储了与服务主机匹配的身份标识及密钥算法因子,最多可以存储128个服务主机的身份标识及密钥算法因子;网络主机在从加密模块中获取身份标识码及密钥算法因子时,周期循环的进行获取身份标识码及密钥算法因子,每次获取一个身份标识及对应的密钥算法因子,这样可以保证数据的安全性,即使有人截获网络主机的数据也不会得到全部的数据。
从加密模块中读取加密模块匹配的服务主机身份标识码和密钥算法因子,通过与服务主机相同的密钥生成算法(包括服务主机定位密钥生成算法、建立链接密钥生成算法、数据通信密钥生成算法及链路维持密钥生成算法)计算出应用与服务主机在服务主机广播定位、链路建立、链路维持、应用数据通信各环节需要的密钥,并使用密钥对各环节发送的数据信息进行加密和解密,从而实现对应用和服务主机通信的控制。各个服务主机使用的密钥生成算法是相同的,公开的,只是各个服务主机的身份标识码和密钥算法因子不同。
202:根据身份标识码及密钥算法因子生成确定匹配服务主机过程需要的服务主机定位密钥,广播以服务主机定位密钥加密的服务主机定位信息,接收服务主机的应答;
该步骤在网络主机与服务主机通信的过程中,用于定位出与网络主机通信的服务主机,具体地,服务主机定位过程的流程如图3所示,包括步骤301-310:
301:读取加密模块中存储的服务主机身份标识码和密钥算法因子;
302:通过服务主机定位密钥生成算法,计算出定位密钥;
各个服务主机具有统一的密钥生成算法,包括服务主机定位密钥生成算法、链路连接密钥生成算法、数据通信密钥生成算法、链路维持密钥生成算法。
303:使用定位密钥加密服务主机定位信息;
304:广播加密的服务主机定位信息;
该步骤按照局域网UDP(User Datagram Protocol,用户数据包协议)广播的方式进行广播加密的服务主机定位信息。
305:监听服务主机的应答;
306:判断是否收到服务主机的应答,如果收到,继续步骤307,如果没有收到应答,休眠sleep 5秒钟,返回步骤305;
307:解密应答数据,获取应答服务主机的身份标识码;
该步骤中服务主机应答的数据也是根据服务主机定位密钥生成算法计算出服务主机定位密钥,并以服务主机定位密钥加密应答数据,发送给网络主机,网络主机对应答数据以同样的密钥生成算法解密后得到应答服务主机的身份标识码。
308:判断服务主机的身份标识码与读取的加密模块中存储的身份标识码是否相同,如果相同,继续步骤309,如果不同,丢弃应答信息,sleep5秒钟,返回步骤304;
309:获取应答服务主机的IP(Internet Protocol,网络协议)地址;
310:存储加密模块匹配的全部服务主机的IP,服务主机定位完成。
上述服务主机定位的过程,保证了网络主机只能与加密模块中存储的身份标识码匹配的服务主机可以定位成功,以服务主机定位密钥加密服务主机定位信息,保证了定位过程的安全性。
203:根据身份标识码及密钥算法因子生成链路连接密钥;发送以链路连接密钥加密的链路连接信息给服务主机;接收服务主机对链路连接信息的应答,根据链路连接密钥验证应答是否正确;
该步骤在网络主机定位出进行通信的服务主机后,需要与服务主机之间建立起通信的链路,包括:找到服务主机的正确地址,建立连接请求;向服务主机发送连接请求;如果服务主机接收连接请求,向服务主机发送链路连接信息,在发送链路连接信息时根据身份标识码及密钥算法因子生成链路连接密钥;发送以链路连接密钥加密的链路连接信息;并接收服务主机的应答,根据链路连接密钥验证应答是否正确,正确则建立通信链路。
具体地,建立通信链路的过程,如图4所示,包括步骤401-412。
401:读取加密模块中存储的与服务主机匹配的身份标识及密钥算法因子;
402:通过链路连接密钥生成算法计算出链路连接密钥;
403:读取服务主机定位存储的IP地址;
404:建立链路连接请求,获取服务主机的IP地址;
该步骤通过在网络主机上注册的应用调用套接字socket接口建立连接请求,由TCP/IP协议(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)捕获服务主机的IP地址;应用指运行于远程控制场所的网络主机之上的第三方应用程序,包括SCADA系统、专业应用系统、业务管理系统等,通过IP地址,和工业控制服务主机建立通信,采用工业控制协议对服务主机进行访问,获取设备过程数据。如果是未注册应用不能和服务主机进行通信,这样防止了非法应用对服务主机的访问。
405:判断建立链路连接请求的服务主机的IP地址与服务主机定位存储的IP地址是否一致;如果一致继续步骤406,如果不一致,返回步骤403;
如果建立链路连接请求的服务主机的IP地址与服务主机定位存储的IP地址一致,证明找到的服务主机地址正确,可以继续通过socket接口向建立链路连接请求的服务主机发送连接请求,并等待服务主机的连接应答。
406:发送连接请求,等待来自服务主机的连接应答;
如果服务主机同意和网络主机上注册的应用进行连接,会发送应答。
407:接收应答,并生成链路连接信息,以计算出的链路连接密钥加密链路连接信息发送给服务主机;
该步骤在网络主机上注册的应用根据网络主机IP和连接上的服务主机IP生成链路连接信息,以计算出的链路连接密钥加密后,通过socket接口发送给服务主机。
408:监听服务主机应答;
409:判断如果接收到服务主机的应答,继续步骤410,如果没有接收到服务主机的应答,sleep5秒返回步骤407,继续发送加密的链路连接信息给服务主机;
410:解密应答数据;
411:判断应答是否正确,如果正确,继续下一步骤,如果不正确,丢弃应答信息,并在sleep5秒后返回步骤407;
412:记录链路连接信息,链路连接完成。
该步骤将应答正确的链路连接信息和连接记录下来,将socket接口的连接返回给应用,完成此次链路连接,应用可以在此socket接口和服务主机进行通信。
基于服务主机广播定位后,确定了服务主机地址和网络主机地址(在网络主机中确定了加密模块匹配的服务主机地址,在匹配服务主机中确定了加密模块对应的网络主机的地址);网络主机周期循环地从加密模块中读取匹配服务主机的身份标识码和密钥算法因子,保证了从加密模块读取数据时的安全性,基于这两个数据,通过链路连接密钥生成算法计算出链路连接密钥,以链路连接密钥对服务主机链路连接信息进行加密编码后,采用TCP/IP协议和服务主机进行交互,匹配服务主机能够正确解密数据并生成正确的应答,从而建立了网络主机和加密模块匹配的服务主机的通信链路,并且加密链路连接信息保证了建立通信链路的安全性;之后,注册到网络主机的第三方应用程序就可以基于此链路和服务主机进行通信,未注册应用不能和服务主机进行通信,防止了非法应用对服务主机的访问。
204:如果链路连接信息应答正确,根据身份标识码及密钥算法因子生成数据通信密钥;发送以数据通信密钥加密的通信数据信息给服务主机,接收服务主机的通信数据信息通信数据信息;
该步骤在网络主机上注册的应用与服务主机建立链路连接后,就可以在建立的链路上进行数据通信了,进行数据通信的过程如图5所示,具体包括步骤501-507:
501:第三方应用程序在网络主机上注册;
502:注册后的应用在建立的链路上向服务主机发送通信数据;
503:网络主机对通信数据信息进行加密;
在这一步骤中,网络主机周期循环地从加密模块中读取匹配服务主机的身份标识码和密钥算法因子,基于这两个数据,通过数据通信密钥生成算法,计算出数据通信密钥,以数据通信密钥对应用和服务主机的通信数据进行加密。
504:发送加密后的通信数据信息;
505:接收服务主机的应答;
506:对服务主机应答信息进行解密;
507:与服务主机完成交互。
上述应用数据通信的过程,网络主机采用系统定制的TCP/IP通信协议栈截获应用和服务主机的通信数据,利用加密模块存储的服务主机身份标识码和密钥算法因子,通过数据通信密钥生成算法生成数据通信密钥,以数据通信密钥加密、解密应用与匹配服务主机通信的数据信息,保证通信数据的安全性;加密模块匹配的服务主机能够正确解密数据并将应答传送到应用,实现了第三方应用程序和服务主机的数据通信的安全性。
205:根据身份标识码及密钥算法因子生成链路维持密钥;发送以链路维持密钥加密的链路维持信息给服务主机,接收服务主机的应答,如果应答正确,维持与服务主机的链路连接。
该步骤在通信完成后,为了保证链路一直是通的,需要进行链路维持。
链路维持过程,如图6所示,具体包括步骤601-609:
601:根据加密模块存储的服务主机身份标识码和密钥算法因子获取链路维持密钥;
602:以链路维持密钥加密链路维持信息;
603:向服务主机发送加密的链路维持信息;
604:接收服务主机的链路维持应答数据;
605:判断是否收到应答数据,如果收到,继续下一步骤606,如果没有收到应答,需要重新进行定位服务主机;
606:解密应答,获取应答服务主机的身份标识码;
607:判断应答服务主机的身份标识码与加密模块存储的身份标识码是否符合,如果符合,继续下一步骤608,如果不符合,返回步骤602;
608:一次链路维持完成;
609:如果出现延时,返回步骤602。
上述链路维持过程,利用加密模块存储的服务主机身份标识码和密钥算法因子,通过链路维持密钥生成算法生成链路维持密钥,以链路维持密钥加密周期与匹配服务主机交互的链路维持信息,匹配服务主机验证、应答正确后,维持网络主机和匹配的服务主机提供的服务主机通信链路,保证了链路维持数据的安全性。
以上介绍了网络主机端的通信流程,作为和网络主机通信的服务主机,与网络主机进行通信的具体流程参见图7,包括步骤701-704:
701:存储身份标识码和密钥算法因子,生成通信过程需要的链路密钥;
该步骤中每个服务主机都有唯一的身份标识,这个标识在服务主机出厂前就已经确定,一旦确定,就不会再改变;服务主机身份标识一般包含制造年月日、硬件编码、软件版本编码、系列编码、生产流水号等信息;在服务主机的身份标识信息上以二进制加密方式进行加密后,生成服务主机身份标识码文件,标识码由16位阿拉伯数字和A-F字母组成,例如:6AB41395 4763 5F5C,在服务主机内保存。
基于服务主机身份标识码,利用确定的密钥生成算法,可以生成与服务主机匹配的服务主机定位密钥、链接密钥、链路维持密钥和数据通信密钥。密钥生成算法各个服务主机一致,区别仅在于算法因子,每个服务主机的算法因子作为服务主机Key文件以二进制形式存储于服务主机,服务主机运行后,依据身份标识码和密钥算法因子,可自动计算出访问服务主机所需的服务主机定位密钥、链接密钥、链路维持密钥、数据通信密钥。
702:在指定端口建立链路监听;
703:接收发来的以定位密钥加密的服务主机定位信息;
该步骤在接收服务主机定位信息时,服务主机端的定位流程如图8所示,包括步骤801-809:
801:启动服务主机,运行服务主机程序;
802:读取身份标识码和密钥算法因子;
803:在指定端口建立监听套接字socket;
804:等待广播的定位信息:
805:判断是否收到广播的服务主机定位信息,如果收到,解密服务主机定位信息,继续步骤806,如果没有收到,返回步骤804;
806:解密服务主机定位信息,获取其中的服务主机身份标识码;
807:判断解密得到的服务主机身份标识码与本身的身份标识码是否一致,如果一致,继续步骤808,如果不一致,丢弃应答信息,返回步骤804;
808:生成本次的服务主机定位密钥,并发送应答;
809:存储定位密钥和广播服务主机定位信息的网络主机的IP地址,完成服务主机的定位。
在这一服务主机定位过程中,服务主机定位信息交互三次后,网络主机端和匹配的服务主机端都存储了正确的位置信息,为下一步的链路连接确定了正确的通信目标。
704:解密数据信息,身份标识码匹配则发送应答数据信息,服务主机定位完成。
其他如链路建立过程、与应用数据通信过程和链路维持过程与服务主机定位过程相似,服务主机端接收到网络主机发来的数据信息,利用自身存储的链路密钥进行解密,获取其中的服务主机身份标识码,判断解密得到的服务主机身份标识码与本身的身份标识码是否一致,一致则发送应答。
本发明实施例通过检测网络主机端加载的加密模块,网络主机读取加密模块中存储的匹配服务主机身份标识码和密钥算法因子,在网络主机与服务主机进行通信的过程中,包括定位服务主机,与定位的服务主机建立链路连接,在建立的链路连接上进行数据通信,维持通信的链路,都以读取的服务主机身份标识码和密钥算法因子生成通信过程中需要的密钥,包括服务主机定位密钥、链路连接密钥,数据通信密钥,链路维持密钥,加密与服务主机的进行交互的服务主机定位信息,链路连接信息、通信数据信息及链路维持信息,并且收到应答信息,都进行验证,实现了对应用和服务主机之间的控制,保证了网络主机与服务主机通信过程每个步骤的安全性;未在网络主机注册的应用不能和服务主机进行通信,防止了非法应用对服务主机的访问。
实施例3
参见图9,本实施例提供了一种网络主机,所述网络主机包括:
获取模块901,用于获取与服务主机匹配的身份标识码及密钥算法因子;
密钥生成模块902,用于根据身份标识码及密钥算法因子生成链路连接密钥;
发送模块903,用于发送以链路连接密钥加密的链路连接信息给服务主机;
接收模块904,用于接收服务主机的应答,根据链路连接密钥验证应答是否正确;
如果应答正确,由发送模块903发送通信数据信息给服务主机,与服务主机建立通信。
检测模块905,用于检测加密模块906的加载,并驱动获取模块901从加密模块906中获取身份标识码及密钥算法因子。
参见图10,网络主机还包括加密模块906,加密模块906用于:存储与服务主机匹配的身份标识码及密钥算法因子。
进一步,密钥生成模块902,还用于:
根据身份标识码及密钥算法因子生成确定匹配服务主机过程需要的服务主机定位密钥;
相应地,发送模块903用于:
广播以服务主机定位密钥加密的服务主机定位信息,接收模块904接收应答,如果应答正确,再由发送模块903发送以链路连接密钥加密的链路连接信息。
密钥生成模块902,还用于:
根据身份标识码及密钥算法因子生成数据通信密钥;
相应地,发送模块903还用于发送以数据通信密钥加密的通信数据信息,接收模块904还用于接收并解密交互的通信数据信息。
密钥生成模块902,还用于:
根据身份标识码及密钥算法因子生成链路维持密钥;
相应地,发送模块903还用于:发送以链路维持密钥加密的链路维持信息给服务主机,接收模块904还用于:接收服务主机的应答,如果应答正确,维持链路连接。
本发明实施例通过获取与服务主机匹配的身份标识码及密钥算法因子,并以与服务主机匹配的身份标识码及密钥算法因子生成服务主机定位密钥,用来定位匹配的服务主机,并以与服务主机匹配的身份标识码及密钥算法因子生成链路连接密钥,用来加密与服务主机进行链路连接的信息,在接收到正确的应答后才进行链路连接,并以与服务主机匹配的身份标识码及密钥算法因子生成数据通信密钥加密和服务主机进行数据通信的信息,保证了网络主机访问服务主机的安全性。
实施例4
参见图11,本实施例提供了一种计算机通信系统,该系统包括:
网络主机1001和服务主机1002;
网络主机1001包括:
获取模块901,用于获取与服务主机匹配的身份标识码及密钥算法因子;
密钥生成模块902,用于根据身份标识码及密钥算法因子生成链路连接密钥;
发送模块903,用于发送以链路连接密钥加密的链路连接信息给服务主机1002;
接收模块904,用于接收服务主机的应答,根据链路连接密钥验证应答是否正确;
检测模块905,用于检测加密模块906的加载,并驱动获取模块901从加密模块906中获取身份标识码及密钥算法因子。
如果应答正确,由发送模块903发送通信数据信息给服务主机1002,与服务主机1002建立通信。
与网络主机1001进行通信的服务主机1002用于:存储身份标识码和密钥算法因子,生成链路连接密钥;接收网络主机发来的链路连接信息,发送链路连接信息应答;接收网络主机发来的通信数据信息,发送通信数据信息应答。
进一步地,参见图12,网络主机1001还包括加密模块906,加密模块906加载在网络主机上,用于存储与服务主机匹配的身份标识码及密钥算法因子。
其中,加密模块906具体可以采用加密锁,是一种插在计算机USB口上的软硬件结合的加密产品(外形酷似U盘,俗称加密狗),一般都有几十或几百字节的非易失性存储空间可供读写,现在较新的加密锁内部还包含了单片机。软件开发者可以通过接口函数和加密锁进行数据交换(即对加密锁进行读写),来检查加密锁是否插在接口上。这样,软件开发者可以在软件中设置多处锁,利用加密锁做为钥匙来打开这些锁;如果没插加密锁或加密锁不对应,软件将不能正常执行。在本发明实施例中每个加密锁都保存有匹配服务主机的身份标识码和密钥算法因子两个参数,表明插有此加密锁的网络主机上的应用程序在注册后可以和服务主机建立链接并访问服务主机数据,一个加密锁可以存储最多128个服务主机的身份标识码和密钥算法因子。检测模块也可以独立安装,当用户在网络主机上插入加密模块后,检测模块自动检测到加密模块;并驱动获取模块周期循环地从加密模块中获取数据,用户拔下加密模块后,获取模块停止运行。加密锁存储服务主机的身份标识和密钥算法因子,作为网络主机访问的唯一硬件授权标识。
获取模块901、密钥生成模块902、发送模块903和接收模块904可以作为一个整体的程序模块运行于网络主机之上,是一个通用的程序模块(称为链路监测程序模块),可运行于不同操作系统的网络主机之上,为网络主机上运行的第三方应用访问服务主机提供服务主机定位、链路连接、链路保持、应用数据通信和交互数据加密解密工作,运行的第三方应用要在网络主机这个整体的程序模块中注册,否则不能够实现对服务主机的访问。
网络主机1001与实施例3中的网络主机具有相同的功能,其中包括的获取模块、密钥生成模块、发送模块、接收模块、加密模块和检测模块的结构及功能已在实施例3中进行了详细的说明,故在此不赘述;具体的网络主机1001与服务主机1002进行安全通信的过程可以参见实施例1和2采用的方法。
如图12所示,为服务主机和网络主机的通信结构,服务主机1002还包括:链路监测端口10021,用于监听网络主机广播的服务主机定位信息;链路监测端口10021,还用于监听链路维持信息。在服务主机和网络主机建立链路连接后,通过链路监测端口10021与网络主机上的应用进行通信,链路检测端口10021从服务主机身份标识码存储模块10022中获取身份标识码和密钥算法因子用于加密和网络主机上的应用进行通信的信息,采用协议转换和数据采集功能模块10023实现服务主机的协议转换和数据采集功能,以及采用通道转换和透传功能模块10024实现通道转换和透传功能,服务主机可以将已经和网络主机上建立链路连接的应用放入一个通过认证的应用连接序列模块10025中。
如图13所示,为实际服务主机和网络主机的通信系统结构图,工业控制服务主机通过以太网、串行端口,连接多个现场设备包括以太网设备、控制主机等,对现场设备的过程数据进行采集、存储;运行于远程控制场所的网络主机之上的第三方应用程序,与服务主机进行通信获取现场设备的数据。
本发明实施例提供的系统通过加密模块获取服务主机的身份标识码机密钥算法因子,在网络主机上以获取的服务主机的身份标识码及密钥算法因子,加密服务主机广播定位、链路连接、链路维护、数据通信过程的数据,并验证应答信息,保证了通信的安全性;任何网络主机上的应用在与服务主机进行交互信息前需要进行注册,防止了非法应用对服务主机的访问。
需要说明的是:上述实施例提供的网络主机在与服务主机进行通信时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将网络主机和服务主机的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的网络主机与服务主机进行安全通信的系统与安全通信方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。