CN103282913A - 用于加载至少一个软件模块的代码的方法 - Google Patents
用于加载至少一个软件模块的代码的方法 Download PDFInfo
- Publication number
- CN103282913A CN103282913A CN2011800637847A CN201180063784A CN103282913A CN 103282913 A CN103282913 A CN 103282913A CN 2011800637847 A CN2011800637847 A CN 2011800637847A CN 201180063784 A CN201180063784 A CN 201180063784A CN 103282913 A CN103282913 A CN 103282913A
- Authority
- CN
- China
- Prior art keywords
- code
- software module
- operating system
- primary memory
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/418—External card to be used in combination with the client device, e.g. for conditional access
- H04N21/4181—External card to be used in combination with the client device, e.g. for conditional access for conditional access
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种用于借助于安全处理器将至少一个软件模块的代码加载到主存储器中的方法,其中引导加载器在起动操作***的执行之前,在主存储器的位于操作***可用的地址范围外部的地址范围中,还将软件模块的代码加载(170)到主存储器中,以及在起动操作***的执行之后,在使用将用户程序的虚拟存储器空间中的软件模块的地址与主存储器中的软件模块的物理地址自动关联的操作***的特定文件***时,操作***将针对该软件模块的调用从用户程序朝向主存储器的在起动操作***的执行之前该软件模块的代码被加载到的地址重新路由(194)。
Description
本发明涉及一种用于借助于安全处理器将至少一个软件模块的代码加载到主存储器中的方法。
本发明的目的还在于:
-一种用于接收加扰的多媒体内容的方法,
-一种用于实现这些方法的信息记录介质,
-一种用于实现这些方法的终端。
主存储器还被称为由缩写RAM表示的“随机存取存储器”。其通常是易失性存储器,即通过断电擦除信息元素的存储器。主存储器能够实现迅速的读写访问。这就是待由安全处理器执行的程序的指令被从最初记录它们的一个或更多个大容量存储器加载到该存储器中的原因。大容量存储器通常是非易失性存储器,其具有极大的信息存储容量但是在读写模式中是缓慢的。因此不可能从大容量存储器中的指令直接执行程序。
本发明能够特别地应用于用于提供如收费电视的收费多媒体节目的访问控制的领域。
在本说明书中,术语“多媒体内容”更具体地指示用于以人类能够直接感知和理解的形式呈现的音频和/或视觉内容。典型地,多媒体内容对应于形成影片、电视广播或者广告的一连串图像。多媒体内容还可以是诸如游戏的交互内容。
为了保证多媒体内容的观看并且使这种观看受制于某些条款,诸如例如进行付费订阅,以加扰的形式而非未加密的或明文的形式广播多媒体内容。在本说明书中,当在某一频道上广播的多媒体内容被加扰时,该频道被称为“加扰的”。
更具体地,每个多媒体内容被分成一连串加扰周期。在加扰周期的整个时长中,对加扰的多媒体内容的访问条件保持不变。特别地,在加扰周期的整个时长中,用同一控制字对多媒体内容加扰。通常,控制字按加扰周期变化。
此外,控制字通常对于多媒体内容是特定的,该控制字被随机地或伪随机地抽取。因此如果在给定时刻同时在N个频道上广播N个多媒体内容,则存在N个不同的独立的控制字,每个控制字用于对一个多媒体内容加扰。
这里,术语“加扰”和“加密”被认为是同义的。对于“解扰”和“解密”,情况亦是如此。
明文多媒体内容对应于加扰前的多媒体内容。该内容可以被人类直接理解而无需求助于解扰操作并且无需使观看受制于某些条款和条件。
对多媒体内容解扰所需的控制字与多媒体内容同步地传送。例如,在第t-1个加扰周期期间每个终端接收对第t个加扰周期解扰所需的控制字。为此,例如,控制字与加扰的多媒体内容复用。
为了保证控制字的传送,这些字以ECM(授权控制消息)中包含的密文的形式被传送到终端。
以下术语“密文”指示其自身不足以取回具有未加密的或明文的形式的数据的信息。为了取回明文数据,例如能够用于对多媒体内容直接解扰的控制字,其密文必须与秘密信息组合。例如,通过用密钥对明文数据加密来获得数据的密文。在该情况下,秘密信息是用于对该密文解密的密钥。密钥也可以是针对存储在包含大量可能的数据元素的表格中的数据的参考。在该情况下,秘密信息是使明文数据与每个参考相关联的表格。
秘密信息必须被保存在安全位置。为此,已经提出将秘密信息存储在直接连接到每个终端的诸如智能卡的安全处理器中。
然而,智能卡的使用呈现了某些缺陷。特别地,如果在智能卡中发现了严重的安全缺陷,则它们必须被物理更换成新的智能卡。这难于大规模实现。
为了克服该缺陷,已提出了将配备有智能卡的终端更换成无卡终端。
在这些终端中,智能卡可以被更换成终端的终端安全处理器执行的软件模块。这些已知的终端可以配备有:
-主存储器,
-安全处理器,其采取集成电路的形式,在该集成电路中实现了能够执行主存储器中记录的指令的微处理器、安全协处理器、仅可由安全协处理器访问的非易失性存储器和随机存取存储器,该处理器借助于数据总线连接到主存储器,
-多任务操作***的代码,当其被处理器执行时,能够调度几个用户程序的同时执行,
-引导加载器的代码,当其被处理器执行时,能够将多任务操作***的代码加载到主存储器中,并且随后从该主存储器起动该操作***的执行,
-引导代码的指令,当这些指令被处理器执行时,将引导加载器的代码加载到主存储器中,这些指令从第一地址开始记录在协处理器的非易失性存储器中,其中在紧接处理器的每次重置之后该处理器的顺序计数器指向该第一地址,
-一个或更多个非易失性存储器,其包含软件模块的代码。
因此这些终端具有接近传统计算机的架构。特别地,软件模块的代码必须被加载到终端的主存储器中,使得其能够被执行。术语“代码”指示能够被本机解释器或者在安全处理器中实现的低级虚拟机执行或解释的代码。
为此,在已知方法中,安全处理器执行:
-引导代码,其将引导加载器的代码加载到主存储器中并且随后从主存储器起动该引导加载器的执行,随后
-引导加载器的代码,用于将多任务操作***的代码加载到主存储器中,该操作***被配置成仅使用主存储器的一个减少的地址范围,并且随后从该主存储器起动该操作***的执行,
-操作***,用于通过该处理器调度几个用户程序的同时执行。
随后,操作***起动软件模块的执行并且设置保护机制以防止软件模块的代码被讹误或伪造。
操作***正在变得日益复杂。因此在这些操作***中极有可能存在功能失常。这些功能失常被称为缺陷(bug)。这种功能失常可能被利用以移除保护软件模块的安全机制。因此,难于保证当操作***加载软件模块时没有安全漏洞。由于操作***开发人员不同于软件模块开发人员,因此更加难于提供这种保证。此外,必须使软件模块的加密分析的尝试更为困难。
现有技术还获知自如下文献:US2009/257595A1、EP1868127A1、US2009/193230A1、US2007/113088A1。
本发明寻求克服这些缺陷至少之一。因此本发明的目的在于一种用于将至少一个软件模块的代码加载到主存储器中的方法,其中:
-引导加载器在起动操作***的执行之前,在主存储器的位于操作***可用的地址范围外部的地址范围中,还将软件模块的代码加载到主存储器中,以及
-在起动操作***的执行之后,在使用将用户程序的虚拟存储器空间中的软件模块的地址与主存储器中的软件模块的物理地址自动关联的操作***的特定文件***时,操作***将针对该软件模块的调用从用户程序朝向主存储器的在起动操作***的执行之前该软件模块的代码被加载到的地址重新路由。
在以上方法中,用于加载软件模块的职责没有留给操作***。这确保了操作***中的功能失常不能被利用,以防止将该软件模块加载到主存储器中或者再者防止将修改的软件模块加载到主存储器中。
此外,软件模块被记录在不能由操作***使用的地址范围中。这意味着没有用户程序能够在不经过特定的文件***的情况下访问软件模块的代码。事实上,如果用户程序尝试在不使用特定文件***的情况下在操作***可用的地址范围外部进行读写,则这例行地提示防止这种读写的错误。因此由操作***自身保护对软件模块的代码的访问。特别地,操作***中的缺陷不能再被用于访问软件模块的代码。因此使得软件模块的代码的加密分析更加困难。
这种加载方法的实施例可以包括一个或更多个如下特性:
■在起动引导加载器的执行之前,由处理器执行的引导代码基于引导加载器的代码的签名和密钥来验证该代码的真实性,并且如果代码是真实的,则起动该引导加载器的执行;
■在引导加载器的执行期间,引导加载器配置在处理器的集成电路内存在的安全协处理器,使得该安全协处理器基于针对软件模块的代码给出的签名和密钥来验证该模块的代码的真实性,在起动操作***的执行之后,安全协处理器自动地并且按预定的间隔验证加载的软件模块的代码的真实性并且如果其不是真实的,则防止执行软件模块,出于该效果该协处理器使用其自身的非易失性存储器及其自身的随机存取存储器在没有求助于主存储器的情况下执行这种软件模块的代码的真实性的验证,该非易失性存储器和该随机存取存储器仅可由安全协处理器访问;
■引导加载器配置构成处理器的集成电路内存在的安全协处理器以隐藏主存储器的软件模块的代码已被加载到的第一地址范围中记录的指令,该隐藏包括利用密钥Koc1保持在该地址范围中记录的软件模块的代码的指令的加密形式,并且在起动操作***的执行之后,在该第一地址范围中读取的每条指令被处理器执行之前,安全协处理器利用密钥Koc1自动地对该指令解密,出于该效果协处理器使用其自身的非易失性存储器及其自身的随机存取存储器在没有求助于主存储器的情况下利用密钥Koc1执行该解密,该非易失性存储器和该随机存取存储器仅可由安全协处理器访问;
■该方法包括利用密钥Koc1以加密形式将软件模块的可执行代码记录在非易失性存储器中并且引导加载器将利用密钥Koc1加密的该软件模块的代码直接加载到主存储器中;
■引导加载器配置处理器的集成电路内部存在的安全协处理器以隐藏主存储器的第二地址范围中记录的数据,该隐藏包括对该数据加密,并且随后在软件模块的执行期间,在起动操作***之后,软件模块将数据记录在该第二地址范围中,并且作为响应,在将该第二地址范围中记录的每条数据置于将处理器连接到主存储器的数据总线中之前,安全协处理器对该数据加密,并且当处理器在数据总线中接收到处理器在该第二地址范围中读取的每条数据时,在处理器使用数据之前对该数据解密,使得主存储器的第二地址范围中记录的每条数据以加密的形式唯一存在于构成处理器的集成电路的外部,出于该效果协处理器使用其自身的非易失性存储器及其自身的随机存取存储器在没有求助于主存储器的情况下执行该加密和该解密,该非易失性存储器和该随机存取存储器仅可由安全协处理器访问;
■在引导加载器的执行期间,引导加载器配置在处理器的集成电路内部存在的安全协处理器,使得安全协处理器基于与操作***的加载代码一起提供的签名和密钥来验证该操作***的代码的真实性,并且在起动操作***的执行之后,安全协处理器自动地并且按预定的间隔验证操作***的代码的真实性,并且如果该代码不是真实的,则防止操作***的执行,出于该效果该协处理器使用其自身的非易失性存储器及其自身的随机存取存储器在没有求助于主存储器的情况下执行这种操作***的代码的真实性的验证,该非易失性存储器和该随机存取存储器仅可由安全协处理器访问;
■引导加载器将软件模块的代码加载到主存储器的操作***未编页的连续地址范围中;
■在起动操作***之后不再执行引导加载器的代码,并且只要安全处理器没有被重置,情况一直如此;
■起动的操作***设置主存储器的用户子区和一个或更多个大容量存储器之间的虚拟存储器机制;
■该软件模块包括条件访问库的数据或代码,这些数据或代码能够对ECM(授权控制消息)中存在的控制字的密文解密。
加载方法的这些实施例进一步具有如下优点:
-记录在不可修改的存储器中的引导代码对引导加载器进行认证的事实使得难于进行修改引导加载器的任何尝试;
-自身已被引导代码初始认证的引导加载器激活软件模块的认证的事实使得难于进行软件模块的代码的任何恶意修改;
-主存储器中记录的软件模块的代码的指令仅在处理器的集成电路内解密的事实保持了该代码的机密性;
-利用密钥以加密的形式将软件模块直接记录在大容量存储器中用于隐藏该软件模块的代码的事实防止了将大容量存储器的软件模块的代码加载到主存储器期间的解密操作;
-软件模块在其执行期间生成的数据被记录在主存储器中的被协处理器隐藏的地址范围中的事实保持了该数据的机密性;
-自身已被引导代码初始认证的引导加载器激活操作***的代码的认证的事实使得极为难于进行该操作***的任何恶意修改以便将对该软件模块的调用更换成针对另一软件程序的调用;
-将软件模块的代码加载到连续的地址范围中便利了其真实性的验证以及其代码在主存储器中的隐藏。
本发明的目的还在于一种用于接收通过控制字CWi,t加扰的加扰的多媒体内容的方法,该方法包括:
-接收包含控制字CWi,t的密文CW*i,t的ECM(授权控制消息);
-将软件模块加载到接收终端的主存储器中,该软件模块在被通过数据总线连接到主存储器的处理器执行时能够对密文CW*i,t解密以获得控制字CWi,t;
-处理器执行软件模块以对密文CW*i,t解密;
-借助于明文形式的控制字CWi,t对加扰的多媒体内容解扰;
该方法包括根据以上加载方法加载软件模块。
本发明的目的还在于一种包括指令的信息记录介质,这些指令在被电子安全处理器执行时实现以上方法之一。
本发明的目的还在于一种终端,其配备有:
-主存储器,
-安全处理器,其采取集成电路的形式,在该集成电路中实现了能够执行主存储器中记录的指令的微处理器、安全协处理器、仅可通过安全协处理器访问的非易失性存储器和随机存取存储器,该处理器借助于数据总线连接到主存储器,
-多任务操作***的代码,当其被处理器执行时,能够调度几个用户程序的同时执行,
-引导加载器的代码,当其被处理器执行时,能够将多任务操作***的代码加载到主存储器中,并且随后从该主存储器起动该操作***的执行,
-引导代码的指令,当这些指令被处理器执行时,将引导加载器的代码加载到主存储器中,这些指令从第一地址开始记录在协处理器的非易失性存储器中,其中在紧接处理器的每次重置之后该处理器的顺序计数器指向该第一地址,
-一个或更多个非易失性存储器,其包含软件模块的代码
其中
-引导加载器还能够在被处理器执行时,在起动操作***的执行之前,将软件模块的代码加载到主存储器中,以及
-在操作***已被起动之后,操作***能够在被微处理器执行时,将针对该软件模块的调用从用户程序朝向主存储器的在起动操作***的执行之前该软件模块的代码被加载到的地址重新路由。
该终端的实施例还可以包括如下特性:
-终端包括ECM接收器,
-软件模块在被处理器执行时,能够接收ECM,对ECM中包含的密文CW*i,t解密以获得控制字CWi,t,以及
-终端包括解扰器,该解扰器能够借助于通过软件模块解密的控制字CWi,t对加扰的多媒体内容解扰。
通过参照附图,根据以下通过非排他性的说明给出的描述,本发明的其他特征和优点将变得更加清楚,在附图中:
图1是用于发送和接收加扰的多媒体内容的***的示意图;
图2是在图1的***中实现的中央处理单元的示意图;
图3是用于将软件模块的代码加载在图2的中央处理单元的主存储器中的方法的流程图;
图4是用于接收加扰的多媒体内容的方法的流程图;以及
图5是图3的方法的变形例的流程图。
在这些图中,相同的附图标记用于表示相同的元件。
以下在描述中,没有详细描述本领域技术人员公知的特性和功能。此外,所使用的技术是用于访问多媒体内容的条件访问***的技术。对于关于该技术的更多信息,读者可以参考以下文献“Functional Model of Conditional AccessSystem”,EBU Review,Technical European Broadcasting Union,Brussels,BE,n°266,21December1995。
图1示出了用于发送和接收加扰的多媒体内容的***2。所发送的多媒体内容是线性化的多媒体内容。例如,多媒体内容对应于诸如电视广播或影片的一系列视听节目。
明文多媒体内容由一个或更多个源4生成并且被传送到广播设备6。设备6通过信息传送网络8将多媒体内容同时广播给大量的接收终端。广播的多媒体内容在时间上彼此同步以便例如符合预设的节目时间表。
网络8典型地是诸如互联网或卫星网络的长距离信息传送网络或者诸如用于传送数字地面电视(DTTV)的网络的任何其他广播网络。
为了简化图1,仅示出了三个接收终端10至12。
设备6包括编码器16,其压缩其接收到的多媒体内容。编码器16处理数字多媒体内容。例如,该编码器根据MPEG2(移动图像专家组-2)标准或者UIT-T H264标准工作。
压缩的多媒体内容被引导至加扰器22的输入20。加扰器22对每个压缩的多媒体内容加扰以便使得其观看对于某些条款是有条件的,诸如接收终端的用户购买访问权利。加扰的多媒体内容被呈递在连接到复用器26的输入的输出24。
加扰器22借助于生成器32提供给其以及条件访问***28的控制字CWi,t对每个压缩的多媒体内容加扰。条件访问***28还被称为其缩写CAS。索引i是广播加扰的多媒体内容的频道的标识符并且索引t是识别用该控制字加扰的加密周期的序号。
典型地,该加扰器符合诸如DVB-CSA(数字视频广播-通用加扰算法)、ISMA Crap(互联网流媒体联盟Cryp)、SRTP(安全实时传输协议)、AES(高级加密标准)等的标准。
对于每个频道i,***28生成表示为ECMi,t的ECM(授权控制消息),其至少包含生成器32生成的并且加扰器22用于对频道i的密文t加扰的控制字CWi,t的初始计算的密文CW*i,t。这些消息和加扰的多媒体内容被复用器26复用并且随后在网络8上传送,后者由条件访问***28和加扰器22分别提供。
***28还将如下信息***到每个ECM中:
-***28计算的控制字CWi,t和CWi,t+1的密文CW*i,t至CW*i,t+1,其实现频道i的紧密连续的加密周期t和t+1的解扰,
-将与用户获取的访问权利比较的访问条件CA,以及
-MAC密码签名或冗余,用于验证ECM的完整性。
以下包含控制字对CWi,t/CWi,t+1的ECM被表示为ECMi,t。
这里,索引t还识别能够借助于消息ECMi,t中包含的控制字CWi,t进行解扰的加密周期CPi,t。该索引t对于每个加密周期CPi,t是唯一的。
作为说明,这里的多媒体内容的加扰和复用符合DVB-Simulcrypt(ETSI TS103197)协议。
在该示例中,终端10至12是相同的。因此,以下仅详细描述了终端10。
这里终端10是在其能够同时对单个频道i解扰的特定情况下描述的。为此,终端10包括:
-用于对频道i解扰的中央处理单元60,以及
-广播的多媒体内容的接收器70。
单元60对频道i解扰以将其显示在显示单元84上。
例如,显示单元84是电视机、计算机或者再者是陆线电话或蜂窝电话。这里,显示单元是电视机。
在图1中,单元60的不同功能以功能块的形式表示。参照图2描述用于实现这些不同的功能块的单元60的硬件架构。单元60包括解复用器70,其一方面向解扰器74传送多媒体内容,并且另一方面向模块76传送消息ECMi,t和EMM(授权管理消息)用于多媒体内容的条件访问。
解扰器74通过模块76用传送的控制字对加扰的多媒体内容解扰。解扰的多媒体内容被传送到对其解码的解码器80。解压缩或解码的多媒体内容被传送到图形卡82,图形卡82驱动该多媒体内容在配备有屏幕86的显示单元84上的显示。
显示单元84以明文形式将多媒体内容显示在屏幕86上。
出其他之外,单元76处理诸如密钥的机密信息。为了保持该信息的机密性,其被设计用于针对计算机黑客的尝试攻击是尽可能鲁棒的。
单元60连接到大容量存储器78,其中在非易失性存储器中特别地记录了待执行的不同程序的数据和代码以便对密文CW*i,t解密。
图2示出了单元60的更详细的视图。这里,单元60包括:
-电子安全处理器90,
-主存储器92,
-非易失性存储器94,
-数据和地址总线96,其将处理器90连接到存储器78、92、94和接收器70。
处理器90是能够执行存储器78中记录的指令的可编程处理器。为此,处理器90并入主微处理器19和不同的协处理器,每个协处理器专用于特定的任务。
在该实施例中,作为说明,处理器90包括用于图1的每个功能块72、74、80和82的特定的协处理器。在图2中,这些协处理器带有与对应于图1的功能块相同的附图标记。因此,处理器90包括:
-协处理器72,用于接收器70接收到的多媒体流的复用,
-协处理器74,用于多媒体内容的解扰,
-协处理器80,用于多媒体内容的解密,以及
-协处理器82,用于视频显示。
这些协处理器中的每个能够与微处理器99执行的指令并行地执行指令。因此,较之仅使用一个微处理器99的情况,这些协处理器能够实现任务的更迅速的执行。
这里,处理器90采取单个集成电路的形式,在该集成电路中制造有微处理器99以及不同的协处理器。该集成电路容纳在单个封装中。典型地,微处理器99和不同的协处理器刻蚀在同一硅片上。这种协处理器还被称为“芯片上***”或SoC。
微处理器99具有传统的微处理器的所有元件。特别地,微处理器99并入了算术和逻辑单元以及各种寄存器以执行主存储器92中记录的指令。这些寄存器中的一个包含将执行的下一指令的地址。该寄存器还被称为顺序计数器。
这里处理器90被当作安全处理器,因为其还并入了安全协处理器100。在专利申请US20050169468中描述了安全协处理器的示例。
协处理器100可以被配置成自动地执行特定数量的任务,诸如执行密码功能。例如,为此效果该协处理器100配备有:
-其自身的算术和逻辑单元,
-非易失性存储器102,仅可在读取模式下访问,以及
-随机存取存储器103。
存储器102和103仅可由协处理器100访问。特别地,代码被从外部存储器加载到处理器90的处理器90执行的程序不能访问这些存储器102和103的内容。
存储器102包含在图3的方法的实现期间使用的密码功能的密钥和可执行代码。
这里,存储器102特别地包含如下密钥:
-密钥Koc1和Koc2,用于分别隐藏存储器92的第一范围和第二范围,
-密钥KACS,用于对ACS模块的代码解密,
-公钥KPubOS、KPubBL和KPubACS,分别对应于用于验证签名的私钥KPrivOS、KPrivBL和KPrivACS。
存储器102特别地包括可执行代码以便:
-对主存储器92或者存储器78和94的内容进行认证,以及
-隐藏主存储器92的内容。
更具体地,存储器102包括在被该协处理器100执行时实现***引导以及存储在存储器92或94中的数据页的内容的认证的可执行代码。这里被称为动态完整性检查的这种功能特别地采用如下信息作为输入参数:
-存储器中的数据范围的开始和结束物理地址,以及
-用于验证开始和结束地址之间包括的数据的真实性的签名所在的地址。
如果开始和结束地址之间的数据范围的内容有效地对应于所指示的签名,则动态完整性检查返回值“真”。否则,该功能返回值“假”。
一旦被参数化,协处理器100按规则的间隔激活动态完整性检查的执行。当该功能已被配置并激活时,称通过数据范围在存储器中的开始和结束地址识别的该数据范围已经历动态完整性检查。
存储器102包括隐藏主存储器92中的连续地址范围中包含的数据的功能。该隐藏功能特别地接受作为输入参数的范围的开始和结束地址。当该功能被激活时,当处理器90将数据写入该地址范围时,在将该数据置于总线96上之前,协处理器100执行隐藏功能以对该数据加密。随后该数据以加密形式被记录在存储器92中。因此,仅加密的数据在处理器90外部流通。相似地,当处理器90读取该地址范围中的数据时,在借助于总线96接收到的加密的数据被传送到例如微处理器99或者协处理器72、74、80和82中的一个用于处理之前,协处理器100对该数据解密。
因此协处理器100隐藏数据范围的事实对于微处理器99以及处理器90的任何其他协处理器是完全透明的。事实上,如同其他协处理器,微处理器99被完全免除存储器92中写入或读取的数据的这些加密和解密操作。主存储器中包含的数据的隐藏使得可以保持该数据的机密性,即便主存储器可能被任何间谍软件读取。
当协处理器100被配置成隐藏数据范围时,存储器的该范围或区间被称为隐藏的。
保护存储器102中记录的代码和数据,因为它们被记录在只读存储器中并且该存储器是非易失性的。此外,存储器102的内容不需要被复制到主存储器92以实现这些加密和解密算法的执行。事实上,协处理器100内部具有实现存储器102中记录的可执行代码的执行所需的所有部件,而不必出于该目的将其复制到诸如例如主存储器92的另一外部存储器中。
存储器94是非易失性存储器。例如,其是闪速存储器。这里该存储器94包含引导加载器的代码104以及借助于私钥KPrivBL的该引导加载器的签名106。参照图3更详细地描述了引导加载器104。
主存储器92典型地是RAM(随机存取存储器)。该存储器92典型地也是易失性的。
主存储器92包含处理器90执行的指令和数据。
在图2中,示出了存储器92的特定分区。更具体地,存储器92被成:
-为操作***保留的区间110,
-为在其中记录ACS模块的代码而保留的区间112,后面参照图3和4更详细地描述了该ACS模块,
-为在ACS模块的执行期间存储其生成的数据而保留的区间114,以及
-根据具体情况,用于诸如视频处理操作的其他应用的一个或更多个额外的区间116。
区间110自身被分成两个子区118和120。子区118包含内核的代码。子区120用于操作***满足不同的存储器需要,特别是用户程序的需要。
存储器78是诸如硬盘驱动器或其他相似设备的大容量存储器或大容量存储设备。其是非易失性存储器,不能从其直接执行程序的可执行代码。
这里,该存储器78包括:
-ACS模块的代码126,
-操作***的代码128,
-借助于私钥KPrivACS获得的ACS模块的代码126的签名130,以及
-借助于私钥KPrivOS获得的代码128的签名132。
在存储器78中,借助于密钥KACS以加密形式记录代码126。
Linux操作***管理虚拟存储器机制。该机制是公知的并且这里仅给出了一些说明。典型地,这里该虚拟存储器机制是用于主存储器92的编页机制。事实上,程序用户的数据的地址被编码成N位,使得程序的虚拟寻址空间从0延伸到2N,其中N是整数。通常,N是大于或等于16或32的整数。因此,虚拟寻址空间远大于主存储器92中可用的物理地址的数目。为了克服该缺陷,操作***仅将那些其中存在正被执行的用户程序所需的数据或指令的页从存储器78加载到主存储器92。形成用户程序的其他数据页保持在存储器78中。更具体地,在Linux中,程序页被唯一加载到用户子区120。这里从用户子区执行的程序被称为用户程序。
因此编页机制负责:
-将执行用户程序所需的页自动加载到主存储器中,以及
-将在用户程序的虚拟寻址空间中表述的虚拟地址转换成所需的数据所在的存储器92中的物理地址。
当程序需要页时,编页机制以不确定的方式分配自由物理页并且将数据从存储器78中存储的页复制到所分配的存储器页。
因此,当从操作***执行用户程序时,难于预先预测形成该程序的不同区间在主存储器中的位置。因此极为难于使用协处理器100仅隐藏这些区间,以与其他区间不同的方式隐藏这些区间或者使这些区间经历动态完整性检查。
作为说明,在Linux中,用户程序的虚拟寻址空间被分成五个区间:
-“文本”区间,包含程序的可执行代码。该区间仅可在执行时和在读取时访问;
-“数据”区间,包含程序的初始化数据。该区间仅可在读取时和在写入时访问;
-“bss”区间,包含程序的非初始化数据;
-“堆”区间,其尺寸可变,用于将存储器分配给待执行的程序;以及
-“栈”区间,用于堆叠程序的局部变量。
操作***还具有能够在时间上自动调度不同的用户程序的执行的调度器。例如,在终端10上,调度器在不同的用户程序之间共享微处理器99的使用时间以模拟这些用户程序的同时执行。
最后,如同任何操作***,该操作***具有一个或更多个文件***。文件***使访问路径和文件名称与诸如存储器78的信息存储设备上的该文件的内容相关联。诸如Linux的操作***还使得可以定义不一定与用于数据存储的硬件设备相关联的文件***。
除了用于访问存储器78的内容的传统的文件***以外,这里充分利用这种能力以定义特定的文件***,这里称为“VMAPPER文件***”。VMAPPER文件***的代码被集成到操作***的代码128中。因此在与操作***相同的时间,VMAPPER文件***的代码被加载在存储器92的区间118中。
该VMAPPER文件***相应地设置如下对应关系:
-使文件<<LibACS>>的访问路径和名称与存储器区间112对应,以及
-使文件<<DataACS>>的地址和名称与存储器区间114对应。
该VMAPPER文件***管理这两个文件LibACS和DataACS的打开和关闭以及这些文件的写入和读取。此外,VMAPPER文件***还可以管理对这些文件的访问权利。参照图3更详细地描述了该文件***的实施例的示例。
这里具体地写入ACS模块的代码126以便充分利用文件DataACS以在其中写入和读取在其执行期间生成的数据。为此,在ACS模块的代码126中,写入和管理存储器的功能被覆写或重写。作为说明,当以C语言编写ACS模块时,“malloc”和“free”函数被分别更换成私有函数VA-OS-alloc()和VA-OS-free()。后两个函数使得可以分配文件DataACS中的存储器区域用于在其中写入数据并且随后释放它们。因此这些函数VA-OS-alloc()和VA-OS-free()使得可以使用存储器92的区间114用于管理ACS模块的堆。因此,ACS模块的堆在区间114中被物理局部化。
现将参照图3描述将ACS模块的代码126加载到存储器92中。
最初,在步骤150,终端10开机或重置。
作为响应,在步骤152期间,协处理器100的顺序计数器被初始化。当其被初始化时,其指向协处理器的存储器102中记录的引导代码的第一行指令。因此该第一行对应于顺序计数器的初始缺省值。
因此在阶段154,协处理器100在任何其他软件之前执行引导代码。为此,协处理器100使微处理器99保持不活跃。例如,其将用于重置微处理器99的引脚维持在重置状态。
协处理器100执行引导代码导致执行如下步骤。
在步骤156,协处理器100将引导加载器的代码104和签名106加载在存储器92中。
随后,在步骤158,协处理器100检查加载到存储器92中的代码104的真实性。为此,在步骤158,引导代码具有预定格式,其向协处理器100提供代码104被记录在存储器92中的地址范围的开始和结束地址以及签名106的地址。
检查数据范围的真实性例如如下进行。首先,协处理器将预定的散列函数应用到被指定用于获得数据的第一印记的地址范围中包含的该数据。随后,随后,使用公钥的协处理器100对指定用于获得第二印记的签名解密。随后,协处理器比较第一和第二印记。如果这些印记相同,则数据范围的内容被视为被认证的。否则,该数据范围的内容未被准确认证。为了验证代码104的真实性,协处理器100使用密钥KPubBL。
当数据范围的内容未被准确认证时,终端10被重置并且该方法返回步骤150。
随后在步骤162,如果代码104被适当认证,则协处理器100对微处理器99进行初始化,使得其执行在主存储器中刚被认证的引导加载器。为此,例如,协处理器100将微处理器99的顺序计数器置于物理存储器中的引导加载器的第一指令的地址并且释放微处理器99的重置引脚。
从该时刻起,开始微处理器99执行引导加载器的代码的阶段166。
在最初时,在步骤168,引导加载器配置协处理器100以隐藏存储器92的区间112和114。在该特定情况下,被选择用于隐藏区间112的加密算法比被选择用于隐藏区间114的加密算法更为鲁棒。然而,最鲁棒的加密算法也有用于对数据加密和解密而要执行的大量的指令。因此其执行时间较长。这里,用于隐藏区间112和114的加密元素分别是密钥Koc1和Koc2。
随后,在步骤170,引导加载器将ACS模块的代码126加载到存储器92中。
在操作172,引导加载器用密钥KACS对加载到存储器92中的代码126解密并且将因此解密的可执行代码复制到区间112。典型地,利用密钥KACS的解密操作由协处理器100进行。
由于区间112被隐藏,因此协处理器100使用密钥Koc1对用密钥KACS解密的每条指令加密随后并且将其复制到区间112中。因此,在步骤172结束时,ACS模块的可执行代码通过密钥Koc1以加密形式记录在区间112中。
在步骤176,引导加载器配置协处理器100以将区间112置于动态完整性检查下。为此,区间112的开始和结束地址以及签名130的地址被提供给协处理器100。
在步骤178,因此配置的协处理器100检查区间112中包含的ACS模块的代码的真实性。在每次检查时,协处理器100:
-用密钥Koc1对ACS模块的代码解密,随后
-应用预定散列函数以获得代码126的第一印记,以及最后
-将ACS模块的代码的该第一印记与通过借助于公钥KPubACS对签名130解密而获得的第二印记比较。
如果区间112中的ACS模块的代码不是真实的,则该方法返回步骤150。如果情况相反,则该方法继续。将注意,协处理器100按规则的间隔自动地重新迭代步骤178。只要ACS模块的代码保持加载在92中,这就能确保该代码的真实性。
在步骤180,引导加载器将操作***的代码128加载到区间118中。区间118不同于区间112和114。
在步骤182中,引导加载器配置协处理器100以将区间118置于动态完整性检查下。为此,该区间的开始和结束地址以及签名132的地址被提供给协处理器100。
在步骤184,协处理器100借助于存储器102中存储的公钥KPubOS和签名132检查加载到区间118中的代码128的真实性。由于VMAPPER文件***被并入到代码128中,因此用于检查代码128的真实性的该步骤还使得可以检查VMAPPER文件***的真实性。只要代码128被加载到区间118中,协处理器100就能按预定间隔自动地重新迭代,以便确保代码128的完整性。
如果加载到区间118中的代码128不是真实的,则终端被重置并且该方法返回步骤150。
如果情况相反,则该方法继续到步骤186。在步骤186,引导加载器在将区间112和114以及120的尺寸和位置作为参数传递到主存储器中时,起动操作***的执行。因此,操作***定义了在区间120中,在区间112、114外部且还在区间116外部的用户空间。此后,只要终端没有被重置,即只要没有返回到步骤150,则不使用引导加载器。因此,优选地,为了释放存储器92中的空间,引导加载器的代码被擦除或者使引导加载器的代码占用的空间在写入模式下可用,使得其他应用可以在其中写入信息并且因此擦除所有或部分该代码。
随后开始新的阶段190,其中执行操作***。
在步骤192,操作***加载VMAPPER文件***。该操作的描述是在操作***是Linux2,版本2.6.23的特定情况下进行的。参照该操作***已知的函数和原语进行该描述。这些原语和函数在以下以黑体示出并且将不再详细描述。在该示例中,VMAPPER文件***提供的函数在内核中编译。因此通过内核的初始化激活步骤192。
步骤192开始于VMAPPER文件***中定义的文件***的记录。该文件***通过对函数register_filesystem()的调用被记录在操作***Linux中。
作为函数register_filesystem()的参数传递的结构file_system_type的成员get_sb被置于get_sb_single处。Linux的该通用函数用于声明文件***可以仅被设置一次。这确保了在操作***中仅存在该文件***的一个实例。
随后,设置文件***。为此,在称为V_fill_super()的文件***VMAPPER的代码中定义的函数作为get_sb_single的参数被传递并且随后被调用。
函数V_fill_super()填充super_block型结构并且将该结构的成员s_flags置于值MS_RDONLY并且设置该结构的成员s_op使得该文件***的更新的设置保持在只读模式。
函数V_fill_super()利用函数new_inode创建新的索引节点(inode)。该索引节点表示根目录。
函数V_fill_super()利用函数new_inode创建新的代码。该索引节点对应于区间112并且因此对应于ACS模块。这里,其具有文件名称“LibACS”。在该文件中仅提供读取权利。此外,仅授权对文件LibACS的四个操作:打开、读取、MMAP函数和“release”函数。
在使用时,必须读取包含ACS模块的文件LibACS的一些字节。为此,函数“read”使得能够从Linux操作***读取文件LibACS。在该读取操作期间,借助于函数ioremap使区间112与操作***的该区间的地址范围对应。借助于函数memcpy_fromio复制区间112的开头字节的内容。随后,借助于对函数iounmap的调用消除先前建立的地址的对应关系。这使得能够取回文件LibACS的开头的字节以获得加载ACS模块所需的信息。
最后,加载ACS模块的代码。典型地当用户程序被加载时以及当其声明对文件LibACS的依赖关系时,促使ACS模块的代码的加载。
在步骤194,程序加载器加载用户程序。程序加载器通过调用mmap声明在程序的虚拟空间中存在库LibACS。该调用是在VMAPPER文件***中借助于函数remap_pfn_range实现的。VMAPPER文件***因此使程序加载器为库LibACS保留的虚拟地址范围与复制ACS模块的区间112中的物理地址范围相关联。因此,当用户程序调用ACS模块时,该模块被指示位于主存储器中。因此这并未促成任何页缺陷并且因此未促成操作***的部分上的将代码126加载到区间120的页中的任何尝试。因此,尽管在执行操作***之前,代码126已被加载到主存储器中,但是用户程序仍可以启动该ACS模块的执行,如同其已***作***加载。为此,用户程序调用文件LibACS。
此外,这里ACS模块在动态完整性检查下并且代码被隐藏。因此提高了终端10的安全性。最后,在开始执行操作***之前加载ACS模块的事实确保了即使在操作***中存在安全漏洞,仍加载ACS模块,并且用于保护代码126的机制被适当地设置。
V_fill_super()还利用函数new_inode创建与堆区间对应的新的索引节点。该索引节点具有文件名称“DataACS”并且对应于区间114。在该索引节点中仅授权三个操作,即打开、关闭和MMAP函数。
在ACS模块的执行时,借助于函数VA-OS-alloc()和VA-OS-free()记录ACS模块生成的敏感数据并且从堆读取该数据。这些函数VA-OS-alloc()和VA-OS-free()使得能够分配存储器块并且在文件DataACS中释放它们。因此,ACS模块生成的敏感数据被记录在区间114中并且因此受到保护,因为它们被协处理器100自动地隐藏。
图4提供了ACS模块在处理器90执行时的操作示例的更详细的描述。
在步骤200,ACS模块接收消息ECMi,t。在步骤202,ACS模块将该ECM中包含的访问权利与例如其代码126中包含的预先记录的访问权利比较。如果访问权利不对应于访问授权,则该方法返回步骤200以接收下一消息ECMi,t。如果情况相反,则该方法继续到步骤204。在步骤204,ACS模块提取接收到的消息ECMi,t中包含的密文CW*i,t。在步骤206,ACS模块对密文CW*i,t解密以获得明文模式的控制字CWi,t。为此,例如ACS模块使用处理器90中记录的密钥。在步骤208,该明文模式的控制字CWi,t被传送到协处理器74。
随后,协处理器74使用明文模式的该控制字对加扰的多媒体内容解扰。这使得能够将该加扰的多媒体内容以明文形式显示在屏幕86上。
图5呈现了图3的方法的替选模式。为了实现图5的方法,除了操作***包括修改的VMAPPER文件***以及新的程序加载器VBinLoader之外,终端10与参照图1和2描述的终端相同。这两个功能被集成到操作***的内核的可执行代码中。因此,它们在将操作***加载到区间118中的同时被加载。
VBinLoader功能是被设计用于在需要执行ACS模块时加载调用ACS模块的程序的程序加载器。程序加载器被设计用于将程序的数据置于主存储器中的正确的存储器区间中。该程序加载器能够理解该信息在程序的文件中的位置,即可执行代码、数据和其他元素所在的位置。该程序加载器还能够将程序复制到主存储器中并且初始化寄存器并且起动该程序的执行。
这里,程序加载器VBinLoader并未将ACS模块复制到主存储器中,而是:
-使调用ACS模块的用户程序的虚拟存储器空间中的可执行代码的虚拟地址(区间“文本”)与ACS模块的可执行代码所在的区间112中的地址相关联,
-使用户程序的虚拟存储器空间中的区间“bss”的地址与区间114中的物理地址的范围相关联,以及
-使用户程序的虚拟存储器空间中的栈的地址与区间114中的物理地址范围相关联。
因此,在ACS模块的执行中,必须记录在区间“bss”或栈中的所有数据被自动记录在区间114中并且因此被隐藏。
VMAPPER文件***被简化以仅使文件LibACS的名称与区间112对应。在该实施例中,没有必要使文件DataACS的名称与存储器区间114对应。
此外,修改代码126使得初始化的敏感变量处于只读模式。例如,借助于指令“const”使它们在代码中被声明为常量。
代码126还被修改以将这里称为VTas的大尺寸的变量分配在区间“bss”中。此外,在堆中分配和释放存储器的函数,诸如函数malloc、free,以及ACS模块的代码中使用的其他函数被更换成在为变量VTas保留的存储器区域中分配存储器的函数。因此,即使是ACS模块记录在堆中的数据也受到保护,因为它们被记录在区间114的变量VTas中。这些修改用于保护堆,而没有必要修改操作***以与通常规划的方式不同的方式管理堆。
除了步骤192和194被分别更换成步骤220和222,图5的方法与图3的方法相同。
在步骤220,操作***初始化修改的VMAPPER文件***和程序加载器VBinLoader两者。
在步骤222,当ACS模块的执行被用户程序调用时,程序加载器VBinLoader使为区间“bss”以及为用户程序的虚拟存储器空间中的栈保留的虚拟地址范围与区间114中的地址范围相关联。因此,在ACS模块的执行期间,该模块生成的数据被记录在区间114中并且因此被协处理器100自动隐藏。因此,保持了它们的机密性。
程序加载器VBinLoader还使用户程序的虚拟寻址空间中的ACS模块的地址与区间112的地址相关联。
许多其他实施例是可能的。例如,作为一个变形例,代码126利用密钥Koc1以加密形式记录在非易失性存储器中。因此,引导加载器可以将这样加密的代码直接复制到区间112中。因此在将代码126记录在该区间112之前用密钥KACS对其解密的步骤可以被省略。事实上,由于用密钥Koc1对代码126直接加密,因此该代码已被隐藏,包括在存储器78中。
操作***也可以加密形式存储并且随后被引导加载器解密。
操作***可以在其代码中包含区间112和114的尺寸和位置。因此,当起动操作***时没有必要将这些信息作为参数来传递。
存储器102可以被更换成分布在形成处理器90的集成电路内的几个非易失性存储器。
相似地,协处理器100可以被实现成分布在形成处理器90的集成电路内的几个协处理器的联合的形式。例如,协处理器100可以包括用于隐藏主存储器中的数据的子协处理器以及用于设置数据的动态完整性检查的另一子协处理器。这些子协处理器中的每个可以包括其自身的算术和逻辑单元以便与主微处理器99的指令并行地执行指令。
在另一实施例中,通过使用微处理器99的算术和逻辑单元执行协处理器100的功能全体或者至少一部分。因此在该实施例中,微处理器99执行例如动态完整性检查和/或数据隐藏。为此,相应的功能的代码被加载到存储器92中。如果代码被加载到存储器92中,则必须检查该代码的真实性。该代码的真实性的验证借助于如下信息实现:
-引导代码,或
-引导代码认证的其自身的功能。
事实上,不能从集成电路外部访问引导代码并且引导代码仅在处理器90内执行而不利用外部存储器,使得可以获得高级别的安全性。
区间112和114在主存储器中不一定是连续的。相似地,区间112、114、118、120和116不需要是连续的。这些区间也可以按照与图2中所示不同的顺序展开在存储器92中。
如果协处理器100被更换成能够隐藏不连续的地址范围或者将其置于动态完整性检查下的安全协处理器,则区间112和114没有必要均对应于主存储器中的连续的物理地址范围。
用于验证签名的公钥可以记录在任何存储器中而非仅记录在存储器102中。例如,这些公钥被记录在存储器78中。在后者的情况下,公钥优选地通过私钥签名,该私钥的对应的公钥被记录在存储器102中。
在另一实施例中,不同于使用公钥检查签名,使用密钥。例如,借助于对称密码算法和密钥对代码的冗余加密。
代码104还可以被记录在存储器78中而非存储器94中。相反地,代码126可以被记录在存储器94中而非存储器78中。这些代码104和126还可以在必要时被记录在存储器102中。也可以从存储器94直接执行代码104或126。
在图5的方法中,没有必要覆写或重写ACS模块的代码的函数以使用位于区间114中的堆。事实上,作为变形例,ACS模块的代码以如下方式编写,ACS模块在其执行期间生成的敏感数据被唯一记录在栈中或者区间“bss”中。
上文在ACS模块的特定情况下描述的实施例可以应用于任何如下软件模块,对于该软件模块,期望:
-保证其被正确加载到主存储器中,
-保证其真实性,
-保证处理器真正执行的代码的真实性,而非该代码的复本,和/或
-保持其代码的机密性。
因此,这种加载软件模块的模式可以应用于其他技术领域,诸如数字版权管理(DRM)或防病毒程序的领域。
最后,软件模块的完整性检查可以与该软件模块的代码和数据的隐藏无关地实现。
Claims (15)
1.用于借助于安全处理器将至少一个软件模块的代码加载到主存储器中的方法,其中所述安全处理器执行:
-引导代码,其将引导加载器的代码加载(156)到主存储器中并且随后从所述主存储器起动(162)所述引导加载器的执行,所述引导代码从第一地址开始记录在所述处理器的非易失性只读存储器中,其中在紧接所述处理器的重置之后所述处理器的顺序计数器指向所述第一地址,
-所述引导加载器的代码,用于将多任务操作***的代码加载(180)到所述主存储器中,所述操作***被配置成仅使用所述主存储器的一个减少的地址范围,并且随后从所述主存储器起动所述操作***的执行,
-所述操作***,用于通过所述处理器调度几个用户程序的同时执行,
特征在于
-所述引导加载器在起动所述操作***的执行之前,在所述主存储器的位于所述操作***可用的地址范围外部的地址范围中,还将所述软件模块的代码加载(170)到所述主存储器中,以及
-在起动所述操作***的执行之后,在使用将用户程序的虚拟存储器空间中的软件模块的地址与所述主存储器中的软件模块的物理地址自动关联的所述操作***的特定文件***时,所述操作***将针对所述软件模块的调用从所述用户程序朝向所述主存储器的在起动所述操作***的执行之前所述软件模块的代码被加载到的地址重新路由(194)。
2.根据权利要求1所述的方法,其中在起动所述引导加载器的执行之前,由所述处理器执行的引导代码基于所述引导加载器的代码的签名和密钥来验证(158)所述代码的真实性,并且如果所述代码是真实的,则起动所述引导加载器的执行。
3.根据权利要求2所述的方法,其中:
-在所述引导加载器的执行期间,所述引导加载器配置(176)在所述处理器的集成电路内存在的安全协处理器,使得所述安全协处理器基于与所述软件模块的代码一起提供的签名和密钥来验证所述软件模块的代码的真实性,
-在起动所述操作***的执行之后,所述安全协处理器自动地并且按预定的间隔验证(178)加载的所述软件模块的代码的真实性并且如果所述代码不是真实的,则防止所述软件模块的执行,出于该效果所述协处理器使用其自身的非易失性存储器及其自身的随机存取存储器在没有求助于所述主存储器的情况下执行这种软件模块的代码的真实性的验证,所述非易失性存储器和所述随机存取存储器仅可由所述安全协处理器访问。
4.根据权利要求2或3所述的方法,其中:
-所述引导加载器配置(168)构成所述处理器的集成电路内存在的安全协处理器以隐藏所述主存储器的所述软件模块的代码已被加载到的第一地址范围中记录的指令,所述隐藏包括利用密钥Koc1以加密形式将所记录的软件模块的代码的指令保持在所述地址范围中,以及
-在起动所述操作***的执行之后,在所述第一地址范围中读取的每条指令被所述处理器执行之前,所述安全协处理器利用所述密钥Koc1自动地对该指令解密,出于该效果所述协处理器使用其自身的非易失性存储器及其自身的随机存取存储器在没有求助于所述主存储器的情况下利用所述密钥Koc1执行所述解密,所述非易失性存储器和所述随机存取存储器仅可由安全协处理器访问。
5.根据权利要求4所述的方法,其中所述方法包括利用所述密钥Koc1以加密形式将所述软件模块的可执行代码记录在非易失性存储器中并且所述引导加载器将利用所述密钥Koc1加密的所述的软件模块的代码直接加载到所述主存储器中。
6.根据权利要求2至5中任一项所述的方法,其中:
-所述引导加载器配置(168)所述处理器的集成电路内部存在的安全协处理器以隐藏所述主存储器的第二地址范围中记录的数据,所述隐藏包括对所述数据加密,并且随后
-在所述软件模块的执行(194)期间,在起动所述操作***之后,所述软件模块将数据记录在所述第二地址范围中,以及
-作为响应,在将所述第二地址范围中记录的每条数据置于将所述处理器连接到所述主存储器的数据总线中之前,所述安全协处理器对该数据加密,并且当所述处理器在所述数据总线中接收到所述处理器在所述第二地址范围中读取的每条数据时,在所述处理器使用该数据之前对该数据解密,使得所述主存储器的所述第二地址范围中记录的每条数据以加密的形式唯一存在于构成所述处理器的集成电路的外部,出于该效果所述协处理器使用其自身的非易失性存储器及其自身的随机存取存储器在没有求助于所述主存储器的情况下执行所述加密和所述解密,所述非易失性存储器和所述随机存取存储器仅可由所述安全协处理器访问。
7.根据权利要求2至6中任一项所述的方法,其中:
-在所述引导加载器的执行期间,所述引导加载器配置(182)在所述处理器的集成电路内部存在的安全协处理器,使得所述安全协处理器基于与所述操作***的代码一起提供的签名和密钥来验证所述操作***的加载的代码的真实性,
-在起动所述操作***的执行之后,所述安全协处理器自动地并且按预定的间隔验证所述操作***的代码的真实性,并且如果所述代码不是真实的,则防止所述操作***的执行,出于该效果所述协处理器使用其自身的非易失性存储器及其自身的随机存取存储器在没有求助于所述主存储器的情况下执行这种操作***的代码的真实性的验证,所述非易失性存储器和所述随机存取存储器仅可由安全协处理器访问。
8.根据前述权利要求中任一项所述的方法,其中所述引导加载器将所述软件模块的代码加载(170)到所述主存储器的所述操作***未编页的连续地址范围中。
9.根据前述权利要求中任一项所述的方法,其中在起动所述操作***之后不再执行所述引导加载器的代码,并且只要所述安全处理器没有被重置,情况一直如此。
10.根据前述权利要求中任一项所述的方法,其中所起动的操作***设置所述主存储器的用户子区和一个或更多个大容量存储器之间的虚拟存储器机制。
11.根据前述权利要求中任一项所述的方法,其中所述软件模块包括条件访问库的数据或代码,这些数据或代码能够对ECM(授权控制消息)中存在的控制字的密文解密。
12.用于接收通过控制字CWi,t加扰的加扰的多媒体内容的方法,所述方法包括:
-接收(200)包含所述控制字CWi,t的密文CW*i,t的ECM(授权控制消息);
-将软件模块加载到接收终端的主存储器中,所述软件模块在被通过数据总线连接到所述主存储器的处理器执行时能够对所述密文CW*i,t解密以获得所述控制字CWi,t;
-所述处理器执行所述软件模块以对所述密文CW*i,t解密(200);
-借助于明文形式的控制字CWi,t对加扰的多媒体内容解扰;
特征在于所述方法包括根据前述权利要求中任一项所述的方法来加载所述软件模块。
13.信息记录介质(78,94,102),特征在于所述信息记录介质包括指令,在所述指令被电子安全处理器执行时所述指令实现根据前述权利要求中任一项所述的方法。
14.终端,其配备有:
-主存储器(92),
-安全处理器(90),其采取集成电路的形式,在所述集成电路中实现了能够执行所述主存储器中记录的指令的微处理器(99)、安全协处理器(100)、仅可通过所述安全协处理器访问的非易失性存储器(102)和随机存取存储器(103),所述处理器借助于数据总线连接到所述主存储器,
-多任务操作***的代码(128),当其被所述处理器执行时,能够调度几个用户程序的同时执行,
-引导加载器的代码(104),能够将所述多任务操作***的代码加载到所述主存储器中,被配置成当其被所述处理器执行时,仅使用所述主存储器的一个减小的地址范围并且随后从所述主存储器起动所述操作***的执行,
-所述引导代码的指令,当这些指令被所述处理器执行时,将所述引导加载器的代码加载到所述主存储器中,这些指令从第一地址开始记录在所述协处理器的所述非易失性存储器(102)中,其中在紧接所述处理器的每次重置之后所述处理器的顺序计数器指向所述第一地址,
-一个或更多个非易失性存储器(73,74),其包含软件模块的代码(125),
特征在于
-所述引导加载器(104)还能够在被所述处理器执行时,在起动所述操作***的执行之前,将所述软件模块的代码加载到所述主存储器中的位于所述操作***可用的地址范围外部的所述主存储器的地址范围中,以及
-在操作***已被起动之后,所述操作***(128)能够在被所述微处理器执行时,在使用将用户程序的虚拟存储器空间中的软件模块的地址与所述主存储器中的软件模块的物理地址自动关联的所述操作***的特定文件***时,将针对所述软件模块的调用从所述用户程序朝向所述主存储器的在起动所述操作***的执行之前所述软件模块的代码被加载到的地址重新路由。
15.根据权利要求14所述的终端,其中:
-所述终端包括ECM接收器(70),
-所述软件模块(126)在被所述处理器执行时,能够接收ECM,对所述ECM中包含的密文CW*i,t解密以获得控制字CWi,t,以及
-所述终端包括解扰器,所述解扰器能够借助于通过所述软件模块解密的控制字CWi,t对加扰的多媒体内容解扰。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1061340 | 2010-12-29 | ||
FR1061340A FR2970099B1 (fr) | 2010-12-29 | 2010-12-29 | Procede de chargement d'un code d'au moins un module logiciel |
PCT/EP2011/073144 WO2012089541A2 (fr) | 2010-12-29 | 2011-12-16 | Procede de chargement d'un code d'au moins un module logiciel |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103282913A true CN103282913A (zh) | 2013-09-04 |
CN103282913B CN103282913B (zh) | 2015-11-25 |
Family
ID=44227970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180063784.7A Expired - Fee Related CN103282913B (zh) | 2010-12-29 | 2011-12-16 | 用于加载至少一个软件模块的代码的方法 |
Country Status (8)
Country | Link |
---|---|
EP (1) | EP2659360B8 (zh) |
CN (1) | CN103282913B (zh) |
ES (1) | ES2701030T3 (zh) |
FR (1) | FR2970099B1 (zh) |
PL (1) | PL2659360T3 (zh) |
RU (1) | RU2557459C2 (zh) |
TW (1) | TWI490724B (zh) |
WO (1) | WO2012089541A2 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573522A (zh) * | 2013-10-21 | 2015-04-29 | 深圳市腾讯计算机***有限公司 | 一种漏洞分析方法和装置 |
CN107924433A (zh) * | 2015-09-10 | 2018-04-17 | 高通股份有限公司 | 由受控制的加密密钥管理保护的软件模块的安全进入和退出 |
CN109684089A (zh) * | 2018-12-18 | 2019-04-26 | 创新奇智(广州)科技有限公司 | 一种基于预测模型的任务调度方法、***及电子设备 |
CN110325964A (zh) * | 2017-04-04 | 2019-10-11 | 甲骨文国际公司 | 虚拟配置***和方法 |
CN112069506A (zh) * | 2020-09-16 | 2020-12-11 | 地平线(上海)人工智能技术有限公司 | 一种安全启动方法和装置 |
CN112270010A (zh) * | 2020-11-17 | 2021-01-26 | 上海好连网络科技有限公司 | 可执行文件远程安全加载的方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2632141C2 (ru) | 2015-06-30 | 2017-10-02 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и компьютерное устройство для динамической индексации и загрузки кодов модулей |
CN109211239B (zh) * | 2018-08-30 | 2022-09-16 | 中体彩科技发展有限公司 | 一种关联产品定位*** |
TWI791244B (zh) * | 2019-04-07 | 2023-02-01 | 新唐科技股份有限公司 | 監控系統開機之安全裝置及其方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005050442A1 (fr) * | 2003-11-13 | 2005-06-02 | Stmicroelectronics Sa | Demarrage securise d'un appareil electronique a architecture smp |
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 |
TW200941277A (en) * | 2008-01-30 | 2009-10-01 | Advanced Micro Devices Inc | Computer system including a main processor and a bound security coprocessor |
US20090257595A1 (en) * | 2008-04-15 | 2009-10-15 | De Cesare Joshua | Single Security Model In Booting A Computing Device |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1273996B1 (en) * | 2001-07-06 | 2008-08-06 | Texas Instruments Incorporated | Secure bootloader for securing digital devices |
US7620179B2 (en) | 2004-01-29 | 2009-11-17 | Comcast Cable Holdings, Llc | System and method for security processing media streams |
US7974253B2 (en) * | 2005-03-08 | 2011-07-05 | Qualcomm Incorporated | Methods and apparatus for implementing and using a rate indicator |
US20060211490A1 (en) * | 2005-03-17 | 2006-09-21 | Falvey Grahame M | Security for gaming devices |
US9177176B2 (en) * | 2006-02-27 | 2015-11-03 | Broadcom Corporation | Method and system for secure system-on-a-chip architecture for multimedia data processing |
TW200912634A (en) * | 2007-09-07 | 2009-03-16 | Inventec Corp | Error-detecting system and method |
US8370641B2 (en) * | 2008-05-24 | 2013-02-05 | Via Technologies, Inc. | Initialization of a microprocessor providing for execution of secure code |
-
2010
- 2010-12-29 FR FR1061340A patent/FR2970099B1/fr active Active
-
2011
- 2011-12-16 WO PCT/EP2011/073144 patent/WO2012089541A2/fr active Application Filing
- 2011-12-16 CN CN201180063784.7A patent/CN103282913B/zh not_active Expired - Fee Related
- 2011-12-16 ES ES11799427T patent/ES2701030T3/es active Active
- 2011-12-16 PL PL11799427T patent/PL2659360T3/pl unknown
- 2011-12-16 EP EP11799427.7A patent/EP2659360B8/fr not_active Not-in-force
- 2011-12-16 RU RU2013135237/08A patent/RU2557459C2/ru not_active IP Right Cessation
- 2011-12-28 TW TW100149287A patent/TWI490724B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005050442A1 (fr) * | 2003-11-13 | 2005-06-02 | Stmicroelectronics Sa | Demarrage securise d'un appareil electronique a architecture smp |
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 |
TW200941277A (en) * | 2008-01-30 | 2009-10-01 | Advanced Micro Devices Inc | Computer system including a main processor and a bound security coprocessor |
US20090257595A1 (en) * | 2008-04-15 | 2009-10-15 | De Cesare Joshua | Single Security Model In Booting A Computing Device |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573522A (zh) * | 2013-10-21 | 2015-04-29 | 深圳市腾讯计算机***有限公司 | 一种漏洞分析方法和装置 |
CN104573522B (zh) * | 2013-10-21 | 2018-12-11 | 深圳市腾讯计算机***有限公司 | 一种漏洞分析方法和装置 |
CN107924433A (zh) * | 2015-09-10 | 2018-04-17 | 高通股份有限公司 | 由受控制的加密密钥管理保护的软件模块的安全进入和退出 |
CN110325964A (zh) * | 2017-04-04 | 2019-10-11 | 甲骨文国际公司 | 虚拟配置***和方法 |
CN110325964B (zh) * | 2017-04-04 | 2023-08-22 | 甲骨文国际公司 | 虚拟配置***和方法 |
CN109684089A (zh) * | 2018-12-18 | 2019-04-26 | 创新奇智(广州)科技有限公司 | 一种基于预测模型的任务调度方法、***及电子设备 |
CN109684089B (zh) * | 2018-12-18 | 2020-08-18 | 创新奇智(广州)科技有限公司 | 一种基于预测模型的任务调度方法、***及电子设备 |
CN112069506A (zh) * | 2020-09-16 | 2020-12-11 | 地平线(上海)人工智能技术有限公司 | 一种安全启动方法和装置 |
CN112069506B (zh) * | 2020-09-16 | 2024-02-23 | 地平线(上海)人工智能技术有限公司 | 一种安全启动方法和装置 |
CN112270010A (zh) * | 2020-11-17 | 2021-01-26 | 上海好连网络科技有限公司 | 可执行文件远程安全加载的方法 |
CN112270010B (zh) * | 2020-11-17 | 2024-04-12 | 上海好连网络科技有限公司 | 可执行文件远程安全加载的方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201234210A (en) | 2012-08-16 |
FR2970099A1 (fr) | 2012-07-06 |
EP2659360B8 (fr) | 2018-11-14 |
RU2557459C2 (ru) | 2015-07-20 |
WO2012089541A3 (fr) | 2012-08-23 |
CN103282913B (zh) | 2015-11-25 |
EP2659360B1 (fr) | 2018-09-05 |
FR2970099B1 (fr) | 2013-01-11 |
ES2701030T3 (es) | 2019-02-20 |
PL2659360T3 (pl) | 2019-02-28 |
TWI490724B (zh) | 2015-07-01 |
RU2013135237A (ru) | 2015-02-10 |
WO2012089541A2 (fr) | 2012-07-05 |
EP2659360A2 (fr) | 2013-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103282913B (zh) | 用于加载至少一个软件模块的代码的方法 | |
CN108932297B (zh) | 一种数据查询、数据共享的方法、装置及设备 | |
JP4776611B2 (ja) | デジタルコンテンツの著作権侵害を防止するための方法 | |
CN103210396B (zh) | 包括用于保护敏感代码和数据的架构的方法和装置 | |
KR101081729B1 (ko) | 저작권 침해를 제어하고 쌍방향 컨텐츠를 인에이블시키기 위한 재프로그램가능한 보안 | |
CN1647443B (zh) | 帮助具有多个级别软件的集成***的安全操作的方法和*** | |
EP2820546B1 (en) | Blackbox security provider programming system permitting multiple customer use and in field conditional access switching | |
US8522036B2 (en) | Method for providing access control to media services | |
US8213612B2 (en) | Secure software download | |
US8726038B2 (en) | FPGA apparatus and method for protecting bitstream | |
US20090187769A1 (en) | System and method for an autonomous software protection device | |
TW200832427A (en) | Virtual secure on-chip one time programming | |
US20110083020A1 (en) | Securing a smart card | |
CN112100624A (zh) | 一种固件保护方法、装置及终端设备 | |
CN104506504A (zh) | 一种无卡终端涉密信息的安全机制及安全装置 | |
KR101734663B1 (ko) | 안드로이드 어플리케이션의 역공학 방지 방법 및 이를 수행하는 장치 | |
KR20210060798A (ko) | Cbc 기반의 임베디드 소프트웨어 무결성 보장 시스템 및 그 방법 | |
JP2007013835A (ja) | 暗号化データ復号装置及びその方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151125 Termination date: 20201216 |
|
CF01 | Termination of patent right due to non-payment of annual fee |