在椭圆曲线密码系统中生成椭圆曲线点的制作方法

文档序号:34526820发布日期:2023-06-21 16:32阅读:33来源:国知局
在椭圆曲线密码系统中生成椭圆曲线点的制作方法

1.本公开涉及在密码系统中生成针对密钥的椭圆曲线点。


背景技术:

2.在电信系统中,密码技术可用于保护电信网络上不同实体之间的通信。例如,数字签名方案可以在公钥密码系统中实现。密码技术的一个示例是椭圆曲线密码(ecc)。ecc可用于加密、数字签名、伪随机生成器和其他安全任务。
附图说明
3.图1是示出根据实施方式的用于生成椭圆曲线点的示例过程的流程图。
4.图2是示出根据实施方式的示例ecc系统的示意图。
5.图3是示出根据实施方式的与网络耦合的ecc设备的高层架构框图。
6.各附图中相似的附图标记和标号表示相似的元件。
具体实施方式
7.椭圆曲线密码(ecc)是一种密码技术,提供具有高安全性的小密钥大小。例如,使用ecc生成的256比特公钥可以提供与3072比特rsa公钥相当的安全性。ecc因此可以节省电信网络的传输带宽和电信设备的存储器存储。ecc已经在椭圆曲线diffie-hellman(ecdh)协议中用于交换密钥以及在椭圆曲线数字签名算法(ecdsa)中用于生成数字签名。
8.椭圆曲线组可以以有限域(例如素数有限域或特征-2有限域)上的方程的解来描述。椭圆曲线组中的每个点都是与椭圆曲线方程的解相对应的一对域元素。ecc的安全性取决于能够计算点乘以及给定原始和积点不能计算被乘数。
9.在应用ecc方案时,选择一个或多个参数。这些参数通常在该方案的多于一个用户之间共享,并始终在发送方和接收方之间共享。在确定参数选择方法时,考虑安全强度和效率两者。
10.ecc中的一个参数是有限域。有限域主要由其大小确定。有限域的大小通常是素数或素数的幂。在某些情况下,由于效率和安全性益处,可以选择素数域大小来提供。
11.在一些情况下,近似大小至少为2
256
的有限域被认为是对pollard rho攻击具有足够安全性的近似最小阈值。满足此最小值的域大小可用于建立128比特对称密钥,而不会破坏128比特对称加密方案(如“高级加密标准”aes)的安全性。满足这个最小值的域大小可能能够承受在可预见的计算能力下的当前实施的攻击算法。因此,域大小候选应该高于最小域大小2
256
,最大域大小是效率条件。在某些情况下,在两个足够安全的域大小之间进行选择时,可以采用一个简化的规则,优选更高效的域。在此规则下,没有设置特定的最大域大小。或者,可以基于最低效率、最小数据使用效率的某些估计或实现向互操作性和部署汇集的任意方式来设置最大域大小。在这些情况下,域大小候选应该低于最大域大小。
12.参数的安全强度取决于许多因素。一个因素是关于参数被有意或无意选择为较弱
的问题。当参数中的弱点不常见时,一个特别的问题是对手已经使用穷举搜索弱参数来选择该参数。在这种情况下,可以说该参数被穷举弱化。
13.针对穷举弱化参数的潜在威胁的风险的一种对策是生成作为伪随机函数的输出的参数。
14.在某些情况下,可以选择具有特殊形式的有限域。特殊形式域大小可以是高效的,在某些情况下大约是大约相同大小的随机素数的两倍速度。
15.然而,选择伪随机素数有限域排除了选择特殊形式的素数,因为特殊素数(具有已知的效率优势)是很少见的。因此,伪随机素数在软件性能方面成本很高。由于这会降低给定安全级别的可用性,因此性能损失也可以被视为安全性损失。因此,诸如ansi、nist和cfrg等大多数标准机构都建议针对ecc使用特殊快速素数有限域。其他一些标准,例如brainpool标准,优选伪随机素数。使用伪随机素数会牺牲效率,以及牺牲给定效率水平的安全性,但可能会对影响ecc中特殊素数有限域的攻击提供对策。
16.针对穷举弱化参数的潜在威胁的第二对策是选择所述参数作为nothing-up-my-sleeve数。与使用伪随机函数不同,这种方法可以很容易地组合选择特殊素数的优选方法。
17.然而,大多数nothing-up-my-s1eeve数的选择都是相当任意的,没有其安全益处的任何形式上可量化的证明。
18.在一些情况下,如下面更详细讨论的,可以在形式上并且以可量化可证明的方式来选择特殊素数有限域大小,从而可以抵抗穷举弱化。选择本公开中描述的特殊素数有限域大小的方法也可以应用于ecc或其他密码系统中的其他参数。
19.在计算机科学中,数据的kolmogorov复杂度是描述数据所需的最小信息量的概念。kolmogorov复杂度可以用几种方法来定义。这个概念与可压缩性密切相关。
20.宽泛地说,如果kolmogorov复杂度是最小可能的(对于给定的安全性和效率水平),则参数是紧凑的。更确切地说,为了定义紧凑性,还可以定义要使用哪种kolmogorov复杂度的度量。而且,只有在具有相同最小复杂度的参数的数量很小的情况下才可以认为参数是紧凑的。例如,如果最小复杂度是某个值(如20),但有超过一百万个参数的复杂度为20,则参数可能不会被认为是紧凑的。在认为穷举搜索弱参数会在穷举参数中引起某种复杂度的程度上,紧凑的参数在形式上抵御了威胁的穷举弱化。换句话说,紧凑的参数不会抵御影响最简单参数的攻击。
21.在某些情况下,解决将哪种形式的计算复杂度用于定义有限域大小的素数的问题的方案在于:使用包括加法,减法,乘法和幂运算的数学算术来表示域大小。也可以使用传统的十进制记数法来表示数字。这样的表达式可以被称为十进制指数表达式。表达式的复杂度是写表达式所需的符号数量,假设我们使用一个符号来表达使用的每个算术运算。数字的十进制指数复杂度(dec)是求值为该数字的任何表达式的最低复杂度。
22.例如,数字一千零二十四具有以下两个十进制指数表达式:“1024”和“4^5”,其中在第二个运算中,符号^表示取幂。第一个表达式的复杂度为4(“1204”的四位数字),而第二个表达式的复杂度为3(符号“4”,“^”和“5”)。看起来第二个表达式具有求值为1024的任何十进制指数表达式的最小可能的复杂度,因为任何更短的表达式都小于1024。如果是这样,那么1024的十进制指数复杂度是3。我们也可以说1024是一个dec-3数字。
23.备选地,可以考虑表示数字的其他基数。可以使用二进制、八进制或十六进制来代
替十进制。在某些情况下,由于计算机硬件使用二进制整数算术,所以这些替代方案可能比十进制更自然,因此涉及2的幂的算术通常比其他整数的幂更高效。
24.为了更加严格地规范与指数表达式相关的复杂度,我们可以定义表达式的语法,它决定了符合指数表达式的字符串的类型。然后我们可以定义表达式的语义,它决定了如何对字符串求值。以下是分析十进制指数表达式的示例。其他数基的分析可能是类似的。
25.这种更为形式严格的分析的一个目的是不仅能够精确地定义复杂度,而且能够推出定义数字的紧凑性所需的最小复杂度。
26.十进制指数表达式是具有以下17个字符的字母表的字符串,
27.1234567890()+-*^/
ꢀꢀ
(1)
28.字符分为三类。前10个是数字,0具有特殊的语法作用。接下来的两个字符是括号,其可以嵌套并且必须匹配。最后五个字符是运算符。以下是表达式的一些语法规则和定义。
29.数字表达式仅包含数字,且第一个数字不为零。闭合的表达式是数字表达式或括在括号中的有效表达式。字符串是有效的表达式,当且仅当它是奇数个子字符串的串接时,其中奇数排序的子字符串(第一,第三,第五等)是闭合表达式而偶数排序的子字符串(第二,第四等)只是运算符,每个运算符都有一个单字符。
30.虽然有效表达式和闭合表达式依据彼此进行定义,但这两类都包含数字表达式。因此,有效的和闭合的表达式可以用更小的闭合和有效的表达式来构建,并且这个结构序列中的最小表达式将是数字表达式。
31.三个数字表达式的示例是4,5和120,因为它们完全包含数字,其中第一个数字不是0。这些数字表达式也是有效的表达式和闭合的表达式。非数字有效表达式的示例包括4+5,因为:它包含奇数(3)个子字符串:“4”,“+”,“5”,其中第一个和第三个子字符串表达式(“4”和“5”)是闭合表达式,第二个子字符串只是一个运算符。两个非数字闭合表达式的示例是(4)和(4+5),因为它们被包含在匹配的圆括号中,所包含的子字符串本身就是一个有效的表达式。最后,更复杂的有效表达式的一个示例是(4+5)*120^4,因为该字符串可以被解析为在闭合表达式(4+5)、120以及4和运算符*和+之间交替的奇数个子字符串。
32.出于几个原因,计算给定复杂度的十进制指数表达式的数目可能很有用。首先,它可以帮助确认对所有可能的这种表达式的穷举搜索是否实际完成。其次,它也可以用于利用其他复杂度度量(比如压缩的比特长度)来校准十进制表达式复杂度。第三,如果有大量的参数具有最小的复杂度值,那么我们可以开发一个更精细的复杂度概念,其整数部分仍然是符号数,但其小数部分是相同符号长度的表达式的排序列表中表达式的相对索引。
33.可以使用生成级数对给定长度的数字、闭合和有效表达式进行计数:
34.n(x)=9x+90x2+900x3+...
ꢀꢀ
(2)
35.c(x)=n(x)+x2v(x)
ꢀꢀ
(3)
36.v(x)=c(x)/(1-5xc(x))
ꢀꢀ
(4)
37.使用这个方程组来计算低次项似乎会产生:
38.v(x)=9x+90x2+1314x3+17190x4+231849x5+3100140x6+...
ꢀꢀ
(5)
39.这个生成级数的含义是,有1314个不同的有效dec-3表达式(例如)。继续上面的计算表明,dec-7候选有41572305(超过四千万)个有效表达式。
40.对该级数v的系数取以2为底的对数提供校准的想法,即有多少香农熵被编码为给
定复杂度的十进制表达式。这也可以允许在十进制指数复杂度和其他基数的复杂度(还可以是其他复杂度度量)之间进行校准。
41.上述用于十进制表达式的形式系统非常接近数学表示法。一个区别是它使用运算符*来表示乘法,并且它使用符号^来指示取幂而不是更上标的标记。
42.上面的系统也可以改变。在某些情况下,当从上下文中很清楚时,乘法运算符可以省略。在某些情况下,可以使用其他数学函数,例如表示阶乘的右一元运算符“!”。
43.上面,我们定义了十进制指数表达式的语法,我们也可以定义它的含义。特别是,每个十进制指数表达式应求值为一个错误,或者求值为一个数字,该数字可以被认为是用于椭圆曲线密码(ecc)系统的可能的有限域大小。以下是对运算数和运算符的交替序列求值的一些规则。
44.数字表达式的通常含义是一个数字。圆括号也有其通常的含义:一对匹配圆括号内的表达式会自行求值,并且数字结果可以替换括号中的表达式。运算符也有其通常的含义,其中“*”表示乘法,“^”表示取幂。
45.为简单起见,我们将假设/运算符需要整除,而不整除会产生错误。同样,-形式的负结果也会产生错误。这些简化有助于确保在对表达式求值的过程中,用其求得的值替换子字符串的每次替换都会导致另一个数字表达式。这些简化还避免了将整数提升为负或分数幂。对子表达式求值时发生的任何错误都会导致整个表达式中的求值错误。
46.可求值的表达式的数量,即可以无误地求值的表达式的数量,可能远小于有效表达式的数量。
47.最后,因为允许有效表达式被分解为在闭合表达式和运算符之间交替的奇数个子字符串,我们还可以定义如何处理这种表达式中多个运算符的情况。这些问题被称为运算符优先级和求值顺序。再次,我们可以尝试遵循数学惯例。首先从右向左对连续的“^”运算符求值。换句话说,指数运算符^被赋予最高优先级,并且是右关联的。因此,例如,3^3^3求值为3^81,而不是27^3。(注意27^3=(3^3)^3=3^9=3^(3*3)远小于3^81,所以从右到左求值^通常有助于产生大的值。)与带括号的子表达式一样,所得到的基于^的子表达式被它们的值替换(现在相当大,一般来说)。接下来,查找仅由运算符“*”和“/”组成的连续运算符组。在每个子表达式中,从左到右对运算符求值。(这些运算符的从左到右的顺序与c编程语言的顺序相匹配,并且非常符合数学符号。)这些乘除法子表达式在表达式中被求值和替换。剩下的表达式最多有两种运算符+和-,它们也是从左到右(按照传统)进行求值的。以下是这些运算符的关联性规则的示例列表。
48.运算符关联性
49.*右
50.*/左
51.+-左
52.注意与表达式求值有关的这些复杂的语义问题中的一些可能适用于更长的表达式。对于短的表达式,比如我们将考虑用于ecc的dec-6素数,上面的许多细节都不会出现。该表达式非常短,以至于求值顺序不会出现(尽管运算符的优先级会出现)。即使是整除问题,或者四舍五入的除法问题,对短表达式也无关紧要。
53.为了帮助我们分析十进制指数表达式,有一个十进制指数表达式的形式的概念是
有帮助的。该形式是通过用“#”替换每个数字并用“?”来替换每个运算符来获得的。在某些情况下,我们可能不会替换所有数字或所有运算符(或两者)。在这些情况下,我们可以有一个模板化的形式,它可以比形式更具体。然后可以通过形式将关于十进制指数的证明分成多种情况。
54.使用上面的生成级数方法表明dec-1到dec-7数字的形式的数目是1,1,3,4,10,16,37。
55.以下列表包含dec-6数字的16种可能的形式。第二列的8种形式使用括号,其可以使用dec-4,dec-2或dec-1数字的组合进行求值。第一列的前五个元素使用一个或更少的运算,这可能会给出一个合数(不是我们需要的素数)或者太小的数(小于2
256
)。
56.######(####)
57.####?#(##)?#
58.###?##(#)?##
59.##?#####?(#)
60.#?#####?(##)
61.##?#?#(##?#)
62.#?##?#(#?##)
63.#?#?##((##))
64.例如,启发式分析表明运算符^有助于使表达式比类似长度的数字表达式大得多。因此,许多表达式可能太小而不能用于ecc。那些至少有一次运算符*的表达式可能是有用的。对于素数,还需要+或-,因为完全幂的乘积通常不是素数。
65.大小至少为2
80
的dec-1至dec-6的素数具有模板化形式为#^##?#的十进制指数表达式。以下提供了一个证明。
66.首先,可以从所述形式中消除括号。如果括号没有包围运算符,这意味着数字表达式(仅数字),则可以删除括号。否则,括号至少包围一个运算符,该运算符至少有两个运算数。因此,一个含括号的子表达式至少需要五个符号(两个括号,运算符和两个运算数)。对于dec-6或更短的表达式,这只剩下一个符号,这违反了语法,因为一个符号不足以容纳运算符和运算数。如果我们包含省去的乘法运算符,那么我们看到该值必须是合数。
67.没有括号的表达式的形式是由#和?符号组成,其中没有两个?相邻。请注意,一般来说,给定长度的这种形式的数目是fibonacci数。对于dec-6,这种形式的数目是8,如上面dec-6表达式的16形式列表中的第一列所示。
68.没有运算符的最大dec-6表达式是999999,其小于1百万,1百万小于2
20
,2
20
小于2
80

69.如果运算符是^或*,那么只有一个运算符的表达式不能是素数,除非其中一个运算数是一,另一个是较短长度表达式的素数。如果单个运算符是+或-或/,则最大的dec-6表达式是9999+9,其小于2
14
<2
80
。因此,求值为素数且长度最多为6且只有一个运算符的十进制指数表达式太小。
70.仅剩的表达式有两个运算符,因为三个运算符需要四个运算数,因此需要七个或更多个符号。如果两个运算符都在*和^的集合中,则表达式将求值为合数,或者求值为甚至更短长度的素数表达式(复杂度)。因此,我们可以确定两个运算符中至少有一个运算符既
不是*也不是^。
71.如果两个运算符都不是^,那么最大可能的表达式是99*9*9,这又太小了。
72.所以其中一个运算符是^另一个是+或-或/。
73.如果第二个运算符是^,则表达式将太小,或者第一个运算符将是+,并且可以通过交换性重新排列表达式。因此,可以假设第一个运算符是^。
74.如果表达式具有模板化形式##^#?#或#^#?#,则最大可能表达式为99^9+9,其小于1289+1289=2
64
<2
80

75.因此,第二或第三数字子表达式有两位数字。如果它是第三数字表达式,我们看到最大可能值是9^9+99,这又比2
80
小得多。
76.只剩下模板形式为#^##?#的表达式。这完成了证明。
77.如果第二个运算是/,并且如上如果我们使用整除,那么求得的值将是个合数。或者,如果我们包含更自由的求值语义,其中除法是通过舍入来求值的,那么从模板化形式为#^##/#的表达式得到的素数(如果有的话)没有已知的效率优势,所以它们应该初步被拒绝。所以,可以进一步得出结论:仅素数的模板形式为#^##+#或#^##-#。
78.以下dec-6素数中的一些至少约为2
256
,其符合最小域大小规则。如前所述,它们具有#^##?#的形式。
[0079]698-7(≈2
253.3
)
ꢀꢀ
(6)
[0080]891
+5(≈2
273.0
)
ꢀꢀ
(7)
[0081]798-2(≈2
275.1
)
ꢀꢀ
(8)
[0082]987
+4(≈2
275.8
)
ꢀꢀ
(9)
[0083]895-9(≈2
285.0
)
ꢀꢀ
(10)
[0084]999
+4(≈2
313.8
)
ꢀꢀ
(11)
[0085]
基数b=8的6个素数中的两个可能效率更高,因为它们接近2的幂。其他四个素数离2的幂相当远,因此应该被拒绝。
[0086]
因此,通过使用十进制指数复杂度和目前的特别优选高效的最小大小的素数的做法,我们已经将ecc中使用的素数有限域的选择缩小到仅两个选择:8
91
+5和8
95-9。这个过程大大降低了穷举弱化的风险。这些参数非常紧凑,几乎没有空间让对手干预它们。
[0087]
在剩余的两个8
91
+5和8
95-9之间,仅有一个主要原因优选8
95-9:它的大小更大。但回想一下目前的最佳做法选择适当大小的最高效有限。由于几个原因,域大小8
91
+5应该比8
95-9更高效。首先,对于ecc,8
91
+5稍快,因为均匀标量乘数是较小的整数。其次,素数8
95-9仅略低于2的幂,这意味着fermat反演不如8
91
+5(其恰好高于素数的幂)好。第三,五支式(five-limb)实施方式,8
95-9需要更大的支值,所以它可能遭受更大的溢出压力。因此,有限域乘法可能需要对于8
95-9更多的化简步骤以避免溢出计算机的最大字长。
[0088]
除了效率外,还可以用其他基数的数字表达式来比较8
91
+5和8
95-9。这里,因为4位数字用于表示二进制9,而3位数字用于表示5,所以我们看到使用二进制表达式,8
91
+5具有更小的复杂度。或者,如前所述,也许可以使用十进制幂运算表达式的某种排序方式来实现复杂度的改善。排序方法某种意义上是任意的,这意味着它只提供很少的针对穷举弱化的说服,但不考虑该附加说明,在最典型的词典排序中,8^91+5表达式出现在8^95-9之前。
[0089]
dec-7素数比dec-6素数多。使用dec-7素数可以提供更多的选择。我们确实很幸
运,只有两个合适的dec-6选项可供选择,因为这提供了针对穷举弱化的更强大的紧凑性和抵御力论证。(如果有很多dec-6的选项,或者没有dec-6的选项但是有很多dec-7的选项,那么我们就不会有这样一个有说服力的针对穷举弱化的论证。)
[0090]
一些值得注意的dec-7素数候选包括:2
521-1,2
255-19=8
85-19和2
336-3。这些在以前的工作中已经考虑用于ecc,大多数是出于效率的原因。
[0091]
图1是示出根据实施方式的用于生成椭圆曲线点的示例过程100的流程图。过程100可以通过电子设备来实施。如图1所示,示例过程100可以使用附加的、更少的或不同的操作来实施,这些操作可以按所示的顺序或以不同的顺序执行。
[0092]
示例过程100在102处开始,其中确定多个域大小候选。在某些情况下,这些域大小候选包括伪mersenne素数。在某些情况下,可以根据前面讨论的dec-6和dec-7素数的搜索来生成这些域大小候选。备选地或另外地,这些域大小候选可以通过用户接口输入,从另一电子设备接收,或其组合。表1列出了多个域大小候选。
[0093][0094]
表1域大小候选及其数字表达式。
[0095]
在104,对于多个域大小候选中的每一个,确定多个数基中每一个的相应域大小候选的指数表达式。例如,如表1所示,十进制、二进制、十六进制和八进制的每个大小候选的指数表达式显示在与相应大小候选相同的行上。
[0096]
在106,基于域大小候选的指数表达式来选择域大小。在某些情况下,基于指数表达式的复杂度索引进行选择。在某些情况下,复杂度索引表示数字表达式中使用的符号数。例如,8^85-19的十进制复杂度索引为7,而8^91+5的十进制复杂度索引为6。在表1中,每个指数表达式的复杂度索引列在相应的指数表达式下。
[0097]
在某些情况下,对于每个域大小候选,计算每个数基的复杂度索引并相加以生成组合的复合索引。组合的复杂度索引可以指出域大小候选的实现复杂度级别。在某些情况下,可以选择具有最小组合复合索引的域大小候选。
[0098]
在一些情况下,选择可以进一步基于域大小候选的比特安全级别。比特安全级别是域大小候选中的第一项的指数(相对于2的幂)。例如,8^81-9=2^243-9,因此8^81-9的比特安全级别是243。比特安全级别表示候选的大小。如前面所讨论的,大约2
256
的域大小被认为是针对pollard rho攻击的足够安全性的近似最小阈值。因此,比特安全级别低于256的
域大小候选可能不是合适的候选。这些域大小候选,例如8^81-9,可以在对组合的复合索引进行比较之前被删除。
[0099]
类似地,具有相当大的比特安全性的域大小,例如336、521和729,具有显著的效率成本。在某些情况下,具有足够安全性的最高效参数是优选的。然而,在更小的系统中,额外的成本可能是可以承受的。(例如,两个用户通过强大的设备进行通信。)这样的备选系统可以为了更高的比特安全性而牺牲一些效率。在这种情况下,表1显示2^279-9可能是最紧凑的,因为它的二进制和十六进制指数复杂度非常低(与表1中的其他条目相比,以及与其他大素数相比)。
[0100]
在一个示例中,从表1中列出的候选中选择8^91+5。8^91+5是大约2
273
,因此大于2
256
。因此,8^91+5可以针对pollard rho攻击提供足够的复杂度。
[0101]
之前讨论过相比8^95-9优选8^91+5的原因。
[0102]
表1中的剩余条目是8^85-19。该条目的大小略低于2
256
,因此可能无法根据最低比特安全性要求选择该条目。如果比特安全性阈值从256降低到255,则可以选择8^85-19。但是,在十进制、二进制、十六进制和八进制中,指数复杂度可能大于8^91+5的指数复杂度。十进制指数复杂度(以及其他合理基数的指数复杂度)优选8^91+5(相比8^85-19)。
[0103]
在某些情况下,选择8^85-19的域大小在ecc系统中可能比8^91+5更有效,因为它是较小的数字。但是,两者都可以使用五个64比特计算机字来实施,并且具有25个字乘法。因此,在具有64比特字乘法的设备中,这两个素数的效率可能相似。
[0104]
此外,在穷举弱化的情况下,通过穷举搜索选择恶意参数的对手将有强烈的动机针对敌手应用穷举弱化参数。做到这一点的一种方法是很努力优化弱化参数的效率,但避免对更安全参数的任何优化。这种努力可以采取新的效率算法或新的实施方式的形式,或者甚至如果对手有如此巨大的影响力,则可以采用新的硬件,这种新的硬件在使得弱化参数更高效的意义上有利于弱化参数。
[0105]
所以,尽管效率是一个重要因素,但它的最优性在阻止穷举弱化方面效用有限。因此,如果不显著妨碍效率,则可以使用十分简单的十进制幂运算复杂度标准。
[0106]
在108处,所选择的域大小被用于生成椭圆曲线点。在ecc方案中,基于椭圆曲线生成椭圆曲线点。椭圆曲线的形式如下:y2=x3+ax+b。在一些情况下,系数(即a和b)被选择为与所选择的域大小兼容。例如,给定域大小,特定的椭圆曲线的大小可能是素数或不是素数,这取决于系数。在一些情况下,系数被选择为具有最小的紧凑性,同时保持曲线的大小为素数或几乎为素数。如果曲线大小是余因子(例如4)和素数的乘积,则曲线大小可能几乎为素数。在一个示例中,对于8^91+5的域大小,可以选择椭圆曲线方程2y2=x3+x。该曲线大小具有72的余因子。
[0107]
在某些情况下,基于选择的椭圆曲线方程,可以使用映射函数将域元素转换为椭圆曲线点。对于椭圆曲线函数2y2=x3+x,映射函数可以用下面的方程表示:
[0108][0109]
其中r表示域元素,i表示有限域中-1的平方根,并且x表示椭圆曲线点的x-坐标。通过将x插入到椭圆曲线函数2y2=x3+x中并且求解y(通过将右边除以二并计算平方根),形成椭圆曲线点(x,y)。如果不存在这样的y,则将i加到x(针对x.,获取新值x’=x+i)。对于新
值x,确保存在对应于曲线上的点(x,y)的y。
[0110]
在某些情况下,可以执行预先计算来确定是否需要加i。这有助于使得从r计算x是确定性的(并且需要恒定的时间)。
[0111]
对于每个x,y有两种选择。此外,对于每个x,在p/2下可能有两个r值,它们给出相同的x。通过基于是否需要将i加到x来选择y,可以将y的选择用于编码选择哪个r产生给定的x。
[0112]
因此,这种结构可用于将任意34字节的字符串映射到椭圆曲线点。这种结构也是可逆的。一些ecc协议需要将任意字节字符串可逆地映射到椭圆曲线点的这一步骤。类似的映射可以通过反复试验来实现,但它不是确定性的,可能会削弱安全性。
[0113]
在110处,所产生的椭圆曲线点被用于ecc运算中。ecc运算的示例包括椭圆曲线集成加密方案(ecies)、椭圆曲线diffie-hellman(ecdh)密钥协商方案、椭圆曲线qu-vanstone(ecqv)隐式证书方案或其他ecc方案。
[0114]
在某些情况下,以下是使用所选域大小8^91+5实施ecc方案的示例。考虑使用64比特来表示任何整数x的计算机硬件,其中|x|<2
63
,即64比特有符号整数。如果结果也是可表示的,则硬件可以将两个这样的整数x和y相加:如果|x+y|<2
63
。当|x+y|≥2
63
时,计算机硬件加法可能溢出。溢出可能产生错误,或者可能需要使用算术模2
64
来处理。简化的实施方式可以避免溢出。减去64比特有符号整数是相似的。
[0115]
计算机硬件也可以将两个64比特有符号整数相乘,产生一个128比特有符号整数。128比特有符号整数可以在内部表示为两个64比特整数。计算机硬件或实施方式的编程语言可以实现这些128比特有符号整数的加法和减法(与64比特有符号整数相同)。例如,c编译器可能会将64比特有符号整数实施为长整型的,将128比特有符号整数实施为长长整型。
[0116]
以下是域元素表示。通过使用2
55
的基数(基)将向量x发送给点积,可以将五个整数向量(z5)映射到有限域f
p
(大小为p=8
91
+5),见下文:
[0117]
x
·
(1,2
55
,2
110
,2
165
,2
220
)mod p。
ꢀꢀ
(12)
[0118]
换句话说,有限域元素可以用基2
55
表示(这里的基也称为基数)。更一般地说,至少在中间计算期间,允许数字(也被称为支(1imb))变为负数,使得其绝对幅值变得比2
55
显著更大是非常有用的。
[0119]
通过所述表示的线性,传统的向量运算对应于域运算,包括加法、减法和缩放(以整数)。域元素可以表示为64比特有符号整数的5元组(64比特机器上的自然计算机字)。一个例外是在域元素的乘法运算期间,可以使用128比特有符号整数的中间格式5元组。
[0120]
将向量x和y相乘的一种方式是利用教科书乘法的循环卷积变体,其中z=xy具有坐标:
[0121]
z0=x0y
0-20x1y
4-20x2y
3-20x3y
2-20x4y1,
ꢀꢀ
(13)
[0122]
z1=x0y1+x1y
0-20x2y
4-20x3y
3-20x4y2,
ꢀꢀ
(14)
[0123]
z2=x0y2+x1y1+x2y0-20x3y
4-20x4y3,
ꢀꢀ
(15)
[0124]
z3=x0y3+x1y2+x2y1+x3y
0-20x4y4,
ꢀꢀ
(16)
[0125]
z4=x0y4+x1y3+x2y2+x3y1+x4y0.
ꢀꢀ
(17)
[0126]
以下辅助定理建立了使用上述循环教科书公式时不发生溢出的一些条件。
[0127]
对于所有的i和j,如果|xi|,|yj|<2
60
,则对于所有的k,|zk|<2
127

[0128]
下一个辅助定理可能有助于通过预乘20xi来优化域元素的乘法,换句话说,即计算20xiyj为(20xi)yj。如果20xi可以完全用64比特整数运算来计算,这可能有助于优化。
[0129]
对于所有的i,如果|xi|<2
58
,则对于所有的i,则|20xi|<2
63

[0130]
上述算术运算倾向于增加元组坐标的幅值。如果这个运算被反复迭代,则元组中的条目可能会溢出计算机硬件整数。所以使用化简运算来避免溢出。
[0131]
第二种化简有助于为每个域元素提供唯一的表示。这些唯一的表示在确保互操作性的ecc计算的最后阶段非常有用,但它们可能不是中间计算所必需的。
[0132]
在部分化简中,我们只是试图避免溢出,而放弃唯一性。假设|zi|<2
127
。令zi=2
110
qi+2
55
ui+ri,其中|ri|<2
55
和|ui|<2
55
,以及|qi|<2
17
。令v为向量,坐标为:
[0133]
v0=r
0-20u
4-20q3,
ꢀꢀ
(18)
[0134]
v1=r1+u
0-20q4,
ꢀꢀ
(19)
[0135]
v2=r2+u1+q0,
ꢀꢀ
(20)
[0136]
v3=r3+u2+q1,
ꢀꢀ
(21)
[0137]
v4=r4+u3+q2.
ꢀꢀ
(22)
[0138]
在一些情况下,计算机硬件可以并行地执行上述加法中的一些,因为用于计算vi的加法不依赖于用于计算vj的加法的结果。下面的辅助定理显示了化简的矢量v可用于各种算术运算而不会溢出。
[0139]
如果|zi|<2
127
,则|vi|<2
60

[0140]
在一些情况下,可以使用进一步化简的v0。为此目的,令v0=2
55
s0+w0,其中|w0|<2
55
,以及|s0|<28。令:
[0141]
w0=w0,
ꢀꢀ
(23)
[0142]
w1=v1+s0,
ꢀꢀ
(24)
[0143]
w2=v2,
ꢀꢀ
(25)
[0144]
w3=v3,
ꢀꢀ
(26)
[0145]
w4=v4,
ꢀꢀ
(27)
[0146]
如果|zi|<2
127
,则|wi|<2
57
.
[0147]
完全化简的向量w具有wi≥0,但是每个wi尽可能小。通常需要唯一的表示,以便在使用ecc的公共密钥交换系统中的两方(例如,alice和bob)可以互操作。如果计算机硬件模型可以计算负整数模2的幂的非负余数,那么计算机硬件可以从最低有效支开始计算商和余数。来自最显著支的商在被加到最低有效支之前被以-5缩放。
[0148]
ecc运算还包括有限域内的反演。对于公开值,扩展欧几里得算法的一些变体可能很快,但是时变的。依赖于秘密的时间变化可能是潜在的弱点。一种对策是使用fermat反演,计算x-1
为xp-2

[0149]
所选域大小8
91
+5的fermat反演具有p-2=8
91
+3。因此,通过计算x2,x4,x8,...,x
2273
,x
2273+2
,x
p-2
,计算x
p-2
是很快的,其中省略号表示重复的平方。这需要273个平方和2个乘法,这对于这个大小的模数几乎是效率最优的。要计算平方根,可以使用p≡3mod 5的素数的方法。第一步是将域元素提高到(p+5)/8=2
270
+1的幂。这可能涉及重复的平方运算。如果初始结果不是平方根,则可以通过乘以来调整幂。
[0150]
以下是可用于8^91+5域大小的ecc实施方式的一些示例代码。
[0151]
[0152]
[0153]
[0154][0155]
图2是示出根据实施方式的示例ecc系统200的示意图。在高层,示例系统200包括通过网络210通信地耦合的第一设备202和第二设备204。
[0156]
第一设备202和第二设备204是使用ecc方案来保护通信的电子设备。在一个示例中,第一设备202和第二设备204可以参与密钥交换协议,例如椭圆曲线diffie-hellman协议。第一设备202可以使用ecc生成密钥对。密钥对包括私钥d和公钥q,私钥是一个随机选择的整数,其中q=dg,g是包含椭圆曲线上的固定点g的椭圆曲线diffie-hellman(ecdh)系统的参数。备选地,可以从34字节的字符串获得g,该字符串是两个用户共享的密码的散列。因此,第一设备102的密钥对是(d1,q1),并且第二设备204的密钥对是(d2,q2)。
[0157]
第一设备202向第二设备204发送其公钥q1。第二设备将其公钥q2发送给第一设备202。第一设备202可以计算椭圆曲线点(x,y)=d1q2,并且第二设备204可以计算椭圆曲线点(x,y)=d2q1。(这些点将是相同的,因为d1q2=d1d2g=d2d1g=d2q1。)该点的x坐标是在第一设备202和第二设备204之间共享的共享秘密。第一设备202和第二设备204可以使用x来加密和解密在它们之间传输的信息。在一些情况下,这些计算可以使用实施方式示例来实施,例如前面描述的c代码示例。
[0158]
转到一般描述,电子设备(例如第一设备202或第二设备204)可以包括但不限于以下电子设备中的任何一个:计算设备、移动设备、移动电子设备、用户设备、移动台、订户站、便携式电子设备、移动通信设备、无线调制解调器、无线终端或其他电子设备。移动设备的示例可以包括蜂窝电话、个人数据助理(pda)、智能电话、膝上型计算机、平板设备、个人电脑(pc)、寻呼机、便携式计算机、便携式游戏设备、可穿戴电子设备、健康/医疗/健身设备、相机、或具有用于经由无线通信网络传送语音或数据的组件的其它移动通信设备。无线通信网络可以包括在许可频谱和非许可频谱中至少一个上的无线链路。术语“移动设备”还可以指可以终止用户的通信会话的任何硬件或软件组件。此外,术语“用户装备”、“ue”、“用户装备设备”、“用户代理”、“ua”、“用户设备”在本文中可以作为同义词使用。
[0159]
示例系统200包括网络210。网络210表示可被配置为在系统200中的实体之间传输数据消息的应用程序、应用程序集合、软件、软件模块、硬件或其组合。网络210可以包括无线网络、有线网络或其组合。例如,网络210可以包括一个或多个无线电接入网络(ran)、核心网络(cn)和外部网络。ran可以包括一个或多个无线电接入技术。在一些实施方式中,无
线电接入技术可以是全球移动通信系统(gsm)、过渡标准95(is-95)、通用移动电信系统(umts)、cdma2000(码分多址)、演进通用移动电信系统(e-umts)、长期演进(lte)或长期演进技术-高级(lte-advanced)或任何其他无线电接入技术。在一些情况下,核心网络可以是演进分组核心(epc)。
[0160]
ran是实现诸如umts、cdma2000、3gpp lte和3gpp lte-a之类的无线电接入技术的无线电信系统的一部分。在许多应用中,ran包括至少一个基站。基站可以是可以控制系统的固定部分中的全部或至少一些无线电相关功能的无线电基站。基站可以在其覆盖区域或者为移动设备提供通信的小区内提供无线电接口。基站可以分布在整个蜂窝网络中以提供广泛的覆盖范围。基站直接与一个或多个移动设备,其它基站以及一个或多个核心网络节点通信。
[0161]
图3是示出根据实施方式的与网络350耦合的ecc设备302的高层架构框图。所描述的说明仅仅是所描述的主题的一种可能的实施方式,并非旨在将本公开限制于单个所描述的实施方式。本领域的普通技术人员将认识到,所描述的部件可以以与本公开一致的替代方式连接、组合或使用。
[0162]
网络350便于ecc设备302与其他设备之间的通信。网络350可以是无线或有线网络、存储器管道、硬件连接或组件之间的任何内部或外部通信路径。
[0163]
ecc设备302包括被配置为执行本公开中描述的算法以生成椭圆曲线点的计算系统。例如,ecc设备302可以用来实施图2所示的第一设备202和第二设备204。在一些情况下,该算法可以用可执行的计算代码(例如c/c++可执行代码)实施,。备选地或组合地,该算法可以在应用程序(例如excel)中实施。在一些情况下,设备302可以包括运行批处理应用的独立linux系统。在一些情况下,设备302可以包括运行应用程序的移动或个人计算机。
[0164]
设备302可以包括输入设备,例如小键盘、键盘、触摸屏、麦克风、语音识别设备或可以接受用户信息的其他设备,和/或包括输出设备,其输出与设备302的操作相关联的信息,包括数字数据,视觉和/或音频信息或gui。
[0165]
设备302可以用作客户端、网络组件、服务器、数据库或其他持久性对象等。在一些实施方式中,设备302的一个或多个组件可以被配置为在基于云计算的环境中操作。
[0166]
在更高的层面,设备302是可操作以接收、发送、处理、存储或管理数据和信息的电子计算设备。在一些实施方式中,设备302还可以包括或通信地耦接到应用服务器、电子邮件服务器、网络服务器、缓存服务器、流传输数据服务器、商业智能(bi)服务器和/或其他服务器。
[0167]
设备302可以通过网络350从客户端应用807(例如,在用户设备上执行)接收请求,并通过在适当的软件应用中处理所述请求来响应所接收的请求。另外,还可以从内部用户(例如,从命令控制台或通过其他适当的访问方法)、外部或第三方、其他自动化应用以及任何其他适当的实体、个体、系统或计算机向设备302发送请求。
[0168]
设备302的每个部件可以使用系统总线303进行通信。在一些实施方式中,设备302的任意和/或所有组件(不论硬件和/或软件)可以使用应用编程接口(api)312和/或服务层313通过系统总线303与彼此和/或接口304进行接口连接。api 312可以包括针对例程、数据结构和对象类的规范。api 312可以是与计算机语言无关的或有关的,并且指的是完整的接口、单个功能、或者甚至是一组api。服务层313向设备302提供软件服务。使用该服务层的所
有服务消费者可以访问设备302的功能。软件服务(例如由服务层313提供的软件服务)通过定义的接口提供可重用的、定义的业务功能。例如,接口可以是以java、c++或以可扩展标记语言(xml)格式或其它合适格式提供数据的其它合适语言所编写的软件。虽然被示为设备302的集成组件,但是备选实施方式可以将api 312和/或服务层313示为作为相对于设备302的其他组件独立的组件。此外,在不脱离本公开的范围的情况下,api 312和/或服务层313的任意或所有部分可以被实现为另一软件模块、企业应用或硬件模块的子模块或副模块。
[0169]
设备302包括接口304。虽然在图3中被示为单个接口304,但是可以根据设备302的特定需要、期望或特定实施方式而使用两个或更多个接口304。接口304由设备302用于与连接到网络350的分布式环境(无论是否示出)中的其它系统通信。通常,接口304包括以合适的组合以软件和/或硬件编码的逻辑,并且可操作为与网络350通信。更具体地,接口304可以包括支持与通信相关联的一个或多个通信协议的软件,使得网络350或接口的硬件可操作以传送物理信号。
[0170]
设备302包括处理器305。虽然在图3中被示为单个处理器305,但是可以根据设备302的特定需要、期望或特定实施方式而使用两个或更多个处理器。通常,处理器305执行指令并操纵数据以执行设备302的操作。具体而言,处理器305执行供应企业服务所需的功能。在一些情况下,处理器305可以包括数据处理装置。
[0171]
设备302还包括保存设备302的数据的存储器306。虽然在图3中被示为单个存储器306,但是可以根据设备302的特定需要、期望或特定实施方式而使用两个或更多个存储器。虽然存储器306被示为设备302的集成组件,但是在备选实施方式中,存储器306可以在设备302的外部。
[0172]
应用307是根据设备302的特定需要、期望或特定实施方式提供功能(尤其是关于供应企业服务所需的功能)的算法软件引擎。尽管被示为单个应用307,但是应用307可以被实施为设备302上的多个应用307。另外,虽然被示出为设备302的一部分,但是在备选实施方式中,应用307可以在设备302的外部。
[0173]
此外,在不脱离本公开的范围的情况下,术语“客户端”、“用户”和其他适当的术语可以适当地互换使用。此外,本公开包含许多用户可以使用一个计算机302,或者一个用户可以使用多个计算机302。
[0174]
在本说明书中描述的主题和功能操作的实施方式可以在数字电子电路中、在有形实现的计算机软件或固件中、在计算机硬件中实施,包括在本说明书中公开的结构及其结构等同物、或它们中的一个或多个的组合。在本说明书中描述的主题的实施方式可以被实施为在有形非瞬时计算机存储介质上编码的一个或多个计算机程序,即计算机程序指令的一个或多个模块,用于由数据处理装置执行或者控制数据处理装置的操作。备选地或另外地,程序指令可以在人工产生的传播信号(例如,机器产生的电、光或电磁信号)上编码,所述信号被产生以对信息进行编码以传输到合适的接收机装置,以供数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
[0175]
术语“数据处理装置”、“计算机”或“电子计算机设备”(或本领域普通技术人员所理解的等效物)是指数据处理硬件,并且包括用于处理数据的各种装置、设备和机器,例如
包括可编程处理器、计算机、或多个处理器或计算机。该装置还可以是或还包括专用逻辑电路,例如中央处理单元(cpu)、fpga(现场可编程门阵列)或asic(专用集成电路)。在一些实施方式中,数据处理装置和/或专用逻辑电路可以是基于硬件和/或基于软件的。可选地,装置可以包括为计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者上述各项中的一项或多项的组合的代码。本公开考虑具有或不具有常规操作系统(例如linux、unix、windows、mac os、android、ios或任意其它合适的常规操作系统)的数据处理装置的使用。
[0176]
可以以任何形式的编程语言来写计算机程序(也可以称作或描述为程序、软件、软件应用程序、模块、软件模块、脚本或代码),所述编程语言包括:编译或解释语言、或者声明或程序语言,并且可以以任何形式来部署计算机程序,包括部署为单独的程序或者部署为适合于用于计算环境的模块、组件、子例程、或者其它单元。计算机程序可以(但不是必须)与文件系统中的文件相对应。程序可以存储在保持其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、专用于所讨论的程序的单个文件中、或者存储在多个协同文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在一个计算机上或者在位于一个站点或分布在多个站点并且通过通信网络互连的多个计算机上执行。尽管各图中所示的程序的部分被示为通过各种对象、方法或其他处理实现各种特征和功能的单独模块,但是视情况处理可以替代地包括多个子模块、第三方服务、组件、库等。相反,各种组件的特征和功能可以视情况组合成单个组件。
[0177]
本说明书中描述的过程和逻辑流可以由一个或多个可编程计算机来执行,所述一个或多个可编程计算机执行一个或多个计算机程序以通过操作输入数据并且产生输出来执行功能。过程和逻辑流也可以由专用逻辑电路(例如cpu、fpga或asic)来执行,并且装置也可以实现为专用逻辑电路(例如cpu、fpga或asic)。
[0178]
适合于执行计算机程序的计算机可以基于通用或专用微处理器、这两者或任何其它类型的cpu。通常,cpu将从只读存储器(rom)或随机存取存储器(ram)或者这二者接收指令和数据。计算机的必不可少的元件是用于执行指令的cpu和用于存储指令和数据的一个或更多个存储器设备。通常,计算机还将包括用于存储数据的一个和或更多个大容量存储设备(例如,磁盘、磁光盘或光盘),或可操作耦接以便从所述一个或更多个大容量存储设备接收或向其发送数据。然而,计算机不需要具有这些设备。此外,计算机可以嵌入在另一设备中,例如,移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏机、全球定位系统(gps)接收机或者便携式存储设备(例如,通用串行总线(usb)闪存驱动器),仅举几个示例。
[0179]
适合于存储计算机程序指令和数据的计算机可读介质(暂时或非暂时的)包括所有形式的非易失性存储器、介质和存储器设备,其包括例如半导体存储器设备、例如可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)和闪存设备;磁盘(例如内部硬盘或可移动盘);磁光盘;以及cd rom、dvd+/-r、dvd-ram和dvd-rom盘。存储器可以存储各种对象或数据,包括:高速缓存区、类(class)、框架、应用、备份数据、工作、网页、网页模板、数据库表格、存储商业信息和/或动态信息的知识库、以及包括任意参数、变量、算法、指令、规则、约束、对其的引用在内的任何其它适当的信息。另外,存储器可以包括任何其他适当的数据,诸如日志、策略、安全或访问数据、报告文件以及其他。处理器和存储器可以由专用逻辑电路来补充或者并入到专用逻辑电路中。
[0180]
为了提供与用户的交互,本说明书中描述的主题可以实现在计算机上,该计算机具有用于向用户显示信息的显示设备(例如,crt(阴极射线管)、lcd(液晶显示器)、led(发光二极管)或等离子监视器)和用户可以向计算机提供输入的键盘和指点设备(例如,鼠标、轨迹球或轨迹板)。还可以使用触摸屏(诸如具有压敏性的平板计算机表面、使用电容或电感测的多点触摸屏或其它类型的触摸屏)向计算机提供输入。其它类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈,例如,视觉反馈、听觉反馈或触觉反馈;以及可以以任意形式(包括声音、语音或触觉输入)来接收来自用户的输入。此外,计算机可以通过向用户使用的设备发送文档或者从该设备接收文档来与用户交互;例如,通过响应于从用户客户端设备上的web浏览器接收到的请求而向所述web浏览器发送网页来与用户交互。
[0181]
术语“图形用户界面”或gui可以以单数或复数形式使用,以描述一个或更多个图形用户界面以及特定图形用户界面的每一次显示。因此,gui可以表示任意图形用户界面,包括但不限于web浏览器、触摸屏或处理信息并且有效地向用户呈现信息结果的命令行界面(cli)。通常,gui可以包括多个用户界面(ui)元素,其中一些或全部与web浏览器相关联,诸如可由商业套件用户操作的交互式域、下拉列表和按钮。这些和其他ui元素可以与web浏览器的功能相关或表示web浏览器的功能。
[0182]
尽管本公开包含许多特定的实施方式的细节,然而这些细节不应被解释为对可要求保护的范围或任何发明的范围构成限制,而是用于描述特定于具体发明的具体实施方式的特征。在单个实施方式中,还可以组合实现本公开中在独立实施方式的上下文中描述的特定特征。反之,在单个实施方式的上下文中描述的不同特征也可在多个实施方式中分别实施,或以适当的子组合来实现。此外,虽然特征可以在上面描述为在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变体。
[0183]
描述了本主题的具体实施方式。对于本领域技术人员明显是,所描述的实施方式的其他实施方式、改变和置换在所附权利要求的范围内。尽管在附图和权利要求中以特定顺序描述了操作,这不应被理解为:为了实现期望的结果,要求按所示的特定次序或按顺序次序来执行这些操作,或者要求执行所有图示的操作(一些操作可以看作是可选的)。在某些情况下,多任务或并行处理(或者多任务和并行处理的组合)可以是优选地并且视情况来执行。
[0184]
此外,在上述的实施方式的各种系统模块和组件的分离或集成不应被理解为在所有实施方式中要求这样的分离或集成,并且应该理解的是,所描述的程序组件和系统一般可以一起集成在单个软件产品中或封装为多个软件产品。
[0185]
因此,上述对示例实施方式的描述不限定或限制本公开。在不脱离本公开的精神和范围的情况下,还可以存在其他改变、替换和变化。
[0186]
此外,下面的任何要求保护的实施方式被认为适用于至少一种计算机实施的方法;存储用于执行计算机实施的方法的计算机可读指令的暂时或非暂时性计算机可读介质;和计算机系统,该系统包括与硬件处理器可互操作地耦合的计算机存储器,所述硬件处理器被配置为执行计算机实施的方法或存储在计算机可读介质上的指令。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1