热词 | 素数 奇数 素性 运算 rsa 生成 硬件 数据 调用 计算 | ||
专利类型 | 发明授权 | 法律事件 | 公开; 实质审查; 授权; 权利转移; |
专利有效性 | 有效专利 | 当前状态 | 授权 |
申请号 | CN201510656518.5 | 申请日 | 2015-10-12 |
公开(公告)号 | CN105373366B | 公开(公告)日 | 2018-11-09 |
申请人 | 武汉瑞纳捷电子技术有限公司; | 申请人类型 | 企业 |
发明人 | 龚明杨; 陈毅成; 吴旭峰; 张明宇; | 第一发明人 | 龚明杨 |
权利人 | 武汉瑞纳捷电子技术有限公司 | 权利人类型 | 企业 |
当前权利人 | 武汉瑞纳捷半导体有限公司 | 当前权利人类型 | 企业 |
省份 | 当前专利权人所在省份:湖北省 | 城市 | 当前专利权人所在城市:湖北省武汉市 |
具体地址 | 当前专利权人所在详细地址:湖北省武汉市东湖开发区关山一路1号华中曙光软件园商界2栋304-4号 | 邮编 | 当前专利权人邮编:430073 |
主IPC国际分类 | G06F7/72 | 所有IPC国际分类 | G06F7/72 |
专利引用数量 | 3 | 专利被引用数量 | 0 |
专利权利要求数量 | 8 | 专利文献类型 | B |
专利代理机构 | 深圳市科进知识产权代理事务所 | 专利代理人 | 宋鹰武; |
摘要 | 本 发明 适用于信息安全技术领域,提供了一种生成大素数的方法及装置,所述方法包括:随机生成一个大奇数;以第一小素数对所述大奇数进行试除获得初筛数据;第一次的小素数试除结束后,继续执行其它大奇数的试除,同时,调用RSA 硬件 的模幂运算单元对所述初筛数据进行至少一次模幂运算直至获得大素数。本发明,第一次的小素数试除单独完成,接下来并行计算模幂运算和小素数试除,如此反复直到最后的素性判定通过,大素数生成的时间差不多就是模幂硬件计算的时间,不会单独消耗时间运算小素数试除,减少总体大素数生成时间,提高了大素数生产的效率。 | ||
权利要求 | 1.一种生成大素数的方法,其特征在于,所述方法包括: |
||
说明书全文 | 一种生成大素数的方法及装置技术领域[0001] 本发明属于信息安全技术领域,尤其涉及一种生成大素数的方法及装置。 背景技术[0002] RSA(Rivest-Shamir-Adleman)公钥密码体制由于实现了数字签名、信息验证和身份认证,现有很多场合都采用RSA算法进行加密,如SIM卡、智能卡、加密芯片、安全芯片等产品中,RSA应用需要一对密钥,并且密钥对生成所消耗的时间占据加解密的绝大部分,因此必须解决RSA密钥对在使用中的生成问题,而密钥对的生成的核心则是RSA大素数的生成。 [0003] 目前,RSA大素数的生成流程就大概有三个步骤,随机大奇数的产生,小素数试除,Miller-Rabin素性测试,如流程图1所示,其中,用Miller-Rabin素性测试来生成RSA大素数,在Miller-Rabin素性测试之前,一般先用小素数3、5和7试除,由于试除的计算量及存储空间也不能忽略,综合考虑一般都是用几个小素数进行试除以排除奇合数,进而加快素数的生成。 [0004] 然而,现在的大素数生成算法里,都是先经过小素数试除,筛除部分明显的非素数,然后再进行素性判定,上面步骤中最耗时的部分就是小素数试除和模幂运算,由于最初产生的大奇数位数很大,而且每次判定非素数之后只加2,因而要进行上面步骤中的试除和素性判定的次数会非常的多,那么这种串行的方式会很浪费时间。 发明内容[0006] 一方面,提供一种生成大素数的方法,所述方法包括: [0007] 随机生成一个大奇数; [0008] 以第一小素数对所述大奇数进行试除获得初筛数据; [0010] 进一步地,所述以第一小素数对所述大奇数进行试除获得初筛数据之后还包括: [0011] 如果以第一小素数对所述大奇数试除判断所述大奇数为非素数,则所述大奇数加2之后继续进行第一小素数的试除。 [0012] 进一步地,所述第一小素数至少包括3、5和7。 [0013] 进一步地,所述调用RSA硬件的模幂运算单元对所述初筛数据进行至少一次模幂运算直至获得大素数执行的同时还包括: [0014] 以第二小素数对所述大奇数进行试除,如果以第二小素数对所述大奇数试除判断所述大奇数为非素数,则所述大奇数加2之后继续进行第一小素数的试除;如果以第二小素数对所述大奇数试除通过,则可判断所述大奇数为素数,等待模幂运算结束。 [0015] 进一步地,所述第二小素数至少包括11、13和17。 [0016] 另一方面,提供一种生成大素数的装置,所述装置包括: [0017] 数据产生单元,用于随机生成一个大奇数; [0018] 第一试除单元,用于以第一小素数对所述大奇数进行试除获得初筛数据; [0019] 模幂运算单元,用于第一次的小素数试除结束后,继续执行其它大奇数的试除,同时,调用RSA硬件的模幂运算单元对所述初筛数据进行至少一次模幂运算直至获得大素数。 [0020] 进一步地,所述装置还包括: [0021] 数据更新单元,用于如果以第一小素数对所述大奇数试除判断所述大奇数为非素数,则所述大奇数加2之后继续进行第一小素数的试除。 [0022] 进一步地,所述第一小素数至少包括3、5和7。 [0023] 进一步地,所述装置还包括: [0024] 第二试除单元,用于以第二小素数对所述大奇数进行试除,如果以第二小素数对所述大奇数试除判断所述大奇数为非素数,则所述大奇数加2之后继续进行第一小素数的试除;如果以第二小素数对所述大奇数试除通过,则可判断所述大奇数为素数,等待模幂运算结束。 [0025] 进一步地,所述第二小素数至少包括11、13和17。 [0026] 在本发明实施例,随机生成一个大奇数;以第一小素数对所述大奇数进行试除获得初筛数据;第一次的小素数试除结束后,继续执行其它大奇数的试除,同时,调用RSA硬件的模幂运算单元对所述初筛数据进行至少一次模幂运算直至获得大素数,本发明,第一次的小素数试除是最早并且单独完成,接下来并行计算第一次模幂和第二次小素数试除,接下来并行计算第二次模幂和第三次小素数试除,如此反复直到最后的素性判定通过,大素数生成的时间差不多就是模幂硬件计算的时间,不会单独消耗时间运算小素数试除,减少总体大素数生成时间,提高了大素数生产的效率。附图说明 [0027] 图1是背景技术中现有生成大素数的方法的实现流程图; [0028] 图2是本发明实施例一提供的生成大素数的方法的实现流程图; [0029] 图3是本发明实施例一提供的生成大素数的方法的具体实现流程图,其中添加了“流水计算模幂及小素数试除”的步骤; [0030] 图4是本发明实施例一提供的试除和模幂的流水结构示意图; [0031] 图5是图3提到的“流水计算模幂及小素数试除”的具体实现流程图,包括第二小素数试除的过程; [0032] 图6是本发明实施例二提供的生成大素数的装置的具体结构框图。 具体实施方式[0033] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。 [0034] 在本发明实施例中,随机生成一个大奇数;以第一小素数对所述大奇数进行试除获得初筛数据;第一次的小素数试除结束后,继续执行其它大奇数的试除,同时,调用RSA硬件的模幂运算单元对所述初筛数据进行至少一次模幂运算直至获得大素数。 [0035] 以下结合具体实施例对本发明的实现进行详细描述: [0036] 实施例一 [0037] 图2示出了本发明实施例一提供的生成大素数的方法的实现流程,详述如下: [0038] 在步骤S201中,随机生成一个大奇数。 [0040] 在步骤S202中,以第一小素数对所述大奇数进行试除获得初筛数据。 [0041] 在本实施例中,所述第一小素数至少包括3、5和7,其中,图3所示了以3、5和7为第一小素数的生成大素数的方法流程图。所述初筛数据为以第一小素数对所述大奇数进行试除排除合数之后的数据。以第一小素数对所述大奇数进行试除获得初筛数据,如果以第一小素数对所述大奇数试除判断所述大奇数为非素数,则所述大奇数加2之后继续进行第一小素数的试除,否则执行步骤S203。 [0042] 在步骤S203中,第一次的小素数试除结束后,继续执行其它大奇数的试除,同时,调用RSA硬件的模幂运算单元对所述初筛数据进行至少一次模幂运算直至获得大素数。 [0043] 在本实施例中,模幂运算则调用RSA硬件的模幂运算单元实现,因为每次调用Miller-Rabin素性测试之前都需要通过第一小素数试除排除部分显而易见的合数,因而他们就有了一前一后的关系,而为了让他们能够并行的执行,运用了流水的概念,第一次的小素数试除是最早并且单独完成,接下来并行计算第一次模幂和第二次小素数试除,接下来并行计算第二次模幂和第三次小素数试除,如此反复直到最后的素性判定通过,如图4所示,那么大素数生成的时间差不多就是模幂硬件计算的时间,不会单独消耗时间运算小素数试除,并且由于模幂硬件计算的时间通常大于软件进行小素数3,5,7试除的时间,减少了总体大素数生成时间,提高了效率。 [0044] 优选的,以第二小素数对所述大奇数进行试除,如果以第二小素数对所述大奇数试除判断所述大奇数为非素数,则所述大奇数加2之后继续进行第一小素数的试除;如果以第二小素数对所述大奇数试除通过,则可判断所述大奇数较大可能为素数,等待模幂运算结束。所述第二小素数至少包括11、13和17。由于硬件计算一次模幂的时间,一般比第一小素数试除的时间要长,因而可以在剩余的模幂运算时间内,进行小素数11,13,17等试除进一步排除部分合数,具体流程图如图5所示,这样会减少进行模幂运算的大奇数的个数,从而进一步减少总体大素数生成时间。 [0045] 本实施例,小素数试除部分由CPU通过软件编程实现,而模幂运算则调用RSA硬件的模幂运算单元实现,其中,第一次的小素数试除是最早并且单独完成,接下来并行计算第一次模幂和第二次小素数试除,接下来并行计算第二次模幂和第三次小素数试除,如此反复直到最后的素性判定通过,大素数生成的时间差不多就是模幂硬件计算的时间,不会单独消耗时间运算小素数试除,减少总体大素数生成时间,提高了大素数生产的效率。 [0046] 实施例二 [0047] 图6示出了本发明实施例二提供的生成大素数的装置的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。在本实施例中,该装置包括:数据产生单元51、第一试除单元52、模幂运算单元53、数据更新单元54和第二试除单元55。 [0048] 其中,数据产生单元51,用于随机生成一个大奇数; [0049] 第一试除单元52,用于以第一小素数对所述大奇数进行试除获得初筛数据; [0050] 模幂运算单元53,用于对前一次筛选后的数据进行模幂运算从而进行素性判定。 [0051] 进一步地,所述装置还包括: [0052] 数据更新单元54,用于如果以第一小素数对所述大奇数试除判断所述大奇数为非素数,则所述大奇数加2之后继续进行第一小素数的试除。 [0053] 进一步地,所述第一小素数至少包括3、5和7。 [0054] 进一步地,所述装置还包括: [0055] 第二试除单元55,用于以第二小素数对所述大奇数进行试除,如果以第二小素数对所述大奇数试除判断所述大奇数为非素数,则所述大奇数加2之后继续进行第一小素数的试除;如果以第二小素数对所述大奇数试除通过,则可判断所述大奇数较大可能为素数,等待模幂运算结束。 [0056] 进一步地,所述第二小素数至少包括11、13和17。 [0057] 本实施例,小素数试除部分由CPU通过软件编程实现,而模幂运算则调用RSA硬件的模幂运算单元实现,其中,第一次的小素数试除是最早并且单独完成,接下来并行计算第一次模幂和第二次小素数试除,接下来并行计算第二次模幂和第三次小素数试除,如此反复直到最后的素性判定通过,大素数生成的时间差不多就是模幂硬件计算的时间,不会单独消耗时间运算小素数试除,减少总体大素数生成时间,提高了大素数生产的效率。 [0058] 本发明实施例提供的装置可以应用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。 [0059] 值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。 [0060] 另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。 |