发明内容
本发明为了解决现有技术中USB设备与主机间进行数据通信时存在安全隐患的问题,提供了一种USB设备与主机进行安全通信的方法及装置。所述技术方案如下:
一种USB设备与主机进行安全通信的方法,方法包括以下步骤:
步骤A:主机用加密密钥对数据进行加密后发送给USB设备;
步骤B:USB设备收到加密数据后用解密密钥进行解密,并进行处理;
步骤C:USB设备将处理后的数据用所述加密密钥进行加密,然后发送给主机;
步骤D:主机收到加密数据后用所述解密密钥进行解密,得到经USB设备处理后的数据。
所述USB设备为智能密钥装置。
所述加/解密密钥是固定密钥。
所述加/解密密钥是动态密钥。
所述加密密钥与解密密钥相同或者是公私钥对。
所述的动态密钥的生成为:
主机向USB设备发命令协商加/解密密钥;
USB设备得到主机发来的协商加/解密密钥命令后生成加/解密密钥,把所述加/解密密钥发送给主机。
所述的动态密钥的生成为:
主机生成加/解密密钥后发送给USB设备。
所述加/解密密钥的生成是在USB设备与主机建立连接时进行,或者是在USB设备与主机的通信过程中进行。
所述的加/解密密钥发送是以明文的形式发送,或者用提前约定的密钥加密后发送。
所述的加/解密的算法是:
DES、3DES、RC4、RC5、RSA、AES或ECC。
本发明同时提供了一种USB设备与主机进行安全通信的装置,所述装置包括主机与USB设备,主机具体包括:
主机密钥协商模块,用于主机向USB设备发协商加/解密密钥命令,或用于主机生成加/解密密钥后发送给USB设备;
主机加/解密模块,用于主机端数据的加/解密;
主机通信模块,用于主机端数据的发送和接收;
USB设备具体包括:
USB设备密钥生成模块,用于USB设备得到主机发来的协商加/解密密钥命令后,生成加/解密密钥;
USB设备加/解密模块,用于USB设备端数据的加/解密;
USB设备通信模块,用于USB设备端数据的发送和接收;
USB设备与主机进行数据通信的密钥生成过程是在USB设备与主机建立连接时进行的,或者在USB设备与主机的通信过程中进行的。
本发明的技术方案带来的有益效果是:
通过采用加密方法,使整个过程中传输于计算机和USB设备之间的数据都是经过加密处理的数据,隐藏了有效信息,从而增加了非法用户分析破译通信数据的难度,在一定程度上保证了通信过程中的数据安全。
本发明实现方法多样,可以根据需要定制安全等级,设备简单,使用方便。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,但不作为对本发明的限定。
本发明采用在USB设备与主机通信前,对需要通信的数据用密钥进行加密,当收到加密后的数据后,用该密钥对应的解密密钥进行解密获取原始数据,从而实现安全通信。
该USB设备为智能密钥装置,可以是USB Token等。智能密钥装置是一种带有处理器和存储器的小型硬件装置,它可通过计算机的数据通讯接口与计算机连接。其具有密钥生成功能,并可安全存储密钥,可预置加密算法功能。智能密钥装置与密钥相关的运算完全在装置内部运行,且智能密钥装置具有抗攻击的特性,安全性极高。
实施例1
该加/解密密钥可以是固定密钥,也可以是动态密钥。如果是固定密钥,则直接用该固定密钥进行数据通信。参见图1,动态密钥的生成过程如下:
步骤101:将USB设备插入主机。
加/解密密钥的生成是在USB设备与主机建立连接时进行,或者是在USB设备与主机的通信过程中进行。本实施例采用USB设备与主机刚建立连接时进行。
步骤102:主机发命令取加/解密密钥。
如果采用的是对称算法,则加密密钥和解密密钥是相同的,如果采用的是非对称算法,则加密密钥和解密密钥是公私钥对,不相同。
步骤103:USB设备得到主机发来的命令后生成加/解密密钥。
步骤104:USB设备用基本密钥对生成的加/解密密钥进行加密。
加/解密密钥发送是以明文的形式发送,或者用提前约定的密钥加密后发送。考虑到安全性,本实施例采用基本密钥(提前约定的密钥)对加/解密密钥进行加密后发送。
这里的基本密钥为USB设备与主机约定的的密钥,此密钥仅仅用于加密协商后的密钥,可以定期由生产密钥的管理程序进行更换。在本实施例中,所述基本密钥在密钥有效期内是固定不变的,如何更换基本密钥不是本文的说明范围。
步骤105:主机接收到加密后的加/解密密钥后,对其进行解密,得到以明文形式存在的会话密钥,以后此加/解密密钥用于加/解密USB设备与主机间的通信数据。
另外,动态密钥也可以直接在主机端生成后发送给USB设备。
上述过程为USB设备插入主机后与主机进行密钥协商的过程,密钥协商完成后,即可进行数据通信。
协商后的密钥用于加/解密USB设备与主机间的通信数据,从而在加/解密密钥每次使用后可以更换,实现一次一密。
如图2所示,USB设备完成与主机间加/解密密钥的协商后,主机与USB设备间建立秘密通道,可以开始安全的数据通信,具体步骤如下:
步骤201:主机根据获取的加/解密密钥,对需要进行通信的数据用加密密钥进行加密生成密文数据,然后将密文数据发送给USB设备。
所述加密和发送过程在主机内部完成。
本实施例采用对称算法为例进行说明,如:
加密前,明文数据为:12345678,加密密钥是Key 1,对其加密后的密文数据为abcdefgh。
主机发送abcdefgh给USB设备。
步骤202:USB设备接收到密文数据后,用解密密钥对其进行解密得到原始数据。
本实施例的USB设备使用的解密密钥为Key 1,对接收到abcdefgh解密后恢复为12345678。
由于密钥可以通过主机随时发命令与USB设备进行协商,从而使每次协商后的密钥得到更换,做到一次一密,即动态密钥。例如USB设备再次插入主机时,主机与USB设备协商得到新的密钥Key 2,USB设备用Key 2对明文12345678加密后的密文数据为a′b′c′d′e′f′g′h′并发送,主机接收a′b′c′d′e′f′g′h′后使用会话密钥Key 2对密文数据解密后恢复为12345678。
从以上过程可以看出,使用同样一段明文用不同会话密钥加密后,在通信过程中的密文数据也不同,从而增加破译通信中密文数据的难度。
步骤203:USB设备内部对解密后的数据进行相应的处理。
该处理包括对数据的读、写及进行相应的变换等。
步骤204:USB设备用与主机协商的密钥对处理后的数据用加密密钥进行加密生成密文数据,然后将该密文数据发送给主机。此时的加密和发送过程在USB设备内部完成。
步骤205:主机接收到密文数据后,用解密密钥对其进行解密,得到经USB设备处理后的数据。
本实施例中的加/解密采用的算法包括但不限于以下几种:
1)DES、3DES、RC4、RC5、RSA、AES、ECC等常用算法;
2)用户自定义算法;
3)简单数据变换。
在本实施例中,加/解密和通信过程可以在主机端的应用程序、动态链接库或者驱动程序中实现。会话密钥的不同性主要取决于通信双方在进行数据通信前,产生的密钥不同。
如图3所示,本发明同时提供了一种USB设备与主机进行安全通信的装置,包括主机与USB设备,其中,主机具体包括:
主机密钥协商模块,用于主机向USB设备发协商加/解密密钥命令,或用于主机生成加/解密密钥后发送给USB设备;
主机加/解密模块,用于主机端数据的加/解密;
主机通信模块,用于主机端数据的发送和接收;
USB设备具体包括:
USB设备密钥生成模块,用于USB设备得到主机发来的协商加/解密密钥命令后,生成加/解密密钥;
USB设备加/解密模块,用于USB设备端数据的加/解密;
USB设备通信模块,用于USB设备端数据的发送和接收;
USB设备与主机进行数据通信的密钥生成过程是在USB设备与主机建立连接时进行的,或者在USB设备与主机的通信过程中进行的。
在本发明中,USB设备与主机进行数据通信要进行密钥协商生成密钥,密钥生成过程可以是在USB设备与主机建立连接时进行,也可以是根据需要在USB设备与主机的通信过程中随时进行。
如图4所示,使用上述装置进行数据通信时,各个模块的交互过程如下:
USB设备与主机建立连接,通过主机密钥协商模块和USB设备密钥生成模块确定加/解密密钥。
主机加/解密模块对要与USB设备进行通信的明文数据进行加密形成密文数据。
加密是指使用密钥对明文数据进行一定的运算后形成密文数据,数据的加密过程在主机内部完成。
主机通信模块将密文发送给USB设备通信模块。
USB设备通信模块接收密文数据后,通过USB设备加/解密模块将密文数据解密成明文数据。该解密过程采用与加密过程对应的算法。
USB设备内部对解密还原后的明文数据进行相应处理。
USB设备加/解密模块对处理后的明文数据进行加密形成密文数据,然后通过USB设备通信模块将密文数据发送给主机。
主机通信模块接收到密文数据后,通过主机加/解密模块将密文数据解密成明文数据,得到经USB设备处理后的数据。
以上对本发明所提供的一种USB设备与主机进行安全通信的方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。