CN103593603B - 保护多安全cpu系统中的安全软件 - Google Patents

保护多安全cpu系统中的安全软件 Download PDF

Info

Publication number
CN103593603B
CN103593603B CN201310356861.9A CN201310356861A CN103593603B CN 103593603 B CN103593603 B CN 103593603B CN 201310356861 A CN201310356861 A CN 201310356861A CN 103593603 B CN103593603 B CN 103593603B
Authority
CN
China
Prior art keywords
cpu
code
deciphering
area
random access
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
CN201310356861.9A
Other languages
English (en)
Other versions
CN103593603A (zh
Inventor
斯特凡娜·罗杰斯
沙尚克·谢卡尔
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.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Zyray Wireless Inc
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 Zyray Wireless Inc filed Critical Zyray Wireless Inc
Publication of CN103593603A publication Critical patent/CN103593603A/zh
Application granted granted Critical
Publication of CN103593603B publication Critical patent/CN103593603B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Hardware Redundancy (AREA)

Abstract

本公开涉及保护多安全CPU系统中的安全软件。一种计算系统,包括第一中央处理单元(CPU)和与第一CPU和主处理器耦接的第二CPU。响应于主处理器发出的启动第二CPU的请求,第一CPU用于通过解密加密代码,以生成可由第二CPU执行但不可由主处理器访问的解密代码,从而执行第二CPU的安全启动。

Description

保护多安全CPU系统中的安全软件
相关申请的交叉参考
本申请要求于2012年12月6日提交的美国专利申请US13/707,023、于2012年8月17日提交的美国专利申请US61/684,479以及于2012年11月21日提交的美国专利申请US61/729,169的优先权,其全部内容结合于此作为参考。
技术领域
本发明涉及由安全中央处理单元(SCPU)执行的系统安全,更具体地,涉及由以不同安全级运行的多个SCPU在系统中执行的安全功能。
背景技术
由消费者需求驱动的电子和通信技术的迅速发展导致包含那些用于处理和转换第三方媒体内容的数据驱动装置被广泛采用。第三方消费者或者客户希望他们的内容被安全地处理,以使在某些权限级别外不可复制或使用所述内容。将内容从多媒体供应商数字发送至消费者的系统设法包含更高的安全等级,从而使得竞争的供应商不能访问彼此的机密。在大的片上系统(SOC)中,单一的安全中央处理单元(SCPU)可执行安全功能。
发明内容
根据本发明的一个方面,提供了一种计算系统,包括:第一中央处理单元(CPU);以及第二CPU,与所述第一CPU和主处理器耦接,其中,响应于由所述主处理器发出的启动所述第二CPU的请求,所述第一CPU被配置为执行所述第二CPU的安全启动,所述安全启动包括解密加密代码,以生成能由所述第二CPU执行但所述主处理器无法访问的解密代码。
其中,所述主处理器将所述加密代码从闪存写入动态随机存取存储器(DRAM),所述加密代码包括用于执行两级启动处理的第一级代码和第二级代码。
其中,所述第二CPU包括专用本机存储器,所述第一CPU和所述第二CPU位于片上系统(SOC)上,其中,所述主处理器配置能够执行以下操作的第一级启动加载程序:从DRAM中读取所述第一级代码;在所述SOC上解密所述第一级代码;以及将所解密的第一级代码写入所述专用本机存储器。
其中,所述第一CPU进一步被配置为:对用于由所述第二CPU执行的所解密的第一级代码进行认证;以及授权所述第二CPU执行来自所述专用本机存储器的所解密的第一级代码。
其中,所解密的第一级代码能够执行为对关于如何加载、解密和执行所述第二级代码做出决定。
其中,在执行所解密的第一级代码时,所述第二CPU被配置为请求所述第一CPU生成能用于解密所述第二级代码的密钥,响应于此,所述第一CPU进一步被配置为:生成由所述第二CPU使用的具有指定的访问权限的密钥,所述访问权限包括从中解密所述第二级代码的所述DRAM的第一区域,以及将所解密的第二级代码写入其中的所述DRAM的第二区域;以及协助所述第二CPU创建存储器校验器,所述存储器校验器被配置为确保仅从所述DRAM的所述第一区域到所述第二区域进行解密。
其中,所述主处理器能够访问所述DRAM的所述第一区域但不能访问所述DRAM的所述第二区域。
其中,所述第二CPU进一步被配置为:利用所述密钥对存储器的所述第一区域内存储的所述第二级代码进行解密;以及将所解密的第二级代码写入所述DRAM的所述第二区域。
所述计算系统进一步包括指令校验器,被配置为:监控由所述第二CPU对所解密的第二级代码的指令的执行;以及防止所述第二CPU试图在所述DRAM的所述第二区域外执行指令,或强制在所述第二区域内执行指令。
其中,所述指令校验器进一步被配置为响应于检测到试图在所述DRAM的所述第二区域外执行指令重置所述计算系统,其中,所述第一CPU以第一安全级运行,所述第二CPU以安全性低于所述第一安全级的第二安全级运行。
根据本发明的另一个方面,提供了一种用于保护包括耦接在一起的第一和第二CPU的多安全中央处理单元(CPU)系统中的软件的方法,包括:从主处理器接收启动所述第二CPU的请求;由所述主处理器将加密代码从闪存写入动态随机存取存储器(DRAM)中,所述加密代码包括用于执行两级启动处理的第一级代码和第二级代码;以及由所述第一CPU和所述第二CPU对加密的第一级代码和加密的第二级代码进行解密,从而使得所述主处理器无法在解密之后访问解密的第一级代码或解密的第二级代码。
所述方法进一步包括:由所述主处理器的第一级启动加载程序从所述DRAM读取所述第一级代码;对所述第一级代码进行解密;将所述解密的第一级代码写入所述第二CPU的专用本机存储器中;以及由所述第一CPU授权所述第二CPU从所述专用本机存储器执行所述解密的第一级代码。
所述方法进一步包括:由所述第二CPU请求所述第一CPU生成密钥;由所述第一CPU生成密钥,所述密钥包括访问权限,所述访问权限包括从中解密所述第二级代码的所述DRAM的第一区域,以及将所解密的第二级代码写入其中的所述DRAM的第二区域;以及由所述第一CPU和所述第二CPU创建存储器校验器。
所述方法进一步包括存储器校验器:检测由所述主处理器试图对所述加密的第二级代码进行的解密;确定是否从所述第一区域到所述第二区域解密;以及响应于确定并非试图从第一区域,或并非到第二区域进行解密,对第二CPU发出解密侵犯警告。
所述方法进一步包括所述第二CPU:防止对所述加密的第二级代码进行解密,或强制将所述解密的第二级代码写入所述第二区域
所述方法进一步包括所述第二CPU:利用所述密钥对存储器的所述第一区域内存储的所述第二级代码进行解密;将所解密的第二级代码写入所述DRAM的所述第二区域;执行所述解密的第二级代码;以及在所述主处理器试图在所述第二区域外执行指令时由所述指令校验器警告所述第二CPU。
根据本发明的又一个方面,提供了一种计算系统,包括:第一中央处理单元(CPU);动态随机存取存储器(DRAM),与所述第一CPU连接;闪存;第二CPU,与所述第一CPU和所述DRAM耦接;主处理器,与所述第一CPU和所述第二CPU、所述DRAM和所述闪存耦接,所述主处理器被配置为将加密代码从所述闪存写入所述DRAM,所述加密代码包括用于执行两级启动处理的第一级代码和第二级代码;其中,所述第一CPU被配置为:从所述主处理器接收启动所述第二CPU的请求;以及由所述第一CPU和所述第二CPU对加密的第一级代码和加密的第二级代码进行解密,从而使得所述主处理器无法在解密之后访问解密的第一级代码或解密的第二级代码。
所述计算系统进一步包括能执行为从DRAM中读取所述第一级代码的第一级启动加载程序,其中,所述第二CPU包括专用本机存储器,其中,所述第一CPU进一步被配置为:对所述第一级代码进行解密;将所解密的第一级代码写入所述专用本机存储器;对由所述第二CPU执行的所述解密的第一级代码进行认证;以及授权所述第二CPU从所述专用本机存储器执行所述解密的第一级代码。
其中,所述第二CPU进一步被配置为请求所述第一CPU生成密钥,响应于此,所述第一CPU进一步被配置为生成包括访问权限的密钥,所述访问权限包括从中解密所述第二级代码的所述DRAM的第一区域,以及将所解密的第二级代码写入其中的所述DRAM的第二区域。
其中,所述第一CPU和所述第二CPU进一步被配置为创建存储器校验器,所述存储器校验器被配置为:检测由所述主处理器试图对加密的第二级代码进行的解密;确定是否从所述第一区域到所述第二区域解密;以及响应于确定并非试图从所述第一区域或并非到所述第二区域进行解密,防止对所述加密的第二级代码进行解密,或强制将解密的第二级代码写入所述第二区域。
附图说明
根据以下附图和说明,可更好理解所述系统和方法。在附图中,不同视图中的相似参考数字表示对应部分。
图1为示例性多安全中央处理单元(CPU)片上系统的框图。
图2为用于执行图1的多安全CPU片上系统的示例方法的流程图。
图3为用于由安全CPU-A启动安全CPU-B的多级中的示例性第一级的框图。
图4为用于由安全CPU-A启动安全CPU-B的两级中的第二级的框图。
图5为启动安全CPU-B之后存储器中受保护第二级代码的示例性运行的框图。
图6和图7为通过由安全CPU-A安全启动安全CPU-B而保护多安全CPU系统中的软件的示例性方法的流程图,其中,图6示出了多级启动处理的第一级,图7示出了第二级。
图8为图1的示例性系统的示例框图,其中,安全CPU-B与主处理器之间的密钥分离保护敏感文件不被主处理器访问或解密。
图9为用于在安全CPU-B与主处理器之间执行密钥分离的示例方法的流程图,所述密钥分离保护敏感文件不被主处理器访问或解密。
具体实施方式
以下讨论涉及由安全中央处理单元(SCPU)执行的系统安全,更具体地涉及在系统中通过以不同的安全等级运行的多个SCPU来执行的安全功能。为了说明的目的,描述了两个SCPU,但是可实施更多的SCPU。SCPU诸如可以作为片上系统(SOC)上的示例,诸如可用于将流媒体送至消费者的机顶盒(STB)中。这样的媒体可包含消费者在媒体装置上可见的音频/视频内容。
在具有执行安全功能的单一安全中央处理单元(SCPU)的大的片上系统中,系统信任级别可以是二元的:操作是高安全的或者是完全不可信的。对于要求中等安全级别的操作,存在两种选择:(1)在SCPU中执行这些操作;或者(2)在主机中执行这些操作。
第一个选项可能不理想,因为SCPU可以负责高敏感性的任务,像管理一次性口令(OTP)认证,发送消费者机密等。将这些高敏感性的任务与较低安全功能混合会引起风险并有损于SCPU的主要使命。第二选项可能不理想,因为在主机中执行中等的安全任务会使SOC不安全,主机CPU会不可信。
在芯片上由主机执行安全功能会将安全度公开的太大而不能为芯片操作提供足够的安全性。此外,如由单SCPU执行的将高安全和较低安全功能混合可能将系统安全性公开达到一定的风险级别并降低了保护芯片操作的最敏感功能的SCPU的主要使命。
此外,因为SCPU管理SOC出售商的所有权信息,所以允许终端用户对SCPU编程是有问题的。然而,一些中间等级安全任务最好由终端用户编码执行,因而SOC出售商希望允许消费者对SCPU功能的一些方面进行编程。允许用户仅对片上SCPU功能编程会使芯片的安全操作面临额外的风险和攻击。
在SOC中,具有单一的SCPU也许是不够的。使用多安全CPU方法,诸如具有专用于高安全功能的第一SCPU以及用于较低安全任务的第二SCPU,所述低安全任务诸如数字权限管理(DRM)、管理译码以及水印等。出于解释的目的,在本文中,第一SCPU被标示为安全CPU-A,而第二安全等级SCPU被标示为安全CPU-B。
图1为多安全中央处理单元(SCPU)片上系统(SOC)100的示例框图。当被配置操作时,SOC100可集成在媒体装置10内或与其耦接。系统100可包含第一SCPU102(也称作安全CPU-A),第二SCPU104(也称作CPU-B),以及主处理器110,运行大部分芯片操作的通用处理器。安全CPU-A可小于安全CPU-B并被配置成以第一安全等级操作,所述第一安全等级高于CPU-B操作的第二安全等级。安全CPU-B可设置有比主处理器110高的信任级别并且主处理器可以被拒绝执行第二安全等级功能。主处理器110也可至少部分地位于SOC100之外。
例如,处于第一安全等级的安全CPU-A的功能可包括:管理根密钥(rootkey)、执行首次安全启动以及发送第三方内容供应商的机密。例如,处于第二安全等级的安全CPU-B的功能包括:数字权限管理、许可管理、代码转换器管理、水印以及在安全存储器中的数据处理。安全CPU-A可配置有软件代码,所述软件代码将来自安全CPU-B的指令处理为优先的,并生成由所述第二SCPU执行的多个唯一的命令,所述命令不能由主处理器110执行。
因为配置成执行大部分处理器密集型的安全功能,在一些实施中,安全CPU-B可与主处理器110一样强大,例如,在存卷(filing)时,执行高达1,000或者1,500或更高的每秒Dhrystone百万次指令(DMIPS)。因而,安全CPU-B关注于较低的安全功能上。安全CPU-A会需要功率的一小部分并且以小于1,000DMIPS操作。
系统100可进一步包括片上传感器113、诸如动态随机存储器(DRAM)115的存储器以及与安全CPU-A和安全CPU-B的多个外围设备120耦接的本机校验器118。本文中“与…耦接”意指直接地连接至组件或者间接地连接至一个或多个组件。DRAM115的可以包括一部分为存储在安全存储器117中的保护码116。安全存储器117可被划分成DRAM的特定的或者确定的区域。
安全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或其他片上主体或客户访问。
安全CPU-B和安全CPU-A可与作为CPU-B130和安全CPU-A之间的专用信道操作的专用的安全通信总线142耦接在一起。主处理器和那些存在于SOC100上的第三方用户可能不能访问安全通信总线142。安全通信总线142可由硬件和固件的组合配置并执行主从关系,其中,在一些操作中,安全CPU-A或者是安全CPU-B的主设备或从设备。例如,安全CPU-A可以是安全地启动存储器中的CPU-B的主设备。但是,例如,安全CPU-A也可以从安全CPU-B或本机校验器118接收命令。
存在于SOC上的第三方可具有其自己的CPU,其自己的逻辑块,或者作为具有能访问SOC100的能力的硬件和软件的组合存在于芯片上。第三方CPU可包括由CPU-A管理的安全接口。
系统100可进一步包括存在于SOC100上的第三方用户访问的共用寄存器总线144。共用寄存器总线144可用于写入存储器115的寄存器。如本文中所公开,安全CPU-A可被配置成防止某些片上客户有意地停止安全CPU-B的操作。
可以与安全CPU-A和安全CPU-B耦接的本机校验器118可以是被配置成用来防止一些存在于SOC100上的用户或者硬件访问DRAM的某些区域的一个硬件。同样地,本机校验器118可防止阻挡安全CPU-B访问共用寄存器总线144和/或读取来自SOC100的DRAM或写入SOC100的DRAM。
安全CPU-A也可对本机校验器118进行编程以确保可访问主处理器110的第三方主体不能访问安全CPU-B的内部的外围设备120。外围设备可包括但不限于通用异步接收器/发射器(UART)、计时器、中断、存储器、数据存储、媒体装置或者它们的组合。
指令校验器138可监督在DRAM外执行的指令并确定通过一个组件从安全存储器调用执行的指令是否被批准由该组件执行。为了批准指令,以便执行,指令校验器138可确保安全CPU-B不在安全存储器117的已经被认证为安全操作或由主处理器110有条件访问的区域外操作。例如,指令校验器可监测DRAM115的读写操作,并将存储器访问的DRAM地址与安全CPU-A设置的地址范围进行比较作为用于执行指令的预认证区域。如果安全CPU-B试图执行存储区域外的指令,可重新启动安全CPU-B或者重置整个SOC。
在一个实例中,保存至安全存储器117的内容可以包含客户不希望以未经授权的方式发布的媒体内容。安全CPU-B可解密所述内容以在消费者装置上查看,但不允许其他外围设备在系统100的外部访问或发布所述内容。安全CPU-B可确保消费者能查看所述内容但不能通过主机直接访问。安全CPU-A和CPU-B可以设置限制某些芯片组件对安全存储器117访问的硬件。例如,安全CPU-A和安全CPU-B可使得存储器的区域不限于主处理器。此外,安全CPU-B可对消费者可查看的内容执行水印或者操纵时间戳。
更具体地,安全存储器117可仅由安全CPU-A和CPU-B,以及本地解压和渲染引擎进行访问。因而,安全CPU-B可将内容解密至该存储区域中,然后局部显示处理可读取所解密的内容以本地渲染。这些步骤中没有一个需要主处理器110访问安全存储器。安全CPU-B可以通过不到达主处理器而将所述内容解密至该限制的区域来确保安全的数据流。
中断控制器140可与CPU-A耦接并被配置成根据通过传感器113生成的数据检测片上条件。例如,片上传感器113可产生与芯片的属性相关的数据,诸如芯片上的特定点的温度、电压电平以及时钟速度等。如果这些属性中的一个属性变化太大或以错误的方式发生变化,可能是表示潜在的侵入或者黑客试图破坏SOC的允许访问安全数据和/或安全操作的正常操作。中断控制器140可聚集并屏蔽来自SOC100的其它功能模块的中断,所述功能模块可以包括传感器的询问以检测那些被用于确定中断控制器140是否屏蔽了中断的传感器的预设阈值。
此外,中断控制器140响应于表示侵入的检测条件,可产生中断或者连接。中断或者连接可实时调整主处理器110或者安全CPU-B的操作以确保安全系统操作。主处理器也可具有单独的存储缓冲器而不是安全CPU-B使用的存储缓冲器,其中,安全CPU-B的存储缓冲器可被配置成主处理器110不能访问并配置成为第二安全CPU-B提供控制逻辑。
系统100可通过诸如英特网或任何广域或局域网络的网络15与网络服务器20和媒体客户30进行通信。客户30可以是取得SOC100的消费者,所述SOC被消费者用来将媒体内容发送到消费者媒体装置10。安全CPU-B可使用安全协议经由因特网从网络服务器20获得时间和日期。所述时间和日期可以看作是安全的时间并被安全CPU-B存储在本地SRAM132或者DRAM115中的安全存储器117中。这样存储,安全CPU-B可防止主处理器或者其他片上编程组件访问安全时间,所述安全时间可用于数字权限管理和在安全功能执行期间的较低级安全功能的其他形式。
图2是用于实施图1中的多安全CPU系统的方法的示例性流程图。片上系统(SOC)可包含第一安全中央处理单元(SCPU)以及第二SCPU(202,210)。SOC可以第一安全等级(206)操作第一SCPU。SOC可以第二安全等级操作第二SCPU(214),所述第二安全等级没有第一安全等级安全但比主处理器操作的级别安全。第一SCPU可产生只有第二SCPU能执行的命令(218)。
第二SCPU可确定从安全存储器调用执行的指令是否被批准由调用所述指令的SOC的组件执行(222)。如果所述组件没有被批准执行所述指令,则第一SCPU和第二SCPU都不允许执行所述指令(226)。如果组件被批准执行所述指令,第二SCPU可确定所述指令是执行第一安全等级还是第二安全等级功能(230)。如果组件要求执行第一安全功能,第一SCPU执行所述指令(234)。如果组件要求执行第二安全功能,则第二SCPU执行所述指令(238)。取决于所述功能,第一SCPU也可以是第一或第二安全功能的请求组件,而第二SCPU可以是第一或第二安全功能的请求组件。
图3和图4为安全CPU-A安全地启动安全CPU-B的示例多级启动处理的框图。图3示出了第一级的执行,图4示出了第二级的执行。这些级可确保DRAM中被执行的解密(或批准)代码对除SCPU102和104之外的部件不可见的,因此不可被访问的。为此,安全CPU-A通过解密加密代码以在DRAM115中生成可由安全CPU-B执行但不可由主处理器访问的解密代码,来安全地启动安全CPU-B。
更具体地,加密的第一级代码317和加密的第二级代码319保存在闪存315中。主处理器110试图启动安全CPU-A,因此对第一和第二级加密代码进行访问。响应于此,可允许主处理器110将第一和第二级代码317和319从闪存315写入DRAM115中,但第一和第二级代码保持在加密状态。主处理器110随后可配置包括DRAM接口324的第一级启动加载程序(firststagebootloader,FSBL)320。DRAM接口从存储器中读取第一级代码317,FSBL320对第一级代码317进行解密,并将解密代码327写入安全CPU-B的专用本机SRAM132。
安全CPU-A可在本机SRAM132中的适当位置上或将解密代码327写入本机SRAM132时实时对解密代码327进行认证。认证之后,安全CPU-A可进一步被配置为授权安全CPU-B用CPU-B130执行解密代码。可以执行解密的第一级代码327以做出关于如何加载、解密和执行第二级代码的决定。
进一步参照图4,在本机SRAM132内将解密的第一级代码327作为受信任内核程序执行时,安全CPU-B可以被配置为请求安全CPU-A生成可用于解密第二级代码的密钥。响应于所述请求,安全CPU-A可生成由安全CPU-B使用的具有指定访问权限的密钥。访问权限可包括从中解密第二级代码的DRAM115的第一区域321,以及将解密的第二级代码419写入其中的DRAM的第二区域421。例如,第一区域可为存储第二级加密代码319的区域321,第二区域421可为在图4中由生成的密钥创建的访问权限指定的存储解密的第二级代码419的区域。
安全CPU-B可与高安全级CPU-A协作以创建存储器校验器428,一种专用硬件。存储器校验器428可以被配置为确保仅从DRAM115的第一区域321到第二区域421进行第二级加密代码319的解密。如果主处理器试图将解密的第二级代码419写入第二区域421之外的存储器,存储器校验器428可对安全CPU-B发出警告,从而使得代码不会写入第二区域之外,或可强制将解密的第二级代码写入第二区域。
安全CPU-B随后可利用由安全CPU-A生成的密钥对第二级代码319进行解密,并将解密的第二级代码419写入DRAM115的第二区域421。尽管主处理器110可以访问第一区域,但其无法访问第二区域。然而,安全CPU-B可以访问第二区域,以执行解密的第二级代码。由此,启动处理的第二级确保当解密的第二级代码419保存到存储器时,解密的第二级代码基于主处理器的请求是可执行的,但不允许主处理器对解密的第二级代码进行访问。由于SOC100的第三方客户端可访问主处理器,两级启动处理确保第三方主体无法通过针孔窥探(pinsnooping)等方式窥探解密的第二级代码419。
图5为启动安全CPU-B之后从存储器运行受保护第二级代码419的示例图。上文所述的指令校验器138还可被配置为确保解密的第二级代码419不会在存储器的第二区域421之外执行。指令校验器138可对由主处理器110调用执行的解密的第二级代码419的指令进行监控,并确保仅在DRAM115的安全存储器的第二区域421之内执行。
主处理器110试图在DRAM115的第二区域421之外执行解密的第二级代码中的指令时,指令校验器138可阻止指令的执行,或重置SOC100,从而重启安全CPU-B。可选地,或另外地,指令校验器138可对安全CPU-B发出意图警告,使安全CPU-B可进行阻止,或强制在DRAM的第二区域421内执行指令。
图6和图7为通过由安全CPU-A安全地启动安全CPU-B而保护多安全CPU系统中的软件的示例方法的流程图,其中,图6示出了两级启动处理的第一级,图7示出了第二级。SOC100通过请求安全CPU-B启动而启动时,主处理器开始该处理(602)。主处理器将加密SCPU代码从闪存写入DRAM(604),加密SCPU代码包括加密的第一级代码和第二级代码。
第一级启动加载程序(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)。
参照图7,执行解密的第一级代码时,安全CPU-B请求安全CPU-A生成解密密钥(702)。安全CPU-A生成附有特定访问权限的密钥(704)。这些访问权限可包括从中解密加密的第二级代码的DRAM的第一区域(区域1),以及将解密的第二级代码写入其中并从中执行所述解密的第二级代码的DRAM的第二区域(区域2)。安全CPU-B可与安全CPU-A协作以创建存储器校验器,一种确保对加密的第二级代码进行解密时从区域1到区域2进行解密的专用硬件(708)。
当主处理器试图对第二级代码进行解密时,存储器校验器确定是否从区域1进行解密(716)。并非从区域1进行解密时,存储器校验器和安全CPU-B不允许进行解密(720)。从区域1进行解密时,安全CPU-B用密钥对加密的第二级代码进行解密(724)。
存储器校验器随后确定是否收到了将解密代码写入区域2的请求(728)。当存储器校验器确定主处理器试图将解密的第二级代码写入区域2之外时,存储器校验器或安全CPU-B防止解密的第二级代码被写入DRAM的区域2之外(732)。当存储器校验器确定主处理器请求将解密的第二级代码写入区域2时,安全CPU-B防止解密的第二级代码写入DRAM的区域2(734)。
安全CPU-B随后可代表主处理器执行解密的第二级代码(738)。指令校验器可确定执行的指令是否在DRAM的区域2内执行,一次确定一条指令(742)。当指令在区域2之外执行时,指令校验器可对安全CPU-B发出警告,使安全CPU-B不根据请求执行指令,或可强制在区域2内执行指令(746)。当指令在区域2之内执行时,指令校验器可通知安全CPU-B继续执行指令(750)。
图8为图1的安全CPU-B104与主处理器110之间的密钥分离保护敏感文件不被主机访问的系统的示例性框图。主处理器110和安全CPU-B可请求安全CPU-A生成用于访问敏感文件的解密的解密密钥,以供无权访问或无能力解密文件的软件使用。
这些敏感文件可包括与音频或音频/视频文件等适当媒体的数字权限管理(DRM)相关的文件或其他敏感文件。例如,在DRM系统中,可利用软件未知的特殊密钥保护文件不被不安全软件访问。然而,尽管密钥是未知的,但用于解密文件的命令对于主处理器是可用的。这使不安全软件随后发送在存储器中解密数据的命令。另外,期望将命令从安全CPU-B传输值安全CPU-A,以创建与主处理器110发布的相同命令完全不同的密钥结构,以保护安全CPU-A以主机不能够仿效密钥的方式单独发布命令,如后所述。
由于安全CPU-B以高于主处理器的安全级操作,所以图8示出了系统100如何向安全CPU-B提供用于独占访问未提供给主处理器的文件的唯一密钥。下文所述的密钥生成过程还可应用于根密钥生成,从而使得安全CPU-B可请求安全CPU-A生成对系统100执行的系统或软件文件进行解密的唯一根密钥。
在一个示例中,安全CPU-A包括变量模块800、密钥生成器805和过滤器115。密钥生成器805生成密钥820,例如,图8中显示的密钥820。密钥包括访问权限824,访问权限824包括指定对存储器的特定安全区域,例如,DRAM115中的区域1或区域2进行访问。访问的这种指定还可包括将解密数据写入区域1或区域2的权限。还可存储于DRAM115或其他存储器中的密钥表828提供了密钥820和由安全CPU-A可访问的对应的访问权限之间的链接。一旦安全CPU-A生成密钥,并对安全CPU-B或主处理器提供访问权限,安全CPU-B(或主处理器)可对存储器包含解密内容的区域进行访问。在生成根密钥的情况下,安全CPU-B(或主处理器)可对系统或软件文件进行解密,并将解密文件写入其可以被执行的存储器的受保护区域。
在一些情况下,安全CPU-B需要以主处理器没有被提供的独占访问而生成的唯一的密钥。如上所述,安全CPU-B可通过安全的专用通信总线142与安全CPU-A进行通信。该总线142可与总线840以物理和/或逻辑方式分离,主处理器通过总线840与安全CPU-A通信。安全CPU-B可通过专用总线142向变量模块800发布安全CPU-A的生成唯一密钥的特殊命令或请求。变量模块800可做出可供安全CPU-B选择的多个可能变化或变量。选择一个变化或变量时,密钥生成器805随后可将所选变量应用于用于生成密钥的算法。密钥生成器可将所做变量应用于密钥梯形或哈希算法,因此,如果不进行任何解密步骤,则访问被拒绝。
过滤器810可认证安全CPU-B对变量模块800的访问,并拒绝主处理器110对变量模块800的访问。过滤器810还可区分由主处理器110与安全CPU-B发出的命令或请求,例如,所述命令/请求分别正确地指示为来自主处理器100和安全CPU-B以用于密钥生成和访问存储器的安全区域。通过使用请求(安全CPU-A通过其产生位移的密钥)的认证的访问,安全CPU-B可获得对敏感文件的独占访问,包括DRM保护媒体内容。在一些情况下,还可对存储器的不同区域提供访问权限,以将内容写入DRAM115中的其他位置。在生成的密钥为根密钥的情况下,安全CPU-B可获得对系统或软件文件的独占解密权,以由系统100在DRAM115中的受保护区域,即主处理器110不可访问的区域中执行。
图9为用于在安全CPU-B与主处理器110之间执行保护敏感文件不被主处理器存取或解密的密钥分离的方法的示例性流程图。主处理器和安全CPU-B可请求安全CPU-A生成访问和解密敏感文件的密钥,如图8所述(902)。安全CPU-B可请求安全CPU-A生成主处理器无法访问的唯一密钥(906)。
安全CPU-A从主处理器或安全CPU-B接收请求以生成密钥。安全CPU-A的过滤器可确定请求来自主处理器还是安全CPU-B(910)。如果请求来自主处理器,安全CPU-A可生成主处理器请求使用的密钥(914)。安全CPU-A对主处理器提供与密钥对应的访问或解密权限(918)。
如果请求来自安全CPU-B,安全CPU-A还可通过变量模块接收算法变量的选择(922)。安全CPU-A的密钥生成器可利用算法变量生成唯一的密钥(930)。安全CPU-A可对安全CPU-B提供与排除主处理器的唯一密钥对应的访问或解密权限(934)。
上述方法、装置以及逻辑可通过许多不同的方式以许多不同的硬件、软件或者硬件和软件两者的组合来实施。例如,系统的全部或者部分可包括在控制器、微处理器或者专用集成电路(ASIC)中的电路,或者可以分立逻辑或者组件、或者结合在单个集成电路上或者分布在多个集成电路中其他类型的模拟或数字电路的组合来实施。
上文对本发明的各个实施例进行了说明,但本领域的普通技术人员应理解的是,只要不脱离本发明的范围,可采用多种其他实施例和实施方式。由此,本发明并不具有限制性,但应符合附加权利要求及其等同物。

Claims (9)

1.一种计算系统,包括:
第一中央处理单元(CPU);
第二中央处理单元,与所述第一中央处理单元和主处理器通信耦接;
动态随机存取存储器;
指令校验电路,
其中,响应于由所述主处理器发出的启动所述第二中央处理单元的请求,
所述第二中央处理单元被配置为执行两级安全启动,其中,所述第二中央处理单元被配置为:
执行第一级代码以从所述第一中央处理单元请求解密所述两级安全启动的第二级代码的解密信息;
解密存储在所述动态随机存取存储器的第一区域中的所述第二级代码;
将所解密的第二级代码写入所述动态随机存取存储器的第二区域;以及
执行所述两级安全启动的所述第二级代码,以及其中,所述指令校验电路被配置为监控所述第二中央处理单元的所述第二级代码的执行,并且响应于检测到试图执行位于所述动态随机存取存储器的所述第二区域外部的指令,防止由所述第二中央处理单元执行所述指令。
2.根据权利要求1所述的计算系统,其中,所述主处理器被配置为将包括用于执行所述两级安全启动处理的所述第一级代码和所述第二级代码的加密代码写入所述动态随机存取存储器中。
3.根据权利要求2所述的计算系统,其中,所述所述第一中央处理单元和所述第二中央处理单元位于片上系统(SOC)上,且其中,启动加载电路被配置为:
从所述动态随机存取存储器中读取所述第一级代码;
在所述片上系统上解密所述第一级代码;以及
将所解密的第一级代码写入能够由所述第二中央处理单元访问的专用本机存储器。
4.根据权利要求3所述的计算系统,其中,所述第一中央处理单元进一步被配置为:
对用于由所述第二中央处理单元执行的所解密的第一级代码进行认证;以及
授权所述第二中央处理单元执行来自能够由所述第二中央处理单元访问的所述专用本机存储器的所解密的第一级代码。
5.根据权利要求3所述的计算系统,其中,所解密的第一级代码能够执行为对关于如何加载、解密和执行所述第二级代码做出决定。
6.根据权利要求3所述的计算系统,其中,在执行所解密的第一级代码时,所述第二中央处理单元被配置为请求所述第一中央处理单元生成能用于解密所述第二级代码的密钥,响应于此,所述第一中央处理单元进一步被配置为:
生成由所述第二中央处理单元使用的具有指定的访问权限的密钥,所述访问权限包括从中解密所述第二级代码的所述动态随机存取存储器的第一区域,以及将所解密的第二级代码写入其中的所述动态随机存取存储器的第二区域;以及
协助所述第二中央处理单元配置存储器校验器以确保仅从所述动态随机存取存储器的所述第一区域解密所述第二级代码并且所述第二中央处理单元仅将解密的第二级代码写入到所述动态随机存取存储器的所述第二区域。
7.根据权利要求6所述的计算系统,其中,所述主处理器能够访问所述动态随机存取存储器的所述第一区域但不能访问所述动态随机存取存储器的所述第二区域。
8.一种用于保护包括通信地耦接在一起的第一中央处理单元和第二中央处理单元的多安全中央处理单元(CPU)系统中的软件的方法,包括:
从主处理器接收启动所述第二中央处理单元的请求;
通过第一级启动加载电路解密所加密的第一级代码并将解密的第一级代码写入能够由所述第二中央处理单元访问的存储器中;
通过所述第二中央处理单元执行解密的第一级代码,其中,所述执行包括:
从动态随机存取存储器解密所加密的第二级代码;以及
将解密的第二级代码写在所述动态随机存取存储器的指定区域处;
通过指令校验器在执行解密的第二级代码的过程中监控由所述第二中央处理单元执行的指令的地址;以及
响应于由所述第二中央处理器执行的指令的地址处于所述指定区域外,由所述指令校验器警告所述第二中央处理器。
9.一种计算系统,包括:
第一中央处理单元(CPU);
动态随机存取存储器(DRAM),与所述第一中央处理单元通信地连接;
闪存;
第二中央处理单元,与所述第一中央处理单元和所述动态随机存取存储器通信地耦接;
主处理器,与所述第一中央处理单元和所述第二中央处理单元、所述动态随机存取存储器和所述闪存耦接,所述主处理器被配置为将加密代码从所述闪存写入所述动态随机存取存储器,所述加密代码包括用于执行两级启动处理的第一级代码和第二级代码;
其中,所述第一中央处理单元被配置为:
从所述主处理器接收启动所述第二中央处理单元的请求;
响应于所述请求,解密所述第一级代码;以及
将解密的第一级代码写入能够由所述第二中央处理单元访问的存储区域中;
其中,所述第二中央处理单元被配置为执行存储在能够由所述第二中央处理单元访问的所述存储区域中的解密的第一级代码以:
解密存储在所述动态随机存取存储器的第一区域中的加密的第二级代码;以及
将解密的第二级代码写入所述动态随机存取存储器的第一区域中;以及
执行来自所述动态随机存取存储器的第二区域的解密的第二级代码;以及
其中,存储器校验器被配置为:
监控加密的第二级代码从所述动态随机存取存储器的所述第一区域内被所述第二中央处理单元读取,并且解密的第二级代码被所述第二中央处理单元写入到所述动态随机存取存储器的所述第二区域内;以及
响应于所述第二中央处理单元访问在所述第一区域和所述第二区域外的动态随机存取存储器,放弃加密的第二级代码的解密,从而使得所述主处理器无法在解密之后访问解密的第一级代码或解密的第二级代码。
CN201310356861.9A 2012-08-17 2013-08-15 保护多安全cpu系统中的安全软件 Active CN103593603B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261684479P 2012-08-17 2012-08-17
US61/684,479 2012-08-17
US201261729169P 2012-11-21 2012-11-21
US61/729,169 2012-11-21
US13/707,023 2012-12-06
US13/707,023 US9183402B2 (en) 2012-08-17 2012-12-06 Protecting secure software in a multi-security-CPU system

Publications (2)

Publication Number Publication Date
CN103593603A CN103593603A (zh) 2014-02-19
CN103593603B true CN103593603B (zh) 2016-07-06

Family

ID=48900733

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310356861.9A Active CN103593603B (zh) 2012-08-17 2013-08-15 保护多安全cpu系统中的安全软件

Country Status (5)

Country Link
US (1) US9183402B2 (zh)
EP (1) EP2706478B1 (zh)
CN (1) CN103593603B (zh)
HK (1) HK1191704A1 (zh)
TW (1) TW201411405A (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9231921B2 (en) 2013-08-20 2016-01-05 Janus Technologies, Inc. System and architecture for secure computer devices
CN103942503B (zh) * 2014-04-28 2017-02-01 上海新储集成电路有限公司 一种安全状态切换系统及切换方法
CN104331671A (zh) * 2014-10-30 2015-02-04 无锡市合鑫川自动化设备有限公司 计算机从设备安全代码加载的方法与系统
CN106155940A (zh) * 2015-04-17 2016-11-23 扬智科技股份有限公司 可保护代码的系统芯片与系统芯片的代码保护方法
DE102015223078A1 (de) 2015-11-23 2017-05-24 Siemens Aktiengesellschaft Vorrichtung und Verfahren zum Anpassen von Berechtigungsinformationen eines Endgeräts
US20170364683A1 (en) * 2016-06-17 2017-12-21 Google Inc. Computing device secure boot
CN106648791B (zh) * 2016-12-29 2019-11-05 成都多沐汽车工程有限公司 数据加载方法及装置
CN108270910A (zh) * 2016-12-30 2018-07-10 展讯通信(上海)有限公司 移动终端
CN108345522B (zh) * 2017-12-15 2019-03-29 清华大学 用于对中央处理器cpu进行安全检测的方法、装置和系统
JP7178839B2 (ja) * 2018-09-11 2022-11-28 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム
FR3098613A1 (fr) * 2019-07-09 2021-01-15 STMicroelectronics (Grand Ouest) SAS Procede de gestion du fonctionnement d’au moins un logiciel applicatif chiffre et circuit integre correspondant
DE102020006887A1 (de) 2020-11-10 2022-05-12 Airbus Defence and Space GmbH Einfach zertifizierbare und qualifizierbare Computerprogrammstruktur und Computersystem
CN116635858A (zh) * 2020-12-29 2023-08-22 华为技术有限公司 一种安全隔离装置和方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6012142A (en) 1997-11-14 2000-01-04 Cirrus Logic, Inc. Methods for booting a multiprocessor system
US6599194B1 (en) 1998-09-08 2003-07-29 Darren Smith Home video game system with hard disk drive and internet access capability
US7146504B2 (en) 2002-06-13 2006-12-05 Microsoft Corporation Secure clock on computing device such as may be required in connection with a trust-based system
US7152193B2 (en) 2002-08-13 2006-12-19 Lsi Logic Corporation Embedded sequence checking
FR2862397A1 (fr) * 2003-11-13 2005-05-20 St Microelectronics Sa Demarrage securise d'un appareil electronique a architecture smp
US20050138409A1 (en) 2003-12-22 2005-06-23 Tayib Sheriff Securing an electronic device
US20050204155A1 (en) 2004-03-09 2005-09-15 Nec Laboratories America, Inc Tamper resistant secure architecture
US7940932B2 (en) * 2004-04-08 2011-05-10 Texas Instruments Incorporated Methods, apparatus, and systems for securing SIM (subscriber identity module) personalization and other data on a first processor and secure communication of the SIM data to a second processor
US9904809B2 (en) 2006-02-27 2018-02-27 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for multi-level security initialization and configuration
US9177176B2 (en) 2006-02-27 2015-11-03 Broadcom Corporation Method and system for secure system-on-a-chip architecture for multimedia data processing
EP1868127A1 (en) 2006-06-15 2007-12-19 Thomson Telecom Belgium Device comprising a public and a private area and a method for securely initializing the device
US8000493B2 (en) 2007-03-08 2011-08-16 Broadcom Corporation Method and system for watermark embedding in a multimedia system-on-chip
US7945792B2 (en) * 2007-10-17 2011-05-17 Spansion Llc Tamper reactive memory device to secure data from tamper attacks
IL187044A0 (en) 2007-10-30 2008-02-09 Sandisk Il Ltd Fast secure boot implementation
US7917790B2 (en) * 2008-01-17 2011-03-29 Broadcom Corporation Separate power island for high performance processor that reboots to second boot sector
US9177152B2 (en) 2010-03-26 2015-11-03 Maxlinear, Inc. Firmware authentication and deciphering for secure TV receiver
US8959363B2 (en) * 2010-06-03 2015-02-17 Intel Corporation Systems, methods, and apparatus to virtualize TPM accesses
US8813218B2 (en) 2012-02-14 2014-08-19 Janus Technologies, Inc. Security-enhanced computer systems and methods
US20140164753A1 (en) * 2012-12-06 2014-06-12 Samsung Electronics Co., Ltd System on chip for performing secure boot, image forming apparatus using the same, and method thereof

Also Published As

Publication number Publication date
TW201411405A (zh) 2014-03-16
US9183402B2 (en) 2015-11-10
CN103593603A (zh) 2014-02-19
EP2706478B1 (en) 2018-10-31
EP2706478A2 (en) 2014-03-12
US20140052975A1 (en) 2014-02-20
HK1191704A1 (zh) 2014-08-01
EP2706478A3 (en) 2014-08-13

Similar Documents

Publication Publication Date Title
CN103593603B (zh) 保护多安全cpu系统中的安全软件
CN103827881B (zh) 用于设备操作系统中的动态平台安全的方法和系统
CN103377349B (zh) 安全控制的多处理器系统
US9853974B2 (en) Implementing access control by system-on-chip
JP3774260B2 (ja) メモリカードのセキュリティシステム装置及びそのメモリカード
TWI438686B (zh) 用於使用狀態確認來保護作業系統啟動過程的系統及方法
US8522346B1 (en) Protection against unintentional file changing
CN1801091B (zh) 用可信处理模块安全地引导计算机的系统和方法
TWI512529B (zh) 計算系統,及其片上系統
US9100173B2 (en) Security USB storage medium generation and decryption method, and medium recorded with program for generating security USB storage medium
US8281115B2 (en) Security method using self-generated encryption key, and security apparatus using the same
US9171170B2 (en) Data and key separation using a secure central processing unit
JP6072091B2 (ja) アプリケーション・プログラム用の安全なアクセス方法および安全なアクセス装置
JP2005346182A (ja) 情報処理装置、耐タンパ方法、耐タンパプログラム
US10387653B2 (en) Secure provisioning of semiconductor chips in untrusted manufacturing factories
TWI518539B (zh) Data processing device
JP2000138917A (ja) 安全計算システム及び方法
CN109583196B (zh) 一种密钥生成方法
JP2007179090A (ja) 情報処理装置、ファイル保護方法、及びプログラム
CN111444118B (zh) 一种进程保护方法、装置、终端设备及存储介质
JP4388040B2 (ja) 不正接続防止システム、不正接続防止方法、ユーザ端末、及びユーザ端末用プログラム
WO2011027522A1 (ja) 機器認証システム
JP2000172412A (ja) 個人情報格納装置および認証装置
EP4278559A1 (en) Method and device for controlling access to a resource
CN117892337A (zh) 一种基于密码进行固态硬盘数据自动处理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1191704

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20170302

Address after: Singapore Singapore

Patentee after: Avago Technologies Fiber IP Singapore Pte. Ltd.

Address before: American California

Patentee before: Zyray Wireless Inc.

REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1191704

Country of ref document: HK

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20181018

Address after: Singapore Singapore

Patentee after: Annwa high tech Limited by Share Ltd

Address before: Singapore Singapore

Patentee before: Avago Technologies Fiber IP Singapore Pte. Ltd.