CN107078904B - 混合密码密钥导出 - Google Patents

混合密码密钥导出 Download PDF

Info

Publication number
CN107078904B
CN107078904B CN201580057426.3A CN201580057426A CN107078904B CN 107078904 B CN107078904 B CN 107078904B CN 201580057426 A CN201580057426 A CN 201580057426A CN 107078904 B CN107078904 B CN 107078904B
Authority
CN
China
Prior art keywords
seed value
cryptographic key
blob
kdf
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.)
Active
Application number
CN201580057426.3A
Other languages
English (en)
Other versions
CN107078904A (zh
Inventor
S.索姆
D.B.舒莫夫
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN107078904A publication Critical patent/CN107078904A/zh
Application granted granted Critical
Publication of CN107078904B publication Critical patent/CN107078904B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

通过采用混合对称/非对称安全情境来实现密码密钥的管理和使用,其中种子值与随机生成的密码密钥相关联。维护安全情境环境,其中密码密钥在需要时被可靠地再现。

Description

混合密码密钥导出
背景技术
密码密钥导出是用于通常利用一个或多个密钥导出函数(KDF)而生成一个或多个具体密钥的过程。存在对称密钥导出功能,其中一个密码密钥被生成并且被用来对数据进行加密和解密。还存在非对称密钥导出函数,例如RSA和ECC,其中生成两个密码密钥,即密码密钥对:第一个,被用来对数据进行加密的公钥,以及第二个,被用来对先前加密的数据进行解密的私钥。
现有这样的应用编程接口(API),即编程指令集合,其在计算设备的一些安全情境中被采用并且作为KDF执行以提供生成非对称密码密钥对的功能或者以其它方式对该功能进行支持。在这些安全情境中,输入并未被加以利用或者以其它方式与密码密钥对的生成相关联,并且在随后执行相同KDF时,无论是否引入相同的输入,都并不存在将会再现或重新生成相同密钥对的信心或期望。由于这些KDF在这些安全情境中的隐含随机性的性质,即使尝试以相同的初始(例如种子值)(多个)输入参数来启动,它们也将在后续执行时生成不同的密钥结果。
另外还存在这样的API,其在一些其它安全情境中被采用,并且作为KDF执行以提供从系统熵直接生成一个或多个密码密钥(本文也简称为密钥)的功能或者以其它方式对该功能进行支持,上述系统熵即种子值,其是为系统使用而生成的随机或伪随机数。在这些安全情境中,(多个)相同密钥可以利用相同的系统熵而被反复可靠地再现或重新生成。在这些其它安全情境的至少一些中,相同的密钥被期望且有信心得以被再现,以便系统加密正确地工作。
发明内容
提供该发明内容而以简化形式对下文在具体实施方式中进一步进行描述的概念的选择进行介绍。该发明内容并非意在标识所请求保护主题的关键特征或必要特征,其也并非意在帮助确定所请求保护主题的范围。
本文所讨论的实施例包括用于维护混合安全情境的系统和方法,其中随机生成的密码密钥与系统熵值相关联并由系统熵值所保护。本文所讨论的实施例包括用于实现混合安全情境的系统和方法,该混合安全情境具有可靠地再现用于在加密和解密数据时使用的密码密钥的能力。本文所讨论的实施例进一步包括用于保护混合安全情境内的系统熵和密码密钥值的系统和方法。
附图说明
现在将参考意在进行说明而非限制的某些实施例和示例的图对这些和其它特征进行描述,其中:
图1利用支持密码密钥导出的混合安全情境实施例描绘了计算设备实施例。
图2描绘了用于混合密码密钥导出的顶级逻辑流程实施例。
图3利用支持密码密钥导出和保护的安全情境实施例描绘了计算设备实施例。
图4描绘了用于在混合安全情境实施例内生成并保护与种子值相关联的密钥对的逻辑流程实施例。
图5描绘了支持用于生成一个或多个密码密钥的诱饵密钥对的方法实施例的混合安全情境实施例。
图6描绘了用于生成诱饵密钥对的逻辑流程实施例。
图7描绘了支持利用(多个)对称/非对称密码密钥的示例性数据加密和数据解密的混合安全情境实施例。
图8A-8B描绘了用于识别先前所生成的(多个)密码密钥并且重构该(多个)密码密钥,生成(多个)密码密钥并且提供该(多个)密码密钥与种子值的受保护关联,并且利用(多个)对称/非对称密码密钥对数据进行加密和解密的逻辑流程实施例。
图9描绘了混合安全情境和(多个)对称/非对称密码密钥能够在其上实施和/或从其得到命令的示例性计算设备的框图。
具体实施方式
在下面的描述中,出于解释的目的而提出了许多具体细节以便提供对本文所描述实施例的透彻理解。然而,对于本领域技术人员显而易见的是,实施例可以在没有这些具体细节的情况下进行实践。在其它情况下,公知的结构和设备或者被简单地引用或者以框图形式示出,以便避免不必要的混淆。自始至终所使用的任何和所有标题都仅是为了便于解释,而不是用于任何限制用途。
在一个实施例中,不受所输入的随机或伪随机数(本文也称为种子值)影响的随机密钥生成函数被利用以实现对称/非对称密钥导出功能,其可以表面上以可再现的方式从相同输入生成相同的密码密钥(本文也称为密钥)。在一个实施例中,密钥生成函数(本文也称为KDF)将种子值与一个或多个密码密钥相关联以支持在不依赖于具体输入而生成密码密钥的环境中利用该种子值的功能。
参考图1,一个或多个计算设备100(本文被统称为计算设备100)托管用于密码密钥导出和使用的系统和方法实施例。在实施例中,计算设备100是如下文参考图9进一步讨论的能够进行计算的任意设备或设备的系统,即计算设备系统,其包括但不限于计算机、计算机网络、电子笔记本、膝上计算机、上网本,诸如但不限于蜂窝电话、蜂窝电话网络、可穿戴计算设备等的移动计算设备。在实施例中,能够支持本文所讨论的系统和方法的任何设备或设备的系统都是计算设备100。
在一个实施例中,计算设备100整合了安全情境125,其利用一个或多个密码密钥110以便保护用户115的数据170免受未经授权的攻击。因此,在一个实施例中,利用一个或多个密码密钥110对数据170进行加密和解密,这使得数据170受到保护而免受在本文被统称为攻击者127的不需要和/或无保障的用户127或实体(例如,其它无保障的计算设备)129的影响。在实施例中,本文所描述的用于密码密钥生成、维护和使用的功能被设计为保护密码术中所涉及的相关信息免于暴露于计算设备100的安全情境125之外。
在一个实施例中,安全情境125是混合对称/非对称安全情境125,在本文也被称为混合安全情境125。
在一个实施例中,在要生成密码密钥110时,执行能够导出一个或多个密钥110和/或密钥对110的第一密钥导出函数120,其在本文中也被称为KDF-ONE 120和密码密钥生成KDF 120。在一个实施例中,KDF-ONE 120在计算设备100上执行。在替换实施例中,KDF-ONE120在不同的第二计算设备160上执行,并且使得所导出的密钥或密钥对(此后统称为密钥对110)能够被计算设备100所访问。
在一个实施例中,KDF-ONE 120利用非对称算法122来生成公钥112(在本文中也被称为加密密码密钥112)和私钥114(在本文中也被称为解密密码密钥114),它们共同作为用于在数据170加密和解密中使用的密钥对110。可由KDF-ONE 120使用的非对称算法122包括但不限于RSA和ECC(Elliptic Curve Cryptography,椭圆曲线密码术)。
在一个实施例中,在计算设备100上生成系统熵105,即种子值105。在替换实施例中,种子值105在不同的第二计算设备(例如计算设备160)上生成,并且被使得能够被计算设备100所访问。在一个实施例中,种子值105是为系统使用而生成的数字,并且至少部分地被用于密码密钥导出。在一个实施例中,种子值105是随机数。在替换实施例中,种子值105是伪随机数。在实施例中,通过执行随机数生成器算法或伪随机数生成器算法来生成或以其它方式创建种子值105。在一个实施例中,种子值105是在执行预定算法或操作时所生成的瞬时值。
在实施例中,种子值105可以是任意大小。在实施例中,种子值105中的数位数量相对越大,通常给予本文所讨论的密码系统和方法的保护就越大。
在实施例中,安全情境125将种子值105与密码密钥对110相关联。因此,在一个实施例中,安全情境125指定针对计算设备100当前存在的种子值105与一个或多个所生成的密码密钥110之间的关联,尽管种子值105尚未被用于生成密钥110。
在一个实施例中,种子值105与由KDF-ONE 120所生成的公钥112和私钥114相关联150。在一个实施例中,此后,每当种子值105被给出并且数据170将被加密或解密时,种子值105就被用于识别要用于加密或解密的相应密码密钥112或114。在一个实施例中,利用搜索或查找机制来识别种子值105的(多个)相关密钥110。
图2图示了用于在图1的混合安全情境125实施例内工作的逻辑流程实施例。其中种子值105与KDF(例如KDF-ONE 120)的输出(即(多个)密钥110)相关联150。在一个实施例中,KDF(例如KDF-ONE 120)在其每次执行时随机生成一个或多个密钥 110,即KDF每次被执行时,其都将生成(多个)新的密钥,而并不考虑或并不关联之前所生成的任何(多个)先前密钥。
虽然以下的讨论是关于本文描绘的系统而进行,但是所描述的操作可以在其它系统中实施。本文所描述的操作并不局限于所示出的顺序。此外,在其它替换实施例中,可以执行更多或更少的操作。
参考图2,在一个实施例中,当数据要被加密或解密时,逻辑流程开始200。在一个实施例中,获得种子值,或者替换地生成种子值210。在一个实施例中,在判定框220,确定该种子值是否与一个或多个密钥相关联。因此,在一个实施例中,确定220一个或多个密码密钥是否已经被生成并且与种子值相关联。如果是,则识别270之前所生成的(多个)密钥,并且该处理结束260。
然而,如果在判定框220确定种子值当前并未与(多个)密码密钥相关联,则在一个实施例中,执行KDF以生成一个或多个密码密钥230。在一个实施例中,执行图1的KDF-ONE120。在一个实施例中,KDF-ONE 120的执行导致密钥对110中的公钥112和私钥114被生成。
在一个实施例中,种子值与所生成的(多个)密钥相关联240。在一个实施例中,留存250种子值和所生成的(多个)密钥之间的关联,并且该处理结束260。
在一个实施例中, 如从图2所看到的,(多个)密码密钥110在新的种子值105被引入计算系统100或以其它方式由计算系统100所产生时被生成一次,并且随后种子值105与之前所生成的(多个)密钥110相关联。
在计算系统100和混合安全情境125实施例中,种子值105和所生成的密钥对110以及它们的关联得到保护。在图1中,描述了安全情境125的顶级图示以解释种子值105和一个或多个所生成的密码密钥110(即,统称为密钥对110)的关联。参考图3,更为详细地描述了计算系统100和安全情境125以解释种子值105和所生成的密钥对110的保护实施例。
参考图3,在一个实施例中,第二密钥导出函数KDF-TWO 310被以种子值105和由KDF-ONE 120所导出的至少一个密钥110作为KDF-TWO 310的输入而执行,KDF-TWO 310在本文也称为密码封装KDF 310。在一个实施例中,KDF-TWO 310被以种子值105和私钥114作为KDF-TWO 310的输入而执行,并且由此生成二进制大对象(blob,binary large object),即二进制大对象335。在一个实施例中,KDF-TWO 310也被以种子值105和公钥112作为KDF-TWO310的输入而执行,并且由此生成第二二进制大对象345,即第二个二进制的大型对象。在替换实施例中,KDF-TWO 310被以种子值105、公钥112和私钥114作为KDF-TWO 310同时的输入而执行,并且由此生成一个二进制大对象,例如二进制大对象335。
在一个实施例中,KDF-TWO 310在计算设备100上执行。在替换实施例中,KDF-TWO310在例如计算设备160的替换计算设备上执行,并且所输出二进制大对象335以及所输出二进制大对象345(其在该实施例中被生成的情况下)随后被使得对于计算设备100而言是可用的。
在一个实施例中,KDF-TWO 310利用对称加密算法315、利用种子值105和私钥114来生成二进制大对象335。在一个实施例中,KDF-TWO 310利用对称加密算法315、利用种子值105和公钥112生成第二二进制大对象345。在替换实施例中,KDF-TWO 310利用对称加密算法315、利用种子值105、公钥112及其相关私钥114来生成二进制大对象335。
在一个实施例中,在生成二进制大对象335之后,(多个)底层密码密钥110就不再保存在计算设备100上,因此用户115和攻击者127都无法发现计算设备100上的(多个)底层密码密钥 110。
在一个实施例中,在生成二进制大对象345之后,例如公钥112的底层密码密钥就不再保存在计算设备100上,因此用户115和攻击者127都无法发现计算设备100上的底层密码密钥110。
在替换实施例中,KDF-TWO 310利用其它算法315来生成例如二进制大对象的数字,该算法支持在利用相同输入执行KDF-TWO 310时生成的相同的输出数字。
在一个实施例中,种子值105通过执行函数320而自行被修改、更改或改变,或者以其它方式被加密,并且生成在本文被称为消化种子值325的第二值。在该实施例的一个方面,种子值105是针对单向函数320的输入,诸如但不限于散列函数或密码散列函数,并且由此生成消化种子值325。在一个实施例中,所利用的单向函数320被设计为使得攻击者127难以从所得到的消化种子值142重建种子值105。
在一个实施例中,种子值105在创建消化种子值325之后就不再被保存在计算设备100上。在替换实施例中,种子值105不能在计算系统100和/或计算系统的安全情境125之外进行访问。
在一个实施例中,消化种子值325与利用相同种子值105所生成的二进制大对象335相关联,并且该二进制大对象335被识别为其相关二进制大对象335。在生成第二二进制大对象345的实施例中,消化种子值325 与利用相同的种子值105生成的第二二进制大对象345相关联,并且该第二二进制大对象345被识别为其相关的第二二进制大对象345。
在一个实施例中,消化种子值325及其相关二进制大对象335被作为关联数据360存储在储存容器350中,其在本文也被称为高速缓存350。在生成第二二进制大对象345的实施例中,消化种子值325、其相关二进制大对象335及其相关的第二二进制大对象345被作为关联数据360存储在高速缓存350中。
在一个实施例中,高速缓存350被托管在计算设备100上。在另一个实施例中,高速缓存350可以被托管在计算设备100所能够访问的另一个计算设备160上。
在一个实施例中,高速缓存350的格式是包含相关的所存储的消化种子值354、所存储的二进制大对象356以及(如果在实施例中生成的话)所存储的第二二进制大对象358的条目352的表格。所存储的二进制大对象356是相关二进制大对象335,所存储的第二二进制大对象358是相关的第二二进制大对象345。在该实施例的一个方面,该表格是查找表。
在替换实施例中,高速缓存350的格式是其它数据库格式,其支持对所存储的消化种子值354和所存储的相关二进制大对象356的条目352的保存,并且在生成相关的第二二进制大对象345的实施例中存储相关的第二二进制大对象358,其包括但并不局限于链表。
在一个实施例中,消化种子值325、相关二进制大对象335和第二相关二进制大对象345的生成和存储对种子值105、相关联的公钥112和相关联的私钥114进行保护以免在计算设备100的安全情境125之外以及计算设备100本身之外暴露。
在一个实施例中,从相同种子值105但在在两个单独的安全情境125中(例如,在例如计算设备100和计算设备160的两个单独计算设备上)所生成的消化种子值325在这两个单独的安全情境125中通常将会是不同的数字。这是由于经由在唯一计算设备100或160上执行的单向函数320的执行在任何特定计算设备100或160上都随机生成消化种子值325。因此,在一个实施例中,通过以种子值105作为输入在计算设备100上执行单向函数320而生成的消化种子值325将在每次生成消化种子值325时具有结果(resultant)相同的值。在该实施例中,通过利用相同种子值105作为输入但是在不同的第二计算设备160上执行单向函数320所生成的消化种子值325通常将具有与在计算设备100上生成的消化种子值325的值有所不同的值。
因此,在一个实施例中,计算设备100和160均有权访问相同计算设备100或160上的单向函数320的执行以及高速缓存350。例如,在一个实施例中,如本文关于例如数据170的解密所描述的,当单向函数320在计算设备100上执行并且高速缓存350被托管在计算设备100上,以及用户115利用计算设备100和计算设备160对数据170进行加密和/或解密时,计算设备160被提供以针对计算设备100的访问,以便执行单向函数320并访问高速缓存350。
图4图示了用于生成并保护与图1和3的安全情境125实施例内的种子值105相关联的密钥对110的逻辑流程实施例。
虽然关于本文所描绘的系统进行以下讨论,但是所描述的操作可以在其它系统中实施。本文所描述的操作不局限于所示出的顺序。另外,在其它替换实施例中,可以执行更多或更少的操作。
参考图4,在一个实施例中,当要产生和/或利用(多个)密码密钥时,该逻辑流程开始400。在一个实施例中,获得或生成种子值405。在一个实施例中,在判定框410处,确定该种子值是否与一个或多个密钥相关联。因此,在一个实施例中,确定410一个或多个密码密钥是否已经被生成并且与种子值相关联。如果是,则在本文参考图8A-8B 所描述的处理中识别415之前所生成的(多个)密钥,并且参考图4所描述的处理结束420。
然而,如果在判定框410处确定种子值当前并未与(多个)密码密钥相关联,则在一个实施例中,执行KDF以生成一个或多个密码密钥425。在一个实施例中,执行图3的KDF-ONE120。在一个实施例中,KDF-ONE 120的执行导致密钥对110中的公钥112和私钥114被生成。
在一个实施例中,执行第二KDF以生成一个或多个二进制大对象430。在一个实施例中,执行图3的KDF-TWO 310。如关于图3所讨论的,在一个实施例中,KDF-TWO 310被以种子值105和密钥对110的私钥114作为输入,以及以二进制大对象(binary large object,二进制大型对象)335作为输出而执行。在一个实施例中,KDF-TWO 310也被以种子值105和密钥对110的公钥112作为输入以及以第二二进制大对象345作为输出而执行。在替换实施例中,KDF-TWO 310被以种子值105、密钥对110的私钥114和公钥112同时作为输入以及以二进制大对象325作为输出而执行。因此,在一个实施例中,种子值与所生成的(多个)密钥相关联430。
在一个实施例中,在生成(多个)二进制大对象之后,底层的(多个)密码密钥就不再保存在计算设备上,或者以其它方式而无法在计算设备的安全情境之外和/或计算设备之外进行访问435。
在一个实施例中,种子值通过函数的执行而自行被修改、更改或改变,或者以其它方式被加密,并且生成在本文被称为消化种子值的第二值440。在该实施例的一个方面并且参考图3,种子值105是针对单向函数320的输入,并且由此生成消化种子值325。
在一个实施例中,在生成消化种子值之后种子值就不再被保存在计算设备上,或者以其它方式无法在计算系统的安全情境之外和/或计算系统之外进行访问445。
在一个实施例中,该消化种子值、二进制大对象以及(在其被生成时的)第二二进制大对象相关联为关联数据450。
在一个实施例中,该关联数据被存储或以其它方式留存在例如高速缓存的数据储存器中455,并且该处理结束420。
再次参考图3,在一个实施例中,为了提高针对高速缓存350的潜在攻击的难度,计算设备100创建数个(例如一(1)、一百(100)等)诱饵数据集合370,它们随后在多个条目352中被存储在高速缓存350中。增加高速缓存350中的条目352的数量使得攻击者127更加难以尝试识别存储的消化种子值354和所存储的(多个)密钥二进制大对象356,以及(在被生成和存储时的)358的有效关联数据360。
在一个实施例中,诱饵数据集合370是诱饵,即无效和/或未使用的消化种子值、诱饵二进制大对象,以及在生成第二二进制大对象345的实施例中,是诱饵第二二进制大对象。在一个实施例中,诱饵消化种子值作为所存储的消化种子值354而被存储在高速缓存350的条目352中。在一个实施例中,诱饵二进制大对象作为所存储的二进制大对象356而被存储在高速缓存350中的相同条目352中,作为诱饵数据集合370的诱饵消化种子值。在一个实施例中,诱饵第二二进制大对象作为所存储的第二二进制大对象358而被存储在高速缓存350的与诱饵数据集合370的诱饵消化种子值和诱饵二进制大对象相同的条目352中。
在一个实施例中,生成的诱饵数据集合370的数目可以是允许创建和存储诱饵数据集合370但是并不会导致高速缓存350被以使得高速缓存350变满而没有更多的空间用于任何更多条目352的方式而填充的任意量。如果在创建多个诱饵数据集合370之后没有用于任何额外条目352的空间,则在高速缓存350中将没有空间用于随后可能创建的任何额外的有效关联数据360。另外,在一个实施例中,充满的高速缓存350可能变得比其条目352并未被完全填满的高速缓存350更容易受到攻击者127攻击。
在一个实施例中,通过采用随机数和/或伪随机数生成器算法360来创建诱饵消化种子值、诱饵二进制大对象,以及在多个实施例中的诱饵第二二进制大对象从而生成诱饵数据集合370。在一个实施例中,计算设备100生成(多个)诱饵数据集合370,并且将其存储为关联数据360。在替换实施例中,(多个)诱饵数据集合370由第二计算设备(例如计算设备160)所生成, 并且随后被使得能够由计算设备100所访问。
在替换实施例中,以与如关于图3所描述的有效关联数据360相同的基本方式生成诱饵数据集合370。参考图5,在该替换实施例中,KDF-ONE 120被执行以生成一个或多个密钥的诱饵(即无效和/或未使用的)密钥对510。在该替换实施例中,生成或以其它方式获得诱饵种子值505。在该替换实施例中,KDF-TWO 310被以诱饵种子值505和诱饵密钥对510作为输入,以及以诱饵二进制大对象535,以及(在该替换实施例的多个方面中的)诱饵第二二进制大对象545作为输出而执行。
在该替换实施例中,诱饵种子值505通过函数320的执行而自行被修改、更改或改变,或者以其它方式被加密,并且生成在本文被称为消化种子值525的第二值。在该可替代实施例中,共同作为诱饵数据集合370的诱饵消化种子值525、诱饵二进制大对象535以及在该替换实施例的多个方面中的诱饵第二二进制大对象545以与关联数据360相同的格式被存储在高速缓存350中。
图6图示了用于在图5的安全情境125实施例内生成(多个)诱饵数据集合370的逻辑流程实施例。
虽然以下关于本文描绘的系统进行讨论,但是所描述的操作可以在其它系统中实施。本文所描述的操作并不局限于所示出的顺序。此外,在其它替换实施例中,可以执行更多或更少的操作。
参考图6,在一个实施例中,当要生成一个或多个诱饵数据集合时,逻辑流程开始600。在一个实施例中,获得或者替换地生成诱饵种子值605。在一个实施例中,执行KDF以生成一个或多个诱饵密码密钥610。在一个实施例中,执行图5的KDF-ONE 120。在一个实施例中,KDF-ONE 120的执行导致诱饵密钥对510的诱饵公钥512和诱饵私钥514的生成。
在一个实施例中,执行第二KDF以生成一个或多个诱饵二进制大对象615。在一个实施例中,执行图5的KDF-TWO 310。如关于图5所讨论的,在一个实施例中,KDF-TWO 310被以诱饵种子值505和诱饵密钥对510中的诱饵私钥514作为输入以及以诱饵二进制大对象535作为输出而执行。在一个实施例中,KDF-TWO 310还被以诱饵种子值505和诱饵密钥对510的诱饵公钥512作为输入以及以诱饵第二二进制大对象545作为输出而执行。在替换实施例中,KDF-TWO 310被以诱饵种子值505、诱饵密钥对510中的诱饵私钥514和诱饵公钥512同时作为输入以及以诱饵二进制大对象535作为输出而执行。因此,在一个实施例中,诱饵种子值与所生成的(多个)诱饵密钥相关联615。
在一个实施例中,在生成(多个)诱饵二进制大对象之后,底层的(多个)诱饵密码密钥就不再保存在计算设备上,或者以其它方式而无法在计算设备的安全情境之外和/或计算设备之外进行访问620。
在一个实施例中,诱饵种子值通过函数的执行而自行被修改、更改或改变,或者以其它方式被加密,并且生成诱饵消化种子值625。在该实施例的一个方面并且参考图5,诱饵种子值105是针对单向函数320的输入,并且由此生成诱饵消化种子值525。
在一个实施例中,在生成诱饵消化种子值之后诱饵种子值就不再被保存在计算设备上,或者以其它方式无法在计算系统的安全情境之外和/或计算系统之外进行访问630。
在一个实施例中,该诱饵消化种子值、诱饵二进制大对象以及(在被生成时的)诱饵第二二进制大对象相关联为诱饵数据集合635。
在一个实施例中,该诱饵数据集合被存储或以其它方式留存在例如高速缓存的数据储存器中640。
在一个实施例中,在判定框645,确定是否要生成另一个诱饵数据集合。如果是,则该实施例处理通过获得或替换地生成诱饵种子值605而针对新的数据集合自行重复。
如果在判定框645确定至少此时没有另外的诱饵数据集合要被生成,则该处理结束650。
在一个实施例中并且参考图7,用户115能够在他们正在使用的计算设备100或160上接收经加密的数据710。在一个实施例中,计算设备100或160本身可以接收或以其它方式得到对所要解密的经加密的数据710的访问。
为了简化讨论,出于对图7进行讨论的目的,计算设备100和160被统称为计算设备100。然而,在一个实施例中,本文参考经加密的数据的解密所讨论的操作可以在一个计算设备(例如,计算设备100)上执行,并且输出可以被使得能够由用户115在任意给定时间所操作的第二计算设备(例如,计算设备160)进行访问。此外,在一个实施例中,本文参考经加密的数据的解密的所讨论的操作可以在多个计算设备上执行,例如一些操作可以在计算设备100上执行,而其它操作则在不同的(多个)计算设备160上执行。
在一个实施例中,当存在有待解密的经加密的数据710时,种子值105被取得、获得或者以其它方式被重新生成。在一个实施例中,种子值105通过函数320的执行而自行被修改、更改或改变,或者通过其它方式被加密,并且生成消化种子值325。
在一个实施例中,使用消化种子值325搜索数据高速缓存350,并且如果找到匹配(例如匹配720),则取得相关的所存储的密钥二进制大对象356,并且因此取得或以其它方式识别出相关密钥二进制大对象335。在一个实施例中,由于仅利用一个密钥(例如私钥114)来对经加密的数据710进行解密,所以在要对经加密的数据710进行解密时并不从高速缓存350取得第二密钥二进制大对象345。
在一个实施例中,KDF-TWO 310被以种子值105和密钥二进制大对象335作为KDF-TWO 130的输入而执行,以便在这种情况下对之前所加密的密钥进行解密,计算系统100随后可以使用该密钥对经加密的数据710进行解密。在该实施例的一个方面,KDF-TWO 130被以种子值105和密钥二进制大对象335作为KDF-TWO 130的输入而执行,其中种子值105被利用来对密钥二进制大对象335进行解密。在一个实施例中,在KDF-TWO 130被执行时,原始私钥114得以被重新生成。
在一个实施例中,重新生成或重新构建的私钥114可以被计算设备100用来对经加密的数据710进行解密,并且随后的解密数据730可以被提供给用户115或者以其它方式被使得能够由用户115进行访问,或者作为有保障数据而以其它方式被加以利用。
在一个实施例中,当利用消化种子值325搜索高速缓存350并且并未在高速缓存350中找到匹配时,则计算系统100要么并没有在高速缓存350中存储先前针对种子值105所创建的条目352,要么替换地存在针对计算系统100的试图的无保障的攻击。在一个实施例中,当利用消化种子值325搜索高速缓存350并且并未在高速缓存350中找到匹配时,则计算系统100执行如参考图4所描述的处理流程,以生成从当前所利用种子值105生成的消化种子值325以及从当前所利用种子值105和至少一个密码密钥110生成的密钥二进制大对象335的关联数据360。在一个实施例中,在这种情况下还生成第二密钥进制大对象345。
在一个实施例中,新创建的关联数据360被存储在高速缓存350中。在一个实施例中,已经被新生成的要被利用来解密经加密的数据710的密钥(例如,私钥114)被利用来试图对经加密的数据710进行解密。然而,由于已经新生成了要用于解密的密钥,所以在对经加密的数据710进行解密时应该不会成功。
在一个实施例中并且参考图7,用户115可以访问他们正在使用的计算设备100上有待加密的数据730。在一个实施例中,计算设备100或160本身可以接收有待加密的数据730,或者以其它方式得到对其的访问。
在一个实施例中,当存在有待加密的数据730时,种子值105被取得、获得或以其它方式被重新生成。在一个实施例中,种子值105通过函数320的执行而自行被修改、更改或改变,或者通过其它方式被加密,并且生成消化种子值325。
在一个实施例中,利用消化种子值325搜索数据高速缓存350,并且如果找到了匹配(例如匹配720),则取得相关的所存储的密钥二进制大对象356,并且因此取得或以其它方式识别出相关的密钥二进制大对象335。在其中之前生成了第二密钥二进制大对象345并且将其存储为关联数据360的实施例中,相关的第二所存储的密钥二进制大对象358被取得并且因此相关的第二密钥二进制大对象345被取得,或者以其它方式得以被识别。在一个实施例中,由于仅使用一个密钥(例如公钥112)来对数据730进行加密,所以在高速缓存中针对包含消化种子值325的匹配720的条目352存在所存储的第二密钥二进制大对象358时,并不从高速缓存350取得密钥二进制大对象335。
在一个实施例中,KDF-TWO 310被以种子值105和密钥二进制大对象335,或者(在存在第二密钥二进制大对象345的实施例中的)第二密钥二进制大对象345作为KDF-TWO130的输入而执行,以使得在这种情况下,对之前加密的密钥进行解密,计算系统100随后可以使用该密钥对数据730进行加密。在该实施例的一个方面,KDF-TWO 130被以种子值105和密钥二进制大对象335,或者(在存在第二密钥二进制大对象345的实施例中的)第二密钥二进制大对象345作为输入而执行,其中种子值105被利用来对密钥二进制大对象335或第二密钥二进制大对象345进行解密。在一个实施例中,在这种情形中,在执行KDF-TWO 130时,原始公钥112得以被重新生成。
在一个实施例中,重新生成的公钥112可以被计算设备100用来对数据730进行加密并生成经加密的数据710,其随后被作为有保障数据而被加以利用,例如进行传送等。
在一个实施例中,当利用消化种子值325搜索高速缓存350且并未找到匹配时,则计算系统100要么并没有在高速缓存350中存储先前针对种子值105所创建的条目352,要么替换地,存在针对计算系统100的试图的无保障的攻击。在一个实施例中,当利用消化种子值325搜索高速缓存350且并未找到匹配时,则计算系统100执行如参考图4所描述的处理流程,以生成从当前所利用的种子值105生成的消化种子值325以及从当前所利用的种子值105和至少一个密码密钥110生成的密钥二进制大对象335的关联数据360。在一个实施例中,在这种情况下还生成第二密钥二进制大对象345。
在一个实施例中,新创建的关联数据360被存储在高速缓存350中。在一个实施例中,已经被新生成的要被用于对数据170进行加密的密钥(例如,公钥112)被利用来对数据170进行加密并且生成经加密的数据710。
在一个实施例中,每次获得或以其它方式访问或生成种子值105时,执行关于图7所描述的处理流程。因此,每次获得或以其它方式访问或生成种子值105时,使用种子值105来生成消化种子值325,并且使用结果生成的消化种子值325来搜索高速缓存350。如果找到匹配,则先前已经针对当前种子值105生成了相关联的密钥或密钥对110。然而,如果没有找到匹配,则密钥或密钥对110被生成并与当前种子值105相关联,并且结果所创建的关联数据360被存储在高速缓存350中。
在多个实施例中,可以利用各种机制来将关联数据360和诱饵数据集合370存储在高速缓存350中。这样的机制包括但不限于如它们被生成的顺序次序存储关联数据360和诱饵数据集合370,基于消化种子值325或诱饵消化种子值525的值而以某个数字顺序存储关联数据360和诱饵数据集合370,上述数字顺序诸如但不限于基本数字顺序,消化种子值325或诱饵消化种子值525中的最后x个数位的数字顺序,消化种子值325或诱饵消化种子值525中的前y个数位的数字顺序,等等。
图8A-8B图示了用于识别与图4的种子值105相关联并且参考图7详细描述的(多个)现有密钥的处理415的逻辑流程实施例。图8A-8B进一步图示了用于生成如参考图7所讨论的要被利用来加密和解密数据的(多个)密码密钥的逻辑流程实施例。
虽然以下关于本文描绘的系统进行讨论,但是所描述的操作可以在其它系统中实施。本文所描述的操作并不局限于所示出的顺序。此外,在其它替换实施例中,可以执行更多或更少的操作。
参考图8A,在一个实施例中,在判定框802,确定是否存在要执行的动作,例如是否存在要加密的数据,是否存在要解密的数据,种子值是否被给出或者以其它方式被生成或获得以供使用。如果在一个实施例中在该时间没有动作需要执行,则该处理保持等待直至有动作需要执行802。
在一个实施例中,如果在判定框802确定要执行动作,则获得或以其它方式创建种子值804。在一个实施例中,种子值通过函数的执行而自行被修改、更改或改变,或者以其它方式被加密,并且生成第二值,即消化种子值806。在该实施例的一个方面并且参考图3,种子值105是针对单向函数320的输入,并且由此生成消化种子值325。
在一个实施例中,消化种子值被用来搜索储存器(例如,高速缓存)以查看其是否被存储在其中810。在一个实施例中,如果在储存器350中找到针对消化种子值325的匹配(例如匹配720),则该种子值105之前已经与现有密钥对110相关联。在一个实施例中,如果没有在高速缓存350中找到针对消化种子值325的匹配,则种子值105并未与(多个)密码密钥110相关联。
在一个实施例中,在判定框812确定是否在储存器中找到了针对消化种子值的匹配。如果没有,在一个实施例中,执行KDF以生成一个或多个密码密钥814。在一个实施例中,执行图3的KDF-ONE 120。在一个实施例中,KDF-ONE 120的执行导致密钥对110中的公钥112和私钥114的生成。
在一个实施例中,执行第二KDF以生成一个或多个二进制大对象816。在一个实施例中,执行图3的KDF-TWO 310。如关于图3所讨论的,在一个实施例中,KDF-TWO 310被以种子值105和密钥对110的私钥114作为输入,以及以二进制大对象335作为输出而执行。在一个实施例中,KDF-TWO 310也被以种子值105和密钥对110的公钥112作为输入,以及以第二二进制大对象345作为输出而执行。在替换实施例中,KDF-TWO 310被以种子值105、密钥对110的私钥114和公钥112同时作为输入以及以二进制大对象325作为输出而执行。因此,在一个实施例中,种子值与所生成的(多个)密钥相关联816。
在一个实施例中,种子值在其使用之后就不再保存在计算设备上,或者以其它方式而无法在计算设备的安全情境之外和/或计算设备之外进行访问818。
在一个实施例中,该消化种子值、二进制大对象以及第二二进制大对象(在其被生成时)相关联或者以其它方式被配对为关联数据820。
在一个实施例中,该关联数据被存储或以其它方式留存在例如高速缓存的数据储存器中822。
在一个实施例中并且参考图8B,在判定框840,确定在图8A的判定框802处所确定要执行的动作是否是数据的解密。如果是,则在一个实施例中,使用所生成的密码密钥来对经加密的数据进行解密842。在该实施例的一个方面,所生成的私钥114被用于对经加密的数据710进行解密。
在一个实施例中,当前存在于安全情境中的刚才已经生成或者已经被重新建立以用于解密的(多个)密码密钥在其使用之后不再被保存在计算设备上,或者以其它方式而无法在计算设备的安全情境之外和/或计算设备之外进行访问844。
在一个实施例中,被解密的数据被给出给用户或者以其它方式可供用户使用,和/或以其它方式作为有保障数据而被加以利用846。在一个实施例中,在图8A的判定框802,再次确定是否存在要执行的动作。
如果在图8B的判定框840确定在图8A的判定框802处所要执行的动作并不是数据的解密,则在一个实施例中,在判定框850,确定在图8A的判定框802处确定要执行的动作是否是数据的加密。如果是,则在一个实施例中,所生成的密码密钥被用来对数据进行加密852。在本实施例的一个方面,所生成的公钥112被用来对数据730进行加密。
在一个实施例中,当前存在于安全情境中的刚才已经生成或者已经被重新建立以用于加密的(多个)密码密钥在其使用之后不再被保存在计算设备上,或者以其它方式而无法在计算设备的安全情境之外和/或计算设备之外进行访问854。
在一个实施例中,经加密的数据被传送、输出,或者以其它方式作为有保障数据而被加以利用856。在一个实施例中,在图8A的判定框802再次确定是否存在要执行的动作。
在图8B中,处理框415启动如参考图7所描述的识别与种子值相关联的(多个)现有密钥的处理。在一个实施例中,一旦数据高速缓存350被搜索并且所存储的消化种子值354被识别为消化种子值325的匹配,则与用来生成消化种子值325的种子值105相关联的一个或多个密码密钥110 得以被重构。
在一个实施例中,从高速缓存取得与匹配的所存储的消化种子值相关联的所存储的密钥二进制大对象828。在该实施例的一个方面中,如果要采取的当前动作是数据710的解密,则从高速缓存350取得与匹配的所存储的消化种子值354相关联的所存储的密钥二进制大对象356。在该实施例的一个方面,如果要采取的当前动作是数据730的加密并且存在所存储的第二密钥二进制大对象358,则从高速缓存350取得与匹配的所存储的种子值354相关联的所存储的第二密钥二进制大对象358。在该实施例的一个方面,如果要采取的当前动作是数据730的加密并且不存在所存储的第二密钥二进制大对象358,例如,所存储的密钥二进制大对象356是从种子值 105以及密钥对110的公钥112和私钥114所生成,则从高速缓存350取得与匹配的所存储的种子值354相关联的所存储的密钥二进制大对象356。
在一个实施例中,执行KDF以对所取得的密钥二进制大对象进行解密,从而重新生成密码密钥830。在该实施例的一个方面,KDF-TWO 310被以种子值105和所取得的密钥二进制大对象335或第二密钥二进制大对象345作为KDF-TWO 130的输入而执行,以便对之前加密的密码密钥110进行解密。
在该实施例的一个方面,当所要执行的当前动作是数据的解密时,KDF-TWO 130被以种子值105和密钥二进制大对象335作为KDF-TWO 130的输入而执行,其中种子值105被利用来对密钥二进制大对象335进行解密,并且相应的私钥114得以被重构或者以其它方式被重新生成以供计算系统用来对数据710进行解密。
在该实施例的一个方面,当所要执行的当前动作是数据的加密并且之前生成了第二密钥二进制大对象345时,KDF-TWO 130被以种子值105和第二密钥二进制大对象345作为KDF-TWO 130的输入而执行,其中种子值105被利用来对第二密钥二进制大对象345进行解密,并且相应的公钥112得以被重构或者以其它方式被重新生成以供计算系统100用来对数据730进行加密。
在该实施例的一个方面,当所要执行的当前动作是数据的加密并且没有生成第二密钥二进制大对象345时,KDF-TWO 130被以种子值105和密钥二进制大对象335作为KDF-TWO 130的输入而执行,其中种子值105被利用来对密钥二进制大对象335进行解密,并且相应的公钥112得以被重构或者以其它方式被重新生成以供计算系统100用来对数据730进行加密。
在一个实施例中,种子值在其使用之后不再被保存在计算设备上,或者以其它方式而无法在计算设备的安全情境之外和/或计算设备之外进行访问832。
图9是图示安全情境125实施例能够在其上实施和/或从其得到命令的示例性计算设备910的框图。计算设备910的示例包括但不限于服务器、服务器系统、计算机,例如台式计算机、膝上型计算机(本文也称为膝上型电脑)、笔记本、上网本、计算平板、计算机网络等,蜂窝电话、蜂窝电话网络、可穿戴计算设备,等等。
在一个实施例中,一个或多个计算设备910和/或其它组件包括计算设备系统900,上述其它组件例如(多个)外部硬盘驱动器925、外部储存器945,包括但不限于互联网970的通信系统,等等。
计算设备910实施例包括用于传输信息的总线905或其它机构,以及与总线905耦合以处理信息的处理单元940,其在本文中也被称为处理器940。计算设备910实施例还包括系统存储器950,其可以是易失性或动态的,诸如随机存取存储器(RAM),非易失性或静态的,诸如只读存储器(ROM)或闪存,或者是上述二者的某个组合。在一个实施例中,系统存储器950耦合到总线905,用于存储要由处理单元940所执行的信息和指令915,并且还可以用于在处理器940执行指令915的期间存储临时变量或其它中间信息。系统存储器950通常包含操作系统以及一个或多个程序、软件过程或应用,和/或软件代码915,并且还可以包括程序数据915。
在一个实施例中,诸如磁盘或光盘、固态驱动器、闪存驱动器等的储存器设备920也耦合到总线905以用于存储信息,包括指令915的程序代码和/或例如卷的数据915。在计算设备910实施例中,储存器设备920是计算机可读储存器920和/或机器可读储存器920。
计算设备910实施例通常包括一个或多个显示设备935,诸如但不限于显示屏,例如阴极射线管(CRT)或液晶显示器(LCD)、打印机、用于投射信息的投影仪设备,以及一个或多个扬声器,以用于向计算设备的系统管理员和用户115提供信息。实施例计算设备910通常还包括一个或多个输入设备930,诸如但不限于键盘、鼠标、轨迹球、笔、(多个)语音输入设备和触摸输入设备,系统管理员和用户115可以利用这些设备向处理器940传输信息和命令选择。所有这些设备930和935在本领域中都是已知的而并不需要在这里详尽地讨论。
在一个实施例中,处理器940执行驻留在系统存储器950中的一个或多个程序或应用和/或软件代码指令915的一个或多个序列。在一个实施例中,这些指令915可以从包括但不限于储存器设备920的另一个计算设备可读介质被读入系统存储器950。在替换实施例中,硬连线电路可以被用于代替软件指令915或与软件指令915组合使用。计算设备910实施例的环境并不局限于硬件电路和/或软件的任何具体组合。
如本文所使用的术语“计算设备可读介质”是指可以参与向处理器940提供程序或应用和/或软件指令915以供其执行的任何介质。这样的介质可以采取许多形式,包括但不限于储存介质和传输介质。储存介质的示例包括但不限于RAM、ROM、EEPROM、闪存、固态驱动器、CD-ROM、USB棒驱动器、数字通用盘(DVD)、磁带盒、磁带、磁盘储存器、或者任意其它磁性介质、软盘、柔性盘(flexible disk)、穿孔卡、纸带、或者具有孔的图案的任何其它物理介质、存储器芯片或卡盒。计算设备910实施例的系统存储器950和储存器设备920以及(多个)外部硬盘驱动器925是储存介质的另外的示例。传输介质的示例包括但不限于有线介质,诸如但不限于(多个)同轴电缆、铜线和光纤,以及无线介质,诸如但不限于电信号、光信号、声信号、RF信号和红外信号。
计算设备910实施例还包括耦合到总线905的一个或多个通信连接960。(多个)通信连接960实施例提供从计算设备910到局域网(LAN)965和/或广域网(WAN)上的其它计算设备910的双向数据通信耦合,上述广域网包括万维网或互联网970以及各种其它通信网络975,例如基于SMS的网络、电话系统网络等。
(多个)通信连接960的示例包括但不限于集成服务数字网络(ISDN)卡、调制解调器、LAN卡,以及能够发送和接收例如电、电磁、光学、声学、RF、红外等信号的任意设备。
由计算设备910实施例所接收的通信可以包括程序或应用和/或软件指令和数据915。由计算设备910实施例所接收的指令915可以在它们被接收时由处理器940所执行和/或被存储在储存器设备920或其它非易失性储存器中以供随后执行。
在一个实施例中,一种用于至少一个计算设备或计算设备系统的安全情境内的密码密钥处理的方法,包括获得例如数字的种子值,以及获得至少一个非对称的所生成的密码密钥,其在本文也被称为初始密码密钥,其中该初始密码密钥在第一KDF(密钥导出函数)被执行时被生成,并且其中该初始密码密钥在最初将种子值引入到该安全情境中时被获得。在一个实施例中,该用于密码密钥处理的方法包括利用该初始密码密钥作为输入并且生成二进制大对象(blob,binary large object)作为输出来执行第二KDF,其中该二进制大对象包括该初始密码密钥的加密形式。在一个实施例中,该用于密码密钥处理的方法包括通过利用该种子值作为函数的至少一个输入来执行该函数以生成消化种子值,将该消化种子值与该二进制大对象相关联,以及以其中该消化种子值和该二进制大对象在储存容器中相关联的方式将该消化种子值和该二进制大对象存储在该储存容器中。
在一个实施例中,该用于密码密钥处理的方法进一步包括在获得非对称的所生成的密码密钥之前,利用该消化种子值来搜索储存容器中的匹配,该匹配是与用于搜索储存容器的消化种子值具有相同值的所存储的消化种子值。在一个实施例中,该用于密码密钥处理的方法包括在获得非对称的所生成的密码密钥之前,在存在匹配的所存储的消化种子值时,从储存容器取得与所存储的消化种子值相关联的该二进制大对象,该所存储的消化种子值是与用于搜索储存容器的消化种子值具有相同的值的匹配,以及使用该种子值作为输入来执行该第二KDF,以对该二进制大对象进行解密并且重新生成初始密码密钥。
在一个实施例中,该用于密码密钥处理的方法进一步包括利用该重新生成的初始密码密钥对该计算设备所能够访问的经加密的数据进行解密。
在用于密码密钥处理的方法实施例中,该第一KDF利用非对称密钥函数,其在被执行时生成该初始密码密钥。
在用于密码密钥处理的方法实施例中,该第二KDF利用对称密钥函数,其在被执行时生成二进制大对象。
在用于密码密钥处理的方法实施例中,被执行以生成消化种子值的该函数是单向函数,其中在该单向函数被以该消化种子值作为该单向函数的输入而执行时,该种子值将并不被输出。
在用于密码密钥处理的方法实施例中,该种子值是被使得能够由计算设备的安全情境所访问的随机数。
在用于密码密钥处理的方法的替换的实施例中,该种子值是由计算设备的安全情境所生成的随机数。
在一个实施例中,一种用于密码密钥处理的方法进一步包括获得至少一个第二非对称的所生成的密码密钥,其在本文也被称为第二密码密钥,其中该第二密码密钥在该第一KDF被执行时被生成,其中该第二密码密钥在该种子值被初始引入至少一个计算设备的该安全情境时被获得,并且其中该初始密码密钥和该第二密码密钥在该第一KDF被执行时被同时生成。在一个实施例中,该用于密码密钥处理的方法包括利用该第二密码密钥作为输入以及输出二进制大对象来执行该第二KDF,其中该二进制大对象是该第二密码密钥的加密形式。在一个实施例中,该用于密码密钥处理的方法包括,在获得该初始密码密钥或第二密码密钥之前,利用消化种子值搜索储存容器中的匹配,该匹配是与被用于搜索储存容器的消化种子值具有相同值的存储的消化种子值。在一个实施例中,该用于密码密钥处理的方法包括,在获得该初始密码密钥或第二密码密钥之前,在存在匹配的所存储的消化种子值时,从储存容器取得与所存储的消化种子值相关联的该二进制大对象,该所存储的消化种子值是与用于搜索储存容器的消化种子值具有相同值的匹配,以及使用该种子值作为输入来执行该第二KDF以对该二进制大对象进行解密并且重新生成该第二密码密钥。
在一个实施例中,一种用于密码密钥处理的方法进一步包括利用该重新生成的第二密码密钥对该计算设备所能够访问的数据进行加密。
在用于密码密钥处理的方法实施例中,该初始密码密钥是利用来对经加密的数据进行解密的私钥,以及该第二密码密钥是用于数据加密的公钥。
在用于密码密钥处理的方法实施例中,该二进制大对象利用该种子值而用该第二密码密钥对初始密码密钥进行加密的结果。
在用于密码密钥处理的替换方法中,作为结果的该初始密码密钥的加密形式的二进制大对象是第一二进制大对象,并且第二二进制大对象是该第二密码密钥的加密的结果,其中该第一二进制大对象和该第二二进制大对象是具有不同值的不同二进制大对象。
在用于密码密钥处理的方法实施例中,该二进制大对象是利用该种子值的结果的初始密码密钥的加密形式。
在一个实施例中,一种用于密码密钥处理的方法进一步包括创建至少一个诱饵消化种子值;创建具有表示该初始密码密钥的格式和大小的至少一个诱饵密码密钥,其中该诱饵密码密钥具有不同于该初始密码密钥的值;利用该诱饵密码密钥作为输入而以诱饵二进制大对象作为输出来执行该第二KDF,其中该诱饵二进制大对象是该诱饵密码密钥的加密形式;将该诱饵消化种子值与该诱饵二进制大对象相关联;以及以其中在储存容器中将该诱饵消化种子值和该诱饵二进制大对象相关联的方式将该诱饵消化种子值和该诱饵二进制大对象存储在该储存容器中。
在一个实施例中,一种用于具有储存容器的至少一个计算设备系统的混合安全情境内的密码密钥实施的方法,包括获得例如数字的种子值,以及利用该种子值作为函数的至少一个输入而执行该函数以生成消化种子值。在一个实施例中,该用于混合安全情境中的密码密钥实施的方法包括利用该消化种子值搜索该储存容器中的匹配,该匹配是与被用于搜索储存容器的消化种子值具有相同值的所存储的消化种子值,其中该储存容器包括所存储的关联数据,即消化种子值和至少一个二进制大对象(blob,binary large object)。在一个实施例中,该用于混合安全情境中的密码密钥实施的方法包括,在存在与被用来搜索储存容器的消化种子值具有相同值的所存储消化种子值时,从储存容器取得与作为匹配的所存储的消化种子值相关联的该二进制大对象。在一个实施例中,该用于混合安全情境中的密码密钥实施的方法包括利用种子值作为输入来执行密码封装KDF(密钥导出功能),以对所取得的二进制大对象进行解密,并且输出至少一个密码密钥的重新生成形式,其是之前所生成并且在之前与该种子值相关联的加密密码密钥。
在执行密码封装KDF时以及当存在待解密的数据时,在一个实施例中,该用于混合安全情境中的密码密钥实施的方法包括利用解密密码密钥对数据进行解密。
在一个实施例中,一种用于混合安全情景中的密码密钥实施的方法,包括获得至少一个密码密钥,其是用于对数据进行解密的解密密码密钥,其中该解密密码密钥在密码产生KDF被执行时被生成,并且其中该解密密码密钥在将该种子值初始引入计算设备系统的该混合安全情境时被获得。在一个实施例中,该用于混合安全情景中的密码密钥实施的方法包括利用该解密密码密钥作为输入并且生成二进制大对象作为输出来执行密码封装KDF,其中该二进制大对象是该解密密码密钥的加密形式,将消化种子值与该二进制大对象相关联以生成关联数据,以及以其中该消化种子值和该二进制大对象在储存容器中相关联的方式将该消化种子值和该二进制大对象存储在该储存容器中。
在用于混合安全情境中的密码密钥实施的方法实施例中,该密码产生KDF利用非对称密钥函数。在用于混合安全情境中的密码密钥实施的方法实施例中,该密码封装KDF利用对称密钥函数。在用于混合安全情境中的密码密钥实施的方法实施例中,被执行以生成消化种子值的函数是单向函数,其中该种子值在该单向函数被以该消化种子值作为该单向函数的输入而执行时并不被输出。
在具有混合安全情境以及执行软件过程的能力的计算设备实施例中,该计算设备包括具有至少一个条目的储存容器,该条目包括消化种子值和二进制大对象(blob,binarylarge object),其中该消化种子值和该二进制大对象是关联数据。在一个实施例中,该计算设备包括对种子值的访问。在一个实施例中,该计算设备包括具有单向函数的软件过程,该单向函数在由该计算设备在该混合安全情境中执行时利用该种子值作为该单向函数的至少一个输入以生成消化种子值。在一个实施例中,该计算设备包括具有由该计算设备在该混合安全情境内执行的密码封装KDF(密钥导出函数)的软件过程。在一个实施例中,该密码封装KDF包括作为输入的种子值,以对从储存容器取得的二进制大对象进行解码,以及包括至少一个密码密钥的重新生成形式的输出,该至少一个密码密钥是之前所生成的解密密码密钥。在一个实施例中,该计算设备包括可以在该混合安全情境中用至少一个解密密码密钥进行解密的经加密的数据,该解密密码密钥在该密码封装KDF被执行时被重新生成。在一个实施例中,该计算设备包括具有密码密钥生成KDF的软件过程,该密码密钥生成KDF在由该计算设备在该混合安全情境中执行时包括生成能够由该计算设备利用来对数据进行解密的至少一个解密密码密钥的能力。
虽然本文描述了各个实施例,但是这些实施例仅是通过示例的方式被给出,而并非意在限制所要求保护主题的范围。可能进行许多变化,它们仍然处于以下权利要求的范围之内。这样的变化在检视本文的说明书、附图和权利要求书之后是清楚明了的。因此,所要求保护主题的宽度和范围仅由以下权利要求及其等同形式所限定的来加以限制。

Claims (13)

1.一种用于在至少一个计算设备的安全情境内进行密码密钥处理的方法,该方法包括:
获得包括数字的种子值;
获得至少一个包括初始密码密钥的所生成的密码密钥,其中该初始密码密钥在第一密钥导出函数KDF被执行时被生成,并且其中该初始密码密钥在将所述种子值初始引入所述至少一个计算设备的该安全情境时被获得;
由该至少一个计算设备的处理单元执行第二KDF,其包括以该初始密码密钥作为输入以及以二进制大对象作为输出,其中该二进制大对象包括所述初始密码密钥的加密形式,所述第一KDF和所述第二KDF中的一者利用非对称秘钥函数,并且所述第一KDF和所述第二KDF中的另一者利用对称秘钥函数;
由该至少一个计算设备的该处理单元利用该种子值作为对函数的至少一个输入而执行该函数,以生成消化种子值;
由该至少一个计算设备的该处理单元将该消化种子值与该二进制大对象相关联;以及
以其中该消化种子值和该二进制大对象在储存容器中相关联的方式将该消化种子值和该二进制大对象存储在该储存容器中。
2.根据权利要求1所述的方法,进一步包括:
在获得至少一个所述所生成的密码密钥之前,利用所述消化种子值来搜索所述储存容器中的匹配,该匹配包括所存储的消化种子值具有与被用于搜索该储存容器的所述消化种子值相同的值;
在获得至少一个所述所生成的密码密钥之前,在存在具有与被用于搜索所述储存容器的所述消化种子值相同的值的、被存储在所述储存容器中的所存储的消化种子值时,从所述储存容器取得与所存储的所述消化种子值相关联的所述二进制大对象,所存储的所述消化种子值包括匹配;以及
执行所述第二KDF,其包括以所述种子值作为输入,以对所述二进制大对象进行解密并且重新生成所述初始密码密钥。
3.根据权利要求2所述的方法,进一步包括利用该重新生成的初始密码密钥对该至少一个计算设备所能够访问的经加密的数据进行解密。
4.根据权利要求1所述的方法,其中所述第一KDF利用所述非对称密钥函数,其在被执行时生成所述初始密码密钥。
5.根据权利要求4所述的方法,其中所述第二KDF利用所述对称密钥函数,其在被执行时生成所述二进制大对象。
6.根据权利要求1所述的方法,其中被执行以生成消化种子值的该函数是单向函数,其中该种子值在该单向函数被以该消化种子值作为该单向函数的输入而执行时将不被输出。
7.根据权利要求1所述的方法,进一步包括:
获得至少一个第二非对称的所生成的密码密钥,其包括第二密码密钥,其中该第二密码密钥在该第一KDF被执行时被生成,其中该第二密码密钥在该种子值被初始引入至少一个计算设备的该安全情境时被获得,并且其中该初始密码密钥和该第二密码密钥在该第一KDF执行时被同时生成;
执行该第二KDF,第二KDF包括以该第二密码密钥作为输入以及以二进制大对象作为输出,其中该二进制大对象包括该第二密码密钥的加密形式;
在获得该初始密码密钥之前以及在获得该第二密码密钥之前,利用该消化种子值搜索该储存容器中的匹配,该匹配包括所存储的消化种子值具有与被用于搜索该储存容器的消化种子值相同的值;
在获得该初始密码密钥之前以及在获得该第二密码密钥之前,在存在与用于搜索该储存容器的消化种子值具有相同值的、存储在该储存容器中的所存储的消化种子值时,从该储存容器取得与该所存储的消化种子值相关联的二进制大对象,该所存储的消化种子值包括匹配;以及
执行该第二KDF,其包括以该种子值作为输入,以对该二进制大对象进行解密并且重新生成该第二密码密钥。
8.根据权利要求7所述的方法,进一步包括利用该重新生成的第二密码密钥对该至少一个计算设备所能够访问的数据进行加密。
9.根据权利要求1所述的方法,进一步包括:
创建至少一个诱饵消化种子值;
创建包括表示该初始密码密钥的格式和大小的至少一个诱饵密码密钥,并且其中该诱饵密码密钥包括不同于该初始密码密钥的值;
执行该第二KDF,其包括以该诱饵密码密钥作为输入以及以诱饵二进制大对象作为输出,其中该诱饵二进制大对象包括该诱饵密码密钥的加密形式;
将该诱饵消化种子值与该诱饵二进制大对象相关联;以及
以其中在该储存容器中将该诱饵消化种子值和该诱饵二进制大对象相关联的方式将该诱饵消化种子值和该诱饵二进制大对象存储在该储存容器中。
10.一种用于至少一个计算设备系统的混合安全情境内的密码密钥实施的方法,所述至少一个计算设备系统包括储存容器,所述方法包括:
获得包括数字的种子值;
由所述至少一个计算设备系统的处理单元利用所述种子值作为函数的至少一个输入而执行所述函数以生成消化种子值;
由所述至少一个计算设备系统的所述处理单元利用所述消化种子值来搜索所述至少一个计算设备系统的所述储存容器中的匹配,所述匹配包括所存储的消化种子值具有与被用于搜索所述储存容器的消化种子值相同的值,其中所述储存容器包括所存储的关联数据,所述关联数据包括消化种子值和至少一个二进制大对象;
在存在与被用来搜索所述储存容器的消化种子值具有相同值的存储在所述储存容器中的所存储的消化种子值时,由所述至少一个计算设备系统的该处理单元从所述储存容器取得与所述所存储的消化种子值相关联的所述二进制大对象,所述消化种子值包括匹配;
由该至少一个计算设备系统的处理单元执行密码封装密钥导出功能KDF,所述密码封装KDF包括以所述种子值作为输入,以对所取得的二进制大对象进行解密,其中该密码封装KDF的输出包括至少一个密码密钥的重新生成形式,其包括之前所生成的解密密码密钥;
在执行所述密码封装KDF时以及当存在待解密的数据时,由所述至少一个计算设备系统的该处理单元利用所述解密密码密钥对待解码的数据进行解密;
获得至少一个密码密钥,其包括要被用于解密数据的解密密码密钥,其中所述解密密码密钥在密码产生KDF被执行时被生成,并且其中所述解密密码密钥在将种子值初始引入计算设备系统的该混合安全情境时被获得;
由所述至少一个计算设备系统的所述处理单元执行所述密码封装KDF,其包括以所述解密密码密钥作为输入以及以二进制大对象作为输出,其中所述二进制大对象包括所述解密密码密钥的加密形式,所述第一KDF和所述第二KDF中的一者利用非对称秘钥函数,并且所述第一KDF和所述第二KDF中的另一者利用对称秘钥函数;
由该至少一个计算设备系统的该处理单元将该消化种子值与该二进制大对象相关联,其中该关联包括关联数据;以及
以其中该消化种子值和该二进制大对象在该储存容器中相关联的方式将该消化种子值和该二进制大对象存储在该储存容器中。
11.根据权利要求10所述的方法,其中所述密码产生KDF利用所述非对称密钥函数。
12.根据权利要求10所述的方法,其中所述密码封装KDF利用所述对称密钥函数。
13.根据权利要求10所述的方法,其中被执行以生成消化种子值的该函数是单向函数,其中在该单向函数被以该消化种子值作为该单向函数的输入而执行时该种子值将不被输出。
CN201580057426.3A 2014-10-23 2015-10-18 混合密码密钥导出 Active CN107078904B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/521,953 US9798677B2 (en) 2014-10-23 2014-10-23 Hybrid cryptographic key derivation
US14/521953 2014-10-23
PCT/US2015/056120 WO2016064692A1 (en) 2014-10-23 2015-10-18 Hybrid cryptographic key derivation

Publications (2)

Publication Number Publication Date
CN107078904A CN107078904A (zh) 2017-08-18
CN107078904B true CN107078904B (zh) 2020-07-31

Family

ID=55085881

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580057426.3A Active CN107078904B (zh) 2014-10-23 2015-10-18 混合密码密钥导出

Country Status (4)

Country Link
US (1) US9798677B2 (zh)
EP (1) EP3210333A1 (zh)
CN (1) CN107078904B (zh)
WO (1) WO2016064692A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019010421A1 (en) * 2017-07-07 2019-01-10 Ligatti Jay SYSTEMS AND METHODS FOR GENERATING SYMMETRIC CRYPTOGRAPHIC KEYS
EP3850505A4 (en) * 2018-09-10 2022-05-18 AVEVA Software, LLC SYSTEM AND PROCEDURES FOR SECURE CALL CONVENTION
US11270005B2 (en) 2019-06-04 2022-03-08 Schneider Electric USA, Inc. Device data protection based on network topology
US11316839B2 (en) 2019-08-19 2022-04-26 Red Hat, Inc. Proof-of-work key wrapping for temporally restricting data access
US11271734B2 (en) 2019-08-19 2022-03-08 Red Hat, Inc. Proof-of-work key wrapping for verifying device capabilities
US11424920B2 (en) 2019-08-19 2022-08-23 Red Hat, Inc. Proof-of-work key wrapping for cryptographically controlling data access
US11411728B2 (en) 2019-08-19 2022-08-09 Red Hat, Inc. Proof-of-work key wrapping with individual key fragments
US11436352B2 (en) 2019-08-19 2022-09-06 Red Hat, Inc. Proof-of-work key wrapping for restricting data execution based on device capabilities
US11411938B2 (en) 2019-08-19 2022-08-09 Red Hat, Inc. Proof-of-work key wrapping with integrated key fragments
US11303437B2 (en) 2019-08-19 2022-04-12 Red Hat, Inc. Proof-of-work key wrapping with key thresholding
EP4018339A4 (en) * 2019-08-23 2023-10-04 Commonwealth Scientific and Industrial Research Organisation » SECURE ENVIRONMENT FOR CRYPTOGRAPHIC KEY GENERATION
US20220376933A1 (en) * 2019-09-25 2022-11-24 Commonwealth Scientific And Industrial Research Organisation Cryptographic services for browser applications
US11271731B2 (en) 2019-11-07 2022-03-08 Micron Technology, Inc. Single-use password generation
FR3106909B1 (fr) * 2020-01-31 2022-02-18 St Microelectronics Grenoble 2 Circuit intégré configuré pour réaliser des opérations de chiffrement symétrique avec protection de clé secrète
EP3930254B1 (en) 2020-06-23 2023-12-20 Nxp B.V. Method for setting permissions for cryptographic keys, computer program and cryptographic processing system
US20210328779A1 (en) * 2021-06-25 2021-10-21 Intel Corporation Method and apparatus for fast symmetric authentication and session key establishment

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007116503A (ja) * 2005-10-21 2007-05-10 Mitsubishi Electric Information Systems Corp 転送元用パック、転送要求端末、転送元用パック生成装置、転送データ復元装置、プログラムセット、及び転送データ復元プログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6985583B1 (en) 1999-05-04 2006-01-10 Rsa Security Inc. System and method for authentication seed distribution
US7269736B2 (en) * 2001-02-28 2007-09-11 Microsoft Corporation Distributed cryptographic methods and arrangements
KR20030078453A (ko) * 2002-03-29 2003-10-08 주식회사 엘지이아이 무선 랜에서의 데이터 암호화/복호화 방법 및 장치
JP4790731B2 (ja) 2005-02-18 2011-10-12 イーエムシー コーポレイション 派生シード
WO2008085579A2 (en) 2006-10-25 2008-07-17 Spyrus, Inc. Method and system for deploying advanced cryptographic algorithms
JP4903071B2 (ja) * 2007-03-15 2012-03-21 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
US8494168B1 (en) 2008-04-28 2013-07-23 Netapp, Inc. Locating cryptographic keys stored in a cache
JP5342649B2 (ja) * 2008-11-24 2013-11-13 サーティコム コーポレーション ハードウェアベースセキュリティのためのシステムおよび方法
EP2189925A3 (en) * 2008-11-25 2015-10-14 SafeNet, Inc. Database obfuscation system and method
US8161244B2 (en) 2009-05-13 2012-04-17 Microsoft Corporation Multiple cache directories
US9396325B2 (en) * 2011-03-21 2016-07-19 Mocana Corporation Provisioning an app on a device and implementing a keystore
US9172529B2 (en) * 2011-09-16 2015-10-27 Certicom Corp. Hybrid encryption schemes
LU91969B1 (en) * 2012-04-02 2013-10-03 Stealth Software Ip S A R L Binary data store
US8572410B1 (en) * 2012-07-18 2013-10-29 Freescale Semiconductor, Inc. Virtualized protected storage
US9367701B2 (en) 2013-03-08 2016-06-14 Robert Bosch Gmbh Systems and methods for maintaining integrity and secrecy in untrusted computing platforms
KR20150050231A (ko) * 2013-10-31 2015-05-08 한국전자통신연구원 폐쇄 도메인에서의 키 생성 장치 및 방법
US9336696B2 (en) * 2014-02-26 2016-05-10 Unisys Corporation Enhanced security setup for media decryption

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007116503A (ja) * 2005-10-21 2007-05-10 Mitsubishi Electric Information Systems Corp 転送元用パック、転送要求端末、転送元用パック生成装置、転送データ復元装置、プログラムセット、及び転送データ復元プログラム

Also Published As

Publication number Publication date
EP3210333A1 (en) 2017-08-30
US9798677B2 (en) 2017-10-24
CN107078904A (zh) 2017-08-18
WO2016064692A1 (en) 2016-04-28
US20160117262A1 (en) 2016-04-28

Similar Documents

Publication Publication Date Title
CN107078904B (zh) 混合密码密钥导出
US20210099287A1 (en) Cryptographic key generation for logically sharded data stores
US9686248B2 (en) Secure shared key sharing systems and methods
US10275364B2 (en) Secure island computing system and method
US10659226B2 (en) Data encryption method, decryption method, apparatus, and system
US20160094347A1 (en) Method and system for secure management of computer applications
US8959350B2 (en) Token for securing communication
KR102051720B1 (ko) 모바일 단말 상의 데이터를 암호화/복호화하는 방법 및 장치
US10389517B2 (en) Using secure key storage to bind a white-box implementation to one platform
US11216570B2 (en) Reducing compromise of sensitive data in virtual machine
KR101729960B1 (ko) 신뢰 보안 플랫폼 모듈을 이용한 보안 애플리케이션 인증 및 관리 방법 및 장치
US11424919B2 (en) Protecting usage of key store content
CN102156843B (zh) 数据加密方法与系统以及数据解密方法
WO2022028289A1 (zh) 数据加密方法、数据解密方法、装置、终端和存储介质
US9367700B2 (en) System and method for establishing a shared secret for communication between different security domains
CN110221990B (zh) 数据的存储方法及装置、存储介质、计算机设备
CN109891823B (zh) 用于凭证加密的方法、系统以及非暂态计算机可读介质
US20120243678A1 (en) Data protection using distributed security key
Loftus et al. Android 7 file based encryption and the attacks against it
CN108154037B (zh) 进程间的数据传输方法和装置
CN109933994B (zh) 数据分级存储方法和装置以及计算设备
CN107688729B (zh) 基于可信主机的应用程序保护系统及方法
CN108921561B (zh) 一种基于硬件加密的数字热钱包
CN116881945B (zh) 一种基于tpcm的固态硬盘加解密方法、系统及电子设备
JP7385025B2 (ja) 暗号化コプロセッサにおけるエンティティ固有の暗号化コードの実行

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant