CN106529300A - 半导体装置 - Google Patents

半导体装置 Download PDF

Info

Publication number
CN106529300A
CN106529300A CN201610827325.6A CN201610827325A CN106529300A CN 106529300 A CN106529300 A CN 106529300A CN 201610827325 A CN201610827325 A CN 201610827325A CN 106529300 A CN106529300 A CN 106529300A
Authority
CN
China
Prior art keywords
program
address
region
security procedure
circuit
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
Application number
CN201610827325.6A
Other languages
English (en)
Other versions
CN106529300B (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Publication of CN106529300A publication Critical patent/CN106529300A/zh
Application granted granted Critical
Publication of CN106529300B publication Critical patent/CN106529300B/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/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/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/52Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/55Detecting local intrusion or implementing counter-measures
    • 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
    • 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
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Abstract

提供了一种能够任意操作微处理器同时保护安全程序的半导体装置。所述半导体装置包括:存储器,具有存储任意程序的第一程序区域和存储安全程序的第二程序区域;微处理器,输出指定程序中的指令的地址;以及存储器保护单元,基于从微处理器输出的地址来控制对所述存储器的访问。当通过执行所述第一程序区域中的程序而从微处理器输出的地址指定了第二程序区域中的分支允许区域时,存储器保护单元允许对存储器的访问。当所述地址指定了分支禁止区域时,存储器保护单元禁止对存储器的访问。

Description

半导体装置
相关申请的交叉引用
于2015年9月15日提交的日本专利申请No.2015-182140的全部内容,包括说明书、附图和摘要,通过引用合并于本文中。
技术领域
本发明一般地涉及一种半导体装置,且更具体而言,涉及一种具有均建立在单个半导体芯片内的微处理器和电可重写非易失性存储器的半导体装置。
背景技术
包括均建立在单个半导体芯片内的微处理器(以下称作中央处理单元)和电可重写非易失性存储器的半导体装置已知例如为微处理器。即使在要求安全性的产品领域,也经常使用这样的微处理器。当在要求安全性的产品领域中使用微型计算机时,针对安全性的攻击原则上从微型计算机的外部执行。因此为了保护安全性,微型计算机被设置成在抵抗来自其外部的攻击方面变强,但是在对微型计算机中的攻击的抵抗方面通常较弱。
建立在微型计算机中的微处理器例如通过实时操作系统(以下称作RTOS)来操作,并且在该RTOS上操作应用程序。在这种情况下,为了保护RTOS以免失去对应用程序的控制,尝试产生异常中断,并且在特许模式下操作RTOS。因此,即使使得应用程序在微型计算机内恶意运行,也可以保护RTOS。但是出现的问题在于,微型计算机对这种攻击的抵抗较弱,使得重复地产生电源噪声等。
作为一种涉及计算机系统的保护的技术,已经存在例如专利文件1中描述的技术。
[现有技术文件]
[专利文件]
[专利文件1]日本未审专利公开No.2007-304954
发明内容
本发明人想到了一种销售半导体装置的新的商业模型。尽管在下文中将详细描述新的半导体装置商业销售模型,此处将描述新的半导体装置商业销售模型的概要以便解释要解决的问题。
在新的半导体装置商业销售模型中,将其安全性应被确保的程序(以下称作安全程序)例如RTOS提前存储在微型计算机的非易失性存储器中并且销售。也就是,安全程序被提供给使用例如微型计算机的半导体装置的用户。购买了微型计算机的用户生成例如在RTOS上运行的用户程序,并且将其存储在非易失性存储器中。在这种情况下,由于用户可以利用RTOS中提供的功能来生成用户程序,因此变得容易生成用户程序。结果,用户能够容易地制作具有用户希望的功能的微型计算机(半导体装置)。
在这种情况下,销售(提供)微型计算机的人(以下也称作“提供商”)销售微型计算机时,将例如RTOS的程序的价值添加到微型计算机的价值中作为销售价格,该微型计算机内建有未存储如RTOS的程序的非易失性存储器。因此,提供商能够增加利润,并且用户可以容易地使用微处理器以生成用户程序。变得可以容易地获得具有希望功能的微型计算机。也就是,为提供商和用户二者产生了价值。
在所述半导体装置商业销售模型中,用户生成在RTOS上运行的程序。也就是,用户生成适合于操纵在微型计算机中建立的微处理器的程序。因此,需要微型计算机支持从用户的程序对包括在RTOS中的功能的任意调用。
此处,由于用户能够生成适合于任意操纵微处理器以及对RTOS功能进行任意访问的程序,所以出现了新的问题。例如,担心用户也能够生成拷贝RTOS的这样的用户程序,即入侵程序。当恶意拷贝RTOS时,例如也可能购买便宜的微型计算机,并且将拷贝的RTOS存储在所述微型计算机中。这将导致对提供商的价值丢失的事实。
在专利文件1中描述了一种涉及计算机系统的技术,能够防止由于缓冲器溢流攻击等造成的对存储区域中的机密数据的删除、篡改、泄漏等。即,专利文件1的图1所示的计算机系统(1)被设置有存储器映射电路(15)和访问权限确定电路(16),在存储器映射电路(15)中存储访问控制存储器映射,向所述映射设置用于存储区域(19)中每个地址的CPU(10)的程序执行的访问权限的存在/不存在。访问权限确定电路(16)基于访问控制存储器映射来确定CPU(10)对由程序计数器(20)指定的执行程序存储地址(Spc)的存储区域的访问权限的存在/不存在。在不存在访问权限时,访问权限确定电路(16)输出访问禁止信号(SC),其使CPU(10)执行禁止从CPU(10)对执行程序存储地址的存储区域的访问的预定处理。
因此,可以保护计算机系统免受通过从计算机系统(1)的外部例如电源噪声进行攻击而造成CPU失控的攻击。
然而,这涉及针对来自计算机系统外部的攻击的技术,且并不旨在针对可以任意操作作为微处理器的CPU的攻击。不用说,也没有描述新的半导体商业销售模型。
根据本发明一个方面的半导体装置包括:存储器,包括存储任意程序的第一程序区域和存储其安全性要被确保的程序的第二程序区域;中央处理单元(微处理器),输出指定程序中的指令的地址;以及存储器保护单元,基于从中央处理单元输出的地址来控制对存储器的访问。当通过执行第一程序区域中的程序而从中央处理单元输出的地址指定了第二程序区域中的第一区域时,存储器保护单元允许中央处理单元对存储器的访问。当所述地址指定与第一区域不同的第二区域时,存储器保护单元禁止中央处理单元对存储器的访问。
即,当第一程序区域中的任意程序访问其中存储了其安全性应被确保的程序的第二程序区域中的第一区域时,其访问被允许。当第二程序区域中的第二区域被访问时,其访问被禁止。结果,使得可以防止任意程序使用其安全性应被确保的程序并且保护其安全性应被确保的程序。
另外,根据本发明另一方面的半导体装置包括:电可重写非易失性存储器,在其中存储了其安全性要被确保的程序;中央处理单元,输出指定要执行的指令的地址;以及存储器保护单元,检测从中央处理单元输出的地址是否指定在非易失性存储器内存储程序的安全程序区域。此外,所述半导体装置包括:非易失性存储器重写控制电路,控制非易失性存储器的重写;以及非法访问检测电路。这里,非法访问检测电路使非易失性存储器重写控制电路在存储器保护单元检测到从中央处理单元输出的地址没有指定安全程序区域的内部时禁止重写。
因此,当中央处理单元没有执行安全程序区域中的程序时,禁止了电可重写非易失性存储器的重写。换句话说,当在执行用户程序的非安全程序区域中执行程序时,禁止电可重写非易失性存储器的重写。结果,使得可以重写其安全性要被确保的程序。此外,可以保护安全程序区域中的程序免受非安全程序区域中的程序的重写。
此外,在本发明的又一方面中,提供一种半导体装置,其中将其安全性要被确保的程序加密且形成在半导体芯片中。此处,所述半导体装置被设有:电可重写非易失性存储器;中央处理单元,耦合到所述非易失性存储器且能够执行在其中写入的程序;解密电路,对利用加密提供的程序进行解密;以及重写电路,将解密电路解密的程序直接写入到非易失性存储器中。
由此,因为即使当使得用户程序可以任意操作中央处理单元时解密程序也被直接写入到非易失性存储器,所以可以保护程序。
根据本发明的一个方面,可以提供一种能够任意操作中央处理单元同时保护安全程序的半导体装置。
附图说明
图1是示出根据第一实施例的半导体装置商业销售模型的配置的系统图;
图2是示出根据第一实施例的微型计算机的配置的框图;
图3是示出根据第一实施例的存储器保护单元的配置的框图;
图4是用于描述存储器的保护的解释性示图;
图5是安全程序的典型示图;
图6是用于描述根据第一实施例的通过存储器保护单元的存储器保护的解释性示图;
图7A和7B分别是示出根据第一实施例的拾取开始地址监视电路和拾取地址比较电路的配置的框图以及示出安全程序区域的解释示图;
图8A至8D分别是示出根据第一实施例的存储器保护单元的操作的时序图;
图9A至9D分别是示出根据第一实施例的存储器保护单元的操作的时序图;
图10是示出根据第一实施例的存储器保护单元的操作的表;
图11是用于描述根据第一实施例的改型的存储器保护单元的存储器保护的解释示图;
图12是示出根据第二实施例的快闪存储器中存储的数据的布局的布局图;
图13是示出根据第二实施例的微型计算机的配置的框图;
图14是示出根据第二实施例的非法访问检测电路的配置的框图;
图15是示出根据第三实施例的微型计算机的配置的框图;
图16是示出根据第四实施例的微处理器的配置的框图;
图17是示出微处理器的操作的流程图;
图18是示出根据第四实施例的微处理器的操作的流程图;
图19是示出根据第四实施例的微处理器的另一配置的框图;以及
图20是示出根据第四实施例的微处理器的另一操作的流程图。
具体实施方式
此后将基于附图详细描述本发明的实施例。另外,在用于描述实施例的所有附图中,原则上相同的附图标记分别用于相同的部分,并且原则上省略对其重复描述。
(第一实施例)
<半导体装置商业销售模型>
虽然以下将描述多个实施例,但是在各个实施例中要描述的半导体装置分别根据本发明人设想的新的商业销售模型来销售。此处,将首先进行关于本发明人设想的半导体装置商业销售模型的描述。
图1是示出根据实施例的半导体装置商业销售模型的配置的系统图。在同一附图中,附图标记100表示半导体装置商业销售模型。虽然没有具体示出,但半导体装置商业销售模型100包括:提供商PRD、用户USR和提供程序的第三方OTH。
提供商PRD向用户USR销售微型计算机LSI。在微型计算机LSI中,通过已知的半导体制造方法将多个电路块形成在单个半导体芯片中。形成在半导体芯片中的电路块都包括电可重写非易失性存储器FRM、根据写入到非易失性存储器FRM中的程序而操作的微处理器(此后也称作中央处理单元)CPU以及许可管理单元RCNT。微型计算机LSI可以由提供商PRD制造。可替选地,微型计算机LSI可以由没有示出的半导体制造商生产并且由提供商PRD销售。
提供商PRD具有存储了多种类型程序的服务器P-SV。存储在服务器P-SV中的程序包括在执行程序时需要授权许可的非免费程序以及在执行时不需要授权许可的免费程序。在提供商PRD向用户USR销售微型计算机LSI时,提供商PRD将一个或多个类型的程序写入到微型计算机LSI的非易失性存储器FRM中。此处将与非免费程序对应的RTOS的程序描述为被写入到非易失性存储器FRM中。当对与非免费程序对应的RTOS的程序非法地执行拷贝等时,许可费不被恢复。因此,RTOS的程序对应于其安全性应被确保的程序,即安全程序。
当提供商PRD将微型计算机LSI销售给用户USR时,提供商PRD将在授权与非免费程序对应的RTOS的许可时所需的许可费(许可酬劳)添加到处于没有程序写入到非易失性存储器FRM的状态的微型计算机LSI的价值中,并且确定其中RTOS的程序被写入到非易失性存储器FRM中的微计算机的价值(销售价格)。另外,其中RTOS的程序被写入到非易失性存储器FRM中的微型计算机的销售价格随着促销等而波动。
用户USR通过支付虚线所示的包括用于RTOS的程序的许可费的价值,购买具有在其中预先写入有RTOS的程序的非易失性存储器FRM的微型计算机LSI。虽然没有具体示出,但用户USR具有服务器U-SV。服务器U-SV例如通过网络NTW耦合到提供商PRD的服务器P-SV和/或第三方OTH的服务器O-SV。用户USR通过网络NTW从提供商PRD的服务器P-SV和/或第三方的服务器O-SV下载非免费程序和/或免费程序,并将其存储在服务器U-SV中。例如,用户USR将用户USR自身生成的用户程序U-AP和存储在服务器U-SV中的程序O-AP写入到购买的微型计算机LSI的非易失性存储器FRM中,使得通过购买的微型计算机LSI实现希望的功能。
在这种情况下,用户程序U-AP和来自服务器U-SV的程序O-AP被生成,以便在RTOS的程序上运行。例如,生成用户程序U-AP和程序O-AP,使得有效地使用RTOS的程序中的子程序。微处理器CPU执行存储在非易失性存储器FRM中的程序O-AP、用户程序U-AP和RTOS的程序,使得通过微型计算机LSI实现用户USR的希望功能。
当生成用户程序U-AP时,用户生成它以便利用RTOS的程序。因此,可以减少在生成用户程序U-AP时用户USR的负担。
在本实施例中,虽然没有具体限定,但微型计算机LSI被设有许可管理单元RCNT。当微型计算机LSI被销售给用户USR时,提供商PRD将与用户USR希望的许可数目一致的许可信息写入到非易失性存储器FRM中并进行销售。在这种情况下微型计算机LSI的销售价格还包括与用户希望的许可数目相对应的许可费。
当用户USR写入程序到非易失性存储器FRM中时,许可管理单元RCNT确定要写入其中的程序是否是非免费程序。当确定要写入的程序是非免费程序时,许可管理单元RCNT参考预先存储在非易失性存储器FRM中的许可信息并由此确定许可数目是一个还是更多。如果许可数目是一个或更多,则许可管理单元RCNT将程序写入到非易失性存储器FRM。如果许可数目是小于1,则许可管理单元RCNT禁止将程序写入到非易失性存储器FRM。此外,当程序被写入到非易失性存储器FRM时,许可管理单元RCNT升级存储在非易失性存储器FRM中的许可信息表示的许可数目,使得许可数目减少1。
在本实施例中,许可费在购买微型计算机LSI时预付。用户USR能够在非易失性存储器FRM中安装非免费程序并且执行它直到预付许可费不足。因此,由于预付了许可费,可以防止许可费不被恢复,并且许可费的支付管理也变得容易。
虽然此处示出了其中在销售前提供商PRD将与用户USR希望的许可数目一致的许可信息写入至非易失性存储器FRM的例子,但是本实施例不限于此。例如,提供商PRD可以提供其中写入与预先确定的许可数目一致的许可信息的微型计算机LSI。
虽然示出了销售微型计算机LSI的半导体装置商业销售模型,但是要销售的半导体装置不限于微型计算机LSI。
<微型计算机的配置>
图2是示出根据第一实施例的微型计算机LSI的配置的框图。如图1所示,微型计算机LSI包括通过已知的半导体制造技术形成到单个半导体芯片中的多个电路块。图2示出了上述电路块中的一些。即,只示出了在描述本实施例时需要的电路块。例如,省略了图1中描述的许可管理单元RCNT等。此外,在图2所示的微型计算机LSI中,所谓的快闪存储器被用作电可重写非易失性存储器FRM。另外,与图1中所示的非易失性存储器相同的附图标记FRM被附于快闪存储器。
从提供商PRD销售给用户USR的微型计算机LSI的状态如图2所示。即,示出从用户USR给提供商PRD的支付以及从提供商PRD购买的微型计算机LSI的状态,包括了用于实时操作系统(RTOS)的程序的价值。因此,微型计算机LSI处于RTOS的程序被写入其中且存储在快闪存储器FRM中的状态。此外,图2示出了其中微型计算机LSI通过网络NTW耦合到提供商PRD的服务器P-SV来执行写入到快闪存储器FRM的程序(例如RTOS的程序)的版本升级。另外,用户USR的服务器U-SV在图2中省略以避免复杂的附图。
在图2中,附图标记200表示通信功能电路,附图标记201表示加密/解密功能电路,附图标记202表示快闪存储器重写电路,附图标记203表示易失性存储器,附图标记204表示存储器保护单元,附图标记205表示总线,附图标记206表示信号布线。
通信功能电路200执行微型计算机LSI的内部和外部之间的数据的发送/接收。例如,通信功能电路200从微型计算机LSI的外部接收升级的程序(软件)并将其存储在其中。加密/解密功能电路201对加密程序解密并将其转换成未加密的程序(解密程序)。快闪存储器重写电路202将提供的数据例如程序写入到快闪存储器FRM中。易失性存储器203例如包括静态存储器或动态存储器,且在其中暂时存储如程序的数据。虽然后面将详细描述存储器保护单元204,但是存储器保护单元204基于来自快闪存储器FRM的信息以及来自微处理器(中央处理单元)CPU的信息来控制从微处理器CPU对存储器(快闪存储器FRM和易失性存储器203)的访问。
例如,为了执行存储在快闪存储器FRM中的程序的版本升级,微型计算机LSI耦合到网络NTW,使得升级的程序被下载到微型计算机LSI中。在该下载时,程序变为容易被盗取的状态。因此下面将关于该下载时的操作进行描述。
程序已经被加密。因此,即使程序从服务器P-SV被盗取,也不能执行程序。类似地,在程序被下载时,即使在通过网络NTW传递时,程序也已经被加密。因此,即使程序被盗取也不能执行程序。
当程序经由网络NTW提供到微型计算机LSI时,通信功能电路200接收与程序对应的数据并且存储在其中。接着,微处理器CPU通过总线205从通信功能电路200接收作为程序的数据并通过总线205将其传递给易失性存储器203。由于存储在易失性存储器203中的程序已经被加密,微处理器CPU接着通过总线205将存储在易失性存储器203中的加密的程序传递给加密/解密功能电路201。加密/解密功能电路201释放程序的加密并且将其转换为未加密的程序。微处理器CPU通过总线205将未加密的程序传递给易失性存储器203。
此后,微处理器CPU将通过总线205将存储在非易失性存储器203中的未加密的程序传递给快闪存储器重写电路202。快闪存储器重写电路202将提供的未加密的程序写入到快闪存储器FRM中。因此,例如,版本升级的程序被存储在快闪存储器FRM中。微处理器CPU读取和执行存储在快闪存储器FRM中的版本升级的程序。
通过以上操作的描述可以理解,当程序被下载和写入到快闪存储器FRM中时,在加密/解密功能电路201、快闪存储器重写电路202、易失性存储器203和微处理器CPU中出现了其中未加密的程序存在的时段。此外,即使在快闪存储器FRM中也存在未加密的程序。因此,需要在未加密的程序存在的时段期间针对未加密的程序的盗取进行保护。存在于快闪存储器FRM中的未加密的程序也需要被保护以免被盗取。
在第一实施例中,注意到以下事实:只有微处理器CPU具有访问诸如易失性存储器203、快闪存储器FRM等存储器的功能。通过存储器保护单元204提供了对于微处理器CPU可以获得访问的区域的限制。在这种情况中,指定所述区域的信息通过信号布线206而没有介入总线205被直接从快闪存储器FRM传送到存储器保护单元204。
另外,在图2中,分别提供在微处理器LSI侧边的管脚通常表示微处理器LSI的外部端子(管脚)。
<存储器保护单元的配置>
接着将利用图3来描述存储器保护单元204的配置。图3是示出根据第一实施例的存储器保护单元的配置的框图。为了便于描述,微处理器CPU和快闪存储器FRM也被示出在同一附图中。
程序包括多个指令。微处理器CPU输出指定程序指令中要执行的指令的地址。即,微处理器CPU具有程序计数器。指定要执行的指令的地址通过程序计数器来形成。在图3中,通过程序计数器形成的地址,即,指定要执行的指令的地址,被示出作为PC地址306。此外,要输入到微处理器CPU/从微处理器CPU输出的数据在附图标记307指定。
在第一实施例中,当提供商PRD将其安全性应被确保的程序写入到快闪存储器(非易失性存储器)FRM中并且进行微处理器的销售时,提供商PRD将安全地址信息304写入到快闪存储器FRM并且进行销售,所述安全地址信息304指定其中存储有其安全性应被确保的程序(安全程序)的快闪存储器FRM的程序区域。此外,此时提供商PRD将安全数据信息305写入到快闪存储器FRM,所述安全数据信息305指定易失性存储器203(图2)中存储其安全性应被确保的数据(安全数据)的数据区域。
由于RTOS的程序是非免费程序,所以其是安全程序。因此,当RTOS的程序运行时,用于指明其中写入有RTOS的程序的快闪存储器FRM的程序区域的安全地址信息304以及用于指明其中存储了其安全性应被确保的数据的易失性存储器203的数据区域的安全数据信息305被写入到快闪存储器FRM。在提供商PRD销售微处理器LSI之前以类似于RTOS的程序的方式执行安全地址信息304和安全数据信息305的写入。
不需要确保安全性的任意程序(非安全程序)例如非免费程序和用户程序U-AP,被写入到与安全地址信息304指明的快闪存储器FRM的程序区域不同的程序区域中。类似地,不需要确保安全性的数据(非安全数据),例如在非免费程序和用户程序U-AP运行时生成的数据,被存储在与安全数据信息305指明的易失性存储器203的数据区域不同的数据区域中。
当其中写入有非安全程序的快闪存储器FRM的程序区域被设定为第一程序区域时,其中写入有安全程序的快闪存储器FRM的程序区域可以被设定为第二程序区域。当这样设定时,第二程序区域通过安全地址信息304来指明。另一方面,没有通过安全地址信息304指明的快闪存储器FRM的程序区域变为第一程序区域。当然,快闪存储器FRM的第一程序区域可以通过非安全地址信息来指明。
类似地,当其中存储有非安全数据的易失性存储器203的数据区域被设定为第一数据区域时,其中存储有安全数据的易失性存储器203的数据区域被设定为第二数据区域。即使在这样设定时,第二数据区域通过安全数据信息305来指明。另一方面,没有通过安全数据信息305指明的易失性存储器203的数据区域变为第一数据区域。当然,易失性存储器203的第一数据区域可以通过非安全数据信息来指明。
没有通过总线205而是通过图2所示的信号布线206将安全地址信息304和安全数据信息305直接从快闪存储器FRM供给到存储器保护单元204。
存储器保护单元204被设有拾取开始地址监视电路300、拾取地址比较电路301和存储器访问控制电路303。拾取开始地址监视电路300和拾取地址比较电路301分别被供给有来自微处理器CPU的PC地址306和来自快闪存储器FRM的安全地址信息304。将在此处描述拾取开始地址监视电路300和拾取地址比较电路301的概述,因为在后面将利用图7等来描述它们的一个例子。
拾取地址比较电路301比较PC地址306和安全地址信息304,并且输出选择信号,所述选择信号表示PC地址306是否指定由安全地址信息304指定的第二程序区域的内部。在第一实施例中,快闪存储器FRM的除了安全地址信息304指定的第二程序区域以外的程序区域被定义为非安全程序区域。因此,当PC地址306指定安全程序区域(第二程序区域)的内部时,从拾取地址比较电路301输出的选择信号可以被设定为指定安全程序区域的安全程序区域信号。当PC地址306指定非安全程序区域(第一程序区域)的内部时,选择信号可以被设定为指定非安全程序区域的非安全程序区域信号。
例如,当从拾取地址比较电路301输出的选择信号表示安全程序区域时,微型计算机LSI被配置成确保安全性,由此使得可以防止安全程序被盗取。
考虑将安全地址信息304设置成例如预定值且保持不变。在这种情况下,当存储在快闪存储器FRM中的安全程序被改变或当在用户USR购买微型计算机LSI之后改变安全程序时,变得难以改变安全程序区域。当安全程序区域不能被改变时,例如在安全程序的大小增加的情况下变得难以确保安全性。
例如,为了使得可以在用户USR购买微型计算机LSI之后改变安全地址信息304,安全地址信息304被考虑存储在诸如寄存器的易失性存储器中。在这种情况下,如果用户不能操纵微型计算机LSI中的微处理器CPU,则用户USR难以操作其中存储有安全地址信息304的寄存器。结果,安全程序区域可以被改变同时保证安全性。
然而,在第一实施例中,用户USR在购买微型计算机LSI之后例如生成用于操纵微处理器CPU的用户程序U-AP。即,用户USR能够操纵微处理器CPU。为此,用户USR能够生成操作诸如其中具有安全地址信息304的寄存器之类的易失性存储器的软件(非安全程序)。改变存储在寄存器中的安全地址信息304使得可能盗取安全程序。
在第一实施例中,安全地址信息304和安全数据信息305在提供商PRD销售微型计算机LSI之前被写入到电可重写快闪存储器FRM中。因此,与安全程序对应的安全地址信息304和安全数据信息305可以被写入到快闪存储器FRM中。此外,即使在销售微型计算机LSI之后,提供商PRD也能够根据需要来改变安全地址信息304和安全数据信息305。存储在快闪存储器FRM中的安全地址信息304和安全数据信息305也能够确保安全性,因为它们不会被用户USR生成的软件(非安全程序)改变。
此外,在第一实施例中,安全地址信息304和安全数据信息305通过与总线205不同的信号布线206从快闪存储器FRM提供到存储器保护单元204。因而,虽然用户USR操纵微处理器CPU,但是可以防止安全地址信息304和安全数据信息305被用户USR读取。
拾取开始地址监视电路300响应于来自拾取地址比较电路301的安全地址信息304、PC地址306和选择信号来输出安全数据访问允许信号302。
在第一实施例中,用户程序U-AP等在RTOS的程序上运行。由于用户程序U-AP等由用户USR生成,其对应于非安全程序且被写入到快闪存储器FRM的非安全程序区域。由于用户程序U-AP在RTOS的程序上运行,从用户程序U-AP执行RTOS的程序的调用。
RTOS的程序包括用于实现彼此不同的功能的多个子程序。用户程序U-AP从子程序中调用用于实现期望功能的子程序。此处的子程序的调用通过分支来完成。即,产生了将作为非安全程序的用户程序U-AP分支到从包括在RTOS的程序中的子程序中选择的子程序的操作。虽然,后面将利用图5等来描述一个例子,但是问题出现了:监视PC地址306是否指定安全程序区域的内部的配置对于在从非安全程序到安全程序的分支处的攻击的抵抗较弱。
虽然下面将使用图7等来描述拾取开始地址监视电路300,但是当从非安全程序分支到安全程序时,拾取开始地址监视电路300确定分支目的地地址是否指定允许拾取的分支允许区域(第一区域)的内部。如果分支目的地地址指定分支允许区域,则微处理器CPU例如基于安全数据访问允许信号302来允许对快闪存储器FRM中的安全程序区域的访问。由此,执行了针对从非安全程序到安全程序的分支处的攻击的保护。
响应于来自快闪存储器FRM的安全数据信息305、安全数据访问允许信号302、PC地址306和输入/输出数据307,存储器访问控制电路303输出访问信号308至快闪存储器FRM和易失性存储器203。即,当安全数据访问允许信号302允许对存储器的访问时,存储器访问控制电路303将与PC地址306对应的地址信号输出至存储器(快闪存储器FRM、易失性存储器203)并且允许在地址信号指定的存储器中的地址与微处理器CPU之间的发送/接收。另一方面,当安全数据访问允许信号302禁止对存储器的访问时,存储器访问控制电路303禁止存储器和微处理器CPU之间的数据307的发送/接收。
<攻击例子>
图4是用于描述使用图3所示的拾取地址比较电路301和存储器访问控制电路303来保护存储器的解释性示图。即,图4示出了存储器保护单元未设有图3所示的拾取开始地址监视电路300的情况。
在第一实施例中,非安全程序和安全程序存储在快闪存储器FRM中,且非安全数据和安全数据存储在易失性存储器203中。指定其中存储有安全程序的安全程序区域的安全地址信息304以及指定其中存储有安全数据的安全数据区域的安全数据信息305被存储在快闪存储器FRM中。
快闪存储器FRM的区域(空间)通过安全地址信息304被分成其中存储有非安全程序的非安全程序区域和其中存储有安全程序的安全程序区域。此外,易失性存储器203的区域(空间)通过安全数据信息305被分成其中存储有非安全数据的非安全数据区域和其中存储有安全数据的安全数据区域。
非安全程序和安全程序都是二进制信号且可以被认为是数据。因此,在图4中,其中存储有非安全程序的非安全程序区域和其中存储有非安全数据的非安全数据区域一起被示为非安全数据区域。类似地,其中存储有安全程序的安全程序区域和其中存储有安全数据的安全数据区域在图4中一起被示为安全数据区域。在本说明书中,除非另有具体描述,否则非安全数据表示非安全程序和非安全数据二者,安全数据表示安全程序和安全数据二者。
在图4中,将针对以下情况作为例子进行描述:其中,非安全数据区域是其中存储有非安全程序的非安全程序区域,安全数据区域是其中存储有安全程序的安全程序区域。
当PC地址306指定安全程序区域的内部时,即,当安全程序执行时,从拾取地址比较电路301输出的选择信号被供给到存储器访问控制电路303作为安全程序区域信号。当PC地址306指定安全程序区域的内部时,存储器访问控制电路303响应于安全程序区域信号来允许微处理器CPU访问安全数据区域(安全程序区域)和非安全数据区域(非安全程序区域)二者。即,即使通过PC地址306指定了安全数据区域和非安全数据区域中的任意一个,数据307的发送/接收也是可能的。因此,如图4所示,允许从布置在安全程序区域中的安全程序对非安全数据区域和安全数据区域二者的访问(这将被称作访问允许)。
另一方面,当PC地址306指定在安全程序区域以外的非安全程序区域的内部时,从拾取地址比较电路301输出的选择信号变为指定非安全程序区域的非安全程序区域信号。当选择信号是非安全程序区域信号时,存储器访问控制电路303允许微处理器CPU获得对非安全数据区域的访问,且禁止其对安全数据区域的访问。即,在这种情况下,当PC地址306指定非安全数据区域的内部时,允许数据307的发送/接收。当PC地址306指定安全数据区域的内部时,禁止数据307的发送/接收。因此,如图4所示,允许从布置在非安全程序区域中的非安全程序对非安全数据区域的访问(这将被称作访问允许),而禁止对安全数据区域的访问(称作访问禁止)。
当在安全程序区域中布置的安全程序中存在安全漏洞时,入侵程序被置于非安全程序区域中且由微处理器CPU执行,由此使得可以盗取存储在安全数据区域中的数据(程序)。也就是,在作为非安全程序执行的入侵程序处,其分支到图4中被示为安全漏洞的地址。利用这个分支,其中存在安全漏洞的安全程序被运行。由于入侵程序是安全程序,对安全数据区域的访问被允许,使得存储在安全数据区域中的安全数据(程序)例如可以被存储在微处理器CPU中的电阻器等中。这种安全数据(程序)在被存储在寄存器中的状态下从安全程序被返回到作为非安全程序的入侵程序。通过在返回时读取寄存器的内容,可以盗取安全数据(程序)。在图4中,攻击所产生的分支以及对存储器(快闪存储器FRM)的访问被示出为入侵。
虽然此处描述了安全数据区域是安全程序区域,但是即使在安全数据区域是易失性存储器203中的安全数据区域的情况下,也可以类似地盗取存储在易失性存储器203中的安全数据。
<安全漏洞的例子>
图5是示出其中存在安全漏洞的安全程序的例子的典型示图。RTOS的程序存储在快闪存储器FRM的安全程序区域中。如上所述,RTOS的程序具有子程序。图5示出了子程序中的存在安全漏洞的子程序的例子。
子程序通过来自主程序(或更高级程序)的分支来调用。即,在主程序中,PC地址306的值被定义为用于指定图5中示为开始地址的地址的值。因此,采用图5所示的从主程序到子程序的分支。如果描述了其一个例子,在主程序中存储具有被定义为分支目的地地址的开始地址的分支指令。该分支指令由微处理器CPU来执行以实现分支。
在子程序中,存储在由开始地址指定的地址处的指令Ex-A首先被执行。在执行指令Ex-A的情况下,例如,在主程序处理中使用的寄存器等的值被保存到由堆栈指针(没有示出)指定的堆栈区域中。接着,PC地址306的值顺序地从开始地址改变至结束地址。因此,指令Ex-B至Ex-P按这个顺序被读取到微处理器CPU中并且被顺序执行。因而,执行了预定处理,且实现了子程序的功能。当PC地址306的值达到表示结束地址的值时,执行指令Ex-Z。在执行指令Ex-Z的情况下,存储在由堆栈指针先前指定的堆栈区域中的寄存器等的值被返回到微处理器CPU中的寄存器。因此,在微处理器CPU中的寄存器的值被返回到在分支到子程序之前的状态。
因此,当从主程序到子程序的分支完成时,通过采用到预定开始地址的分支来执行预定处理。
由于在图5中执行预定处理时PC地址306指定了安全程序区域的内部,拾取地址比较电路301从中输出了安全程序区域信号。因此,存储器访问控制电路303允许微处理器CPU访问存储器(快闪存储器FRM)。例如,当图5所示的指令Ex-S是特定存储指令时,特定存储指令被视作是安全漏洞。该特定存储指令例如是以下的指令:用于将保持在微处理器CPU中的特定寄存器(为便于描述,此后定义为R0)中的值定义为地址,并且将存储在由上述地址指定的安全数据区域中的地址处的数据(指令)存储在微处理器CPU中的另一特定寄存器(为便于描述,此后定义为R1)中。
在入侵程序中,希望读取的安全数据区域中的地址被设置到特定寄存器R0。此后,存储特定存储指令Ex-S的开始地址之外的地址被设定为分支目的地地址,且获得从图5所示的入侵程序到子程序的分支。即,当从入侵程序分支到子程序时,PC地址306的值被设置且分支到安全漏洞(特定存储指令Ex-S)的地址(分支目的地地址)的地址,而非开始地址。因此,没有执行特定寄存器R1的保存和恢复,并且存储在特定寄存器R1中的安全数据(指令)可以被入侵程序读取。
这种安全漏洞被视为是大量存在。难以消除所有安全漏洞。
<抵抗攻击的手段>
图6是用于描述其中通过利用存储器保护电路204来保护存储器抵抗攻击的解释性示图,存储器保护单元204使用图3所示的拾取地址比较电路301、拾取开始地址监视电路300和存储器访问控制电路303。图6类似于之前描述的图4。这里将主要对与图4不同的点进行描述。
如图5所示,当从非安全程序分支到存储在安全程序区域中的安全程序时,通过直接分支到安全漏洞而不分支到由安全程序确定的开始地址来执行攻击。虽然后续使用图7来描述一个例子,通过拾取地址比较电路301和拾取开始地址监视电路300将安全程序区域分成分支允许区域(第一区域)BAA和分支禁止区域(与第一区域不同的第二区域)BPA。此处,用于安全程序的开始地址被分配在分支允许区域BAA内,且指定安全漏洞的分支目的地地址被分配在分支禁止区域BPA内。即,如果将图5作为例子,指令Ex-A(第一指令)被布置在分支允许区域BAA中,而除了指令Ex-A以外的其它指令Ex-B至Ex-Z(第二指令)被布置在分支禁止区域BPA中。
当存储在安全程序区域中的安全程序被存储在非安全程序区域中的非安全程序调用时,拾取开始地址监视电路300输出安全数据访问允许信号302,在其调用时的分支目的地地址指定分支允许区域BAA的情况下允许存储器访问。另一方面,当在其调用时的分支目的地地址指定分支允许区域BPA时,拾取开始地址监视电路300输出禁止存储器访问的安全数据访问允许信号302。当安全数据访问允许信号302表示允许存储器访问时,存储器访问控制电路303允许微处理器CPU对存储器(快闪存储器FRM)的访问。当安全数据访问允许信号302表示禁止存储器访问时,存储器访问控制电路303禁止微处理器CPU对存储器的访问。
因为在除了入侵程序以外的非安全程序调用安全程序时输出指定分支允许区域BAA的内部的分支目的地地址,所以可以执行安全程序。另一方面,在入侵程序调用作为分支目的地地址的与安全漏洞对应的地址时,输出指定分支禁止区域BPA的分支目的地地址。因此,在这种情况下,禁止微处理器CPU对存储器的访问。结果,可以避免执行入侵程序执行入侵。
<拾取开始地址监视电路和拾取地址比较电路的配置>
接着将使用图7A和图7B来描述图3所述的拾取开始地址监视电路300和拾取地址比较电路301的配置。图7A是示出根据第一实施例的拾取开始地址监视电路300和拾取地址比较电路301的配置的框图,图7B是示出根据第一实施例的安全程序区域的解释示图。
图3所示的安全地址信息304包括表示其中存储安全程序的安全程序区域的上限地址的安全程序上限地址304-U(上限地址信息)以及表示安全程序区域的下限地址的安全程序下限地址304-D(下限地址信息)。安全程序上限地址304-U和安全程序下限地址304-D指定的快闪存储器FRM的区域假设是其中存储安全程序的安全程序区域(第二程序区域)。换句话说,其中写入有安全程序的快闪存储器FRM的安全程序区域通过安全程序上限地址304-U和安全程序下限地址304-D来指定。
在第一实施例中,上限地址304-U的值是大于下限地址304-D的值。当执行程序时,PC地址306的值从安全程序上限地址304-U改变到安全程序下限地址304-D。因此,微处理器CPU从存储在上限地址304-U指定的地址处的指令至存储在下限地址304-D指定的地址处的指令中读出快闪存储器FRM的指令,并且执行读取的指令。即,微处理器CPU从大地址至小地址读取指令并执行它。
拾取地址比较电路301被设有比较器704和705、两输入与(AND)电路706(第一逻辑电路)以及反相器电路708(第一逻辑电路)。
比较器704(第一比较电路)比较安全程序上限地址304-U和PC地址306。当PC地址306的值小于或等于安全程序上限地址304-U的值时,比较器704输出高电平的比较结果信号704-R。另一方面,当PC地址306的值超过安全程序上限地址304-U的值时,比较器704输出低电平的比较结果信号704-R。
比较器705(第二比较电路)比较安全程序下限地址304-D和PC地址306。当PC地址306的值大于或等于安全程序下限地址304-D的值时,比较器705输出高电平的比较结果信号705-R。另一方面,当PC地址306的值小于安全程序下限地址304-D的值时,比较器705输出低电平的比较结果信号705-R。
分别从比较器704和705输出的比较结果信号704-R和705-R被输入到两输入与电路706。比较结果信号704-R和705-R的逻辑与通过两输入与电路706来确定。两输入与电路706的输出信号707被供给到反相器电路708,在反相器电路708处输出信号707的相位被反相。
由于比较结果信号704-R和705-R在PC地址306的值被置于安全程序上限地址304-U的值和安全程序下限地址304-D的值之间时分别变为高电平,两输入与电路706的输出信号707变为高电平。因此,反相器电路708的输出信号709变为低电平。即,当PC地址306表示的地址指定由安全程序上限地址304-U和安全程序下限地址304-D指定的安全程序区域的内部时,两输入与电路706的输出信号707变为高电平,并且反相器708的输出信号709变为低电平。
另一方面,当PC地址306的值超过安全程序上限地址304-U的值或者小于安全程序下限地址304-D的值时,两输入与电路706的输出信号707变为低电平,且反相器电路708的输出信号709变为高电平。即,当PC地址306表示的地址指定安全程序区域以外时,输出信号707变为低电平,且输出信号709变为高电平。
因此,输出信号707和709中的每个可以被设定为表示是选择安全程序区域还是选择非安全程序区域的选择信号。当选择安全程序区域时,输出信号707变为高电平。因此,输出信号707可以被设定为安全程序区域信号707。类似地,当选择非安全程序区域时,输出信号709变为高电平。因此,输出信号709可以被设定为非安全程序区域信号709。
第一比较单元可以被设定成通过比较器704和705、两输入与电路706和反相器电路708来配置。在这种情况下,由第一比较单元形成的安全程序区域信号707或/和非安全程序区域信号709(第一比较输出)被监视,以由此使得可以确定PC地址计数器是指定安全程序区域还是非安全程序区域。
拾取开始地址监视电路300被设有比较器700、两输入与电路701和触发器电路703。
比较器700(第三比较电路)被供给有安全程序上限地址304-U和PC地址306。比较器700将通过从安全程序上限地址304-U减去4而获得的值(上限地址-4)与PC地址306进行比较。当PC地址306的值大于或等于通过从安全程序上限地址304-U减去4而获得的值(上限地址-4)时,比较器700输出高电平的比较结果信号700-R。另一方面,当PC地址306的值小于通过从安全程序上限地址304-U减去4而获得的值(上限地址-4)时,比较器700输出低电平的比较结果信号700-R。
比较结果信号700-R和上述的比较器704的比较结果信号704-R被提供至两输入与电路701(第二逻辑电路)。两输入与电路701的输出信号被提供至触发器电路703作为安全程序分支允许区域信号702。
触发器电路703被设有设置端子(设置)、清零端子(清除)和输出端子(Q)。设置端子被提供有高电平,使得输出端子变为高电平。输出端子的高电平保持(维持),直到清零端子被提供有高电平。在提供高电平至清零端子的情况下,输出端子变为低电平。
作为两输入与电路701的输出信号的安全程序分支允许区域信号702被提供至触发器电路703的设置端子(设置)。反相器电路708的上述输出信号,即非安全程序区域信号709,被提供至触发器电路703的清零端子(清零)。从触发器电路703的输出端子(Q)输出的信号被提供到图3所示的存储器访问控制电路303作为安全数据访问允许信号302。
在图7B中图示了在安全程序上限地址304-U、安全程序下限地址304-D以及通过从上述安全程序上限地址304-U的值减去4而获得的值(上限地址-4)之间的关系。在图7B中,上限地址304-U和下限地址304-D通过实线表示。通过从安全程序上限地址304-U的值减去4而获得的值(上限地址-4)通过虚线来表示。
在图7B中,当PC地址306的值(地址)小于上限地址304-U表示的值(地址)时,如上所述比较结果信息704-R变为高电平。另一方面,当PC地址306的值(地址)大于或等于通过从上限地址304-U减去4而降低的值(上限地址-4)时,比较器700输出高电平比较结果信号700-R。因此,当PC地址的值小于或等于上限地址304-U的值且大于或等于上限地址-4的值时,两输入与电路701输出高电平的安全地址分支允许区域信号702。安全地址分支允许区域信号702(第二比较输出)可以被设定为通过包括比较器700和704以及两输入与电路701的第二比较单元形成。在这种情况下,比较器704在第一比较单元和第二比较单元之间被公共地使用。
尽管在安全程序区域内布置了安全程序,通过上限地址304-U的值和(上限地址-4)的值指定的程序区域在其布置时被设定为安全程序的开始地址(参见图5)。在分支时先执行的指令布置在开始地址中。在图5的例子中,用于保存寄存器等的指令Ex-A被布置在其中。
例如,当PC地址306的值小于下限地址304-D的值时,高电平的比较结果信号704-R从比较器704输出,且低电平的比较结果信号700-R和705-R从比较器700和705输出。结果,安全程序分支允许区域信号702和安全程序区域信号707分别变为低电平,且非安全程序区域信号709变为高电平。因此,由于高电平被提供到触发器电路703的清零端子,触发器电路703的输出端子变为低电平,使得低电平的安全数据访问允许信号302被提供到存储器访问控制电路303。
此外,当PC地址306的值超过上限地址304-U的值时,低电平的比较结果信号704-R从比较器704输出,且高电平的比较结果信号700-R和705-R从比较器700和705输出。结果,安全程序分支允许区域信号702和安全程序区域信号707分别变为低电平,且非安全程序区域信号709变为高电平。因此,由于高电平被提供到触发器电路703的清零端子,触发器电路703的输出端子变为低电平,使得低电平的安全数据访问允许信号302被提供到存储器访问控制电路303。
当PC地址306的值小于或等于上限地址304-U的值且大于或等于(上限地址-4)的值时,高电平的比较结果信号700-R、704-R和705-R分别从比较器700、704和705输出。结果,安全程序分支允许区域信号702和安全程序区域信号707分别变为高电平,且非安全程序区域信号709变为低电平。因此,由于高电平被提供到触发器电路703的设置端子,触发器电路703的输出端子变为高电平,使得高电平的安全数据访问允许信号302被提供到存储器访问控制电路303。
在安全数据访问允许信号302被设置在高电平的情况下,存储器访问控制电路303允许微处理器CPU访问存储器。即,存储器访问控制电路303将此时的PC地址306提供到存储器以由此实现存储器和微处理器CPU之间的数据的发送/接收。因此,安全程序分支允许区域信号702变为高电平,使得来自微处理器CPU的PC地址306被提供至存储器,由此实现存储器和微处理器CPU之间的数据的发送/接收。
另一方面,当PC地址306的值小于(上限地址-4)的值且大于或等于下限地址304-D的值时,来自比较器700的比较结果信号700-R变为低电平,因此高电平的比较结果信号704-R和705-R分别从比较器704和705输出。结果,安全程序分支允许区域信号702和非安全程序区域信号709分别变为低电平,且安全程序区域信号707变为高电平。因此,由于低电平被提供到触发器电路703的设置端子和清零端子,触发器电路703的输出端子保持先前状态。如果先前状态是高电平,则高电平的安全数据访问允许信号302被持续提供到存储器访问控制电路303。如果先前状态是低电平,则低电平的安全数据访问允许信号302被持续提供到存储器访问控制电路303。由于先前状态由触发器电路703保持(维持),触发器电路703可以被认为是保持电路。
当安全数据访问允许信号302处于低电平时,存储器访问控制电路303禁止从微处理器CPU至存储器的访问。即,存储器访问控制电路303禁止PC地址306至存储器的传递。因此,禁止了微处理器CPU和存储器之间的数据的发送/接收。
在从非安全程序分支到安全程序时,微处理器CPU的PC地址306的值被设置至非安全程序处的开始地址(见图5)。在这种情况下,开始地址是上限地址304-U和(上限地址-4)之间的分支允许区域BAA内的地址。当微处理器CPU的PC地址指定分支允许区域的内部时,安全程序分支允许区域信号702变为高电平且安全数据访问允许信号302变为高电平,如上所述。结果,微处理器CPU的PC地址306通过存储器访问控制电路303被传递到存储器,使得存储在分支允许区域BAA中的指令被微处理器CPU读取和执行。
另一方面,例如,当非安全程序是入侵程序时,在从入侵程序分支至安全程序时,在入侵程序处微处理器CPU的PC地址306的值被设置至开始地址以外的地址(见图5)。即,PC地址306的值指定在下限地址304-D和(上限地址-4)之间。在这种情况下,安全程序分支允许区域信号702变为低电平,安全程序区域信号707变为高电平,且非安全程序区域信号709变为低电平。
安全程序分支允许区域信号702和非安全程序区域信号709变为低电平,使得触发器电路703的输出端子(Q)的电压保持在先前电压。在从非安全程序分支的情况下,先前状态变为已经执行了非安全程序时的状态。当非安全程序正被执行时,非安全程序区域信号709变为高电平。因此,触发器电路703的输出端子(Q)变为先前状态中的低电平。结果,当进行尝试来获得至分支禁止区域BPA的分支时,持续输出低电平的安全数据访问允许信号302。安全数据访问允许信号302持续变为低电平,使得存储器访问控制电路303禁止从微处理器CPU对存储器中的分支禁止区域的访问。
在第一实施例中,安全程序区域通过比较器700、704和705被分成分支允许区域BAA和分支禁止区域BPA。如果在从非安全程序分支到安全程序时PC地址306表示的分支目的地地址指定分支允许区域BAA的内部,则允许微处理器CPU对存储器的访问。另一方面,如果PC地址306表示的分支目的地地址指定分支禁止区域BPA的内部,则禁止微处理器CPU对存储器的访问。因此,可以保护安全程序和安全数据免受攻击。
在第一实施例中,分支允许区域BAA是上限地址304-U的值(分支允许区域上限地址)和(上限地址-4)的值(分支允许区域下限地址)之间的程序区域。而且,分支禁止区域BPA是下限地址304-D的值(分支禁止区域下限地址)和(上限地址-4)的值(分支禁止区域上限地址)之间的程序区域。此外,在第一实施例中,虽然没有具体限制,但是存储在开始地址的单个的一字指令(参见图5)包括4个字节。因此,分支允许区域下限地址被定义为通过从上限地址304-U减去4而获得的地址,使得其相对于分支允许区域BAA的上限地址减少4个字节。然而不限于此,并且分支允许区域BAA的大小可以根据安全程序等的使用来确定。
此外,虽然以异步触发器电路为例示出了触发器电路703,但是如果在从微处理器CPU对存储器的访问时序中存在裕度,也可以使用同步触发器电路。然而,当裕度就时序而言较少时,优选使用异步触发器电路。
虽然此处示出了使用三个比较器700、704和705的例子,但本实施例不限于此。例如,两个比较器也可以分别用于拾取地址比较电路301和拾取开始地址监视电路300。在这种情况下,与比较器704类似的比较器可以被提供作为拾取开始地址监视电路300中的第四比较器。通过采用通过第四比较器比较的上限地址作为与通过比较器704比较的上限地址不同的地址,分支允许区域BAA可以被提供为任意安置。
然而,通过使上限地址304-U或下限地址304-D公共作为要与拾取地址比较电路301和拾取开始地址监视电路300中的PC地址306进行比较的地址,可以减少比较器的数目。在这种情况下,分支允许区域BAA可以通过以上限地址304-U(或下限地址304-D)作为参考的允许地址信息来定义。在第一实施例中,基于上限地址304-U,允许地址信息被定义为-4,分支允许区域BAA的下限地址被定义为(上限地址-4)。
<存储器保护单元的操作>
接着将利用图7至图10来描述从非安全程序分支到安全程序的操作。将先针对非安全程序并非是入侵程序且是正常分支到安全程序的情况进行描述。
<<从非安全程序到安全程序的分支>>
图8A至图8D是示出根据第一实施例的存储器保护单元204的操作的时序图。图8示出了其中正常完成从非安全程序到安全程序的分支的情况。
在时刻t0之前微处理器CPU执行非安全程序区域中的非安全程序。即,PC地址306没有指定图7B所示的安全程序区域而是指定非安全程序区域内。因此,来自比较器704或705的比较结果信号704-R或705-R(参见图7A)在时刻t0之前为低电平。因而,安全程序区域信号707变为低电平,且非安全程序区域信号709变为高电平。此外,由于比较结果信号704-R或700-R变为低电平,安全程序分支允许区域信号702也变为低电平。
由于非安全程序区域信号709为高电平,触发器电路703的清零端子(清零)被提供有高电平。由于清零端子被提供有高电平,但向触发器电路703的设置端子(设置)提供低电平,所以安全数据访问允许信号302变为低电平。
在时刻t0,微处理器CPU执行非安全程序中的分支指令。此时执行的分支指令是用于指定向安全程序的分支的分支指令。虽然没有具体限制,但在非安全程序执行时、此时指定分支目的地地址的地址信息被提供至微处理器CPU。微处理器CPU根据提供的地址信息来设置PC地址306。此处,在图5所示的开始地址被设置为PC地址306(参见图8A)。由于开始地址对应于指定分支允许区域BAA的内部的地址,比较结果信号700-R、704-R和705-R分别变为高电平。因此,安全程序区域信号707变为高电平,非安全程序区域信号709变为低电平,且安全程序分支允许区域信号702变为高电平(参见图8C和8B)。
由于安全程序分支允许区域信号702变为高电平,触发器电路703的输出端子(Q)变为高电平。此时由于触发器电路703的清零端子被供给有低电平,触发器电路703输出高电平。因此,安全数据访问允许信号302变为高电平(参见图8D)。在安全数据访问允许信号302变为高电平的情况下,存储器访问控制电路303(参见图3)允许从微处理器CPU对存储器的访问。
在时刻t1,微处理器CPU完成了存储在分支允许区域BAA中的指令(例如图5中的指令Ex-A)的执行并且在时刻t1和t2之间执行安全程序的剩余指令。为了执行剩余指令,PC地址306在时刻t1和t2之间顺序输出指定分支禁止区域BPA的内部的每个地址。如果图5通过例子来解释,则PC地址306被顺序地更新,以在时刻t1和t2之间执行与预定处理相关的指令Ex-B至Ex-P以及与寄存器等的恢复相关的指令Ex-Z。
这些指令被布置在安全程序区域中并被布置在分支禁止区域BPA中。因此,在时刻t1,低电平的比较结果信号700-R在时刻t1和t2之间从比较器700输出。然而,因为这些指令布置在安全程序区域中,比较器704和705的比较结果信号704-R和705-R分别保持在高电平。
在时刻t1,在比较结果信号700-R被设置为低电平的情况下,安全程序分支允许区域信号702改变到低电平。因此,触发器电路703的设置端子(设置)被提供有低电平。另一方面,因为比较结果信号704-R和705-R保持在高电平,非安全程序区域信号709保持在低电平。因此,触发器电路703的清零端子(清零)被持续提供有低电平。因为清零端子(清零)是低电平,触发器电路703保持(维持)其输出端子(Q)处于高电平的状态。结果,安全数据访问允许信号302在时刻t1和t2之间也保持在高电平。因为安全数据访问允许信号302处于高电平,存储器访问控制电路303即使在时刻t1和t2之间也继续允许微处理器CPU对存储器的访问。
当在时刻t2完成安全程序的执行时,安全程序返回到非安全程序。即,PC地址306从分支禁止区域BPA改变到指定非安全程序区域的内部的地址。由于PC地址306从安全程序区域改变到指定非安全程序区域的内部的地址,比较器704或705的比较结果信号704-R或705-R在时刻t2改变到低电平。因而,非安全程序区域信号709改变到高电平。因而,触发器电路703的清零端子(清零)被供给有高电平。触发器电路703的输出端子(Q)的电压改变到低电平,且安全数据访问允许信号302也改变到低电平。在安全数据访问允许信号302设置在低电平的情况下,存储器访问控制电路303禁止微处理器CPU对存储器的安全程序区域和安全数据区域的访问。
在描述触发器电路703时应注意,其输出端子(Q)保持在高电平(预定状态)直到来自微处理器CPU的地址(PC地址306)表示了非安全程序区域且因此允许了对存储器的访问。
因此,变得可以进行从非安全程序分支到安全程序且执行安全程序。即,配置RTOS的安全程序从非安全程序调用且可以得到。
<<从入侵程序到安全程序的分支>>
接着将描述采用从入侵程序到安全程序的分支的情况。在这种情况下,入侵程序在非安全程序区域中运行。图9A至图9D分别是示出根据第一实施例的存储器保护单元的操作的时序图。图9示出了采用从入侵程序到安全程序的分支的情况。另外,在图9B和图9D中每个虚线表示图8描述的状态。即其示出了当从非安全程序正常调用安全程序时的状态。
在时刻t0之前图9与图8相同,因此将省略重复描述。然而,因为在时刻t0之前已经执行了非安全程序,非安全程序区域信号709保持高电平。因此,触发器电路703的输出端子(Q)处于低电平状态,且安全数据访问允许信号302也处在低电平。
在时刻t0,微处理器CPU执行入侵程序(非安全程序)中的分支指令。此时执行的分支指令是指定分支到安全程序的预定分支目的地地址的分支指令。虽然没有具体限制,但此时,在入侵程序执行时,指定预定分支目的地地址的地址信息被提供至微处理器CPU。微处理器CPU根据给出的地址信息来设置PC地址306。在入侵程序中,图5所示的分支目的地地址例如被设置为PC地址306(参见图9A)。分支目的地地址是与开始地址不同的地址,在其处存储例如配置安全程序的一系列指令串中的半路指令。在图5的例子中,在其处存储一系列指令串(指令Ex-B至Ex-P)中的半路的存储指令(Ex-S)的地址被定义为分支目的地地址。
因为分支目的地地址是指定分支禁止区域BPA的地址,比较结果信号700-R变为低电平,且比较结果信号704-R和705-R变为高电平。因为比较结果信号704-R和705-R变为高电平,所以安全程序区域信号707变为高电平,且非安全程序区域信号709变为低电平。另一方面,因为比较结果信号700-R变为低电平,安全程序分支允许区域信号702也变为低电平(参见图9C和图9B)。
在安全程序分支允许区域信号702和非安全程序区域信号709被设置为低电平的情况下,触发器电路703的设置端子(设置)和清零端子(清零)分别提供有低电平。因此,触发器电路703的输出端子(Q)持续输出直至时刻t0的状态。即,触发器电路703的输出端子(Q)持续输出低电平。因此,如图8D所示,安全数据访问允许信号302没有变为高电平(图9D中的虚线)且保持在低电平。因为安全数据访问允许信号302处在低电平,所以存储器访问控制电路303(参见图3)禁止从微处理器CPU对存储器的安全程序区域和安全数据区域的访问。
在时刻t1,因为存储器访问控制电路303禁止微处理器CPU对安全程序区域的访问,所以没有读取安全程序区域中分支目的地地址指定的指令(图5中的指令Ex-S)。该指令没有被微处理器CPU执行。在图9的例子中,微处理器CPU在时刻t1和t2之间持续输出指定安全程序区域的PC地址306。在PC地址306指定安全程序区域的时段期间,安全程序区域信号707持续保持在高电平,且非安全程序区域信号709持续保持在低电平,如图9C所示。因此,在触发器电路703中,即使在从时刻t1至t2的时段,输出端子(Q)没有改变到高电平,如图9D的虚线所示,且保持在低电平。即,安全数据访问允许信号302保持在低电平。
由于安全数据访问允许信号302保持在低电平,即使在从时刻t1至时刻t2的时段,微处理器CPU对安全程序区域和安全数据区域的访问也被存储器访问控制电路303禁止。
在图9的例子中,在时刻t2,微处理器CPU改变其存储在PC地址306中的地址以执行非安全程序。当PC地址306改变为指定非安全程序区域的地址时,比较结果信号704-R或705-R从高电平变为低电平。因而,安全程序信号707从高电平改为低电平,且非安全程序区域信号709从低电平改为高电平。
在非安全程序区域信号709被设置为高电平的情况下,触发器电路703将输出端子(Q)置于低电平。因为输出端子(Q)在时刻t2之前保持低电平,所以可假设触发器电路703持续从输出端子(Q)输出低电平。即,即使在时刻t2之后安全数据访问允许信号302也变为低电平。
由于虽然安全数据访问允许信号302处在低电平,但是PC地址306指定非安全程序区域的内部,所以存储器访问控制电路303允许微处理器CPU对非安全程序区域和非安全数据区域的访问。
结果,可以执行与非安全程序相关的指令。无需说,非安全程序的指令在入侵程序中布置在分支到安全程序的指令后时,在分支到安全程序的指令后布置的非安全程序的指令可以被限制为不执行。例如,安全程序分支允许区域信号702以当非安全程序区域信号709改变到低电平时的时序来采样。如果采样的安全程序分支允许区域信号702是低电平,则微处理器CPU对非安全程序区域和非安全数据区域的访问也可以在时刻t2之后被存储器访问控制电路303禁止。
因此,由于禁止了入侵程序对安全数据(包括安全程序)的访问,可以保护安全数据免受入侵程序的攻击。虽然入侵程序作为例子进行了描述,但是也可以防止安全数据由于非安全程序中的故障而被错误读取。
<<存储器保护单元的操作>>
图10是示出根据第一实施例的存储器保护单元24的操作的表。图10示出了在分支时存储器保护单元204的操作。在图10中,BSA、BDA和BOP指示表中的列。此处,列BSA表示分支源地址,列BDA表示分支目的地地址,且列BOP表示在分支的控制。
存储器保护单元204控制分支源地址同时分支源地址被分成三个。即,当完成分支时,存储器保护单元204控制分支源,同时分支源被分成:“(1)非安全程序区域”,“(2)安全程序分支允许区域”,或“(3)安全程序分支禁止区域”。换句话说,当执行分支时,存储器保护单元204控制分支指令同时分支指令被分成布置在“(1)非安全程序区域”、“(2)安全程序分支允许区域”或“(3)安全程序分支禁止区域”中。另外,在图10中,安全程序分支允许区域表示分支允许区域BAA,安全程序分支禁止区域表示分支禁止区域BPA。
存储器保护单元204在对图8和图9所示的时刻t0处执行对“(1)非安全程序区域”的控制。此外,存储器保护单元204在图8中时刻t0到时刻t2的时段期间对“(2)安全程序分支允许区域”和“(3)安全程序分支禁止区域”执行控制。
存储器保护单元204还控制列BDA中所示的分支目的地地址,同时分支目的地地址关于列BSA中示出在“非安全程序区域”、“安全程序分支允许区域”、“安全程序分支禁止区域”中的分支源地址被分成三个。即,当完成分支时,存储器保护单元204控制分支目的地地址,同时分支目的地地址被分成“非安全程序区域”、“安全程序分支允许区域”或“安全程序分支禁止区域”。即使在这种情况下,也可以认为控制在执行分支指令时用于分支目的地的指令,同时将该指令分成布置在“非安全程序区域”、“安全程序分支允许区域”或“安全程序分支禁止区域”中的指令。
列BOP表示在分支的控制。图10示出了在分支的与安全数据区域有关的控制。此处所示的安全数据区域表示安全程序区域和安全数据区域二者。与安全数据区域有关的控制以三种方式存在。即,存储器访问控制单元303处在:允许微处理器CPU访问安全数据区域的安全数据访问允许状态、禁止微处理器CPU访问安全数据区域的安全数据访问禁止状态以及保持先前分支(pro-branch)操作状态的维持状态。此处,维持状态表示:如果先前分支处在安全数据访问允许状态中,则维持安全数据访问允许状态。维持状态表示:如果先前分支处在安全数据访问禁止状态中,则维持安全数据访问禁止状态。
当分支源地址对应于列BSA中的“(1)安全程序区域”时,存储器保护单元204确定分支目的地地址是否是在与“(1)安全程序区域”同一列中描述的三个分支目的地地址中的任意地址,并且执行与确定的分支目的地地址对应的控制(列BOP中描述的控制)。类似地,当分支源地址对应于列BSA中的“(2)安全程序分支允许区域”时,存储器保护单元204确定分支目的地地址是否是在与“(2)安全程序分支允许区域”同一列中描述的三个分支目的地地址中的任意地址,并且执行与确定的分支目的地地址对应的控制(列BOP中描述的控制)。此外,当分支源地址对应于列BSA中的“(3)安全程序分支禁止区域”时,存储器保护单元204确定分支目的地地址是否是在与“(3)安全程序分支禁止区域”同一列中描述的三个分支目的地地址中的任意地址,并且执行与确定的分支目的地地址对应的控制(列BOP中描述的控制)。
接着将使用图7至图9来描述图10所示的存储器保护单元204的操作。
用户程序U-AP例如包括多个非安全程序。各个非安全程序布置在非安全程序区域中。当表示非安全程序的用户程序U-AP利用诸如RTOS的安全程序时,如图8和图9所述从非安全程序区域到安全程序进行分支。
由于采用来自非安全程序区域的分支,存储器保护单元204确定分支源是否是“(1)非安全程序区域”。即,当RTOS的程序从用户程序U-AP调用(分支)时(在时刻t0),存储器保护单元204确定分支源是“(1)非安全程序区域”。
接着,存储器保护单元204中的存储器访问控制电路303确定图7、图8和图9中描述的非安全程序区域信号709是否处于低电平。当非安全程序区域信号709处于高电平时,确定分支目的地是“非安全程序区域”。存储器访问控制电路303禁止微处理器CPU访问安全数据区域(列BOP中的“安全数据访问禁止”)。虽然在这种情况下在图10中没有描述,但是存储器访问控制电路303允许微处理器CPU对非安全数据区域访问。因此,在用户程序中可以进行从预定非安全程序到另一非安全程序的分支。另外,在图3和图7中,将非安全程序区域信号709提供到存储器访问控制电路303的信号布线被省略以便避免附图复杂。
当非安全程序区域信号709处于低电平时,安全数据访问允许信号302根据在图8和图9中的时刻t0处描述的安全程序分支允许区域信号702的电压(高电平或低电平)而变为高电平或低电平。如果如图8所示非安全程序区域信号709是低电平且安全数据访问允许信号302是高电平,则存储器访问控制电路303确定分支目的地地址(列BDA)是“安全程序分支允许区域”,并且允许微处理器CPU对安全数据区域的访问(“安全数据访问允许”)。
另一方面,如果非安全程序区域信号709处于低电平且如图9所示安全数据访问允许信号302处于低电平,则存储器访问控制电路303确定分支目的地地址(列BDA)是“安全程序分支禁止区域”,并且变为维持先前分支操作状态的状态。如图9中的时刻t0所示,触发器电路703的输出端子(Q)维持时刻t0之前的状态。在这种情况下,先前状态是禁止访问安全数据的状态。因此,在这种情况下,维持禁止微处理器CPU对安全数据区域的访问的状态。在图9的情况下,即使在从时刻t0至时刻t2的时段期间也维持这个状态。
当在时刻t0确定分支目的地地址是“安全程序分支允许区域”时,存储器保护单元204在从时刻t0到时刻t2的时段期间执行对“(2)安全程序分支允许区域”或“(3)安全程序分支禁止区域”的控制。
首先,微处理器CPU在从时刻t0到时刻t1的时段期间执行布置在安全分支允许区域中的指令。当此时要执行的指令是分支指令时,执行对“(2)安全程序分支允许区域”的控制。即,如果在此时段期间要执行的分支指令的分支目的地地址是“非安全程序区域”时,非安全程序区域信号709变为低电平。因此,存储器访问控制电路303禁止微处理器CPU对安全区域的访问(安全数据访问禁止)。在这种情况下,由于图7所示的触发器电路703的输出端子(Q)被清零至低电平,则需要非安全程序执行指定安全程序分支允许区域的分支指令,用于再次从非安全程序利用安全程序的目的。
如果从时刻t0到时刻t1执行的分支指令的分支目的地地址指定“安全程序分支允许区域”,则安全程序分支允许区域信号702变为高电平。因此,图7所示的触发器电路703的输出端子(Q)被设置为高电平。结果,安全数据访问允许信号302变为高电平,且因此存储器访问控制电路303允许微处理器CPU获得对安全数据区域的访问(安全数据访问允许)。
如果从时刻t0到时刻t1执行的分支指令的分支目的地地址指定“安全程序分支禁止区域”,则安全程序分支允许区域信号702如图8所述变为低电平,但是非安全程序区域信号709维持在低电平。因此,如图8所示,触发器电路703的输出端子(Q)的电压被维持为高电平。即,维持分支之前的状态。结果,存储器访问控制电路303维持分支之前的操作状态。在这种情况下,因为先前分支操作状态是安全数据访问允许的状态,所以继续允许微处理器CPU对安全数据区域的访问的状态。
因此,图7所示的触发器电路703的输出端子(Q)被设置为高电平。结果,安全数据访问允许信号302变为高电平,且因此存储器访问控制电路303允许微处理器CPU对安全数据区域的访问(安全数据访问允许)。
当在从时刻t0到时刻t1的时段期间执行以“安全数据分支禁止区域“作为分支目的地地址的分支指令时,微处理器CPU在图8所示的从时刻t0到时刻t2的时段期间操作。在这种情况下,微处理器CPU执行存储在程序分支禁止区域中的安全程序。换句话说,在这个时段期间,微处理器CPU要执行的分支指令认为分支源地址对应于“(3)安全程序分支禁止区域”。
当分支源地址设定为“(3)安全程序分支禁止区域”时,即在图9的从时刻t1到时刻t2的时段期间,微处理器CPU执行布置在安全程序分支禁止区域中的指令。在这个时段期间,如果要执行的指令是分支指令且其分支目的地地址是“非安全程序区域”,则非安全程序区域信号709变为低电平。因此,存储器访问控制电路303禁止微处理器CPU对安全数据区域的访问(安全数据访问禁止)。在这种情况下,因为图7所示的触发器电路703的输出端子(Q)被清零为低电平,则需要非安全程序来执行指定安全程序分支允许区域的分支指令,用于再次从非安全程序利用安全程序的目的。
如果从时刻t1到时刻t2执行的分支指令的分支目的地地址指定“安全程序分支允许区域”,则安全程序分支允许区域信号702变为高电平。因此,图7所示的触发器电路703的输出端子(Q)被设置为高电平。结果,安全数据访问允许信号302变为高电平,且因此存储器访问控制电路303允许微处理器CPU对安全数据区域的访问(安全数据访问允许)。
如果从时刻t1到时刻t2执行的分支指令的分支目的地地址指定“安全程序分支禁止区域”,则安全程序分支允许区域信号702如图8所示变为低电平,但是非安全程序区域信号709维持在低电平。因此,如图8所示,触发器电路703的输出端子(Q)的电压被维持在高电平。即,维持分支之前的状态。结果,存储器访问控制电路303维持分支之前的操作状态。这种情况下,因为先前分支操作状态是安全数据访问允许的状态,所以继续允许微处理器CPU对安全数据访问的状态。
因此,图7所示的触发器电路703的输出端子(Q)被设置为高电平。结果,安全数据访问允许信号302变为高电平,且因此存储器访问控制电路303允许微处理器CPU对安全数据区域的访问(安全数据访问允许)。
另外,在图8和图9中,非安全程序在时刻t2执行。图8的例子示出在“(3)安全程序分支禁止区域”的控制中分支目的地地址指定“非安全程序区域”的情况下的操作。此外,图9的例子示出在“(1)非安全程序区域”的控制中分支目的地地址指定“非安全程序区域”的情况下的操作。甚至在这两种情况下,存储器访问控制电路303都禁止微处理器CPU对安全数据区域的访问而允许微处理器CPU对非安全数据区域的访问。
虽然关于其中非安全程序区域信号709通过没有示出的信号布线被提供到存储器访问控制电路303的例子进行了描述,但本实施例不限于此。例如,安全程序区域信号707可以通过没有图示的信号布线而提供到存储器访问控制电路303。
如上所述,在第一实施例中,当非安全程序中的分支指令的分支目的地地址指定了安全程序分支允许区域(分支允许区域BAA)时,允许从非安全程序到安全数据区域的访问。由此,即使能够操作微处理器CPU的非安全程序被允许任意生成,也可以保护如RTOS的安全程序免受入侵程序的攻击。
此外,当在安全程序分支禁止区域中执行以安全程序禁止区域作为分支目的地地址的分支指令时,在执行分支指令之前的状态被维持,以允许/禁止对安全数据区域的访问。因此,即使当在布置在安全程序分支禁止区域中的安全程序中执行以安全程序禁止区域作为分支目的地地址的分支指令时,微处理器CPU也能够访问安全数据区域。结果,即使当从如RTOS的安全程序的预定子程序中调用(分支)其它子程序时,也可以从用户程序U-AP有效利用RTOS。
另外,当分支指令的分支目的地地址指定了非安全程序区域时,禁止对安全数据区域的访问。
<改型>
图11是用于描述根据第一实施例的改型的解释示图。由于图11类似于图6,将主要描述与图6的不同点。
参见图6,快闪存储器FRM提供有非安全程序区域和安全程序区域。易失性存储器203提供有非安全数据区域和安全数据区域。此处,其安全性应被确保的程序存储在安全程序区域中,并且其安全性应被确保的数据甚至存储在安全数据区域中。因为非安全程序区域、非安全数据区域和安全数据区域与图6中的相同,其描述将被省略。
即使在这个改型中,安全程序区域也被分成分支允许区域BAA和分支禁止区域BPA。例如,如图7中所述,安全程序区域被定义在快闪存储器FRM的通过安全程序上限地址304-U和安全程序下限地址304-D指定的区域的范围内,且快闪存储器FRM的除了安全程序区域以外的区域变为非安全程序区域。此外,分支允许区域BAA变为在图7所示的(上限地址-4)和上限地址304-U之间的范围,分支禁止区域BPA变为在图7所示的(上限地址-4)和下限地址304-D之间的范围。
在改型中,预定分支指令BRI布置在分支允许区域BAA中。此外,用于输入信息检查的检查程序CHK、用于执行程序选择的选择程序EXS和多个程序PRG1至PRGn存储在分支禁止区域BPA中。在程序PRG1至PRGn是实施彼此不同的功能的程序时,在图11中示出三个程序PRG1至PRG3作为例子。
从非安全程序分支到布置在安全程序区域中的安全程序的、布置在非安全程序区域中的非安全程序例如包括:用于在非安全数据区域的预定区域中存储用于选择程序PRG1至PRGn中的要执行的程序的选择信息的指令、以及具有利用分支允许区域BAA指定的分支目的地地址的分支指令。在微处理器CPU执行非安全程序的情况下,在指定程序PRG1至PRGn中的要执行的程序的选择信息存储在非安全数据区域的预定区域中之后,PC地址306指定分支允许区域BAA的内部。
当PC地址306指定了布置在分支允许区域BAA中的分支指令BRI的地址时,微处理器CPU读取和执行分支指令BRI。该分支指令BRI是用于分支到检查程序CHK的指令。
接着,通过执行分支指令BRI来执行检查程序CHK。在检查程序CHK中,微处理器CPU从非安全数据区域的预定区域中读取选择信息并且检查读取的选择信息是否是不希望的选择信息。例如,微处理器CPU检查选择信息是否是使得指定程序PRG1至PRGn以外的程序等的选择信息。当通过检查程序CHK的检查确定是合适的选择信息时,接着执行选择程序EXS。
选择程序EXS选择并执行程序PRG1至PRGn中的由选择信息指定的程序。由此,可以从布置在安全程序区域中的多个程序中选择和执行期望的安全程序。
虽然在图11中省略,例如,用于保存寄存器等的值的指令被布置在分支允许区域BAA中。此外,用于返回寄存器等的值的指令被布置在分支禁止区域BPA中。
例如,分别分支到程序PRG1至PRGn的多个分支指令也可以被布置在分支允许区域BAA中。然而,在这种情况下,分支允许区域BAA的尺寸变大。即,允许分支的区域变大,因而导致入侵程序可以获得访问的区域增加。根据本改型,可以抑制分支允许区域BAA的区域增加。可以抑制入侵程序可访问的区域增加。
即使在本改型中,当作为如图6中那样的分支目的地地址来访问分支禁止区域BPA时,存储器保护单元204能够禁止对安全数据区域的访问并且保护安全程序PRG1至PRGn。
另外,虽然关于指定安全程序的选择信息存储在非安全数据区域的例子进行了描述,但是本改型不限于此。
根据第一实施例,在实现如RTOS的安全程序的保护的同时,微处理器CPU能够执行安全程序和执行用户生成的用户程序U-AP。即,虽然提供了其中预先存储有RTOS的程序的微处理器LSI,并且用户操纵(操作)微型计算机LSI中的微处理器CPU以生成使用RTOS功能的用户程序U-AP,但是可以保护作为安全程序的RTOS的程序。结果,即使在新的半导体商业销售模型下,也可以防止安全程序(RTOS的程序)免受盗取,并且可以防止提供商的价值被损害。结果,新的半导体商业销售模型允许提供商和用户二者享受价值。
考虑到为了保护安全程序,异常中断被产生以转变到特许模式,由此形成安全程序区域。然而在这种情况下,考虑到入侵程序被扩展到非安全程序区域以造成噪声等且被允许不加控制以及对利用噪声的攻击保护较弱,因此实现向特许模式的转变。
另一方面,第一实施例中的存储器保护单元204监视微处理器CPU的PC地址并且控制微处理器CPU对安全数据的访问。因此,可以防止对利用噪声的入侵的保护变弱。入侵程序扩展到非安全程序区域,并且安全程序区域甚至关于通过从入侵程序到安全程序的分支完成的攻击而被分成分支允许区域BAA和分支禁止区域BPA,由此抑制对此的较弱的保护。
结果,即使当提供了其中预先写入有RTOS的程序的微型计算机LSI且购买微型计算机的用户生成了利用RTOS功能的程序时,也可以防止预写入的安全程序被盗取。
(第二实施例)
图12是示出根据第二实施例的快闪存储器FRM中存储的数据的布局的布局图。
根据第二实施例的快闪存储器FRM被分成多个区域。在配置快闪存储器FRM的区域中,图12中示出了非安全程序区域、安全程序区域和保护信息区域。在图12中,非安全程序区域通过附图标记1200来表示,安全程序区域通过附图标记1201来表示,保护信息区域通过附图标记1202来表示。
在第二实施例中,其安全性应被确保的安全程序存储在安全程序区域1201中,并且非安全程序存储在非安全程序区域1200中。保护安全程序区域1201的信息存储在保护信息区域1202中。
在新的半导体商业销售模型中,如图1所示,提供商PRD在销售微型计算机LSI之前将如RTOS等的安全程序预先写入到微型计算机LSI中的快闪存储器FRM中。提供商PRD将快闪存储器FRM的写入RTOS的区域设置为安全程序区域1201。因此,从提供商PRD销售设有快闪存储器FRM的微型计算机LSI,在该快闪存储器FRM中在安全程序区域1201中写入了如RTOS的安全程序。
从提供商PRD处购买了微型计算机LSI的用户USR生成利用RTOS来运行的用户程序U-AP,并将其写入到快闪存储器FRM的非安全程序区域1200中。当在将用户程序U-AP写入到快闪存储器FRM时进行对预写入的安全程序(RTOS)的写入时,使得可以形成安全程序中的安全漏洞。为了防止它,提供商PRD在销售微型计算机LSI之前在保护信息区域1202中提供安全程序地址区域1203并且例如将上述的安全地址信息304、安全数据信息305等写入到安全程序地址区域1203中。通过安全地址信息304(安全程序上限地址304-U和安全程序下限地址304-D),安全程序区域被指定且对安全程序区域的写入被禁止,如图3和图7所示。
此外,当在销售后可以通过存储在非安全程序区域1200中的非安全程序(例如用户程序U-AP)进行对保护信息区域1202的写入时,可以重写安全程序地址区域1203,且释放安全程序区域1201的写入禁止,使得可能在安全程序中形成安全漏洞。因此,提供商PRD在销售前在保护信息区域1202中提供保护信息控制区域1204且将使得不能重写存储在保护信息区域1202中的保护信息的保护信息1205写入到保护信息控制区域1204中。因而,禁止了在保护信息区域1202中写入保护信息。
因此,在销售后可以通过存储在非安全程序区域1200中的非安全程序来禁止安全程序的重写。然而,当在销售后在安全程序中发现诸如缺陷(bug)的故障时,因为安全程序的重写被禁止,变得难以更新安全程序,由此在采用抵抗故障的措施时产生了困难。另一方面,如果在销售后可以进行安全程序的更新,则担心安全漏洞将形成到预写入的安全程序中。
在第二实施例中,可以从存储在安全程序区域1201中的安全程序释放保护信息区域1202的重写禁止。在这种情况下,保护信息区域1202的重写禁止被设置成根据非安全程序区域1200中存储的非安全程序可释放。
图13是示出根据第二实施例的微型计算机LSI的配置的框图。在图2所示的微型计算机LSI的配置中,在图中仅示出了微处理器CPU、快闪存储器FRM、快闪存储器重写电路202和存储器保护单元204。在图13中详细示出了描述所需的快闪存储器重写电路202的配置。
快闪存储器重写电路202设有快闪存储器重写地址设置寄存器1300、快闪存储器重写开始寄存器1301、快闪存储器重写控制电路1304和非法访问检测电路1307。快闪存储器重写地址设置寄存器1300和快闪存储器重写开始寄存器1301通过总线205耦合到微处理器CPU。
当重写快闪存储器FRM时,指定快闪存储器FRM中要重写的区域的地址通过总线205被微处理器CPU设置到快闪存储器重写地址设置寄存器1300。快闪存储器重写地址设置寄存器1300将设置的地址提供到快闪存储器重写控制电路1304作为重写地址1302。此外,快闪存储器重写地址设置寄存器1300确定设置的地址是否指定快闪存储器FRM的区域1200至1202的保护信息区域1202(参见图12)。当指定了保护信息区域1202时,快闪存储器重写地址设置寄存器1300形成了保护信息选择信号1305和将其提供到非法访问检测电路1307。
指示被提供以重写快闪存储器FRM的时序的开始信息通过总线205从微处理器CPU设置到快闪存储器重写开始寄存器1301。快闪存储器重写开始寄存器1301基于设置的开始信息而形成快闪存储器重写开始信号1303,并将其提供到非法访问检测电路1307。
当快闪存储器重写控制电路1304从非法访问检测电路1307接收重写地址1302、快闪存储器重写开始信号1303和非法访问检测信号1308,并且非法访问检测信号1308没有表示非法访问时,快闪存储器重写控制电路1304在重写地址1302指定的快闪存储器FRM的区域上执行重写。此时提供用来启动重写的时序通过快闪存储器重写开始信号1303定义。另外,虽然用于提供要写入到快闪存储器FRM的数据的信号布线在图13中被省略以避免附图复杂,但是要写入的数据通过总线205从微处理器CPU被提供至快闪存储器FRM。
虽然后面使用图14示出了非法访问检测电路1307的一个例子,但是非法访问检测电路1307响应于来自存储器保护单元204的非安全程序选择信号1306、上述的保护信息选择信号1305以及上述的快闪存储器重写开始信号1303而形成了非法访问检测信号1308,并将其提供至快闪存储器重写控制电路1304。
存储器保护单元204设有图3和图7A所示的配置。形成在拾取地址比较电路301中的非安全程序区域信号709被提供到非法访问检测电路1307作为上述的非安全程序选择信号1306。在第二实施例中,存储器保护单元204用来检测来自微处理器CPU的地址(PC地址306)是指定了安全程序地址还是非安全程序地址。
如图7A所示,拾取地址比较电路301在其中接收来自快闪存储器FRM的安全地址信息304(安全程序上限地址304-U、安全程序下限地址304-D)以及来自微处理器CPU的PC地址306。当PC地址306指定安全地址信息限定的安全程序区域的内部时,安全程序区域信号707(参见图7A)变为高电平,且非安全程序区域信号709变为低电平。另一方面,当PC地址306指定安全程序区域以外的非安全程序区域时,安全程序区域信号707变为低电平,且非安全程序区域信号709变为高电平。因此,当布置在非安全程序区域中的非安全程序正被执行时,非安全程序区域信号709即非安全程序选择信号1306变为高电平。
非法访问检测电路1307根据非安全程序选择信号1306是高电平还是低电平来确定是执行非安全程序还是执行安全程序。另外,非法访问检测电路1307基于保护信息选择信号1305来确定是指定在快闪存储器FRM中的保护信息区域1202的重写还是指定在保护信息区域1202以外的区域的重写。此外,非法访问检测电路1307根据快闪存储器重写开始信号1303来确定快闪存储器FRM的重写时序。换句话说,非法访问检测电路1307基于来自微处理器CPU的开始信息来确定在快闪存储器重写开始信号1303表示的时序处是否在进行非法访问。
当非安全程序选择信号1306表示非安全程序正被执行,且保护信息选择信号1305表示保护信息区域1202时,非法访问检测电路1307形成非法访问检测信号1308以禁止快闪存储器重写控制电路1304对快闪存储器FRM的重写。非法访问检测信号1308在快闪存储器重写开始信号1303表示的时序处形成。
因此,可以禁止快闪存储器FRM中的保护信息区域120被重写在非安全程序中。快闪存储器FRM中的保护信息区域120被允许重写在安全程序中。
图14是示出根据第二实施例的非法访问检测电路1307的配置的框图。在相同附图中,附图标记1400是三输入与电路,附图标记1401是触发器电路。上述保护信息选择信号1305、快闪存储器重写开始信号1303和非安全程序选择信号1306被输入到三输入与电路1400。三输入与电路1400的输出被提供到触发器电路1401的设置端子(设置)。微型计算机LSI的重置信号RST被提供到触发器电路1401的清零端子(清零)。
虽然没有具体限制,但触发器电路1401具有与图7所示触发器电路703相似的配置。即,在触发器电路1401(保持电路)中,其设置端子(设置)被提供有高电平,使得其输出端子(Q)变为高电平。当输出端子(Q)变为高电平时,即使设置端子(设置)被提供低电平,输出端子(Q)也维持在高电平,直到清零端子(清零)被提供高电平。
重置信号RST从微型计算机LSI的外部被提供到微型计算机LSI的电路块。例如,重置信号RST甚至被提供到微处理器CPU,如图13所示。虽然没有具体限制,但在第二实施例中,重置信号RST变为高电平,使得微型计算机LSI进入重置状态。
当设置的地址指定在快闪存储器FRM中的保护信息区域1202时,图13所示的快闪存储器重写地址设置寄存器1300形成高电平的保护信息选择信号1305。另一方面,当设置的地址指定在快闪存储器FRM中的除了保护信息区域1202以外的区域(例如非安全程序区域1200)时,快闪存储器重写地址设置寄存器1300形成低电平的保护信息选择信号1305。此外,在提供用来重写快闪存储器FRM的时序处,图13所示的快闪存储器开始寄存器1301将快闪存储器重写地址设置寄存器1300置于高电平。当执行非安全程序时,非安全程序选择信号1306变为高电平。当执行安全程序时,非安全程序选择信号1306变为低电平。
因此,如果在重写快闪存储器FRM中的保护信息区域1202时执行非安全程序,则三输入与电路1400的输出信号变为高电平。换句话说,当进行尝试来在非安全程序中重写快闪存储器FRM中的保护信息区域1202时,三输入与电路1400的输出信号变为高电平。由于来自三输入与电路1400的高电平输出信号被提供到触发器电路1401的设置端子(设置),触发器电路1401的输出端子(Q)的电压变为高电平,且非法访问检测信号1308变为高电平。
在非法访问检测信号1308保持到高电平的情况下,快闪存储器重写控制电路1304禁止向提供的重写地址1302指定的保护信息区域1202写入。触发器电路1401将输出端子(Q)维持在高电平,直到重置信号RST变为高电平。因此,快闪存储器重写控制电路1304禁止向保护信息区域1202写入,直到微型计算机LSI重置。因此,虽然入侵程序重复攻击,但也可以防止快闪存储器FRM的保护信息区域1202被重写。
另一方面,如果在快闪存储器FRM中的保护信息区域1202被重写时执行安全程序,则三输入与电路1400的输出信号变为低电平。换句话说,当进行尝试来在安全程序中重写快闪存储器FRM中的保护信息区域1202时,三输入与电路1400的输出信号变为低电平。由于三输入与电路1400的输出信号变为低电平,触发器电路1401的输出端子(Q)的电压变为低电平,且非法访问检测信号1308也变为低电平。
在非法访问检测信号1308保持到低电平的情况下,快闪存储器重写控制电路1304允许向提供的重写地址1302指定的保护信息区域1202写入。即,当在安全程序中对快闪存储器FRM中的保护信息区域1202进行访问时,得到允许使得可以重写保护信息区域1202。
根据第二实施例,当进行尝试来在非安全程序中重写快闪存储器FRM中的保护信息区域1202时,从非法访问检测电路1307输出非法访问检测信号1308,且因此快闪存储器重写控制电路1304禁止向快闪存储器FRM中的保护信息区域1202写入。这种写入禁止持续且无法被释放,直到微型计算机LSI重置。由此,可以防止快闪存储器FRM中的保护信息区域1202被非法写入。由于可以防止保护信息区域1202被非法写入,可以防止安全漏洞通过非安全程序形成到安全程序中,且由此保护安全程序。
此外,当在安全程序中对快闪存储器FRM中的保护信息区域1202进行重写时,快闪存储器重写控制电路1304允许向快闪存储器FRM的保护信息区域1202写入。因此,当在预先写入在快闪存储器FRM中的RTOS的程序(安全程序)中发现故障时,保护信息区域1202中的信息被重写,使得安全程序区域1201可以在安全程序处重写。此后,故障被校正的RTOS(安全程序)被写入到可重写的安全程序区域1201中。在写入校正的RTOS之后,保护信息区域1202中的信息被重写,使得安全程序区域1201被禁止在安全程序中写入。由此,即使在安全程序中发现故障时,也可以校正安全程序。
例如,提供商PRD传送已经校正故障的RTOS和适合通过网络NTW(参见图1)来重写快闪存储器FRM的安全程序。这些传送的安全程序被下载到微型计算机LSI并被执行。即,可以校正写入在快闪存储器FRM中且预先提供的微型计算机LSI的RTOS。
此外,第一实施例中描述的安全地址信息304在提供商PRD销售微型计算机之前被写入到保护信息区域1202中。然而,根据第二实施例,用户USR能够在用户USR购买微型计算机之后重写保护信息区域1202。因此,例如,可以根据需要来后续改变安全程序区域等的大小。
(第三实施例)
图15是示出根据第三实施例的微型计算机的配置的框图。由于图15所示的微型计算机LSI的配置类似于图2所示的微型计算机,将主要描述它们之间的不同点。另外,除了微型计算机LSI外,如图2中那样,在图15中甚至示出了服务器P-SV和网络NTW。
在新的半导体商业销售模型中,如图1所示,提供商PRD将如RTOS的安全程序预先写入到快闪存储器FRM中。从提供商PRD销售设有其中写入RTOS的快闪存储器FRM、微处理器CPU等的微型计算机LSI。用户USR将用户USR生成的用户程序U-AP等写入到购买的微型计算机LSI中的快闪存储器FRM。
在这种情况下,诸如当用户USR对存储在购买的微型计算机LSI中的快闪存储器FRM中的如RTOS的安全程序执行版本升级或校正其不便等时,执行版本升级的RTOS或将校正的RTOS存储在服务器P-SV中。在这种情况下,经版本升级的RTOS或经校正的RTOS被加密且存储在服务器P-SV中。因而,即使当用户USR使进行版本升级的RTOS或校正的RTOS通过网络传送以便下载进行版本升级的RTOS或校正的RTOS时,进行版本升级的RTOS或校正的RTOS被第三方盗取,也难以运行进行版本升级的RTOS或校正的RTOS。
通过网络NTW传送的程序(进行版本升级的RTOS或校正的RTOS)通过通信功能电路200来接收,且在解密时经由总线205由微处理器CPU传递到其相应的加密/解密功能电路。通过加密/解密功能电路解密且没有经受加密的程序由图2的微处理器CPU存储在易失性存储器203中。
在新的半导体商业销售模型中,用户USR生成用于操作微处理器CPU的非安全程序。即,用户USR能够生成程序,所述程序是非安全程序但是能够任意操纵微处理器CPU。因此,用户USR能够生成操作微处理器CPU的入侵程序。虽然可以通过第一实施例中描述的存储器保护单元204来实现对存储在易失性存储器203和快闪存储器FRM中的安全数据的保护,但是微处理器CPU和易失性存储器203对入侵的抵抗较弱,且存在发现安全漏洞的风险,并且微处理器CPU和易失性存储器203经受入侵。
在第三实施例中,加密/解密功能电路201-A(解密电路)通过专用信号布线1500耦合到快闪存储器重写电路202-A。快闪存储器重写电路202-A通过专用信号布线1501耦合到快闪存储器FRM。
加密/解密功能电路201-A与加密/解密功能电路201不同,其通过信号布线1500传送经解密和未加密的程序至快闪存储器重写电路202-A。快闪存储器重写电路202-A与快闪存储器重写电路202不同。快闪存储器重写电路202-A通过专用信号布线1501将传送来的未加密程序传送到快闪存储器FRM,并且在快闪存储器FRM中写入程序。
因此,由微处理器CPU从通信功能电路200(通信电路)传送到加密/解密功能电路201-A的加密程序被加密/解密功能电路201-A解密。经解密和未加密的程序(数据)没有通过微处理器CPU访问,且通过信号布线1500被直接提供到快闪存储器重写电路202-A。此外,提供到快闪存储器重写电路202-A的未加密的程序(数据)也不能由微处理器CPU访问,且通过信号布线1501被直接提供到快闪存储器FRM。
即,未加密的程序(数据)可以被写入到快闪存储器FRM,而没有干预微处理器CPU和易失性存储器203。
当考虑来自微型计算机LSI外部的入侵时,难以从微型计算机LSI外部任意操作微处理器CPU。因此,例如即使未加密的程序(数据)通过微处理器CPU传递,也难以入侵程序。然而,在新的半导体商业销售模型中,用户生成能任意操作微处理器CPU的程序。因此存在例如在未加密的程序通过微处理器CPU传递时未加密的程序被盗取的风险。在第三实施例中,未加密的程序通过快闪存储器重写电路202-A直接从加密/解密功能电路201-A提供到快闪存储器FRM,没有经过微处理器CPU和易失性存储器203,并且被写入到快闪存储器FRM中。因此,可以保护程序不被入侵。
在第三实施例中,即使微处理器CPU可以被入侵程序任意操作,由于下载的未加密程序(数据)没有被微处理器CPU访问,也可以防止程序被盗取。
(第四实施例)
图16是示出根据第四实施例的微处理器CPU的配置的框图。图16有代表性地示出第一实施例至第三实施例描述的微处理器CPU的配置。虽然微处理器CPU具有各种电路块,但在图16中只示出了与第四实施例的描述相关的电路块。
在相同附图中,附图标记1600表示控制单元,附图标记1601表示通用寄存器组,附图标记1602表示第一堆栈指针,附图标记1603表示第二堆栈指针,附图标记1604表示程序计数器,附图标记1605表示算术单元。
通用寄存器组1601设有多个通用寄存器R0至Rn。通用寄存器R0至Rn分别存储在微处理器CPU执行处理时的算术数据或/和地址。存储在通用寄存器R0至Rn中每个的地址例如被用作在微处理器CPU执行处理时的用于快闪存储器FRM或/和易失性存储器203的地址。
控制单元1600根据存储在快闪存储器FRM中的安全程序和非安全程序,控制通用寄存器组1601中的通用寄存器、算术单元1605、第一堆栈指针1602、第二堆栈指针1603和程序计数器1604。在控制单元1600对这些电路块的控制下,通过微处理器CPU执行根据安全程序和非安全程序中每个的处理。
微处理器CPU以时分方式执行安全程序和非安全程序二者。即,如RTOS的安全程序和如用户程序U-AP的非安全程序二者以时分方式通过一个微处理器CPU来执行。
程序计数器1604形成第一实施例至第三实施例描述的PC地址306。即,当微处理器CPU执行安全程序时,程序计数器1604形成指定配置安全程序的指令的PC地址306。类似地,当执行非安全程序时,程序计数器1604形成指定配置非安全程序的指令的PC地址306。虽然没有具体限制,但在微处理器CPU执行非安全程序时,第一堆栈指针1602输出指定堆栈区域的地址。此外,当微处理器CPU执行安全程序时,第二堆栈指针1603输出指定堆栈区域的地址。
算术单元1605在例如存储在通用寄存器R0至Rn中的数据之间进行算术运算,并且将运算结果存储在通用寄存器中作为算术数据或地址。
如上所述,微处理器CPU以时分方式执行安全程序和非安全程序。因此,需要采取措施来防止在执行安全程序时产生的安全数据在非安全程序执行时被读取。
当微处理器CPU运行时,第一堆栈指针1602、第二堆栈指针1603和程序计数器1604指定快闪存储器FRM或/和易失性存储器203等的地址,但是没有在其中存储安全数据。此外,第一堆栈指针1602、第二堆栈指针1603和程序计数器1604指定的存储器(快闪存储器FRM和易失性存储器203)可以通过存储器保护单元204来保护。如第一实施例所述,例如,存储器被分成安全程序区域和非安全程序区域,且非安全程序对安全程序区域的访问被限制,由此使得可以保护存储器。
另一方面,通用寄存器R0至Rn在其中存储算术数据或/和地址。例如,当执行安全程序时,作为安全数据的算术数据存储在通用寄存器R0至Rn中。当存储在通用寄存器R0至Rn中的数据被非安全程序读取时,安全数据被盗取。接着将利用图17来描述盗取存储在通用寄存器R0至Rn的每个寄存器中的数据的例子。
图17是示出微处理器CPU的操作的流程图,其中在执行安全程序时产生硬件中断。在图17中,HDW表示微处理器CPU硬件执行的处理,NSP表示由微处理器CPU通过执行非安全程序完成的处理。图17示出其中在产生硬件中断时、处理被分支以中断非安全程序定义的处理的例子。
首先,在步骤SH00中,微处理器CPU开始安全程序(开始)。接着,在步骤SH01中,硬件中断被认为已经发生(中断发生)。在步骤SH02中响应于中断发生来设置中断标志(中断标志设置)。
接着,在步骤SH03时,确定中断条件(中断条件确定)。在步骤SH04中,中断标志被清零(中断标志清零)。此后,在步骤SH05中,通用寄存器R0至Rn的值例如被保存到第二堆栈指针1603定义的堆栈区域中,使得在中断处理之后,可以返回通用寄存器R0至Rn的值(保存通用寄存器的值)。在其中保存通用寄存器R0至Rn的值之后,在步骤SH06处理被分支到中断处理(中断分支)。
在中断分支的情况下,处理接着分支到非安全程序。在步骤SN00,微处理器CPU执行其中通过非安全程序定义的处理内容的中断处理(中断处理)。在步骤SN01,微处理器CPU执行返回指令(RET)。
在执行返回指令(RET)的情况下,微处理器CPU执行步骤SH07。在步骤SH07中,在步骤SH05保存的通用寄存器R0至Rn的值从第二堆栈指针1603指定的堆栈区域返回到通用寄存器R0至Rn(通用寄存器的值返回)。在步骤SH08中,结束安全程序的执行(结束)。
因此,当产生中断时,保存在执行安全程序时通用寄存器R0至Rn的值,但是在通用寄存器R0至Rn保持其值的状态下在步骤SN00中执行非安全程序定义的中断处理。因此,在中断处理中(步骤SN00)变得可以读取存储在每个通用寄存器中的安全数据。例如,入侵程序被生成为非安全程序且中断被重复产生,由此使得盗取了存储在通用寄存器R0至Rn中存储的安全数据。
在第四实施例中,提供了设有微处理器CPU的微型计算机LSI,其能够保护存储在通用寄存器R0至Rn中的数据。在第四实施例中,存储在通用寄存器R0至Rn中的数据保护通过安全程序和通用寄存器清零控制电路的通用寄存器清零处理来实现。接着将描述通过安全程序和通用寄存器清零控制电路的通用寄存器清零处理。
<安全程序的通用寄存器清零>
图18是示出根据第四实施例的微处理器CPU的操作的流程图。图18是示出微处理器CPU的操作的流程图,其中如图17那样,在如RTOS的安全程序执行时产生硬件中断。在图18中,HDW表示在微处理器CPU的硬件中执行的处理,NSP表示通过执行非安全程序完成的处理,SSP表示通过执行安全程序完成的处理。图18也示出其中在产生硬件中断时、处理被分支以中断非安全程序定义的处理的例子。
通过步骤SH00、SH01、SH02和SH08来实现硬件完成的处理HDW。此外,通过执行安全程序完成的处理SSP通过步骤SS00至SS09来实现。通过执行非安全程序完成的处理NSP通过步骤SN00和SN01来实现。
在步骤SH00中,如RTOS的安全程序开始其操作(开始)。接着,在步骤SH01设定已经产生中断(中断产生)。在中断产生的情况下,在步骤SH02中将中断标志例如设置成1(中断标志设置)。
另一方面,在开始其操作的安全程序(ROTS)中,在预定周期中执行针对上述中断标志的检查(确定)。即,在通过执行安全程序完成的处理SSP中,微处理器CPU在步骤S00中执行任意安全程序(安全程序执行)。在步骤S00执行安全程序之后,微处理器CPU在步骤SS01确定中断标志是否被设置为1。如果没有设置中断标志,微处理器CPU返回到步骤SS00,在此执行任意安全程序。另一方面,在中断标志被设置为1时,接着通过微处理器CPU执行步骤SS02。由此,确定中断标志是否被周期性地设置为1。当中断标志没有被设置为1时,重复执行任意安全程序。
接着,微处理器CPU执行安全程序来由此在步骤SS02确定中断条件(中断条件确定)并且在步骤SS03中清零中断标志(中断标志清零)。
由于在步骤SS03中清零了中断标志,图17所示的步骤SH03(中断条件确定)至SH07(返回每个通用寄存器的值)没有在硬件处理HDW中执行。
在步骤SS03后的步骤SS04中,微处理器CPU将通用寄存器R0至Rn的值保存到第二堆栈指针1603指定的堆栈区域中(保存每个通用寄存器的值)。在保存通用寄存器R0至Rn的值之后,微处理器CPU执行步骤SS05。在步骤SS05,微处理器CPU清零通用寄存器R0至Rn。例如,通过在通用寄存器R0至Rn中分别写入预定值来清零通用寄存器R0至Rn的值。
在清零通用寄存器R0至Rn之后,微处理器CPU在步骤SS06将要使用的堆栈指针从第二堆栈指针1603移动到第一堆栈指针1602。接着,在步骤SS07,微处理器CPU执行软件中断指令(CALL)。这时,中断指令要调用的程序是非安全程序。调用的非安全程序执行的处理NSP与图17所示的处理NSP相同。由于在处理NSP中微处理器CPU执行的步骤也与图17所示的步骤SN00至SN01相同,省略对它们的描述。另外,由于在执行非安全程序时在步骤SS06中堆栈指针切换到第一堆栈指针1602,非安全程序使用第一堆栈指针1602来执行。
通过在处理NSP时由微处理器CPU执行步骤SN01,微处理器CPU恢复安全程序的处理。即,接着执行步骤SS08。在步骤SS08中,要使用的堆栈指针从第一堆栈指针1602切换到第二堆栈指针1603(堆栈指针的切换)。在步骤SS09中,在步骤SS04中保存的通用寄存器R0至Rn的值从切换的第二堆栈指针1603指定的堆栈区域返回到通用寄存器R0至Rn(每个通用寄存器的值的返回)。
在步骤SS09之后,微处理器返回到步骤SS00。随后步骤SS00和SS01重复执行,直到中断标志被设置为1。当中断标志设置为1时,步骤SS02至SS09以及SN00至SN01执行。此外,当安全程序结束时,步骤SH08执行(结束)。
由此,即使在执行安全程序时产生硬件中断,存储在通用寄存器R0至Rn的安全数据(算术数据、地址)也在非安全程序执行之前被微处理器CPU清零。因此,可以防止安全数据被盗取。
<通用寄存器清零控制电路>
在图18所示的通过安全程序的通用寄存器清零中,微处理器CPU例如将预定值写入到通用寄存器R0至Rn中的每个中,由此清零寄存器R0至Rn中的每个。
当微处理器CPU执行的安全程序是RTOS时,如果中断在预定时间内完成,则可以保持实时特性。因此,如果安全程序的通用寄存器清零如中断处理那样在预定时间内完成,则可以保持实时特性。即使从中断产生到执行相应中断处理的响应略微落后于清零通用寄存器的处理,关于实时特性也不会有问题。
然而,诸如用于控制电机的应用程序的微处理器LSI要求在中断产生后在较短时段内执行相应中断处理。即,要求缩短响应时间。在第四实施例中,微处理器CPU设有通用寄存器清零控制电路且因此能够实现缩短响应时间。
图19是示出根据第四实施例的微处理器CPU的配置的框图。由于图19示出类似于图16所示的微处理器的微处理器,将主要描述它们之间的不同点。在图19所示的微处理器CPU中,通用寄存器清零控制电路1900被添加到图16所示的微处理器。通用寄存器清零控制电路1900耦合到控制单元1600和通用寄存器组1601并且根据来自控制单元1600的指令来清零包括在通用寄存器组1601中的通用寄存器R0至Rn。
根据第四实施例的微处理器CPU具有接受可屏蔽中断(第一中断)和不可屏蔽中断(与第一中断不同的第二中断)的功能。当微处理器CPU接受不可屏蔽中断时,控制单元1600输出用于清零通用寄存器R0至Rn的指令至通用寄存器清零控制电路1900。
图20是示出图19所示的微处理器CPU的操作的流程图。图19所示的微处理器CPU的操作将利用图20来描述。由于图20所示的流程图类似于图18所示流程图,将主要描述不同部分。即使在图20中,HDW也表示微处理器CPU硬件执行的处理,NSP表示通过执行非安全程序完成的处理,且SSP表示通过执行安全程序完成的处理。
硬件执行的处理HDW通过步骤SH00至SH08和SH10至SH13来实现。此外,通过执行安全程序完成的处理SSP通过步骤SS00至SS09来实现。通过执行非安全程序完成的处理NSP通过步骤SN02至SN05实现。
由于通过执行安全程序完成的处理SSP(步骤SS00至SS09)与图18描述的处理SSP(步骤SS00至SS09)相同,将省略对其的详细描述。通过执行非安全程序完成的处理NSP的步骤SN02被描述作为图20中的低速中断处理,但是与图18中描述的步骤SN00相同。步骤SN03与图18中描述的步骤SN01相同。因此,也将不再描述步骤SN02和SN03。
在步骤SH00中,RTOS(安全程序)开始其操作(开始)。接着,设定中断已经在步骤SH01产生(中断产生)。接着,在步骤SH10确定在步骤SH01接受的中断是否是高速中断(高速中断?)。在第四实施例中,不可屏蔽中断对应于高速中断。即,当在步骤SH01中接受不可屏蔽中断时,在步骤SH10确定为高速中断。另一方面,当在步骤SH01接受可屏蔽中断时,在步骤SH10确定为不是高速中断。
当在SH10确定中断不是高速中断时,接着执行步骤SH02。在步骤SH02,中断标志被设置为1。通过如图18所述由微处理器CPU执行安全程序,在预定周期中执行关于中断标志是否被设置为1的检查(确定)。当中断标志在步骤SH02被设置为1时,在通过执行图18所示的安全程序完成的处理SSP中对通用寄存器R0至Rn清零。在通用寄存器R0至Rn被清零之后,在通过执行非安全程序完成的处理NSP中执行低速中断处理(步骤SN02)和RET指令(步骤SN03)。
当在步骤SH10确定中断是高速中断时,接着在步骤SH03确定中断条件(中断条件确定)。在步骤SH04,中断标志被清零(中断标志清零)。在中断标志被清零之后,通用寄存器R0至Rn的值保存在第二堆栈指针1603指定的堆栈区域中(保存通用寄存器的值)。
在保存了通用寄存器的值之后,在步骤SH11控制单元1600指示通用寄存器清零控制电路1900清零通用寄存器R0至Rn。响应于该指令,通用寄存器清零控制电路1900清零通用寄存器R0至Rn(清零通用寄存器)。
在步骤SH11之后的步骤SH12,要使用的堆栈指针从第二堆栈指针1603切换到第一堆栈指针1602(堆栈指针的切换)。随后,在步骤SH06处理被分支到中断处理(中断分支)。
利用中断分支,处理接着被分支到非安全程序。在步骤SN04,微处理器CPU执行其中处理内容通过非安全程序限定的中断处理(高速中断处理)。在步骤SN05,微处理器CPU执行返回指令(RET)。
利用返回指令(RET)的执行,微处理器CPU执行步骤SH13。在步骤SH13中,要使用的堆栈指针从第一堆栈指针1602切换到第二堆栈指针1603(堆栈指针的切换)。
在堆栈指针切换到第二堆栈指针1603之后,在步骤SH05中保存的通用寄存器R0至Rn的值在步骤SH07从第二堆栈指针1603指定的堆栈区域返回到通用寄存器R0至Rn(通用寄存器的值的返回)。在步骤SH14,安全程序的执行结束(结束)。
在步骤SS05中,微处理器CPU通过执行安全程序来清零通用寄存器R0至Rn中的每个。另一方面,在步骤SH11中,通用寄存器清零控制电路1900清零通用寄存器R0至Rn。通用寄存器清零控制电路1900可以在比例如微处理器CPU逐一清零通用寄存器R0至Rn的情况更高的速度来清零通用寄存器R0至Rn。因此,当接受高速中断时,可以在较短响应时间中来执行高速中断处理SN04。为此,微型计算机LSI甚至可以应用到其中要求中断处理在较短响应时间中执行的应用中。此外,在这种情况下由于在执行非安全程序之前清零通用寄存器R0至Rn,也可以防止安全数据被盗取。
此外,由于堆栈指针切换,非安全程序变得难以抓住安全程序中保存到通用寄存器的堆栈区域。由此,变得可以进一步防止安全数据被盗取。
根据第四实施例,购买了具有写入了如RTOS的安全程序的快闪存储器FRM的微型计算机LSI的用户USR能够在诸如电机控制的要求高速中断的每个应用中使用微型计算机LSI。此外,用户USR生成的用户程序使得可以防止安全程序被盗取。也可以维持销售微型计算机LSI的提供商的价值。
<附记>
在本说明书中公开了多个发明。它们中的一些在权利要求中被描述,但是还公开了它们以外的发明。下面将列出其代表性的例子。
(A)一种半导体装置,包括中央处理单元和其中存储了由中央处理单元执行的安全程序和非安全程序的非易失性存储器;
其中,中央处理单元能够接受多个彼此不同的中断并且在中断产生时执行与中断对应的中断处理;
其中,中央处理单元包括:
控制单元,根据程序来操作,
多个寄存器,用来保持控制单元操作时的信息;
堆栈指针,指定在产生中断时用于保存寄存器值的区域;以及
寄存器清零控制电路,清零保持在寄存器中的值;
其中,在寄存器的值保存在堆栈指针指定的区域中时,中央处理单元响应于中断中的第一中断来清零每个寄存器并且执行与第一中断对应的预定中断处理,以及
其中,在寄存器中保持的值被保存到堆栈指针指定的区域中时,中央处理单元响应于中断中的与第一中断不同的第二中断来通过寄存器清零控制电路清零寄存器,并执行与第二中断相应的预定中断处理。
(B)如以上(A)所述的半导体装置,其中通过安全程序的监视来检测第一中断的产生,并且通过执行安全程序来执行将寄存器值保存到堆栈指针指定的区域中以及清零每个寄存器,以及
其中响应于第二中断的产生,中央处理单元将寄存器值保存到堆栈指针指定的区域中并且通过寄存器清零控制电路来清零寄存器。
(C)如以上(B)所述的半导体装置,其中安全程序是实时操作系统。
(D)一种半导体装置商业销售模型,适合于销售其中并入了执行程序的中央处理单元以及耦合到中央处理单元的电可重写非易失性存储器的半导体装置,
其中,配置操作系统的安全程序存储在非易失性存储器中,且半导体装置以包括存储的安全程序的价值的价值销售,以及
其中,在购买的半导体装置中,在操作系统上运行的程序被写入到电可重写非易失性存储器。
(E)如以上(D)所述的半导体装置商业销售模型,
其中,在购买的半导体装置中,通过网络下载的程序被写入到非易失性存储器中。
(F)如以上(E)所述的半导体装置商业销售模型,
其中,下载的程序通过提供半导体装置的模型提供。
(G)如以上(F)所述的半导体装置商业销售模型,
其中,半导体装置包括许可管理单元,并且与预付价值和收费软件等同的许可信息在销售半导体装置之前被存储在许可管理单元中,以及
其中,当下载的程序是购买的半导体装置中的收费软件时,许可管理单元允许下载的程序存储在非易失性存储器中,直到程序达到与存储的许可信息等同的值。
虽然基于优选实施例具体描述了本发明人制作的上述发明,本发明不限于上述实施例。不用说,在不离开本发明主旨的范围内可以进行各种改变。

Claims (18)

1.一种半导体装置,包括:
存储器,包括存储任意程序的第一程序区域和存储其安全性要被确保的程序的第二程序区域;
中央处理单元,输出指定程序中的指令的地址;以及
存储器保护单元,基于从所述中央处理单元输出的所述地址来控制对所述存储器的访问,
其中,当通过执行所述第一程序区域中的程序而从所述中央处理单元输出的地址指定了所述第二程序区域中的第一区域时,所述存储器保护单元允许所述中央处理单元对所述存储器的访问,并且当所述地址指定了与所述第一区域不同的第二区域时,所述存储器保护单元禁止所述中央处理单元对所述存储器的访问。
2.根据权利要求1所述的半导体装置,
其中,所述其安全性要被确保的程序包括存储在所述第一区域中的第一指令和存储在所述第二区域中的第二指令,以及
其中,当所述中央处理单元执行所述其安全性要被确保的程序时,按照所述第一指令和所述第二指令的顺序来执行所述程序。
3.根据权利要求2所述的半导体装置,其中存储在所述第一程序区域中的程序包括利用所述第一区域作为分支目的地地址的指令。
4.根据权利要求3所述的半导体装置,
其中,所述中央处理单元被设有当执行程序时在其中存储数据的寄存器,以及
其中,存储在所述第一区域中的指令包括用于保存存储在所述寄存器中的所述数据的指令。
5.根据权利要求3所述的半导体装置,
其中,其安全性分别要被确保的多个程序被存储在所述第二程序区域中,以及
其中,当所述中央处理单元指定所述第一区域时,根据选择信息来执行从所述其安全性要被确保的程序中选择的程序。
6.根据权利要求2所述的半导体装置,
其中,所述存储器保护单元包括:
第一比较单元,检测从所述中央处理单元输出的地址是否指定所述第二程序区域的内部;
第二比较单元,检测从所述中央处理单元输出的地址是否指定所述第一区域的内部;以及
保持电路,基于来自所述第一比较单元的第一比较输出和来自所述第二比较单元的第二比较输出,当从所述中央处理单元输出的所述地址指定所述第一区域的内部时设定预定状态,并且维持所述预定状态直到从所述中央处理单元输出的所述地址指定所述第一程序区域,
其中,当所述保持电路处于所述预定状态时,所述存储器保护单元允许所述中央处理单元访问所述存储器。
7.根据权利要求6所述的半导体装置,包括:
电可重写非易失性存储器,
其中指定所述第二程序区域的地址信息从所述电可重写非易失性存储器供给到所述第一比较单元。
8.根据权利要求7所述的半导体装置,
其中,指定所述第二程序区域的所述地址信息包括指定所述第二程序区域的上限地址的上限地址信息以及指定所述第二程序区域的下限地址的下限地址信息,
其中,所述第一比较单元被设有:第一比较电路,比较所述上限地址信息和来自所述中央处理单元的所述地址;第二比较电路,比较所述下限地址信息和来自所述中央处理单元的所述地址;以及第一逻辑电路,基于所述第一比较电路和所述第二比较电路的输出来形成所述第一比较输出,
其中,所述第二比较单元被设有:第三比较电路,比较利用所述第二程序区域的所述上限地址作为参考来指定所述第一区域的允许地址信息与来自所述中央处理单元的所述地址;以及,第二逻辑电路,基于所述第一比较电路的输出和所述第三比较电路的输出来形成所述第二比较输出,
其中,所述保持电路包括触发器电路,所述触发器电路通过所述第二逻辑电路的所述第二比较输出来设置并且通过所述第一逻辑电路的所述第一比较输出来清零,以及
其中从所述上限地址到所述下限地址存储的每个指令通过从所述中央处理单元输出的所述地址来指定,以由此执行布置在所述第二程序区域中的程序。
9.根据权利要求8所述的半导体装置,其中所述电可重写非易失性存储器是具有所述第一程序区域和所述第二程序区域的所述存储器。
10.一种半导体装置,包括:
电可重写非易失性存储器,在其中存储了其安全性要被确保的程序;
中央处理单元,输出指定要执行的指令的地址;
存储器保护单元,检测从所述中央处理单元输出的所述地址是否指定在所述非易失性存储器内存储了所述其安全性要被确保的程序的安全程序区域;
非易失性存储器重写控制电路,控制所述非易失性存储器的重写;以及
非法访问检测电路,耦合到所述存储器保护单元并且使所述非易失性存储器重写控制电路在所述存储器保护单元检测到从所述中央处理单元输出的所述地址没有指定所述安全程序区域的内部时禁止所述重写。
11.根据权利要求10所述的半导体装置,包括:
重写开始寄存器,通过所述中央处理单元向所述重写开始寄存器设置重写开始信息;以及重写地址设置寄存器,通过所述中央处理单元向所述重写地址设置寄存器设置要重写的地址信息,
其中当所述重写开始信息被设置到所述重写开始寄存器时,所述要重写的地址信息被设置到所述重写地址设置寄存器,并且所述中央处理单元输出指定所述安全程序区域的内部的所述地址,所述非法访问检测电路允许所述非易失性存储器重写控制电路执行重写。
12.根据权利要求11所述的半导体装置,其中所述非法访问检测电路被设有保持电路,所述保持电路的状态基于所述重写开始信息、所述要重写的地址信息以及来自所述存储器保护单元的输出来设置,并且所述保持电路保持所述设置的状态直到重置所述中央处理单元。
13.根据权利要求12所述的半导体装置,
其中,所述非易失性存储器包括能够存储任意程序的非安全程序区域和其中存储保护信息的保护信息区域,以及
其中,指定所述安全程序区域的上限地址的上限地址信息和指定所述安全程序区域的下限地址的下限地址信息被存储在所述保护信息区域中。
14.根据权利要求13所述的半导体装置,
其中,所述存储器保护单元包括:
第一比较电路,比较所述上限地址信息和来自所述中央处理单元的所述地址,
第二比较电路,比较所述下限地址信息和来自所述中央处理单元的所述地址;以及
逻辑电路,基于所述第一比较电路和所述第二比较电路的输出来形成表示从所述中央处理单元输出的所述地址是否指定所述安全程序区域的内部的输出。
15.一种半导体装置,形成在半导体芯片中且设有加密的安全程序,所述半导体装置包括:
电可重写非易失性存储器;
中央处理单元,耦合到所述非易失性存储器且能够执行写入到所述非易失性存储器中的程序;
解密电路,对利用加密而提供的所述安全程序进行解密;以及
重写电路,将所述解密电路解密的所述安全程序直接写入到所述非易失性存储器中。
16.根据权利要求15所述的半导体装置,
其中,所述非易失性存储器在其中存储安全程序和非安全程序,以及
其中,当所述非安全程序通过所述中央处理单元执行时,生成从所述非安全程序至所述安全程序的分支。
17.根据权利要求16所述的半导体装置,包括:
存储器保护单元,
其中当从所述非安全程序分支至所述安全程序时,在分支目的地地址没有对应于所述安全程序的预定区域时,所述存储器保护单元禁止所述中央处理单元对所述非易失性存储器的访问。
18.根据权利要求17所述的半导体装置,包括:
通信电路,在其中接收所述加密的安全程序,
其中,接收的所述加密的安全程序通过所述中央处理单元被传递至所述解密电路。
CN201610827325.6A 2015-09-15 2016-09-14 半导体装置 Active CN106529300B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015-182140 2015-09-15
JP2015182140A JP6476098B2 (ja) 2015-09-15 2015-09-15 半導体装置

Publications (2)

Publication Number Publication Date
CN106529300A true CN106529300A (zh) 2017-03-22
CN106529300B CN106529300B (zh) 2022-07-22

Family

ID=58238838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610827325.6A Active CN106529300B (zh) 2015-09-15 2016-09-14 半导体装置

Country Status (3)

Country Link
US (1) US20170076102A1 (zh)
JP (1) JP6476098B2 (zh)
CN (1) CN106529300B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144808A (zh) * 2017-06-28 2019-01-04 瑞萨电子株式会社 半导体装置
CN110532816A (zh) * 2018-05-25 2019-12-03 瑞萨电子株式会社 存储器保护电路和存储器保护方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5908991B2 (ja) * 2011-12-21 2016-04-26 インテル・コーポレーション 安全なダイレクトメモリアクセス
US10824572B2 (en) 2016-09-09 2020-11-03 Cylance Inc. Memory space protection
JP6911611B2 (ja) * 2017-07-23 2021-07-28 株式会社三洋物産 遊技機
FR3069935A1 (fr) 2017-08-01 2019-02-08 Maxim Integrated Products, Inc. Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees
US10606771B2 (en) 2018-01-22 2020-03-31 Infineon Technologies Ag Real time stack protection
JP7383589B2 (ja) 2020-09-23 2023-11-20 株式会社東芝 情報処理装置
US20240086556A1 (en) * 2022-09-12 2024-03-14 Idaho Scientific Llc Computing data and instructions at immutable points

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1745400A (zh) * 2003-01-31 2006-03-08 松下电器产业株式会社 半导体存储卡及对其进行控制的程序
CN101071401A (zh) * 2006-05-12 2007-11-14 夏普株式会社 具有存储保护功能的计算机系统
US20130132694A1 (en) * 2006-04-20 2013-05-23 Renesas Electronics Corporation Microcomputer and method for controlling memory access
US20150082053A1 (en) * 2013-09-17 2015-03-19 Kabushiki Kaisha Toshiba Information processing apparatus and program execution method

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4099039B2 (ja) * 2002-11-15 2008-06-11 松下電器産業株式会社 プログラム更新方法
JP4338989B2 (ja) * 2003-02-20 2009-10-07 パナソニック株式会社 メモリデバイス
US20070133280A1 (en) * 2004-10-08 2007-06-14 Renesas Technology Corp. Semiconductor integrated circuit apparatus and electronic system
EP2060101B1 (en) * 2006-09-07 2018-02-07 Nokia Technologies Oy Managing information relating to secure module applications
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
JP2011150457A (ja) * 2010-01-20 2011-08-04 Sony Corp 情報処理装置およびメモリアクセス制御方法
JP2014074995A (ja) * 2012-10-03 2014-04-24 Toyota Motor Corp 情報処理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1745400A (zh) * 2003-01-31 2006-03-08 松下电器产业株式会社 半导体存储卡及对其进行控制的程序
US20130132694A1 (en) * 2006-04-20 2013-05-23 Renesas Electronics Corporation Microcomputer and method for controlling memory access
CN101071401A (zh) * 2006-05-12 2007-11-14 夏普株式会社 具有存储保护功能的计算机系统
US20070266214A1 (en) * 2006-05-12 2007-11-15 Sharp Kabushiki Kaisha Computer system having memory protection function
US20150082053A1 (en) * 2013-09-17 2015-03-19 Kabushiki Kaisha Toshiba Information processing apparatus and program execution method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144808A (zh) * 2017-06-28 2019-01-04 瑞萨电子株式会社 半导体装置
CN109144808B (zh) * 2017-06-28 2023-08-25 瑞萨电子株式会社 半导体装置
CN110532816A (zh) * 2018-05-25 2019-12-03 瑞萨电子株式会社 存储器保护电路和存储器保护方法
CN110532816B (zh) * 2018-05-25 2024-04-23 瑞萨电子株式会社 存储器保护电路和存储器保护方法

Also Published As

Publication number Publication date
US20170076102A1 (en) 2017-03-16
JP2017058873A (ja) 2017-03-23
JP6476098B2 (ja) 2019-02-27
CN106529300B (zh) 2022-07-22

Similar Documents

Publication Publication Date Title
CN106529300A (zh) 半导体装置
CN105069353B (zh) 一种基于Docker的可信容器安全加固方法
KR100832589B1 (ko) 디버깅 장치, 시스템, 방법 및 머신 판독가능한 매체
US8190917B2 (en) System and method for securely saving and restoring a context of a secure program loader
US6581159B1 (en) Secure method of updating bios by using a simply authenticated external module to further validate new firmware code
US5778070A (en) Method and apparatus for protecting flash memory
TWI581099B (zh) 積體電路裝置及控制積體電路裝置上記憶體存取的方法
KR102312131B1 (ko) 집적회로들에서의 보안 피쳐 및 키 관리
EP2854066B1 (en) System and method for firmware integrity verification using multiple keys and OTP memory
Jacob et al. How to break secure boot on fpga socs through malicious hardware
US9582675B2 (en) Protection of memory areas
JP5114617B2 (ja) 秘密鍵を保護する、セキュア端末、プログラム、および方法
US9104841B2 (en) Methods and systems for executing protected content
US20150078550A1 (en) Security processing unit with configurable access control
US20180373646A1 (en) Cache unit useful for secure execution
CN106503494A (zh) 一种带有片上闪存微控制器的固件保护单元及保护方法
CN103262092A (zh) 基于储存驱动器的防恶意软件方法和装置
CN102375947A (zh) 用于隔离计算环境的方法和系统
US9779242B2 (en) Programmable secure bios mechanism in a trusted computing system
US9798880B2 (en) Fuse-enabled secure bios mechanism with override feature
US9779243B2 (en) Fuse-enabled secure BIOS mechanism in a trusted computing system
JP2019096338A (ja) 半導体装置および半導体装置販売モデル
CN110023940A (zh) 适合于在受保护的和/或开放的运行状态下运行的设备单元以及所属的方法
US9767288B2 (en) JTAG-based secure BIOS mechanism in a trusted computing system
CN102637152B (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
GR01 Patent grant
GR01 Patent grant