1.一种用于生成数字签名的方法,所述方法包括:
访问对称密钥,所述对称密钥基于临时公钥,并且所述临时公钥与临时私钥相关;
基于所述对称密钥和消息的第一部分生成密文;
独立于哈希函数并基于所述密文获得输入值,其中获得所述输入值包括:
产生所述密文与消息的第二部分的连结;和
对所述连结应用截短函数或约简函数中的至少一个;以及
根据所述临时私钥、输入值和长期私钥,在计算设备处生成数字签名值。
2.根据权利要求1所述的方法,其中获得输入值包括:以整数n为模约简所述密文与消息的第二部分的连结。
3.根据权利要求2所述的方法,其中整数n代表发生器点G的阶数,所述临时私钥是整数k,并且所述临时公钥是椭圆曲线点R=kG。
4.根据权利要求1所述的方法,其中获得输入值包括:将所述密文与消息的第二部分的连结截短到特定长度。
5.根据权利要求1所述的方法,包括:发起所述数字签名值、密文、以及消息的第二部分从计算设备向另一计算设备的传输。
6.根据权利要求1所述的方法,其中生成数字签名值包括计算s=k-de mod n,其中s表示数字签名值,k表示临时私钥,d表示与实体相关联的长期私钥,e表示输入值,以及n表示整数。
7.根据权利要求6所述的方法,其中所述临时公钥是第一椭圆曲线点R=kG,并且G是n阶的发生器点。
8.根据权利要求1所述的方法,还包括通过基于所述临时公钥估计密钥导出函数来生成所述对称密钥。
9.一种计算设备,包括:
存储指令的存储器;
处理器,被配置为当执行所述指令时使得所述计算设备执行以下操作:
访问对称密钥,所述对称密钥基于临时公钥,并且所述临时公钥与临时私钥相关;
基于所述对称密钥和消息的第一部分生成密文;
独立于哈希函数并基于所述密文获得输入值,其中获得所述输入值包括:
产生所述密文与消息的第二部分的连结;和
对所述连结应用截短函数或约简函数中的至少一个;以及
根据所述临时私钥、输入值和长期私钥生成数字签名值。
10.根据权利要求9所述的计算设备,其中获得输入值包括:以整数n为模约简所述密文与消息的第二部分的连结。
11.根据权利要求10所述的计算设备,其中整数n代表发生器点G的阶数,所述临时私钥是整数k,并且所述临时公钥是椭圆曲线点R=kG。
12.根据权利要求9所述的计算设备,其中获得输入值包括:将所述密文与消息的第二部分的连结截短到特定长度。
13.一种存储由数据处理装置运行时操作用于执行生成数字签名的操作的指令的非瞬时性计算机可读介质,所述操作包括:
访问对称密钥,所述对称密钥基于临时公钥,并且所述临时公钥与临时私钥相关;
基于所述对称密钥和消息的第一部分生成密文;
独立于哈希函数并基于所述密文获得输入值,其中获得所述输入值包括:
产生所述密文与消息的第二部分的连结;和
对所述连结应用截短函数或约简函数中的至少一个;以及
根据所述临时私钥、输入值和长期私钥生成数字签名值。
14.根据权利要求13所述的计算机可读介质,其中获得输入值包括:以整数n为模约简所述密文和消息的第二部分的连结。
15.根据权利要求14所述的计算机可读介质,其中整数n表示代表发生器点G的阶数,所述临时私钥是整数k,并且所述临时公钥是椭圆曲线点R=kG。
16.根据权利要求13所述的计算机可读介质,其中获得输入值包括:将所述密文和消息的第二部分的连结截短到特定长度。
生成数字签名\n背景技术\n[0001] 本说明书涉及在加密系统中生成和验证数字签名。加密系统使能公共通道上的安全通信。例如可以在公共密钥加密系统中实现数字签名方案。许多数字签名方案利用哈希函数,如哈希函数的传统SHA族。\n附图说明\n[0002] 图1是示例数据通信系统的示意图。\n[0003] 图2是示例签名过程的示意图。\n[0004] 图3是示例验证过程的示意图。\n[0005] 图4是示出生成数字签名的示例过程的流程图。\n[0006] 类似的参考数字和标记在各个附图中指示类似的元素。\n具体实施方式\n[0007] 本公开呈现了用于生成和验证数字签名的技术。在一些实施方式中,当签名方案利用独立于哈希函数获得的输入值时,可以提高数字签名方案的效率或安全性,或两者兼而有之。例如在一些情况下,可以更快地并使用相比于估计更复杂的函数(例如哈希函数)所消耗的处理资源更少的处理资源,获得输入值。此外,已经实现了对一些类型哈希函数的成功攻击,表明可能的安全性弱点。\n[0008] 图1是示例数据通信系统100的示意图。所述数据通信系统100包括第一终端102和第二终端104。数据通信系统100可以包括附加的、更少的或不同的组件。例如,数据通信系统100可以包括数据网络、存储设备、服务器(例如证书授权服务器等)、附加终端以及图中未示出的其他特征。\n[0009] 终端102和104可以经由数据网络或另一种类型的通信链路彼此通信以及与数据通信系统100中的其他组件通信。在图1所示的示例中,终端102向终端104发送签名的消息\n106。数据通信系统100可以支持额外的或不同类型的通信。\n[0010] 终端102和104可以实现为计算设备,计算设备通常可以包括数据处理装置、数据存储介质、以及数据通信接口。例如,图1中示出的终端102和104可以各自包括处理器、存储器、输入/输出控制器、以及其他组件。存储器可以包括例如:随机访问存储器(RAM)、存储设备(例如可写只读存储器(ROM)等)、硬盘或其他类型的存储介质。可以通过从其他源(例如从CD-ROM,通过数据网络从另一计算设备,或者以另一方式)加载程序,以对计算设备进行预编程或编程(和重新编程)。输入/输出控制器可以与输入/输出设备(例如,监视器、键盘等)以及数据网络连接。输入/输出设备可以通过诸如串行链路、无线(例如红外、射频等)链路、并行链路或其他类型的链路接收和发送模拟或数字形式的数据。\n[0011] 计算设备的存储器可以存储与计算机应用、程序以及计算程序模块和其他资源相关联的指令(例如计算机代码)。例如,存储器可以存储与计算机程序模块相关联的指令。存储器还可以存储可由应用、程序、模块或虚拟机解译的应用数据和数据对象。存储器可以存储例如与操作系统、设备驱动器、存档数据或其他类型信息相关联的文件和指令之类的附加信息。\n[0012] 计算设备的处理器可以执行指令,以基于数据输入生成输出数据。例如,处理器可以通过运行或解译软件、脚本、函数、可执行文件以及其他类型的计算机程序模块运行应用和程序。例如,处理器可以执行图2、3和4中所示出的操作中的一个或更多。由处理器接收的输入数据以及由处理器生成的输出数据可以存储在例如存储器或存储设备的计算机可读介质中。\n[0013] 数据通信系统100可以包括任何合适的数据通信网络或其他通信链路。例如,数据网络可以包括无线或有线网络、蜂窝网、电信网、企业网络、专用公共网络、局域网(LAN)、广域网(WAN)、私有网络、公共网络(例如互联网)、WiFi网络、包括卫星链路的网络或另一类型的数据通信网络。数据网络可以包括由防火墙或者实现各种安全等级的类似特性的分层结构。在一些实施方式中,终端102和104可以独立于网络通信。例如,终端102和104可以通过短距离无线通信链路(例如光链路、红外链路、邻近射频链路、或其他类型无线或有线通信链路)直接彼此通信。\n[0014] 终端102和104通常可操作用于接收、发送、处理和存储信息。图1示出的示例终端\n102和104可以基于由加密系统指定的通信方案彼此通信。尽管图1示出了两个终端102和\n104,数据通信系统100可以包括任意数量的终端。数据通信系统100可以包括终端的组或子组,其中的终端可以彼此通信但不必与其它组或子组中的终端通信。数据通信系统100可以包括不同类型的终端、不同类型的硬件和软件配置以及各种不同位置。在一些情况下,多个设备或子系统可以一起被识别为单个终端。\n[0015] 终端可以包括例如监视器、触摸屏、鼠标或键盘之类的用户接口设备。终端可以包括例如智能电话、个人数字助理(PDA)、便携媒体播放器、膝上型电脑、笔记本电脑、平板电脑及其他之类的手持设备。终端可以包括工作站、大型机、非便携计算系统、安装在建筑物、车辆及其他类型的安装上的设备。终端可以包括嵌入式系统。例如,终端可以实现为嵌入博彩游戏芯片或另一类型的系统或组件的计算设备。还可以使用其他类型的终端。\n[0016] 签名消息106可以包括任何类型的电子文档、数据文件、数据对象或者其他类型的信息。在一些情况下,签名消息106是电子邮件消息、电子文档或能够由适合的软件应用编辑和呈现的电子数据文件。在一些情况下,签名消息106是数据消息或者用于硬件组件中信令应用的数据消息的组合。例如,签名消息可能包括由博彩游戏芯片发送的标识符或状态信息。视情况而定,可以发送其他类型的消息。\n[0017] 在操作的一方面,终端102向终端104发送签名消息106。终端102可以通过生成数字签名形成签名消息106。视情况而定,数字签名可以与其它数据结合。例如,数字签名可以与明文消息、密文消息、寻址信息或其他类型的数据的全部或部分结合,以形成签名消息\n106。在一些实施方式中,数字签名与底层消息分别发送。终端104接收签名消息106并验证数字签名。\n[0018] 签名消息106的数字签名可以基于椭圆曲线加密或其他类型的加密方案生成。在椭圆曲线加密(ECC)方案中,在椭圆曲线群的椭圆曲线点中对信息进行编码。可以根据有限域(例如质数有限域或特征-2有限域)方程的解来描述椭圆曲线群。椭圆曲线群的每个点可以表示为与椭圆曲线方程解对应的一对域元素。椭圆曲线群还包括标识元素。作为特定示\n3 2\n例,假设 代表质数有限域,其中p为奇质数,并假设 满足4.a +27.b ≠0(mod p)。可由参数 定义的 上的椭圆曲线群 包括针对表示方程y2≡x3+a.x+b\n(mod p)解 的点集M=(x,y),以及作为椭圆曲线群 的标识元素的点\n[0019] 在ECC方案中,上的可以由六元组T=(p,a,b,G,n,h)确定标识 上的椭圆曲线域参数。整数p指定有限域 如上所述,域元素 指定 上的椭圆曲线\n上的椭圆曲线点G=xG,yG)是基点发生器。整数n指定具有属性 的\n的基点发生器G的阶数。辅助因子h等于 是椭圆曲线 上的点\n数除以基点发生器G的阶数。备选地,可以在其他类型的有限域上标识椭圆曲线域参数。例如,可以由六元组T=(m,f(x),a,b,G,n,h)标识在特征2的域 上的椭圆曲线域参数,其中m是指定有限域 的整数,并且f(x)是指定 表示的m阶不可约二次多项式。\n[0020] 在ECC方案中,可以基于例如T=(p,a,b,G,n,h)或T=(m,f(x),a,b,G,n,h)的有效椭圆曲线域参数,生成椭圆曲线密钥对(d,Q)。可以通过在区间[1,n-1]中选择随机整数d,计算Q=dG,并输出密钥对(d,Q)来生成密钥对。可以通过随机数发生器选择或获得随机整数d。\n[0021] 在一些实施方式中,可以独立于哈希函数,或者使用少于传统基于ECC的数字签名技术的哈希函数,来生成和验证基于ECC的数字签名方案中的数字签名。传统的基于ECC的数字签名方案的示例包括:椭圆曲线数字签名算法(ECDSA),椭圆曲线Pintsov-Vanstone签名(ECPVS)方案等。在一些实例下,哈希函数可以由恒等函数、截短函数、以发生点阶数为模的约简(reduction)、以更小但更方便的值(如2的幂)为模的约简,或者另一类型的函数替代。恒等函数或者其他函数可以应用于密文,密文可以固有地包括充足的熵以避免冲突。\n[0022] 图2是示例签名过程200的示意图。例如,签名过程200可以由终端102用于生成图1中所示的签名消息106。签名过程200可以接收将要签名的输入消息206作为输入。在230处,获得临时私钥k。临时私钥k可以是例如通过伪随机发生器或另一类型的硬件或软件模块从存储器或远源获取的或者本地生成的整数值。在234处,可以获得临时公钥R=kG,其中G是发生器点。可以获得并使用长期私钥d(也称为“静态”公钥)来计算长期(或“静态”)公钥Q=dG。长期私钥d以及临时私钥k可以在238处由签名实体用来产生数字签名值s。长期公钥Q和临时公钥R可以由验证实体用于验证数字签名(例如,图3中所示)。\n[0023] 在236处,例如可以通过估计密钥导出函数(KDF),将临时公钥234用于生成对称密钥K。可以在签名和验证操作二者中使用密钥导出函数KDF。在一些实施方式中,密钥导出函数KDF用于导出密钥数据K=KDF(keydatalen,Z,OtherInput),其中keydatalen是指定要生成的K的长度的整数,Z是共享的秘密值,并且OtherInput是一些(可选)额外输入。\nOtherInput可以包括在密钥导出过程中涉及的各方相互已知的一些私密信息。OtherInput还可以包括例如密钥导出过程中涉及的各方标识符之类的一些其它数据。\n[0024] 可以按照K=KDF(R)计算对称密钥,其中R=kG。密钥导出函数KDF可以是例如ANSI-X9.63-KDF、IKEv2-KDF、TLS-KDF、NIST-800-56-Concatenation-KDF、或者另一种类型的密钥导出函数。在一些实施方式中,密钥导出函数KDF可以是另一种类型的函数(例如恒等函数、约简函数、或者截短函数)。例如,当对称加密方案足够强(例如,在高级加密标准-加密块链(AES-CBC)中,其中可以对比密钥长的消息进行加密)时,可以使用恒等函数、约简函数或截短函数满足特定的安全等级。\n[0025] 如图2所示,可以将输入消息206分为两个消息部分202和204。消息部分204(表示为V)可以设置为对第三方可见(即,无需解密即可观察到),而消息部分202(表示为V)不可以。消息部分202可以加密形成密文221。例如,可以基于根据K=KDF(R)计算得出的对称密钥K,使用对称加密方案ENd生成密文C=ENCK(U)中。例如,对称加密方案可以是:CBC模式中的三重DES、XOR加密方案、AES-CBC加密方案、或者另一类型的加密方案。可以在期望的安全等级选择对称加密方案。例如,在κ-比特安全等级,如果选择了AES块加密,则密钥数据K的八比特组长度keydatalen可以满足8·keydatalen≥κ;如果选择了XOR加密方案,则可以选择加密数据K使得K的比特长度等于输入加密函数的数据的比特长度。\n[0026] 在223处,然后可以基于密文C和消息206生成输入值e可以。在图2所示的示例输入值e等于与V级联连结的密文C,如恒等函数e=id(C||V)所示。视情况而定,可以独立于哈希函数,基于额外的或不同的数据输入而获得输入值e。这样,在这个示例中,可以根据与消息部分V连结的密文C计算值e,而无需调用或者利用哈希函数。输入值e可以然后用于生成签名值s。\n[0027] 在一些实施方式中,使用恒等函数、截短函数、约简函数或不使用哈希算法的其他类型的函数,基于密文C获得输入值e。在一些实例中,输入值e可以包括:密文C的全部或部分、消息部分V的全部或部分、或其组合、以及可能的其他信息。当使用截短函数时,截短函数可以接收C||V的初始值或另一初始值,并将初始值截短到特定长度。例如,截短函数可以保留特定数量的最高有效位、特定数量的最低有效位,或初始值的另一子集。可以通过包括一些常规的截短技术的任何合适的技术执行截短。当使用约简函数时,约简函数可以接收初始值C||V或者另一初始值,并以特定整数为模约简初始值。例如,整数可以是n(发生器点G的阶数)或者是更小的整数(例如2的幂)。可以通过任何合适的技术(包括一些常规的约简技术)执行以整数为模的约简。在一些实例中,当使用恒等函数时,输入值e是值C||V(或者其他值)本身,并且不需要额外的计算(即不必估计恒等函数),因为恒等函数的输出与恒等函数的输入相等。\n[0028] 在图2所示的示例中,通过估计s=k-de mod n,基于临时私钥k、长期私钥d以及输入值e通过生成签名值s,其中n是发生器点G的阶数。然后,签名消息106可以包括数字签名。\n在图2所示示例中,数字签名表示为密文C、消息部分V以及签名值s的组合(C,V,s)。数字签名可以具有额外的或者不同的内容,并且它可以具有图2中示出的格式或者合适的不同格式。签名消息106可以发送到可以验证数字签名255的接收设备。\n[0029] 图3是示例验证过程300的示意图。验证过程300例如可以由终端104用于验证图1中所示的签名消息106。示例验证过程300示出了可以被执行以验证由图2中的示例方案生成的数字签名的操作。视情况而定,可以针对其它数字签名方案修改过程300。\n[0030] 图3中示出的验证过程300接收签名消息310的数字签名305作为输入。在331处,生成输入值e。如图3所示,输入值e可以等于与包括在数字签名305中的消息部分V级联连结的密文C。可以独立于哈希函数,通过约简、截短或者操纵与消息部分V连结的密文C来获得输入值e。如在图2的签名方案中,在图3的示例验证方案中,可以根据与消息部分v连结的密文C计算值e,而不调用或利用哈希函数。\n[0031] 在333处,可以使用R=sG+eQ计算临时公钥333。这里,s=k-de mod n是包括在数字签名305中的签名部分,G是发生器点,并且Q=dG是长期公钥。在335处,例如可以使用密钥导出函数K=KDF(R)计算对称密钥K可以。对称密钥K的计算可以对应于图2中在236处用于获得对称密钥的操作。在337处,然后可以使用U=DECK(C)计算消息部分U,其中DEC是在图2中221处用于生成密文C的对称加密方案中的解密操作。可以针对冗余性检查消息U,以验证数字签名的有效性。例如,可以使用常规的冗余检查或任何其他合适的冗余检查。\n[0032] 图4是示出生成数字签名示例过程400的流程图。过程400可以通过任何合适的硬件(例如通过计算设备或者计算设备系统)实现。在一些实例中,过程400可以由图1中示出的终端102或者另一类型的系统或模块实现。图4中示出的示例签名过程400可以使用附加的、更少的或者不同的操作实现,不同的操作可以用示出的顺序或者不同的顺序执行。在一些实施方式中,操作的一个或更多可以重复或迭代(例如直到达到中止状态)。\n[0033] 在一些示例实施例中,可以在受限的环境(例如,通过嵌入博彩芯片中的硬件安全模块)中实施过程400的全部或部分。在这样的环境中,就逻辑门而言,哈希函数会非常昂贵。因此,用强哈希函数(例如SHA-1),或者基于强哈希函数(例如SHA-1)的密钥导出函数KDF实现数字签名方案会是昂贵的。此外,对哈希函数的攻击已经揭示:一些哈希函数可能不会在所有实例中提供所期望的安全等级。这样,在特定上下文中,利用恒等函数、约简函数、截短函数或另一种类型的低计算成本函数可以在允许生成并采用更少的成本验证数字签名的同时,潜在地提供等同或者更好的安全性。\n[0034] 为了说明,示例签名过程400的操作在下面被描述为由椭圆曲线加密系统的终端实施。例如,签名过程400可以使用在ECPVS数字签名方案中使用的特定操作。示例过程400也可以用于不同类型的加密系统中。\n[0035] 在410处,访问对称密钥。可以从本地存储器、远程设备或另一源访问该对称密钥。\n该对称密钥基于与临时私钥相关联的临时公钥。例如,临时私钥可以从伪随机发生器中获得,并且临时公钥可以计算为临时私钥与发生器点的乘积。于是,可以通过基于临时公钥估计密钥提取函数来计算对称密钥。\n[0036] 在420处,基于对称密钥和消息生成密文。该密文可以基于对称密钥和消息的第一部分生成。例如,可以按照C=ENCK(U)计算该密文,其中U是消息的第一部分,K=KDF(R)是密钥导出函数,R=kG是临时公钥,并且k是临时私钥。任何合适的加密函数ENC或者其他技术可以用于产生密文,并且密文可以基于额外的或不同的输入数据生成。\n[0037] 在430处,输入值独立于哈希函数并基于密文生成。生成输入值可以包括执行以整数为模的约简。输入值可以是,或者可以基于密文与消息的第二部分的连结。例如,输入值可以是C||V,其中C是密文并且V是消息的第二部分。作为另一个示例,可以通过将C||V截短到特定长度,通过特定整数约简C||V,或者另一种技术生成输入值。输入值e可以用于生成签名的分量s=k-de mod n,其中n是发生器点G的阶数,d是生成数字签名的实体的长期私钥,并且k是临时私钥。\n[0038] 在440处,生成数字签名。数字签名可以与实体相关联。例如,实体可以是用户、计算设备、用户账户或另一类型的实体。数字签名包括密文、消息的第二部分以及基于输入值生成的签名分量。数字签名可以从一个计算设备向另一计算设备传送,例如图1中示出的从终端102向终端104传送。可以后续在接收终端验证数字签名。\n[0039] 在本说明书中描述的主题和操作可以在数字电路、或计算机软件、固件或硬件,包括在本说明书中公开的结构以及与它们等同的结构,或者其中一个或更多的组合中实现。\n在说明书中描述的一些主题可以实现为一个或更多计算机程序,即,在用于通过数据处理装置运行或控制数据处理系统的操作的非瞬时性计算机介质上编码的计算机程序指令的一个或更多模块。备选地或者另外地,程序指令可以被编码以发送到合适接收机装置以由数据处理装置运行。计算机存储介质可以是或者包括在计算机可读存储设备、计算机可读存储基板、随机或串行随机存储阵列或设备或者是它们中一个或更多的组合。计算机存储介质可以是,或者包括在,一个或更多单独的物理组件或介质(例如,多张卡、盘或其他存储设备)中。\n[0040] 在本说明书中描述的操作可以实现为由数据处理装置在一个或更多计算机可读存储器设备上存储的或者从其他源接收的数据上执行的操作。术语“数据处理装置”涵盖用于处理数据的各种装置、设备以及机器,作为示例,包括:可编程处理器、计算机、片上系统,或者前述的多个或其组合。装置可以包括专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))。除了硬件之外,装置还可以包括:创建针对考虑中的计算机程序的可执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行环境、虚拟机或者它们中的一个或更多的组合的代码。装置和运行环境可以实现各种不同计算模型基础设施,例如网络服务器、分布式计算和网格计算基础设施。\n[0041] 计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译或解译语言、说明性或过程语言)书写,并且计算机程序也可以用任何形式部署,包括部署为单机程序或者模块、组件、子例程、或者适用于计算环境的其他单元。计算机程序可以但不必须对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或更多脚本),在专用于所考虑的程序的单个文件中,或者在多个协同的文件(例如,存储一个或更多模块、子程序或者代码的一部分的文件)中。可以部署计算机程序运行于一个计算设备、或者位于一个网址或分布在多个网址并通过通信网络互联的多个计算设备上。\n[0042] 本说明书中描述的过程和逻辑流可以通过一个或更多可编程处理器执行,可编程处理器通过针对输入数据和生成输出操作而运行一个或更多计算机程序执行动作。过程和逻辑流可以由专用逻辑电路(例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路))执行,并且装置也可以实现为该专用逻辑电路。\n[0043] 作为示例,适用于计算机程序运行的处理器包括:通用和专用微处理器、以及任何种类的数字计算装置中的一个或更多处理器。通常,处理器将从只读存储器或随机访问存储器或者两者中接收指令和数据。计算设备的必要元素是用于根据指令执行动作的处理器以及用于存储指令和数据的一个或更多存储器装置。通常,计算装置还将包括,或者可操作地连接到用于存储数据的一个或更多存储设备中,从用于该存储设备接收数据或向该存储设备发送数据,或者两者兼而有之。然而,计算设备不必具有这样的设备。此外,计算机可以嵌入另一设备(例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收机,或者便携存储设备(例如通用串行总线(USB)闪存驱动),仅举几例)。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,作为示例,包括半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移除盘);磁光盘;以及CD-ROM和DVD-ROM。处理器和存储器可以通过专用逻辑电路补充或包括在专用逻辑电路中。\n[0044] 为了提供与用户的交互,本说明书描述的主题可以在具有显示设备(例如,用于向用户显示信息的LCD(液晶显示)屏)以及用户可以经其向计算机提供输入的键盘和指示设备(例如触摸屏、手写笔、鼠标等)的计算机上实现。其他种类的设备也可以用于提供与用户的交互(例如,向用户提供的反馈可以是任何形式的感官反馈(例如视觉反馈、听觉反馈,或者触觉反馈));并且来自用户的输入也可以用包括声音、语音或触觉输入的任何形式接收。\n另外,计算设备可以通过向由用户使用的设备发送文档以及从用户使用的设备接收文档与用户交互(例如响应于从网络浏览器接收的请求在用户客户端设备上发送网页)。\n[0045] 在本说明书中描述的主题可以在计算系统中实现,该计算系统包括:后端组件,例如作为数据服务器);或中间件,例如应用服务器;或前端组件,例如具有用户可以通过其与本说明书中描述主题的实施方式交互的图形用户界面或网络浏览器的客户端计算设备;或者一个或更多这种后端、中间件或前端组件的任意组合。系统的组件可以通过任何形式或者介质的数字数据通信(例如,数据网络)互联。\n[0046] 计算系统可以包括客户端和服务器。客户端与服务器通常远离彼此并且通常通过数据网络交互。凭借在各自计算机上运行并彼此具有客户端-服务器关系的计算机程序建立客户端与服务器之间的关系。在一些实施方式中,服务器向客户端设备传送数据。在客户端设备生成的数据可以从在服务器处的客户端设备接收。\n[0047] 尽管本说明书包括许多实施细节,这些不应当被解释为对所要求保护的范围的限制,而应当作为特定于一些实施例的特征的描述。在本说明书单独实施例的上下文中描述的特定特征也可以在单个实施方式的组合中实现。反之,在单个实施方式上下文中描述的各种特征也可以在单独的多个实施方式或者在任何合适的子组合中实施。此外,尽管以上特征被描述为在特定组合以及甚至最初所要求的那样操作,但是在一些情况下可以从组合中去除所要求保护的组合中的一个或更多特征。并且所要求保护的组合可以为子组合或子组合的变换。\n[0048] 类似地,尽管在附图中以特定的顺序描述操作,这不应当理解为要求以示出的特定顺序或相继顺序执行这种操作,或者执行全部所说明的操作,以获取期望的结果。在特定情况下,多任务以及并行处理可能是有利的。此外,在上述实施例中各种系统组件的分离不应当理解为在所有实施方式中要求这种分离,并且应当理解所述程序组件和系统通常可以在单个软件产品中集成在一起或者封装进多个软件产品中。\n[0049] 在总的方面,公开了一种生成数字签名的方法。所述生成数字签名的方法可以包括访问对称密钥。该对称密钥基于临时公钥。临时公钥与临时私钥相关联。密文基于对称密钥和消息生成。输入值独立于哈希函数基于密文生成。数字签名基于临时私钥、输入值和长期私钥生成。\n[0050] 这些及其他方面的实施方式可以包括以下特征中的一个或更多。密文基于对称密钥以及消息的第一部分生成。获得输入值包括产生密文与消息的第二部分的连结。获得输入值包括以整数n为模约简密文与消息的第二部分。整数n表示发生器点G的阶数,临时私钥是整数k,并且临时公钥是椭圆曲线点R=kG。获取输入值包括将密文以及消息的第二部分截短到特定长度。从计算设备向另一计算设备发送数字签名值、密文和消息的第二部分。\n[0051] 此外或备选地,这些以及其他方面的实施方式可以包括以下特征中的一个或更多。数字签名可以包括密文以及消息的第二部分。生成数字签名包括s=k-de mod n,其中s表示数字签名,k表示椭圆私钥,d表示与实体相关联的私钥,e表示输入值,并且n表示整数。\n临时公钥是第一椭圆曲线点R=kG,并且G是n阶发生器点。对称密钥可以通过基于临时公钥估计密钥获取函数而生成。\n[0052] 因此,已经描述了实施例的主题。其他实施例也在所附权利要求的范围内。在一些情况下,权利要求所述的动作可以以不同的顺序执行,并仍能实现所期望的结果。此外,相应附图中描述的过程不必要求所示的特定顺序或者连续的顺序,以获取所期望的结果。在特定实施方式中,多任务和并行处理会是有利的。
法律信息
- 2019-11-12
专利权的转移
登记生效日: 2019.10.23
专利权人由塞尔蒂卡姆公司变更为黑莓有限公司
地址由加拿大安大略变更为加拿大安大略省沃特卢市
- 2018-06-08
- 2014-12-03
实质审查的生效
IPC(主分类): H04L 9/32
专利申请号: 201180076454.1
申请日: 2011.12.28
- 2014-10-29
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-06-16
|
2009-12-11
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |