保护多安全cpu系统中的安全软件的制作方法

文档序号:6507870阅读:155来源:国知局
保护多安全cpu系统中的安全软件的制作方法
【专利摘要】本公开涉及保护多安全CPU系统中的安全软件。一种计算系统,包括第一中央处理单元(CPU)和与第一CPU和主处理器耦接的第二CPU。响应于主处理器发出的启动第二CPU的请求,第一CPU用于通过解密加密代码,以生成可由第二CPU执行但不可由主处理器访问的解密代码,从而执行第二CPU的安全启动。
【专利说明】保护多安全CPU系统中的安全软件
[0001]相关申请的交叉参考
[0002]本申请要求于2012年12月6日提交的美国专利申请US13/707,023、于2012年8月17日提交的美国专利申请US61/684,479以及于2012年11月21日提交的美国专利申请US61/729,169的优先权,其全部内容结合于此作为参考。
【技术领域】
[0003]本发明涉及由安全中央处理单元(SCPU)执行的系统安全,更具体地,涉及由以不同安全级运行的多个SCPU在系统中执行的安全功能。
【背景技术】
[0004]由消费者需求驱动的电子和通信技术的迅速发展导致包含那些用于处理和转换第三方媒体内容的数据驱动装置被广泛采用。第三方消费者或者客户希望他们的内容被安全地处理,以使在某些权限级别外不可复制或使用所述内容。将内容从多媒体供应商数字发送至消费者的系统设法包含更高的安全等级,从而使得竞争的供应商不能访问彼此的机密。在大的片上系统(SOC)中,单一的安全中央处理单元(SCPU)可执行安全功能。

【发明内容】

[0005]根据本发明的一个方面,提供了一种计算系统,包括:第一中央处理单元(CPU);以及第二 CPU,与所述第一 CPU和主处理器耦接,其中,响应于由所述主处理器发出的启动所述第二 CPU的请求,所述第一 CPU被配置为执行所述第二 CPU的安全启动,所述安全启动包括解密加密代码,以生成能由所述第二 CPU执行但所述主处理器无法访问的解密代码。
[0006]其中,所述主处理器将所述加密代码从闪存写入动态随机存取存储器(DRAM),所述加密代码包括用于执行两级启动处理的第一级代码和第二级代码。
[0007]其中,所述第二 CPU包括专用本机存储器,所述第一 CPU和所述第二 CPU位于片上系统(SOC)上,其中,所述主处理器配置能够执行以下操作的第一级启动加载程序=WDRAM中读取所述第一级代码;在所述SOC上解密所述第一级代码;以及将所解密的第一级代码写入所述专用本机存储器。
[0008]其中,所述第一CPU进一步被配置为:对用于由所述第二CPU执行的所解密的第一级代码进行认证;以及授权所述第二 CPU执行来自所述专用本机存储器的所解密的第一级代码。
[0009]其中,所解密的第一级代码能够执行为对关于如何加载、解密和执行所述第二级代码做出决定。
[0010]其中,在执行所解密的第一级代码时,所述第二 CPU被配置为请求所述第一 CPU生成能用于解密所述第二级代码的密钥,响应于此,所述第一 CPU进一步被配置为:生成由所述第二 CPU使用的具有指定的访问权限的密钥,所述访问权限包括从中解密所述第二级代码的所述DRAM的第一区域,以及将所解密的第二级代码写入其中的所述DRAM的第二区域;以及协助所述第二 CPU创建存储器校验器,所述存储器校验器被配置为确保仅从所述DRAM的所述第一区域到所述第二区域进行解密。
[0011]其中,所述主处理器能够访问所述DRAM的所述第一区域但不能访问所述DRAM的所述第二区域。
[0012]其中,所述第二 CPU进一步被配置为:利用所述密钥对存储器的所述第一区域内存储的所述第二级代码进行解密;以及将所解密的第二级代码写入所述DRAM的所述第二区域。
[0013]所述计算系统进一步包括指令校验器,被配置为:监控由所述第二 CPU对所解密的第二级代码的指令的执行;以及防止所述第二CPU试图在所述DRAM的所述第二区域外执行指令,或强制在所述第二区域内执行指令。
[0014]其中,所述指令校验器进一步被配置为响应于检测到试图在所述DRAM的所述第二区域外执行指令重置所述计算系统,其中,所述第一 CPU以第一安全级运行,所述第二CPU以安全性低于所述第一安全级的第二安全级运行。
[0015]根据本发明的另一个方面,提供了一种用于保护包括耦接在一起的第一和第二CPU的多安全中央处理单元(CPU)系统中的软件的方法,包括:从主处理器接收启动所述第二 CPU的请求;由所述主处理器将加密代码从闪存写入动态随机存取存储器(DRAM)中,所述加密代码包括用于执行两级启动处理的第一级代码和第二级代码;以及由所述第一 CPU和所述第二 CPU对加密的第一级代码和加密的第二级代码进行解密,从而使得所述主处理器无法在解密之后访问解密的第一级代码或解密的第二级代码。
[0016]所述方法进一步包括:由所述主处理器的第一级启动加载程序从所述DRAM读取所述第一级代码;对所述第一级代码进行解密;将所述解密的第一级代码写入所述第二CPU的专用本机存储器中;以及由所述第一 CPU授权所述第二 CPU从所述专用本机存储器执行所述解密的第一级代码。
[0017]所述方法进一步包括:由所述第二 CPU请求所述第一 CPU生成密钥;由所述第一CPU生成密钥,所述密钥包括访问权限,所述访问权限包括从中解密所述第二级代码的所述DRAM的第一区域,以及将所解密的第二级代码写入其中的所述DRAM的第二区域;以及由所述第一 CPU和所述第二 CPU创建存储器校验器。
[0018]所述方法进一步包括存储器校验器:检测由所述主处理器试图对所述加密的第二级代码进行的解密;确定是否从所述第一区域到所述第二区域解密;以及响应于确定并非试图从第一区域,或并非到第二区域进行解密,对第二 CPU发出解密侵犯警告。
[0019]所述方法进一步包括所述第二 CPU:防止对所述加密的第二级代码进行解密,或强制将所述解密的第二级代码写入所述第二区域
[0020]所述方法进一步包括所述第二 CPU:利用所述密钥对存储器的所述第一区域内存储的所述第二级代码进行解密;将所解密的第二级代码写入所述DRAM的所述第二区域;执行所述解密的第二级代码;以及在所述主处理器试图在所述第二区域外执行指令时由所述指令校验器警告所述第二 CPU。
[0021]根据本发明的又一个方面,提供了一种计算系统,包括:第一中央处理单元(CPU);动态随机存取存储器(DRAM),与所述第一 CPU连接;闪存;第二 CPU,与所述第一 CPU和所述DRAM耦接;主处理器,与所述第一 CPU和所述第二 CPU、所述DRAM和所述闪存耦接,所述主处理器被配置为将加密代码从所述闪存写入所述DRAM,所述加密代码包括用于执行两级启动处理的第一级代码和第二级代码;其中,所述第一 CPU被配置为:从所述主处理器接收启动所述第二 CPU的请求;以及由所述第一 CPU和所述第二 CPU对加密的第一级代码和加密的第二级代码进行解密,从而使得所述主处理器无法在解密之后访问解密的第一级代码或解密的第二级代码。
[0022]所述计算系统进一步包括能执行为从DRAM中读取所述第一级代码的第一级启动加载程序,其中,所述第二 CPU包括专用本机存储器,其中,所述第一 CPU进一步被配置为:对所述第一级代码进行解密;将所解密的第一级代码写入所述专用本机存储器;对由所述第二 CPU执行的所述解密的第一级代码进行认证;以及授权所述第二 CPU从所述专用本机存储器执行所述解密的第一级代码。
[0023]其中,所述第二 CPU进一步被配置为请求所述第一 CPU生成密钥,响应于此,所述第一 CPU进一步被配置为生成包括访问权限的密钥,所述访问权限包括从中解密所述第二级代码的所述DRAM的第一区域,以及将所解密的第二级代码写入其中的所述DRAM的第二区域。
[0024]其中,所述第一 CPU和所述第二 CPU进一步被配置为创建存储器校验器,所述存储器校验器被配置为:检测由所述主处理器试图对加密的第二级代码进行的解密;确定是否从所述第一区域到所述第二区域解密;以及响应于确定并非试图从所述第一区域或并非到所述第二区域进行解密,防止对所述加密的第二级代码进行解密,或强制将解密的第二级代码写入所述第二区域。
【专利附图】

【附图说明】
[0025]根据以下附图和说明,可更好理解所述系统和方法。在附图中,不同视图中的相似参考数字表示对应部分。
[0026]图1为示例性多安全中央处理单元(CPU)片上系统的框图。
[0027]图2为用于执行图1的多安全CPU片上系统的示例方法的流程图。
[0028]图3为用于由安全CPU-A启动安全CPU-B的多级中的示例性第一级的框图。
[0029]图4为用于由安全CPU-A启动安全CPU-B的两级中的第二级的框图。
[0030]图5为启动安全CPU-B之后存储器中受保护第二级代码的示例性运行的框图。
[0031]图6和图7为通过由安全CPU-A安全启动安全CPU-B而保护多安全CPU系统中的软件的示例性方法的流程图,其中,图6示出了多级启动处理的第一级,图7示出了第二级。
[0032]图8为图1的示例性系统的示例框图,其中,安全CPU-B与主处理器之间的密钥分离保护敏感文件不被主处理器访问或解密。
[0033]图9为用于在安全CPU-B与主处理器之间执行密钥分离的示例方法的流程图,所述密钥分离保护敏感文件不被主处理器访问或解密。
【具体实施方式】
[0034]以下讨论涉及由安全中央处理单元(SCPU)执行的系统安全,更具体地涉及在系统中通过以不同的安全等级运行的多个SCPU来执行的安全功能。为了说明的目的,描述了两个SCPU,但是可实施更多的SCPU。SCPU诸如可以作为片上系统(SOC)上的示例,诸如可用于将流媒体送至消费者的机顶盒(STB)中。这样的媒体可包含消费者在媒体装置上可见的音频/视频内容。
[0035]在具有执行安全功能的单一安全中央处理单元(SCPU)的大的片上系统中,系统信任级别可以是二元的:操作是高安全的或者是完全不可信的。对于要求中等安全级别的操作,存在两种选择:(I)在SCPU中执行这些操作;或者(2)在主机中执行这些操作。
[0036] 第一个选项可能不理想,因为SCPU可以负责高敏感性的任务,像管理一次性口令(OTP)认证,发送消费者机密等。将这些高敏感性的任务与较低安全功能混合会引起风险并有损于SCPU的主要使命。第二选项可能不理想,因为在主机中执行中等的安全任务会使SOC不安全,主机CPU会不可信。
[0037]在芯片上由主机执行安全功能会将安全度公开的太大而不能为芯片操作提供足够的安全性。此外,如由单SCPU执行的将高安全和较低安全功能混合可能将系统安全性公开达到一定的风险级别并降低了保护芯片操作的最敏感功能的SCPU的主要使命。
[0038]此外,因为SCPU管理SOC出售商的所有权信息,所以允许终端用户对SCPU编程是有问题的。然而,一些中间等级安全任务最好由终端用户编码执行,因而SOC出售商希望允许消费者对SCPU功能的一些方面进行编程。允许用户仅对片上SCPU功能编程会使芯片的安全操作面临额外的风险和攻击。
[0039]在SOC中,具有单一的SCPU也许是不够的。使用多安全CPU方法,诸如具有专用于高安全功能的第一 SCPU以及用于较低安全任务的第二 SCPU,所述低安全任务诸如数字权限管理(DRM)、管理译码以及水印等。出于解释的目的,在本文中,第一 SCPU被标示为安全CPU-A,而第二安全等级SCPU被标示为安全CPU-B。
[0040]图1为多安全中央处理单元(SCPU)片上系统(SOC) 100的示例框图。当被配置操作时,S0C100可集成在媒体装置10内或与其耦接。系统100可包含第一 SCPU102 (也称作安全CPU-A),第二 SCPU104(也称作CPU-B),以及主处理器110,运行大部分芯片操作的通用处理器。安全CPU-A可小于安全CPU-B并被配置成以第一安全等级操作,所述第一安全等级高于CPU-B操作的第二安全等级。安全CPU-B可设置有比主处理器110高的信任级别并且主处理器可以被拒绝执行第二安全等级功能。主处理器110也可至少部分地位于S0C100之外。
[0041]例如,处于第一安全等级的安全CPU-A的功能可包括:管理根密钥(root key)、执行首次安全启动以及发送第三方内容供应商的机密。例如,处于第二安全等级的安全CPU-B的功能包括:数字权限管理、许可管理、代码转换器管理、水印以及在安全存储器中的数据处理。安全CPU-A可配置有软件代码,所述软件代码将来自安全CPU-B的指令处理为优先的,并生成由所述第二 SCPU执行的多个唯一的命令,所述命令不能由主处理器110执行。
[0042]因为配置成执行大部分处理器密集型的安全功能,在一些实施中,安全CPU-B可与主处理器Iio —样强大,例如,在存卷(filing)时,执行高达1,000或者1,500或更高的每秒Dhrystone百万次指令(DMIPS)。因而,安全CPU-B关注于较低的安全功能上。安全CPU-A会需要功率的一小部分并且以小于1,000DMIPS操作。
[0043]系统100可进一步包括片上传感器113、诸如动态随机存储器(DRAM)115的存储器以及与安全CPU-A和安全CPU-B的多个外围设备120耦接的本机校验器118。本文中“与…耦接”意指直接地连接至组件或者间接地连接至一个或多个组件。DRAM115的可以包括一部分为存储在安全存储器117中的保护码116。安全存储器117可被划分成DRAM的特定的或者确定的区域。
[0044]安全CPU-A可包含与主处理器110通信的主机接口 122以及与安全CPU-B通信的SCPU-B接口 124。安全CPU-B可包含CPU-B130,本机静态随机存取存储器(SRAM)132、指令高速缓存(i_cache)134、数据高速缓存(d-cahe)136、指令校验器138以及中断控制器140。本机SRAM132可以是安全CPU-B访问的专用本机存储器,其中,可保存指令,但临时存储的数据不可由主处理器110或其他片上主体或客户访问。
[0045]安全CPU-B和安全CPU-A可与作为CPU-B130和安全CPU-A之间的专用信道操作的专用的安全通信总线142耦接在一起。主处理器和那些存在于S0C100上的第三方用户可能不能访问安全通信总线142。安全通信总线142可由硬件和固件的组合配置并执行主从关系,其中,在一些操作中,安全CPU-A或者是安全CPU-B的主设备或从设备。例如,安全CPU-A可以是安全地启动存储器中的CPU-B的主设备。但是,例如,安全CPU-A也可以从安全CPU-B或本机校验器118接收命令。
[0046]存在于SOC上的第三方可具有其自己的CPU,其自己的逻辑块,或者作为具有能访问S0C100的能力的硬件和软件的组合存在于芯片上。第三方CPU可包括由CPU-A管理的
安全接口。
[0047]系统100可进一步包括存在于S0C100上的第三方用户访问的共用寄存器总线144。共用寄存器总线144可用于写入存储器115的寄存器。如本文中所公开,安全CPU-A可被配置成防止某些片上客户有意地停止安全CPU-B的操作。
[0048]可以与安全CPU-A和安全CPU-B耦接的本机校验器118可以是被配置成用来防止一些存在于S0C100上的用户或者硬件访问DRAM的某些区域的一个硬件。同样地,本机校验器118可防止阻挡安全CPU-B访问共用寄存器总线144和/或读取来自S0C100的DRAM或写入S0C100的DRAM。
[0049]安全CPU-A也可对本机校验器118进行编程以确保可访问主处理器110的第三方主体不能访问安全CPU-B的内部的外围设备120。外围设备可包括但不限于通用异步接收器/发射器(UART)、计时器、中断、存储器、数据存储、媒体装置或者它们的组合。
[0050]指令校验器138可监督在DRAM外执行的指令并确定通过一个组件从安全存储器调用执行的指令是否被批准由该组件执行。为了批准指令,以便执行,指令校验器138可确保安全CPU-B不在安全存储器117的已经被认证为安全操作或由主处理器110有条件访问的区域外操作。例如,指令校验器可监测DRAMl 15的读写操作,并将存储器访问的DRAM地址与安全CPU-A设置的地址范围进行比较作为用于执行指令的预认证区域。如果安全CPU-B试图执行存储区域外的指令,可重新启动安全CPU-B或者重置整个S0C。
[0051]在一个实例中,保存至安全存储器117的内容可以包含客户不希望以未经授权的方式发布的媒体内容。安全CPU-B可解密所述内容以在消费者装置上查看,但不允许其他外围设备在系统100的外部访问或发布所述内容。安全CPU- B可确保消费者能查看所述内容但不能通过主机直接访问。安全CPU-A和CPU-B可以设置限制某些芯片组件对安全存储器117访问的硬件。例如,安全CPU-A和安全CPU-B可使得存储器的区域不限于主处理器。此外,安全CPU-B可对消费者可查看的内容执行水印或者操纵时间戳。
[0052]更具体地,安全存储器117可仅由安全CPU-A和CPU-B,以及本地解压和渲染引擎进行访问。因而,安全CPU-B可将内容解密至该存储区域中,然后局部显示处理可读取所解密的内容以本地渲染。这些步骤中没有一个需要主处理器110访问安全存储器。安全CPU-B可以通过不到达主处理器而将所述内容解密至该限制的区域来确保安全的数据流。
[0053]中断控制器140可与CPU-A耦接并被配置成根据通过传感器113生成的数据检测片上条件。例如,片上传感器113可产生与芯片的属性相关的数据,诸如芯片上的特定点的温度、电压电平以及时钟速度等。如果这些属性中的一个属性变化太大或以错误的方式发生变化,可能是表示潜在的侵入或者黑客试图破坏SOC的允许访问安全数据和/或安全操作的正常操作。中断控制器140可聚集并屏蔽来自S0C100的其它功能模块的中断,所述功能模块可以包括传感器的询问以检测那些被用于确定中断控制器140是否屏蔽了中断的传感器的预设阈值。
[0054]此外,中断控制器140响应于表示侵入的检测条件,可产生中断或者连接。中断或者连接可实时调整主处理器Iio或者安全CPU-B的操作以确保安全系统操作。主处理器也可具有单独的存储缓冲器而不是安全CPU-B使用的存储缓冲器,其中,安全CPU-B的存储缓冲器可被配置成主处理器110不能访问并配置成为第二安全CPU-B提供控制逻辑。
[0055]系统100可通过诸如英特网或任何广域或局域网络的网络15与网络服务器20和媒体客户30进行通信。客户30可以是取得S0C100的消费者,所述SOC被消费者用来将媒体内容发送到消费者媒体装置10。安全CPU-B可使用安全协议经由因特网从网络服务器20获得时间和日期。所述时间和日期可以看作是安全的时间并被安全CPU-B存储在本地SRAM132或者DRAMl 15中的安全存储器117中。这样存储,安全CPU-B可防止主处理器或者其他片上编程组件访问安全时间,所述安全时间可用于数字权限管理和在安全功能执行期间的较低级安全功能的其他形式。
[0056]图2是用于实施图1中的多安全CPU系统的方法的示例性流程图。片上系统(SOC)可包含第一安全中央处理单元(SCPU)以及第二 SCPU (202,210).SOC可以第一安全等级(206)操作第一 SCPU。SOC可以第二安全等级操作第二 SCPU (214),所述第二安全等级没有第一安全等级安全但比主处理器操作的级别安全。第一 SCPU可产生只有第二 SCPU能执行的命令(218)。
[0057]第二 SCPU可确定从安全存储器调用执行的指令是否被批准由调用所述指令的SOC的组件执行(222)。如果所述组件没有被批准执行所述指令,则第一 SCPU和第二 SCPU都不允许执行所述指令(226)。如果组件被批准执行所述指令,第二 SCPU可确定所述指令是执行第一安全等级还是第二安全等级功能(230)。如果组件要求执行第一安全功能,第一 SCPU执行所述指令(234)。如果组件要求执行第二安全功能,则第二 SCPU执行所述指令(238)。取决于所述功能,第一 SCPU也可以是第一或第二安全功能的请求组件,而第二 SCPU可以是第一或第二安全功能的请求组件。
[0058]图3和图4为安全CPU-A安全地启动安全CPU-B的示例多级启动处理的框图。图3示出了第一级的执行,图4示出了第二级的执行。这些级可确保DRAM中被执行的解密(或批准)代码对除SCPU102和104之外的部件不可见的,因此不可被访问的。为此,安全CPU-A通过解密加密代码以在DRAMl 15中生成可由安全CPU-B执行但不可由主处理器访问的解密代码,来安全地启动安全CPU-B。
[0059]更具体地,加密的第一级代码317和加密的第二级代码319保存在闪存315中。主处理器Iio试图启动安全CPU-A,因此对第一和第二级加密代码进行访问。响应于此,可允许主处理器110将第一和第二级代码317和319从闪存315写入DRAMl 15中,但第一和第二级代码保持在加密状态。主处理器110随后可配置包括DRAM接口 324的第一级启动加载程序(first stage boot loader, FSBL) 320。DRAM接口从存储器中读取第一级代码317,FSBL320对第一级代码317进行解密,并将解密代码327写入安全CPU-B的专用本机SRAM132。
[0060]安全CPU-A可在本机SRAM132中的适当位置上或将解密代码327写入本机SRAM132时实时对解密代码327进行认证。认证之后,安全CPU-A可进一步被配置为授权安全CPU-B用CPU-B130执行解密代码。可以执行解密的第一级代码327以做出关于如何加载、解密和执行第二级代码的决定。
[0061]进一步参照图4,在本机SRAM132内将解密的第一级代码327作为受信任内核程序执行时,安全CPU-B可以被配置为请求安全CPU-A生成可用于解密第二级代码的密钥。响应于所述请求,安全CPU-A可生成由安全CPU-B使用的具有指定访问权限的密钥。访问权限可包括从中解密第二级代码的DRAMl 15的第一区域321,以及将解密的第二级代码419写入其中的DRAM的第二区域421。例如,第一区域可为存储第二级加密代码319的区域321,第二区域421可为在图4中由生成的密钥创建的访问权限指定的存储解密的第二级代码419的区域。
[0062]安全CPU-B可与高安全级CPU-A协作以创建存储器校验器428,一种专用硬件。存储器校验器428可以被配置为确保仅从DRAMl 15的第一区域321到第二区域421进行第二级加密代码319的解密。如果主处理器试图将解密的第二级代码419写入第二区域421之外的存储器,存储器校验器428可对安全CPU-B发出警告,从而使得代码不会写入第二区域之外,或可强制将解密的第二级代码写入第二区域。
[0063]安全CPU-B随后可利用由安全CPU-A生成的密钥对第二级代码319进行解密,并将解密的第二级代码419写入DRAM115的第二区域421。尽管主处理器110可以访问第一区域,但其无法访问第二区域。然而,安全CPU-B可以访问第二区域,以执行解密的第二级代码。由此,启动处理的第二级确保当解密的第二级代码419保存到存储器时,解密的第二级代码基于主处理器的请求是可执行的,但不允许主处理器对解密的第二级代码进行访问。由于S0C100的第三方客户端可访问主处理器,两级启动处理确保第三方主体无法通过针孔窥探(pin snooping)等方式窥探解密的第二级代码419。
[0064]图5为启动安全CPU-B之后从存储器运行受保护第二级代码419的示例图。上文所述的指令校验器138还可被配置为确保解密的第二级代码419不会在存储器的第二区域421之外执行。指令校验器138可对由主处理器110调用执行的解密的第二级代码419的指令进行监控,并确保仅在DRAM115的安全存储器的第二区域421之内执行。
[0065]主处理器110试图在DRAMl 15的第二区域421之外执行解密的第二级代码中的指令时,指令校验器138可阻止指令的执行,或重置S0C100,从而重启安全CPU-B。可选地,或另外地,指令校验器138可对安全CPU-B发出意图警告,使安全CPU-B可进行阻止,或强制在DRAM的第二区域421内执行指令。
[0066]图6和图7为通过由安全CPU-A安全地启动安全CPU-B而保护多安全CPU系统中的软件的示例方法的流程图,其中,图6示出了两级启动处理的第一级,图7示出了第二级。SOClOO通过请求安全CPU-B启动而启动时,主处理器开始该处理(602)。主处理器将加密SCPU代码从闪存写入DRAM (604),加密SCPU代码包括加密的第一级代码和第二级代码。
[0067]第一级启动加载程序(FSBL)从DRAM读取第一级代码(608)。FSBL对第一级代码进行解密(612)。FSBL将解密的第一级代码写入安全CPU-B的专用本机SRAM (616)。安全CPU-A随后在解密代码时实时或将解密代码存储到本机SRAM之后对解密代码进行认证(620)。当未认证解密代码时,安全CPU-A不授权安全CPU-B执行解密的第一级代码(624)。当认证了解密代码时,安全CPU-A授权安全CPU-B执行解密的第一级代码(628)。随后,被授权时,安全CPU-B执行解密的第一级代码(630)。
[0068]参照图7,执行解密的第一级代码时,安全CPU-B请求安全CPU-A生成解密密钥(702)。安全CPU-A生成附有特定访问权限的密钥(704)。这些访问权限可包括从中解密加密的第二级代码的DRAM的第一区域(区域1),以及将解密的第二级代码写入其中并从中执行所述解密的第二级代码的DRAM的第二区域(区域2)。安全CPU-B可与安全CPU-A协作以创建存储器校验器,一种确保对加密的第二级代码进行解密时从区域I到区域2进行解密的专用硬件(708)。
[0069]当主处理器试图对第二级代码进行解密时,存储器校验器确定是否从区域I进行解密(716)。并非从区域I进行解密时,存储器校验器和安全CPU-B不允许进行解密(720)。从区域I进行解密时,安全CPU-B用密钥对加密的第二级代码进行解密(724)。
[0070]存储器校验器随后确定是否收到了将解密代码写入区域2的请求(728)。当存储器校验器确定主处理器试图将解密的第二级代码写入区域2之外时,存储器校验器或安全CPU-B防止解密的第二级代码被写入DRAM的区域2之外(732)。当存储器校验器确定主处理器请求将解密的第二级代码写入区域2时,安全CPU-B防止解密的第二级代码写入DRAM的区域2 (734)。
[0071]安全CPU-B随后可代表主处理器执行解密的第二级代码(738)。指令校验器可确定执行的指令是否在DRAM的区域2内执行,一次确定一条指令(742)。当指令在区域2之外执行时,指令校验器可对安全CPU-B发出警告,使安全CPU-B不根据请求执行指令,或可强制在区域2内执行指令(746)。当指令在区域2之内执行时,指令校验器可通知安全CPU-B继续执行指令(750)。
[0072]图8为图1的安全CPU-B104与主处理器110之间的密钥分离保护敏感文件不被主机访问的系统的示例性框图。主处理器110和安全CPU-B可请求安全CPU-A生成用于访问敏感文件的解密的解密密钥,以供无权访问或无能力解密文件的软件使用。
[0073]这些敏感文件可包括与音频或音频/视频文件等适当媒体的数字权限管理(DRM)相关的文件或其他敏感文件。例如,在DRM系统中,可利用软件未知的特殊密钥保护文件不被不安全软件访问。然而,尽管密钥是未知的,但用于解密文件的命令对于主处理器是可用的。这使不安全软件随后发送在存储器中解密数据的命令。另外,期望将命令从安全CPU-B传输值安全CPU-A,以创建与主处理器110发布的相同命令完全不同的密钥结构,以保护安全CPU-A以主机不能够仿效密钥的方式单独发布命令,如后所述。
[0074]由于安全CPU-B以高于主处理器的安全级操作,所以图8示出了系统100如何向安全CPU-B提供用于独占访问未提供给主处理器的文件的唯一密钥。下文所述的密钥生成过程还可应用于根密钥生成,从而使得安全CPU-B可请求安全CPU-A生成对系统100执行的系统或软件文件进行解密的唯一根密钥。
[0075]在一个示例中,安全CPU-A包括变量模块800、密钥生成器805和过滤器115。密钥生成器805生成密钥820,例如,图8中显示的密钥820。密钥包括访问权限824,访问权限824包括指定对存储器的特定安全区域,例如,DRAM115中的区域I或区域2进行访问。访问的这种指定还可包括将解密数据写入区域I或区域2的权限。还可存储于DRAM115或其他存储器中的密钥表828提供了密钥820和由安全CPU-A可访问的对应的访问权限之间的链接。一旦安全CPU-A生成密钥,并对安全CPU-B或主处理器提供访问权限,安全CPU-B (或主处理器)可对存储器包含解密内容的区域进行访问。在生成根密钥的情况下,安全CPU-B(或主处理器)可对系统或软件文件进行解密,并将解密文件写入其可以被执行的存储器的受保护区域。
[0076]在一些情况下,安全CPU-B需要以主处理器没有被提供的独占访问而生成的唯一的密钥。如上所述,安全CPU-B可通过安全的专用通信总线142与安全CPU-A进行通信。该总线142可与总线840以物理和/或逻辑方式分离,主处理器通过总线840与安全CPU-A通信。安全CPU-B可通过专用总线142向变量模块800发布安全CPU-A的生成唯一密钥的特殊命令或请求。变量模块800可做出可供安全CPU-B选择的多个可能变化或变量。选择一个变化或变量时,密钥生成器805随后可将所选变量应用于用于生成密钥的算法。密钥生成器可将所做变量应用于密钥梯形或哈希算法,因此,如果不进行任何解密步骤,则访问被拒绝。
[0077]过滤器810可认证安全CPU-B对变量模块800的访问,并拒绝主处理器110对变量模块800的访问。过滤器810还可区分由主处理器110与安全CPU-B发出的命令或请求,例如,所述命令/请求分别正确地指示为来自主处理器100和安全CPU-B以用于密钥生成和访问存储器的安全区域。通过使用请求(安全CPU-A通过其产生位移的密钥)的认证的访问,安全CPU-B可获得对敏感文件的独占访问,包括DRM保护媒体内容。在一些情况下,还可对存储器的不同区域提供访问权限,以将内容写入DRAM115中的其他位置。在生成的密钥为根密钥的情况下,安全CPU-B可获得对系统或软件文件的独占解密权,以由系统100在DRAMl 15中的受保护区域,即主处理器110不可访问的区域中执行。
[0078]图9为用于在安全CPU-B与主处理器110之间执行保护敏感文件不被主处理器存取或解密的密钥分离的方法的示例性流程图。主处理器和安全CPU-B可请求安全CPU-A生成访问和解密敏感文件的密钥,如图8所述(902)。安全CPU-B可请求安全CPU-A生成主处理器无法访问的唯一密钥(906 )。
[0079]安全CPU-A从主处理器或安全CPU-B接收请求以生成密钥。安全CPU-A的过滤器可确定请求来自主处理器还是安全CPU-B(910)。如果请求来自主处理器,安全CPU-A可生成主处理器请求使用的密钥(914)。安全CPU-A对主处理器提供与密钥对应的访问或解密权限(918)。
[0080]如果请求来自安全CPU-B,安全CPU-A还可通过变量模块接收算法变量的选择(922)。安全CPU-A的密钥生成器可利用算法变量生成唯一的密钥(930)。安全CPU-A可对安全CPU-B提供与排除主处理器的唯一密钥对应的访问或解密权限(934)。
[0081]上述方法、装置以及逻辑可通过许多不同的方式以许多不同的硬件、软件或者硬件和软件两者的组合来实施。例如,系统的全部或者部分可包括在控制器、微处理器或者专用集成电路(ASIC)中的电路,或者可以分立逻辑或者组件、或者结合在单个集成电路上或者分布在多个集成电路中其他类型的模拟或数字电路的组合来实施。
[0082]上文对本发明的各个实施例进行了说明,但本领域的普通技术人员应理解的是,只要不脱离本发明的范围,可采用多种其他实施例和实施方式。由此,本发明并不具有限制性,但应符合附加权利要求及其等同物。
【权利要求】
1.一种计算系统,包括: 第一中央处理单元(CPU);以及 第二中央处理单元,与所述第一中央处理单元和主处理器耦接, 其中,响应于由所述主处理器发出的启动所述第二中央处理单元的请求,所述第一中央处理单元被配置为执行所述第二中央处理单元的安全启动,所述安全启动包括解密加密代码,以生成能由所述第二中央处理单元执行但所述主处理器无法访问的解密代码。
2.根据权利要求1所述的计算系统,其中,所述主处理器将所述加密代码从闪存写入动态随机存取存储器(DRAM),所述加密代码包括用于执行两级启动处理的第一级代码和第二级代码。
3.根据权利要求2所述的计算系统,其中,所述第二中央处理单元包括专用本机存储器,所述第一中央处理单元和所述第二中央处理单元位于片上系统(SOC)上,且其中,所述主处理器配置能够执行以下操作的第一级启动加载程序: 从动态随机存取存储器中读取所述第一级代码; 在所述片上系统上解密所述第一级代码;以及 将所解密的第一级代码写入所述专用本机存储器。
4.根据权利要求3所述的计算系统,其中,所述第一中央处理单元进一步被配置为: 对用于由所述第二中央 处理单元执行的所解密的第一级代码进行认证;以及 授权所述第二中央处理单元执行来自所述专用本机存储器的所解密的第一级代码。
5.根据权利要求3所述的计算系统,其中,所解密的第一级代码能够执行为对关于如何加载、解密和执行所述第二级代码做出决定。
6.根据权利要求3所述的计算系统,其中,在执行所解密的第一级代码时,所述第二中央处理单元被配置为请求所述第一中央处理单元生成能用于解密所述第二级代码的密钥,响应于此,所述第一中央处理单元进一步被配置为: 生成由所述第二中央处理单元使用的具有指定的访问权限的密钥,所述访问权限包括从中解密所述第二级代码的所述动态随机存取存储器的第一区域,以及将所解密的第二级代码写入其中的所述动态随机存取存储器的第二区域;以及 协助所述第二中央处理单元创建存储器校验器,所述存储器校验器被配置为确保仅从所述动态随机存取存储器的所述第一区域到所述第二区域进行解密。
7.根据权利要求6所述的计算系统,其中,所述主处理器能够访问所述动态随机存取存储器的所述第一区域但不能访问所述动态随机存取存储器的所述第二区域。
8.根据权利要求6所述的计算系统,其中,所述第二中央处理单元进一步被配置为: 利用所述密钥对存储器的所述第一区域内存储的所述第二级代码进行解密;以及 将所解密的第二级代码写入所述动态随机存取存储器的所述第二区域。
9.一种用于保护包括耦接在一起的第一中央处理单元和第二中央处理单元的多安全中央处理单元(CPU)系统中的软件的方法,包括: 从主处理器接收启动所述第二中央处理单元的请求; 由所述主处理器将加密代码从闪存写入动态随机存取存储器(DRAM)中,所述加密代码包括用于执行两级启动处理的第一级代码和第二级代码;以及 由所述第一中央处理单元和所述第二中央处理单元对加密的第一级代码和加密的第二级代码进行解密,并使得所述主处理器无法在解密之后访问解密的第一级代码或解密的第二级代码。
10.一种计算系统,包括: 第一中央处理单元(CPU); 动态随机存取存储器(DRAM),与所述第一中央处理单元连接; 闪存; 第二中央处理单元,与所述第一中央处理单元和所述动态随机存取存储器耦接; 主处理器,与所述第一中央处理单元和所述第二中央处理单元、所述动态随机存取存储器和所述闪存耦接,所述主处理器被配置为将加密代码从所述闪存写入所述动态随机存取存储器,所述加密代码包括用于执行两级启动处理的第一级代码和第二级代码; 其中,所述第一中央处理单元被配置为: 从所述主处理器接收启动所述第二中央处理单元的请求;以及由所述第一中央处理单元和所述第二中央处理单元对加密的第一级代码和加密的第二级代码进行解密,并使得所述主处理器无法在解密之后访问解密的第一级代码或解密的第二级代码。·
【文档编号】G06F21/50GK103593603SQ201310356861
【公开日】2014年2月19日 申请日期:2013年8月15日 优先权日:2012年8月17日
【发明者】斯特凡娜·罗杰斯, 沙尚克·谢卡尔 申请人:美国博通公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1