CN101099327A - 用于通用密钥导出函数支持的安全接口 - Google Patents

用于通用密钥导出函数支持的安全接口 Download PDF

Info

Publication number
CN101099327A
CN101099327A CNA2005800464274A CN200580046427A CN101099327A CN 101099327 A CN101099327 A CN 101099327A CN A2005800464274 A CNA2005800464274 A CN A2005800464274A CN 200580046427 A CN200580046427 A CN 200580046427A CN 101099327 A CN101099327 A CN 101099327A
Authority
CN
China
Prior art keywords
module
kdf
private key
function
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005800464274A
Other languages
English (en)
Other versions
CN101099327B (zh
Inventor
丹尼尔·R.·L.·布朗
罗伯特·P.·加朗特
斯科特·A.·万斯通
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maliki Innovation Co ltd
Original Assignee
Certicom Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Certicom Corp filed Critical Certicom Corp
Priority claimed from PCT/IB2005/003385 external-priority patent/WO2006051404A2/en
Publication of CN101099327A publication Critical patent/CN101099327A/zh
Application granted granted Critical
Publication of CN101099327B publication Critical patent/CN101099327B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

不适当再利用静态Didhe-Hellman(DH)私钥可泄露有关密钥的信息。通过密钥导出函数(KDF)防止这种泄露,但众多标准对密钥导出函数没有达成协议。用于执行DH私钥操作的模块必须设法支持多种不同的KDF标准。本发明提供中间方法既不试图执行所有可能的KDF运算,也不提供通向原始DH私钥操作的未受保护的入口。反而,该模块执行由使用该模块的应用程序指明的部分KDF运算。这使模块免于对每一所需的KDF执行整个KDF。反之,模块仅执行大部分KDF公用的可重复使用部分。而且,当需要新的KDF时,如果它们建立在模块已执行的部分之上,该模块能够支持它们。

Description

用于通用密钥导出函数支持的安全接口
技术领域
本发明主要涉及密码系统领域。更确切地说,本发明涉及提供通用密钥导出函数支持。
背景技术
Diffie-Hellman(DH)密钥协定是密码系统方面的基本发展。该协定是公钥密码系统的第一个可使用的方法,使密钥分配可行而不预先确定密码。
在DH密钥协定最简单的形式中,每一方有各自的私钥x,y,可从私钥分别导出公钥αx,αy。通过交换公钥,每一方可以通过联合私钥和公钥计算出共享加密密钥αxy。用以从私钥导出公钥的函数是单向函数,该单向函数可以相对简单地计算出公钥,但不能从公钥中提取私钥。这类函数基于因式分解大数字或有限域上离散对数问题的困难性,其中的大数字是两个大质数的积。
现今Diffie-Hellman(DH)密钥协定在广泛使用中。IPSec协议使用DH密钥协定,并且IPSec用在大部分虚拟专用网络(VPNs)中,大部分公司使用该虚拟专用网络以允许员工与公司网络远程连接,以及用于通过开放的互联网连接分立办公处所。
Diffie-Hellman(DH)密钥协定还是传输层安全(TLS)协议中NIST推荐的选项。该TSL协议是SSL协议的接继者。现今这些协议广泛用于保护敏感网络通信,例如网上银行业务。
静态DH密钥协定是DH密钥协定的变体,其中一个私钥是静态的,这意味着该静态私钥是将多次使用的长期密钥。
由于私钥的敏感性,尤其在它被多次使用的情况下,私钥通常设置于私钥模块中,私钥模块是包括私钥操作的执行(implementation)。通常,此类模块包括防止提取私钥的措施,以及在更加有限的程度上防止滥用私钥操作的措施。例如,这些模块可在专用硬件中执行,这些专用硬件不允许加载恶意软件,如病毒、蠕虫和特洛伊木马。通常,实现此类防干扰措施代价昂贵。因而,为了降低成本,这些模块通常设计为具有最小功能。那样,只有最少量的功能需要防干预保护。
作为简单实例,模块是智能卡。该智能卡由用户拥有。假如该用户希望从某远程计算机与诸如家用计算机的目的站安全连接。用户将智能卡放入与远程计算机相连的智能卡阅读器。而后与家用计算机进行连接。该家用计算机通过发送口令鉴别用户。远程计算机向智能卡转送口令。智能卡签署口令,然后将其发送回家用计算机。家用计算机验证该口令并而后经过远程计算机向用户提供必要的入口。这样允许用户四处移动到不同的远程计算机。然而,这些远程计算机应该不能够从智能卡提取用户的私钥。也就是说,当用户将智能卡留在阅读器中时,他们应该只能够与家用计算机连接。(为实现这一点,需要比简单口令和应答更复杂的方法。反之,智能卡可能需要执行常规的通信鉴别或甚至所有通信的加密和解密。)
为了进一步提高安全性,常常指定密钥导出函数(KDF),该函数是应用于原始DH共享加密的单向函数。一些标准规定将一个KDF与DH密钥协定一起使用。然而,不同的标准推荐不同的KDF。例如,ANSI指定几个不同的KDF,IEEE同样,SSL和TLS也同样,而IPSec又不同。
下面提供支持两个标准化密钥导出函数的详细资料的简化说明。这两个函数是ANSI X9.63密钥导出函数和TLS密钥导出函数。
如下计算ANSI X9.63密钥导出。输入有三部分。第一输入部分是Z,它是私钥模块和如上面简单实例中的家用计算机这样的目的站之间共享的加密值。这个共享加密值Z不被透露给任何网关(gateway),例如上面实例中远程计算机。第二输入部分是整型密钥datalen,它是将被生成的密钥数据的字节长度。可选的第三输入部分是字节串(octet string)Sharedlnfo,它由一些共享数据组成,这些数据由共享上述共享加密值Z的实体共享。而且,Sharedlnfo还可被任选地给定抽象语法符号一(ASN.1)编码,它包括5个字段:算法标识符、用于两个实体中每一个的可选标识符、可选公共共享信息和可选私用共享信息。然后如下基于这个输入进行KFD求值。
ANSI X9.63密钥导出函数的最初几步是对输入长度和理想的输出长度keydatalen做出的某些一致性检验。然后对4字节(4-octet)整型计数器j赋初值1。如下计算一系列的散列值(hash values):Kj=SHA-1(Z‖j‖[Sharedlnfo]),其中‖表示串联(concatenation),而[]表示加方括号的输入是可选的。这些输出的数量t视keydatalen而定。这些散列值被串联而形成字节串K′=Kl‖K2‖...‖Kt。通过取走最左边的keydatalen字节字节串被删节为短型字节串K。
在TLS标准中,密钥导出函数被称为伪随机函数(PRF)。该TLSPRF的构造完全不同于ANSI X9.63 KDF,按如下给出。该构造利用辅助构造HMAC,先描述该辅助构造。
HMAC构造可基于任何散列函数(hash function)构造。当HMAC结构与散列函数例如MD5和SHA-1一起使用时,那么结果函数(resulting function)被标记为HMAC-Hash,其中Hash是散列函数的名称。TLS PRF使用HMAC-SHA-1和HMAC-MD5。HMAC的通用形式,即HMAC-Hash,如下运算。
向HMAC输入的是加密密钥K和消息M。输出是标签T。HMAC标签计算为T=Hash((C+K)‖Hash((D+K)‖M),其中‖表示串联,+表示熟知的按位异或(XOR)运算,而C和D是如由HMAC算法确定的常量位串。更确切地说,用0位填补密钥K直到密钥K的长度与C和D的长度匹配,但如果K长于C和D,在这种情况下,K替换为密钥的散列。这表示为:
T=HMAC-Hash(K,M).
函数HMAC-Hash用在TLS PRF的另一个辅助通用散列构造(Hash-generic construction)中,称为P_Hash,构造如下:
P_Hash(Z,seed)=HMAC-Hash(Z,A(1)‖seed)‖HMAC-Hash(Z,A(2)‖seed)‖HMAC-Hash(Z,A(3)‖seed)‖...
其中‖表示串联,而A()定义如下:
A(0)=seed;A(j)=HMAC_Hash(Z,A(j-1))。
P_Hash可按需要的次数多次迭代从而产生必需的数据量。当HMAC标签的结果串联比所需的数据量长时,如同ANSI X9.63那样,使用最后(最右端)字节的截断(truncation)。
TLS PRF定义如下:
PRF(Z,label,seed)=P_MD5(S1,label‖seed)+P_SHA-1(S2,label‖seed)
照常,其中+表示异或,而‖表示串联。值S1和S2通过将字节串加密值Z划分为两半得到,左半部分为S1,而右半部分S2,作为大加密值的左半部分有奇数个字节(octets)。
因为当SHA-1输出为20字节时,由该算法规定的MD5输出是16字节,所以与函数P_SHA-1相比,P_MD5通常使用更多的迭代。
在TLS协议中广泛使用TLS PRF。例如,其用于从预主加密值(pre-master secret)导出主加密值(master secret),而其还用于从主加密钥导出加密密钥,等等。
有关KDF的标准之间的不协调导致模块执行者或者支持无KDF的DH密钥协定,或者只支持有限数量的KDF。
标准的公钥密码标准(PKCS)#11:密码令牌接口(cryptoki)为令牌例如智能卡提供接口,智能卡是一类私钥模块。在这个标准中,支持数个KDF,但所提供的接口通常不是对KDF可变通的。标准FIPS140-2也规定对私钥模块的要求。其明确要求诸如原始DH共享加密值的密码值不脱离私钥模块的安全边界,但它没有为密钥导出提供准确的机制(mechanism)。
发明人已发现不适当的再利用静态DH私钥可最终导致由对手复原私钥。更确切地说,当不应用密钥导出函数(KDF)使用通过静态DH密钥协定建立的共享密钥时,对手可在建立以及使用多个不同共享密钥的情况下发起攻击,从而复原该静态DH私钥。
发明人最近的发现意味着无KDF而执行DH的选项有安全风险。支持数量减少的KDF可能功能太有限:例如,其仅为了使用新的应用标准而要求硬件更新。
由于标准对密钥导出函数没有达成协议,用于执行DH私钥操作的模块必须设法支持多个不同KDF标准。一个方法是该模块执行所有KDF算法,因为该模块必须支持多个不同的KDF所以这样可能代价很高,并且因为当出现新的KDF时该模块不能支持它们所以又很有限。相对的方法是该模块提供通向原始DH私钥操作的无保护入口,并且让使用该模块的应用程序应用KDF。然而,这样致使私钥易受最近发现的攻击的损坏。
本发明的目的是消除或减轻以上缺点。
发明内容
一般而言,本发明准许模块执行部分KDF算法,如同使用该模块的应用程序所指明的那样。这样使模块免于对每一所需的KDF执行整个KDF。反之,仅执行大部分KDF公用的可重复使用部分。而且,当需要新的KDF时,如果它们建立在模块已执行的KDF部分之上,该模块能够支持它们。
这种情况下,在该模块上不准许通向静态DH私钥操作的原始入口(raw access),因为这样通常往往有太多的安全风险。反而,该模块提供足够灵活的接口以支持所有现有的重要KDF以及所有可预测到的KDF。通过在安全私钥模块上执行现有的和可预测到的KDF的公用部分实现这一点。现今的大部分KDF基于散列函数构造。适宜地,大多数私钥模块需要执行至少一个散列函数。这一点对于防干扰考虑也很重要,因为散列函数对许多诸如数字签名这样的算法的安全性来说是至关重要的。
另外,模块还可仅提供通向SHA-1的压缩函数的入口。该应用程序仅通过增加一些必要的填充和做一些适当的链接即可使用这个压缩函数计算SHA-1。这进一步简化了该执行模块并且还使其更加灵活。例如,某些附加的灵活性是一定的ANSI确定性随机数发生器使用SHA-1的压缩函数而不是整个SHA-1函数。更一般地说,随机数的产生,诸如密钥导出,通常涉及基于安全和非安全输入混合的散列函数评估的组合。因而本发明不只限于支持多个KDF,其还支持多个确定性随机数发生器。
为了更大的灵活性,模块可支持更基本的操作,例如SHA-1压缩函数的一些子操作。然而,,看起来不可能将这些子操作再用于除SHA-1压缩函数外的某些目的。而且,这些单个子操作不提供SHA-1的完全安全性,因而可能将模块上的加密值暴露给应用程序(application),这将被避免。然而,对于这个原则的例外是两对新散列函数:SHA-384和SHA-512对,以及SHA-224和SHA-256对。这些对中每一对有很多公共部分并且实质上能够用单个公共函数执行。应用程序将只对公共函数进行输入和输出从而获得期望的散列函数。
在TLS密钥导出情况下,TLS术语中称为伪随机函数(PRF),使用两个散列函数。一个是SHA-1而另一个是MD5。为了将PRF-TLS应用于加密值Z,该加密值被分为两半,S1和S2。而后基于MD5的PRF应用于S1,而基于SHA1的函数应用于S2。为了使模块免予既执行MD5又执行SHA1,可能非常昂贵,该模块可改为提供一种机制,将S1暴露给应用程序而将S2保持在模块中。该模块可在S2上执行SHA1计算并且应用程序可在S1上执行MD5计算。
尽管无法预计除了TLS中的KDF会不会有任何其他KDF会以这种方式分割加密值,但往往很难预言标准走哪条路。因而对于模块来说支持分割加密值的通用方法可能有用。用于该模块的接口因而包括一种机制(mechanism),由此应用程序可请求使部分加密值公开。以这样一种方式执行该模块,使得足够的加密值保持安全,并且该应用程序不能对加密值的不同部分进行多次请求。
因为新标准不断出现,并且由于标准不时重新设计KDF和随机数发生器,所以硬件模块的灵活的并且安全的接口为延伸该模块的可用性提供了极高的价值。否则该模块有变得过时太快的风险。
附图说明
现在将参照附图仅通过实例描述本发明实施例,其中:
图1是一结构图,示出了用户设备和用私钥模块加密的目的站之间的连接;以及
图2是一示意图,说明了在用户设备和图1所示的私钥模块中的密钥导出函数的执行。
图3是说明私钥模块设备的示意图。
图4是说明一个私钥导出函数实例的流程图。
图5是说明另一个密钥导出函数实例的流程图。
具体实施方式
通过说明本发明原理的具体实施例的一个实例或多个实例提供以下说明和其中的所述的实施例。出于说明而并非限制这些原理和本发明的目的提供这些实例。以下说明中,在通篇说明书和附图中相同的部件用各自相同的附图标记表示。
参照图1,示出了用户设备40和用私钥模块设备50加密的目的站100之间的连接。通常,用户设备40和目的站100之间的连接不是安全的而是开放的。例如,该连接可包括链接70和链接90,链接70连至公共网络80,例如因特网,而链接90从公共网络连至目的站100。任一链接可以是有线链接、无线链接或两者的组合。一般而言,私钥模块设备50是独立设备(self-contained device),例如智能卡或令牌,可插入其上运行应用程序的某本地设备或用户设备40。当被应用程序调用时,模块设备50与用户设备40合作保护经过链接70的通信。
在这种工作模式下,私钥模块设备50提供私钥功能来保护用户设备40和目的站设备100之间的连接。然而,由于私钥模块设备50是自定义的私钥模块,其需要除了像用户设备40的典型用户计算机保护之外的某种另外的保护。密钥导出函数(KDF)部分在用户设备40上运行的应用程序中执行,而部分在私钥模块设备50上执行的模块中执行,提高了安全性。应该明白尽管在此将用户设备40和私钥模块设备50描述为不同的设备,但它们可集成在单个物理设备中。例如,私钥模块设备50可作为专用嵌入芯片设置在用户设备40中。
用户设备40典型地将利用CPU 42和内存设备44运行多个应用程序并执行不同的功能。用户设备40包括通信模块45,以在运行在CPU 42上的通信应用程序的指挥下管理链接70。为了建立安全通信,该通信应用程序执行已建立的安全协议,例如上述的这些安全协议中之一,安全协议需要私钥功能,例如KDF。为了便于计算所选择的KDF,同时保持灵活性,KDF导出被分成谨慎的子程序(discreetsubroutines),并且通过私钥模块50执行要求根据私钥运算的这些子程序。通过用户设备40进行平衡(balance)以便不易通过用户设备40得到原始私钥数据。
参照图2,示出了具有密钥导出函数(KDF)的安全系统的示例性执行,该密钥导出函数部分在用户设备40上运行的应用程序10中执行,而部分在私钥模块设备50上运行的应用程序20中执行。该KDF被分为两部分。私钥模块50生成KDF组分24,而应用程序10使用这些组分计算KDF的平衡22。私钥模块20具有模块接口26用以与应用程序10交换数据和通信。模块接口26进一步具有两个接口函数,第一接口函数28和第二接口函数30。
有利地,某些加密值,例如Diffie-Hellmena共享加密值Z,在私钥模块20中确定。应用程序10已知Z的长度,但未知Z的值。应用程序10有一句柄,由此其可引用加密值Z并因此要求私钥模块20导出Z的值。
第一接口函数28有包括整数和加密值Z的句柄的输入。该整数定义了应该透露给应用程序10的Z的字节数。这是TLS PRF中的S1值。当执行该函数时,私钥模块20可强制将加密值的最小字节数留作S2,以便应用程序10不会知道整个密钥。选择该最小数以适于应用程序所预期的安全级。对于80位的安全级,最小数可为10字节。一旦调用第一接口函数28,该加密值被永久截断为S2,并且私钥模块20将不允许S2的进一步截断。用于引用S2的句柄或指针提供给应用程序10。优选地,由于在进一步的计算中不使用Z,引用Z的句柄或指针可被再次使用。此后,调用第一接口函数28后,私钥模块20设置加密值Z=S2。可选地,私钥模块20可创建只指向S2的新句柄,并向应用程序10输出该新句柄,使应用程序10稍后能够引用S2。值S1总是第一接口函数28输出的一部分,以便应用程序10,即含在应用程序10中的KDF的第一部分22,可执行有关S1的任何它需要执行的计算,例如用在TLS PRF中的MD5的计算。
第二接口函数30具有包括两个值X和Y以及加密值Z的句柄的输入。第一值是长度与加密值Z一致的字节串。第二接口函数30的输出是:
SHA-1(X+Z‖Y).
第二接口函数30是基本加密运算,由此可构造ANSI X9.63 KDF和TLS PRF。根据第一接口函数28的输出S1和第二件口函数30的输出,即SHA-1的散列值,应用程序10可完成KDF计算并导出密钥。
用户设备40通常有CPU 42,可由CPU 42访问的内存设备44,也可由CPU 20访问的存储介质46,以及一些输入和输出设备(未示出)。应该了解,用户设备40还可以是某种其他可编程计算设备。应用程序10在CPU 42上执行。应用程序10可存储在存储介质46上,该存储介质46可固定安装在用户设备40上、可从用户设备40上取下或可由设备40远程访问。应用程序10还可直接加载到CPU 42上。需要KDF的输出用于保护从用户设备40到目的站100的连接。
私钥模块50通常具有CPU或微处理器52、CPU 52可访问的内存设备54,也可由CPU 52访问的存储介质56,。私钥模块20在CPU52上执行。私钥模块50可存储在存储介质56上或直接加载到内存设备52上。私钥模块50可将加密私钥存储在其内存设备54或其存储介质56中。应该了解,私钥模块50还可以有供用户输入加密私钥的输入装置,例如键盘,如果私钥模块50是带键盘的智能卡。
尽管这里对通常倾向于存储较易变的数据的内存设备54和通常倾向于存储较持久的数据的存储介质56进行区别,但私钥模块设备50可以只有单个用于存储易变和不变数据两者的数据存储设备。
当需要时,数据链接60提供应用程序10和私钥模块50之间的信道。数据链接60可以是有线的、或无线的。其可以是用户设备40和私钥模块设备50之间的直接连接。,数据链接60可以是固定的,或更优选地在需要时建立的连接。一般而言,数据链接60不是开放链接,而是受保护的链接。
如上所述,私钥模块20不执行整个KDF。在私钥模块50中生成的KDF的组分24仅执行那些可重新使用的部分和仅仅是实现对安全而言比较基础的加密运算的部分。这样提升了灵活性而不损害安全性。例如当执行DH协议时,在模块上不准许通向静态DH私钥操作的原始入口。反而,该模块提供足够灵活的接口以支持所有现有的KDF以及所有可预测的KDF。最有效地做到这一点的一个方法是执行现有和可预测的KDF的公用部分。尽管可以预测将来可根据分组密码构造某些KDF,但现今的大多数KDF基于散列函数构造。大多数私钥模块应该至少支持散列函数,因为散列函数对许多算法的安全都至关重要,例如数字签名。幸运地,与KDFs相比,较少的散列函数被标准化。例如,可重新利用散列函数SHA-1以支持几个不同的KDF,例如截然不同的ANSI、IPSec和TLS密钥导出函数。该TLS密钥导出还使用另一个散列函数MD5,但这可在模块50外面处理,这一点在下文进一步解释。
参照图3,对于使用SHA-1运算生成的KDF,应用程序10指示私钥模块50提供什么样的输入作为散列函数的输入。部分输入对应用程序是保密和未知的。为了说明这一点,应用程序10通过句柄或指针57引用这种加密输入。可通过应用程序10直接提供公共输入。对每个KDF是自定义的输入的格式化由该模块提供的通用格式化接口规定。私钥模块50提供给应用程序10的散列输出可被应用程序10再利作为对更多散列函数调用的进一步输入。这是因为许多KDF基于链式结构,其中一个散列调用的输出被传送给另一个散列调用的输入。
在一个实施例中,私钥模块50包括SHA-1的执行和简单接口。在可选实施例中,私钥模块20包括通用执行环境。
可选地,可实现接口,由此模块可支持TLS PRF和ANSI X9.63KDF两者而不过度地暴露原始私钥操作(从而避免发明人发现的攻击)。
ANSI X9.63 KDF和TLS PRF支持该操作,ANSI X9.63 KDF通过计算基于共享加密值从散列函数SHA-1算出的一系列散列值,并且而后截断由散列值串联形成的字节串,从而从共享加密值导出密钥,而TLS PRF有更加复杂构造,涉及散列函数MD5和散列函数SHA-1两者的计算。
模块接口26的目标是不执行散列函数MD5。在私钥模块20上,即在KDF的第二部分24上,仅执行散列函数SHA-1。利用私钥模块20的应用程序10因而负责在其KDF的第一部分22中执行MD5。从安全性观点来看,这样可能不存在严重缺陷。这是因为普遍认为MD5散列函数不能提供足够的安全性,然而往往普遍接受对于所有安全级SHA-1散列函数可为密钥导出的目的提供足够的安全性,除了最高安全级(这些较高的安全级要求使用SHA-256或SHA-1的另一个后继者)。
在图4中主要示出了支持ANSI X9.63 KDF的操作。在这种操作中,应用程序10选择X=0以及Y=j‖[Sharedlnfo],其中j是应用程序保持的4字节计数器。而后应用程序10可以通过X、Y以及Z的句柄调用函数30。而后私钥模块50的应用程序20可以根据上述的和图4中所示的表达式使用由应用程序10提供的X和Y的值以及Z的句柄计算SHA-1。而后应用程序10可以得到所计算出的SHA-1值,并利用这一点构造ANSI X9.63 KDF并导出密钥。
图5示出了支持TLS PRF的应用程序10和20的运行。为了将共享加密值Z分割为两半S1和S2,应用程序10调用第一接口函数28(图5的部分1以及以上已关于函数28描述)。接着应用程序10调用第二接口函数30从而基于S2计算散列值(图5的部分2),而后使用上面的构造从第一和第二接口函数28、30的输出计算P SHA-1(图5的部分3)。在下面阐述部分2和3。
为了构造用在图5中所示的TLS PRF操作的部分2中的函数HMAC-SHA-1,应用程序10先通过X=D和Y=M以及密钥K的句柄调用第二接口函数30,得出T1=SHA-1((D+K)‖M)。(D的值是公知的常量,因此应用程序10可利用。)而后应用程序10设定X=C以及Y=T,用相同的K句柄,得到T=SHA-1((C+K)‖T1)=HMAC-SHA(K,M)。(C的值像D一样是公开的。)
如果密钥K需要用0位填充,那么应用程序10将通过用与适当长度的常量C和D异或的必需0位预先考虑第二输入Y解决这一点。如果密钥K足够长而需要首先压缩,那么应用程序10可通过设置X=0和Y=0实现,从而得到散列密钥。这种情况下,应用程序10可选地能够自己执行计算的其余部分,因为它有所有的必要信息,或它可以使用第三接口特征将以上散列输出指定为具有新句柄的另一个加密值。
为了构造图3中所示的支持TLS-PRF的操作的部分3中的函数P_SHA-1,现在应用程序10使用作为部分1的输出所提供的S1和上面用于计算HMAC-SHA-1的构造,其中加密密钥被限制于私钥模块20。这包括利用HMAC_SHA-1的迭代应用计算A(0)、A(1)、A(2),而后HMAC_SHA-1的迭代应用用于通过HMAC_SHA-1的进一步应用而形成P_SHA-1的输出。
而后输出P_SHA-1可用于构造KDF并导出密钥。
上面实例假定将在私钥模块20中导出的密钥作为输出传递给应用程序10。另一种选择是导出的密钥仍保留在私钥模块20中,而输出只是指向所述密钥的句柄或指针。这样的优点是所有密钥可保留在私钥模块20中,这样向模块持有者较好地保证应用程序甚至不能滥用导出的对话密钥,更不用说长期私钥。
在可选实施例中,私钥模块20有更大的灵活度。私钥模块20将支持一些简单的执行语言,例如javascript或Java,其能够使绝大多数操作在卡上执行。换句话说,应用程序10向私钥模块20提供程序,而后私钥模块20执行该程序。当在模块中时,该程序可自由访问加密值。为了安全性,私钥模块20确保模块的所有输出经历被批准的加密算法,例如像SHA-1这样的散列算法或像AES这样的对称加密运算的一部分。这阻止了恶意程序可能尝试的多数滥用。
为了进一步提高安全性,私钥模块20要求由签名人对程序进行数字签名,而签名人的公开验证密钥已经安全地加载到了私用模块20上。这是鉴别加载到私钥模块20中的程序的一个方法。程序鉴别确保该程序不是以损害模块安全为目的的恶意执行程序。通过程序鉴别不需要将该模块输出限制于某些散列或其他算法,因为程序自身足够可信可以执行任何算法。
与第一实施例相比,这个可选实施例的优势在于其提供更大的灵活性,例如允许在模块上执行现有的和新的多种散列。缺点是模块需要支持通用执行语言,并且可能需要一部分公钥基础结构(public keyinfrastructure)。
现在已详细描述了本发明的多种实施例。本领域技术人员应该了解可对这些实施例做多种修改、调整和变化而不脱离本发明范围。由于对上述最好方式进行改动或添加而不脱离本发明属性、实质和范围,所以本发明不限于这些详细资料而仅由所附权利要求限定。

Claims (4)

1.一种计算加密函数的方法,所述加密函数涉及DH共享加密值,所述DH共享加密值可由私钥模块访问,所述方法包括以下步骤:
在所述私钥模块上执行利用所述共享加密值的加密函数的组分,以及向在另一个设备上运行的应用程序提供这类组分从而完成所述加密函数的计算。
2.根据权利要求1所述的方法,其特征在于:所述加密函数是密钥导出函数。
3.根据权利要求2所述的方法,其特征在于:所述组分包括散列函数。
4.一种加密装置,所述加密装置包括第一模块、第二模块和数据传送器,所述第一模块具有共享加密值和利用所述共享加密值生成加密组分的CPU,所述第二模块运行应用程序来计算加密函数,所述数据传送器将组分从所述第一模块传送到所述第二模块。
CN2005800464274A 2004-11-11 2005-11-11 用于通用密钥导出函数支持的安全接口 Active CN101099327B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
IBPCT/IB2004/3705 2004-11-11
IB2004003705 2004-11-11
WOPCT/IB2004/3705 2004-11-11
US62692104P 2004-11-12 2004-11-12
US60/626,921 2004-11-12
PCT/IB2005/003385 WO2006051404A2 (en) 2004-11-11 2005-11-11 Secure interface for versatile key derivation function support

Publications (2)

Publication Number Publication Date
CN101099327A true CN101099327A (zh) 2008-01-02
CN101099327B CN101099327B (zh) 2011-08-24

Family

ID=39012133

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800464274A Active CN101099327B (zh) 2004-11-11 2005-11-11 用于通用密钥导出函数支持的安全接口

Country Status (2)

Country Link
JP (1) JP4937921B2 (zh)
CN (1) CN101099327B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104718718A (zh) * 2012-10-22 2015-06-17 罗伯特·博世有限公司 用于执行密码方法的装置和方法
CN105515775A (zh) * 2015-08-31 2016-04-20 赵运磊 一种高效且隐私保护的签密方法
CN107770195A (zh) * 2017-11-27 2018-03-06 甘肃万维信息技术有限责任公司 基于云环境跨域身份认证系统及其使用方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024095451A1 (ja) * 2022-11-04 2024-05-10 日本電信電話株式会社 通信システム、通信装置、方法、及びプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0372737A (ja) * 1989-05-31 1991-03-27 Toshiba Corp 依頼計算方式
JPH0619393A (ja) * 1992-03-31 1994-01-28 Toshiba Corp 依頼計算装置
DE10000503A1 (de) * 2000-01-08 2001-07-12 Philips Corp Intellectual Pty Datenverarbeitungseinrichtung und Verfahren zu dessen Betrieb
CN1365214A (zh) * 2001-01-09 2002-08-21 深圳市中兴集成电路设计有限责任公司 一种基于公开密钥体制的密钥管理方法
JP2004297578A (ja) * 2003-03-27 2004-10-21 Matsushita Electric Ind Co Ltd 公開鍵生成装置、共有鍵生成装置、鍵交換装置、及び鍵交換方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104718718A (zh) * 2012-10-22 2015-06-17 罗伯特·博世有限公司 用于执行密码方法的装置和方法
CN104718718B (zh) * 2012-10-22 2019-06-04 罗伯特·博世有限公司 用于执行密码方法的装置和方法
CN105515775A (zh) * 2015-08-31 2016-04-20 赵运磊 一种高效且隐私保护的签密方法
CN105515775B (zh) * 2015-08-31 2021-03-09 上海扈民区块链科技有限公司 一种高效且隐私保护的签密方法
CN107770195A (zh) * 2017-11-27 2018-03-06 甘肃万维信息技术有限责任公司 基于云环境跨域身份认证系统及其使用方法
CN107770195B (zh) * 2017-11-27 2024-01-09 中电万维信息技术有限责任公司 基于云环境跨域身份认证系统及其使用方法

Also Published As

Publication number Publication date
JP2008520145A (ja) 2008-06-12
CN101099327B (zh) 2011-08-24
JP4937921B2 (ja) 2012-05-23

Similar Documents

Publication Publication Date Title
US8634562B2 (en) Secure interface for versatile key derivation function support
US11271730B2 (en) Systems and methods for deployment, management and use of dynamic cipher key systems
Barker Guideline for using cryptographic standards in the federal government: Cryptographic mechanisms
Barker et al. Recommendation for random number generation using deterministic random bit generators (revised)
KR101095239B1 (ko) 보안 통신
US5200999A (en) Public key cryptosystem key management based on control vectors
CN108377189A (zh) 区块链上用户通信加密方法、装置、终端设备及存储介质
US20160006570A1 (en) Generating a key derived from a cryptographic key using a physically unclonable function
CN101179380A (zh) 一种双向认证方法、系统及网络终端
EP3987711A1 (en) Authenticated lattice-based key agreement or key encapsulation
Barker et al. Sp 800-90a. recommendation for random number generation using deterministic random bit generators
AU2021271512A1 (en) Constructing a distributed ledger transaction on a cold hardware wallet
WO2021098152A1 (zh) 基于区块链的数据处理方法、装置及计算机设备
CN101099327B (zh) 用于通用密钥导出函数支持的安全接口
CN101789939B (zh) 一种有效的可信OpenSSH的实现方法
CN107026729B (zh) 用于传输软件的方法和装置
US20220200792A1 (en) Selective data disclosure via a block chain
CN114417382A (zh) 数据传输加解密方法、装置、设备及存储介质
CN112668353A (zh) 巴枪认证方法、装置、设备和存储介质
Jain Enhancing security in Tokenization using NGE for storage as a service
Clupek et al. Light-weight Mutual Authentication with Non-repudiation
Akter et al. RSA and AES based hybrid encryption technique for enhancing data security in cloud computing
de Boer Secure communication channels for the mTask system
Khan et al. In-Depth Analysis of Cryptographic Algorithms for Cloud-Database Security
Hossain et al. A Smart Contract Based Blockchain Approach Integrated with Elliptic Curve Cryptography for Secure Email Application

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20191024

Address after: Voight, Ontario, Canada

Patentee after: BlackBerry Ltd.

Address before: Rika Univ.

Patentee before: CERTICOM Corp.

TR01 Transfer of patent right

Effective date of registration: 20240529

Address after: Ai Erlandubailin

Patentee after: Maliki Innovation Co.,Ltd.

Country or region after: Ireland

Address before: Voight, Ontario, Canada

Patentee before: BlackBerry Ltd.

Country or region before: Canada