一种密码装置及其数据加解密方法与流程

文档序号:17488380发布日期:2019-04-23 20:11阅读:243来源:国知局
一种密码装置及其数据加解密方法与流程

本发明涉及信息安全技术领域,特别涉及一种密码装置及其数据加解密方法。



背景技术:

在采用移动终端进行通信的过程中,用户个人身份信息、语音、图像、以及视频等数据存在泄露的风险。为提供通信安全保障,在移动终端中内置密码装置(也称加密装置)。密码装置是一种保密工具,用于通过密码算法实现数据加、解密的基本密码操作。常见的密码装置包括硬件密码装置。

硬件密码装置采用特定硬件电路或专用密码芯片实现数据加解密。常规的硬件密码装置所提供的数据加解密方法流程包括,硬件密码装置接收加密指令或者解密指令,加密指令包括待加密数据,解密指令包括待解密数据;在加密指令的指示下通过内存中密码算法代码对待加密数据进行加密,或者,在解密指令的指示下通过内存中密码算法代码对待解密数据进行解密。其中,密码算法代码是硬件密码装置在接收加密指令和解密指令之前加载至内存的。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

常规的硬件密码装置仅提供一种密码算法进行数据加解密,移动终端适用需要一种密码算法加解密的应用场景,而需要一种密码算法加解密的应用场景较少,这限制了移动终端应用到更多的场景。



技术实现要素:

本发明实施例提供了一种密码装置及其数据加解密方法,能够提供多套密码算法的加解密,满足多安全等级的密码服务需求。所述技术方案如下:

一方面,提供了一种密码装置的数据加解密方法,所述方法包括:

密码装置的主控处理器接收移动终端发送的密码服务指令,所述密码服务指令包括待加密数据和密码算法标识,或者,所述密码服务指令包括待解密数据和密码算法标识,所述密码装置为硬件密码装置且安装在所述移动终端中;

当所述密码装置的算法协处理器的内存中存储有密码算法的目标代码、且所述密码算法的目标代码的密码算法标识不为所述密码服务指令包括的密码算法标识时,从所述密码装置的外存中提取所述密码服务指令包括的密码算法标识指示的密码算法的目标代码,并将提取的密码算法的目标代码加载至所述内存,所述外存中存储有至少两套密码算法的目标代码;

控制所述算法协处理器通过所述内存中的密码算法的目标代码对所述待解密数据进行解密或者对所述待加密数据进行加密。

可选地,所述方法还包括:

当所述密码装置的算法协处理器的内存中未存储所述密码算法的目标代码时,从所述外存中提取所述密码服务指令包括的密码算法标识指示的密码算法的目标代码,并将提取的密码算法的目标代码加载至所述内存;

控制所述算法协处理器通过所述内存中的密码算法的目标代码对所述待解密数据进行解密或者对所述待加密数据进行加密。

可选地,所述方法还包括:

在所述密码装置的算法协处理器的内存中未存储所述密码算法的目标代码时,控制所述算法协处理器的内存中的代码存储空间不被非密码算法的目标代码占用,所述代码存储空间用于存储加载的密码算法的目标代码。

可选地,所述代码存储空间包括至少一个子空间,所述子空间用于存储密码算法的目标代码,所述子空间的数量小于或者等于所述外存中存储的密码算法的数量;

所述将提取的密码算法的目标代码加载至所述内存,包括:

从子空间标识与密码算法标识的对应关系中,确定提取的密码算法的目标代码对应的子空间标识;

将所述提取的密码算法的目标代码加载至确定的子空间标识指示的子空间。

可选地,所述外存中存储的密码算法的目标代码是所述主控处理器通过密码算法的源代码生成的。

另一方面,提供了一种密码装置,所述密码装置包括:

主控处理器;

算法协处理器;

外存;

所述外存用于,存储至少两套密码算法的目标代码;

所述主控处理器用于,接收移动终端发送的密码服务指令,所述密码服务指令包括待加密数据和密码算法标识,或者,所述密码服务指令包括待解密数据和密码算法标识,所述密码装置为硬件密码装置且安装在所述移动终端中;当所述算法协处理器的内存中存储有密码算法的目标代码、且所述密码算法的目标代码的密码算法标识不为所述密码服务指令包括的密码算法标识时,从所述外存中提取所述密码服务指令包括的密码算法标识指示的密码算法的目标代码,并将提取的密码算法的目标代码加载至所述内存;

所述算法协处理器用于,在所述主控处理器将提取的密码算法的目标代码加载至所述内存之后,通过所述内存中的密码算法的目标代码对所述待解密数据进行解密或者对所述待加密数据进行加密。

可选地,所述主控处理器还用于,当所述算法协处理器的内存中未存储密码算法的目标代码时,从所述外存中提取所述密码服务指令包括的密码算法标识指示的密码算法的目标代码,并将提取的密码算法的目标代码加载至所述内存;

所述算法协处理器还用于,通过所述内存中的密码算法的目标代码对所述待解密数据进行解密或者对所述待加密数据进行加密。

可选地,所述主控处理器还用于,

在所述算法协处理器的内存中未存储密码算法的目标代码时,控制所述算法协处理器的内存中的代码存储空间不被非密码算法的目标代码占用,所述代码存储空间用于存储加载的密码算法的目标代码。

可选地,所述代码存储空间包括至少一个子空间,所述子空间用于存储密码算法的目标代码,所述子空间的数量小于或者等于所述外存中存储的密码算法的数量;

所述所述主控处理器用于,从子空间标识与密码算法标识的对应关系中,确定提取的密码算法的目标代码对应的子空间标识,将所述提取的密码算法的目标代码加载至确定的子空间标识指示的子空间。

可选地,所述外存中存储的密码算法的目标代码是所述主控处理器通过密码算法的源代码生成的。

本发明实施例提供的技术方案带来的有益效果是:

通过主控处理器接收移动终端发送的密码服务指令,当密码装置的算法协处理器的内存中存储有密码算法的目标代码、且密码算法的目标代码的密码算法标识不为密码服务指令包括的密码算法标识时,从密码装置的外存中提取密码服务指令包括的密码算法标识指示的密码算法的目标代码,主控处理器能够获得密码服务指令包括的密码算法标识指示的密码算法的目标代码;主控处理器将提取的密码算法的目标代码加载至内存,并控制算法协处理器通过内存中的密码算法的目标代码对待解密数据进行解密或者对待加密数据进行加密,从而实现了按照密码服务指令包括的密码算法标识指示的密码算法对数据进行加解密操作;由于外存中存储有至少两套密码算法的目标代码,当密码服务指令包括的密码算法标识得到更新,主控处理器能够从外存获得更新后的密码算法的目标代码,并按照更新后的密码算法对数据进行加解密操作,这样,密码装置可以提供多套密码算法的加解密,满足移动终端多安全等级的密码服务需求,移动终端可以适用一种或多种密码算法的应用场景,很大地扩展了移动终端的应用场景。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的硬件密码装置的结构示意图;

图2是本发明实施例提供的标准快闪存储卡的结构框图;

图3是图2示出的标准快闪存储卡的工作流程示意图;

图4是本发明实施例提供的硬件密码装置的工作原理示意图;

图5是本发明实施例提供的一种密码装置的数据加解密方法的流程图;

图6是本发明实施例提供的一种密码装置的数据加解密方法的流程图;

图7是本发明实施例提供的一种密码装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

为便于理解本发明实施例提供的技术方案,首先对密码装置进行介绍。示例性地,密码装置可以为硬件密码装置,该硬件密码装置可以是专用密码芯片。图1为一示例性地的硬件密码装置的结构示意图。参见图1,该密码装置包括主控处理器1、算法协处理器2、外存3、以及通信接口4。

主控处理器1用于控制整个密码装置的所有事务运行。

算法协处理器2用于在主控处理器1的控制下,单独处理运行密码算法。

外存3可以是片内flash(闪存)。

通信接口4可以包括spi(serialperipheralinterface,串行外设接口)主/从接口、usb(universalserialbus,通用串行总线)3.0/2.0从设备接口、通用gpio(generalpurposeinputoutput,通用输入/输出)接口、uart(universalasynchronousreceiver/transmitter,通用异步收发传输器)异步通信接口、以及jtag(jointtestactiongroup,联合测试工作组)接口等。

参见图1,该密码装置还可以包括片内sram(staticrandomaccessmemory,静态随机存取存储器)5、dma(directmemoryaccess,直接内存存取)控制器6、wdt(watchdogtimer,看门狗)7、功耗管理模块8和随机数发生器9。

其中,该密码装置可以安装在移动终端中。示例性地,移动终端包括手机、卫星手持终端、以及平板等。受移动终端的安装空间、功耗、接口等条件限制,密码装置必须满足低功耗、小型化、芯片化、接口标准化等要求。基于此,密码装置可以封装在基于soc(systemonchip,片上系统)架构的tf(trans-flash,快闪存储)卡或者sd(securedigitalmemory,安全数字存储)卡中。当密码装置采用标准tf卡封装时,能够满足芯片化、低功耗、小型化要求。图2为标准tf卡的结构框图。如图2所示,标准tf卡80还包括多个引脚801(引脚pin1-pin8)。图3为图2示出的标准tf卡的工作流程示意图。参见图3,移动终端的上层应用90通过标准tf卡接口802和tf卡驱动程序803与标准tf卡80通信,其他通信遵循tf卡协议。在标准tf卡80内部,tf卡驱动程序803与主控芯片1之间的通信过程也遵循tf卡协议。

这样,密码装置内嵌安装于便携智能移动终端,在军队及党政移动通信领域得到了广泛应用。该类密码装置芯片化(soc芯片)内置算法引擎,密码运算性能较高,封装严密,可以防篡改、防探测,安全保障性更高。但是,此类便携密码装置存在资源受限、计算能力受限的问题,且使用的密码算法引擎一般都已固化,不能支持多套密码算法的动态加载,不能满足智能移动终端用户集团内部域保密互通、跨集团域保密互通等多域多安全等级密码服务需求。为了解决该技术问题,本发明实施例提供了一种密码装置的数据加解密方法,该数据加解密方法不改变硬件密码装置的结构,基于硬件密码装置有限的硬件资源,能够设计并实现了密码算法动态加载功能,密码算法更换简单、便捷,提高了密码装置密码管理、综合维护保障能力;并且,在资源受限的平台上,设计按需加载机制,实现了域内互通密码算法、跨域互通密码算法等多套密码算法的动态重构,可为用户提供多域多安全等级密码服务能力。

图4为图1示出的硬件密码装置实现该数据加解密方法的工作原理示意图。如图4所示,外存3中存储有多套密码算法的目标代码,每套密码算法一般包括业务算法、管理算法、杂凑算法和公钥算法等。主控处理器1根据移动终端的上层应用90的密码服务需求,从外存3调度切换加载第1套或第n套密码算法至算法协处理器2中运行,完成密码算法的动态重构。针对每一套密码算法,算法协处理器2的内存中提供多个ram(randomaccessmemory,随机存取存储器)单元,分别执行业务算法、管理算法、杂凑算法和公钥算法等。下面将详细介绍本发明实施例提供的技术方案。

图5示出了本发明实施例提供的一种密码装置的数据加解密方法。该密码装置可以是图1示出的密码装置,该方法由图1示出的密码装置的主控处理器执行。参见图5,该方法流程包括如下步骤。

步骤101、接收移动终端发送的密码服务指令。

其中,移动终端向密码装置发送的密码服务指令可以是加密指令,也可以是解密指令。当密码服务指令为加密指令时,密码服务指令包括待加密数据和密码算法标识,当密码服务指令为解密指令时,密码服务指令包括待解密数据和密码算法标识。密码装置为硬件密码装置且安装在移动终端中。

步骤102、确定密码装置的算法协处理器的内存中是否存储有密码算法的目标代码。

当密码装置的算法协处理器的内存中存储有密码算法的目标代码时,执行步骤103。当密码装置的算法协处理器的内存中未存储有密码算法的目标代码时,执行步骤104。

步骤103、确定存储的密码算法的目标代码的密码算法标识是否为密码服务指令包括的密码算法标识。

当存储的密码算法的目标代码的密码算法标识不为密码服务指令包括的密码算法标识时,执行步骤104。当存储的密码算法的目标代码的密码算法标识为密码服务指令包括的密码算法标识时,执行步骤106。

步骤104、从密码装置的外存中提取密码服务指令包括的密码算法标识指示的密码算法的目标代码。

其中,外存可以是图1示出的flash。

步骤105、将提取的密码算法的目标代码加载至内存。

其中,外存中存储有至少两套密码算法的目标代码。

步骤106、控制算法协处理器通过内存中的密码算法的目标代码对待解密数据进行解密或者对待加密数据进行加密。

通过主控处理器接收移动终端发送的密码服务指令,当密码装置的算法协处理器的内存中存储有密码算法的目标代码、且密码算法的目标代码的密码算法标识不为密码服务指令包括的密码算法标识时,从密码装置的外存中提取密码服务指令包括的密码算法标识指示的密码算法的目标代码,主控处理器能够获得密码服务指令包括的密码算法标识指示的密码算法的目标代码;主控处理器将提取的密码算法的目标代码加载至内存,并控制算法协处理器通过内存中的密码算法的目标代码对待解密数据进行解密或者对待加密数据进行加密,从而实现了按照密码服务指令包括的密码算法标识指示的密码算法对数据进行加解密操作;由于外存中存储有至少两套密码算法的目标代码,当密码服务指令包括的密码算法标识得到更新,主控处理器能够从外存获得更新后的密码算法的目标代码,并按照更新后的密码算法对数据进行加解密操作,这样,密码装置可以提供多套密码算法的加解密,满足移动终端多安全等级的密码服务需求,移动终端可以适用一种或多种密码算法的应用场景,很大地扩展了移动终端的应用场景。

在步骤102中,密码算法的目标代码存储在内存中的代码存储空间。示例性地,该代码存储空间的开始地址为算法协处理器的内存的起始地址。

其中,代码存储空间包括至少一个子空间。子空间用于存储密码算法的目标代码。子空间的长度与密码算法的复杂程度相关,一般应设为密码算法的目标代码长度的1.5倍左右。

其中,子空间的数量小于或者等于外存中存储的密码算法的数量。当子空间的数量小于密码算法的数量时,同一子空间对应多个密码算法的目标代码。

示例性地,在步骤102中,内存中存储的密码算法的目标代码是主控处理器通过密码算法的源代码生成的。主控处理器在步骤101之前通过密码算法的源代码生成密码算法的目标代码。具体地,主控处理器可以在密码装置开始提供密码服务之前生成密码算法的目标代码。其中,密码装置在安装到移动终端之后且移动终端上电启动后开始提供密码服务。

密码算法的目标代码的生成过程包括如下步骤。

第一步、主控处理器获取各个密码算法的源代码。

第二步、主控处理器分别将各个密码算法的源代码分配至各个密码算法对应的子空间,编译生成各个密码算法的目标代码。

第三步、主控处理器提取各个密码算法的目标代码至外存中。

其中,主控处理器可以根据调试平台的指令,从调试平台获取密码算法的源代码,并在调试平台的指令下将各个密码算法的源代码分配至各个密码算法对应的子空间,编译生成各个密码算法的目标代码。调试平台为密码装置制造商建立的硬件平台。主控处理器在提取各个密码算法的目标代码之后,分别按照各个密码算法对应的密码算法标识,对提取的各个密码算法的目标代码进行命名。在命名之后,将提取的各个密码算法的目标代码存储至flash中。

示例性地,在步骤102中,在密码装置的算法协处理器的内存中未存储密码算法的目标代码时,主控处理器控制算法协处理器的内存中的代码存储空间不被非密码算法的目标代码占用。其中,代码存储空间用于存储加载的密码算法的目标代码。具体地,在密码装置开始提供密码服务之后,主控处理器控制算法协处理器的内存中的代码存储空间不被非密码算法的目标代码占用。

由于算法协处理器的内存是暂时存放算法协处理器中的运算数据,而算法协处理器除了运行密码算法进行数据的加解密之外,还需要执行其他密码服务,因此,为了保证数据的加解密操作及时执行,在算法协处理器的内存中未存储密码算法的目标代码时,主控处理器控制算法协处理器的内存中的代码存储空间不被非密码算法的目标代码占用。具体地,主控处理器可以将空指令填充至代码存储空间,使得密码装置启动后不会主动分配该代码存储空间。只有密码装置执行数据加解密操作时,才会将密码算法加载到这一特定的内存中运行。

受密码芯片资源限制,算法协处理器一般可同时加载3或4个密码算法。也就是说,算法协处理器可以同时运行3或4个密码算法。为了保证各个密码算法能够准确的运行,各个密码算法对应固定的子空间。基于此,示例性地,步骤105包括:首先、主控处理器从子空间标识与密码算法标识的对应关系中,确定提取的密码算法的目标代码对应的子空间标识。其次、主控处理器将提取的密码算法的目标代码加载至确定的子空间标识指示的子空间。

示例性地,主控处理器中存储有一张算法加载图表,表中记录了子空间标识与密码算法标识的对应关系。

示例性地,参见图6,该方法还包括步骤107。

步骤107、向移动终端反馈加、解密后的数据。

本发明方法可以很好地实现同一密码装置上多套密码算法的的动态重构更新。比如,当移动终端在国内工作时,根据密码应用策略选择加载第一密码算法;当移动终端在国外工作时,则根据密码应用策略选择加载第二密码算法。这样,能够满足用户不同安全域、不同安全等级的密码服务需求。

以下结合一示例性应用场景对本发明实施例提供的方法做进一步说明。在该示例性场景中,该密码装置可以为tf卡密码模块。tf卡密码模块可以采用ck803芯片为主控处理器。

主控处理器通过配置算法协处理器,在算法协处理器的内存中单独指定一段缓冲区,其起始地址到结束地址为:0x00000000-0x00004000,作为密码算法的预留内存缓冲区(即代码存储空间)。具体可以在主控处理器的配置文件中编写预留内存缓冲区的关键代码。有多个密码算法时需标定每个密码算法在预留内存缓冲区的入口地址。例如,密码算法可以包括aes算法和3des算法,可以分别标定aes算法和3des算法的入口地址均为0x00000000。这时,代码存储空间仅包括一个子空间,即0x00000000-0x00004000。

密码算法由算法协处理器编译运行,算法协处理器通过预留内存缓冲区来编译生成密码算法的可执行代码(目标代码)。主控处理器在密码装置提供密码服务之前,依次将待实现的密码算法的程序源代码分配至预留内存缓冲区,编译生成密码算法的目标代码,提取出密码算法的目标代码并按算法名称予以标定,并保存在密码装置flash存储区。

算法协处理器通过接口函数来运行密码算法,以执行数据的加解密。预先编写调用预留内存缓冲区内存空间的密码算法的接口函数。示例性地,通过aesinit()、aesenc()和aesdec()接口函数来实现对aes算法的调用。接口函数aesinit()、aesenc()和aesdec()分别实现aes算法的初始化、加密和解密过程。通过3desinit()、3desenc()和3desdec()接口函数来实现对3des算法的调用。接口函数3desinit()、3desenc()和3desdec()分别实现3des算法的初始化、加密和解密过程。将预留内存缓冲区划分为三部分,第一部分、第二部分和第三部分。其中,接口函数aesinit()和3desinit()分别与第一部分对应,接口函数aesenc()和3desenc()分别与第二部分对应,接口函数aesdec()和3desdec()分别与第三部分对应。

当任何一种密码算法均未加载时,主控处理器将空指令完全填充至预留内存缓冲区的第一部分、第二部分和第三部分中。

当该密码装置需调用aes算法提供加加、解密服务时,从flash中加载aes算法目标代码,填充至预留内存缓冲区中,这时,通过调用aesinit()、aesenc()和aesdec(),将完成aes算法的动态加载。

当密码装置需更换新的密码算法如3des算法时,从flash芯片中加载3des算法目标代码,将3des算法目标代码填充至预留内存缓冲区中,这时,通过调用3desinit()、3desenc()和3desdec(),将完成3des算法的动态加载,从而实现了不同密码装置密码算法的动态重构。

图7示出了本发明实施例提供的一种密码装置,参见图7,密码装置70包括:主控处理器701、算法协处理器702和外存703。

外存703用于,存储至少两套密码算法的目标代码。

主控处理器701用于,接收移动终端发送的密码服务指令,密码服务指令包括待加密数据和密码算法标识,或者,密码服务指令包括待解密数据和密码算法标识,密码装置为硬件密码装置,密码装置安装在移动终端中;当算法协处理器702的内存中存储有密码算法的目标代码、且密码算法的目标代码的密码算法标识不为密码服务指令包括的密码算法标识时,从外存703中提取密码服务指令包括的密码算法标识指示的密码算法的目标代码,并将提取的密码算法的目标代码加载至内存。

算法协处理器702用于,在主控处理器701将提取的密码算法的目标代码加载至内存之后,通过内存中的密码算法的目标代码对待解密数据进行解密或者对待加密数据进行加密。

示例性地,算法协处理器702还用于,当算法协处理器702的内存中存储有密码算法的目标代码、且密码算法的目标代码的密码算法标识为密码服务指令包括的密码算法标识时,通过内存中的密码算法的目标代码对待解密数据进行解密或者对待加密数据进行加密。

示例性地,主控处理器701还用于,当算法协处理器702的内存中未存储密码算法的目标代码时,从外存703中提取密码服务指令包括的密码算法标识指示的密码算法的目标代码,并将提取的密码算法的目标代码加载至内存。

相应地,算法协处理器702还用于,通过内存中的密码算法的目标代码对待解密数据进行解密或者对待加密数据进行加密。

示例性地,主控处理器701还用于,在算法协处理器702的内存中未存储密码算法的目标代码时,控制算法协处理器702的内存中的代码存储空间不被非密码算法的目标代码占用,代码存储空间用于存储加载的密码算法的目标代码。

示例性地,代码存储空间包括至少一个子空间,子空间用于存储密码算法的目标代码,子空间的数量小于或者等于外存中存储的密码算法的数量。主控处理器701用于,从子空间标识与密码算法标识的对应关系中,确定提取的密码算法的目标代码对应的子空间标识;将提取的密码算法的目标代码加载至确定的子空间标识指示的子空间。

示例性地,外存703中存储的密码算法的目标代码是主控处理器701通过密码算法的源代码生成的。

需要说明的是:上述实施例提供的密码装置在进行数据加解密方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的密码装置与密码装置的数据加解密方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1