电子生成设备的制作方法

文档序号:11635416阅读:155来源:国知局
电子生成设备的制造方法与工艺

本发明涉及电子生成设备、电子生成方法、计算机程序以及计算机可读介质。



背景技术:

在白箱密码术中以及更一般地在软件混淆(obfuscation)中,通常在编码值而非明文值上执行演算。如果在编码的值而非在明文值自身上执行演算,混淆的软件的逆向工程更加困难。

在编码之后,像加法或乘法那样的常规运算可能不再使用计算机内置基元(primitives)执行。编码值的简单相加在正常情况下并不导致这些值的相加的编码。这同样适用于乘法。在公式中:对于大多数xye表示编码函数。

此问题的解决方案是引入加法(a)和乘法(m)表。所述表把两个编码值当作输入,并且产生一个编码值作为对应于加法或乘法运算的编码的输出。所述表可以被定义为:。这些表允许直接在编码值上执行算术。

使用表的混淆加法和乘法遭受至少两个缺陷。首先,所述表可能变得相当大。如果xy被表示为l位,每个表需要22ll位。

其次,这样的大表可能在软件中容易被发现。更坏的是,所述表可能仍然被标识为加法或乘法运算,即使它们被编码了;例如凭借在编码中保留的这些函数的属性。例如,乘法表满足。攻击者可以使用此属性和类似属性来猜测所述表表示哪种运算。



技术实现要素:

在相同的申请人的先前申请中,提出了执行混淆算术的改进方式。该先前申请以标题“electroniccalculatingdeviceforperformingobfuscatedarithmetic”被提交给欧洲专利局(epo),申请日:30-09-2014,申请号:14186951.1。该先前申请通过整体引用包含于此,并且特别地也针对其在整数环上使用同质(homogeneous)混淆的计算设备的描述。

发明人已经发现,在某些情况下,在编码值上的乘法和加法可以使用单个表执行,而不必将多个值编码成单个编码值。因为相同的表被用于加法和乘法,所以在逆向工程期间将难以领会是加法还是乘法被执行。因为从外部观看时加法和乘法表现为相同的运算,所以发明人把这个方法叫做“同质混淆”。即使攻击者能够发现使用的表,并且即使他能够以某种方式想出其作为增量表的功能,他仍然不会知晓是加法还是乘法运算被执行。该表作用于整数列表的元素的方式对加法和乘法而言是不同的,然而这可以使用传统混淆来容易地隐藏。

此外,使用的单个表也小于在背景技术中所讨论的表:需要大约2ll位。即使只使用加法,混淆加法所需的表小于背景技术中所建议的表。

例如,环元素可以被编码为两个整数(ab)。可以使用增量表直接在该编码上执行算术,该增量表将编码的环元素映射到该编码的环元素加增量值。例如,该表将(ab)映射到(cd),如果。加法和乘法二者都通过增量表的反复应用而执行。

混淆算术适用于许多不同的交换环r,尽管不是每个和每一个环都允许作为整数列表编码。交换环是一种数学概念,其包括许多不同的常见数学结构,例如整数模某数()。依照权利要求的生成设备可以被用来生成用于数字混淆算术的参数,所述参数定义了具有有限数量的环元素的交换环(),基础元素u包括在环元素中,使得每个环元素都可以被表达为基础元素的两个幂之间的差()。模数n将交换环定义为整数模模数n。

允许同质混淆的整数环的有效生成允许不同类型的环用在计算设备中,从而增加混淆。

一种依照本发明的方法可以作为计算机实现的方法在计算机上实现,或在专用硬件中或在二者的组合中实现。用于依照本发明的方法的可执行代码可以存储在计算机程序产品上。计算机程序产品的示例包括存储器设备、光学存储设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包括存储在计算机可读介质上的非暂时性程序代码构件,以用于在所述程序产品在计算机上执行时执行依照本发明的方法。

在一个优选实施例中,计算机程序包括适于当该计算机程序在计算机上运行时执行依照本发明的方法的所有步骤的计算机程序代码构件。优选地,计算机程序体现在计算机可读介质上。

附图说明

本发明的这些和其他方面根据下文描述的实施例而是清楚明白的并且将参照这些实施例进行阐述。在附图中:

图1a示意性示出电子生成设备的实施例的一个示例,

图1b示意性示出电子生成设备的实施例的一个示例,

图2示意性示出电子生成方法200的实施例的一个示例,

图3示意性示出电子方法300的实施例的一个示例,其验证每个环元素是否可以被表达为潜在的基础元素的两个幂之间的差,

图4示意性示出电子生成方法400的实施例的一个示例,

图5a示出具有包括依照一个实施例的计算机程序的可写部分的计算机可读介质,

图5b示出依照一个实施例的处理器系统的示意性表示。

不同图中具有相同参考数字的项目具有相同的结构特征或相同的功能,或者是相同的信号。在这样的项目的功能和/或结构已被解释的情况下,在详细描述中没有必要对其进行重复解释。

具体实施方式

尽管本发明可受许多不同形式的实施例的影响,但是在附图中示出了一个或多个具体实施例并且将在本文中对其进行详细描述,应当理解的是,本公开内容应被视为例示本发明的原理,而不旨在将本发明限于所示出和描述的具体实施例。

在下文中,为了理解,在操作中描述了实施例的元件。然而,将会显然的是,相应的元件被布置成执行被描述为它们所执行的功能。

在上文所引用的先前申请中,给出了用于在交换环中执行混淆算术的计算设备的一个实施例的示例。该计算设备是用于在有限交换环中执行混淆算术的电子设备。给出的这样的环的一个示例是:整数模某数()。根据一个实施例的生成设备找到模数,使得通过整数对该模数取模形成的环()允许混淆算术。还生成在混淆域之中和之外编码和解码环元素(例如整数)所需的基础元素。

同质混淆,例如表示环元素、特别是整数模模数,典型地是一种类型的加密算术;有时也被称为同态加密。使用混淆(例如计算机软件代码)被保护以抵御代码的逆向工程。在这里,混淆属于执行算术的代码的部分。在数字混淆算术的一个实施例中,演算可以在密文上实施,并且生成加密的结果,其在被解密时与明文上执行的运算的结果匹配。换言之,超越一些传统软件混淆,可以在加密的值上执行算术。尽管如此,使用同质混淆的算术实现方式可以在功能上与在明文值上执行的算术相同。

环的元素可以被定义为整数模模数。环的元素被称为环元素。环元素也可以被叫做余数。环元素可以被数字地表示为介于0与模数减1之间的整数;0和模数减1包括在内。在环元素上,定义了加法和乘法,后者被称为环加法和环乘法。

环元素可以以任何适当的形式表示,如果该形式是所需要的话。例如,的元素可以表示为整数。然而,在计算设备中,环元素被表示为整数列表。例如,环元素α在计算设备中可以由列表(a1,a2)表示。整数列表依照环元素与整数列表之间的某种映射对环元素进行编码;给定任一环元素,存在至少一个表示该环元素的整数列表,并且给定任一整数列表,存在恰好一个它表示的环元素。在实施例中,任何环元素都可以表示为整数列表。

整数列表具有至少两个元素。事实证明,如果整数列表更短,则加法和乘法运算需要更少的步骤。相应地,在一个实施例中,整数列表总是具有两个元素。在主要描述中,我们将假设整数列表是整数对,然而提供了具有多于两个元素的整数列表的示例。作为一个示例,(a1,a2)可以映射到环元素(),其中u是一种特殊的环元素,被称为基础环元素。所述先前的申请中讨论了许多变形,包括使用多个基础元素。然而,在主要的讨论中,作为“示例编码”,我们将假设给定的整数列表(a1,a2)映射到环元素()。每个环元素因而可以被表达为基础元素u的两个幂之间的差。

下面呈现使用例如由根据一个实施例的生成设备生成的模数和基础元素的混淆算术的若干示例。给出了编码、增量表、环加法方法以及环乘法方法的示例。计算设备的取反、加法和乘法单元可以被配置用于这些实施例中任意一个。所有示例适用于交换环。本文中,n是正整数模数。交换环的任何元素可以在选择的编码中表示。不是所有交换环都允许所有元素在给定的编码中表示,例如表示为给定类型的整数列表表示。给定交换环r,我们将假定如果r中的任何元素可以使用给定的编码类型表示为整数列表,则它允许(完全)同质的混淆。本领域技术人员可以例如通过生成所有许可的编码并验证它们一起表示给定环的所有元素来验证,在给定编码的情况下,给定的交换环是否允许完全同质的混淆。

下面首先给出示例编码的描述。存在许多类型的编码,其共同之处在于环元素可以表示为整数的列表。这些整数不是环元素,例如即使环不是整数环(比如多项式环),则尽管如此元素可以表示为整数列表。所使用的编码、给定的整数列表如何映射到环元素被称为编码。典型地,整数列表将总是具有相同的长度,然而这不是必需的。一般地,随着编码允许更多类型的整数列表(例如更长列表),变得更有可能的是给定的环元素可以以不同方式被编码为整数列表。

给定具有示例编码的交换环r,存在特殊元素u,使得对于某些整数a1和a2,r的任何元素a可以被写作。我们将这样的特殊环元素称为基础环元素。不是所有交换环都可以以这种方式进行编码,而是它们中的足够多对于编码将是有用的。整数a1和a2自身不是环r的环元素;它们是基于对基础元素的次数取模而运算的整数。注意到,环元素a等于基础元素u的幂的线性组合,即的线性组合;在此情况下,该线性组合通过将所述幂与+1或-1相乘并且将它们求和而获得,更特别地,通过从第一幂减去第二幂而获得。计算设备在以上述方式编码的环元素上运算。加法、取反和乘法单元可以在这个编码中的环元素上运算。

增量表t在加法和乘法运算二者中发挥中心作用。增量表映射输入环元素,在此情况下输入环元素可以表示为整数列表。例如,给定表示输入环元素的输入整数列表(k1,k2),表t将此输入整数列表映射到输出整数列表,例如,其对输出环元素。输出环元素等于增量环元素环加到输入环元素。在此示例中,增量元素可以被取为1,即,为用于环乘法的单位元素的环元素;在此情况下,l=k+1。方便的是,该表可以直接应用到使用相同编码的环元素,并且因而其可以应用于具有整数列表表示的环元素。尽管如此,存在其中该表应用于在可替换的编码中的环元素的实施例。该可替换编码也可以是整数列表,但是具有可替换类型。再者,增量环元素不必是1。

下面描述运算、取反、加法和乘法。

取反。给定表示取反输入环元素的取反输入整数列表,可以通过置换整数列表、在此情况下通过颠倒顺序来获得取反输出整数列表。取反输出整数列表可以是。假设存在m,使得um=-1(其对具有偶数次的基础元素发生),取反可以可替换地通过将常数(例如m)加到整数列表的每一个整数而获得。在后者的情况下,取反输出整数列表可以是。这是起作用的,因为。整数列表中的算术优选地以对基础元素的次数取模来进行。这里,整数列表的整数对应于基础元素的指数,因此以对基础元素的次数取模同余的整数对相同的环元素编码。

加法。为了将接收的对第一加法输入环元素编码的第一加法输入整数列表与对第二加法输入环元素编码的第二加法输入整数列表相加,首先确定对中间加法环元素c编码的中间加法整数列表()。

环元素c可以是第一加法输入环元素a加上基础元素u的从第二加法输入整数列表确定的幂,特别是第二加法输入整数列表的第一个整数。在此示例中,我们可以有。为了演算后者,我们观察到。括号中的项可以使用增量表在编码中重写。通过增量表针对环元素的第一应用,获得了元素=+1。例如,通过。然后我们有,,从而确定中间加法整数列表()可以进一步包括将从第二加法输入整数列表确定的整数加到源自第一应用的整数列表中的整数。将加到整数列表表示中的环元素(在此情况下加到a)有时被称为正约简步骤。

因而,加法单元已经获得中间加法环元素,作为整数列表。该中间加法环元素因而是一个或多个基础元素的幂的线性组合,其中所述幂从第一和第二加法输入整数列表确定。在此情况下,增量表被应用于环元素,其通过一个或多个基础元素(u)提升至以第一整数列表的第一整数(a1)减去第二整数列表的第一整数(b1)为指数的幂减去基础环元素(u)提升至以第一整数列表的第二整数(a2)减去第二整数列表的第一整数(b1)为指数的幂而形成。

在此示例中,加法输出整数列表可以通过增量表针对从中间加法整数列表和第二加法输入整数列表确定的环元素的第二应用来确定。这可以包括演算中间加法环元素c与基础元素提升至从第二加法输入整数列表确定的幂(例如第二加法输入整数列表的第二整数b2)负值的和:。这可以在增量表的第二应用之前通过对由中间加法整数列表表示的中间加法环元素取反而实现。c的取反可以如上文所指示的那样进行。作为示例,我们使用置换,但是相同的运算可以通过将常数加到指数来执行。在取反之后,所述和可以使用加(而非减)基础元素提升至从第二加法输入整数列表确定的幂:。后者运算具有与上文相同的类型,并且可以以与加上相同的方式通过表应用来执行。在此之后,结果再次被取反。该完全加法可以使用相同增量表t的两次取反和两个表应用。

从整数列表表示中的环元素(在此情况下从c)减去有时被称为取反约简步骤。取反约简步骤可以通过取反、执行正约简步骤以及再次取反来执行。

乘法。为了使接收的对第一乘法输入环元素编码的第一乘法输入整数列表与对第二乘法输入环元素编码的第二乘法输入整数列表()相乘,确定第一中间乘法整数列表和第二中间乘法整数列表。从第一和第二中间元素确定对乘法输出环元素编码的乘法输出整数列表。在其他实施例中,可能存在超过两个中间乘法整数列表。我们有,。在展开乘积中的关于两项t和u分开各项可以以不同方式进行,例如,分开为

因而,为了使表示为整数列表的两个环元素相乘,它们可以被变换成可以被相加的两个新的整数列表以获得该乘法的答案。该加法可以如上文所述那样进行。例如,乘法单元可以演算中间整数列表并且将它们发送至乘法单元。

例如,第一中间乘法整数列表的第一整数t1可以包括第一乘法输入整数列表的第一整数r1加上第二乘法输入整数列表的第一整数s1,并且第一中间乘法整数列表的第二整数t2可以包括第一乘法输入整数列表的第一整数r1加上第二乘法输入整数列表的第二整数s2,;第二中间乘法整数列表的第一整数u1可以包括第一乘法输入整数列表的第二整数r2加上第二乘法输入整数列表的第二整数s2,并且第二中间乘法整数列表的第二整数u2可以包括第一乘法输入整数列表的第二整数r2加上第二乘法输入整数列表的第一整数s1,

在一个实施例中,例如在刚刚公开的示例中,算术在整数列表上执行,环元素不需要作为某种自然表示的环元素被计算。现在,讨论若干变形。许多变形是独立的,例如变形的编码可以与执行加法的变形组合。

通过在整数列表中执行计算(例如对应于等)时的混淆算术,所述值可以以对u的次数取模进行约简。例如,如果u的次数为30,则所有演算可以以对30取模来执行。

图1a示意性示出电子生成设备100的实施例的一个示例。电子生成设备100被布置成生成用于数字混淆算术的参数。所述参数可以包括模数和基础元素。

模数定义具有有限数量的环元素的交换环()。基础元素(u)被包括在环元素中,使得每个环元素都可以被表达为基础元素的两个幂之间的差()。对模数取模的余数是环元素。例如环元素可以表示从0直至且包括模数减1的整数。

生成设备100生成模数和基础元素,使得基础元素具有以对模数n取模的期望的次数k。例如,设备100可以具有用于接收期望次数的接口(例如输入),或者期望次数可以在生成设备中预先确定,等等。该次数确定了所谓增量表的大小,并且因而是经常被密码系统的设计者事先选择的重要参数。使用一个实施例,设计者可以发现针对期望次数是否存在对应的模数和基础元素。例如,该接口可以是api(应用编程接口)。在一个实施例中,在选择素数模数之前,选择期望次数。

生成设备100包括素数单元110,其被布置成生成素数模数p。该素数模数小于基础元素的期望次数(k;order(u=k)的平方(k2>p)。可能存在基础元素的两个幂的至多k2个不同整数列表。如果所有环元素都以此方式表示,则我们需要有(k2>p)。另一方面,该素数应当大于次数。

生成素数可以以许多方式进行。例如,生成随机数并且对其进行素性检测。素性检测可以以许多方式进行,例如通过试除法、agrawal–kayal–saxena素性检测等等。可替换地,筛分法可以用来一起生成多个素数。例如,筛分可以用来生成所有小于k2的素数。筛分法包括埃拉托斯特尼(eratosthene)筛分和变形,例如atkin的筛分等。筛分法可以被布置成仅产生区间[k,k2]中的素数。

在一个实施例中,素数单元被布置成生成素数(p),使得期望的次数(k)整除该素数减一(k|(p-1))。例如,素数单元可以针对该条件检测所生成的素数,并且如果满足该条件,生成新素数模数,直到所生成的素数不满足它为止。可替换地,素数单元110可以生成形式为p=λk+1的整数,并且检测它们的素性。这样的素数将自动满足条件。该条件可以通过考虑由基础元素生成的乘法群而被看作是真实的,该乘法群的大小为k,但其是以对p取模的(所有非零元素)乘法群的子群,并且其具有p-1个元素。验证该条件将丢弃素数p,对于该素数,在无需搜索基础元素的情况下期望的基础元素不存在。竖线(|)指示整除性。

生成设备100包括基础元素单元120。一旦已经找到合适的素数p,基础元素单元120搜索对应的基础元素。

基础元素单元120被布置成选择大于一且小于素数模数减一(p-1)的潜在基础元素(u)。基础元素单元120的此功能利用参考数字122图示。例如,潜在基础元素可以随机选择。潜在基础元素也可以系统地选择,例如以潜在的基础元素2开始。

基础元素单元120被布置成生成潜在基础元素的不同幂(u0,u1,u2,u3,...,uk-1)。基础元素单元120的此功能以参考数字124图示。生成不同的幂可以通过生成基础元素的所有幂来进行,其开始于指数1并且直到指数等于期望的次数k。生成幂包括演算以对素数模数取模的模运算。例如,可以使用下述公式ui+1=ui*umodp来迭代地生成幂。

基础元素单元120被布置成确定潜在基础元素(u)是否具有等于期望次数的次数。基础元素120的该功能以参考数字126图示。例如,基础元素单元120可以验证是否uk=1modp。所述确定可以使用所生成的幂,其使用功能124演算。然而,可能的是,在关于log2(k)模乘中更快地演算次数。在一个实施例中,首先计算u的次数。例如,只有在次数等于期望的次数的情况下,才生成基础元素的幂。后者采用关于k的模乘。

基础元素单元120被布置成确定是否每一个环元素都可以被表达为潜在基础元素的两个幂之间的差。基础元素120的此功能以参考数字128图示。

例如,功能128可以实现如下。生成以对素数模数取模的整数列表。与每一个整数相关联,关联标志。该标志指示与该标志相关联的整数是否可以呈现为潜在基础元素的幂之间的差。最初,所有标志被重置,即指示整数不能被呈现为潜在基础元素的幂之间的差。

接下来,生成潜在基础元素的两个幂之间的差,并且对于每一个生成的差,设置与所述差相关联的标志。以对素数模数取模来评估差。生成所述差可以从生成的潜在基础元素的不同幂生成所有差。例如,基础元素单元可以以对素数模数取模来评估所有公式ui-uj

后者可以被优化。在一个实施例中,列表由从1直到素数模数减一的一半的整数组成。在一个实施例中,列表包括从1直到素数模数减一的整数的至多一半。这可以完成,因为如果整数x可以被表达为ui-uj,则-x也可以以该方式表达,即表达为uj-ui

如果基础元素单元120发现每一个环元素都可以被表达为潜在基础元素的两个幂之间的差,则已经发现了合适的环和对应的基础元素。例如,设备100可以进展到以模数和基础元素配置计算设备。

在基础元素在128的条件下未能通过检测的情况下,它可以再次尝试新素数和/或潜在的基础元素。例如,设备100可以被布置成迭代地生成素数和/或潜在的基础元素,至少直到明确地确定每一个环元素是否可以表达为基础元素的两个幂之间的差。

例如,设备100可以在介于2与p-1之间的尚未针对相同模数被生成为先前的潜在基础元素的幂的整数之中选择新潜在基础元素。如果所有整数已被尝试作为潜在基础元素或者已经被生成为潜在基础元素的幂,则可以尝试新的模数。

在优选实施例中,设备100可以生成包括所有素数和以对允许混淆算术的所述素数取模的次数k的基础元素的综合表,即所述素数允许以对该素数取模的所有环元素被写为基础元素的幂之间的差。

具有许可的素数的表大大加快了非素数模数的生成。

图1b示意性示出电子生成设备101的实施例的一个示例。图1b图示的实施例扩展了图1a图示的实施例,该扩展在于可以生成非素数模数。

设备101包含素数单元110和基础元素单元120以及另外包括整数单元130。与设备100一样,设备101生成模数和基础元素,使得基础元素具有给定的期望次数k。例如,设备101可以包括用于接收期望次数的输入。例如,设备101可以被配置用于一个或多个特定次数。

整数单元130被布置成生成整数模数(n),使得该整数模数小于基础元素的期望次数(k;order(u=k)的平方(k2>n)。整数单元130也可以被布置成使得整数模数(n)至少为基础元素的期望次数(nk)。该功能在图1b中以参考数字132图示。

整数单元130被布置成确定(134)对于整数模数的因数(divisor),存在基础元素(u),使得以对因数取模的每一个环元素可以被表达为基础元素的两个幂之间的差。例如,在一个实施例中,整数单元130被布置成使用基础元素单元确定,针对整数模数的每一个素数因数,存在基础元素(u),使得以对素数因数取模的每一个环元素可以被表达为基础元素的两个幂之间的差。该功能在图1b中以参考数字134图示。在本申请中,如果第一整数是第二整数的因数,则它暗示第一整数是真因数。

可以证明,如果u是针对模数n的有效基础元素,则umodp是以对p取模的有效基础元素,对于n的任一素数因数,(p|n)。相应地,如果整数单元130确定对于模数n的某素数因数,不存在基础元素,则因此也不可能存在以对n取模的基础元素。事实上,该论断对于大于1且小于模数n的非素数因数也成立。

如果已经确立n的每一个素数因数允许基础元素和同质混淆,则可以验证模数n自身允许以对整数模数(n)取模的每一个环元素可以被表达为潜在基础元素的两个幂之间的差。该运算可以使用与针对功能描述相同过程,除了使用整数模数n代替素数模数p。例如,后者可以包括:

-选择大于1且小于整数模数减一的潜在基础元素(u),

-生成潜在基础元素的不同幂(u0,u1,u2,u3,...,uk-1),

-确定潜在基础元素(u)是否具有等于期望次数的次数,并且如果是

-确定是否以对整数模数取模的每一个环元素都可以被表达为潜在基础元素的两个幂之间的差。如果潜在基础元素不满足后者条件,则可以选择新潜在基础元素,例如直到所有对整数模数取模已被尝试或者直到所有已被尝试或者已被生成为潜在基础元素的幂。

因而,在设备101的一个实施例中,不仅生成素数模数,而且生成非素数整数模数。设备101可以使用设备100用于n的素数因数。

在设备100或101的一个实施例中,素数单元120被布置成生成小于期望次数的平方(k2)的素数(p),并且使用基础元素单元确定每一个环元素是否都可以表达为潜在基础元素的两个幂之间的差。具有允许使用次数k的基础元素的同质混淆的素数的可用表大大加快了对整数模数的搜索,其允许使用次数k的基础元素的同质混淆。

使用筛分法生成允许使用次数k的基础元素的同质混淆的整数模数的一个实施例如下:

-素数单元110和基础元素单元120生成大于k的允许使用次数k的基础元素的同质混淆的最小素数p1。

-整数单元130生成大于或等于p1且小于k2的整数的列表,每一个具有关联的标志。所述标志最初被设置成指示它们可以允许使用次数k的基础元素的同质混淆。将列表中的索引设置为大于p1的最小整数。

-生成小于p1的素数并且将关联的标志重置成列表上的整数,其是所述较小素数的倍数。

-(a)确定列表上的最小整数m,其具有大于或等于设置标志所针对的索引的索引。例如使用功能136确定被取为模数的整数m是否允许针对次数k的同质混淆。

-如果不将关联的标志设置为m,并且重置作为m的倍数的列表上的整数的所有标志,

-增量索引。如果索引仍然指向列表内,在(a)处继续。

一旦找到合适的模数和基础元素,电子生成设备100或101可以进展到演算用在计算设备中的增量表以用于在交换环()中执行混淆算术,例如使用可选的表创建单元140。

表创建单元被布置成构造增量表。例如,表创建单元140可以被布置成:

-反复选择输入环元素,例如以对模数取模的余数类,

-确定等于增量环元素环加到输入环元素的输出环元素

-确定针对输出环元素编码的输出整数列表,

-将条目添加到增量表,从而将输入环元素映射到输出整数列表。

关于表构造的更多细节在所述先前的申请中给出。

生成设备100或101可以被布置成生成给出允许针对次数k的同质混淆的一些或所有素数和/或所有整数的表(例如综合表),但是这不是必需的。生成设备100或101反而可以被布置成迭代地生成模数和/或潜在的基础元素,直到明确地确定每个环元素是否可以被表达为基础元素的两个幂之间的差。

典型地,设备100和101各自包括微处理器(未示出),其执行设备100和101处存储的适当软件;例如,该软件可能已被下载和/或存储在对应的存储器中,例如诸如ram之类的易失性存储器或诸如闪存之类的非易失性存储器(未示出)。可替换地,设备100和101可以整体上或部分地在可编程逻辑中实现,例如实现为现场可编程门阵列(fpga)。设备100和101可以整体地或部分地实现为所谓的专用集成电路(asic),即针对其特定用途定制的集成电路(ic)。

功能122、124、126、128、132、134、136可以实现为对应的功能单元。

在一个实施例中,电子生成设备包括素数电路、基础元素电路和可选地整数电路。电子生成设备可以包括对应于功能单元的功能电路。这些电路被布置用于单元的对应功能。这些电路可以是处理器电路和存储电路,该处理器电路执行存储电路中电子地表示的指令。这些电路也可以是fpga、asic等等。

电子生成设备被布置成生成用于数字混淆算术的参数,所述参数定义了具有有限数量环元素的交换环,基础元素包括在环元素中,使得每一个环元素可以表达为基础元素的两个幂之间的差,生成设备被布置成生成小于基础元素的期望次数的平方的模数,选择大于一且小于模数减一的潜在基础元素,生成潜在基础元素的不同幂,确定潜在基础元素是否具有等于期望次数的次数,并且如果是,确定每个环元素是否可以表达为潜在基础元素的两个幂之间的差。

图2示意性示出电子生成方法200的实施例的一个示例。电子生成方法200被布置成生成用于数字混淆算术的参数。所述参数定义了具有有限数量环元素的交换环。基础元素(u)包括在环元素中,使得每一个环元素可以表达为基础元素的两个幂之间的差。

生成方法200包括

-生成210素数模数(p),使得该素数模数小于基础元素的期望次数(k;order(u=k)的平方(k2>p),以及

-验证220期望的次数(k)整除该素数减一(k|(p-1))。

-选择230大于一且小于模数减一的潜在基础元素(u),

-生成240潜在基础元素的不同幂(u0,u1,u2,u3,...,uk-1),

-确定250潜在基础元素(u)是否具有等于期望次数的次数,并且如果是,

-确定260是否每一个环元素都可以被表达为潜在基础元素的两个幂之间的差。

如果确定了每个环元素可以被表达为基础元素的两个幂之间的差,则一旦模数和基础元素已被找到,方法200可以生成270包括该素数和基础元素的参数。

方法200迭代地生成素数和/或潜在的基础元素,至少直到明确地确定每个环元素是否可以被表达为基础元素的两个幂之间的差。这已经在图2中通过在流程图中回指的箭头指示。例如,如果220、250或260的检测失败,则该方法可以继续所述生成,例如在素数模数的生成或基础元素的选择处的搜索。

图3示意性示出电子方法300的实施例的一个示例,其验证每个环元素是否可以被表达为潜在基础元素的两个幂之间的差。该方法可以用于以对整数模数取模的环元素,特别是对素数模数取模。

方法300包括

-生成310整数的列表和关联的标志,

-生成320潜在基础元素的两个幂之间的差,并且设置与所述差相关联的标志,

-在所有与列表的整数相关联的标志被设置的情况下,确定330每个环元素可以被表达为潜在基础元素的两个幂之间的差。

图4示意性示出电子生成方法400的实施例的一个示例。方法400包括

-生成410整数模数(n),使得该模数小于基础元素的期望次数(k;order(u=k)的平方(k2>n),

-使用基础元素单元确定420对于模数的每一个素数因数,存在基础元素(u),使得以对素数因数取模的每一个环元素可以被表达为基础元素的两个幂之间的差,

-确定430以对整数模数(n)取模的每一个环元素是否可以被表达为潜在基础元素的两个幂之间的差。

执行方法的许多不同方式是可能的,如对本领域技术人员而言将是显然的。例如,可以改变步骤的次序或者一些步骤可以并行执行。而且,在各步骤之间可以插入其他方法步骤。所插入的步骤可以表示诸如本文所描述的方法的改进,或者可以与该方法无关。例如,步骤240和260可以至少部分地并行执行。例如,步骤250可以在步骤240之前执行。而且,给定的步骤可能在下一步骤开始之前没有完全结束。

根据一个实施例的方法可以使用软件执行,该软件包括用于促使处理器系统执行方法200、300和400的指令。软件可以只包括系统的特定子实体所采取的那些步骤。软件可以存储在适当的存储介质中,比如硬盘、软盘、存储器等。软件可以作为信号沿着线缆、或无线地或使用数据网络(例如因特网)发送。可以使得软件可用于下载和/或在服务器上远程使用。一种方法可以使用比特流执行,该比特流被布置成配置可编程逻辑(例如现场可编程门阵列(fpga))以执行该方法。

应当领会,实施例也扩展到适于使实施例付诸实践的计算机程序,特别是载体上或载体中的计算机程序。该程序可以是源代码、目标代码、代码中间源和目标代码形式、比如部分编译的形式,或者是适合用在依照一个实施例的方法的实现方式中任何其他形式。涉及计算机程序产品的实施例包括对应于所阐述的方法的至少一个的每一个处理步骤的计算机可执行指令。这些指令可以被细分成子例程和/或存储在一个或多个可以静态或动态链接的文件中。另一个涉及计算机程序产品的实施例包括对应于所阐述的系统和/或产品的至少一个的每一个构件的计算机可执行指令。

图5a示出具有包括计算机程序1020的可写部分1010的计算机可读介质1000,该计算机程序1020包括用于致使处理器系统执行依照一个实施例的生成用于数字混淆算术的参数的方法的指令。计算机程序1020可以作为物理标记或借助于计算机可读介质1000的磁化而体现在计算机可读介质1000上。然而,任何其他适当的实施例也是可想到的。而且,应当领会,尽管计算机可读介质1000在这里被作为光盘示出,但是计算机可读介质1000可以是任何适当的计算机可读介质,比如硬盘、固态存储器、闪存等,并且可以是非可记录或可记录的。计算机程序1020包括用于致使处理器系统执行所述方法的指令。

图5b示出依照一个实施例的处理器系统1100的示意性表示。该处理器系统包括一个或多个集成电路1110。图7b中示意性示出了一个或多个集成电路1110的架构。电路1110包括用于运行计算机程序组件以执行依照一个实施例的方法且/或实现其模块或单元的处理单元1120,例如cpu。电路1110包括用于存储编程代码、数据等的存储器1122。存储器1122的部分可以是只读的。电路1110可以包括通信元件1126,例如天线、连接器或二者等等。电路1110可以包括用于执行所述方法中限定的部分或所有处理的专用集成电路1124。处理器1120、存储器1122、专用ic1124和通信元件1126可以经由互连1130(比如总线)连接到彼此。处理器系统1110可以被布置用于分别使用天线和/或连接器的接触式和/或非接触式通信。

应当注意,上述实施例说明而非限制本发明,并且本领域技术人员将能够设计许多可替换实施例。

在权利要求中,置于括号之间的任何附图标记不应当被解释为限制权利要求。动词“包括”及其词形变化的使用不排除存在权利要求中非陈述的其他元件或步骤。元件之前的冠词“一”并没有排除存在多个这样的元件。本发明可以借助于包括若干不同元件的硬件、且借助于适当编程的计算机实现。在列举了若干构件的设备权利要求中,这些构件中的若干个可以由同一硬件项体现。在相互不同的从属权利要求中记载了某些措施的起码事实并不指示这些措施的组合不可以用于获益。

在权利要求中,括号中的参考是指实施例的附图中的附图标记或者指实施例的公式,从而增加权利要求的可理解性。这些参考不应当解释为限制权利要求。

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