1.一个或多个方面一般涉及促进计算环境内的处理,尤其涉及促进在计算环境内执行加密操作。
背景技术:2.密码技术(cryptography)用于在计算环境内提供安全通信,包括消息的安全传输。密码技术包括加密消息,使得只有授权方可以读取所发送的消息。例如,在加密期间,使用加密技术对明文消息进行编码以提供加密的消息或密文。将加密的消息发送给经授权的接收者。接收者接收加密的消息,并使用相同的加密技术对其进行解密,以提供消息的明文。
3.有许多可以使用的加密技术,包括基于椭圆曲线的那些。这种加密技术包括例如椭圆曲线签名算法(ecdsa)和爱德华曲线数字签名算法(eddsa)。在使用这些技术执行密码技术时,所执行的常见的、计算密集的运算是标量乘法运算。在利用椭圆曲线的密码技术中,常见的、非常计算密集的运算是标量乘法运算。本发明基于操作的曲线和质数(prime)创建单个硬件指令以实现该操作。以前,这些操作是用软件例程执行的,并且涉及太多的计算以致于不能在大多数计算机上以硬件实现。
4.因此,在本领域中需要解决上述问题。
技术实现要素:5.从第一方面来看,本发明提供了一种促进计算环境内的处理的计算机实现的方法,所述计算机实现的方法包括:获得指令,所述指令是单个架构指令;以及执行所述指令,所述执行包括:确定多个标量乘法函数中由所述待执行的指令支持的标量乘法函数;获得用于待执行的标量乘法函数的输入,所述输入包括至少一个源分量和标量值;以及使用所述输入执行所述标量乘法函数以提供将在加密操作中使用的输出。
6.从另一方面来看,本发明提供了一种用于促进计算环境内的处理的计算机系统,该计算机系统包括:存储器;以及耦接到存储器的处理器,其中,计算机系统被配置为执行一种方法,该方法包括:获得指令,所述指令是单个架构指令;以及执行所述指令,所述执行包括:确定多个标量乘法函数中由所述待执行的指令支持的标量乘法函数;获得用于待执行的标量乘法函数的输入,所述输入包括至少一个源分量和标量值;以及使用所述输入执行所述标量乘法函数以提供将在加密操作中使用的输出。
7.从另一方面来看,本发明提供了一种用于促进计算环境内的处理的计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质可由处理电路读取并且存储由所述处理电路执行以便执行用于执行本发明的步骤的方法的指令。
8.从另一方面来看,本发明提供了一种存储在计算机可读介质上并且可加载到数字计算机的内部存储器中的计算机程序,包括软件代码部分,当所述程序在计算机上运行时,用于执行本发明的步骤。
9.通过提供一种用于促进计算环境内的处理的计算机程序产品,克服了现有技术的缺点,并提供了附加的优点。该计算机程序产品包括可由处理电路读取并且存储用于执行方法的指令的计算机可读存储介质。所述方法包括获得指令,所述指令是单个架构指令。执行所述指令,且所述执行包括确定多个标量乘法函数中由待执行的指令支持的标量乘法函数。获得用于待执行的标量乘法函数的输入,且所述输入包括至少一个源分量和标量值。使用所述输入来执行所述标量乘法函数以提供将在加密操作中使用的输出。
10.通过使用单个架构指令来执行标量乘法函数,用于执行该函数的原语(primitive)软件指令的重要子集被该单个架构指令所取代。用单个架构指令替换这些原语指令降低了程序的复杂性,并消除了包括用于优化原语指令的代码的需要。整体性能得到改善。此外,不需要分配寄存器和存储器来保存中间结果,从而释放资源用于其它并行操作。
11.在一个示例中,执行标量乘法函数包括执行椭圆曲线上的点的标量乘法。该点由至少一个源分量指定。作为示例,椭圆曲线上的点由该至少一个源分量的第一源分量和该至少一个源分量的第二源分量指定。例如,第一源分量和第二源分量经由使用与指令相关联的寄存器定位的参数块被输入到指令。
12.执行标量乘法函数包括例如沿着椭圆曲线执行一系列点相加和点加倍。
13.在一个示例中,执行标量乘法函数包括使用以下等式:(xr,yr)<=d*(xs,ys),其中,xs和ys是该至少一个源分量并且是椭圆曲线上的点的坐标,d是标量值,*是标量乘法,并且xr和yr是标量乘法函数的结果坐标,结果坐标是输出。
14.作为示例,d包括从一个位(例如,d的最高有效位)扫描到另一个位(例如,d的最低有效位)的多个位,并且在一个示例中,执行标量乘法函数还包括对于d的多个位中等于选定值的位,发生点相加,并且在扫描每一位之后,发生点加倍。
15.在一个示例中,所述多个标量乘法函数包括针对多个质数的多个椭圆曲线数字签名算法函数的多个标量乘法函数。作为另一个示例,多个标量乘法函数包括针对多个质数的多个爱德华曲线数字签名算法函数的多个标量乘法函数。
16.本文还描述并要求保护与一个或多个方面相关的计算机实现的方法和系统。此外,本文还描述并要求保护与一个或多个方面相关的服务。
17.通过本文所述的技术实现了额外的特征和优点。其它实施例和方面在本文中详细描述,且被视为所要求保护的方面的一部分。
附图说明
18.在说明书结尾处的权利要求中作为示例特别指出并清楚地要求保护一个或多个方面。结合附图,一个或多个方面的前述和目的、特征和优点将从以下详细描述中变得显而易见,在附图中:
19.图1a描绘了用于结合和使用本发明的一个或多个方面的计算环境的一个示例;
20.图1b描绘了根据本发明的一个或多个方面的图1a的处理器的进一步细节;
21.图2描绘了用于结合和使用本发明的一个或多个方面的计算环境的另一示例;
22.图3a示出了根据本发明的一个方面的执行加密计算(pcc)指令的一种格式;
23.图3b描述了根据本发明的一个方面的由指令使用的隐式寄存器(通用寄存器0)的
字段的一个示例;
24.图3c描述了根据本发明的一个方面的由指令支持的函数码的一个示例;
25.图3d描述了根据本发明的一个方面的由指令使用的另一隐式寄存器(通用寄存器1)的字段的一个示例;
26.图4a
‑
4e描述了根据本发明的一个方面的由执行加密计算指令的各种函数使用的参数块的内容的示例;
27.图5a
‑
5b描绘了根据本发明的一个方面的促进计算环境内的处理的一个示例;
28.图6a描绘了用于结合和使用本发明的一个或多个方面的计算环境的另一示例;
29.图6b描述了图6a的存储器的进一步细节;
30.图7描绘了云计算环境的一个实施例;以及
31.图8描绘了抽象模型层的一个示例。
具体实施方式
32.根据本发明的一个方面,提供了促进计算环境内的处理的能力。作为一个示例,提供单个指令(例如,在硬件/软件接口处的单个架构的硬件机器指令)以执行操作,诸如执行加密计算操作,其促进用于加密操作的标量乘法操作的执行。该指令是通用处理器指令集体系结构(isa)的一部分,其由诸如通用处理器的处理器上的程序(例如,操作系统或用户程序)分派。
33.在一个实例中,称为执行加密计算(pcc)指令的指令用于执行例如加密操作的标量乘法函数。该指令例如是由纽约阿蒙克的国际商业机器公司提供的z/体系硬件体系结构的消息安全辅助扩展(例如,消息安全辅助扩展9)设施的一部分。消息安全辅助扩展提供了对消息的椭圆曲线密码技术认证、椭圆曲线密钥的生成和标量乘法的支持。
34.参考图1a描述了用于结合和使用本发明的一个或多个方面的计算环境的一个实施例。计算环境100包括例如处理器102(例如,中央处理单元)、存储器104(例如,主存储器;也称为系统存储器、主存储器、中央存储装置、存储装置)以及经由例如一个或多个总线108和/或其它连接彼此耦接的一个或多个输入/输出(i/o)设备和/或接口106。
35.在一个示例中,处理器102是基于由纽约阿蒙克的国际商业机器公司提供的z/体系结构硬件体系结构,并且是诸如ibm服务器的服务器的一部分,该ibm服务器也由国际商业机器公司提供并且实现z/体系结构硬件体系结构。z/体系结构硬件体系结构的一个实施例在2017年九月的ibm出版物号sa22
‑
7832
‑
11的第12版的题为“z/architecture principles of operation(z/体系结构的操作原理)”的出版物中描述。然而,z/体系结构硬件体系结构仅是一个示例体系结构;其它体系结构和/或其它类型的计算环境可包括和/或使用本发明的一个或多个方面。在一个示例中,处理器执行诸如操作系统的操作系统,该操作系统也由国际商业机器公司提供。
36.处理器102包括用于执行指令的多个功能组件。如图1b所示,这些功能组件包括,例如,用于获取待执行指令的指令提取组件120;用于对所提取的指令进行解码并获得所解码的指令的操作数的指令解码单元122;用于执行所解码的指令的指令执行组件124;用于
在必要时为了指令执行而访问存储器的存储器访问组件126;以及提供所执行指令的结果的写回组件130。根据本发明的一个或多个方面,这些组件中的一个或多个可以包括在标量乘法处理(或可以使用本发明的一个或多个方面的其它处理)中使用的一个或多个其它组件的至少一部分或可以访问这些组件,标量乘法处理是诸如用于加密操作的标量乘法处理。一个或多个其它分量包括例如标量乘法分量(或其它分量)136。
37.参考图2描述了包含和使用本发明的一个或多个方面的计算环境的另一示例。在一个示例中,计算环境是基于z/体系结构硬件体系结构;然而,计算环境可以是基于由国际商业机器公司或其它公司提供的其它体系结构。
38.参考图2,在一个示例中,计算环境包括中央电子复合体(cec)200。cec 200包括多个组件,诸如,例如,耦接到一个或多个处理器(也称为中央处理单元(cpu))204和输入/输出子系统206的存储器202(也称为系统存储器、主存储器、主存储装置、中央存储装置、存储装置)。
39.存储器202包括例如一个或多个逻辑分区208、管理逻辑分区的管理程序210以及处理器固件212。管理程序210的一个示例是由纽约阿蒙克的国际商业机器公司提供的处理器资源/系统管理器(pr/sm
tm
)管理程序。如这里所使用的,固件包括例如处理器的微代码。它包括例如在实现更高级的机器代码时使用的硬件级指令和/或数据结构。在一个实施例中,它包括例如专有代码,该专有代码通常作为包括可信软件的微代码或底层硬件专用的微代码来传递,并且控制操作系统对系统硬件的访问。
40.每个逻辑分区208能够作为单独的系统来工作。即,每个逻辑分区可以被独立地重置,运行诸如z/os操作系统的访客操作系统220或另一操作系统,并且利用不同的程序222来操作。在逻辑分区中运行的操作系统或应用程序看起来可以访问整个系统,但实际上,只有一部分系统是可用的。
41.存储器202耦接到处理器(例如,cpu)204,其是可以被分配给逻辑分区的物理处理器资源。例如,逻辑分区208包括一个或多个逻辑处理器,每个逻辑处理器代表可以动态分配给逻辑分区的物理处理器资源204的全部或一部分。
42.此外,存储器202耦接到i/o子系统206。i/o子系统206可以是中央电子复合体的一部分或与其分离。它引导主存储装置202和输入/输出控制单元230以及耦接到中央电子复合体的输入/输出(i/o)设备240之间的信息流。
43.可以使用许多类型的i/o设备。一种特定类型是数据存储设备250。数据存储设备250可以存储一个或多个程序252、一个或多个计算机可读程序指令254和/或数据等。计算机可读程序指令可以被配置为执行本发明的各方面的实施例的功能。
44.作为一个示例,每个处理器204包括和/或访问在执行标量乘法(和/或本发明的一个或多个方面的其他操作)以用于例如加密操作中使用的标量乘法组件(或其他组件)260。在各种示例中,可以存在执行这些任务的一个或多个组件。许多变化是可能的。
45.中央电子复合体200可以包括和/或耦接到可移动/不可移动、易失性/非易失性计算机系统存储介质。例如,它可以包括和/或耦接到不可移动的、非易失性磁性介质(通常称为“硬盘驱动器”)、用于从可移动的、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器、和/或用于从可移动的、非易失性光盘(诸如cd
‑
rom、dvd
‑
rom或其它光学介质)读取或向其写入的光盘驱动器。应当理解,其它硬件和/或软件组件可以与中央电子复合体200
结合使用。示例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、raid系统、磁带驱动器和数据档案存储系统等。
46.此外,中央电子复合体200可与众多其它通用或专用计算系统环境或配置一起操作。可适于与中央电子复合体200一起操作的众所周知的计算系统、环境和/或配置的示例包括但不限于:个人计算机(pc)系统、服务器计算机系统、瘦客户机、厚客户机、手持型或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费型电子产品、网络pc、小型计算机系统、大型计算机系统及包括以上系统或设备中的任一者的分布式云计算环境等。
47.尽管在此描述了计算环境的各种示例,但是本发明的一个或多个方面可以与许多类型的环境一起使用。这里提供的计算环境仅仅是示例。
48.根据本发明的一个方面,诸如计算环境100或中央电子复合体200的计算环境采用消息安全辅助扩展设施,该设施提供了一种执行例如椭圆曲线加密操作的标量乘法运算的机制。在一个示例中,当设施指示符被设置为例如一时,设施被安装在系统中。作为z/体系结构硬件体系结构的一个特定示例,当以z/体系结构的体系结构模式安装设施时,设施位155被设置为例如一。该工具包括例如执行加密计算指令,下面描述其实施例。
49.参照图3a
‑
3d描述执行加密计算指令的一个实施例。在一个示例中,使用诸如通用处理器(例如,处理器102或204)的处理器来执行指令。在本文的说明书中,指示了特定位置、特定字段和/或字段的特定大小(例如,特定字节和/或位)。然而,可以提供其他位置、字段和/或大小。此外,尽管指定了将位设置为特定值,例如一或零,但这仅是示例。在其它实例中,可将所述位设定为不同值,例如相反值或另一值。许多变化是可能的。
50.参考图3a,在一个示例中,执行加密计算(pcc)指令300的格式是rre格式,rre格式表示具有扩展操作码(opcode)字段的寄存器和寄存器操作。作为示例,指令包括具有指示执行加密计算操作的操作码的操作码字段302(例如,位0
‑
15)。在一个示例中,忽略指令的位16
‑
31。
51.在一个实施例中,指令的执行包括使用一个或多个隐式通用寄存器(即,未由指令明确指定的寄存器)。例如,如本文所述,在指令的执行中使用通用寄存器0和1。在一个示例中,通用寄存器0含有影响指令的操作的各种控制,且通用寄存器1用于提供由指令使用的参数块的位置。
52.作为一个示例,参考图3b,通用寄存器0(304)包括包含函数码的函数码字段306。在一个特定示例中,通用寄存器0的位位置57
‑
63含有函数码;但是在其它实施例中,可以使用其它位来包含函数码。此外,在一个示例中,通用寄存器0的位56将为零;否则,识别出规范异常。在此示例中,忽略通用寄存器0的所有其它位。
53.在图3c中示出了用于该执行加密计算指令的实例分配函数码,且所述函数码包括(例如):函数码0(310),其指示pcc
‑
query函数;函数码1(312),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
dea函数;函数码2(314),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
tdea
‑
128函数;函数码3(316),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
tdea
‑
192函数;函数码9(318),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
encrypted
‑
dea函数;函数码10(320),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
encrypted
‑
tdea
‑
128函数;函数码11(322),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
encryted
‑
tdea
‑
192函
数;函数码18(324),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
aes
‑
128函数;函数码19(326),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
aes
‑
192函数;函数码20(328),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
aes
‑
256函数;函数码26(330),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
encrypted
‑
aes
‑
128函数;函数码27(332),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
encrypted
‑
aes
‑
192函数;函数码28(334),其指示pcc
‑
compute
‑
last
‑
block
‑
cmac
‑
using
‑
encrypted
‑
aes
‑
256a函数;函数码50(336),其指示pcc
‑
compute
‑
xts
‑
parameter
‑
using
‑
aes
‑
128函数;函数码52(338),其指示pcc
‑
compute
‑
xts
‑
parameter
‑
using
‑
aes
‑
256函数;函数码58(340),其指示pcc
‑
compute
‑
xts
‑
parameter
‑
using
‑
encrypted
‑
aes
‑
128函数;函数码60(342),其指示pcc
‑
compute
‑
xts
‑
parameter
‑
using
‑
encrypted
‑
aes
‑
256函数;函数码64(344),其指示pcc
‑
scalar
‑
multiply
‑
p256函数;函数码65(346),其指示pcc
‑
scalar
‑
multiply
‑
p384函数;函数码66(348),其指示pcc
‑
scalar
‑
multiply
‑
p521函数;函数码72(350),其指示pcc
‑
scalar
‑
multiply
‑
ed25519函数;以及函数码73(352),其指示pcc
‑
scalar
‑
multiply
‑
ed448函数。
54.每个函数使用参数块,并且在一个示例中,参数块的大小取决于该函数。图3c中描绘了用于所述函数的示例参数块大小,以及如果适用的话,描绘了示例数据块大小。在该示例中,没有分配其他函数码。尽管描述了示例函数和函数码,但是可以使用其他函数和/或函数码。
55.如所指示的,每个函数使用参数块。参数块由例如通用寄存器1来指定。参见图3d,在一个示例中,通用寄存器1的内容(350)指定例如存储装置中参数块的最左字节的逻辑地址352。例如,在24位寻址模式中,通用寄存器1的位位置40
‑
63的内容构成地址,并且忽略位位置0
‑
39的内容。在31位寻址模式中,通用寄存器1的位位置33
‑
63的内容构成地址,并且忽略位位置0
‑
32的内容。在64位寻址模式中,通用寄存器1的位位置0
‑
63的内容构成地址。在访问寄存器模式中,访问寄存器1指定包含参数块的地址空间。下面进一步描述根据本发明的一个方面的关于指令所支持的各种功能的参数块的附加细节。
56.如由该cpu、其他cpu和信道程序所观察到的,对参数块的引用可以是多址访问引用,对这些存储位置的访问不一定是块并发的,并且这些访问或引用的顺序是未定义的。
57.如所指示的,该执行加密计算指令支持多个函数。在指令的执行中,执行由通用寄存器0中的函数码指定的函数。下面描述了由指令支持的一些函数,包括根据本发明的一个或多个方面提供的那些函数:
58.pcc
‑
query(函数码0)
59.查询函数提供了指示其它函数的可用性的机制。指令所使用的操作数和地址的位置如图3b和3d所示。
60.参考图4a描述了查询函数所使用的参数块的一个示例。如图所示,在一个示例中,参数块400包括例如128位状态字402。该字段的位0
‑
127分别对应于pcc指令的函数码0
‑
127。当位是例如一时,相应的函数被安装;否则,该函数不被安装。
61.在一个示例中,当pcc
‑
query函数的执行完成时设置条件码0;条件码1、2和3不适用于该函数。
62.pcc
‑
scalar
‑
multiply(函数码64、65、66、72和73)
63.在一个实施例中,支持五个pcc
‑
scalar
‑
multiply函数,并且下面提供了相应的函
数码:
64.·
pcc
‑
scalar
‑
multiply
‑
p256(函数码64)
65.·
pcc
‑
scalar
‑
multiply
‑
p384(函数码65)
66.·
pcc
‑
scalar
‑
multiply
‑
p521(函数码66)
67.·
pcc
‑
scalar
‑
multiply
‑
ed25519(函数码72)
68.·
pcc
‑
scalar
‑
multiply
‑
ed448(函数码73)
69.这些函数中的三个函数pcc
‑
scalar
‑
multiply
‑
p256、pcc
‑
scalar
‑
multiply
‑
p384和pcc
‑
scalar
‑
multiply
‑
p521使用ecdsa技术用于所选择的国家标准技术研究所(nist)质数(例如,p256、p384、p521)。其它两个函数,pcc
‑
scalar
‑
multiply
‑
ed25519和pcc
‑
scalar
‑
multiply
‑
ed448,对所选择的质数(例如ed25519、ed448)使用eddsa技术。
70.在一个示例中,在pcc
‑
scalar
‑
multiply函数的执行中,该函数实现如下所示的椭圆曲线上的点的标量乘法,在一个示例中:
71.(xr,yr)<=d*(xs,ys)
72.其中,坐标xs和ys表示的输入点乘以标量d,这产生坐标xr和yr表示的点。点的标量乘法可以通过沿着椭圆曲线的一系列点相加和点加倍来实现。例如,从最高有效位到最低有效位扫描d的位。在一个示例中,在标量d中,每一位等于一,发生点相加,并且在扫描每一位之后,发生点加倍。通过一系列点相加和点加倍,执行整体标量乘法。
73.为了进一步解释,在一个示例中,标量或整数乘以在有限域上定义的椭圆曲线上的点。例如从最高有效位到最低有效位扫描标量,如果标量的位是一,则将该点加到当前求和点,并且在扫描每一位之后,求和点加倍。由点相加产生的求和点被定义为由通过被相加的两点的直线与椭圆曲线相交产生的点的负数。点加倍是类似的,但是通过相同点的直线不是明确定义的,所以实际上使用在该点处椭圆曲线的切线,并且求和点是切线与椭圆曲线相交的负点。存在数学捷径来确定求和点的最终x和y坐标,而无需绘制椭圆曲线的图形。点加倍和点相加的数学公式取决于例如椭圆曲线。
74.如所指示,标量乘法函数的操作数经由参数块提供,下文描述该参数块的示例。在描述各种函数的参数块之后描述参数块的字段的额外细节。
75.参考图4b描述了pcc
‑
scalar
‑
multiply
‑
p256函数和pcc
‑
scalar
‑
multiply
‑
ed25519函数的参数块的一个示例。在一个示例中,参数块404包括例如结果x分量(xr)405、结果y分量(yr)406、源x分量(xs)407、源y分量(ys)408、标量(d)409和被保留的保存区域410。图4b中描绘了参数块内的示例偏移量。
76.此外,参考图4c描述了pcc
‑
scalar
‑
multiply
‑
p384函数的参数块的一个示例。在一个示例中,参数块412包括例如结果x分量(xr)413、结果y分量(yr)414、源x分量(xs)415、源y分量(ys)416、标量(d)417和被保留的保存区域418。图4c中描绘了参数块内的示例偏移量。
77.此外,参考图4d,pcc
‑
scalar
‑
multiply
‑
p521函数的参数块420包括例如结果x分量(xr)421、结果y分量(yr)422、源x分量(xs)423、源y分量(ys)424、标量(d)和被保留的保存区域425。图4d中描绘了参数块内的示例偏移量。
78.类似地,参考图4e,pcc
‑
scalar
‑
multiply
‑
ed448函数的参数块426包括例如结果x分量(xr)427、结果y分量(yr)428、源x分量(xs)429、源y分量(ys)430、标量(d)431和被保留
的保存区域432。图4e中描绘了参数块内的示例偏移量。
79.下面描述用于各种pcc
‑
scalar
‑
multiply函数的参数块的字段的进一步细节。在一个示例中:
80.结果x分量(xr):这是从标量乘以曲线上的源点的乘积得到的椭圆曲线上的点的x分量。例如,它是大于或等于零且小于函数的质数的整数,并且在该字段中是右对齐的。pcc
‑
scalar
‑
multiply函数的结果的一部分被存储到参数块中的该字段。
81.结果y组分(yr):这是从标量乘以曲线上的源点的乘积得到的椭圆曲线上的点的y分量。例如,它是大于或等于零且小于函数的质数的整数,并且在该字段中是右对齐的。pcc
‑
scalar
‑
multiply函数的结果的一部分被存储到参数块中的该字段。
82.源x分量(xs):这是作为标量乘法的源的椭圆曲线上的点的x分量。x在该字段中是右对齐的,并且忽略左边的字节。xs是例如大于或等于零且小于函数的质数的整数。如果它大于质数,则报告等于一的条件码。
83.源y分量(ys):这是作为标量乘法的源的椭圆曲线上的点的y分量。ys在该字段中是右对齐的,并且左边的字节被忽略并且可以是随机值。ys是例如大于或等于零且小于函数的质数的整数。如果它大于质数,则报告等于一的条件码。
84.标量(d):这是pcc
‑
scalar
‑
multiply函数的源整数标量。d在该字段中是右对齐的,并且左边的字节被忽略并且可以是随机值。例如,d是大于或等于零且小于曲线的阶数的整数,其小于质数。如果d不在该范围内,则报告等于一的条件码。曲线的阶数是例如在针对曲线的标准(例如,在2013年7月发行的fips pub 186
‑
4、联邦信息处理标准出版物、数字签名标准(dss)、2017年1月的因特网研究任务组(irtf)rfc
‑
8032的爱德华曲线数字签名算法(eddsa))中提供的与曲线相关联的参数值。
85.被保留的保存区域:被保留的保存区域是将要用于保存要使用的状态信息的预定量的存储器,例如,如果指令在部分完成中结束,则允许在部分完成的点处重新开始指令。
86.即使指令实际上仅存储xr和yr字段,也可以识别参数块中任何位置的存储类型访问异常。
87.在一个实施例中,如果xs和ys不在指定曲线上,或者它们中的任何一个大于质数模量,或者如果d不大于零且小于曲线的阶数,则报告等于一的条件码,并且不更新结果。
88.示例条件:
89.在一个示例中,识别规范异常,并且如果发生以下任何情况,则不采取其他动作:
90.1.通用寄存器0的位56不为零。
91.2.通用寄存器0的位57
‑
63指定未分配或未安装的函数码。
92.示例结果条件码:
93.0正常完成
94.1验证模式失配或源操作数在曲线上是否超出范围
95.2无效位索引或消息长度
96.3部分完成
97.示例程序异常:
98.·
访问(提取,参数块;提取和存储,中间位索引,xts参数,初始链接值)
99.·
操作(如果没有安装message
‑
security
‑
assist扩展4)
100.·
规范
101.·
事务约束
102.针对pcc的执行示例优先级包括例如:
103.1.
‑
6.对于一般情况,具有与程序中断条件的优先级相同的优先级的异常。
104.7.a第二指令半字的访问异常。
105.7.b操作异常。
106.7.c事务约束。
107.8.由于无效函数码或无效寄存器号而导致的规范异常。
108.9.由于消息长度原本为零而产生的条件码0。
109.11.a由于验证图案失配而产生的条件码1。
110.11.b.由于无效位索引或消息长度而产生的条件码2。
111.12.由于正常完成(消息长度最初非零,但是步进到零)而产生的条件码0。
112.13.由于部分完成(消息长度仍然非零)而产生的条件码3。
113.编程注释:
114.如果程序要频繁地测试函数的可用性,则它应当在初始化期间执行查询函数一次;随后,它应当利用诸如屏蔽下测试(test under mask)之类的指令来检查存储器中的查询函数的存储结果。
115.如本文所述,在一个方面中,提供单个指令(例如,硬件/软件接口处的单个架构的机器指令,例如,执行加密计算指令)以使用例如通用处理器来执行标量乘法函数,例如,以供在加密操作中使用。该指令例如是在指令集架构(isa)中定义的硬件指令。结果,降低了与标量乘法函数相关的程序的复杂度。此外,改进了函数的性能,并因此改进了处理器的性能。与软件实现相比,执行单个指令需要明显更少的执行周期来执行相同的操作。
116.作为示例,标量乘法用于从私钥创建公钥。私钥是质数标量,并且它与生成器点相乘以给出公钥,公钥是一个点。作为其它示例,标量乘法被用于生成将要在对消息进行签名和/或验证数字签名时使用的数字签名。通过在硬件中执行这些功能,存在更多的安全性,并且实现时序是独立于输入的。
117.尽管描述了执行加密计算指令的各种字段和寄存器,但是本发明的一个或多个方面可以使用其它、附加或更少的字段或寄存器,或者其它大小的字段和寄存器等。许多变化是可能的。例如,可以使用隐式寄存器来代替明确指定的寄存器或指令的字段,和/或可以使用明确指定的寄存器或字段来代替隐式寄存器或字段。其它变化也是可能的。
118.本发明的一个或多个方面不可分地依赖于计算机技术,并促进计算机内的处理,从而提高其性能。使用单个架构机器指令来执行用于加密操作的标量乘法改进了计算环境内的性能。加密操作例如用于签名/验证消息和/或用于其它加密/解密操作。标量乘法和/或使用加密操作保护的消息可用于许多技术领域,例如计算机处理、医疗处理、安全性等。通过提供在执行例如用于加密操作的标量乘法时的优化,这些技术领域通过减少执行时间而得以改进。
119.参考图5a
‑
5b描述了与本发明的一个或多个方面相关的促进计算环境内的处理的一个实施例的进一步细节。
120.参考图5a,获得(500)指令(例如,执行加密计算),其为单一架构指令(502)。指令
由例如处理器(例如处理器102或204)的硬件执行(504)。硬件可以在处理器内或耦接到处理器以用于从处理器接收指令,处理器例如获得、解码和设置指令以在硬件上执行。其它变化是可能的。
121.所述执行包括例如确定指令所支持的多个标量乘法函数中的待执行的标量乘法函数(506)。在一个实例中,这是从例如通用寄存器0中指定的函数码确定的,并输入到指令。获得用于待执行的标量乘法函数的输入,且所述输入包括至少一个源分量和标量值(508)。使用输入执行标量乘法函数以提供将在加密操作中使用的输出(510)。
122.在一个示例中,执行标量乘法函数包括执行椭圆曲线上的点的标量乘法,该点由至少一个源分量指定(512)。作为示例,椭圆曲线上的点由至少一个源分量的第一源分量(例如,xs)和至少一个源分量的第二源分量(例如,ys)指定(514)。例如,第一源分量和第二源分量经由使用与指令相关联的寄存器(例如,通用寄存器1)定位的参数块被输入到指令(516)。
123.执行标量乘法函数包括例如沿着椭圆曲线执行一系列点相加和点加倍(518)。
124.在一个示例中,参考图5b,执行标量乘法函数包括使用以下等式:(xr,yr)<=d*(xs,ys),其中,xs和ys是该至少一个源分量并且是椭圆曲线上的点的坐标,d是标量值,*是标量乘法,并且xr和yr是标量乘法函数的结果坐标,结果坐标是输出(520)。输出(例如,xr,yr)被存储到对应于函数码的参数块。d包括例如从一个位(例如,d的最高有效位)扫描到另一个位(例如,d的最低有效位)的多个位(522)。在一个示例中,执行标量乘法函数还包括对于d的多个位中等于选定值的位,发生点相加,并且在扫描每一位之后,发生点加倍(524)。
125.作为一个示例,多个标量乘法函数包括用于多个质数的多个椭圆曲线数字签名算法函数的多个标量乘法函数(526)。作为另一个示例,多个标量乘法函数包括用于多个质数的多个爱德华曲线数字签名算法函数的多个标量乘法函数(528)。
126.其它变化和实施例是可能的。
127.本发明的各方面可由许多类型的计算环境使用。参考图6a描述用于结合和使用本发明的一个或多个方面的计算环境的另一实施例。在此示例中,计算环境10包括:例如,本机中央处理单元(cpu)12、存储器14,以及经由例如一个或多个总线18和/或其它连接而彼此耦接的一个或多个输入/输出设备和/或接口16。作为示例,计算环境10可包括:由纽约阿蒙克市的国际商业机器公司提供的powerpc处理器;由加利福尼亚州帕洛阿尔托的惠普公司提供的配备英特尔安腾ii处理器的hp superdome;和/或基于由国际商业机器公司、惠普公司、因特尔公司、甲骨文公司或其它公司提供的体系结构的其它机器。ibm、z/体系结构、ibm z、z/os、pr/sm和powerpc是国际商业机器公司在至少一个管辖权内的商标或注册商标。英特尔和安腾是英特尔公司或其子公司在美国和其他国家的商标或注册商标。英特尔和安腾ii是英特尔公司或其子公司在美国和其他国家的商标或注册商标。
128.本机中央处理单元12包括一个或多个本机寄存器20,诸如,在环境内的处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示在任何特定时间点的环境状态的信息。
129.此外,本机中央处理单元12执行存储在存储器14中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器14中的仿真器代码22。该代码使得在一个体系结构中配置的计算环境能够仿真另一种体系结构。例如,仿真器代码22允许基于不同于z/体系
结构硬件体系结构的体系结构的机器(诸如,powerpc处理器、pseries服务器、hp superdome服务器或其它)仿真z/体系结构硬件体系结构并执行基于z/体系结构硬件体系结构开发的软件和指令。
130.参考图6b描述与仿真器代码22有关的进一步细节。存储在存储器14中的访客指令30包括被开发为在不同于本机cpu 12的体系结构的体系结构中执行的软件指令(例如,与机器指令相关)。例如,访客指令30可能已经被设计为在基于z/体系结构硬件体系结构的处理器上执行,但是相反地,其在可以是例如英特尔安腾ii处理器的本机cpu 12上进行仿真。在一个示例中,仿真器代码22包括指令提取例程32,以从存储器14获得一个或多个访客指令30,并且可选地为所获得的指令提供本地缓冲。它还包括指令转换例程34,以确定所获得的访客指令的类型,并将访客指令转换成一个或多个对应的本机指令36。该转换包括:例如,识别将要由访客指令执行的功能,并选择执行该功能的本机指令。
131.另外,仿真器代码22包括仿真控制例程40以使本机指令被执行。仿真控制例程40可使本机cpu 12执行仿真一个或多个先前所获得的访客指令的本机指令的例程,并且在这种执行结束时,将控制返回到指令提取例程以仿真下一个访客指令或访客指令组的获得。本机指令36的执行可包括:将数据从存储器14加载到寄存器中;将数据从寄存器存储回存储器;或者执行如由转换例程确定的某种类型的算术或逻辑运算。
132.每个例程例如以软件实现,该软件存储在存储器中并由本机中央处理单元12执行。在其它示例中,一个或多个例程或操作以固件、硬件、软件或它们的一些组合实现。所仿真处理器的寄存器可使用本机cpu的寄存器20或通过使用存储器14中的位置来仿真。在实施例中,访客指令30、本机指令36和仿真器代码22可驻留在同一存储器中或可分配在不同的存储器设备中。
133.上述计算环境仅是可以使用的计算环境的示例。可以使用其他环境,包括但不限于其他非分区环境、其他分区环境和/或其他仿真环境;实施例不限于任何一种环境。
134.每个计算环境能够被配置成包括本发明的一个或多个方面。例如,根据本发明的一个或多个方面,每个可被配置成提供标量乘法以用于例如加密操作。
135.一个或多个方面可涉及云计算。
136.应理解,尽管本公开包括关于云计算的详细描述,但本文中所述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
137.云计算是服务交付的模型,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源能够以最小的管理成本或与服务提供商进行最少的交互来快速部署和释放。可配置计算资源例如是:网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务。这种云模型可以包括至少五个特征,至少三个服务模型和至少四个部署模型。
138.特征如下:
139.按需自助式服务:云的消费者在无需与服务提供商进行人为交互的情况下,能够单方面自动地按需部署计算能力,诸如服务器时间和网络存储。
140.广泛的网络接入:计算能力通过网络获得,并通过标准机制访问,该标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如,移动电话,膝上型电脑和pda)的使用。
141.资源池:提供商的计算资源被归入资源池,以使用多租户模式为多个消费者提供服务,其中根据需求动态分配和重新分配不同的实体资源和虚拟资源。通常消费者不能控制或者并不知晓所提供的资源的确切位置,但是可能能够在更高抽象级别(例如,国家,州或数据中心)指定位置,因此具有位置无关性。
142.迅速弹性:可以迅速、有弹性地(有时是自动地)部署计算能力,以快速扩展,并且能迅速释放来快速缩小。对于消费者来说,用于部署的可用计算能力通常显得是无限的,并能在任意时候都能获取任意数量的计算能力。
143.可测量的服务:云系统通过利用适于服务类型(例如,存储,处理,带宽和活跃用户帐户)的某种抽象级别的计量能力来自动控制和优化资源使用。可以监视,控制和报告资源使用,从而为所使用的服务的提供者和消费者提供透明度。
144.服务模型如下:
145.软件即服务(saas):提供给消费者的能力是使用提供商在云基础架构上运行的应用。可以通过诸如网络浏览器(例如,基于网络的电子邮件)的瘦客户机接口从各种客户机设备访问应用。消费者既不管理也不控制底层云基础架构,包括网络、服务器、操作系统、存储、甚至单个应用能力,可能的例外是有限的特定于用户的应用配置设置。
146.平台即服务(paas):提供给消费者的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用由提供商支持的编程语言和工具创建。消费者既不管理也不控制底层云基础架构,包括网络、服务器、操作系统或存储,但可以控制已部署的应用以及可能的应用托管环境配置。
147.基础架构即服务(iaas):提供给消费者的能力是部署处理、存储、网络和其它基础计算资源,其中消费者能够部署和运行任意软件,该软件可以包括操作系统和应用。消费者既不管理也不控制底层云基础设施,而是具有对操作系统,存储,部署的应用的控制,以及具有可能的对选择的网络组件(例如,主机防火墙)的有限控制。
148.部署模型如下:
149.私有云:云基础架构单独为组织运行。它可以由组织或第三方管理,可以存在于该组织内部或外部。
150.共同体云:云基础架构由多个组织共享,并支持具有共同利害关系(例如,任务使命,安全要求,策略和合规考虑)的特定共同体。它可能由组织或第三方管理,并且可能存在于该共同体内部或外部。
151.公共云:云基础架构向公众或大型产业群提供,并由销售云服务的组织所有。
152.混合云:云基础架构由两个或多个云(私有云,共同体云或公共云)组成,这些云仍然是独特的实体,但通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
153.云计算环境是面向服务的,特点集中在无状态,低耦合性,模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础设施。
154.现在参考图7,描绘了示意性的云计算环境50。如图所示,云计算环境50包括云的消费者使用本地计算设备可以与其通信的一个或多个云计算节点52,本地计算设备例如是个人数字助理(pda)或蜂窝电话54a,台式计算机54b,膝上型计算机54c和/或汽车计算机系统54n。节点52可以彼此通信。它们可以在一个或多个网络中物理地或虚拟地分组(未示
出),例如如上所述的私有云,共同体云,公共云或混合云,或其组合。这样,云的消费者无需维护本地计算设备上的资源就能够允许云计算环境50提供基础架构即服务、平台即服务和/或软件即服务。应该理解,图7中所示的计算设备54a
‑
n的类型仅仅是示意性的,而计算节点52和云计算环境50可以(例如,使用网络浏览器)通过任何类型的网络和/或网络可寻址连接与任何类型的计算设备通信。
155.现在参考图8,示出了由云计算环境50(图7)提供的一组功能抽象层。应该事先理解图8中所示的组件、层和功能仅仅是示意性的,并且本发明的实施例不限于此。如图所示,提供了以下层和相应的功能:
156.硬件和软件层60包括硬件和软件组件。硬件组件的示例包括主机61;基于risc(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
157.虚拟层70提供抽象层,从该抽象层可以提供以下虚拟实体的示例:虚拟服务器71;虚拟存储72;虚拟网络73(包括虚拟私有网络);虚拟应用和操作系统74;和虚拟客户端75。
158.在一个示例中,管理层80可以提供下面描述的功能。资源供应功能81提供用于在云计算环境内执行任务的计算资源和其它资源的动态获取。计量和定价功能82在云计算环境内对资源的使用进行成本跟踪,并且提供用于消费这些资源的帐单或发票。在一个示例中,这些资源可以包括应用软件许可。安全功能为云的消费者和任务提供身份认证,以及为数据和其它资源提供保护。用户门户功能83为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84提供云计算资源的分配和管理,以满足所需的服务水平。服务水平协议(sla)计划和履行功能85为根据sla预测的对云计算资源未来需求提供预先安排和供应。
159.工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图绘制与导航91;软件开发和生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;和标量乘法96。
160.本发明的各方面可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。该计算机程序产品可以包括一个计算机可读存储介质(或多个计算机可读存储介质),其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。
161.计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd
‑
rom)、数字通用光盘(dvd)、记忆棒、软盘、诸如在其上记录有指令的打孔卡或凹槽内凸起结构的机械编码装置、以及前述的任何合适的组合。这里使用的计算机可读存储介质不应被解释为瞬时信号本身,诸如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆传递的光脉冲)或通过电线传输的电信号。
162.本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如,因特网,局域网,广域网和/或无线网络)下载到外部计算机
或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
163.用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括诸如smalltalk,c++等的面向对象的编程语言,以及诸如“c”编程语言或类似编程语言的过程编程语言。计算机可读程序指令可以完全在用户的计算机上执行、部分地在用户计算机上执行、作为独立的软件包执行、部分地在用户计算机上并且部分地在远程计算机上执行、或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者,可以连接到外部计算机(例如,利用互联网服务提供商来通过互联网连接)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化定制电子电路,该电子电路执行计算机可读程序指令,以便执行本发明的各方面。
164.本文参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本发明的各方面。将理解,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令实现。
165.这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器来生产出机器,以使得通过计算机的处理器或其它可编程数据处理装置执行的指令创建用于实现流程图和/或一个框图块或多个框图块中所指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,这些计算机可读程序指令可以使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,以使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或一个框图块或多个框图块中指定的功能/动作的各方面的指令。
166.计算机可读程序指令还可以被加载到计算机,其它可编程数据处理装置或其它设备上,以使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,这样在计算机、其它可编程装置或其它设备上执行的指令实现在流程图和/或一个框图块或多个框图块中指定的功能/动作。
167.附图中的流程图和框图示出根据本发明的各种实施例的系统,方法和计算机程序产品的可能实施方式的体系结构,功能和操作。在这方面,流程图或框图中的每个框可以表示模块、程序段或指令的一部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中所标注的功能可以不按图中所示的顺序发生。例如,连续示出的两个框实际上可以基本上并行地执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行特定功能或动作,或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
168.除了上述之外,可以由提供客户环境管理的服务提供商提供、给予、部署、管理、服
务一个或多个方面。例如,服务提供商可以创建、维护、支持计算机代码和/或为一个或多个客户执行一个或多个方面的计算机基础设施。作为回报,服务提供商可以例如根据订阅和/或费用协议从客户接收付款。附加地或替代地,服务提供商可以从向一个或多个第三方销售广告内容来接收付款。
169.在一方面中,可以部署应用以执行一个或多个实施例。作为一个示例,应用的部署包括提供可操作以执行一个或多个实施例的计算机基础结构。
170.作为另一方面,可以部署计算基础设施,包括将计算机可读代码集成到计算系统中,其中与计算系统结合的代码能够执行一个或多个实施例。
171.作为又一方面,可以提供一种用于集成计算基础设施的过程,包括将计算机可读代码集成到计算机系统中。该计算机系统包括计算机可读介质,其中该计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。
172.尽管以上描述了各种实施例,但这些仅是示例。例如,具有其它体系结构的计算环境可用于合并和使用一个或多个实施例。此外,可以使用不同的指令或操作。此外,不同的寄存器和/或其它类型的加密算法可以被使用。多个变化是可能的。
173.此外,其它类型的计算环境可以受益并被使用。作为示例,适用于存储和/或执行程序代码的数据处理系统是可用的,其包括直接或通过系统总线间接耦接到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间使用的本地存储器,大容量存储和高速缓存存储器,该高速缓存存储器提供至少一些程序代码的临时存储,以便减少执行期间必须从大容量存储重新取回代码的次数。
174.输入/输出或i/o设备(包括但不限于键盘,显示器,指示设备,dasd,磁带,cd,dvd,拇指驱动器和其它存储介质等)可以直接耦接到系统或通过介入i/o控制器而耦接到系统。网络适配器还可以耦接到系统,以使数据处理系统能够通过介入私有或公共网络而耦接到其它数据处理系统或远程打印机或存储设备。调制解调器,电缆调制解调器和以太网卡只是可用类型的网络适配器中的一小部分。
175.本文使用的术语仅出于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元素和/或组件的存在,但不排除存在或者添加一个或多个其它特征、整数、步骤、操作、元素、组件和/或它们的组合。
176.以下权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作和等同物(如果有的话)旨在包括如所具体要求保护的用于结合其它要求保护的元件来执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对一个或多个实施例的描述,但是并不旨在穷举或限制于所公开的形式。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域普通技术人员能够理解具有各种修改的各种实施例适合于预期的特定用途。