可保护代码的系统芯片与系统芯片的代码保护方法与流程

文档序号:11829544阅读:139来源:国知局
本发明是有关于一种信息安全技术,且特别是有关于一种可保护代码的系统芯片与系统芯片的代码保护方法。
背景技术
::近来,各种数字内容已广泛地被提供给用户装置,如电视、电脑及机顶盒等多媒体数据处理装置。数字内容可包括视频文件、音频文件、各种应用程序等等。随着数字内容的积极供应,如何保护数字内容的知识产权也为重要的课题。一般来说,用户的多媒体数据处理装置所接收到的数字信息是经过加密处理的,而多媒体数据处理装置必须利用密钥来解密。此外,为了取得具有知识产权的数字内容,用户通常也需要提供或设定账户或密码等个人信息,让媒体供应商可依据用户权限提供数字内容。显然地,多媒体数据处理装置的系统芯片不只必须经手许多高机密数据,还需要执行许多高级安全等级代码来确保信息安全。因此,现今的多媒体数据处理装置的系统芯片一般配备有专属的安全处理器,以在可信赖的硬件环境之下提供安全的内容传输。然而,恶意程序或骇客仍然可以透过程序设计上的漏洞来驱使安全处理器执行非预期的指令,并进一步导致高机密数据与高级安全等级代码暴露于被窃取与被窜改的风险之中。因此,如何确保这些高机密数据与高级安全等级代码不会被恶意地窃取或篡改实为本领域人员所关心的议题。技术实现要素:有鉴于此,本发明提供一种可保护代码的系统芯片与系统芯片的代码保护方法,可提升高级安全等级代码于运行时期的安全性,从而避免系统芯片的高级安全等级代码被窜改或窃取。本发明提出一种可保护代码的系统芯片,此系统芯片包括存储器、安全处理器以及第一桥接电路。存储器包括主存储器区块与安全存储器区块,而安全存储器区块的代码保护区块储存有高级安全等级代码。安全处理器发出存取请求来存取存储器,以 执行高级安全等级代码。第一桥接电路耦接于安全处理器与存储器之间。若存取请求为指令提取请求,第一桥接电路检查此指令提取请求所对应的指令提取地址是否位于代码保护区块中。若指令提取地址不位于代码保护区块中,第一桥接电路回传空值(null)或错误消息给安全处理器。在本发明的一实施例中,当上述的安全处理器透过第一桥接电路对存储器发出该存取请求,第一桥接电路判断存取请求为指令提取请求或数据读写请求。在本发明的一实施例中,若上述的指令提取地址位于代码保护区块中,第一桥接电路依据指令提取请求从存储器提取高级安全等级代码的指令并执行对应的操作,而指令储存于存储器中的地址为指令提取地址。在本发明的一实施例中,若上述的存取请求为数据读写请求,第一桥接电路判断数据读写请求是否为将数据写入代码保护区块的非法写入请求。若数据读写请求为非法写入请求,第一桥接电路忽略数据读写请求。在本发明的一实施例中,若上述的数据读写请求不为非法写入请求,第一桥接电路依据数据读写请求读写安全存储器区块或主存储器区块。在本发明的一实施例中,上述的系统芯片更包括主处理器以及第二桥接电路。第二桥接电路耦接于主处理器与存储器之间,主处理器具有存取主存储器区块的权限但不具有存取安全存储器区块的权限。在本发明的一实施例中,上述的系统芯片包括只读存储器且安全处理器包括验证单元。只读存储器储存有受保护数据,验证单元对受保护数据进行解密程序而获取高级安全等级代码,并将高级安全等级代码写入至安全存储器区块。在本发明的一实施例中,上述的验证单元更对高级安全等级代码进行签名验证检查。当高级安全等级代码通过签名验证检查,安全处理器设定代码保护区块的存储器位置。在本发明的一实施例中,上述的系统芯片更包括暂存器,当高级安全等级代码通过签名验证检查,安全处理器将代码保护区块的存储器位置写入暂存器。从另一观点来看,本发明提出一种系统芯片的代码保护方法。上述的系统芯片包括存储器以及安全处理器,此存储器包括主存储器区块与安全存储器区块。代码保护方法包括下列步骤。储存高级安全等级代码于安全存储器区块的代码保护区块。依据安全处理器所发出的存取请求来存取存储器。若存取请求为指令提取请求,检查指令 提取请求所对应的指令提取地址是否位于代码保护区块中。若指令提取地址不位于代码保护区块中,回传空值或错误消息给安全处理器。基于上述,在一实施例的代码保护方法中,藉由第一桥接电路监测安全处理器对存储器的存取请求,并进一步判断指令提取地址是否位于代码保护区块内。若指令提取地址不位于代码保护区块中,回传空值或错误消息给安全处理器。如此,可避免安全处理器执行非预期的恶意代码,并确保安全处理器所运行且经过签名验证的高级安全等级代码不会暴露于被窜改或被窃取的风险之中。为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。附图说明图1为依照本发明一实施例所绘的系统芯片的方块图。图2为依照本发明一实施例所绘示的代码保护方法的流程图。图3为依照本发明一实施例所绘示的代码保护方法的范例示意图。图4为依照本发明一实施例所绘示的系统芯片的方块图。图5为依照本发明一实施例所绘示的代码保护方法的流程图。附图标记说明10、20:系统芯片110、210:主处理器120、220:安全处理器130、140、230、240:桥接电路150、250:存储器150a、250a:主存储器区块150b、250b:安全存储器区块151、251:代码保护区快C1、C2:高级安全等级代码160:存储器控制单元31、32、33、38:存取请求35、36:指令37:数据B1:存储器边界270:暂存器280:只读存储器221:验证单元P1:受保护数据S201~S204、S501~S512:步骤具体实施方式本发明藉由安全处理器系透过桥接电路与存储器相互连接的特性,利用桥接电路来检查安全处理器所发出的存取请求。藉由桥接电路来检查安全处理器欲执行的指令是否储存于存储器的一受保护区域内,以避免安全处理器于系统运行时被骇客或恶意程序诱导去执行非预期的指令或恶意程序。为了使本发明之内容更为明了,以下列举实施例作为本发明确实能够据以实施的范例。图1为依照本发明一实施例所绘的系统芯片的方块图。请参照图1,系统芯片(SystemOnChip,SOC)10包括主处理器110、安全处理器(SecurityCPU,SCPU)120、桥接电路130、桥接电路140、存储器150以及存储器控制单元(MemoryManagementUnit,MMU)160。系统芯片10可设置于一多媒体数据处理装置中,上述的多媒体数据处理装置例如是数字机顶盒(SetTopBox,STB)、智能电视(SmartTV)、电视游乐器或DVD播放器等用以接收第三方内容供应者所提供之音频/视频内容的电子装置。主处理器110与安全处理器120可以是由具有运算能力的硬件装置、硬件电路以及暂存器构成。主处理器110负责系统芯片10的大部份运作与一般的数据处理,而安全处理器120负责高级安全敏感性的任务与机密性的数据处理。举例而言,主处理器110可负责电源管理,音效处理或影像处理等通用功能。安全处理器120可管理根密钥(rootkey)、执行首次安全启动、发送第三方内容供应商的机密,发送用户的机密信息、执行数字权限管理(DigitalRightManagement,DRM)或执行浮水印处理等等。简单来说,安全处理器120用以保护高机密的代码与数据。主处理器110耦接桥接电路130,而安全处理器120耦接桥接电路140。于本实施例中,桥接电路130与桥接电路140例如是北桥芯片,但本发明对此并不限制,只要用以连接主处理器110、安全处理器120与存储器150的芯片组都在本发明所涵盖的 范围内。桥接电路130与桥接电路140经由存储器控制单元160耦接至存储器150。于本实施例中,存储器控制单元160提供转换虚拟存储器地址至相对应的实体存储器地址的能力。简单来说,存储器控制单元160用以管理存储器150的实体存储器地址,而主处理器110与安全处理器120透过存储器控制单元160与存储器150沟通。举例而言,于本实施例中,安全处理器120可以是属于ARMV7-a体系结构中的虚拟存储系统架构(VirtualMemorySystemArchitecture,VMSA)。需特别说明的是,虽然本实施例系以存储器控制单元160耦接于主处理器110、安全处理器120与存储器150之间为例说明,但于另一实施例中存储器控制单元160并非为必要,像是安全处理器120也可以是属于ARMV7-a体系结构中的保护存储系统架构(ProtectedMemorySystemArchitecture,PMSA)。存储器150可以是静态随机存取存储器(StaticRadomAccessMemory,SRAM)与动态随机存取存储器(DynamicRadomAccessMemory,DRAM),本发明对此并不限制。存储器150包括主存储器区块150a与安全存储器区块150b。于一实施例中,安全存储器区块150b经配置供安全处理器120进行存取,且主处理器110无法访问安全存储器区块150b。换言之,尽管主处理器110不允许访问安全存储器区块150b,但安全处理器120经配置而具有对安全存储器区块150b进行数据写入与读取的能力。另一方面,主存储器区块150a经配置可供主处理器110与安全处理器120进行存取。换言之,主处理器110与安全处理器120都具有访问主存储器区块150a的能力。即,主处理器110具有存取主存储器区块150a的权限但不具有存取安全存储器区块150b的权限。然而,为了确保安全处理器120运行的代码始终是经过验证的代码,本实施例之安全存储器区块150b经配置而具有代码保护区块151,且代码保护区块151储存有高级安全等级代码C1。安全处理器120可发出存取请求来存取存储器150,以执行高级安全等级代码C1。基此,藉由检查安全处理器120所发出的指令提取请求(instructionfetchrequest)所对应的存储器地址,桥接电路140可判断安全处理器120是否将运行非预期的指令。具体来说,当桥接电路140判定安全处理器120将提取储存于主存储器区块150a之中的指令时,桥接电路140可回传空值(Null)或错误消息给安全处理器120。图2为依据本发明一实施例所绘示的代码保护方法的流程图。请参照图2,本实施例的方式适用于上述实施例中的系统芯片10,以下即搭配图1中的各元件与模组说明本实施例代码保护方法的详细步骤。首先,于步骤S201,安全处理器120储存高级安全等级代码C1于安全存储器区块150b的代码保护区块151。高级安全等级代码C1为涉及高级安全等级之任务的程序码段。举例而言,高级安全等级代码C1例如是涉及利用根密钥进行解密的程序码段或涉及处理第三方内容供应商之机密的程序码段。换句话说,安全处理器120可运行高级安全等级代码C1来利用根密钥进行解密或经手第三方内容供应商之机密。于步骤S202,桥接电路140依据安全处理器120所发出的存取请求(accessrequest)来存取存储器150。于步骤S203,若存取请求为指令提取请求,桥接电路140检查指令提取请求所对应的指令提取地址是否位于代码保护区块151中。于步骤S204,若指令提取地址不位于安全存储器区块150b的代码保护区块151中,桥接电路140回传空值或错误消息给安全处理器120。如此,可避免安全处理器120因为恶意程序的诱导而执行不属于代码保护区块151内的指令,从而确保高级安全等级代码C1内的机密信息不会暴露于被窃取的风险之中。具体来说,图3为依据本发明一实施例所绘示的代码保护方法的范例示意图。请参照图3,存储器150根据存储器边界B1分为主存储器区块150a以及安全存储器区块150b,而安全存储器区块150b更包括储存有高级安全等级代码的代码保护区块151。当安全处理器120发出存取请求31时,桥接电路140判断存取请求31为指令提取请求或数据读写请求。于本范例中,由于存取请求31为指令提取请求,且存取请求31所对应的指令提取地址位于代码保护区块151之中。也就是说,存取请求31所对应的指令35属于高级安全等级代码的其中一个指令。因此,桥接电路140可提取指令35,致使安全处理器120可进而运行指令35来完成高级安全等级的任务。换句话说,若指令提取地址位于代码保护区块151中,桥接电路140依据指令提取请求从存储器150提取高级安全等级代码的指令35并执行对应的操作,而指令35储存于存储器150中的地址为指令提取地址。另一方面,当安全处理器120发出存取请求32时,桥接电路140判断存取请求32为指令提取请求或数据读写请求。于本范例中,由于存取请求32为指令提取请求,但存取请求32所对应的指令提取地址不位于代码保护区块151之中而是位于主存储器区块150a中。也就是说,存取请求32所对应的指令36并不属于高级安全等级代码。因此,桥接电路140不会提取指令36但回传空值或错误消息给安全处理器120,以确保安全处理器120不会运行高级安全等级代码以外的指令。值得一提的是,除了防止安全处理器120运行高级安全等级代码以外的指令,本发明之桥接电路140更可进一步防止安全处理器120将数据写入代码保护区块151,以预防代码保护区块151内的高级安全等级代码被窜改。请参照图3,当安全处理器120发出存取请求33时,桥接电路140判断存取请求33为指令提取请求或数据读写请求。于本范例中,由于存取请求33为数据读写请求,桥接电路140更进一步判断存取请求33是否为将数据写入代码保护区块151的非法写入请求。于图3的范例中,由于存取请求33为将数据37写入主存储器区块150a的数据读写请求,因此桥接电路140可判定存取请求33不为非法写入请求。于是,桥接电路140依据数据读写请求(即存取请求33)将数据37写入主存储器区块150a。相反地,请参照图3,假设存取请求38为数据读写请求,桥接电路140更进一步判断存取请求38是否为将数据写入代码保护区块151的非法写入请求。于图3的范例中,由于存取请求38为将数据写入代码保护区块151的数据读写请求,因此桥接电路140可判定存取请求38为非法写入请求。于是,桥接电路140忽略数据读写请求(即存取请求38),以避免非为高级安全等级代码的数据写入代码保护区块151。换言之,存取请求38所对应的数据写入地址位于代码保护区块151之中,因此桥接电路140将忽略或滤除存取请求38,以进一步避免储存于代码保护区块151中的高级安全等级代码遭到恶意窜改。此外,需要特别说明的是,当安全处理器120所发出的存取请求为读取数据的请求时,桥接电路140可直接依据存取请求所对应的读取地址从主存储器区块150a或安全存储器区块150b读取对应的数据。为了更清楚说明本发明,以下将列举另一实施例来说明如何配置本发明的代码保护区块。图4为依照本发明一实施例所绘示的系统芯片的方块图。请参照图4,系统芯片20包括主处理器210、安全处理器220、桥接电路230、桥接电路240以及存储器250。主处理器210、安全处理器220、桥接电路230、桥接电路240以及存储器250的功能与耦接关系与图1所示的主处理器110、安全处理器120、桥接电路130、桥接电路140以及存储器150相似或相同,于此不再赘述。与前述实施例不同的是,系统芯片20更包括暂存器270以及只读存储器280。于本实施例中,暂存器270设置于桥接电路240之中,但本发明对此并不限制。于另一实施例中,暂存器270可设置于桥接芯片240之外,本发明对此不限制。暂存器270用以储存代码保护区块251的存储器地址范围,好让桥接电路240可据以判断安全处理器220所提取之指令的指令提取地址是否位于代码保护区块251之内。再者,本实施例之安全处理器220更包括验证单元221。只读存储器(ReadOnlyMemory,ROM)280储存有受保护数据P1。受保护数据P1是经过加密处理与数字签名处理的程序码,并储存于只读存储器280之中。换言之,受保护数据P1是一种被烧录于只读存储器280之中且无法被窜改的高机密信息。当安全处理器220启动时,验证单元221对受保护数据P1进行解密程序而获取高级安全等级代码C2,并将高级安全等级代码C2写入至安全存储器区块251。之后,验证单元221对高级安全等级代码C2进行签名验证检查。当高级安全等级代码C2通过签名验证检查,安全处理器220将根据高级安全等级代码C2当前的储存位置来设定代码保护区块251的存储器位置。更进一步来说,当高级安全等级代码C2通过签名验证检查,安全处理器220可将代码保护区块251的存储器位置写入暂存器270。于一实施例中,暂存器270可以是一次性可写入的暂存器。图5为依据本发明一实施例所绘示的代码保护方法的流程图。请参照图5,本实施例的方式适用于上述实施例中的系统芯片20,以下即搭配图4中的各元件与模组说明本实施例代码保护方法的详细步骤。首先,于步骤S501,启动安全处理器220。进一步来说,当安全处理器220接收到电源供应或一启动讯号时,安全处理器220启动并运行安全启动代码以进行一些初始化的动作。之后,于步骤S502,安全处理器220对储存于只读存储器280中的受保护数据P1进行解密程序而获取高级安全等级代码C2,并将解密后的高级安全等级代码C2写入至存储器250的安全存储器区块250b。于步骤S503,安全处理器220对解密后的高级安全等级代码C2进行签名验证检查。于步骤S504,当高级安全等级代码C2通过签名验证检查,安全处理器220设定代码保护区块251的存储器位置并将代码保护区块251的存储器位置写入暂存器270。换言之,受保护数据P1是经过加密处理与数字签名处理的高机密信息,而安全处理器220在启动时解密受保护数据P1和/或进行签名验证检查而获取即将运行的高级安全等级代码C2。简单来说,高级安全等级代码C2是经过数字签名验证的机密程序码。于一实施例中,当安全启动代码校验完高级安全等级代码C2并将高级安全等级代码C2拷贝到代码保护区块251后,将构成代码保护区块251的指定存储器地址写入暂存器270,以启动高级安全等级代码的保护功能。于步骤S505,桥接电路240依据安全处理器220所发出的存取请求来存取存储器250。于步骤S506,桥接电路240判断存取请求是否为指令提取请求。于一实施例中, 安全处理器220可包括指令高速缓存(I-cache)与数据高速缓存(D-cache)。根据存取请求是从安全处理器220的指令高速缓存发出还是从安全处理器220的数据高速缓存发出,桥接电路240可判断存取请求为指令提取请求或数据读写请求。若存取请求为指令提取请求,于步骤S507,桥接电路240检查指令提取请求所对应的指令提取地址是否位于代码保护区块251中。于一实施例中,代码保护区块251可以是介于两个存储器地址之间的一个连续存储器区块,但本发明并不限制于此。于另一实施例中,代码保护区块251可以是由多个存储器地址的划分而产生之多个不连续存储器区块所构成的。于是,若指令提取请求所对应的指令提取地址位于代码保护区块251中,于步骤S508,桥接电路240依据指令提取请求从存储器250提取高级安全等级代码C2的指令并执行对应的操作。相反地,若指令提取请求所对应的指令提取地址位不于代码保护区块251中,于步骤S509,桥接电路240回传空值或错误消息给安全处理器。简单来说,桥接电路240可监督安全处理器220所运行的指令是否为经过数字签名验证的高级安全等级代码C2,以避免安全处理器220受到恶意程序的诱导而将高级安全等级代码C2内的信息移动至不安全的主存储器区块250a之中。另一方面,若存取请求非为指令提取请求(代表存取请求为数据读写请求),于步骤S510,桥接电路240判断数据读写请求是否为将数据写入代码保护区块251的非法写入请求。进一步来说,桥接电路240可根据数据写入请求所对应的写入地址来判断数据读写请求是否为非法写入请求。若数据读写请求非为将数据写入代码保护区块251的非法写入请求,于步骤S511,桥接电路240依据数据读写请求读写存储器250的安全存储器区块250a或主存储器区块250b。相反地,若数据读写请求为将数据写入代码保护区块251的非法写入请求,于步骤S512,桥接电路240忽略数据读写请求。值得一提的是,虽然现今技术存在对存储器的分页(page)进行页属性配置,像是可执行(executable)属性的页属性配置,来确保高级安全等级代码不会被窜改或窃取。然而,一旦存放分页配置的寄存器遭受攻击,则高级安全等级代码还是会暴露于被窃取与被窜改的风险之中。相较之下,本发明的代码保护区块是安全处理器一启动就设定好的指定存储器范围,因此只有代码保护区块内的高级安全等级代码能够被安全处理器执行,而且代码保护区块内的代码也无法被改写。也就是说,透过桥接电路来逐一检查安全处理器将提取的指令是否位于指定范围内,可从硬件的设置上保证了安全处理器执行的代码是代码保护区块内的高级安全等级代码。综上所述,在本发明一实施例中,经过数字签名验证的高级安全等级代码将储存于安全存储器区块的代码保护区块之中,而安全处理器藉由桥接电路的监测与过滤并不会运行储存于代码保护区块之外的指令。除此之外,桥接电路更可滤除掉欲将数据写入代码保护区块的非法写入请求,以确保经过数字签名验证的高级安全等级代码不会被骇客或恶意程序窜改。如此一来,只有指定范围内的高级安全等级代码能够被安全处理器执行,而且指定范围的高级安全等级代码不能被改写,这样就从硬件上保证了安全处理器不会受到恶意程序的诱导而执行非预期的指令,并且确保经过签名验证的高级安全等级代码不会暴露于被窜改或被窃取的风险之中。虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属
技术领域
:中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视后附的权利要求所界定者为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1