计算机处理器中的密钥管理
文献发布时间:2023-06-19 10:35:20
本申请案要求2018年9月18日提交且标题为“计算机处理器中的密钥管理(KeyManagement in Computer Processors)”的第16/134,387号美国专利申请案的申请日的权益,所述申请案的全部公开内容特此以引用的方式并入本文中。
本申请案涉及2018年8月3日提交且标题为“计算机处理器中的数据保护(DataProtection in Computer Processors)”的第16/054,913号美国专利申请案,所述申请案的全部公开内容特此以引用的方式并入本文中。
技术领域
本文中公开的至少一些实施例大体上涉及计算机架构,且更具体地说但不限于,涉及用于计算机处理器中的数据安全性和/或计算系统中的数据传输的密钥管理。
背景技术
典型计算机处理器从计算机系统的主存储器接收指令和/或数据以进行处理。指令和/或数据可经高速缓存以用于处理器。在一些情况下,可能进行对主存储器或处理器高速缓存中的内容的未经授权存取。举例来说,形成于同一裸片上的多个处理器或处理核心可共享主存储器。一个处理器或处理核心可经由存储器共享和/或高速缓存相干性协议来经由共享主存储器和/或处理器高速缓存存储器存取另一处理器或处理核心的内容。
举例来说,推测性执行为一种计算技术,其中处理器基于在一些条件下需要执行一或多个指令的推测来在可获得关于是否应执行此类指令的确定结果之前执行此类指令。推测性执行可能导致安全漏洞,其中可能进行对内容的未经授权存取。计算机处理器中的安全漏洞的实例包含在2018年公开的Meltdown和Spectre。
附图说明
实施例是借助于实例而非限制在附图的图中来说明的,在附图中相似参考指示类似元件。
图1展示根据至少一些实施例的具有解扰器的处理器。
图2展示解扰器从经加扰数据恢复位的操作。
图3说明处理器的解扰器。
图4展示根据一个实施例的具有不同数据安全区的处理器的结构。
图5展示根据一个实施例的在处理器中的用于数据安全性的密钥存储区。
图6说明根据一个实施例的基于虚拟存储器地址来定位密钥的技术。
图7说明加扰密钥与对应解扰密钥之间的关系。
图8说明添加用户特定数据保护的技术。
图9展示用于计算机处理器中的数据保护的密钥管理方法。
具体实施方式
本公开包含经由数据加扰保护计算机处理器中的数据的技术。举例来说,原始数据项可通过根据随机密钥重新布置原始数据项的各部分的次序来进行加扰以产生经加扰数据项,使得具有经重排序部分的经加扰数据项不作为整体展现原始数据项,且在无密钥的情况下无法从经加扰数据项导出原始数据项和各部分的正确次序。在解扰操作中,根据密钥对经加扰数据项的各部分进行重排序,以恢复原始数据项。
举例来说,可使用计算机处理器中的地址进行寻址的数据项可在其用于指令执行之前以加扰形式存储。经加扰数据项可为指令、地址或待由指令操作的操作数。数据项可以加扰形式高速缓存于内部高速缓存和/或外部高速缓存中;和/或数据项可以加扰形式存储在主存储器中。可在处理器内部执行解扰,以就在数据项待用于处理器中时恢复所述数据项。在对数据项进行加扰时,可能难以或不可能在无密钥的情况下从加扰形式恢复数据项。处理器使用秘密密钥对数据项进行解扰以执行所述数据项。因此,处理器中的数据安全性得以改善。举例来说,在侧信道攻击中,同时运行的应用程序可能尝试获得未经授权的数据存取。因为仅持有解扰密钥的应用程序才可恢复经解扰数据,因此可挫败侧信道攻击。优选地,用于加扰且因此用于对应解扰操作的密钥或秘密为随机数;且加扰/解扰操作并不涉及例如非对称密码编译中所需的那些计算密集操作。优选地,用于处理器中的加扰/解扰操作的密钥或秘密并非实体的数学/数值表示,例如非对称密码编译中的公共或私人密钥对。
图1展示根据至少一些实施例的具有解扰器113的处理器101。
在图1中,处理器101耦合到存储器105,所述存储器将指令和数据供应到处理器101以供执行。存储器105存储需要使用秘密密钥解扰的经加扰数据109。一般来说,存储器105可为计算机系统的主存储器或计算机系统的存储装置或混合存储器与存储装置。存储器105可包含易失性存储器和/或非易失性存储器。
处理器101可将经加扰数据109加载到外部高速缓存103和/或内部高速缓存107中。因为外部高速缓存103和/或内部高速缓存107中的内容使用秘密密钥加扰,因此内容被保护而阻止未经授权存取。
解扰器113耦合在内部高速缓存107与寄存器111和/或执行单元115之间。解扰器113仅在用于寄存器111或执行单元115中时才产生经解扰数据117。
举例来说,经加扰数据109可为待在处理器101中执行的指令。指令可以加扰形式存储在内部高速缓存107、外部高速缓存103和/或存储器105中。就在执行指令之前,解扰器113将其转化为解扰形式。执行单元115接着执行所述指令。
在一些情况下,处理器101还包含加扰器,所述加扰器对执行的结果进行加扰以产生加扰结果,所述加扰结果随后存储在内部高速缓存107、外部高速缓存103和/或存储器105中。
在另一实例中,经加扰数据109为待由处理器101中的指令操作的操作数。所述项可以加扰形式存储在内部高速缓存107、外部高速缓存103和/或存储器105中。就在所述项加载到寄存器111或执行单元115中以进行操作之前,解扰器113将其转化为解扰形式。执行单元115接着使用所述项来执行指令。举例来说,执行单元115可为算术逻辑单元;且所述项可为待在算术逻辑单元中的指令的执行期间操作的操作数,或指令本身。
因为数据项是以加扰形式处于存储器105、外部高速缓存103和内部高速缓存107中,因此能存取存储器105、外部高速缓存103和内部高速缓存107的另一处理器102在无用于解扰的密钥或秘密的情况下无法恢复经解扰数据项。
优选地,加扰/解扰操作经配置以使得处理器101中的性能影响得以减小/最小化。
举例来说,加扰/解扰可通过对数据项中的位进行重排序来执行。数据项具有对应于数据项中的位数和/或处理器101的寄存器111的宽度的预定宽度。对数据项内的位进行重排序的操作可使用图2和3中说明多路复用器来有效地执行。
图2展示解扰器113从经加扰数据109恢复经解扰数据117的位113的操作。
在图2中,通过将对应密钥j 153应用于多路复用器143来恢复经解扰数据117中的特定位置处的位j 133。多路复用器143接收经加扰数据109的n个位121、…、123、...、125作为输入。密钥j 153指定多路复用器143选择输入位121、…、125中的哪一者(例如,123作为经解扰数据117中的给定位置j处的输出位133。经加扰数据109中的位121、...、123、…、125的次序已从经解扰数据109中的位的次序改变。密钥j 153用以从经加扰数据109选择正确的位(例如,123)作为经解扰数据117中的特定位置j处的位。在无秘密/密钥j 153的情况下,经加扰数据109中的位121、…、123、…、125的随机加扰排序掩蔽了经解扰数据117的真值。因此,经加扰数据109的直接解译是无用的。经加扰数据109看似为随机数。
可在处理器101中使用逻辑电路以执行管线中的最小延迟有效地实施多路复用器143的操作。对数据进行解扰不需要数值或复杂的加密算法操作(例如,整数或浮点数的乘法或除法)。因此,基于图2的操作的解扰器113对处理器101的操作性能具有最小影响。
图3说明处理器的解扰器。
在图3中,经加扰数据109与经解扰数据117具有相同数目(n)的位。相同数目(n)的多路复用器141、...、143、…、145用以对经加扰数据109的输入位121、…、123、…、125进行操作以输出经解扰数据117的相应输出位131、…、133、…、135。多路复用器141、...、143、…、145将加扰数据109的位121、…、123、…、125的次序改变为经解扰数据117的位131、…、133、…、135的次序。
优选地,多路复用器141、…、143、…、145同时操作以最小化由解扰造成的延迟。或者,减小数目的多路复用器可用来减少用以实施解扰的逻辑电路;且减小的多路复用器集合可用于操作迭代以产生输出位131、…、133、…、135的不同子集,使得可经由迭代计算出输出位131、…、133、…、135的完整集合。
如图3中所说明,经加扰数据109与经解扰数据117具有相同数目(n)的位和对应位的相同值。举例来说,经加扰数据109中的位ⅰ123对应于经解扰数据117中的位j 133。因此,经加扰数据109与经解扰数据117在其位顺序上彼此不同;且经解扰数据117可视为经加扰数据109的加扰版本。因此,解扰器113的所述一组多路复用器141、…、143、…、145可与一组互补密钥一起使用以选择以产生经解扰数据171的位131、…、133、…、135,从而产生经加扰数据109的位121、…、123、…、125。举例来说,因为解扰密钥j 153将来自经加扰数据109的位置ⅰ的选择输入位ⅰ123识别为经解扰数据117的位置j处的输出位j 133,因此互补加扰密钥ⅰ识别经解扰数据117中的位置j以供选择为经加扰数据109中的位置ⅰ处的位ⅰ123。因此,可从解扰密钥151、…、153、…、155计算加扰密钥。通过在解扰器113中应用一组互补加扰密钥以对经解扰数据117进行操作,解扰器113可充当加扰器以产生经加扰数据109。类似地,可从加扰密钥计算解扰密钥151、…、153、…、155。因此,加扰器可以在图3中实施的解扰器113的方式来加以实施;且解扰器113可通过加载一组加扰密钥以替换解扰密钥151、153、…、155来重新配置为加扰器113。
如图3中所说明,加扰/解扰操作在操作前后并不改变数据大小(n)。经加扰数据109的存储容量要求与经解扰数据117的存储容量要求相同。经加扰数据109不需要额外存储器/存储容量。
图2和3说明优选解扰器113。一般来说,其它解扰器也可用于处理器101中。
举例来说,可通过根据密钥中对应位的值使位选择性地反转来执行加扰器/解扰器。如果密钥中的对应位具有预定值(例如,1),则使输入数据的位反转以产生输出数据的对应位;否则,输出数据的位与输入数据的位相同。
举例来说,位反转操作可与图2和3中的位重新定位组合以用于加扰/解扰。
图4展示根据一个实施例的具有不同数据安全区161、163的处理器101的结构。
处理器101可具有加扰区161和解扰区163。加扰区161包含内部高速缓存107。解扰区163包含执行单元115。因此,执行单元115不对任何经加扰数据(例如,109)进行操作。寄存器111可处于加扰区161或解扰区163中。解扰器113和加扰器112介接或连接加扰区161与解扰区163。加扰区161中的内容处于加扰形式;且解扰区163中的内容处于解扰形式。处理器101对加扰区161中的内容进行解扰以在解扰区163中执行计算,且在计算结果离开解扰区163且进入加扰区161之前对计算结果进行加扰。举例来说,响应于加载指令,解扰器113将经加扰数据109转换为经解扰数据117(例如,用于处理器101的算术逻辑单元);且解扰器113不使用算术逻辑单元用于解扰操作)。响应于存储指令,加扰器112将待存储的数据项从解扰形式转换为加扰形式。加扰结果可最初高速缓存于加扰区161中,且接着以加扰形式存储在外部高速缓存103、主存储器105和/或外围存储装置中。视情况,解扰器113与加扰器112可共享逻辑电路(例如,乘法器141、…、143、…、145的一部分。举例来说,解扰器113经配置以响应于加载指令而将数据从加扰区161加载到解扰区163,可通过响应于存储指令而改变用于对从解扰区163去往加扰区161的输出数据进行加扰的密钥151、…、153、…、155来重新配置为加扰器112。
图1说明数据以加扰形式在处理器101的主存储器105和高速缓存存储器103和107中的存储。数据还可以加扰形式处于存储装置(例如,耦合到计算机系统的外围总线的磁盘或快闪驱动器)中。因此,在数据从存储装置到主存储器105和/或高速缓存存储器103和107中时,其已经处于加扰形式。
在处理器101中使用解扰器113将未加密的经解扰内容仅限于在处理器101的一部分中可用,且因此改善计算机系统中的数据安全。
图5展示根据一个实施例的在处理器101中的用于数据安全性的密钥存储区167。
在图5中,处理器101具有用于对解扰形式的数据117执行计算的解扰区163。其它处理器(例如,102)能存取处理器101的特定资源,例如存储装置104、存储器105、外部高速缓存103和/或内部高速缓存107。然而,阻止这些处理器(例如,102)存取处理器101的解扰区163。举例来说,处理器101和102可为形成于相同硅裸片上和/或封装于同一集成电路芯片中的不同处理核心。在其它实例中,处理器101和102可封装于不同集成电路芯片中,且经由例如总线、互连件、网络等通信连接而连接。
举例来说,恶意程序可能在处理器102中运行,且尝试获得对待由处理器101处理的内容的未经授权存取(例如,使用安全漏洞,例如Meltdown和Spectre)。为阻止发生此类未经授权存取,数据109可以加扰形式存储在解扰区163外部的位置中。举例来说,数据109以加扰形式存储于存储装置104、计算机的主存储器105和在处理器101和102之间共享的外部高速缓存103中。另外,在处理器102可经由高速缓存相干性协议存取内部高速缓存107时,数据109可以加扰形式存储在处理器101的加扰区161(例如处理器101的内部高速缓存107)中。
在图5中,在处理器101运行经授权以处理经加扰数据109的指令时,处理器101的解扰器113将经加扰数据109转换为经解扰数据117。经解扰数据117的存在受限于解扰区163内。因为阻止另一处理器102存取处理器101的解扰区163,因此可阻止在处理器102中运行的恶意程序获得对经解扰数据117的未经授权存取(例如,经由安全漏洞,例如Meltdown和Spectre)。
在图5中,处理器101具有包含密钥存储区167的安全区165。密钥存储区167具有用于针对各种数据对象的解扰器113和加扰器112的密钥。在不存取所述对象的相应密钥的情况下,处理器101和102无法从经加扰数据109恢复经解扰数据117。
在图5中,对密钥存储区167的存取至少部分地基于用以加载用于待在解扰区163内执行的操作的经加扰数据109的虚拟地址195。
举例来说,虚拟地址195可包含例如对象ID 199、对象类型198和/或偏移196等字段。
举例来说,虚拟存储器地址195可具有预定宽度(预定位),且存储于处理器101的存储器地址寄存器169中。虚拟地址195可包含表示对象ID 199的部分和表示在由对象ID199表示的对象内的偏移196的部分。
举例来说,位于地址195处的对象可为指令集或例程;且虚拟地址195的对象ID199可用来识别所述指令和/或例程的特定特性,例如存取权利。
举例来说,位于虚拟地址195处的对象可为数据文件、资料集或数据项;且虚拟地址195的对象ID 199可用来识别数据的存取权利。
在一些情况下,对象名称服务器经配置以存储经由对象ID 199识别的对象的属性。处理器101和102可查询对象名称服务器以获得用于存取控制的属性。
在一些情况下,预定值(例如,0)的静态对象ID可用来表示操作系统104的内核对象。因此,在存储器地址中指定的静态对象ID可用来识别特定存取限制,而无需与对象名称服务器通信。用于计算机处理器加载指令以供执行的存储器地址中的静态对象ID的一些详情和实例可见于2018年7月6日申请且标题为“基于对象的存储器存取中的静态识别(Static Identifications in Object-based Memory Access)”的第16/028,840号美国专利申请案中,所述申请案的全部公开内容特此以引用的方式并入本文中。
在一些情况下,存储器地址的虚拟存储器地址195和/或对象ID(例如,199)可包含表示对象类型198的部分。举例来说,值从0到3的对象类型198可用来识别操作系统的内核对象。举例来说,值为4到5的对象类型198可用来指定偏移为不同宽度的地址(例如,包含于具有128位的存储器地址内的64位地址或32位地址)。举例来说,值为6到7的对象类型198可用来指定对象ID的预定部分应解译为局部对象或分割全局地址空间(PGAS)中的对象的识别符。举例来说,值为32的对象类型198可用来指定对象ID的其余部分应解译为在服务器(例如,197)中界定的对象的识别符。
对象类型198和/或对象ID 199可视情况用于确定存取权限。
在图5中,对象ID 199可用来存取密钥存储区167以检索用于由对象ID 199表示的对象的密钥。因此,在解扰区163经授权以经由虚拟地址195将经加扰数据109加载到解扰区163中以进行处理时,可从密钥存储区167撷取或获得用于解扰器113的密钥以从经加扰数据109产生经解扰数据117。
在经解扰数据117离开解扰区163(例如,以存储于虚拟地址195处作为计算结果和/或作为由对象ID 199表示的对象的部分)时,加扰器112将经解扰数据117转换为经加扰数据109。通过减少经解扰数据117存在的位置和持续时间,计算机系统的数据安全性得以改善。
一般来说,经解扰数据117可为指令、操作数,和/或执行单元115执行指令的结果。解扰区163可包含用以存储用于将经加扰操作数加载到解扰区163的虚拟地址的寄存器、用以存储用于从解扰区163导出加扰结果的虚拟地址的寄存器,和/或用以存储用于将经加扰指令加载到解扰区163中的虚拟地址的寄存器(例如,程序计数器)。举例来说,解扰区163可包含程序计数器、编程者可见寄存器组,和/或存储器地址寄存器。在处理器101的解扰区163外部(例如,在另一处理器102中,例如单独处理核心)运行的程序通常被阻止存取处理器101的解扰区163,但此类外部程序可存取内容处于加扰形式的高速缓存(例如,103和/或107)和主存储器(例如,105)。执行单元(例如,115)可对存储在寄存器中的操作数执行操作(例如,算术运算),且在寄存器中产生结果。用于操作数和结果的此类寄存器可配置于解扰区163中,使得执行单元(例如,115)操作且以解扰形式产生数据;且因此,在解扰区163外部的加扰不影响执行单元(例如,115)的操作和/或效率。程序计数器可将存储在其中的地址增大一以执行下一指令,或被指派分支地址以执行在给定分支地址处的指令。程序计数器还可配置在解扰区163中,使得其操作是基于经解扰地址。因此,程序计数器的内容和/或用于识别主存储器(例如,105)中的操作数的地址可为解扰区163中的经解扰地址。
图6说明根据一个实施例的基于虚拟存储器地址195来定位密钥255的技术。
图6中的虚拟地址195可包含对象ID 199、对象类型198和/或偏移196。举例来说,虚拟地址195可具有128位的宽度;虚拟地址195的数个位(例如,59个或58个)可用来存储对象ID 199、虚拟地址195的另一数目个位(例如,5个或6个)可用来存储对象类型198,且虚拟地址的剩余位(例如,64个)可用来存储相对于具有类型198和ID 199的对象的偏移196。举例来说,虚拟地址195可为存储于存储器105中的地址,如例程的编程者或用户所配置、编程和/或看到的。
在图6中,散列181应用于对象ID 199以产生索引185。索引185具有的位数比对象ID 199少,且因此减小用于从密钥存储区167查找条目(例如,213、…、215)的密钥存储区167的大小。
然而,在多个项目散列到相同索引中时,可能发生散列冲突。链结为解决散列冲突的技术之一。由冲突得出的索引可用来检索密钥-值对的清单/链。散列到索引中的每个项可配置为所述清单中的对应密钥-值对中的密钥;且对所述项的查找结果可配置为对应密钥-值对中的值。为检索散列到相同索引中的项中的一者的查找结果,可搜索经由索引识别的密钥-值对的清单/链以找出密钥与所述项匹配的密钥-值对。匹配的密钥-值对的值提供查找结果。
在对于索引185不存在散列冲突时,在密钥存储区167中的索引185处的条目(例如,213、…,或215)可检索为所得条目250。
在对于索引185存在散列冲突时,密钥存储区167中的索引185处的条目(例如,213、…,或215)识别冲突链260。冲突链260具有展示散列181到相同索引185中的对象ID(例如,261、263)的条目(例如,262、264……)的列表/链。可搜索冲突链260,以在散列181之前定位指定用于与对象ID 199匹配的对象ID(例如,261或263)的条目(例如,262或264)。经定位条目(例如,262或264)说明为所得条目250。
一般来说,散列181可应用于对象ID 199(视情况对象类型198)和/或偏移196的一部分的组合。另外,加扰可特定地针对于不同虚拟机、不同进程和/或不同用户。因此,散列181可应用于以下各者的组合:虚拟地址195的一部分、处理器101正执行其指令的当前虚拟机的识别符、程序的运行实例的当前进程的处理器ID、处理器101当前正执行其指令的用户帐户和/或用户的识别符,等。
或者,可经由使用用于不同虚拟机的密钥、用于不同进程的密钥和/或用于不同用户的密钥的加扰来实施用于隔离不同虚拟机、不同进程和/或不同用户的安全性。可经由对密钥进行加扰来组合用于虚拟机、运行实例/进程和/或用户/用户帐户的加扰保护的不同层,如下文结合图8进一步说明。在依据组合用于对象的单独密钥、用于虚拟机的密钥、用于实例/进程的密钥和/或用于用户/用户帐户的密钥来导出用于对象、虚拟机、运行实例/进程和/或用户/用户帐户的不同组合的密钥时,可减小密钥存储区167的大小。
使用索引185从密钥存储区167查找到的典型条目250可具有用于后续安全性操作的多个字段251、253、255、…、257。所述字段的值在需要时可以独立于虚拟地址195本身的方式加以调整。因此,所述字段的值并非硬译码于虚拟地址195内。
举例来说,状态字段251的值可指示由对象ID 199表示的对象当前是否在解扰区163外部处于加扰形式,例如在存储装置104、主存储器105、外部高速缓存103和/或处理器101的加扰区161中加扰。
举例来说,类型字段253的值可指示应用于由对象ID 199表示的对象的加扰的类型。举例来说,加扰可呈再分配/重定位预定宽度(例如,如经由位的计数所测量)的数据项中的不同数据字段(例如,位、字节、字组)中的数据内容的形式,如图2和3中所说明。在其它情况下,可使用可涉及对称密钥密码编译和/或公共密钥密码编译的其它密码编译算法执行加扰或加密。
举例来说,密钥字段255存储的值可表示用以根据类型253使由对象ID 199表示的对象安全的密钥。
举例来说,任选地址字段257可提供可从中检索由对象ID 199表示的对象的属性或性质的地址257。举例来说,地址257可用来检索与数据保护的类型253的实施相关的参数,例如数据字段大小、经加扰数据字段。举例来说,地址257可用来从存储器105检索由对象ID 199表示的对象的一组属性和/或存取控制参数。举例来说,地址257可用来在对象名称服务器中查询由对象ID 199表示的对象的属性和/或存取控制参数。举例来说,地址257可用来加载用于转译由对象ID 199表示的对象的虚拟地址(例如,195)的页表/页目录。
在一些情况下,与密钥存储区167分开的地址转译表用以提供指定用以将虚拟地址195转译为物理地址的页表/页目录的物理地址的条目。虚拟地址195的至少一部分可以类似于密钥条目250的识别的方式散列以编索引到地址转译表中。
一般来说,为检索密钥250而散列181且编索引185到密钥存储区167中可不同于为加载页表/页目录以将虚拟地址195转换为物理地址而散列且编索引到地址转译表中。举例来说,对象ID 199可组合虚拟机识别符与用户识别符以散列到用于地址转译表的索引中;且对象ID 199、虚拟机识别符和用户识别符可用来检索对象、虚拟机和用户的单独密钥,其中所述单独密钥经由计算(例如,密钥加扰)加以组合以产生用于用户在虚拟机中使用的对象的组合的密钥。
图7说明加扰密钥221与对应解扰密钥223之间的关系。
在图7中,数据项划分成N个字段1、2、...、N。加扰密钥221具有识别用于再分配N个源字段的内容的目的地字段的对应N个字段。
举例来说,图7说明加扰密钥221,其指定N-1为用于源字段1中的内容的目的地字段。因此,源字段1中的内容在加扰操作期间混洗到目的地字段N-1中。类似地,图7中所说明的加扰密钥221指定1为用于源字段2中的内容的目的地字段,指定N为用于源字段3中的内容的目的地字段,...,且指定N-2为用于源字段N中的内容的目的地字段。
因此,在源字段1、2、3、...、N含有相应字段的识别符且加扰密钥221应用于对具有所述字段的位置序列的数据项进行加扰时,经加扰数据项含有源字段2、...、N、1、3的识别符。因此,通过将加扰密钥221应用于位置序列1、2、3、…、N而产生的此特定经加扰数据提供解扰密钥223。
类似地,在根据解扰密钥223执行加扰以加扰位置序列1、2、3、...、N时,加扰结果提供加扰密钥221。
因此,可从解扰密钥223计算加扰密钥221;且可从加扰密钥221计算解扰密钥223。
可使用随机数产生器产生加扰密钥(例如,221)。举例来说,随机数产生器可经配置以随机地产生在1与N之间的数字。随机数产生器可用来产生第一随机数作为用于源字段1的目的地字段识别符(例如,N-1)。随后,随机数产生器可用来产生第二随机数作为用于源字段2的目的地字段识别符的候选项。如果候选项与已经选择用于加扰密钥(例如,221)的目的地字段识别符中的任一者相同,则舍弃所述候选项,且通过随机数产生器产生另一随机候选项;否则,所述候选项可用作用于源字段2的目的地字段识别符(例如,1)。可以类似方式选择用于后续字段(例如,3、...、N)的目的地字段识别符,使得加扰密钥221中的序列(例如,N-1、1、N、...、N2)是随机的但含有不重复的识别。
在一些情况下,加扰密钥221与含有待加扰的字段1、2、3、...、N的数据项具有相同大小。举例来说,为了对每一字段具有4位且存在16个4位字段(例如,N=16)的64位数据项进行加扰,加扰密钥221还可也存储为64位数据项。在此情形下,可使用用于对数据项进行加扰的相同加扰器112来对加扰密钥221进行加扰。
或者,加扰密钥221可具有不同于使用加扰密钥221加扰的数据项的大小。举例来说,数据项可具有64个1位字段;加扰密钥221具有64个6位目的地字段识别符;且因此,加扰密钥221为64位数据项的大小的6倍。
在一些实施例中,通过根据来自随机数产生器的输出的顺序重新布置目的地字段识别符的顺序来产生加扰密钥(例如,221)。举例来说,1、2、3、...、N的位置序列可用作加扰密钥的初始候选项。响应于随机数产生器提供随机数在1与N之间的i,密钥产生器从所述序列提取第i目的地字段识别符,且将其插入到预定位置(例如,在序列开始处、在序列结束处、在另一预定位置处,或在由通过随机数产生器产生的下一随机数识别的位置处)。在将目的地字段识别符的序列混洗多次之后,目的地字段识别符的所得随机序列可用作加扰密钥(例如,221),或用作解扰密钥(例如,223)。
图8说明添加用户特定数据保护的技术。
举例来说,可使用加扰密钥230对对象进行加扰。在不同用户使用对象的实例时,可基于用户密钥231、…、233对用户特定实例进行进一步加扰。
使用多个密钥进行的多个加扰层可使用复合密钥执行和/或解扰。举例来说,加扰密钥230可与用户密钥A 231组合以产生用于用户A的加扰密钥241;且加扰密钥230可与用户密钥X 233组合以产生用于用户X的加扰密钥243。用户X无法从加扰密钥230和用户密钥X233导出用于用户A的加扰密钥241;且用户X在无用户密钥A 231的情况下无法对使用用于用户A的加扰密钥241加扰的对象实例进行解扰。
举例来说,每个用户密钥(例如,231或233)可为特定地针对于相应用户的随机数。所述随机数可添加到加扰密钥231中的N个目的地字段识别符中的每一者,对N求模,以获得用户特定加扰密钥(例如,241或243)。
举例来说,每个用户密钥(例如,231或233)可为用以对共同加扰密钥230进行加扰以产生用户特定加扰密钥(例如,241或243)的单独加扰密钥。
举例来说,图7说明使用加扰密钥221对位置序列1、2、3、...、N加扰以产生解扰密钥223。解扰密钥223可使用用户密钥(例如,241或243)进一步加扰以产生用于对最初使用加扰密钥221且接着使用用户密钥(例如,241或243)加扰而产生的结果进行解扰的用户特定解扰密钥。用户特定加扰密钥可通过根据用户特定解扰密钥对位置序列1、...、N-2、N-1、N进行加扰来计算。使用用户特定加扰密钥的加扰产生与最初使用加扰密钥221加扰且接着使用用户密钥(例如,241或243)进一步对其结果进行加扰的结果相同的结果。
一般来说,使用多个密钥的多层加扰操作可精简为使用单个复合密钥的加扰;且单个复合密钥可从所述多个密钥计算而得。
举例来说,可经由使用指派给对象的对象密钥进行加扰来保护所述对象。可经由使用指派给虚拟机的虚拟机密钥进行加扰来保护所述虚拟机。可经由使用指派给用户或用户帐户的用户密钥进行加扰来保护所述用户或用户帐户。可经由使用指派给运行进程的进程密钥进行加扰来保护所述运行进程。并非单独地使用对象密钥、虚拟机密钥、用户密钥和进程密钥用于对在用于用户或用户帐户的虚拟机中运行的处理中使用的对象的数据项进行解扰,可从对象密钥、虚拟机密钥、用户密钥和进程密钥产生单个组合解扰密钥;且所述组合解扰密钥可用于对经由对象密钥、虚拟机密钥、用户密钥和进程密钥保护的经加扰数据项进行解扰。可从对象密钥、虚拟机密钥、用户密钥和进程密钥的子集导出组合解扰密钥。类似地,可从对象密钥、虚拟机密钥、用户密钥和进程密钥计算单个组合加扰密钥,以用于将未加密数据加扰成经由对象密钥、虚拟机密钥、用户密钥和进程密钥保护的加扰形式,使得拥有一些密钥但非全部密钥的恶意程序无法对数据进行解扰。
处理器101可经配置以动态地从多层密钥(例如,用于保护对象、虚拟机、用户/用户帐户和运行进程的密钥)计算组合密钥。因此,可减小用于对象、虚拟机、用户/用户帐户和/或运行进程的不同组合的密钥存储区167的大小。
图9展示用于计算机处理器中的数据保护的密钥管理方法。举例来说,图9的方法可在图1、4或5的具有图3的解扰器113的计算机系统中实施。
在框201处,计算机系统将经加扰数据109存储在存储器105中。
举例来说,计算机系统可具有共享相同存储器105的多个处理器(例如,101和102)。可能需要阻止恶意程序在一个处理器(例如,102)中运行以经由利用特定安全漏洞存取另一处理器(例如,101)的内容。
在框203处,计算机系统的第一处理器101将密钥(例如,255)存储在与计算机系统中的存储器耦合的第一处理器101的安全区165中。
在框205处,第一处理器101响应于经配置以对经解扰数据117进行操作的指令的执行而使用从安全区165检索到的密钥将经加扰数据109转换为第一处理器101的解扰区163中的经解扰数据117。
在框207处,第一处理器101在解扰区中对经解扰数据117进行操作。
在框209处,第一处理器101阻止与计算机系统中的存储器105耦合的第二处理器102存取第一处理器101的解扰区163中的经解扰数据117。
第一处理器101与第二处理器102可进一步共享存储经加扰数据109的存储装置104和/或存储经加扰数据的外部高速缓存103。第二处理器102甚至可能够存取第一处理器101内部的加扰区161,例如经由高速缓存相干性协议存取处理器101的内部高速缓存107。在一些情况下,第一处理器101和第二处理器102可为封装在同一集成电路芯片中的处理核心。
举例来说,解扰区163可包含经配置以存储用以识别用于加载到解扰区163中的经加扰数据109的位置的虚拟存储器地址169的存储器地址寄存器169。第一处理器101经配置以响应于使用虚拟存储器地址195加载经加扰数据109以用于解扰区163内操作的指令而对经加扰数据109进行解扰。
举例来说,解扰区可包含执行单元115,所述执行单元经配置以在指令的执行期间对位于虚拟存储器地址195处的数据项执行操作。
虚拟存储器地址195可包含含有对象识别符199的字段;且第一处理器101经配置以基于对象识别符199检索、产生和/或获得解扰密钥223。
举例来说,可使用图6的技术从图5中说明的密钥存储区167检索密钥255。
举例来说,安全区165具有密钥存储区167。第一处理器101经配置以至少将对象识别符199散列181到索引185中,且使用所述索引185从密钥存储区167检索条目250。
举例来说,条目25可包含以下中的至少一者:指示由对象识别符表示的对象是否被加扰的状态指示251、对象的加扰类型253或密钥255,或其任何组合。
举例来说,安全区165中的密钥存储区167可进一步包含经配置以对于散列到相同索引(例如,185)中的不同对象识别符(例如,261和263)识别不同条目(例如,262和264)的冲突链260。如果对于索引185存在散列冲突,则第一处理器101可使用冲突链260来识别条目250。
举例来说,第一处理器101可进一步存储以下中的至少一者:用于在计算机系统中托管的虚拟机的密钥、用于用户帐户的密钥,或用于运行进程的密钥,或其任何组合。可经由对应于多个密钥(例如用于对象的密钥、用于虚拟机的密钥、用于用户帐户的密钥,和/或用于第一处理器101当前正执行其指令的运行进程的密钥)的多个加扰层来保护经加扰数据。第一处理器101可从多个密钥计算组合密钥以实施对应于所述多个密钥的加扰或解扰。可通过使用另一密钥对一个密钥进行加扰来计算组合密钥。所述组合密钥可特定地针对于对象、使用对象的用户、运行用户的程序的进程,和/或正使用第一处理器101执行程序的虚拟机。
一般来说,经解扰数据117可为指令、地址或指令的操作数。经加扰数据109与经解扰数据117可具有彼此次序不同的一组相同的位。
本文所公开的技术可在具有经由一或多个总线耦合到存储器系统(例如,104、105和/或103)的至少一个处理器(例如,101)的计算机系统(例如,在图1和3中说明)中实施。存储器系统可具有多个存储器组件。
举例来说,总线可包含连接到一或多个存储器模块的存储器总线和/或包含连接到一或多个存储装置的外围因特网。存储器组件(例如,103和/或105)中的一些可提供随机存取;且存储器组件(例如,104)中的一些可提供永久性存储能力。存储器组件(例如,103和/或105)中的一些可能是易失性的,因为当存储器组件的电力供应临时断开连接时,存储于存储器组件中的数据将会损坏和/或擦除。存储器组件(例如,104)中的一些可能是非易失性的,因为存储器组件能够在不具有电力的情况下在很长一段时间内保持其中存储的内容。
一般来说,存储器系统还可称为存储器装置。存储器装置的实例为经由存储器总线连接到中央处理单元(CPU)的存储器模块(例如,105)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)或非易失性双列直插式存储器模块(NVDIMM)等。存储器装置的另一实例是经由外围互连件(例如输入/输出总线、存储区域网络)连接到中央处理单元(CPU)的存储装置104。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器和硬盘驱动器(HDD)。在一些情况下,存储器装置为提供存储器功能和存储功能两者的混合存储器/存储系统。
存储器组件可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含具有一或多个存储器单元阵列的“与非”(NAND)型快闪存储器,所述存储器单元例如单层级单元(SLC)或多层级单元(MLC)(例如,三层级单元(TLC)或四层级单元(QLC))。在一些情况下,特定存储器组件可包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一者可存储由处理器(例如,101或102)使用的数据(例如,数据块)的一或多个位。替代地或组合地,存储器组件可包含一种类型的易失性存储器。在一些情况下,存储器组件可包含但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁性随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、铁电随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、“或非”(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)、基于纳米线的非易失性存储器、并入有忆阻器技术的存储器,和/或非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来进行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。
一般来说,处理器(例如,101或102)可利用存储器系统(例如,103、104和/或105)作为包含一或多个存储器组件的物理存储器。处理器(例如,101或102)可加载来自存储器系统(例如,103、104和/或105)的指令以供执行,提供待存储于存储器系统(例如,103、104和/或105)处的数据,且请求待从存储器系统(例如,103、104和/或105)检索的数据。
处理器(例如,101或102)可包含存储器管理单元(MMU)、例如算术逻辑单元等执行单元(例如,115)和/或寄存器(例如,133),所述寄存器用以保持用于执行的指令、作为指令的操作数的数据、指令执行结果和/或用于加载来自存储器系统(例如,103、104和/或105)的指令的地址(例如,195)、从存储器系统(例如,103、104和/或105)检索数据和/或将结果存储到存储器系统(例如,103、104和/或105)中。处理器(例如,101)可具有内部高速缓存107和/或外部高速缓存103作为存储器模块(例如,105)和/或存储装置(例如,104)的一部分的代理。
用于在处理器101中处理和/或执行的经加扰数据109最初可存储在存储装置(例如,104)或存储器模块(例如,105)中。经加扰数据109可包含用于在处理器101的执行单元(例如,115)中执行的指令和/或用于在指令的执行期间处理的操作数。经加扰数据109可包含通过执行单元(例如,115)在指令的执行期间处理操作数而产生的结果。最初存储在存储器105或存储装置104中的经加扰数据109例程可以加扰形式加载到外部高速缓存103和/或内部高速缓存187,随后解扰为经解扰数据117以用于以解扰形式在执行单元(例如,115)中处理。
本文所公开的技术至少可应用于处理器与存储器分离且处理器经由通信总线和/或计算机网络与存储器和存储装置通信的计算机系统。另外,本文所公开的技术可应用于处理能力集成于存储器/存储装置内的计算机系统。举例来说,包含典型处理器的执行单元和/或寄存器的处理电路可在存储器媒体的集成电路和/或集成电路封装内实施以执行存储器装置内的处理。因此,如上文论述且在图式中说明的处理器(例如,101)不必为冯·诺伊曼体系结构中的中央处理单元。处理器可为集成于存储器内的单元以克服冯·诺依曼瓶颈,即由于由数据在根据冯·诺伊曼体系结构单独配置的中央处理单元与存储器之间移动时的延时造成的处理量的限制而限制计算性能。
本公开的描述和图式是说明性的,且不应理解为限制性的。描述许多特定细节以提供透彻理解。然而,在某些情况下,不描述众所周知的或常规的细节以免混淆描述。本公开中对一个或一实施例的提及未必是指同一实施例;且这类提及意味着至少一个。
在前述说明书中,已参考本公开的具体示范性实施例描述了本公开。将显而易见的是,可在不脱离所附权利要求书中阐述的更广精神和范围的情况下对其进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
- 计算机处理器中的密钥管理
- 用于测量和报告在具有不同速度和/或结构的处理器的计算机系统中的处理器容量和处理器使用量的装置和方法