一种随机数发生器防注入式攻击的方法与流程

文档序号:19249742发布日期:2019-11-27 20:03阅读:176来源:国知局
一种随机数发生器防注入式攻击的方法与流程

本发明涉及单片机技术领域,特别涉及一种随机数发生器防注入式攻击的方法。



背景技术:

随机数发生器在单片机领域已经得到广泛应用,所有与算法协处理器相关的应用都与随机数发生器密不可分,所有与信息加解密的应用都需要由随机数发生器产生随机数种子,从而协助生成过程密钥、加解密随机因子等等。如果随机数发生器受到注入式攻击,轻则导致参与加密的初始化数据与过程随机数据的随机性丧失,重则导致参与计算的密钥参数被破坏。现有的注入式攻击方法主要是对随机数发生器的数据存储空间进行注入式攻击,通过破坏加存储数据达到扰乱随机数发生器正常工作的目的。



技术实现要素:

本发明的目的,就是针对现有技术的缺陷,提供一种随机数发生器防注入式攻击的方法,对随机数发生器的正常工作进行保护,防止其在遭受到注入式攻击时进入错误工作状态。

为实现上述目的,本发明提供了一种随机数发生器防注入式攻击的方法,包括:

随机数发生器初始化设备状态字为正常状态;

所述随机数发生器获取从上位机发送的工作状态字,并根据所述工作状态字启动防注入工作模式;

当所述工作状态字是生成随机数时,所述随机数发生器向所述上位机请求并获取第一随机长度,所述随机数发生器根据所述第一随机长度进行第一随机数产生处理生成第一随机数,所述随机数发生器根据所述第一随机长度、第一随机数进行第一防注入校验码计算处理生成第一防注入校验码,所述随机数发生器根据所述第一随机长度、第一随机数、第一防注入校验码对第一内部存储空间进行第一防注入数据写处理,当所述第一防注入数据写成功之后所述随机数发生器将所述设备状态字置为正常状态;

当所述工作状态字是读取随机数时,所述随机数发生器对第二内部存储空间进行第一防注入数据读处理并生成第二随机长度、第二随机数、第二防注入校验码,所述随机数发生器根据所述第二随机长度、第二随机数进行第二防注入校验码计算处理生成临时防注入校验码,所述随机数发生器根据所述临时防注入校验码对所述第二防注入校验码进行第二防注入校验码确认处理,当所述第二防注入校验码确认成功之后所述随机数发生器将所述设备状态字置为正常状态。

进一步的,所述方法还包括:

所述第一防注入校验码计算具体为循环冗余校验计算;

所述第二防注入校验码计算具体为循环冗余校验计算。

进一步的,所述方法还包括:

当所述第一防注入数据写失败之后,所述随机数发生器将所述设备状态字置为写失败状态,并启动防注入警报处理流程;

当所述第二防注入校验码确认失败之后,所述随机数发生器将所述设备状态字置为读校验失败,并启动所述防注入警报处理流程。

优选的,所述防注入警报处理流程,具体包括:

所述随机数发生器向所述上位机发送所述设备状态字;

所述随机数发生器清空内部存储数据并启动自检。

进一步的,所述随机数发生器根据所述第一随机长度、第一随机数进行第一防注入校验码计算处理生成第一防注入校验码,具体包括:

所述随机数发生器初始化第一临时数据;

所述随机数发生器对所述第一随机长度与所述第一随机数进行顺序字节拼装,生成所述第一临时数据;

所述随机数发生器对所述第一临时数据进行第一防注入校验码计算处理,生成所述第一防注入校验码。

进一步的,所述随机数发生器根据所述第一随机长度、第一随机数、第一防注入校验码对第一内部存储空间进行第一防注入数据写处理,具体包括:

所述随机数发生器初始化第二临时数据;

所述随机数发生器对所述第一随机长度、第一随机数、第一防注入校验码进行顺序字节拼装,生成所述第二临时数据;

所述随机数发生器根据所述第二临时数据,对所述第一内部存储空间进行数据写处理,并生成第一结果;

当所述第一结果的值为执行成功时,则所述第一防注入数据写成功。

进一步的,所述随机数发生器对第二内部存储空间进行第一防注入数据读处理并生成第二随机长度、第二随机数、第二防注入校验码,具体包括:

所述随机数发生器初始化第三临时数据;

所述随机数发生器对第二内部存储空间进行数据读处理,生成所述第三临时数据;

所述随机数发生器根据所述第三临时数据,提取第二随机数长度字节生成所述第二随机数长度,提取第二随机数字节生成所述第二随机数,提取第二防注入校验码长度字节生成所述第二防注入校验码。

进一步的,所述随机数发生器根据所述第二随机长度、第二随机数进行第二防注入校验码计算处理生成临时防注入校验码,具体包括:

所述随机数发生器初始化第四临时数据;

所述随机数发生器对所述第二随机长度与所述第二随机数进行顺序字节拼装,生成所述第四临时数据;

所述随机数发生器对所述第四临时数据进行第二防注入校验码计算处理,生成所述临时防注入校验码。

进一步的,所述随机数发生器根据所述临时防注入校验码对所述第二防注入校验码进行第二防注入校验码确认处理,具体包括:

所述随机数发生器判断所述临时防注入校验码是否与所述第二防注入校验码相等,如果所述临时防注入校验码等于所述第二防注入校验码,则所述第二防注入校验码确认成功;如果所述临时防注入校验码不等于所述第二防注入校验码,则所述第二防注入校验码确认失败。

本发明提供的一种随机数发生器防注入式攻击的方法,在生成随机数时,使用第一随机数长度与生成后的第一随机数进行组装,并以此为校验码计算方法的输入数据,此处涉及的校验码计算方法具体为循环冗余校验计算方式,最后随机数发生器将第一随机数长度、第一随机数与第一校验码作为一个数据对象整体写入存储空间。在读出随机数时,先从存储空间读出临时数据并按照随机数长度、随机数与校验码的顺序分离出第二随机数长度、第二随机数与第二校验码,并根据校验码生成的校验计算方式对与第二校验码进行校验。校验通过则说明随机数发生器的存储空间未受到注入式攻击,数据完整性未受到破坏;反之则说明数据完整性出现问题,在此情况下,随机数发生器会立即向上位机做出预警,强制清除内部数据并启动自检。

附图说明

图1为本发明实施例一提供的一种随机数发生器防注入式攻击的方法的示意图。

图2为本发明实施例二提供的一种随机数发生器防注入式攻击的方法的示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例一,如图1为本发明实施例一提供的一种随机数发生器防注入式攻击的方法的示意图所示,方法包括以下步骤:

步骤11,随机数发生器初始化设备状态字为正常状态。

步骤12,随机数发生器获取从上位机发送的工作状态字。

步骤13,随机数发生器根据工作状态字启动防注入工作模式,当工作状态字是生成随机数时转至步骤131;当工作状态字是读取随机数时转至步骤141。

步骤131,随机数发生器向上位机请求并获取第一随机长度。

步骤132,随机数发生器根据第一随机长度进行第一随机数产生处理生成第一随机数。

步骤133,随机数发生器根据第一随机长度、第一随机数进行第一防注入校验码计算处理生成第一防注入校验码。

步骤134,随机数发生器根据第一随机长度、第一随机数、第一防注入校验码对第一内部存储空间进行第一防注入数据写处理。

步骤135,随机数发生器当第一防注入数据写成功之后将设备状态字置为正常状态,转至步骤15。

步骤141,随机数发生器对第二内部存储空间进行第一防注入数据读处理并生成第二随机长度、第二随机数、第二防注入校验码.

步骤142,随机数发生器根据第二随机长度、第二随机数进行第二防注入校验码计算处理生成临时防注入校验码。

步骤143,随机数发生器根据临时防注入校验码对第二防注入校验码进行第二防注入校验码确认处理。

步骤144,随机数发生器当第二防注入校验码确认成功之后将设备状态字置为正常状态,转至步骤15。

步骤15,随机数发生器当前处理流程执行陈功,清空内部缓存与内存数据,进入对上位机指令接收的轮候状态。

本发明实施例二,如图2为本发明实施例二提供的一种随机数发生器防注入式攻击的方法的示意图所示,方法包括以下步骤:

步骤111,随机数发生器初始化设备状态字为正常状态。

步骤112,随机数发生器获取从上位机发送的工作状态字。

步骤113,随机数发生器工作状态字是否为生成随机数,如果工作状态字是生成随机数时转至步骤1131;如果工作状态字不为生成随机数则转至步骤114。

步骤1131,随机数发生器向上位机请求并获取第一随机长度。

步骤1132,随机数发生器根据第一随机长度进行第一随机数产生处理生成第一随机数。

此处,第一随机数长度即是第一随机数的十六进制数据长度值。

步骤1133,随机数发生器根据第一随机长度、第一随机数进行第一防注入校验码计算处理生成第一防注入校验码,

具体包括:步骤a1,随机数发生器初始化第一临时数据;

步骤a2,随机数发生器对第一随机长度与第一随机数进行顺序字节拼装,生成第一临时数据,

例如,第一随机数长度的值为0x06,第一随机数的值为0xf1f2f3f4f5f6,则第一临时数据的值为0x06f1f2f3f4f5f6;

步骤a3,随机数发生器对第一临时数据进行第一防注入校验码计算处理,生成第一防注入校验码。

此处,第一防注入校验码计算采用循环冗余校验计算方式,对第一临时数据进行数据链式相关校验,只要被用于计算的原始数据受到破坏而发生值变化,则产生的防注入校验码应与原校验码不同,这在读取的时候会做校验确认,也即是通过这样的方式,随机数处理器就实现了对自身存储数据的防注入攻击检验功能。

步骤1134,随机数发生器根据第一随机长度、第一随机数、第一防注入校验码对第一内部存储空间进行第一防注入数据写处理。

此处,随机数发生器在做数据存储时,不仅仅把生成的随机数进行单一存储,随机数发生器采用的是数据队列存储方式,即,将与产生校验码的所有相关数据与随机数本身还有校验码作为一个数据整体进行保存。在读取的时候,也按照同样的数据结构进行读出后提取。

例如:此处保存的结构为第一随机长度+第一随机数+第一防注入校验码,则存储空间内的数值是0x06f1f2f3f4f5f6+校验码。

步骤1135,随机数发生器判断第一防注入数据写是否执行成功,如果第一防注入数据写成功,转至步骤1136;如果第一防注入数据写失败,转至步骤420。

步骤1136,将设备状态字置为正常状态,转至步骤115。

步骤114,随机数发生器判断工作状态字是否为读取随机数,如果工作状态字是读取随机数时转至步骤1141;如果工作状态字不为读取随机数则转至步骤410。

步骤1141,随机数发生器对第二内部存储空间进行第一防注入数据读处理并生成第二随机长度、第二随机数、第二防注入校验码。

此处读出的数据结构是第二随机长度+第二随机数+第二防注入校验码,例如读出数据为0x0ff1f2f3f4f5f6f7f8f9fafbfcfdfeffxxxx,则表示第二随机长度的值为0x0f,第二随机数的值为0xf1f2f3f4f5f6f7f8f9fafbfcfdfeff,第二验证码的值为xxxx。

步骤1142,随机数发生器根据第二随机长度、第二随机数进行第二防注入校验码计算处理生成临时防注入校验码。

此处,第二防注入校验码计算采用循环冗余校验计算方式,参考步骤1133的步骤a3内容,因为读出的第二防注入校验码是使用第二随机数长度与第二随机数拼装生成的临时数据经过计算产生的,则使用同样的方法对第二随机数长度与第二随机数再做一次校验计算生成的临时防注入校验码的值一定是于读出的第二防注入校验码的值相等。如果不等,则说明随机数发生器的存储空间内容受到修改,随机数发生器可能遭受到了注入式攻击。

步骤1143,随机数发生器根据临时防注入校验码对第二防注入校验码进行第二防注入校验码确认处理。

步骤1144,随机数发生器判断第二防注入校验码确认是否执行成功,如果第二防注入校验码确认成功,转至步骤1145;如果第二防注入校验码确认失败,转至步骤430。

步骤1145,将设备状态字置为正常状态,转至步骤115。

步骤115,随机数发生器当前处理流程执行陈功,清空内部缓存与内存数据。进入对上位机指令接收的轮候状态。

步骤410,将设备状态字置为参数错误并退出随机数处理流程,向上位机回复错误信息:参数错误。

一般导致出现该类错误都是因为上位机发送至随机数发生器的工作状态字发生解析错误,解析出的值超过随机数发生器正常处理流程范围。

步骤420,将设备状态字置为写失败并启动防注入警报处理流程,向上位机回复错误信息:写失败。

一般导致出现该类错误都是因为随机数发生器在对内部存储进行数据写入时发生写错误。

步骤430,将设备状态字置为读校验失败并启动防注入警报处理流程,向上位机回复错误信息:读校验失败。

一般导致出现该类错误都是因为随机数发生器在读取数据时对所读取的数据进行防注入校验检查时发现数据已经发生变化。

本发明提供的一种随机数发生器防注入式攻击的方法,在生成随机数时,使用第一随机数长度与生成后的第一随机数进行组装,并以此为校验码计算方法的输入数据,此处涉及的校验码计算方法具体为循环冗余校验计算方式,最后随机数发生器将第一随机数长度、第一随机数与第一校验码作为一个数据对象整体写入存储空间。在读出随机数时,先从存储空间读出临时数据并按照随机数长度、随机数与校验码的顺序分离出第二随机数长度、第二随机数与第二校验码,并根据校验码生成的校验计算方式对与第二校验码进行校验。校验通过则说明随机数发生器的存储空间未受到注入式攻击,数据完整性未受到破坏;反之则说明数据完整性出现问题,在此情况下,随机数发生器会立即向上位机做出预警,强制清除内部数据并启动自检。基于本发明方法,可对随机数发生器的正常工作进行保护,防止其在遭受到注入式攻击时进入错误工作状态。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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