专利名称:用于保护密码资产免受白盒攻击的系统和方法
技术领域:
本发明一般涉及密码。更具体地,本发明涉及用于保护密码资产例如私钥和其他秘密参数的方法和系统。
背景技术:
在FIPS PUB 186-3 (美国商务部)和ANS X9.62-2005 (美国国家金融服务标准)的标准中描述了数字签名算法(DSA)和椭圆曲线数字签名算法(ECDSA),其全部内容通过引用并入本文。这些签名算法使用公钥密码来创建及验证数字消息上的数字签名。DSA和ECDSA中的签名者拥有私钥和公钥;私钥被用于生成数字签名(即对消息签名),公钥被第三方用来验证该签名。DSA和ECDSA广泛应用(例如,在ssh、SSL/TLS、加拿大邮政数字邮戳、DTCP、AACS、MS-DRM)并可被用于提供数据源认证、数据完整性和不可抵赖性。然而,对DSA和E⑶SA签名可能提供的任何保证总是受到这样的假设,即签名者的私钥保持私有(即私钥不会泄露至攻击者)。下面的引用文献提供了另外的背景信息,其全部内容通过引用并入本文:[I]美国国家金融服务标准(American National Standard for FinancialServices) , ANS X9.62-2005, Public Key Cryptography for the Financial ServicesIndustry, The Elliptic Curve Digital Signature Algorithm(ECDSA)(金融服务产业的公钥密码、椭圆曲线数字签名算法(E⑶SA)),2005年11月16日;[2]D.Hankerson, A.Menezes, S.Vanstone, Guide to Elliptic CurveCryptography (椭圆曲线密码指南),2003 ;[3]信息技术实验室、标准和技术国家局(Information TechnologyLaboratory, National Institute of Standards and Technology), FIPS PUB186-3,Digital Signature Standard(DSS)(数字签名标准(DSS)),2009 年 6 月;[4] Standards for Efficient Cryptography, SEC I !Elliptic CurveCryptography (高效密码标准、SECl:椭圆曲线密码),2.0版,2009年5月21日;[5]National Security Agency, NSA Suite B Cryptography, available fromhttp://www.nsa.gov/ia/programs/suiteb cryptography/ (可从 http://www.nsa.gov/ia/programs/suiteb cryptography/ 获得的国家安全局 NSA B 套密码)[6]Digital Transmission Content Protection Specification (数字传输内容保护规范),卷I (信息版),1.51修订版,2007年10月I日。DSA和E⑶SA的签名生成操作通常在计算机软件中实现,而这样的计算机软件在特定的计算装置(例如手机、机顶盒、智能卡)上运行。在许多应用中,这种操作发生在签名者控制之外的环境中一可能存在对手(即对手可能在当签名被计算时观察装置)。仅对签名生成的输入和输出进行分析的对手利用类似黑盒的方式有效地对该实现进行处理。DSA和E⑶SA被设计成抗这样的黑盒攻击者。然而,除了输入和输出之外常常还存在更多可用的信息。其他信息例如装置功率消耗、执行时间、电磁发射以及对数据错误的响应都会给攻击者提供关于软件执行的线索;已经证明这会泄露私钥的位并完全危及签名方案。一种更鲁棒的安全模型抗白盒攻击者。白盒攻击者对计算签名的软件执行具有完全可视性。抗白盒攻击者是高度理想的目标,但目前还没有提出DSA和ECDSA的任何白盒实现。作为该问题的实例,考虑用于保护音频/视频内容的DTCP协议。下述引文来自DTCP规范,如在上述参考文献[6]中限定的那样:4.3兼容装置的制造支持完全认证的所有兼容装置(即所有个体均无关品牌和模型地被制造)被分配有由DTLA生成的唯一的装置ID (XID)和装置EC-DSA公钥/私钥对。私钥必须以防止其公开的方式存储在装置内。DTLA还必须给兼容装置提供装置证书(XCERT)。该证书存储在兼容装置中并在认证过程中使用。此外,兼容装置需要存储实现密码协议所必需的其他常数和密钥。上文所强调的句子指出DTCP兼容装置必须采取步骤来保护其E⑶SA私钥。然而,这样的装置在完全认证协议期间必须利用其私钥来创建ECDSA签名。虽然看上去私钥可能通过以加密状态进行存储而受到了简单的保护,但实际上要执行签名操作,私钥会首先被解密以被使用,由此私钥可能被白盒攻击者提取。为了解决这个问题,所需要的是一种保护过程,其保持私钥机密并允许数字签名操作在不将私钥泄露给攻击者的情况下进行。
发明内容
本发明的目的是消除或减少现有的数字签名过程中的至少一个缺点。具体地,本发明的一个方面提出了更安全地保护签名者的密钥不被能够观察操作中的数字签名过程的对手推算出的过程。因此,本发明的方面提出了用于实现抗白盒攻击者的数字签名生成(DSG)过程的方法和系统。这通过将特别选择的数据变换应用于算法的输入、输出和内部参数来进行。具体地,签名者的私钥不会清楚地出现在我们保护的实现中。我们的新白盒实现产生与由传统实现创建的签名兼容的签名;因此,我们的解决方案便于互操作性并可被用作传统实现的替代实现。具体地,我们描述了数字签名生成过程的密钥(d)和生成器域参数(通常用G或g表示)的变换,使得本发明的实施方式可产生签名的消息,在验证者看起来就像使用了密钥(d)而实际上没有使用密钥(d)。这使得对手不可能观察到密钥(d),因为实际上并没有使用密钥(d)。其他实施方式包括使对手难于通过观察生成数字签名的过程推算出密钥
(d)的另外的保护。本发明的一个方面提供了用于通过基于随机整数f变换d来产生变换的密钥(d )的方法和系统,变换的密钥J可与变换的生成器(例如(5或f)以及f本身一同使用来产生兼容的签名消息。根据该方面,变换的生成器根据生成器、f的逆对η求模来产生。DSG可稍稍进行修改以使用所述变换的生成器(例如.0或f)和5来代替所述生成器(G或g)和d,与包括f 一同在所述DSG过程中来产生数字签名,该数字签名可由所述验证过程使用公钥Q进行验证,就像在所述DSG过程中实际使用了 d和所述生成器一样。一方面,本发明提供了保护加密密钥(d)不被能够在利用d的加密数字签名生成(DSG)过程的执行期间观察计算设备A的对手B获得的计算机实现方法,该密钥(d)具有相应的加密公钥Q,其中,Q和d均涉及η阶生成器,其中,d存储且用于计算设备A上,所述DSG过程具有已知的利用Q的签名验证过程,所述方法包括:a)在I至η-1的间隔中选择随机整数f ;b)基于所述生成器和f的逆对η求模产生变换的生成器;c)通过基于f变换d产生变换的密钥(J );以及d)利用所述变换的生成器和J替代所述生成器和d,连同包括f在所述DSG过程中产生数字签名,所产生的数字签名可由所述验证过程使用Q进行验证,就像在所述DSG过程中实际使用了 d和所述生成器一样。另一方面,提供了保护加密密钥(d)不被能够在利用d的加密数字签名生成(DSG)过程的执行期间观察计算设备A的对手B获得的计算机实现方法,该密钥(d)具有相应的加密公钥Q,其中,Q和d均涉及η阶生成器,其中,d存储且用于计算设备A上,所述加密过程具有已知的利用Q的签名验证过程,所述方法包括:a)在I至η-1的间隔中选择随机整数f ;b)基于所述生成器和f的逆对η求模产生变换的生成器;c)通过基于f变换d产生变换的密钥(3 );以及d)产生在机器可读媒介中实施的计算机程序产品,所述机器可读媒介存储机器可执行指令,使得当机器可执行指令由A执行时,A利用所述变换的生成器和.J替代所述生成器和d,连同增加f在所述DSG过程中产生数字签名,所产生的数字签名可由所述验证过程使用Q进行验证,就像在所述DSG过程中实际使用了 d和所述生成器一样。另一方面,本发明提供了包括有形计算机可读媒介的计算机程序产品,所述有形计算机可读媒介存储计算机可读指令,当计算机可读指令由处理器执行时使所述处理器实现保护加密密钥(d)不被能够在利用d的加密数字签名生成(DSG)过程的执行期间观察计算设备A的对手B获得的计算机实现方法,该密钥(d)具有相应的加密公钥Q,其中,Q和d均涉及η阶生成器,其中,d存储于计算设备A上并且在计算设备A上使用,所述加密过程具有已知的利用Q的签名验证过程,所述计算机可读指令包括:a)用于在I至η-1的间隔中选择随机整数f的指令;b)用于基于f的逆对η求模来计算所述生成器的变换的生成器值的指令;c)用于通过基于f计算d的变换值J的指令;以及d)存储f值,所述变换的生成器和J以安全的方式用于变换的加密过程的后续使用,所述变换的加密过程使用f、所述变换的生成器和J产生数字签名,所产生的数字签名可由所述验证过程使用Q进行验证,就像在所述加密过程中实际使用了 d和所述生成器一样。另一方面,本发明提供了包括有形计算机可读媒介的计算机程序产品,所述有形计算机可读媒介存储计算机可读指令,当计算机可读指令由计算设备(A)执行时使所述计算设备在消息M上产生数字签名(r,S),所述数字签名可通过用于对据称由私钥d持有者发起的对消息M的签名(r,S)进行验证的标准ECDSA数字签名验证过程验证,其中,所述私钥d具有相应的加密公钥Q,其中,Q和d均涉及η阶生成器,所述签名产生并且保护d不被能够在所述计算机可读指令的执行期间观察A的对手获得,所述计算机可读指令包括:i)用于在间隔[1,η-1]中选择随机整数j的指令;ii)用于将1:C Mnltiplyik ,(;)的结果赋予点R的指令,其中,
EC—句表示使椭圆曲线点G本身增加 倍,所述椭圆曲线点G已通过使用先前在I至η-1的间隔中选择的随机整数f基于所述生成器G的变换被预先生成;iii)用于将Rx modn的结果赋予r的指令,其中Rx为R的x坐标;iv)用于如果r=0则再次回到i)的指令,否则;V)用于将消息M上的哈希操作值赋予e的指令;vi)用于计算+的值以及将该值赋予s的指令,其中j是基于f被预先确定的d的变换值;vii)用于如果S=O则再次回到i)的指令,否则;V)用于将数字签名的消息M连同签名(r,s)传输至第三方用于验证的指令;以及其中,所述消息M上的所述签名(r,s)等同于由标准E⑶SA过程通过使用私钥d生成的签名(r,s),除了私钥d实际并没有被使用并因此在执行过程中未被加载至存储器之外。另一方面,本发明提供`了包括有形计算机可读媒介的计算机产品,所述有形计算机可读媒介存储计算机可读指令,当计算机可读指令由计算设备(A)执行时使所述计算设备使用离线变换的值进行签名从而在消息M上产生数字签名(r,S),如本文所公开的那样。通过参照附图阅读下面对本发明的具体实施方式
的描述,对于本领域技术人员而言,本发明的其他方面和特征将变得显而易见。
下面将参照附图通过仅示例对本发明的实施方式进行描述,在附图中:图1是示出数字签名生成的一般过程的流程图;图2是示出数字签名验证的一般过程的流程图;图3是示出E⑶SA签名生成的步骤的流程图;图4是示出根据本发明的实施方式的预备程序的步骤的流程图;图5是示出根据本发明实施方式生成ECDSA签名的过程的步骤的流程图;图6是示出根据本发明实施方式的创建用于使这样的E⑶SA签名生成过程更鲁棒的过程的步骤的流程图;图7是示出本发明的实施方式可在其上执行的计算机系统的简化示例。
具体实施例方式一般而言,本发明提供了用于保护数字签名生成过程中的密码资产的方法和系统,其中密码资产包括私钥、秘密参数等。在图1中示出了一般的数字签名生成过程,其中,通过使用签名生成算法104利用私钥(d)对消息(m)进行签名以产生数字签名(S)。在图2中示出了一般的数字签名验证过程,其中,对据称已由私钥(d)的持有者签名的消息(m)上的数字签名(S)通过利用签名验证算法(206)使用持有者的公钥(Q)进行验证。上述过程的有利之处在于,任何人都可使用公钥(Q)来验证签名,该过程将根据实际上是否由私钥(d)的持有者签名来接受或拒绝208签名。本发明的一个方面提供了一种方法和系统,其可产生签名(S)并且保护与现存的验证过程兼容的d。换言之,本发明的实施方式将在计算设备A上产生S,计算设备A上可能存在对手B,对手B积极地尝试通过观察签名生成过程来获取d,其可由206通过使用Q进行验证而不需要验证者改变过程206。在下文中,我们描述了根据本发明的实施方式的用于将DSA或ECDSA签名生成实现转换成抗白盒攻击者的实现的示例性过程。应注意,我们使用的用语“光滑(smooth ) ”指的是传统的、未受保护的签名生成实现(易受白盒攻击的实现),我们使用的用语“鲁棒(robust)”指的是根据本发明的实施方式的受保护的实现。符号下面我们使用在参考文献[2]中描述的类似符号定义一些与椭圆曲线密码学(ECC)相关的用语和符号:
权利要求
1.一种保护加密密钥d不被能够在利用d的加密数字签名生成(DSG)过程的执行期间观察计算设备A的对手B获得的计算机实现方法,其中,d具有相应的加密公钥Q,Q和d均涉及η阶生成器,d存储于A上并在A上使用,所述DSG过程具有已知的利用Q的签名验证过程,所述方法包括: a)在I至η-1的间隔中选择随机整数f; b)基于所述生成器和f的逆对η求模产生变换的生成器; c)通过基于f变换d产生变换的密钥3;以及 d)利用所述变换的生成器和^替代所述生成器和d,连同包括f,在所述DSG过程中产生数字签名,所产生的数字签名能够通过使用Q的所述验证过程进行验证,就像在所述DSG过程中实际使用了 d和所述生成器一样。
2.如权利要求1所述的方法,其中,所述步骤a、b和c以不能被B观察的一些方式执行,所述步骤d由A在能被B观察的情况下执行。
3.如权利要求2所述的方法,其中,所述步骤a、b和c通过离线执行以不能被B观察的一些方式执行。
4.如权利要求1至3中任一项所述的方法,其中,所述生成器为用于生成具有基数η的椭圆曲线群的椭圆曲线上的点G,其中,所述变换的生成器为所述椭圆曲线群中的另一点G ,其中步骤b)包括将f的逆对η求模的结果赋予Γ1,以及将使G本身增加Γ1倍的结果赋予δ ;以及其中步骤c)包 括将df modn的结果赋予J。
5.如权利要求4所述的方法,其中,所述数字签名验证过程为用于对由私钥d持有者发起的对消息M的签名(r,S)进行验证的标准ECDSA数字签名验证过程,其中,所述步骤d)包括: i)在间隔[l,n-l]中选择随机整数[; ii)MEC—Multiply(k, Gj的结果赋予点R,其中,EC Multiply(k, G j表示使椭圆曲线点占本身增加[倍,; iii)将Rxmodn的结果赋予r,其中Rx为R的x坐标; iv)如果r=0,则再次从步骤i)开始,否则; V)将消息M上的哈希操作值赋予e ; vi)计算P+ 力的值以及将该值赋予s ; vii)如果s=0,则再次从步骤i)开始,否则; V)输出签名(r,s) 其中,消息M上的所述签名(r,s)等同于通过使用所述私钥d的所述标准E⑶SA过程生成的签名(r,s),除了实际的私钥d并没有被使用并因此在执行期间未被加载至存储器之外。
6.如权利要求1至3中任一项所述的方法,其中,所述数字签名验证过程为用于对由私钥d持有者发起的对消息M的签名(r,s)进行验证的标准DSA数字签名验证过程,所述标准DSA数字签名验证过程利用域参数p、q和g,其中,所述生成器为g并且q=n,其中所述步骤b)包括将f的逆对q求模的结果赋予Γ1,以及将modi 的结果赋予蒼,其中对疒计算模q,其中步骤c)包括将df modq的结果赋予0
7.如权利要求6所述的方法,其中,所述步骤d)包括: i)在间隔[l,n-l]中选择随机整数务; ii)将fmod的结果赋予rp ; iii)将rpmod q的结果赋予r ; iv)如果r=0,则再次从步骤i)开始,否则; V)将消息M上的哈希操作值赋予e ; vi )计算
8.如权利要求5或7所述的方法,其中,步骤vi)包括利用通过使用一系列查找表模糊的软件例程来计算ef modn的值,使得f的值不被加载至存储器并因此不会在计算期间泄露。
9.如权利要求8所述的方法,其中,步骤vi)还包括利用通过使用一系列查找表模糊的软件例程来计算
10.如权利要求8或9所述的方法,其中,软件例程包括在离线阶段构造的字方式的重新编码表。
11.如权利要求5或7所述的方法,其中,哈希函数H由函数Hf替代,所述函数Hf因此产生值
12.如权利要求1至11中任一项所述的方法,还包括在执行所述方法步骤的软件上执行的控制流和数据模糊。
13.一种保护加密密钥d不被能够在利用d的加密数字签名生成(DSG)过程的执行期间观察计算设备A的对手B获得的计算机实现方法,其中,d具有相应的加密公钥Q,Q和d均涉及η阶生成器,其中,d存储于A上并且在A上使用,所述加密过程具有已知的利用Q的签名验证过程,所述方法包括: a)在I至η-1的间隔中选择随机整数f; b)基于所述生成器和f的逆对η求模产生变换的生成器; c)通过基于f变换d产生变换的密钥J;以及 d)产生在机器可读媒介中实施的计算机程序产品,所述机器可读媒介存储机器可执行指令,所述机器可执行指令在由A执行时使A利用所述变换的生成器和J替代所述生成器和d,连同添加f,在所述DSG过程中产生数字签名,所产生的数字签名能够通过使用Q的所述验证过程进行验证,就像在所述DSG过程中实际使用了 d和所述生成器一样。
14.如权利要求13所述的方法,其中,所述数字签名验证过程为用于对由私钥d持有者发起的对消息M的签名(r,s)进行验证的标准E⑶SA数字签名验证过程;以及其中,所述生成器为用于生成具有基数η的椭圆曲线群的椭圆曲线上的点G,其中,所述变换的生成器为所述椭圆曲线群中的另一点O,其中步骤b)包括将f的逆对η求模的结果赋予Γ1,以及将使G本身增加Γ1倍的结果赋予O ;以及其中步骤c)包括将dfmodn的结果赋予J。
15.如权利要求13所述的方法,其中,所述数字签名验证过程为用于对由私钥d持有者发起的对消息M的签名(r,s)进行验证的标准DSA数字签名验证过程,所述标准DSA数字签名验证过程利用域参数P、q和g,其中,所述生成器为g并且q=n,其中所述步骤b)包括将f的逆对q求模的结果赋予Γ1,以及将' mod的结果赋予豆,其中对Γ1计算模q,其中步骤c)包括将df modq的结果赋予。
16.一种包括有形计算机可读媒介的计算机程序产品,所述有形计算机可读媒介存储计算机可读指令,所述计算机可读指令在由处理器执行时使所述处理器实现保护加密密钥d不被能够在利用d的加密过程的执行期间观察计算设备A的对手B获得的方法,其中,d具有相应的加密公钥Q,Q和d均涉及η阶生成器,d存储于A上并在A上使用,所述加密过程具有已知的利用Q的表达过程,所述计算机可读指令包括: a)用于在I至η-1的间隔中选择随机整数f的指令; b)用于基于f的逆对η求模来计算所述生成器的变换的生成器值的指令; c)用于基于f计算d的变换值S的指令;以及 d)以安全的方式存储f的值,所述变换的生成器和^用于变换的加密过程的后续使用,所述变换的加密过程使用f、所述变换的生成器和^来产生数字签名,所产生的数字签名能够通过使用Q的所述表达过程进行验证,就像在所述加密过程中实际使用了 d和所述生成器一样。
17.—种包括有形计算机可读媒介的计算机程序产品,所述有形计算机可读媒介存储计算机可读指令,所述计算机可读指令在由计算设备A执行时使所述计算设备在消息M上产生数字签名(r,S),所述数字签名可通过用于对据称由私钥d持有者发起的对消息M的签名(r,s)进行验证的标准ECDSA数字签名验证过程进行验证,其中,所述私钥d具有相应的加密公钥Q,Q和d均涉及η阶生成器,所述签名产生并且保护d不被能够在所述计算机可读指令的执行期间观察A的对手所获得,所述计算机可读指令包括: i)用于在间隔[l,n-l]中选择随机整数左的指令; ii)用于将幻的结果赋予点R的指令,其中句表示使椭圆曲线点6本身增加$倍,所述椭圆曲线点G已通过使用先前在I至η-1的间隔中选择的随机整数f基于所述生成器G的变换被预先生成; iii)用于将Rxmod η的结果赋予r的指令,其中Rx为R的x坐标; iv)用于如果r=0则再次回到i)的指令,否则; V)用于将消息M上的哈希操作值赋予e的指令; vi)用于计算$+〃的值以及将该值赋予s的指令,其中j是基于f被预先确定的d的变换值; vii)用于如果s=0则 再次回到i)的指令,否则; V)用于将数字签名的消息M连同签名(r,s)传输至第三方用于验证的指令;以及其中,所述消息M上的所述签名(r,s)等同于由标准E⑶SA过程使用私钥d生成的签名(r,s),除了实际的私钥d并没有被使用并因此在执行期间未被加载至存储器之外。
18.—种包括有形计算机可读媒介的计算机产品,所述有形计算机可读媒介存储计算机可读指令,所述计算机可读指令在由计算设备A执行时使所述计算设备使用离线变换的值进行签名从而在消息M上产生数字签名(r,S),如本文所公开的那样。
19.通过如本文所教导或所要求保护的任何方法和系统实现的机顶盒。
20.通过如本文所 教导或所要求保护的任何方法和系统实现的计算机设备。
全文摘要
公开了一种抗白盒攻击者的数字签名生成(DSG)过程。这通过将特别选择的数据变换应用于算法的输入、输出和内部参数来实现。具体地,签名者的私钥不会清楚地出现在我们保护的实现中。我们的新白盒实现产生与由传统实现创建的签名兼容的签名;因此,我们的解决方案便于互操作性并可被用作传统实现的替代实现。具体地,我们描述了数字签名生成过程的密钥(d)和生成器域参数(通常用G或g表示)的变换,使得本发明的实施方式可产生签名的消息,在验证者看起来就像使用了密钥(d)而实际上没有使用密钥(d)。这使得对手不可能观察到密钥(d),因为实际上并没有使用密钥(d)。其他实施方式包括使对手难于通过观察生成数字签名的过程推算出密钥(d)的另外的保护。
文档编号H04L9/32GK103081398SQ201080065944
公开日2013年5月1日 申请日期2010年3月31日 优先权日2010年3月31日
发明者詹姆士·缪尔, 隋家元, 丹尼尔·艾利·穆多克, 菲利普·艾伦·埃森 申请人:埃德图加拿大公司