一种NTRU密钥生成的方法和终端设备与流程

文档序号:17298453发布日期:2019-04-03 04:40阅读:272来源:国知局
一种NTRU密钥生成的方法和终端设备与流程

本申请涉及信息技术领域,尤其涉及一种ntru密钥生成的方法和终端设备。



背景技术:

当终端之间需要进行数据交互时,为保证数据的安全性,往往要求对交互的数据进行加密处理,此时就需要终端中生成用于数据加密的公钥和私钥。进行交互的两个终端需要获取对方用于加密的一对公钥和私钥,才能在双方交互时对接收的数据进行解密,对发送的数据进行加密。数论研究单元(numbertheoryresearchunit,ntru)密码算法由于其安全性强、抗量子攻击、性能佳、加解密速度快等优点被广泛应用于公钥加解密场景中。生成ntru密钥。

目前,针对一个应用程序,预置的ntru密钥生成方式主要采用随机生成的方式,在生成ntru密钥的过程中首先随机选取对应该应用程序的多项式f(x),再根据随机选取的f(x)生成用于基于该应用程序进行通信所使用的ntru公钥和ntru私钥;生成的ntru公钥和ntru私钥编码在该应用程序的代码中,这样终端在下载该应用程序时就可以将该应用程序的ntru公钥和ntru私钥下载,然后在使用该应用程序进行通信时,直接使用与该应用程序的代码一起下载的ntru公钥和ntru私钥对通信过程交互的数据进行加密和解密处理。

由上述可知,由于针对一个应用程序的ntru密钥会随同该应用程序的代码下载到终端中,这样在下载过程中或者应用程序在网络侧和终端侧存储时,ntru密钥很容易被反编译程序获取,导致终端使用该应用程序通信的安全性较低。



技术实现要素:

本申请提供一种ntru密钥生成的方法和终端设备,用以解决终端使用应用程序通信的安全性较低的问题。

第一方面,本申请实施例提供了一种ntru密钥生成的方法,该方法包括:终端设备在识别到用户操作确定需要利用所述终端设备中的一应用程序进行通信时,为保证通信过程中数据传输的安全性,需要生成密钥,生成密钥需要先获取密钥参数,其中所述密钥参数包括下列参数的部分或全部:预先存储的参数、用户输入的参数、所述应用程序的属性参数;所述预先存储的参数存储在所述终端设备的硬件安全存储区中;所述终端设备在确定了密钥参数后根据所述密钥参数和预设的密钥生成算法,生成对应所述应用程序的公钥和私钥。

通过上述设计,终端设备在需要进行通信时才生成密钥,也就是不进行通信则不要生成密钥,密钥生成的方式为即时的生成方式,使用之后不需要进行保存,可以保证密钥的安全性,进一步保证通信的安全;预先存储的参数由于保存在硬件安全存储区中,不易被获取,也能保证密钥的安全性;用户输入的信息只有用户自己输入,也能够保证密钥的安全性;所述应用程序的属性参数是应用程序的一种标识信息,在不同终端设备上均一致,能够保证密钥的安全性的同时可以使得生成的密钥在用户输入的参数和所述预先存储的参数一致的情况下始终相同。

在一个可能的设计中,所述密钥参数可以为所述用户输入的参数,所述终端设备在确定基于所述终端设备中的一应用程序进行通信时,需要先获取用户输入的参数,所述终端设备可以提示用户输入密钥参数;在用户输入信息后,所述终端设备通过识别用户操作确定所述用户所输入的参数,将所述用户输入的参数作为密钥参数。

通过上述设计,由于用户的输入行为只在需要生成密钥时进行,输入的信息也只有用户知晓,用户的输入信息不易被获取,能够进一步确保生成的密钥的安全性。

在一个可能的设计中,所述密钥参数还可以为所述预先存储的参数,所述终端设备在获取密钥参数时,可以直接从所述终端设备的硬件安全存储区中获取该预先存储的参数。

通过上述设计,终端设备预先存储的参数存储于硬件安全存储区中,以使预先生成的参数不易被其他终端设备获取,保证生成的密钥的安全性。

在一个可能的设计中,所述终端设备可以使用预设的运算规则对所述密钥参数进行运算,得到一结果值;将所述结果值转换为包含多个元素的序列;然后根据所述序列中包含的每个元素的值,设置设定的第一多项式f1(x)中相应项的系数值;进而根据设置了系数值后的第一多项式f1(x),确定第二多项式f2(x)和第三多项式f3(x),其中,f1(x)和f2(x)满足设定的第一关系,f1(x)和f3(x)满足设定的第二关系;最后根据f1(x)和f2(x),来确定对应所述应用程序的私钥,并根据f3(x)来确定对应所述应用程序的公钥。

通过上述设计,所述终端设备利用密钥参数通多种运算最后确定出私钥和公钥,可以保证生成密钥的方式不易被破解,进一步可以提高生成的密钥的安全性。

在一个可能的设计中,所述密钥参数可以包括所述预先存储的参数和所述用户输入的参数中的部分或全部参数,此时所述终端设备使用预设的运算规则对所述密钥参数进行运算,得到一结果值时,可以在确定所述终端设备中存储有应用程序的属性参数和应用程序对应的预设参数后,获取应用程序的属性参数和应用程序对应的预设参数,然后所述终端设备使用预设的运算规则对所述应用程序的属性参数、所述密钥参数和应用程序对应的预设参数进行运算,得到一结果值。其中,所述应用程序对应的预设参数为使f1(x)和f2(x)满足设定的第一关系、且f1(x)和f3(x)满足设定的第二关系的值。

通过上述设计,生成密钥所需的参数中可以包括应用程序的属性参数和应用程序对应的预设参数,能够保证生成的密钥与应用程序有关,生成的密钥更具有针对性。

在一个可能的设计中,所述密钥参数还可以为所述应用程序的属性参数,此时所述终端设备使用预设的运算规则对所述密钥参数进行运算,得到一结果值时,可以在确定所述终端设备中存储有应用程序对应的预设参数后,获取应用程序对应的预设参数,使用预设的运算规则对所述应用程序的属性参数和应用程序对应的预设参数进行运算,得到一结果值,其中,所述应用程序对应的预设参数为使f1(x)和f2(x)满足设定的第一关系、且f1(x)和f3(x)满足设定的第二关系的值。

通过上述设计,生成密钥所需的参数中只包括应用程序的属性参数和应用程序对应的预设参数,能够保证生成的密钥与应用程序有关,且生成方式不变的情况下,密钥可以保持一致,也使得生成的密钥更具有针对性。

在一个可能的设计中,所述预设的运算规则可以为单向不可逆的计算函数,这样密钥的生成方式不能进行逆向求解,使得生成的密钥安全性更高。

在一个可能的设计中,所述终端设备将所述结果值转换为包含多个元素的序列的方式有很多,例如,可以将结果值进行进位制转换,也可以在对所述结果值与设定的数值进行求余运算后,将得到的余数转换成n进制数,将所述n进制数作为所述包含多个元素的序列,其中,n进制数中的每一位为所述序列中的一个元素,n为正整数。

通过上述设计,所述终端设备生成密钥的过程中包括求余后进行进位制转换的方式,可以提高密钥生成方式的复杂度,保证生成密钥的方式不易被破解,可以提高生成的密钥的安全性。

在一个可能的设计中,所述终端设备根据所述序列中包含的每个元素的值,设置设定的第一多项式f1(x)中相应项的系数值时,可以按照预设的元素的值和系数值的对应关系,确定所述序列中包含的每个元素的值分别对应的系数值;之后按照预设的顺序,使用确定的各个系数值设置第一多项式f1(x)中相应项的系数的值。

通过上述设计,所述终端设备生成密钥的过程中可以改善密钥生成方式的复杂度,保证生成密钥的方式不易被破解,进一步提高生成的密钥的安全性。

第二方面,本申请实施例还提供了一种终端设备,该终端设备具有实现上述方法实例中终端设备行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,所述终端设备的结构中包括获取单元和处理单元,这些单元可以执行上述方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。

在一种可能的设计中,所述终端的结构中包括处理器和存储器,所述处理器被配置为支持所述终端执行上述方法中相应的功能。所述存储器与所述处理器耦合,其保存所述终端必要的程序指令和数据。

第三方面,本申请实施例中还提供一种计算机存储介质,该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现第一方面或上述第一方面的任意一种设计提供的方法。

第四方面,本申请实施例中还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或上述第一方面的任意一种设计提供的方法。

附图说明

图1为本申请实施例提供的一种手机的硬件结构示意图;

图2为本申请实施例提供的第一种密钥生成的系统架构示意图;

图3为本申请实施例提供的第二种密钥生成的系统架构示意图;

图4为本申请实施例提供的第一种密钥生成的界面显示示意图;

图5为本申请实施例提供的第二种密钥生成的界面显示示意图;

图6为本申请实施例提供的第三种密钥生成的界面显示示意图;

图7为本申请实施例提供的第四种密钥生成的界面显示示意图;

图8为本申请实施例提供的第三种密钥生成的系统架构示意图;

图9为本申请实施例提供的第三种密钥生成的系统架构示意图;

图10为本申请实施例提供的第五种密钥生成的界面显示示意图;

图11为本申请实施例提供的一种ntru密钥生成的方法流程图;

图12为本申请实施例提供的一种ntru密钥生成的示例流程图;

图13为本申请实施例提供的一种ntru密钥生成终端设备的结构示意图;

图14为本申请实施例提供的一种ntru密钥生成终端设备的结构示意图。

具体实施方式

本申请提供了一种ntru密钥生成的方法及终端设备,所述终端设备在启用一个应用程序进行通信时,可以基于确定的参数生成基于该应用程序进行通信所需要的通信密钥,其中所述参数可以为所述终端设备中应用程序固有的属性参数、预先存储的参数和用户输入的参数中的至少一项或多项,采用本申请实施例的方式可以即时生成密钥,不需要提前将密钥保存在终端设备中,可以避免保存在终端设备中的密钥被窃取的问题,因此可以改善密钥的安全性。

首先,对本申请中的部分用语进行解释说明,以便使本领域技术人员理解。

1)、应用程序的属性参数,可以对所述应用程序进行标识,是所述应用程序的一种标识信息,所述应用程序的属性参数可以是所述应用程序的程序包的包名,也可以所述应用程序的通用唯一识别码(universallyuniqueidentifier,uuid),凡是可以作为所述应用程序的属性参数的标识信息均适用于本发明实施例。

2)、密钥参数,用于生成密钥所需的参数之一,可根据具体的场景可以从预先存储的参数、用户输入的参数和应用程序的属性参数中选取,其中,预先存储的参数是存放于终端设备的硬件安全存储区中用于生成密钥所用的参数,是所述终端设备在基于任一应用程序进行通信时通过终端设备中的核心模块可以从硬件安全存储区中读取的参数,所述预先存储的参数可以在终端设备出厂前写入到硬件安全存储区中。

具体的,在所述终端设备的硬件安全存储区中可以预先存储一个参数也可以预先存储多个参数,所述终端设备在确定生成密钥需要的参数时,可以在所述硬件安全存储区中多个预先存储的参数中选取一个参数用做密钥参数。

3)、硬件安全存储区,为所述终端设备中硬件存储区中的特定区域,所述特定区域是硬件存储区中受保护的区域,具有访问权限,仅允许终端设备中的特定核心模块(例如手机中的可信处理模块)访问,获取其中存储的数据,而其他终端设备无法获取,在本发明实施例中,当需要基于预先存储在硬件安全存储区中的参数生成密钥时,密钥生成模块通过终端设备中的特点核心模块获取预先存储的参数。其中所述硬件安全存储区包括不限于:硬件芯片熔丝,终端设备安全存储区,对于硬件芯片熔丝,终端设备中有权限访问该熔丝的特定核心模块从熔丝上读取该预存储的参数;对于终端设备安全存储区,终端设备中有权限访问该存储区的特定核心模块通过驱动读取该存储区预存储的参数。采用上述存储方式可以保证预先存储的参数不易被获取,进一步保证最终生成的密钥的安全性。

4)、应用程序对应的预设参数,为所述终端设备中针对每个应用程序设置的参数,所述预设参数用于生成与所述应用程序对应的密钥。所述终端设备在需要生成密钥时,确定所述手机中是否保存有所述应用程序对应的预设参数,若没有,所述终端设备可以为应用程序设置一个初始参数,用于生成密钥,所述初始参数在生成密钥的过程中,可以根据具体的计算过程进行更新,不限制所述初始参数的更新次数,直至所述终端设备利用更新后的初始参数能够生成密钥,则更新后的初始参数可以保存在所述终端设备中,作为所述应用程序对应的预设参数。

5)、单向不可逆运算,是指对运算参数进行运算后,通过运算后的结果值无法逆向求解运算参数的运算。

6)、求余运算的模数,是指求余运算中的除数。在本发明实施例中模数的设置可以与进位制或第一多项式f1(x)的度数有关。

7)、多个,是指两个或两个以上。

本申请实施例的生成密钥方案可应用于各种终端设备,该终端设备包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如手机、移动电话、平板电脑、个人数字助理、媒体播放器等等)、消费型电子设备、小型计算机、大型计算机,等等。

参考图1所示,为本申请实施例应用的手机的硬件结构示意图。如图1所示,手机100包括显示设备110、处理器120以及存储器130。存储器130可用于存储软件程序以及数据,处理器120通过运行存储在存储器130的软件程序以及数据,从而执行手机100的各种功能应用以及数据处理。存储器130可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如密钥生成功能等)等;存储数据区可存储根据手机100的使用所创建的数据(比如应用程序的属性参数、应用程序对应的预设参数、预先存储在手机的硬件安全存储区的参数等)等。此外,存储器130包括硬件安全存储区,也可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器120是手机100的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器130内的软件程序和/或数据,执行手机100的各种功能和处理数据,从而对手机进行整体监控。处理器120可以包括一个或多个通用处理器,还可包括一个或多个dsp(digitalsignalprocessor,数字信号处理器),也可以包括密钥生成模块,用于执行相关操作,以实现本申请实施例所提供的技术方案。

手机100还可以包括输入设备140,用于接收输入的数字信息、字符信息或接触式触摸操作/非接触式手势,以及产生与手机100的用户设置以及功能控制有关的信号输入等。具体地,本申请实施例中,该输入设备140可以包括触控面板141。触控面板141,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板141上或在触控面板141的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板141可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器120,并能接收处理器120发来的命令并加以执行。例如,用户在触控面板141上用手指单击用于通信的图标或者图例等等,触摸检测装置检测到此次单击带来的这个信号,然后将该信号传送给触摸控制器,触摸控制器再将这个信号转换成坐标发送给处理器120,处理器120根据该坐标和该信号的类型(单击或双击)确定对该图标或者图例所执行的操作(开启),又例如,用户在触控面板141上用手指单击字母或数字图标,触摸检测装置检测到此次单击所点击的字母或数字,然后将该字母或数字对应的信号传送给触摸控制器,触摸控制器再将这个信号转换成坐标发送给处理器120,处理器120根据该坐标和该信号的类型确定用户所输入的参数。

触控面板141可以采用电阻式、电容式、红外线以及表面声波等多种类型实现。除了触控面板141,输入设备140还可以包括其他输入设备142,其他输入设备142可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示设备110,包括的显示面板111,用于显示由用户输入的信息或提供给用户的信息以及手机100的各种菜单界面等,在本申请实施例中主要用于显示手机100在生成密钥过程中的提示信息和输入界面等。可选的,显示面板可以采用液晶显示器(liquidcrystaldisplay,lcd)或oled(organiclight-emittingdiode,有机发光二极管)等形式来配置显示面板111。在其他一些实施例中,触控面板141可覆盖显示面板111上,形成触摸显示屏。

除以上之外,手机100还可以包括用于给其他模块供电的电源150。手机100还可以包括无线射频(radiofrequency,rf)电路160,用于与无线网络设备进行网络通信,还可以包括wifi模块170,用于与其他设备进行wifi通信,获取其他设备传输的图像或者数据等。

参考图2所述,为本申请实施例应用的密钥生成的系统架构示意图,如图2所示,所述密钥生成系统200包含有密钥生成模块201、接收模块202、存储介质203;还可以包含多个应用程序模块,例如第一应用程序204、第二应用程序205,所述终端设备可以基于不同的应用程序模块与其他终端设备进行通信。

所述接收模块202用于所述终端设备在安装应用程序时,接收应用程序的安装包,所述终端设备控制所述接收模块202解析所述应用程序的安装包获取所述应用程序的属性参数,并将所述应用程序的属性参数保存在存储介质203中。

所述密钥生成模块201在接收到第一应用程序205或第二应用程序206发送的生成密钥请求后,为第一应用程序204或第二应用程序205生成对应的密钥,并将生成的对应密钥返回给第一应用程序204或第二应用程序205。

所述终端设备在基于所述第一应用程序204或第二应用程序205进行通信时,控制所述第一应用程序204或第二应用程序205向所述密钥生成模块201发送生成密钥请求。

所述终端设备可以在基于所述第一应用程序204或第二应用程序205进行通信时,控制所述第一应用程序204或第二应用程序205接收用户输入的参数,之后,所述第一应用程序204或第二应用程序205将接收到的用户输入的参数发送给密钥生成模块201,其中,密钥生成模块中可以包含有参数输入模块206,用于在密钥生成模块中接收生成密钥所需要的参数,所述第一应用程序204或第二应用程序205可以将接收到的用户输入的参数发送给密钥生成模块201中的参数输入模块206。

所述终端设备也可以在基于所述第一应用程序204或第二应用程序205进行通信时,控制所述接收模块202接收用户输入的参数,所述接收模块202将用户输入的参数发送给密钥生成模块201中的参数输入模块206。

所述存储介质203包括所述终端设备中的硬件安全存储区、高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

所述存储介质203用于存储所述终端设备中的数据,所述数据包括但不限于所述第一应用程序204和所述第二应用程序205的属性参数、所述第一应用程序204和所述第二应用程序205对应的预设参数、预先存储于所述硬件安全存储区中的参数。

例如,所述存储介质203中的易失性固态存储器件可以用于存放用户输入的参数,所述存储介质203中的非易失性存储器件可以用于存放所述第一应用程序204和所述第二应用程序205的属性参数、所述第一应用程序204和所述第二应用程序205的对应的预设参数、预先存储的参数可以存储在存储介质203的硬件安全存储区中。

以第一应用程序请求生成密钥为例,说明所述密钥生成模块根据不同的参数生成密钥的三种主要的场景:

场景一、所述密钥生成模块基于用户的输入信息生成密钥。

如图3所示,当终端设备基于第一应用程序310进行通信时,控制所述第一应用程序310向所述密钥生成模块320发送生成密钥请求,所述终端设备可以提示用户选择从利用终端设备中预先存储的参数生成密钥、利用用户输入的参数生成密钥和其他方式中选择生成密钥的方式,例如,当终端设备基于第一应用程序310进行通信时,可显示在图1所示的显示面板111上显示如图4所示的界面,提供三种生成密钥的方式,由用户通过点击对应的图标选择所期望的生成密钥的方式。

在用户选择利用用户输入的参数生成密钥后,所述终端设备通过第一应用程序310提醒用户输入参数,可以在图1所示的显示面板111上显示如图5所示的提示界面,提示用户输入信息,并显示输入框,用户可以在图1所示的触控面板141上输入信息后,第一应用程序310接收用户输入的参数,并将所述输入的参数传输至所述密钥生成模块320中的参数输入模块321,所述密钥生成模块320基于用户输入的参数生成密钥,并将生成的密钥返回至第一应用程序310。

需要说明的是,终端设备中可以默认设置密钥生成的方式是基于用户的输入信息生成密钥,当终端设备基于第一应用程序310进行通信时,控制所述第一应用程序310向所述密钥生成模块320发送生成密钥请求,所述终端设备通过第一应用程序310提醒用户输入参数,直接显示如图5所示的提示界面,提示用户输入信息。

第一应用程序310在接收到密钥生成模块320返回的密钥,可在图1所示的显示面板上显示如图6所示的界面,提示用户密钥生成可以开始通信,也可以在显示界面中显示“发送密钥”的选项,用户选择“发送密钥”后,终端设备可以将生成的密钥发送给其他终端设备,在需要保证通信双方使用的密钥相同的情况下,可以通过发送密钥的选项来使得通信双方可以获知对方的密钥,进而对发送的消息进行加密,上述发送密钥的情况仅是举例说明,凡是需要发送密钥的情况均适用于本发明实施例;第一应用程序310在接收到密钥生成模块320返回的密钥后,也可以不显示如图6所示的界面,直接进行通信。

一种可能的实施方式,在所述密钥生成模块320基于所述输入的参数生成密钥时,所述密钥生成模块320在场景一下,还可以获取其他参数,利用其他参数和所述输入的参数一同生成密钥;终端设备可以显示如图7所示的界面,提供在场景一下,可选择利用第一应用程序310的属性参数生成密钥(方式一)、利用第一应用程序310的属性参数和第一应用程序310对应的预设参数生成密钥(方式二)这两种方式生成密钥。

具体的,可以分为如下两种获取方式。

方式一、所述密钥生成模块320从存储介质中获取第一应用程序310的属性参数。

当所述存储介质中未存储所述第一应用程序310对应的预设参数时,所述密钥生成模块320从存储介质中只获取第一应用程序310的属性参数,所述密钥生成模块320根据所述输入的参数和第一应用程序310的属性参数生成密钥。

所述密钥生成模块320也可以为所述第一应用程序310设置所述第一应用程序310对应的初始参数。所述密钥生成模块320根据所述输入的参数、所述第一应用程序310对应的初始参数和第一应用程序310的属性参数生成密钥。

方式二、所述密钥生成模块320从存储介质中获取第一应用程序310的属性参数和所述第一应用程序310对应的预设参数。

当所述存储介质中存储所述第一应用程序310对应的预设参数时,所述密钥生成模块320从存储介质中获取第一应用程序310的属性参数和所述第一应用程序310对应的预设参数。

所述密钥生成模块320根据所述输入的参数、所述第一应用程序310对应的预设参数和第一应用程序310的属性参数生成密钥。

需要说明的是,终端设备在基于所述输入的参数生成密钥时,需要获取其他参数的类型也可以是预先设置的,而不需要显示提示界面,例如,可以预先设置在存储有应用程序对应的预设参数时,获取应用程序对应的预设参数,根据所述输入的参数、应用程序的属性参数和应用程序对应的预设参数生成密钥;在未存储有应用程序对应的预设参数时,根据所述输入的参数和应用程序的属性参数生成密钥,或设置应用程序对应的初始参数,根据所述输入的参数、应用程序的属性参数和应用程序对应的初始参数生成密钥。

为了保证在不同的终端设备基于同一应用程序通信的密钥相同,所述用户在不同终端设备中的输入信息需一致,若输入信息不一致,为保证不同终端设备可以通信,可以将生成的密钥进行加密或签名处理后发送给其他终端设备,以使其他终端设备可以对数据进行解密或者加密处理,密钥发送的方式可以不限于加密或者签名处理。

场景二、所述密钥生成模块基于所述终端设备中预先存储的参数生成密钥。

如图8所示,终端设备基于第二应用程序820进行通信时生成密钥的方式与基于第一应用程序810进行通信时生成密钥的方式相同,此处仅以基于第一应用程序810进行通信时生成密钥为例进行说明。

当终端设备基于第一应用程序810进行通信时,所述终端设备可以提示用户选择从利用终端设备中预先存储的参数生成密钥和利用用户输入的参数生成密钥,例如可在图1所示的显示面板上111显示如图4所示的界面,提供三种生成密钥的方式,由用户通过点击对应的图标选择所期望的生成密钥的方式。

在用户选择利用终端设备中预先存储的参数生成密钥后,所示终端设备控制所述第一应用程序810向所述密钥生成模块830发送生成密钥请求,所述密钥生成模块830在接收到生成密钥请求后,从所述存储介质840中的硬件安全存储区841获取所述终端设备预先存储的参数,将所述预先存储的参数输入到参数输入模块831,基于所述终端设备中预先存储的参数生成密钥,并将生成的密钥返回至第一应用程序810。

需要说明的是,终端设备中可以默认设置密钥生成的方式是基于所述终端设备中预先存储的参数生成密钥,当终端设备基于第一应用程序810进行通信时,无需提示用户,直接控制所述第一应用程序810向所述密钥生成模块830发送生成密钥请求,从所述存储介质840中的硬件安全存储区841获取所述终端设备预先存储的参数生成密钥。

较佳的,所述终端设备中预先存储的参数保存在终端设备中的硬件安全存储区841,采用上述存储方式可以保证预先存储的参数不易被获取,进一步保证最终生成的密钥的安全性。

一种可能的实施方式,在所述密钥生成模块830基于所述终端设备中预先存储的参数生成密钥时,所述密钥生成模块830在场景二下,还可以获取其他参数,利用其他参数和所述终端设备中预先存储的参数一同生成密钥。终端设备可以显示如图7所示的界面,提供在场景二下,可选择两种方式生成密钥。

具体的,可以分为如下方式。

方式一、所述密钥生成模块830从存储介质840中获取第一应用程序810的属性参数。

方式二、所述密钥生成模块830从存储介质840中获取第一应用程序810的属性参数和所述第一应用程序810对应的预设参数。

需要说明的是,终端设备在基于所述输入的参数生成密钥时,需要获取其他参数的类型也可以是预先设置的,而无需提示用户。

此处获取方式与场景一中的方式相同,此处不再赘述。

为了保证在不同的终端设备基于所述第一应用程序通信的密钥相同,可以设置在不同终端设备中预先存储的参数是相同的;若预先存储的参数不一致,为保证不同终端设备之间可以通信,可以将生成的密钥进行加密或签名处理后发送给其他终端设备,以使其他终端设备可以对数据进行解密或者加密处理,密钥发送的方式可以不限于加密或者签名处理。

场景三、所述密钥生成模块基于第一应用程序的属性参数生成密钥。

如图9所示,终端设备基于第二应用程序920进行通信时生成密钥的方式与基于第一应用程序910进行通信时生成密钥的方式相同,此处仅以基于第一应用程序910进行通信时生成密钥为例进行说明。

当终端设备基于第一应用程序910进行通信时,所述终端设备可以提示用户从利用终端设备中预先存储的参数生成密钥的方式、利用用户输入的参数生成密钥的方式和利用第一应用程序910的属性参数生成密钥的方式中选择一种,例如,当终端设备基于第一应用程序910进行通信时,可在图1所示的显示面板111上显示如图10所示的界面,提供三种个生成密钥的方式,由用户通过点击对应的图标选择所期望的生成密钥的方式。

在用户选择利用第一应用程序910的属性参数的方式后,所示终端设备控制所述第一应用程序910向所述密钥生成模块930发送生成密钥请求,所述密钥生成模块930在接收到生成密钥请求后,从所述存储介质940中获取所第一应用程序910的属性参数,将所述第一应用程序910的属性参数输入到参数输入模块931,基于第一应用程序910的属性参数生成密钥,并将生成的密钥返回至第一应用程序910。

需要说明的是,终端设备中可以默认设置密钥生成的方式是基于应用程序的属性参数生成密钥,当终端设备基于第一应用程序910进行通信时,无需提示用户,直接控制所述第一应用程序910向所述密钥生成模块930发送生成密钥请求,所述终端设备从所述存储介质940中获取所第一应用程序910的属性参数,基于第一应用程序910的属性参数生成密钥。

一种可能的实施方式,在所述密钥生成模块930基于第一应用程序910的属性参数生成密钥时,所述密钥生成模块930在场景三下,还可以获取其他参数,利用其他参数和第一应用程序910的属性参数一同生成密钥。

具体的,可以分为如下方式。

方式一、所述密钥生成模块930为第一应用程序910设置初始参数。

当所述存储介质940中未存储所述第一应用程序910对应的预设参数时,所述密钥生成模块930从存储介质940中只获取第一应用程序910的属性参数,并为所述第一应用程序910设置所述第一应用程序910对应的初始参数。

所述密钥生成模块930根据所述第一应用程序910对应的初始参数和第一应用程序910的属性参数生成密钥。

方式二、所述密钥生成模块930从存储介质940中获取所述第一应用程序910对应的预设参数。

当所述存储介质940中存储所述第一应用程序910对应的预设参数时,所述密钥生成模块930从存储介质940一同获取第一应用程序910的属性参数和所述第一应用程序910对应的预设参数。

所述密钥生成模块930根据所述第一应用程序910对应的预设参数和第一应用程序910的属性参数生成密钥。

第一应用程序910的属性参数为第一应用程序910为一种标识信息,在不同的终端设备中均相同,且所述密钥生成模块930生成密钥的方式相同,能够保证所述第一应用程序910对应的预设参数或所述第一应用程序910对应的初始参数相同,使得在不同的终端设备基于所述第一应用程序910通信的密钥相同。

较佳的,所述第一应用程序910的属性参数和/或所述第一应用程序910对应的预设参数也可以保存在非易失性存储器的特定存储区中。

本申请实施例提供一种ntru密钥生成的方法,该方法适用于上述图1所示的手机中,在本申请实施例中,仅以手机为例进行描述,但是并不限制本发明实施例应用到其他类型的终端设备中。参阅图11所示,该方法的具体流程包括:

步骤1101:手机在确定基于所述终端设备中的一应用程序进行通信时,获取密钥参数,其中所述密钥参数包括下列参数的部分或全部:预先存储的参数、用户输入的参数、所述应用程序的属性参数,所述预先存储的参数存储在所述终端设备硬件安全存储区中;

步骤1102:手机根据所述密钥参数和预设的密钥生成算法,生成对应所述应用程序的公钥和私钥。

手机确定基于所述手机中的一应用程序进行通信时,所述手机确定生成密钥所需要的参数。

所述手机基于确定的参数通过预设的运算规则生成一结果值。

具体的,所述手机确定的参数中包含的参数种类可以分为:所述密钥参数为所述应用程序的属性参数、所述密钥参数为手机中预先存储的参数或用户输入的参数以及所述密钥参数为手机中预先存储的参数或用户输入的参数,且同时包含所述应用程序的属性参数三种情况,下面对三种情况下通过预设的运算规则生成结果值的方式分别进行介绍:

情况一、所述密钥参数为所述应用程序的属性参数。

为了保证生成的密钥与所述应用程序对应,确定的参数中需要包含有应用程序的属性参数,所述手机在确定基于所述手机中一应用程序进行通信时,获取所述应用程序的属性参数,并在获取所述应用程序的属性参数后,所述手机使用预设的运算规则对所述应用程序的属性参数进行运算,生成一结果值。

一种可能的实现方式,所述手机确定参数中除了所述应用程序的属性参数,还可以包含有其他参数,例如,所述手机在确定所述手机中存储有所述应用程序对应的预设参数后,获取所述应用程序对应的预设参数;所述手机在确定所述手机中未存储有所述应用程序对应的预设参数后,为所述应用程序设置对应的初始参数。

所述手机使用预设的运算规则对所述应用程序的属性参数、所述应用程序对应的预设参数或所述应用程序对应的初始参数进行运算,生成一结果值。

情况二、所述密钥参数为手机中预先存储的参数或用户输入的参数。

为了保证生成的密钥的一致性,生成的密钥始终相同,所述手机获取所述密钥参数。

若所述密钥参数为所述用户输入的参数;所述终端设备通过识别用户操作确定所述用户输入的参数,将所述用户输入的参数作为密钥参数。

若所述密钥参数为所述终端设备中预先存储的参数,所述终端设备确定基于所述终端设备中的一应用程序进行通信后,获取所述终端设备中预先存储的参数。

一种可能的实现方式,所述手机确定参数中除了所述密钥参数,还可以包含有其他参数,例如,所述手机在确定所述手机中存储有所述应用程序对应的预设参数后,获取所述应用程序对应的预设参数;所述手机在确定所述手机中未存储有所述应用程序对应的预设参数后,为所述应用程序设置对应的初始参数。

所述手机使用预设的运算规则对所述密钥参数、所述应用程序对应的预设参数或所述应用程序对应的初始参数进行运算,生成一结果值。

情况三、所述密钥参数为手机中预先存储的参数或用户输入的参数,且同时包含所述应用程序的属性参数。

为了保证生成的密钥与所述应用程序对应,同一应用程序对应的密钥始终相同,且生成的密钥为所述手机所特有,确定的参数中可以包含有应用程序的属性参数,密钥参数为手机中预先存储的参数或用户输入的参数。

同样的,除了所述应用程序的属性参数和所述密钥参数之外,确定的参数中还可以包含有其他参数,例如所述应用程序对应的预设参数或所述应用程序对应的初始参数等。

所述手机使用预设的运算规则对所述应用程序的属性参数、所述手机中存储的密钥参数、所述应用程序对应的预设参数或所述应用程序对应的初始参数进行运算,生成一结果值。

较佳的,为了保证生成的密钥安全程度高,不易被破解,所述运算规则应为单向不可逆的运算,例如hmac(keyed-hashmessageauthenticationcode,哈希运算消息认证码算法)、pbkdf2(password-basedkeyderivationfunction2,基于密码的密钥派生函数2)、scrypt算法等。

需要说明的是,在三种情况下,所述应用程序对应的预设参数并不一定相同,所述应用程序对应的预设参数是指在对应的情况下,可以保证生成密钥,且不需要在具体生成密钥过程中执行参数调整操作的参数。所述手机针对于一个应用程序可以保存有不同情况下的所述应用程序对应的预设参数,以区分不同情况下使用的预设参数。

所述手机在生成所述结果值后,可以将所述结果值转换为一个包含有多个元素的序列。

转换为序列的方式有许多种,所述手机可以将所述结果值直接转换为一个n进制数,将所述n进制数的全部或n进制数的部分作为一个序列,n进制数中每一位的值为所述序列的一个元素;所述手机也可以对所述结果值进行设定的运算后转换位一个n进制数,将所述n进制数的全部或n进制数的部分作为一个序列。

例如,所述手机当前确定的所述结果值为75,所述手机可以将75直接转换为一个3进制数为2210,将2210作为一个序列;所述手机也可以对75做乘法运算,乘以7后转换为一个三进制数为201110,将201110的前四位2011作为一个序列。

一种可能的实施方式,所述手机对所述结果值进行求余运算后,将余数转换为n进制数,其中,进行求余运算的模数为设定值,n进制数的进位制可以与进行求余运算的模数对应,以使所述余数在转换为n进制数时,能够较为方便、高效的进行,例如当模数为3的12次方减1,对应的进位制为3进制;当模数为3的12次方减2,对应的进位制为3进制;当模数为4的12次方减1,对应的进位制为4进制。

较佳的,鉴于所述手机将转换后的n进制数作为所述序列,且需要将所述序列中的元素的值设置为设定的第一多项式f1(x)中相应项的系数值;为了使序列中的元素数量与第一多项式f1(x)中度数(degree)一致,所述求余运算中模数的选取可以以需要转换的进位制和第一多项式f1(x)的度数为依据确定,例如,若第一多项式f1(x)的度数为m,需要转换为三进制数,则可选择模数为3的m次方,或者3的m次方减1;若第一多项式f1(x)的度数为m,需要转换为四进制数,则可选择模数为4的m次方,或者4的m次方减1。

在本发明实施例中,以所述第一多项式f1(x)的度数为m为例说明,具体的m可以为所述手机设置的任一正整数。

所述手机根据预设的元素的值和多项式系数值的对应关系,确定每个元素对应的系数值。

所述序列是由多种不同的元素构成的,每种元素的值对应一个系数值,不同的元素的值可以对应不同系数值,也可以对应相同系数值,元素的值和多项式系数值的对应关系可以根据具体场景预先进行设置。

例如,所述序列为由0、1、2三种元素构成的一列数,元素的总数量等于第一多项式f1(x)的度数m,所述第一多项式f1(x)的系数值有三种,分别为1、-1、0,可以设置元素0对应的系数值为0,元素1对应的系数值为1,元素2对应的系数值为-1。

又例如,所述序列为由0、1、2、3种元素构成的一列数,元素的总数量等于第一多项式f1(x)的度数m,所述第一多项式f1(x)的系数值有三种,分别为1、-1、0,可以设置元素0对应的系数值为0,元素1和元素3对应的系数值为1,元素2对应的系数值为-1。

所述手机按照预设的顺序使每个元素对应的系数值作为第一多项式f1(x)相应项的系数值。

所述预设的顺序可以有多种方式,所述手机可以按照序列中元素的排列顺序顺次设置第一多项式f1(x)相应项的系数值,例如,序列中的第a个元素对应第一多项式f1(x)第a项的系数值;也可以按照序列中元素的反向排列顺序设置第一多项式f1(x)相应项的系数值,例如,序列中的第a个元素对应第一多项式f1(x)m-a项的系数值;也可以设置序列中元素的排列排序中次序为偶数的元素对应第一多项式f1(x)奇数项的系数值,序列中元素的排列排序中次序为奇数的元素对应第一多项式f1(x)偶数项的系数值。

所述手机在确定针对第一多项式f1(x),存在第二多项式f2(x)和第三多项式f3(x)后,生成私钥和公钥,其中,f1(x)和f2(x)满足设定的第一关系,f1(x)和f3(x)满足设定的第二关系。

针对设置了系数的第一多项式f1(x),所述手机需要先判断是否存在第二多项式f2(x)和第三多项式f3(x),其中,f1(x)和f2(x)满足设定的第一关系,f1(x)和f3(x)满足设定的第二关系。

具体的,所述第一关系符合下述公式要求:

f1(x)*f2(x)=1modp;

所述第二关系符合下述公式要求:

f1(x)*f3(x)=1modq;

其中,p和q为预设的常数值。

判断是否存在第二多项式f2(x)和第三多项式f3(x)的方式有很多,例如,所述手机可以确定所述第一多项式f1(x)的系数矩阵,求解系数矩阵的秩,多项式系数矩阵的秩不为0,且秩模p或q有逆时,该多项式模p或q有逆,确定存在第二多项式f2(x)和第三多项式f3(x),否则不存在,又例如,所述手机可以采用遍历多项式的方式来确定是否存在第二多项式f2(x)和第三多项式f3(x);上述方式均为举例说明,凡是可以确定存在第二多项式f2(x)和第三多项式f3(x)的方式均适用于本发明实施例。

若存在第二多项式f2(x)和第三多项式f3(x),则所述手机可以进行下一步操作确定私钥和公钥,若不存在,则需要对所述手机确定的参数进行调整。

具体的,当不存在第二多项式f2(x)和第三多项式f3(x),所述用于生成结果值的参数中包含有所述手机为应用程序设置的初始参数时,所述手机更新所述初始参数,并返回至基于确定的参数通过预设的运算规则生成一结果值的步骤,直至确定存在第二多项式f2(x)和第三多项式f3(x);在确定存在第二多项式f2(x)和第三多项式f3(x)后,所述更新后的初始参数可以作为应用程序对应的预设参数,保存在所述手机中,以便所述手机在之后基于所述应用程序通信需生成密钥时使用。

由上述内容及本说明书中对所述应用程序对应的预设参数的解释说明可知,所述应用程序对应的预设参数实质上是指使得f1(x)和f2(x)满足设定的第一关系、且f1(x)和f3(x)满足设定的第二关系的值。所述用于生成结果值的参数中包含有所述应用程序对应的预设参数,且手机中预先存储的参数及所述应用程序的属性参数不发生变化的情况下,存在第二多项式f2(x)和第三多项式f3(x)满足第一关系和第二关系。

当若所述用于生成结果值中的参数中包含所述应用程序对应的预设参数和所述手机中预先存储的参数时,所述手机中存储的参数发生变化,例如手机通过与其他手机通信后更改所述参数,或用户后续更改预先存储的参数,均可能导致不存在第二多项式f2(x)和第三多项式f3(x)的情况发生,此时所述手机可以更新所述预设参数,并返回至基于确定的参数通过预设的运算规则生成一结果值的步骤,直至确定存在第二多项式f2(x)和第三多项式f3(x);在确定存在第二多项式f2(x)和第三多项式f3(x)后,所述更新后的预设参数可以作为应用程序对应的预设参数。

若所述应用程序的属性参数发生变化时,也可以采用上述同样的方式更新所述应用程序对应的预设参数,此处不再赘述。

其中,更新预设参数或初始参数的方式可以是以设定的步长递增的方式,例如将预设参数或初始参数加1;也可以是以设定的步长递减的方式,例如将预设参数或初始参数减2。

在确定存在第二多项式f2(x)和第三多项式f3(x)后,所述手机根据第一多项式f1(x)和第二多项式f2(x),确定对应所述应用程序的私钥,并根据第三多项式f3(x)确定对应所述应用程序的公钥。

一种可能的实施方式,所述手机确定私钥为{f1(x),f2(x)},公钥为{m,h(x)},其中,h(x)=p*f3(x)*f4(x)modq,f4(x)为所述手机随机生成的第四多项式,度数小于等于m-1。

在上述三种场景中,本发明实施例所述的生成密钥的方式为即时生成方式,也就是说,在手机基于应用程序要进行通信时,才需要生成密钥,生成的密钥在使用之后可不进行保存,直接删除,避免了存储密钥容易被反编译程序获取的可能性,保证了密钥的安全性。

若生成密钥所需要的参数中包含有用户输入的参数,由于用户的输入行为只在需要生成密钥时进行,输入的信息也只与用户有关,用户的输入信息不易被获取,能够进一步确保生成的密钥的安全性;

若生成密钥所需的参数中包含下列参数的部分或全部:手机预先存储在硬件安全存储区的参数、所述第一应用程序的属性参数、所述第一应用程序对应的预设参数,上述参数均可存储于手机存储介质中,可使上述参数不易被其他设备获取,也可以保证生成的密钥的安全性。

如图12所示,密钥参数为所述终端设备中预先存储的参数,且同时包含应用程序的属性参数为例,本发明实施例提供的一种ntru密钥生成的方法。

步骤1201:终端设备获取应用程序的属性参数和终端设备中预先存储的参数;

步骤1202:终端设备判断是否存储应用程序对应的预设参数,若有则执行步骤1203,否则执行步骤1205;

步骤1203:终端设备获取应用程序对应的预设参数;

步骤1204:终端设备基于预先存储的参数、应用程序的属性参数和预设参数通过预设的运算规则生成结果值;

步骤1205:终端设备为应用程序设置对应的初始参数;

步骤1206:终端设备基于预先存储的参数、应用程序的属性参数和初始参数通过预设的运算规则生成结果值;

步骤1207:终端设备将结果值转换为包含有多个元素的序列;

步骤1208:终端设备根据预设的元素的值和多项式系数值的对应关系,确定每个元素对应的系数值;

步骤1209:终端设备按照预设的顺序使每个元素对应的系数值作为第一多项式f1(x)相应项的系数值;

步骤1210:终端设备判断针对第一多项式f1(x),是否存在第二多项式f2(x)和第三多项式f3(x),其中,f1(x)和f2(x)满足设定的第一关系,f1(x)和f3(x)满足设定的第二关系,若存在则执行步骤1211,否则执行步骤1212。

步骤1211:终端设备根据f1(x)、f2(x)和f3(x)生成私钥和公钥;

步骤1212:终端设备更新初始参数,返回至步骤1206。

基于以上实施例,本申请实施例还提供了一种终端设备,该终端用于实现如图11所示的终端设备的ntru密钥生成的方法。参阅图13所示,该终端设备1300包括:获取单元1301、处理单元1302;获取单元1301,用于在确定基于所述终端设备1300中的一应用程序进行通信时,获取密钥参数,其中所述密钥参数包括下列参数的部分或全部:预先存储的参数、用户输入的参数、所述应用程序的属性参数;所述预先存储的参数存储在所述终端设备1300硬件安全存储区中;处理单元1302,用于根据所述密钥参数和预设的密钥生成算法,生成对应所述应用程序的公钥和私钥。

若所述密钥参数为所述用户输入的参数时,所述获取单元1301具体可以在确定基于所述终端设备1300中的一应用程序进行通信后,提示用户输入密钥参数;然后通过识别用户操作确定所述用户输入的参数,将所述用户输入的参数作为密钥参数。

若所述密钥参数为所述预先存储的参数时,所述获取单元1301需获取所述预先存储的参数,具体可以在确定基于所述终端设备1300中的一应用程序进行通信后,获取所述终端设备1300预先存储在硬件安全存储区中的参数。

处理单元1302在所述获取单元1301获取密钥参数后根据所述密钥参数和预设的密钥生成算法,生成对应所述应用程序的公钥和私钥,其中,具体生成密钥的步骤如下:

使用预设的运算规则对所述密钥参数进行运算,得到一结果值;

将所述结果值转换为包含多个元素的序列;

根据所述序列中包含的每个元素的值,设置设定的第一多项式f1(x)中相应项的系数值;

根据设置了系数值后的第一多项式f1(x),确定第二多项式f2(x)和第三多项式f3(x),其中,f1(x)和f2(x)满足设定的第一关系,f1(x)和f3(x)满足设定的第二关系;

根据f1(x)和f2(x),确定对应所述应用程序的私钥,并根据f3(x)确定对应所述应用程序的公钥。

若所述密钥参数包括下列参数的部分或全部时:所述预先存储的参数、所述用户输入的参数,所述处理单元1302可以使用预设的运算规则对所述密钥参数进行运算,得到一结果值时,确定所述获取单元1301获取的应用程序的属性参数和应用程序对应的预设参数,其中,所述应用程序对应的预设参数为使f1(x)和f2(x)满足设定的第一关系、且f1(x)和f3(x)满足设定的第二关系的值;之后,所述处理单元1302使用预设的运算规则对所述应用程序的属性参数、所述密钥参数和应用程序对应的预设参数进行运算,得到一结果值。

若所述密钥参数为所述应用程序的属性参数,所述处理单元1302得到结果值时,具体可以使用预设的运算规则对所述应用程序的属性参数和所述获取单元1301获取的应用程序对应的预设参数进行运算,得到一结果值,所述应用程序对应的预设参数为使f1(x)和f2(x)满足设定的第一关系、且f1(x)和f3(x)满足设定的第二关系的值。

较佳的,所述预设的运算规则可以为单向不可逆的计算函数,以保证密钥生成的方式不易被破解。

所述处理单元1302将所述结果值转换为包含多个元素的序列时,可以有多种转换方式,其中一种转换方式如下:

对所述结果值与设定的数值进行求余运算,并将得到的余数转换成n进制数,将所述n进制数作为所述包含多个元素的序列,其中,n进制数中的每一位为所述序列中的一个元素,n为正整数。

所述处理单元1302根据所述序列中包含的每个元素的值,设置设定的第一多项式f1(x)中相应项的系数值,可以有多种设置方式,其中一种设置方式如下:

按照预设的元素的值和系数值的对应关系,确定所述序列中包含的每个元素的值分别对应的系数值;按照预设的顺序,使用确定的各个系数值设置第一多项式f1(x)中相应项的系数的值。

需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

基于以上实施例,本申请实施例还提供了一种终端设备,所述终端设备用于实现如图11所示的终端设备的ntru密钥生成的方法。参阅图14所示,所述终端1400包括处理器1401和存储器1402;存储器1402,用于存储所应用程序的属性参数和所述终端设备1400预先存储的参数,所述预先存储的参数保存在所述存储器1402的硬件安全存储区中;处理器1401,用于实现如图10所示的终端的ntru密钥生成的方法,具体可以包括:

在确定基于所述终端设备1400中的一应用程序进行通信时,获取密钥参数,其中所述密钥参数包括下列参数的部分或全部:预先存储的参数、用户输入的参数、所述应用程序的属性参数;以及根据所述密钥参数和预设的密钥生成算法,生成对应所述应用程序的公钥和私钥。

一种实现方式中,若所述密钥参数为所述用户输入的参数时,所述终端还可以包括输入接口1403,用于识别用户操作接收用户输入的参数;这样,所述处理器1401在获取密钥参数时,可以在确定基于所述终端设备1400中的一应用程序进行通信后,提示用户输入密钥参数;然后通过所述输入接口1403确定所述用户输入的参数,将识别确定的所述用户输入的参数作为密钥参数。

若所述密钥参数为所述预先存储的参数时,所述处理器1401可以通过如下方式在获取密钥参数:确定基于所述终端设备1400中的一应用程序进行通信后,获取预先存储在所述存储器1402的硬件安全存储区中的参数。

所述处理器1401根据所述密钥参数和预设的密钥生成算法,生成对应所述应用程序的公钥和私钥时,可以采用如下步骤生成密钥:使用预设的运算规则对所述密钥参数进行运算,得到一结果值;然后对结果值进行处理,将所述结果值转换为包含多个元素的序列;之后,根据所述序列中包含的每个元素的值,设置设定的第一多项式f1(x)中相应项的系数值;设置了系数值后的第一多项式f1(x)后,根据设置了系数值后的第一多项式f1(x),确定第二多项式f2(x)和第三多项式f3(x),其中,f1(x)和f2(x)满足设定的第一关系,f1(x)和f3(x)满足设定的第二关系;根据f1(x)和f2(x),确定对应所述应用程序的私钥,并根据f3(x)确定对应所述应用程序的公钥。

其中,若所述密钥参数包括下列参数的部分或全部:所述预先存储的参数、所述用户输入的参数,所述处理器1401得到一结果值时,可以先获取所述应用程序的属性参数和应用程序对应的预设参数,所述应用程序对应的预设参数为使f1(x)和f2(x)满足设定的第一关系、且f1(x)和f3(x)满足设定的第二关系的值;然后,使用预设的运算规则对所述应用程序的属性参数、所述密钥参数和应用程序对应的预设参数进行运算,得到一结果值。

若所述密钥参数为所述应用程序的属性参数,所述处理器1401可以使用预设的运算规则对所述应用程序的属性参数和所述应用程序对应的预设参数进行运算,得到一结果值,所述应用程序对应的预设参数为使f1(x)和f2(x)满足设定的第一关系、且f1(x)和f3(x)满足设定的第二关系的值。

较佳的,所述预设的运算规则可以为单向不可逆的计算函数,以使生成密钥的方式不易被破解。

所述处理器1401在将所述结果值转换为包含多个元素的序列时,有多种转换方式,其中一种转换方式如下:

对所述结果值与设定的数值进行求余运算,并将得到的余数转换成n进制数,将所述n进制数作为所述包含多个元素的序列,其中,n进制数中的每一位为所述序列中的一个元素,n为正整数。

所述处理器1401在根据所述序列中包含的每个元素的值,设置设定的第一多项式f1(x)中相应项的系数值时,有多种设置方式,其中一种设置方式如下:

按照预设的元素的值和系数值的对应关系,确定所述序列中包含的每个元素的值分别对应的系数值;

按照预设的顺序,使用确定的各个系数值设置第一多项式f1(x)中相应项的系数的值。

所述存储器1402,还用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。所述存储器1402可能包含ram,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。所述处理器1401执行所述存储器1402所存放的应用程序,实现上述功能,从而实现如图10所示的终端设备的密钥生成方法。

所述处理器1401和所述存储器1402相互连接。可选的,所述处理器1401、所述存储器1402和输入接口1403可以通过图14中所示的总线1404相互连接;所述总线1404可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

一种计算机可读存储介质,所述计算机可读存储介质中存储软件程序,所述软件程序在被一个或多个处理器读取并执行时可实现上述方法。

一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如实现上述方法。

综上所述,本申请实施例提供了一种ntru密钥生成的方法及终端设备,在该方法中,终端设备在确定基于所述终端设备中的一应用程序进行通信时,获取密钥参数,其中所述密钥参数包括下列参数的部分或全部:预先存储的参数、用户输入的参数、所述应用程序的属性参数;所述预先存储的参数存储在所述终端设备硬件安全存储区中;之后,所述终端设备根据所述密钥参数和预设的密钥生成算法,生成对应所述应用程序的公钥和私钥。采用本发明实施例的方式,只有在需要进行通信时,才生成密钥,密钥生成的方式为即时的生成方式,密钥不需保存,可以保证密钥的安全性;同时生成的密钥参数中包含有预先存储的参数、用户输入的参数和应用程序的属性参数,这几种参数不易被获取,也可以提高生成的密钥的安全性。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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