热词 | 素数 素性 p2 密钥 p1 保密 modulo 密码学 测试 算法 | ||
专利类型 | 发明公开 | 法律事件 | 公开; 实质审查; 申请权转移; 授权; 未缴年费; |
专利有效性 | 失效专利 | 当前状态 | 权利终止 |
申请号 | CN200580043955.4 | 申请日 | 2005-12-22 |
公开(公告)号 | CN101107807A | 公开(公告)日 | 2008-01-16 |
申请人 | 萨热姆防务安全公司; | 申请人类型 | 企业 |
发明人 | 埃马纽埃尔·多泰克斯; 埃尔韦·夏巴纳; | 第一发明人 | 埃马纽埃尔·多泰克斯 |
权利人 | 萨热姆防务安全公司 | 权利人类型 | 企业 |
当前权利人 | 萨热姆安全公司,申请人地址:法国巴黎 | 当前权利人类型 | 企业 |
省份 | 当前专利权人所在省份: | 城市 | 当前专利权人所在城市: |
具体地址 | 当前专利权人所在详细地址:法国巴黎 | 邮编 | 当前专利权人邮编: |
主IPC国际分类 | H04L9/14 | 所有IPC国际分类 | H04L9/14 ; H04L9/30 |
专利引用数量 | 0 | 专利被引用数量 | 1 |
专利权利要求数量 | 16 | 专利文献类型 | A |
专利代理机构 | 北京英赛嘉华知识产权代理有限责任公司 | 专利代理人 | 余朦; 王艳春; |
摘要 | 本 发明 涉及一种方法,包括:在 电子 元件中产生用于特殊 密码学 算法 的密钥,在电子元件中存储素数P,以及产生至少一个保密的素数。步骤a中,随机选择(11)其和等于数p′的两整数p1′和p2′;步骤b基于存储在 存储器 中的所述素数P与所述数p1′和p2′的组合,确定(12)所述数p′是否为素数;在第三步c中,如果确定数p′为素数,则将所述数p1′和p2′存储(14)至所述电子元件中,否则重复步骤a和b。 | ||
权利要求 | 1.一种在电子元件(21)中产生用于密码学算法的密钥的方法, 其中,在所述电子元件的存储器中存储有素数P,所述方法包括产生 至少一个保密素数的操作,所述操作包括: |
||
说明书全文 | 本发明涉及密码学领域,尤其涉及密码学算法中密钥的保密。特别地,密码学算法可对数据进行加密和解密。这种算法还可用 于许多其它的应用中。具体地,密码学算法可用于签名或用于鉴别某 些信息。密码学算法还可用于时间戳领域。 这种算法通常包括一连串的几个操作或计算,它们连续用于待加 密的数据项而获得加密的数据项,或用于加密的数据项而获得解密的 数据项。 在这些算法中,有一些基于使用保密密钥,而另一些基于公共密 钥和保密密钥的混合使用。 下面通过示例说明这些算法在加密和解密中的应用。 根据公共密钥密码学算法在这些应用中的一般原则,公共密钥是 全体人员都可得到的,并且所有人都可发送使用公共密钥加密的数据, 但是,只有相应的保密密钥的持有者才能解密这些数据。 公共密钥密码学算法的安全性在于,知道公共密钥并不能获得相 应的保密密钥,因此并不能解密数据。 因此,被称为RSA(代表其设计者Rivest、Shamir和Adelman) 的公共密钥加密处理方法是公知的。该处理方法是本领域中最老的、 并使用最广泛的方法之一。 根据该方法,选择表示为p、q、e和d的四个数。数p和q是两 个不同的素数。它们随机产生。 数d和e满足下式: e*d=1 modulo(p-1)(q-1) 则可根据本领域技术人员公知的计算,基于e、p和q使用Euclid 算法产生d。 然后,由数p和q的乘积得到的数标记为n(模数)。 因此,一对n和e构成了公共密钥,而一对n和d构成了私有密 钥。 然后,发送对应于从0到n-1范围内的整数M的数据项,相应 的待发送的编码数C由下式计算: C=Me modulo n 当接收到编码消息C时,私有密钥的持有者计算中间值D: D=Cd modulo n 然后,根据下式恢复原始明文消息M: D=Mde=M modulo n 因此,根据上面的描述可知这种公共密钥算法基于素数的产生。 更准确地说,例如RSA的公共密钥算法可要求产生非常大的素数。因 此,产生将近500个数目字的素数可能是必要的。 在RSA类型的算法中,应该注意到模n属于公共密钥并因此是公 知的,而d必须是保密的以保证算法的安全性。但是,数d是基于数 p和q得到的。从而,为保证这种算法的安全性,保持数p和q的保 密性是重要的。 通常,对于电子卡的密码软件,这些密钥在保护不受任何攻击的 环境中产生,例如在执行密码学算法的电子元件的制造过程中的工厂。 因此,在这样的条件下,数p和q可简单操作,而完全没有受到 目标在于确定其值从而破坏算法安全性的攻击的风险。因此,用于产 生密钥的这些不同的方法通常包括对数p和q的操作。 在这样的条件下,可使用本领域技术人员公知的各种方法产生素 数。 然而,对于某些应用,需要在可能存在攻击的外部环境中产生这 些密钥,所述攻击的目的在于破坏密码学算法使用的密钥的保密性。 现在已知许多类型的攻击。 因此,某些攻击基于在某些加密步骤执行中检测到的信息泄漏。 这些攻击通常基于密码学算法在对数据项处理过程中检测到的信息泄 漏和在对密钥处理过程中检测到的信息泄漏之间的相关性(通过分析 电流消耗、电磁辐射、计算时间等来进行攻击)。 在这种条件下,采用适当的预防措施以保护之前输入的数p和q 的保密性是重要的。 已知一种产生数p和q并可保护其保密性的方法。在Dan Boneh 和Matthew Franklin所写的“共享RSA密钥的高效产生方法(Efficient Generation of Shared RSA keys)”一文中明确提出数p和q可同时保密 地产生。 这种方法的目标之一是:在多个参与者之间以共享的方式产生素 数。因此,参与者执行使其产生两个素数的计算而并不知道这两个素 数,参与者只知道这两个素数的积。 根据这种方法,随机并同时地选择数p和q。然后基于其乘积确 定被选的两个数是否是素数。为保护数p和q的保密性,不直接操作 这些数。 具体并更准确地说,随机选择四个整数pa、pb、qa和qb,数p为 数pa和数pb之和,数q为数qa和数qb之和。 然后通过对数pa、pb、qa和qb进行操作,基于得到的乘积验证p 和q是否是素数。 当p和q不是素数时,重新随机选择两个另外的数p和q,直到 所选p和q被确定是素数。 这种解决方法在计算上非常不实用,并在很大程度上降低了用于 产生密钥的方法的性能。 本发明目的在于提出一种可克服这些缺陷的解决方案。 本发明一方面提出了一种在电子元件中为密码学算法产生密钥的 方法,其中素数P存储在该电子元件的存储器中。 所述方法包括产生至少一个保密的素数的操作,该操作可包括: a随机选择两个整数p1′和p2′,其和为数p′; b基于存储在存储器中的素数P与所述数p1′和p2′的组合,确定 所述p′是否是素数; c如果确定该p′是素数,则将p1′和p2′存储到该电子元件的存储器 中;否则重复步骤a和b。 通过这种方法,素数p′可保密并高效地产生。 特别地,由此产生的数p′在本方法的各步骤中并不被直接操作, 而仅有整数p1′和p2′被操作。从而,不可能在产生素数p′的步骤中通过 对算法进行攻击而破坏数p′的保密性。 此外,由于可连续产生多个素数,所以这种素数产生方法是高效 的。但是,如“共享RSA密钥的高效产生方法”文中提出的,随机选 择一个素数的可能性要大于同时随机选择多个素数。 当确定的算法需要产生一个或多个保密的素数时,根据本发明的 这种方法可有利地用于在电子元件内为所述的密码学算法产生密钥的 各种方法中。 步骤b可通过执行基于整数与素数的组合而确定该整数的素性的 任何素性测试实现。 通常,这种素性测试是概率性算法。其能够以很高的概率确定一 个数为素数。 在本发明的一个实施方案中,将第一整数p1和第二整数p2确定为, 使存储在存储器中的素数P等于确定的整数p1和p2之和。步骤b则基 于对p1、p2、p1′和p2′的操作实现。 因此,在产生保密的素数p′的过程中,优选地在对数p′进行素性 测试的阶段,对素数P和数p′都不进行操作,由此趋向于使在此产生 步骤的过程中对于数p′的保密性的潜在攻击是徒劳的。 第一和第二整数p1和p2可随机确定。 步骤b通过基于Solovay-Strassen类型测试和Miller-Rabin类型测 试的组合的素性测试实现。因此,所述素性测试可例如基于如Dan Boneh和Matthew Franklin在“共享RSA密钥的高效产生方法(Efficient Generation of Shared RSA keys)”一文的第三部分“分布式素性测试 (distributed primality test)”中描述的素性测试。具体地,该素性测试 一方面基于Solovay-Strassen素性测试,另一方面基于Rabin-Miller素 性测试。Solovay-Strassen素性测试在由R.Solovay和V.Strassen于 1977年所著的“关于素性的快速monte carlo测试(A fast monte carlo test for primality)”一文中描述。Rabin-Miller素性测试在由M.Rabin 于1980年所著的“用于测试素性的概率算法(Probabilistic algorithm for testing primality)”一文中描述。 在本发明的另一实施方案中,通过在步骤b之前加入以下步骤, 使这种方法的性能增强: a1.基于在数p1′和p2′上执行的操作,确认数p′是否不能被一个或 多个确定的素数整除; 如果p′可被确定的素数之一整除,则重复步骤a和a1。 当希望产生大素数时,步骤a1是更有益的。特别地,在更难以执 行的步骤b之前执行这一步骤,而非常简单地排除有些数。 在本发明的一个实施方案中,对于绝对大于1的素数y,步骤a1 包括以下步骤: -从0到y-1的整数范围中随机选择第一整数c,并从1到y-1 的整数范围中随机选择第二整数d; -根据下式确定数u: u=c+dp1′modulo y; -根据下式确定数v: v=c-dp2′modulo y; -确定p是否能作为数u与数v之差的函数被y整除。 有些密码学算法需要产生多个保密的素数。在这种情况下,可很 容易地根据需要多次使用本发明实施方案中的方法产生素数。因此可 通过重复步骤a到c,连续产生至少两个素数,用来构造一对非对称 密钥。 本发明的另一方面提出了一种电子元件,用于产生用于确定密码 学算法的密钥。 该元件包括: -选择单元,用于随机选择其和为数p′的两个整数p1′和p2′; -存储器,用于存储素数P,并且在所述数p1′和p2′之和被确定为 素数时,存储数p1′和p2′; -判定单元,用于基于存储在存储器中的素数P与所述p1′和p2′ 的组合,确定数p′是否为素数。 选择单元可确定第一整数p1和第二整数p2,以使得存储在存储器 中的素数P等于所述确定的p1′和p2′的和;判定单元可基于在数p1、 p2、p1′和p2′上执行的操作,确定p′是否是整数。 在本发明的一个实施方案中,选择单元随机确定第一和第二整数 p1和p2。 判定单元优选地执行基于Solovay-Strassen类型测试与 Miller-Rabin类型测试的组合的素性测试,例如“共享RSA密钥的高 效产生方法”一文中提出的素性测试。 优选地,基于在数p1′和p2′上执行的操作,选择单元进行预先的检 验,以验证p′是否不能被一个或多个确定的素数整除。 这种情况下,如果p′可被确定的素数整除,选择单元则重复对两 个整数p1′和p2′的随机选择。 在本发明的一个实施方案中,为对绝对大于1的素数进行预先的 检验,选择单元进一步包括: -用于从0到y-1的整数范围内随机选择第一整数c和第二整数 d的装置; -用于根据下式确定数u的装置: u=c+dp1′modulo y; -用于根据下式确定数v的装置: v=c-dp2′modulo y; -用于确定p是否能作为数u与数v之差的函数被y整除的装置。 本发明的其它方面、目的和有益效果将对其实施方案的描述中表 现。 本发明将通过附图更好地理解。 图1示出了根据本发明的一个实施方案的、产生密钥的方法的主 要步骤;以及 图2示出了根据本发明的一个实施方案的电子元件。 在本发明的一个实施方案中,用于密码学算法的产生密钥的方法 趋向于在电子元件中执行。 电子元件在存储器中预先地存储被表示为P的素数。 图1示出了根据本发明的一个实施方案的、产生密钥的方法的主 要步骤。 步骤11中,随机选择被表示为p1′和p2′的两个整数。然后在步骤 12中,确定所述两个被选整数之和(用p′表示)是否为素数。该步骤 以保护数p′的保密性的方法执行。因此,优选地,在这一步骤中应该 注意对数p′不进行操作。数p′的素性的判定由在数p1′和p2′上执行的操 作确定。 然后,在步骤13中,如果数p′检测为不是素数,则重复之前的步 骤11和12。 另一方面,如果检测出p′为素数,则将数p1′和p2′存至存储器中。 因此可每次重复所述方法,以产生要求的保密素数。 步骤12中,可执行可确定数是否为两个素数的组合的任何素性测 试,假设该测试不包括可破坏该乘积的两个数之一的保密性的任何操 作。这种素性测试是本领域技术人员容易实现的。 有利地,基于素数P与随机选择的数p1′和p2′之和p′的乘积n,这 种素性测试可确定数p′是否为素数。因此该测试包括对数p1′和p2′的操 作,而不直接操作数p′。 因此,素性测试可例如基于Solovay-Strassen类型的测试和 Miller-Rabin类型的测试的组合,例如“共享RSA密钥的高效产生方 法”一文中提出的素性测试。 在这种情况下,P被分解为两个数p1和p2。该分解可以随机或非 随机的方式执行。 这种测试可确定数m是否是两素数P和p′的乘积,其中m满足下 式: m=(p1+p2)*(p1′+p2′) 其中P=p1+p2且p′=p1′+p2′。 因此,不用直接对数P和p′进行操作,就可确定数P和p′是否是 素数。 应该注意到,在这种应用中,数m可不带风险地操作,因为其不 是保密的。 如在“共享RSA密钥的高效产生方法”一文中详细描述的那样, 假设在此测试中,各数满足以下特征: p1=3 mod 4且p1′=3 mod 4 p2=0 mod 4且p2′=0 mod 4 为了不允许对数p′的保密性有任何的攻击,在此步骤中,操作有 利地在数p1、p2、p1′和p2′上执行。 首先,在1到m-1的整数范围内随机选择数a。 因此选择与数a相关的Jacobi符号,记为并在之后进行计算。 然后,如果计算出的Jacobi符号不为1,则重复随机选择数a的 步骤。 如果该Jacobi符号等于1,则继续以下步骤。 对数m、p1、p2′执行第一中间计算,并由下式得到的u: 然后,对数m、p1、p2执行第二中间计算,并由下式得到的v: 然后执行测试以确定是否满足下式: u=+/-v mod m 如果满足上式,则可以确定的概率推断出m是两整数P和p′的乘 积。 在本发明的一个实施方案中,P是事先存储在电子元件存储器中 的素数。从而,通过应用这种类型的测试,可不用直接对数p′进行操 作而确定p′是否是素数。 在本发明的一个实施方案中,为增加在其和为整数的数p1′和p2′ 上执行步骤12的概率,可在步骤12之前先执行以简单高效的方式事 先排除一些数的步骤。 因此可考虑一个素数集。然后在步骤12之前,希望确定数p′是否 能被素数y整除。为此,从0到y-1的整数范围内随机选择整数c, 并从1到y-1的整数范围内随机选择整数d。 然后,执行以下两个中间计算: u=c+dp1′modulo y v=c-dp2′modulo y 然后测试是否满足下式: u-v=0 modulo y 当满足上式时,可推断数p′可被y整除。 图2示出了根据本发明的一个实施方案的电子元件。 元件21包括选择单元22,用于随机选择其和为数p′的两整数p1′ 和p2′。 元件21进一步包括存储器23,用于存储素数P,并且在所述数 p1′和p2′之和被确定为素数时,用于存储数p1′和p2′。 元件21还包括判定单元,用于基于存储在存储器中的素数P与所 述p1′和p2′的组合,确定数p′是否为素数。 因此得到了一种用于以高效和保密的方式产生一个素数或连续多 个素数的密钥产生方法。 |