半确定性数字签名生成的制作方法

文档序号:11142854阅读:535来源:国知局
半确定性数字签名生成的制造方法与工艺

本申请案主张在2014年6月2日在美国专利及商标局提出申请的美国非临时专利申请案第14/294,015号的优先权及权益,所述美国非临时专利申请案的全部内容以引用的方式并入本文中。

技术领域

各种特征涉及数字签名生成,特定来说,基于随机数的数字签名生成。



背景技术:

如果随机数(即,由此些程序使用的每消息秘密编号)重复用于不同消息,那么例如数字签名算法(DSA)及椭圆曲线DSA(ECDSA)的数字签名方案可能失败。即,黑客或恶意实体可确定与数字签名一起使用的长期密钥,借此任凭所述恶意实体创建另外看起来有效的假签名。为解决此问题,已提出随机数的确定性生成,其中根据k=HMAC(d,h(m))大致生成随机数k,其中d为长期私用密钥,h为散列函数,m为待签名的消息且HMAC为基于散列的消息鉴别码函数。每一消息借此确定性地导致给定密钥d的单个k值。例如,在2013年8月的T.Pornin的“数字签名算法(DSA)及椭圆曲线数字签名算法(ECDSA)的确定性使用(Deterministic Usage of the Digital Signature Algorithm(DSA)and Elliptic Curve Digital Signature Algorithm(ECDSA))”中描述确定性方法。确定性方法的一个问题为其可能将私用密钥暴露给某些旁道攻击(例如,差分功率分析(DPA)),这是因为攻击者可重复测量以减少原本阻碍攻击的噪音。

根据对上述论文的请求注释(RFC)(即,RFC 6979,ISSN:2070-1721),旁道攻击为每当攻击者可准确地测量实施方案的方面时的考虑因素,例如,执行签名操作所花费的时间长度或在签名操作时所消耗的功率。此些算法的确定性可因此对呈一些旁道攻击形式的攻击者有用且因此实施方案应使用防御措施以避免通过旁道泄露私用密钥。应注意,在用于产生签名的签名生成操作的取幂或点乘部分中,DSA(或类似技术)很少成为利用旁道(例如功率、电磁辐射或定时)的DPA类型旁道分析攻击的目标,这是因为随机数针对签名谕示的每一调用不同。相反,攻击者采用对攻击者能力更多限制的简单功率分析(SPA)技术,例如,无法重复测量以减少旁道中的噪音。随机数的确定性生成可有助于消除或阻碍此天然旁道电阻。换句话说,尽管随机数的确定性生成可有助于减少数字签名技术中的某些缺陷,但可出现其它缺陷

因此,提供经改进的基于随机数的程序供用于(例如)生成数字签名将是有用。



技术实现要素:

可在用于获得数字签名的数字签名生成装置中操作的方法包含:使用所述数字签名生成装置来获得非随机性且非确定性随机数;及使用所述数字签名生成装置部分地基于所述非随机性且非确定性随机数来获得数字签名。

在另一方面中,装置包含处理电路,所述处理电路经配置以获得非随机性且非确定性随机数及部分地基于所述非随机性且非确定性随机数而获得数字签名。

在另一方面中,装置包含:用于获得非随机性且非确定性随机数的装置;及用于部分地基于所述非随机性且非确定性随机数而获得数字签名的装置。

在另一方面中,提供用于获得数字签名的机器可读存储媒体,所述机器可读存储媒体包含一或多个指令,所述一或多个指令在由至少一个处理电路执行时致使所述至少一个处理电路进行以下操作:获得非随机性且非确定性随机数及部分地基于所述非随机性且非确定性随机数而获得数字签名。

附图说明

图1说明经受旁道攻击的DSA/ECDSA系统;

图2说明经受旁道攻击的另一示范性DSA/ECDSA系统,其中系统包含智能卡读卡器;

图3说明示范性加密签名装置、签名验证装置及其间交换的信息。

图4说明移动装置的示范性系统单芯片(SoC),其中SoC包含具有加密签名装置及签名验证装置的数字签名处理器。

图5提供用于基于使用每消息值(即,加密盐)导出的随机数的数字签名生成的示范性程序的概述。

图6说明用于基于使用每消息值(即,加密盐)导出的随机数生成数字签名的示范性程序。

图7为说明采用可利用图1到6的系统、方法及设备的处理系统的设备的硬件实施方案的实例的框图。

图8为说明图7的处理电路的示范性组件的框图。

图9为说明图7的机器可读媒体的示范性指令组件的框图。

图10提供供数字签名生成使用的示范性程序的另一概述,其中随机数是从每消息值(即,加密盐)导出。

图11提供供数字签名生成使用的示范性程序的概述,其中随机数是半确定性生成。

图12提供供数字签名生成使用的另外示范性程序。

具体实施方式

在以下描述中,给出特定细节以对本发明的某些方面有透彻的理解。然而,所属领域的技术人员将理解,可在无这些特定细节的情况下实践各方面。举例来说,可以框图展示电路以便避免以不必要细节模糊态样。在其它例子中,众所周知电路、结构及技术可未以细节展示以便不模糊本发明的方面。

措词“示范性”在本文中用于意指“用作实例、例子或说明”。本文中描述为“示范性”的任一实施方案或方面未必解释为比本发明的其它方面优选或有利。同样地,术语“方面”不需要本发明的所有方面包含所论述的特征、优点或操作模式。

概述

数个新颖特征关于供基于随机数数字签名生成的装置及方法。基于随机数数字签名方案的实例为上述DSA,其为最初由美国国家标准与技术研究(NIST)在1991年8月提出的美国联邦数字签名处理标准。常规DSA可被如下描述。获取素数p及q,其中为q的阶数。假设d为长期私用密钥,其为随机选择且满足1≤d<q。假设y=gd mod p为公用密钥。将h标示为加密散列函数。为对消息m进行签名,系统在1≤k≤q范围中随机一致地选择随机数k(即,每消息秘密编号)且用下式计算签名(r、s):

r=gk mod p mod q (1)

s=k-1(h(m)+rd)mod q (2)

其中h(m)为m的散列,例如通过使用安全散列算法(SHA)-1或SHA-2(至少在DSA实例中)。

ECDSA为类似的但在的椭圆曲线上操作。采用随机数的其它此些签名方案包含El Gamal、Schnorr、Nyberg-Rueppel、俄罗斯标准GOST R 34.10-2001数字签名算法(其中GOST为俄罗斯首字母缩写,实际上意指“国家标准”),及韩国基于认证的DSA(KCDSA)。在这些技术情况下,如果k被重复用于两个不同消息,那么方案立即被中断。即,获得具有两个未知数的两个方程式,所述两个未知数可用高斯消元法来求解以确定随机数k及秘密私用密钥d:

s1=k-1(h(m1)+rd)mod q (3)

s2=k-1(h(m2)+rd)mod q (4)

此情况实际上可在签名时因(例如)不良加密工程或缺少熵而发生。就此来说,DSA及ECDSA(及其它类似基于随机数的签名方案)可实际上由于随机数的高质量每消息随机性要求而中断。如上文所述,已提出其中确定性生成k的解决方案,基本上如下计算k:

k=HMAC(d,h(m)) (5)

即,针对密钥d假定特定值,每一消息确定性导致单一k值。此处,将HMAC应用于长期私用密钥d,用消息m的嵌套散列函数h得出k。因此,不需要任何每消息随机性。然而,如上文所阐释,伴随确定性随机数可产生旁道缺陷。

关于术语的注释:值k(其为“每消息秘密编号”,或“会话签名密钥”)为便利及简洁起见在本文中被称作“随机数”。然而,值k的特性不同于更传统随机数,这是因为值k提供保密性、独特性及不可预测性(即,熵),而更传统随机数不提供或需要这些属性中的每一者。因此,当所述术语在本文中使用时,“随机数”为供数字签名生成中使用的每消息秘密编号,其提供至少一些量的保密性、独特性及不可预测性。

图1说明经受旁道攻击的示范性数字签名系统100。简要地,消息102是由加密签名装置106处理,所述加密签名装置可采用DSA或ECDSA程序来使用私用密钥104生成数字签名以对消息进行签名。接着经由通常不安全信道109传送经签名的消息108,其中所述经签名的消息由DSA或ECDSA签名验证装置112使用公用密钥110加以处理以产生是/否验证114。如果由签名装置106使用的随机数为确定性,那么数字签名程序可易受到旁道攻击装置或系统116的损害,所述旁道攻击装置或系统监视与签名装置106相关联的功率及定时信息118,例如通过监视由电源122提供的功率信号120以获得功率签名及定时信息,可能将私用密钥暴露于攻击者或其它恶意实体(例如,黑客)。相反地,如果由签名装置106使用的随机数是随机指派(即,随机数为完全不确定性),那么数字签名程序在随机数有时重复时易受到上述高斯消元程序的损害。如所述,如果相同随机数重复用于不同消息,那么程序的安全性立即失败,从而允许黑客获得私用密钥。

图2说明经受旁道攻击的另一示范性数字签名系统200,其中受攻击的系统为接纳一或多个智能卡204的智能卡读卡器206。此外,如果用于生成由智能卡采用的数字签名的随机数为确定性,那么私用密钥可能由旁道攻击系统(其在此实例中包含功率测量示波器216及旁道计算机/分析器217)基于从由电源222提供的功率信号220获得的功率及定时信息218而导出。此外,在此实例中,电磁感应(EMI)信号、听觉信号等219可被合适传感器或检测器221获得以供计算机/分析器217进行分析。可对通用串行总线(USB)装置、智能电话等发动类似攻击以在使用确定性随机数的情况下导出私用密钥。

因此,在一个方面中,本文中描述用于基于每消息值(即,加密盐)v(特定来说,经选择以生成半确定性随机数(即,既非完全确定性也非完全随机性的随机数)的加密盐)而生成随机数k的技术。应注意,常规地,通常将“加密盐”认为是用作单向函数的额外输入的随机数据值,所述单向函数散列密码或口令句。然而,本文中,术语加密盐是指可被设置成完全随机性、完全确定性或既非完全随机性也非完全确定性的值的每消息值。在本文中所描述的各种实例中,加密盐值经设置以便生成半确定性随机数,其中“半确定性”在本文中经定义为以具有介于完全随机性与完全确定性之间的部分量的确定性为特征。然而,在其它实例中,加密盐可被设置成完全随机性值以产生完全随机性随机数。加密盐还可被设置成空串以产生完全确定性随机数。半确定性还可被称作半随机性。

此外,应注意,加密盐v可为在限制或约束值范围内随机获得。此加密盐为非完全随机性。因此,使用在有限的值范围(相对于与用于从随机数生成数字签名的数字签名生成协议相关联的完整的值范围)内随机获得的加密盐值所获得的随机数在本文中被认为半确定性随机数,这是因为随机数将为既非完全确定性也非完全随机性。本文中所描述的实例包含从加密盐导出的随机数,其中所述加密盐是从仅32位的值而非从较大量可能值间“随机地”选择。此外,本文中应注意,非随机性随机数的“非随机性”是以至少部分确定性及非完全随机性为特征。非确定性随机数的“非确定性”是以至少部分地随机性且非完全确定性为特征。

在一个特定实例中,随机数k是如下生成(其中||表示连接):

k=HMAC(d||v,h(m)) (6)

其中h(m)为消息m的散列,d为长期密钥且v为加密盐。加密盐可为(例如)以下各项中的一或多者:秘密随机数、公用随机数、计数器、上下文特定消息或甚至空串(其中秘密随机数及公用随机数可为未必经受上述对k的考虑的传统随机数)。应注意,如果每消息加密盐值v为空串,那么公式恢复到方程式5的确定性方法。如此,签名方案将保持安全免于随机数重复使用但可能损失旁道安全性。如果从完全可能值范围随机且一致地选择v,那么方案为完全非确定性且因此保持另外常规非确定性数字签名技术(例如,DSA(其易受随机数重复使用损害))性质。在其中每消息加密盐值v为非随机性且非确定性的状况下,例如如果加密盐为计数器或上下文特定消息,那么方程式6的公式提供半确定性随机数k,此通常由于所引入的非确定性而使得旁道攻击极其困难(同时还避免随机数重复使用)。就此来说,计数器为半确定性,这是因为(a)待签名的给定消息m不会在采用计数器时确定性地导致相同随机数k,且(b)所述计数器并非随机性且因此并非完全非确定性。同样地,上下文特定消息为半确定性,这是因为(a)给定消息m由于上下文特定消息基于上下文变化而不会确定性地导致相同随机数k且(b)上下文特定消息并非随机值且因此并非完全非确定性。秘密随机数或公用随机数(用作每消息加密盐值v)同样为半确定性,只要此些值并非完全随机性也非完全确定性。公用随机数可已被提供在协议消息中,例如,在“客户端问候”传输层安全性(TLS)消息。

还应注意,基于每消息加密盐值v而生成随机数k允许数字签名生成系统在随机数重新使用并非关注重点的情况中(例如,在随机获得随机数的值范围如此大使得随机数重新使用并非实际问题的情况下)便利地采用随机数。同样地,基于每消息加密盐值v而生成随机数k允许数字签名生成系统在其中旁道攻击并非关注重点的情况中便利地采用完全确定性随机数。即,每消息加密盐值v的使用允许单个数字签名生成系统根据整体安全性需求基于v的选择而便利地利用确定性、半确定性或完全非确定性属性。本文中概括地讲,函数v=s(x)可用于表示用于生成或以其它方式获得供用于生成半确定性随机数k的半确定性每消息加密盐值v(从某一输入串、值或其它函数x)的任何函数、程序或算法。如所属领域的技术人员可了解,可根据本文中一般教示提供广泛各种半确定性函数s(x)。还应注意,本文中,术语“获得”广泛地覆盖(例如)运算、计算、生成、获取、接收、检索、输入或执行任何其它合适对应动作。

图3提供说明密签名装置302及签名验证装置304的示范性操作的时序图300。处理在305处以如下操作开始:加密签名装置302输入(已建立的公用/私用密钥对y,d中的)私用密钥d,及获得每消息加密盐值v作为(例如)秘密随机数、公用随机数、计数器、上下文特定消息或空串,即,非随机性且非确定性的加密盐。私用密钥d可为从(例如)加密签名装置302的存储装置输入,其中所述私用密钥是在利用签名验证装置304(在一些实例中,结合未展示的可信机构装置或认证机构装置)的初始公用密钥/私用密钥生成及交换程序(未展示)之后被存储。在基于DSA的实例中,采用某些全局参数,包含p、q及g,其中p为素数,g为群生成元且q为群阶(且为g的乘性阶)。在说明性DSA实例中,p为素数,其中针对512≤L≤1024且L为64的倍数(即,在64位的增量N中使用介于512位与1024位之间的位长度),2L1<p<2L。然而,在(例如)256的增量(N)的情况下,L可较长,例如高达3072或更多。在其中L在512≤L≤1024的范围中的说明性DSA实例中,q为p-1的素除子,其中2159<q<2160(即,使用160位的位长度)。在所述说明性实例中,g=h(p-1)/q mod p,其中h为1<h<(p-1)的任何整数,使得h(p-1)/qmod p>1。私用密钥d为0<d<q的随机性或伪随机性整数。公用密钥y为gd mod p。此仅为用以提供一些背景信息的DSA参数的一个说明性实例。实际上,可不同地选择各种值。所属领域的技术人员熟悉选择p、q的位长度,及接着选择特定应用的散列函数。此外,应注意,对ECDSA的参数的选择为相当不同的。

在306处,加密签名装置302使用例如以下方程式从每消息加密盐值v、私用密钥d及消息m生成随机数k:

k=HMAC(d||v,h(m)) (7)

k=HMAC(v||d,h(m))。 (8)

应注意,可使用除HMAC外的其它密钥导出函数,但HMAC为便利的。将加密盐v与私用密钥连接在一起允许将所连接结果应用为HMAC的两个输入参数中的一者(连同消息m的散列)使得HMAC函数不需要被修改。此外,HMAC可接受任意长度的参数且因此连接特别便于组合加密盐及私用密钥,这是因为HMAC可借此接受结果而不论长度如何。此外,将HMAC与所连接加密盐/私用密钥一起使用提供大体可操作方案,借此数字签名生成、签名及随后验证的整体数学运算通常与另外常规的基于随机数的技术相同。还应注意,除连接外的其它函数也可替代地用于组合加密盐及私用密钥,只要所选择函数不导致恶意实体可能利用的信息泄露。通过实例的方式,对加密盐及私用密钥进行“异或运算(XOR)”可泄露旁道信息且因此不推荐。

在308处,加密签名装置302部分地基于随机数k而生成数字签名(r、s)且使用例如以下方程式对消息m进行签名:

r=gk mod p mod q (9)

以及

s=k-1(h(m)+r d)mod q。 (10)

其中p为素数,q为群阶且g为群生成元,如上文所论述。

在310处,加密签名装置302将经用数字签名(r、s)签名的消息m传输到具有签名验证装置304的远程或外部系统。应注意,在许多状况下,还将对消息m进行加密,但此加密可为单独的且不同于本文中所论述的数字签名生成程序。在312处,签名验证装置304获得公用密钥y,且在314处,使用公用密钥y验证消息m的签名(r、s)。公用密钥可为(例如)在利用加密签名装置302的初始密钥交换程序之后被存储在签名验证装置304的存储装置中的情况下从所述存储装置获得(或可为(例如)从认证机构服务器获得)。在316处,签名验证装置304接着在签名(r、s)通过验证的情况下输出或以其它方式处理消息m。在基于DSA的实例中,可通过如下计算值w、u1、u2及v来执行验证:w=(s')-1mod q;u1=[h(m')w]mod q;u2=(r')w mod q;及v=[(gu1yu2)mod p]mod q,且其中s'、r'及m'表示r、s及m的所接收版本。签名验证装置接着验证v=r'。

示范性系统单芯片硬件环境

本文中所描述的数字签名签名及验证系统及程序可用于广泛装置范围及广泛应用范围。为提供具体实例,现在将描述示范性硬件环境,其中在供用于移动通知装置或其它接入终端的SoC处理电路上提供具有签名组件及验证组件两者的数字签名处理器。就此来说,尽管移动装置已在传统上被视为缺少足够的不对称密钥加密(即,公用密钥加密)的计算资源,但移动装置具备更强大处理器及更大量的存储器。在足够资源的情况下,可在此些装置内提供不对称密钥生产、签名及验证。其中可实施数字签名签名及验证系统及程序的其它示范性硬件环境包含其它通信装置及组件及供与其使用的外围装置等,以及连接到因特网的传统桌上型计算机及交易服务器(如可由基于因特网的商业供应商采用以促进货品或服务的在线购买)。整个程序的方面还可利用可信机构服务器来促进(例如)密钥交换。

图4说明根据其中可利用各种新颖特征的一个实例的移动通信装置的SoC处理电路400。SoC处理电路可为高通公司(Qualcomm Incorporated)的SnapdragonTM处理电路。SoC处理电路400包含应用程序处理电路410,所述应用程序处理电路包含多核心CPU 412,所述多核心CPU经配备以结合数字签名处理器413一起操作,所述数字签名处理器具有数字签名签名装置415及数字签名验证装置417。数字签名签名装置415可用于对待发送到例如在线商业交易服务器(未展示)的远程系统的消息进行数字签名。签名验证装置417可用于验证从远程装置接收的数字签名(例如,在移动通信装置运行需要验证所接收消息的签名的应用程序(即,“app”)的情况下可被需要)。在其它实例中,数字签名处理器413可仅包含数字签名签名装置415,或在一些状况下,仅包含数字签名验证装置417。即,不需要两个组件。

应用程序处理电路410通常控制移动通信装置的所有组件的操作。在一个方面中,应用程序处理电路410耦接到主机存储控制器450,所述主机存储控制器用于控制数据的存储,包含将公用及私用密钥存储在形成内部共享硬件(HW)资源430的部分的内部共享存储装置432的密钥存储元件433中。应用程序处理电路410还可包含启动ROM 418,所述启动ROM存储用于SoC处理电路400的各种组件的启动顺序指令。SoC处理电路400进一步包含由应用程序处理电路410控制的一或多个外围子系统420。外围子系统420可包含(但不限于)存储子系统(例如,只读存储器(ROM)、随机存取存储器(RAM)),视频/图形子系统(例如,数字信号处理电路(DSP)、图形处理电路单元(GPU)),音频子系统(例如,DSP、模数转换器(ADC)、数模转换器(DAC)),功率管理子系统,安全子系统(例如,其它加密组件及数字版权管理(DRM)组件),输入/输出(I/O)子系统(例如,键盘、触摸屏)以及有线及无线连接子系统(例如,通用串行总线(USB)、全球定位系统(GPS)、Wi-Fi、全球移动系统(GSM)、码分多址接入(CDMA)、4G长期演进(LTE)调制解调器)。示范性外围子系统420(其为调制解调器子系统)包含DSP 422、各种其它硬件(HW)及软件(SW)组件424,及各种射频(RF)组件426。在一个方面中,每一外围子系统420还包含存储相关联外围子系统420的主要启动图像(未展示)的启动ROM 428。

如所述,SoC处理电路400进一步包含各种内部共用HW资源430,例如内部共享存储器432(例如,静态RAM(SRAM)、快闪存储器,等),所述内部共用HW资源可由应用程序处理电路410及各种外围子系统420共享以存储各种运行时间数据或其它参数及提供主机存储器。在图4的实例中,内部共享存储器432包含可用于存储公用及私用密钥的上述密钥存储元件、部分或组件433。在其它实例中,密钥被存储在移动装置内的别处。

在一个方面中,SoC 400的组件410、418、420、428以及430被集成在单芯片衬底上。SoC处理电路400进一步包含各种外部共享HW资源440,其可被定位在不同芯片衬底上且可经由一或多个总线与SoC处理电路400通信。外部共享HW资源440可包含(例如)外部共享存储器442(例如,双倍数据速率(DDR)动态RAM)及/或永久性或半永久性数据存储器444(例如,安全数字(SD)卡、硬盘驱动器(HDD)、嵌入式多媒体卡、通用快闪装置(UFS),等),其可由应用程序处理电路410与各种外围子系统420共享以存储各种类型的数据,例如操作系统(OS)信息、系统文件、程序、应用程序、用户数据、音频/视频文件,等。当并有SoC处理电路400的移动通信装置被启动时,SoC处理电路开始系统启动过程,其中应用程序处理电路410可接入启动ROM 418以检索用于SoC处理电路400的启动指令(包含用于各种外围子系统420的启动顺序指令)的。外围子系统420还可具有额外外围启动RAM 428。

示范性数字签名签名及验证程序

图5提供可由图4的应用程序处理电路的数字签名处理器,或其它经合适配备的组件、装置、系统或处理电路采用的数字签名签名及验证操作500的概述。在502处,数字签名处理器获得每消息加密盐值v,其中v经选择或约束以产生半确定性随机数。在504处,数字签名处理器基于每消息加密盐值v、密钥导出函数F、私用密钥d以及待签名的消息m而生成半确定性随机数k。在506处,数字签名处理器基于半确定性随机数k及待签名的消息m而生成数字签名(r、s)。在508处,数字签名处理器通过附加数字签名(r、s)对消息m进行签名。在510处,数字签名处理器将经签名的消息m传输到远程装置,例如,在线商业交易服务器,所述服务器将接着尝试基于与私用密钥d相关联的公用密钥y(其中公用密钥为先前与远程装置交换)而验证经签名的消息的签名。如已所述,在许多状况中,还将对消息m进行加密,且此加密可为单独的且不同于本文中所论述的数字签名生成程序。在512处,数字签名处理器接收远程装置基于公用密钥y验证经签名的消息m的确认,或在签名无法通过验证的情况下接收错误消息。图5的程序可通常根据DSA/ECDSA或其它基于随机数的数字签名标准及协议执行,经修改以利用使用加密盐导出的随机数。

图6说明用于基于从加密盐导出的随机数而生成数字签名的示范性程序600,其中提供进一步说明性细节。在602处,数字签名处理器获得足以产生非随机性且非确定性随机数(即,半确定性随机数)的每消息加密盐值v,其中,例如,加密盐v为秘密随机数、公用随机数、计数器、上下文特定消息、空串或任何合适半确定性函数s(x)的结果,或其中加密盐为在有限的值范围(相对于与用于从随机数生成数字签名的数字签名生成协议相关联的完整的值范围)内随机获得使得所得随机数为非完全随机性。就此来说,数字签名处理器可(例如)采用上下文特定消息而非纯粹计数器来将较大量的非确定性赋予所得随机数k。为获得较大量的非确定性,数字签名处理器可(例如)采用秘密随机数而非上下文特定消息,其中秘密随机数相对于上下文特定消息提供更大程度的非确定性。如所述,数字签名处理器可在有限的值范围内随机获得加密盐。就此来说,DSA常规地操作以从1到q-1一致且随机地获取k,其中q为生成元(大约256位)的乘性阶。因此,在602处,可从更小值集随机选择每消息加密盐值v(例如,其可从仅32位值间一致且随机地选择)。一般来说,半确定性函数s(x)可经挑选或选择以便设置、调整或控制所得每消息加密盐值v的非确定性程度以借此设置、调整或控制所得随机数k的非确定性程度。

在604处,数字签名处理器基于每消息加密盐值v、HMAC密钥导出函数、私用密钥d及待签名的消息m通过(例如)以下步骤而生成随机数k:将私用密钥d与每消息加密盐值v连接在一起以产生经连接的值;将散列函数h应用于消息m以产生经散列消息h(m);及将HMAC函数应用于经连接的值及散列消息以产生随机数k,例如:

k=HMAC(d||v,h(m)) (11)

k=HMAC(v||d,h(m))。 (12)

在606处,数字签名处理器部分地基于随机数k而生成数字签名(r、s)且使用(例如)DSA程序对消息m进行签名:

r=gk mod p mod q (13)

以及

s=k-1(h(m)+r d)mod q (14)

其中p为素数,q为群阶且g为群生成元(如上文所论述),或使用其它基于随机数的程序,例如ECDSA、El Gamal、Schnorr、Nyberg-Rueppel、俄罗斯标准GOST R34.10-2001数字签名算法或韩国基于认证的DSA(KCDSA)。

示范性系统及方法

图7说明其中可实施图1到6的系统、方法及设备的整个系统或设备700。根据本发明的各种方面,可以用包含一或多个处理电路704(例如,图4的SoC处理电路)的处理系统714实施元件、或元件的任何部分,或元件的任何组合。举例来说,设备700可为移动通信系统的用户设备(UE)。设备700可与无线电网络控制器(RNC)一起使用。除SoC外,处理电路704的实例包含微处理电路、微控制器、数字信号处理电路(DSP)、场可编程门阵列(FPGA)、可编程逻辑装置(PLD)、状态机、门逻辑、离散硬件电路及经配置以执行贯穿本发明描述的各种功能性的其它合适硬件。即,如设备700中所利用的处理电路704可用于实施上文所描述且图3、5及6中所说明的过程(及下文所论述的图10到12中所说明的那些)中的任何一或多者,例如用以执行数字签名生成、签名及验证的过程。

在图7的实例中,处理系统714可实施有总线架构(总体上由总线702表示)。总线702可取决于处理系统714的特定应用及整体设计约束而包含任何数目个互连总线及网桥。总线702将包含一或多个处理电路(通常由处理电路704表示)、存储装置705及计算机可读、处理器可读、处理电路可读或计算机可读媒体(通常由非暂时性机器可读媒体706表示)的各种电路链接在一起。总线702还可链接本技术领域中众所周知的各种其它电路(例如,定时源、外围装置、电压调节器及功率管理电路),且因此将不进行任何进一步描述。总线接口708在总线702与收发器710之间提供接口。收发器710提供用于经由传输媒体与各种其它设备进行通信的装置。取决于设备的性质,还可提供用户接口712(例如,小键盘、显示器、扬声器、麦克风、操纵杆)。

处理电路704负责管理总线702及一般处理,包含执行存储在机器可读媒体706上的软件。软件在被处理电路704执行时致使处理系统714执行下文针对任何特定设备所描述的各种功能。机器可读媒体706还可用于存储在执行软件时由处理电路704操纵的数据。

处理系统中的一或多个处理电路704可执行软件或软件组件。软件应广泛地解释为意指指令、指令集、代码、代码段、程序代码、程序、子程序、软件模块、应用程序、软件应用程序、软件包、例程、子例程、对象、可执行文件、执行线程、程序、函数等,而不论是称为软件、固件、中间件、微码、硬件描述语言还是称为其它。处理电路可执行任务。代码段可表示程序、函数、子程序、程序、例程、子例程、模块、软件包、类别或指令、数据结构或程序语句的任何组合。代码段可通过传递及/或接收信息、数据、自变量、参数或存储器或存储内容来耦接到另一代码段或硬件电路。信息、自变量、参数、数据等可经由包含存储器共享、消息传递、权标传递、网络传输等的来传递、转发或传输。

软件可驻留在机器可读媒体706上。机器可读媒体706可为非暂时性机器可读媒体。借由实例的方式,非暂时性处理电路可读、机器可读或计算机可读媒体包含:磁性存储装置(例如,硬盘、软盘、磁条)、光盘(例如,光盘(CD)、数字通用光盘(DVD))、智能卡、快闪存储器装置(例如,存储卡、存储棒、随身盘)、RAM、ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、寄存器、可拆卸磁盘、硬盘、CD-ROM及用于存储可由机器或计算机接入及读取的软件及/或指令的任何其它合适媒体。术语“机器可读媒体”、“计算机可读媒体”、“处理电路可读媒体”及/或“处理器可读媒体”可包含(但不限于)非暂时性媒体,例如便携式或固定存储装置、光学存储装置,及能够存储、含有或运载指令及/或数据的各种其它媒体。因此,本文中所描述的各种方法可完全或部分地由指令及/或数据实施,所述指令及/或数据可存储在“机器可读媒体”、“计算机可读媒体”、“处理电路可读媒体”及/或“处理器可读媒体”中且可由一或多个处理电路、机器及/或装置执行。借由实例的方式,计算机可读媒体还可包含载波、传输线及适于传输可由计算机接入及读取的软件及/或指令的任何其它媒体。

机器可读媒体706可驻留在处理系统714中、在处理器系统714外部或跨越包括处理系统714的多个实体分布。机器可读媒体706可体现于计算机程序产品中。举例来说,计算机程序产品可包含呈包装材料的机器可读媒体。熟习此项技术者将认识到最佳实施贯穿本发明所呈现的所描述功能性的方式取决于特定应用及强加于整体系统上的整体设计约束。举例来说,机器可读存储媒体706可具有一或多个指令,所述指令在由处理电路704执行时致使处理电路进行以下操作:获得非随机性且非确定性随机数;及部分地基于所述非随机性且非确定性随机数而获得数字签名。

图中所说明的组件、步骤、特征及/或功能中的一或多者可经重新布置及/或组合成单个组件、块、特征或功能或体现于数个组件、步骤或功能。还可在不背离本发明的情况下添加额外元件、组件、步骤及/或功能。图中所说明的设备、装置及/或组件可经配置以执行图中所描述的方法、特征或步骤中的一或多者。本文中所描述的算法还可高效地实施于软件中及/或体现于硬件中。

结合本文中所揭示的实例所描述的各种说明性逻辑块、模块、电路、元件及/或组件可通过以下各项来实施或执行:通用处理电路、数字信号处理电路(DSP)、专用集成电路(ASIC)、场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件或其经设计以执行本文中所描述的功能的任一组合。通用处理电路可为微处理电路,但在替代方案中,所述处理电路可为任何常规处理电路、控制器、微控制器或状态机。处理电路还可实施为计算组件的组合,例如,DSP与微处理电路的组合、多个微处理电路、结合DSP核心的一或多个微处理电路或任何其它此类配置。

因此,在本发明的一个方面中,图4及7中所说明的处理电路413及/或704可为经特殊设计及/或硬接线以执行图3、5及/或6(及/或下文所描述的图10、11及/或12)中所描述的算法、方法及/或块的专门处理电路(例如,ASIC))。因此,此专门处理电路(例如,ASIC)可为用于执行图3、5及/或6(及/或下文所描述的图10、11及/或12)中所描述的算法、方法及/或块的装置的一个实例。机器可读存储媒体可存储指令,所述指令可在由专门处理器电路(例如,ASIC)执行时致使专门处理电路执行本文中所描述的算法、方法及/或块。

图8说明具有数字签名处理器802的处理电路704的选择及示范性组件,所述数字签名处理器具有数字签名生成器804及数字签名验证器806。特定来说,图8的数字签名生成器804包含加密盐生成模块/电路808,所述加密盐生成模块/电路操作以获得或生成供用于生成半确定性随机数的每消息加密盐值v。数字签名生成器804还包含非随机性且非确定性随机数生成模块/电路810,所述非随机性且非确定性随机数生成模块/电路操作以获得或生成供用于生成数字签名的半确定性随机数k或控制完成此些操作的其它模块/电路。举例来说,连接模块/电路812操作以将私用密钥与加密盐连接在一起以产生经连接的值,其中所述私用密钥可为通过私用密钥输入模块/电路814(其可包含伪随机数生成器(PRNG)获得。散列函数模块/电路816操作以将散列函数应用于待签名的消息以产生散列消息。密钥导出函数(HMAC)模块/电路816操作以将密钥导出函数(例如,HMAC)应用于经连接的值及散列消息以在随机数生成模块/电路810的控制下产生随机数。数字签名生成模块/电路820操作以部分地基于由随机数生成模块/电路810生成(或在其控制下)的随机数而生成数字签名。消息签名模块/电路822接着操作以用数字签名对消息进行签名以使用(例如)签名/消息传输/接收模块/电路828传输到远程装置,所述签名/消息传输/接收模块/电路可被连接到图7的收发器710。

应注意,使用数字签名对消息进行签名可为仅将签名附加到消息的简单事情,且因此在实际实施方案中,可不提供单独消息签名模块/电路。此外,在实际实施方案中,整个数字签名生成器可在其用于使用数字签名对消息进行签名时被称作消息签名模块。单独的签名生成及消息签名组件并非必需的但为完整性及通用性起见而经单独地展示。如果数字信号处理器802需要验证从远程装置所接收到的签名,那么公用密钥输入模块/电路824输入或以其它方式(经由图7的收发器710)获得公用密钥。签名验证模块/电路826接着经操作以使用公用密钥验证从远程装置所接收到的经签名的消息的签名。

图9说明供用于生成或验证数字签名的机器或计算机可读媒体706的所选及示范性指令。简洁地,图9的机器可读媒体706包含各种指令,所述指令在由图7的处理电路704执行时致使处理电路控制或执行数字签名生成及验证操作。特定来说,图9的数字签名生成指令904包含加密盐生成指令908,所述加密盐生成指令经操作以获得或生成供用于生成随机数的每消息加密盐值v。非随机性且非确定性随机数生成指令910经操作以获得或生成供用于生成数字签名的半确定性随机数k。连接指令912经操作以将私用密钥与加密盐连接在一起以产生经连接的值,其中私用密钥可通过私用密钥输入指令914获得。散列函数指令916经操作以将散列函数应用于待签名的消息以产生散列消息。密钥导出函数(HMAC)指令916经操作以将密钥导出函数(例如,HMAC)应用于经连接的值及散列消息以产生随机数。数字签名生成指令920经操作以部分地基于由随机数生成指令910所生成(或在其控制下)的随机数而生成数字签名。消息签名指令922接着经操作以用数字签名对消息进行签名以供使用(例如)签名/消息传输/接收指令928传输到远程装置。上文参考图8的模块822所述的注释在这里也适用。如果数字信号处理器需要验证从远程装置所接收到的签名,那么公用密钥输入指令924输入或以其它方式(经由图7的收发器710)获得来自远程装置的公用密钥。签名验证指令926接着经操作以使用公用密钥验证从远程装置所接收到的经签名的消息的签名。

图10广泛地说明且概述可由图8的数字签名生成器804或用于生成或以其它方式获得数字签名的其它合适配备数字签名生成装置(例如,图4的应用程序处理电路410)执行的方法或程序1000。在1002处,数字签名生成器获得非随机性且非确定性随机数,且在1004处,数字签名生成器使用(例如)上文所描述的技术部分地基于非随机性且非确定性随机数获得数字签名。

图11说明可由图8的数字签名处理器802或其它经合适配备的装置执行的示范性方法或程序1100。在1102处,数字签名处理器802生成或以其它方式获得足以产生半确定性随机数的每消息值,其中每消息值为秘密随机数、公用随机数、计数器及上下文特定消息中的一或多者,或其中每消息值是在有限的值范围(相对于与用于从随机数生成数字签名的数字签名生成协议相关联的完整的值范围)内随机获得使得所得随机数为非完全随机性。在1104处,数字签名处理器802使用以下各项来生成或以其它方式获得非随机性且非确定性随机数:密钥导出函数、私用密钥、消息及每消息值,所述每消息值经选择以产生以具有介于完全随机性随机数与完全确定性随机数之间的部分量的确定性为特征的半确定性随机数,其中随机数的非随机性经表征为至少部分地确定性及非完全随机性,且其中随机数的非确定性被表征为至少部分地随机性且不完全确定性。在1106处,数字签名处理器802部分地基于非随机性且非确定性随机数而生成或以其它方式获得数字签名。在1108处,数字签名处理器802使用部分地基于非随机性且非确定性随机数所获得的数字签名对消息进行签名。如已所述,对消息签名可简单地涉及将数字签名附加到消息,且因此单独的签名生成及消息签名组件并非必需的但为完整性及通用性起见而经单独地展示。

图12说明可由图8的数字签名处理器802或供在图11的框1104处使用的其它经合适配备的数字签名生成装置执行以用于使用密钥导出函数处、私用密钥、消息及每消息值来获得或以其它方式生成随机数的示范性方法或程序。在1202处,数字签名处理器802将私用密钥与每消息值连接在一起以获得经连接的值。在1204处,数字签名处理器802将散列函数应用于消息以获得散列消息。在1206处,数字签名处理器802将密钥导出函数应用于经连接的值及散列消息以获得半确定性随机数,其中密钥导出函数可为HMAC函数。

应注意,本发明的方面可在本文中被描述为过程,其被描绘为流程图、作业图、结构图或框图。虽然流程表可将操作阐述为顺序过程,但操作中的许多操作可并行或同时地执行。另外,所述操作的次序可被重新布置。当过程的操作完成时终止所述过程。过程可对应于方法、功能、程序、子例程、子程序等。当过程对应于功能时,其终止对应于将所述功能返回到调用功能或主功能。

此外,所属领域的技术人员将了解,结合本文中所揭示的方面描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为清楚地说明硬件及软件的此可互换性,上文通常已就其功能性方面描述了各种说明性组件、块、模块、电路及步骤。此功能性是实施为硬件还是软件取决于强加于整个系统的特定应用及设计约束。

结合本文中所揭示的实例所描述的方法或算法可以处理单元、编程指令或其它指示的形式直接体现于硬件、可由处理器执行的软件模块或两者的组合中,且可被含在单个装置中或跨越多个装置分布。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可拆卸磁盘、CD-ROM或此项技术中已知的任何其它形式的存储媒体中。存储媒体可耦接到处理器使得所述处理器可从所述存储媒体读取信息且将信息写入到所述存储媒体。在替代方案中,所述存储媒体可与处理器成整体。

本文中所描述的本发明的各种特征可实施于不同系统中而不背离本发明。应注意,前述实施例仅为实例且并不应解释为限制本发明。实施例的描述意欲为说明性且并不限制权利要求书的范围。如此,本发明教示可容易应用于其它类型的设备,且许多替代方案、修改方案及变化方案将对所属领域的技术人员显而易见。

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