具体实施方式
本实用新型的第一种优选实施例,提供了一种应用于linux平台下的软件保护设备(或称为加密锁)。以USB接口设备为例。
本实用新型的第一种优选实施例,提供了一种应用于Linux操作系统下的软件保护设备(或称为加密锁)。以USB接口设备为例。
如图5所示,所述软件保护设备502包括顺次连接的接口芯片503、MCU 505和扩展存储器504,所述扩展存储器可以选用任意的RAM、ROM、EPROM、FLASH等,用于存储相应的加密算法。存储器应该有足够的存储空间,用于存储预置的加密算法,或者可以由用户选择或下载算法,如果需要存储部分用户代码的话需要有足够大的存储空间,可以是片内FLASH等。
图中MCU部分505包括Linux操作系统通信协议模块506和安全模块507。506模块完成针对Linux操作系统的通信协议的解析,安全模块507用于提供数据安全保护,安全模块507在本实施例中为软件保护模块。
固件程序部分包括:对设备的识别部分、设备等待并接收来自主机的数据、设备解析并处理数据、设备返回给主机数据并等待下一条指令、以及设备同主机断开连接部分。设备被主机识别,通过内置于MCU内部的寄存器的信息,建立主机和设备的连接。
上述程序中,设备和主机的通信部分为核心部分,下面结合图1对设备和主机的通信过程做详细的说明。
首先,将设备连接到主机时,Linux的usb子系统能自动识别厂商ID和产品ID。同时,驱动程序被加载时,它会向usb子系统提供驱动所支持产品的厂商ID和产品ID等信息,这样,就把产品和产品的驱动对应起来。
Linux平台上,在/dev目录下存在一个对应于加密锁的逻辑设备节点。这个节点以文件的形式存在,但它不是普通意义上的文件,它是设备文件。在没有启动devfs的系统上,可以通过mknod命令创建设备文件,其中指定了主设备号和次设备号。在启动了devfs的系统上,由devfs系统自动创建这个设备文件。Linux系统上设备文件的主设备号和设备驱动程序是一一对应的。
经过步骤101主机对设备完成了初始化,再由步骤102主机对设备的产品厂商标识进行验证,如果正确,设备执行步骤103,否则转到110将设备断开和主机的连接。步骤103中进行验证用户口令,若正确,设备等待来自应用的命令以执行步骤104,否则也转到步骤110,设备执行步骤104接收到命令之后,解析命令并根据不同的应用要求进行步骤105进行数据加解密,或者步骤106用预置代码运算数据的操作。数据处理结束之后将数据返回进入步骤107,等待来自应用的命令,如果应用不再有响应,则进入步骤110,断开和主机的连接,否则,如果还有新的命令,则转到步骤108,经判断如果通信结束,则执行步骤109使设备断开与主机的连接,否则转到步骤104继续等待接受命令。
以下对利用预置代码运算数据即实现步骤106的功能进行进一步描述。
设备作为提供软件加密的装置。可以用于保存用户软件的部分片断,保证这部分片断的安全,而不被读出,并使之在设备内部运行并与外部软件交互,以此来控制软件保证其合法运行。该设备与外部程序交互频繁,计算速度和通信速度是重要的速度性能指标。
根据该实施例的功能,可实现如下的软件保护功能:
1.获得设备信息,这个信息指本装置的信息。这些信息存储在内部存储器内,提供给用户记忆和识别自己的设备的功能。如步骤102。
2.格式化,用户可以对本装置进行格式化,经过格式化后使所有的设置和数据恢复到出厂状态。
3.写文件,这类文件包括用户的代码片断,或者该片断运行时所需要的数据。
4.读文件,这类文件可以是代码片断运行时的数据文件但不是该代码片断本身。
5.运行文件,这类文件就是指用户写入的代码片断,让这些代码片断在本设备内运行并保证其运行的一切数据和内存信息保留在设备以内而只返回结果。
6.加解密,提供给用户在硬件内部进行对用户数据RSA、DES、3DES等加解密,并将加解密结果返回给用户。
预置代码中还包括软件保护应用接口函数,所述软件保护应用接口函数是软件保护设备和第3方应用之间的接口级,这个应用接口函数主要由开发商使用,主要提供如下功能:
1.打开设备打开该设备的句柄,建立与该设备的通讯通道。
2.关闭设备在设备准备不再使用的时候,将该设备的句柄和设备状态信息清除。
3.发送命令这个是本软件保护产品的核心部分,实现对本装置的所有设置工作,即所有软件保护功能的实现。
软件保护设备的主要作用是保护程序部分不会出现在主机的内存中,这样带来的好处是:
1.防止程序的非法拷贝,主机上的程序离开软件保护键就是不完整的,软件的分发必须有软件保护键的存在。
2.防止程序被非法跟踪或调试,软件的重要部分的代码不会运行在主机中,所有的调试软件都无法得到该段程序的运行状态。
3.防止被转储,软件最易被破解的情况是其在运行的时候,传统的加壳保护的软件,经常被内存转储的情况下将代码还原回来。
4.防止反编译,无论反编译的技术有多高,都无法得到该实施例装置内部的代码片断,因此无法实现其软件本身的完整功能。
本实用新型的第二种优选实施例,提供了一种用户身份识别设备(或称为身份认证锁)。它主要负责保存用户敏感数据,如密码、数字证书等。
身份识别设备的硬件部分如图3中所示,图中301为主机,302为身份识别设备,303为设置在所述身份识别设备中的MCU,所述MCU内部集成了Linux下的通信协议模块304和安全模块305,其中,303包括CPU、接口模块和RAM存储器,所述RAM中内置有算法。所述MCU中应该有足够的片内RAM空间,用于预置算法,包括RSA、DES、3DES、MD5算法等,或者可以由用户选择或下载算法,如果需要存储部分用户代码的话需要有够大的存储空间,可以是片内FLASH等。可以选用Cypress公司的芯片。
身份识别设备的固件程序部分可以结合智能卡技术和现代密码学技术,可以支持第三方算法下载,支持多级文件管理和访问。
如流程图2所示,Linux系统对设备的识别过程同实施例一。
总体功能为:图2中步骤201为主机对身份识别设备完成了初始化,步骤202中由身份识别设备获得用户输入的口令A,步骤203中身份识别设备从密码存储区中读出口令并经过特定的处理得到B,步骤204中将A和B进行比较,不同则身份认证失败,转到步骤211,身份识别设备断开同主机的连接,相同则由身份识别设备分配一定的权限给用户,所述该权限同用户的密码等级相关联,用户可以进行授权身份允许范围内的应用端操作,即身份识别设备接收来自应用的命令如步骤205,对命令进行解析处理如步骤206数据加密处理和步骤207用预置代码运算数据,然后返回给应用,然后执行步骤208继续等待来自应用的命令。在应用没有合法响应的情况下转到步骤211断开设备与主机的连接,否则接收应用层的命令,如果通过步骤208判断指示通信结束,则到步骤210断开连接正常结束本次通信过程,否则转到步骤205继续执行。步骤202、步骤203、步骤204三个模块也可以直接从身份识别设备中读取密码,由主机端判定密码是否正确。
本实施例可实现如下功能包括:
1.控制访问网络:通过身份识别设备中含有的I D信息和用户验证信息,用于登陆网络。
2.用于验证和鉴别文件的发送者身份的数字签名或证明,并防止被中途篡改。
3.存储密码信息,储存用户密码信息,防止用户手动输入密码时带来的风险。
4.远程登陆,银行的网站可以利用签名信息来识别用户得合法性。
5.控制文件的访问,可以在一些文件中加入访问控制信息,可以防止在身份识别设备的情况下非法访问或运行。
6.控制登陆到特定的应用系统,开发商可以将此功能用于自己的产品,该产品可以利用本实施例装置来进行登陆。
上述3中所述是指身份识别设备中包含的密码信息发送给主机用来识别持锁人信息
所述预置代码中还包括身份识别设备应用接口函数,身份识别设备应用接口函数是身份识别设备和第3方应用之间的接口级,这个应用接口函数主要由开发商使用,所述应用接口函数主要提供如下功能:
1.打开设备打开该设备的句柄,建立与该设备的通讯通道。
2.关闭设备在设备准备不再使用的时候,将该设备的句柄和设备状态信息清除。
3.发送命令这个是身份识别设备的核心部分,实现对本装置的所有设置工作,即所有本身份识别设备的智能卡功能的实现。
数字身份识别设备的主要作用是保护重要得到敏感数据永远都不会被读出键装置之外如主机的内存中,这样所带来的好处是:
1.用户可以不必记忆冗长的密码,安全的密码一定有字母和数字组成足够复杂的字符串,而且是时常更新的,用身份识别设备来存储密码信息可以免去用户的麻烦。
2.提供双因子认证的保险措施,即使用户的密码或数字身份识别设备的一方丢失,都不会给用户带来风险。
3.密钥不可导出,保证了用户密钥的安全。
4.算法内置。
本实用新型的第三种实施例,提供另一种身份识别设备,如图4中所示,所述身份识别设备402中设置有接口芯片403,和与之相连的集成了CPU和存储器的MCU404,由所接口芯片与主机401相连,主要用于完成对接口协议的翻译,使得MCU部分404的实现可以更简单。404部分也包括405(Linux下的协议模块)和406(安全模块)。
本实施例中的主机与设备的通信与实施例2完全相同,并实现与实施例2相同的功能。
以上对本实用新型所提供的一种设备,进行了详细介绍,本文中应用了具体个例对本实用新型的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本实用新型的方法及其实现思想;同时,对于本领域的一般技术人员,依据本实用新型的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本实用新型的限制。