本发明涉及数据安全技术领域,尤其涉及一种加密卡架构。
背景技术:
硬件安全模块(hardwaresecuremodule,hsm)作为一种重要的加密设备,已经越来越广泛的应用在政府、金融、通信、国防等领域中。由于涉及敏感信息的保护和安全,采用硬件安全模块对存储介质加密尤为重要,可以避免在存储设备丢失时重要或私有信息泄密。目前中国和国际上都有硬件安全模块的实现方案,能实现rsa、椭圆曲线/sm2、sm4等加密算法,支持pci/pci-x、pci-e/minipci-e等多种接口。现有技术中,硬件安全模块通常采用加密卡实现中数据加、解密操作,目前加密卡均是通过专用芯片(一般是fpga、fpga转asic)实现,需要用自定义非标准专用的api接口,由于现有产品基于pc端的应用都是用自定义、非标准的api,导致对每个应用的操作系统,都要另外提供原件驱动。在不同的计算机操作系统下,需要有专门的驱动来为之服务,这个对软件的开发,会耗费巨大的人力,实际上软件的相容性,是推广这类产品,最大的问题。
同时,现有技术中加密卡通常仅具有单一的加密功能,在加密完成后直接返回加密数据,主机需要实时监控加密状态,从而极大占据了主机资源。
故,针对现有技术的缺陷,实有必要提出一种技术方案以解决现有技术存在的技术问题。
技术实现要素:
有鉴于此,确有必要提供一种硬件安全装置,采用标准的通讯接口和协议解决了现有技术系统兼容性和驱动问题;同时将存储器和加密装置相结合,主机通过存储控制指令以及通知机制实现加解密操作,从而无需实时等待加解密任务完成,极大提高了主机处理效率;以及通过设置多个数据加解密模块和多种加解密算法实现高速数据加解密操作。
为了克服现有技术的缺陷,本发明的技术方案如下:
一种加密卡架构,包括接口模块、控制模块、数据加解密模块和存储模块,其中,所述接口模块采用标准接口,用于与主机进行数据通信;所述存储模块中设置多个存储单元;所述数据加解密模块用于根据控制模块的控制指令对所分配的任务进行加密/解密操作并将经加密/解密后的任务存储于对应的存储单元;所述控制模块用于将接收的任务分配给所述数据加解密模块并在任务加密/解密操作完成后向主机反馈任务完成消息以及接收主机的获取任务指令后读取对应存储单元的数据信息发送给主机。
作为优选的技术方案,加密卡设置多个数据加解密模块,每个数据加解密模块具有唯一标识号并分配相应的存储单元以存储加密/解密后的任务。
作为优选的技术方案,所述控制模块中设置信息表,所述控制模块监听数据加解密模块更新信息表并根据所述信息表控制所述加密卡的运行;所述信息表至少包括任务编号、模块编号、操作类型、状态信息和存储地址信息,所述任务编号为每个接收到的任务设置的唯一标识号;所述模块编号为对该任务进行加密/解密操作的数据加解密模块的标识号;所述操作类型为数据加解密模块对该任务进行加密操作或解密操作;所述状态信息为数据加解密模块的工作状态;所述存储地址信息为存储该任务进行加密/解密操作后数据信息的地址信息。
作为优选的技术方案,所述数据加解密模块中设置多种加密算法,根据所述控制模块的控制指令选择相应的加密算法。
作为优选的技术方案,所述数据加解密模块进一步包括mcu、随机数发生器、算法存储单元和加解密处理单元,所述算法存储单元用于存储加密算法;所述加解密处理单元用于根据mcu的指令加载相应的加密算法并执行加密/解密操作;所述随机数发生器用于产生用于所述加密算法的密钥;所述mcu与所述随机数发生器、算法存储单元和加解密处理单元,用于控制所述数据加解密模块的工作。
作为优选的技术方案,所述算法存储单元中存储的加密算法包括aes-128/256,sm2,sm3,sm4,rsa,3des和sha。
作为优选的技术方案,所述接口模块为pcie、sata、usb、sas、ieee1394、sd、emmc或spi接口中的任一种。
作为优选的技术方案,所述接口模块与主机之间采用约定的传输协议进行数据通信。
作为优选的技术方案,所述数据加解密模块采用华澜微公司的s686主控芯片。
作为优选的技术方案,所述控制模块接收主机发送的存储指令,所述控制模块将对特定地址的写操作解析为一种加密模式的加解密指令,将对特定地址的读操作解析为主机获取任务指令。
与现有技术相比较,本发明采用标准的通讯接口和协议解决了现有技术系统兼容性和驱动问题,能够在不同的操作系统上能做到很好的兼容性,在用户使用、市场推广、数据加解密处理以及系统监控等方面具有很大的优势;同时将存储器和加密装置相结合,主机通过存储控制指令以及通知机制实现加解密操作,主机无需实时等待加解密任务完成,极大提高了主机处理效率;以及通过设置多个数据加解密模块和多种加解密算法实现高速数据加解密操作。
附图说明
图1为本发明加密卡架构的原理框图。
图2为本发明中数据加解密模块的原理框图。
图3为本发明中数据处理方法的流程框图。
如下具体实施例将结合上述附图进一步说明本发明。
具体实施方式
以下将结合附图对本发明提供的技术方案作进一步说明。
由于现有技术加密卡产品都是用自定义,非标准的api,导致对每个应用的操作系统,都要另外提供原件驱动,这个对软件的开发,会耗费巨大的人力,实际上软件的相容性,从而使这类产品推广难度大。
参见图1,所示为本发明一种加密卡架构的原理框图,包括接口模块、控制模块、数据加解密模块和存储模块,其中,接口模块采用标准接口,用于与主机进行数据通信,优选地,接口模块为pcie、sata、usb、sas、ieee1394、sd、emmc或spi接口中的任一种。由于采用通用的标准接口,同时采用约定的控制指令(数据传输协议)实现加解密操作,从而无需安装驱动程序,在不同操作系统下都可以实现即插即用。
本发明将数据加解密模块和存储模块巧妙结合,存储模块中设置多个存储单元;数据加解密模块用于根据控制模块的控制指令对所分配的任务进行加密/解密操作并将经加密/解密后的任务存储于对应的存储单元;同时,控制模块也与存储模块相连接,能够直接读取存储模块中的数据信息。采用上述技术方案,将加密卡的加解密操作完全封装于内部,对外部主机来说,加密卡相当于一个普通的外接普通存储设备,比如u盘、硬盘等,甚至可以有盘符,有存储空间大小等正常硬盘的属性,只不过在正常的读写操作下,该硬盘还具备了数据加解密功能。本发明架构下,对数据加密操作相当于将待加密数据写入加密卡,同时主机发送任务后即可处理其他操作,无需等待;加密操作完成,加密卡发送通知指令告知主机相应任务的加密操作完成,主机再通过读指令获取存储在相应地址的数据信息,完成一次加密/解密操作。
控制模块是该加密卡架构的核心,用于控制加密卡的运行;其中,控制模块通过接口模块接收主机发送的任务,将接收的任务分配给数据加解密模块;控制模块监控数据加解密模块的状态,在任务加密/解密操作完成后控制模块向主机反馈任务完成消息以让主机及时获取经加解密处理后的任务;进一步的,控制模块接收主机的获取任务指令后读取对应存储单元的数据信息并发送给主机。
进一步的,加密卡设置多个数据加解密模块,每个数据加解密模块具有唯一标识号并分配相应的存储单元以存储加密/解密后的任务。从而极大提高了数据并发处理能力越强。
在一种优选实施方式中,控制模块中设置信息表,所述控制模块监听数据加解密模块更新信息表并根据所述信息表控制所述加密卡的运行;信息表至少包括任务编号、模块编号、操作类型、状态信息和存储地址信息,任务编号为每个接收到的任务设置的唯一标识号;模块编号为对该任务进行加密/解密操作的数据加解密模块的标识号;操作类型为数据加解密模块对该任务进行加密操作或解密操作;状态信息为数据加解密过程的工作状态;存储地址信息为存储该任务进行加密/解密操作后数据信息的地址信息。具体的,控制模块接收主机发送的任务后,建立一个io任务并确定相应的任务编号,在io任务完成指定操作后,才会对主机进行相应的反馈;建立io任务后,控制模块分配一个空闲的数据加解密模块并获得其模块编号,同时监听数据加解密模块执行加密/解密操作以更新信息表,其中,状态信息至少包括busy、idle、ready和done,其中,状态置为busy表示数据加解密模块正在进行数据处理;状态置为idle表示数据加解密模块处理完成任务,能够承担新的任务;状态置为ready表示加密/解密后任务已经存储至相应的存储单元;状态置为done表示已经从存储单元中读取了相应的数据,则该存储空间可以被释放。因此,通过上述信息表可以清楚的知道任一个任务的进程状态、数据加解密模块的工作状态以及存储模块的地址空间状态,从而方便进行任务的加解密处理。
在一种优先实施方式中,数据传输协议的命令具有堆栈功能,从而解决读写命令的乱序响应问题,io队列对操作命令进行管理,实现并发的数据加解密处理。针对每次的加解密操作,因为加解密的数据长度及加解密算法不同,处理的时长也不同,每次把加解密分配络一个硬件加密卡进行处理,等处理完成后,经有存储的堆栈协议,通知系统任务完成,最后把经过加解密之后的数据发送出去。因此,在每次进行读写操作时,加密卡都会建立一个io任务,在io任务完成读写操作后,才会对主机进行相应的反馈。
在一种优先实施方式中,通过约定的控制指令将操作类型和具体的存储地址空间绑定,也即,将存储空间地址进行特定划分,一个指定地址和长度数据的写操作,会被当作一种加密模式的加解密命令,在加解密处理完毕后,会自动通知对此地址进行的读操作,读取的数据则是加解密处理完毕后的数据。
在一种优先实施方式中,数据加解密模块中设置多种加密算法,其根据控制模块的控制指令选择相应的加密算法。优选地,在进行数据加解密操作之前,先通过配置指令对数据加解密模块进行配置以选择具体的加密算法。其中,加密算法包括aes-128/256,sm2,sm3,sm4,rsa,3des、sha等。
本发明中,每个数据加解密模块均绑定相应的存储单元,优选地,存储单元根据配置指令动态分配,也即根据具体加解密处理模式以及任务数据长度计算出所需的存储空间,确定写入数据或读出数据的起始位置,按此位置写入待加解密的数据,最后从此位置读出已加解密的数据,完成一次加解密的处理,从而实现动态分配存储单元。
在一种优先实施方式中,控制模块接收主机发送的存储指令,控制模块将对特定地址的写操作解析为一种加密模式的加解密指令,将对特定地址的读操作解析为主机获取任务指令。其中,控制模块中保存地址映射表,记录每个存储单元的起始地址、空间大小、对应的数据加解密模块及其加解密类型,因此,对某个存储单元的写操作将被解析为一种加密模式(通过配置指令设置)的加解密命令。比如0x100000开始为001号数据加解密模块的加密操作,0x200000开始为001号数据加解密模块的解密操作。并将该长度地址进行等份划分,例如可将每个存储单元保留处理数据的长度设置为0x800(2k),那么就具备128个加解密单元,则从0x100000到0x13ffff每个2k对应一个数据加解密模块,而0x140000到0x1fffff则保留给此加解密更多的处理单元。当然,也可以为一个数据加解密模块分配多个存储单元。对应加解密地址写数据则开始加解密处理,之后从此地址读就会得到已加解密的数据。例如,控制指令为将数据信息写入地址为0x100000的存储单元,则控制模块将数据信息发送给001号数据加解密模块并启动加密操作,加密操作结束后,加密的数据信息存储在地址为0x100000的存储单元;同样,对将数据信息写入地址为0x200000的存储单元,则控制模块将数据信息发送给001号数据加解密模块并启动解密操作,加密的数据信息存储在地址为0x200000的存储单元。
在一种优先实施方式中,存储单元集成在数据加解密模块中,控制单元通过地址映射表管理每个存储单元。
在一种优先实施方式中,存储单元采用emmc或flash存储设备。
在一种优先实施方式中,数据加解密模块采用华澜微公司的s686主控芯片。从而能够在进行数据加解密处理的同时为控制模块分担压力,降低其资源的消耗和占用。s686内置硬件加密模块,支持aes-128/256,sm2,sm3,sm4,rsa,3des,sha等多种加密算法,能够在保证数据快速加解密处理的同时,不对数据的读写传输性能造成损失。内置了随机数发生器,能够通过片内固件进行驱动产生随机数,保证密钥产生的真随机性。s686兼容sd1.0、sd2.0、sd3.0和emmc3.3、emmc4.0、emmc5.0等协议,利用32位嵌入式cpu进行内存管理,并支持多通道存储管理,帮助进行数据的快速处理和读写操作。
参见图2,所示为本发明数据加解密模块的原理框图,进一步包括mcu、随机数发生器、算法存储单元和加解密处理单元,所述算法存储单元用于存储加密算法;所述加解密处理单元用于根据mcu的指令加载相应的加密算法并执行加密/解密操作;所述随机数发生器用于产生用于所述加密算法的密钥;所述mcu与所述随机数发生器、算法存储单元和加解密处理单元,用于控制所述数据加解密模块的工作。
参见图3,所示为本发明一种加密卡的数据处理方法的流程图,包括以下步骤:
步骤s1:接收主机发送的加密/解密任务;
步骤s2:将待处理的加密/解密任务分配给空闲状态的数据加解密模块并在加密/解密操作完成后直接将经处理后的任务存储至该数据加解密模块对应的存储单元;所述数据加解密模块具有唯一标识号;
步骤s3:同时在加密/解密操作完成后更新信息表并向主机反馈任务完成消息;
步骤s4:接收主机发送的获取任务指令后读取对应存储单元的数据信息发送给主机。
其中,在步骤s1中,接收主机发送的加密/解密任务为对相应地址空间的写指令。
在所述步骤s3中,在加密/解密操作完成后更新信息表并向主机反馈任务完成消息包括该任务对应存储单元的地址信息。
在步骤s4中,接收主机发送的获取任务指令为对相应地址空间的读指令。
采用上述技术方案,将存储器和加密装置相结合,主机通过存储控制指令以及通知机制实现加解密操作,主机无需实时等待加解密任务完成,极大提高了主机处理效率。对外部主机来说,加密卡相当于一个普通的外接普通存储设备,比如u盘、硬盘等,甚至可以有盘符,有存储空间大小等正常硬盘的属性,与现有技术不同的是,本发明在正常的读写操作下,还具备了数据加解密功能。本发明架构下,对数据加密操作相当于将待加密数据写入加密卡,同时主机发送任务后即可处理其他操作,无需等待;加密操作完成,加密卡发送通知指令告知主机相应任务的加密操作完成,主机再通过读指令获取存储在相应地址的数据信息,完成一次加密/解密操作。
在一种优选实施方式中,步骤s3中,通过监听数据加解密模块更新信息表并根据所述信息表控制加密卡的运行;所述信息表至少包括任务编号、模块编号、操作类型、状态信息和存储地址信息,所述任务编号为每个接收到的任务设置的唯一标识号;所述模块编号为对该任务进行加密/解密操作的数据加解密模块的标识号;所述操作类型为数据加解密模块对该任务进行加密操作或解密操作;所述状态信息为数据加解密模块的工作状态;所述存储地址信息为存储该任务进行加密/解密操作后数据信息的地址信息。
上述技术方案中,每个数据加解密模块设置多个存储单元,每个存储单元用于存储一个加解密任务。每个加解密任务处理完之后,存储至其中一个存储单元中;任务存储之后,数据加解密模块就可以处理下一个加解密任务;同时,控制模块直接对存储单元进行读写,向主机反馈数据与数据加解密过程完全独立,从而极大极高了处理效率。另外,通过设置存储标志位标识数据读写的状态,当状态置为ready表示加密/解密后任务已经存储至相应的存储单元;状态置为done表示已经从存储单元中读取了相应的数据,则该存储空间可以被释放;极大提高了存储空间利用率。
在一种优选实施方式中,还包括接收主机的配置指令的步骤,配置指令用于配置数据加解密模块的加解密参数;所述加解密参数至少包括加密算法类型,为aes-128/256,sm2,sm3,sm4,rsa,3des或sha中的任一种。同时,配置指令还包括待处理任务的数据长度,数据加解密模块根据配置指令重新分配存储单元的地址空间。比如,当前加密任务大小为2k,采用sm2加密算法处理之后的长度为4k,则以4k空间作为基础存储单元对存储空间进行重新分配。采用上述技术方案,可以根据用户要求设置加密算法并根据实际需求设置最优的存储单元。
以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。