微处理机的制作方法

文档序号:6594657阅读:193来源:国知局

专利名称::微处理机的制作方法
技术领域
:本发明涉及在多任务的程序执行环境下,能够防止作为执行码和处理对象的数据的不正当改变的抗捣毁的微处理机。
背景技术
:特别是向PC等的一般用户,不成为秘密地公开揭示计算机的硬件信息和操作系统(以下称为“OS”)的系统程序信息的开放系统正在广泛地普及中。在开放系统中,终端用户能够通过变更系统程序,加上所要的改良。在这种环境下,为了保护应用程序处理的信息的著作权和程序自身的著作权,需要具有预先设想系统的OS能够对应用程序采取敌对动作的秘密保护能力的硬件。实际上,已经提出了具有这种秘密保护功能的硬件,特别是微处理机(专利申请第2000-35398号,Lieetal.,“ArchitecturalSupportforCopyandTamperResistantSoftware”;ComputerArchitectureNews28(5),p168-等)。具有这种秘密保护能力的微处理机备有,在多任务环境下,不能够不正当地窥视,改变程序自身和程序处理的信息那样地,对这些信息进行秘密化的功能。这种微处理机称为抗捣毁微处理机。抗捣毁微处理机的主要目的是通过保护在终端用户的系统中工作的应用程序,保护程序和内容,网络服务的所有权者的权利。具体地说,可以举出(1)保护安装在程序上的算法,(2)保护埋入程序中的商业秘密和内容,(3)保护对程序工作的改变这样三种保护。保护安装在程序上的算法对于保护程序的所有权者是必要的。保护埋入算法中的商业秘密对于防止不正当复制程序处理的内容是必要的。对不正当改变的保护对于保护例如服务提供者的权利是必要的。利用网络服务的程序,在与服务器交换收费信息那样的应用中,正确地实施收费信息的发送工作,防止不正当改变是很重要的。作为一个实际的例子,通过在PC中解析再生DVD的程序,从而读取用于解读DVD密码的商业秘密,制作不正当地复制DVD的程序(DeCSS)是众所周知的。在公开系统中,至今已经提出了单纯地保护应用程序秘密的机构,但是本专利的申请人提出了当在几个系统上拟并列地使多个程序(来自多个不同的程序销售者的程序或来自单个程序销售者的多个不同的程序)工作时,对各个程序,与管理系统资源的OS独立地保护秘密的保护环境(专利申请第2000-35398号,第2000-135010号,第2000-333635号,第2001-024480号等)。这种保护环境称为“多重虚拟应用程序保护环境”。图18表示一般的多重虚拟的应用程序保护环境。在图18中,我们取用户12在多个软件销售者21-1~21-n中,从销售者1(21-1)购入程序的情形为例。用户12使用的系统2内装微处理机A,微处理机A具有在这个处理机上固有的秘密键A。与秘密键A对应的公开键A是公开的。软件销售者(softwarevender)1开发程序22-1,选择程序键1作为密码键,对普通文本程序22-1进行密码化制成密码程序23-1。其次,用分发方系统2的处理机A中固有的公开键A对程序键1进行密码化,作成分发键25-1。图中未画出,但是软件销售者1除了程序22-1外还开发多个不同的程序,选择与各个程序对应的程序键,作成密码化程序和分发键。这里,为了说明方便起见,我们说明一个程序。软件销售者1通过网络将密码化程序23-1和密码化分发键25-1分配给目标系统2。将分配的程序23-1和分发键25-1存储在系统的二次存储器(例如,硬盘)7中。程序23-1包含执行码和数据(初始化数据等),执行时,在保持密码化原封不动的状态中读入到在微处理机3外面的外部存储器8中。外部存储器8上的经过密码化的程序称为保护程序。微处理机A读入分发键25-1,用与公开键A对应的秘密键A对它进行解码得到程序键1。用微处理机内的保护逻辑电路(磁芯)6进行键的解码处理。其次,微处理机A通过用程序键1对程序1进行解码读入到超高速缓冲存储器4。用所定的超高速缓冲存储器算法,按照程序的执行,对每个部分进行解码和到超高速缓冲存储器3的读入,不一定将全部程序一次读入超高速缓冲存储器4。读入超高速缓冲存储器4的程序处于普通文本状态,与不进行密码化的通常的程序相同用磁芯6执行。处理程序键1和普通文本程序的部分由处理机A的磁芯6进行,没有OS介入的余地。在微处理机内的超高速缓冲存储器4,秘密键5的内容,除了处理机的方式决定的操作外,不能够从外部直接读出。此外,图中未画出,但是关于存储在超高速缓冲存储器4中的普通文本信息,用户即便从多个程序销售者21-1~21-n,购入多个不同的程序,为了在这些程序之间,保证独立地保守秘密,对于超高速缓冲存储器4的每条线,加上特定这个普通文本信息是否是用哪个密码键进行解码的信息的识别符。因为对于不同的程序销售者的,每个不同的程序,程序键分别不同,所以通过对应地加上在超高速缓冲器线中的任务和对它进行解码的键,能够保证程序的独立性。本发明要解决的课题为(1)为了实现任务的识别功能,需要将与任务ID对应地保持各程序的程序键的表保持在微处理机内部。指示这种表的设定的是管理系统的OS,需要从OS程序操作表的装置。这个表操作装置,当然必须满足保护秘密的要求。又,任务对应的键表成为保护秘密所必需的,但是由于资源有限性和成本的关系,不能够无限地增加表的数量。因此,按照系统用户的意向,OS管理是否将某个表的项目分配给哪个程序,是否如何地再利用项目是必要的。这种OS操作可能在秘密保护中造成缺陷。例如,将任务ID#1分配给某个程序键X的状态时,OS将同一个任务ID#1再分配给别的程序键Y。这时,在超高速缓冲存储器中余留给予任务ID#1的标签的超高速缓冲器线,和能够从与程序键Y对应的程序读取这个数据。这违反了保护秘密的原则。因此,作为第1课题,提供用于防止这种违反的任务状态管理和数据管理的机构。(2)为了程序密码化,存在在超高速缓冲器线单位中结束解码处理的方法和在某一条超高速缓冲器线的解码中需要多条超高速缓冲器线的数据的方法这样2种方法。前者几乎对存储器容量和线单位的替换没有影响,但是在后者中存在下列问题。在对于超高速缓冲器线的解码需要多条超高速缓冲器线的数据的方法中,当发生对存储器的随机访问时,必须读入需要的存储区域前后的存储区域。因此,产生大量的内务操作。又,因为解码结果与邻接的线的数据有关,所以存在所谓的块交换攻击的可能性。所谓的块交换攻击指的是通过攻击者适当地交换根据同一个秘密进行密码化的块信息,能够按照攻击者的意图变更系统状态的攻击。例如,攻击者从通信定时等知道配置在某个地址X上的线P是与收费工作对应的部分。而且,知道即便实施用同一个程序键进行密码化的别的线Q,也对程序提供的服务没有恶劣影响。这时,如果用线Q置换线P,则攻击者可以不影响程序的服务,只逃避收费。同样的攻击也可以应用于程序处理的数据。如果将个别的键给予所有的块中的每一个则能够解决上述问题,但是将每个块的个别密码键存储在分发键中,和用公开键对分发键进行密码化的算法变得很膨大,引起解码处理的溢出。又,对于微处理机内部需要管理这种键的膨大容量的表,从键的分发,管理成本方面来说这是不现实的。进一步,一般地说预先配置给程序的地址不一定总是恒定的,存在着根据目标系统的构成(与其它的程序共有的程序库和共有存储器的构成),变更配置的地址的情形。将这称为再定位。当进行每个块的密码化时,必须考虑再定位的问题。因此,作为第2课题,提供处理溢出小难以进行数据交换攻击,具有考虑到再定位的秘密信息管理能力的微处理机。(3)程序(执行码),数据,上下文信息是应用程序的3个要素,但是它们与在处理机内部的处理不同。执行码和数据构成程序本体,上下文信息是当中断执行任务时为了再开始任务,保存在存储器上的状态信息。一般,微处理机内部的程序是不能改写的,但是如果变更超高速缓冲存储器上的数据,则将数据写回到外部存储器。又,程序和数据访问超高速缓冲器线单位,但是上下文信息形成不能存储在单条超高速缓冲器线中那样的大小的情形是很多的。当切换上下文信息时,将跨在多条超高速缓冲器线上的信息汇集起来进行读写。当将性质不同的这些信息与外部存储器交换时,需要各个密码处理,但是另一方面有望削减硬件成本。因此,作为第3课题,提供能够使对于这些信息的密码处理硬件共同化的微处理机。为了解决第1课题,实际上比较在超高速缓冲器线上的任务的识别符和由OS分配的任务的识别符,只有当一致时,才允许访问超高速缓冲器线,当不一致时,废弃超高速缓冲器线的内容。为了实现这一点,微处理机备有将识别符给予可以取多个状态的任务,与任务识别符对应地保持任务状态的任务状态表,保持现在执行中的任务识别符的任务寄存器,当存在任务要求时,将在用所定程序键进行密码化的状态中存储在外部存储器中的程序读入超高速缓冲器线单位的接口,根据程序键对于每条超高速缓冲器线产生解码键,对读入的内容进行解码的密码处理部分,由各条具有标签的多条超高速缓冲器线构成的,对于每条超高速缓冲器线,将与用于这条超高速缓冲器线解码的解码键对应的任务识别符保持在标签上的第1超高速缓冲存储器,和比较保持在超高速缓冲器线的标签上的任务识别符和上述任务寄存器的值,当值不一致时废弃超高速缓冲器线的内容的访问验证部分。为了解决第2课题,可以根据很少的秘密用对每个块不同的键进行解码。为了实现这一点,微处理机备有下列装置。(a)通过指定存储根据各个固有的程序键经过密码化的多个程序的外部存储器的地址,发布读出要求的处理机磁芯;(b)与处理机磁芯的读出要求相应,读出外部存储器的指定地址的数据块的接口;(c)与给予每个作为程序的执行控制单位的任务的任务识别符对应,保持程序键的任务键表;(d)对每个任务识别符,将配置了程序的前头地址作为偏移值进行保持的偏移表;(e)从由读出要求指定的地址和由上述偏移表的任务识别符指定的偏移值计算相对地址值,产生用程序键对这个相对地址值进行密码化的块对应键的键产生部分;(f)用块对应键对读出的数据块进行解码的密码处理部分;和(g)将经过解码的数据块读入超高速缓冲器线单位中的超高速缓冲存储器。又,当中断执行任务时,常常通过系统的资源管理变更配置了程序和数据的物理地址(再定位),但是为了正常地执行对每个块经过密码化的程序的解码,需要将信息配置在一定的地址空间中。因此,当计算由目标地址和程序开始地址(偏移地址)之差表示的相对地址时,用假想地址。通过这样做,能够有效地防止块改换,并且能够高效率地利用具有限制的物理存储器。为了解决第3课题,微处理机备有下列装置(a)将在密码化状态存储在外部存储器中的程序的执行码和数据取入每条超高速缓冲器线的接口,(b)具有保持作为程序的开始地址的偏移值的偏移表,在普通文本状态中将执行码保持在每条超高速缓冲器线中的第1超高速缓冲存储器,(c)具有保持数据的地址范围的地址范围寄存器,在普通文本状态中将数据保持在每条超高速缓冲器线中的第2超高速缓冲存储器,(d)保持通过共同总线与第1和第2超高速缓冲存储器连接的,用于程序密码化的密码键的键值表,和(e)通过共同总线与第1和第2超高速缓冲存储器总线和键值表连接的,分别从键值表和第1超高速缓冲存储器接受密码键和偏移值,根据该密码键和偏移值对执行码进行解码供给第1超高速缓冲存储器,分别从键值表和第2超高速缓冲存储器接受密码键和上述地址范围,根据密码键和地址范围对数据进行解码,供给第2超高速缓冲存储器的密码处理部分。通过这种构成,能够实现具有在超高速缓冲存储器之间共有的高效率的密码处理构造的微处理机。图1是表示与本发明的实施形态有关的多体应用程序保护环境的图。图2是内装在图1的目标系统中的微处理机的概略构成图。图3是表示用于实现图1的多体保护环境的块对应密码键产生程序的图。图4是表示在本发明的实施形态中使用的信息配置记述符和分发键的构成,以及配置这些信息的假想地址空间的存储器地图的图。图5是表示任务控制指令的例子的图。图6是表示任务状态迁移的例子的图。图7是表示在微处理机上任务登记工作的图。图8是表示任务登记的处理程序的程序操作图。图9是图2所示的微处理机内的指令超高速缓冲存储器的概略构成图。图10是图2所示的微处理机内的键值表和高速密码键处理模块的概略构成图。图11是图2所示的微处理机内的数据超高速缓冲存储器的概略构成图。图12是表示开始执行任务的处理程序的程序操作图。图13是表示指令超高速缓冲存储器的读入(取出)程序的程序操作图。图14是表示数据超高速缓冲存储器内部的数据构造的图。图15是表示任务保存状态(SUSPEND)的处理程序的程序操作图。图16是表示再开始中断的任务的处理程序的程序操作图。图17是表示结束(削除)任务的处理程序的程序操作图。图18是已有的多体应用程序保护环境的图。具体实施例方式下面,我们一面参照附图一面说明本发明的实施形态。图1是用于说明应用本发明的多体的应用程序保护环境的图。软件销售者121制作程序122,将它分发给内装在用户112的系统102中的微处理机A。为了保护分发的程序,对普通文本程序122进行密码化。具体地说,通过用软件销售者121选择的程序键对执行码和由经过初始化的数据等的数据构成的程序进行密码化,用目标系统102的处理机A的公开键A对用于密码化的程序键进行密码化,产生分发键。这时,软件销售者121将程序和初始化的数据分割成多个块,用不同的键对每个块进行密码化。但是,软件销售者121最好不选择数目与块数相应的键,只选择为了产生多个键的成为基本的常数Cx,和对根据Cx产生的多个键进行密码化的键Kx这样2个键。我们将在后面述说它的详细情况,但是根据这2个常数,用不同的键对每个块进行密码化,产生密码化程序123。而且,用处理机A的公开键A对Cx和Kx进行密码化,制作分发键Kx[A],Cx[A]。此外,在图1中,为了说明方便起见,我们只描述单个软件销售者,但是因为设定了多体环境,所以用户112从多个软件销售者,分别购入块密码化程序,存储在系统102中。分发的块密码化程序与分发键一起暂时存储在硬驱动盘等的二次存储器107中,执行时读入在存储器108中确保的区域109-1。这个到存储器的读入是由管理系统102的资源的OS110进行的。也可以将程序本体和分发键存储在同一个文件中,也可以存储在各自的文件中。存储器108也具有用于由同一个销售者121产生的不同的程序和来自其它销售者的程序的区域109-n,但是为了说明方便起见,我们省略对它们的说明。处理机A读入分发键125,用秘密键A,在保护逻辑电路106中对分发键进行解码。用经过解码的键将配置在存储器108中的密码化的程序以块为单位读入超高速缓冲存储器104,对每个块进行解码。这时,作为处理机A的特征,具有从有限数目的秘密,例如2个常数Kx,Ck,产生与多个密码块中的各个对应的块对应键,以块为单位进行解码的能力。图2是图1所示的微处理机A的硬件构成图。但是,处理机A在处理机组件200中具有磁芯902,指令超高速缓冲存储器903,数据超高速缓冲存储器904,这些超高速缓冲存储器共有的高速密码键处理模块(FCMFastCipheringModule)911,键值表(KVTkeyvaluetable)912,分发键管理模块913,和总线接口(BIU)906。这些装置通过内部总线905相互连接。由磁芯902,高速密码键处理模块911,键值表912,和分发键管理模块913构成图1的保护逻辑电路。磁芯902具有寄存器阵列915和任务转换开关914。任务转换开关914实施任务的切换,即插入发生时的上下文的保存,恢复。与执行任务对应地产生上下文,与任务对应地管理上下文。为了实现这些,任务转换开关914在内部具有任务状态表921和无用数据计算部分922。任务状态表921,如后所述,通过对应地加上任务ID保持任务状态。又,图中未画出,但是磁芯902发布变更寄存器阵列中的上下文的通知和分发键设定指令等。指令超高速缓冲存储器903对程序的执行码进行超高速缓冲存储。除了识别通常的地址的超高速缓冲存储器标签外,还加上识别保护任务的标签,在微处理机的内部数据中保证应用程序的独立性。此外,在图2中未画出,但是如后所述,指令超高速缓冲存储器在内部具有记述程序(执行码)和数据的开始地址(偏移)的偏移表1207(请参照图9)。数据超高速缓冲存储器904对程序的初始化数据,栈数据,动态数据等与程关联的种种信息进行超高速缓冲存储。高速(对称)键密码处理模块911具有键产生模块1312和密码处理模块1313。键产生模块1312通过内部总线905取得块的键和处理对象块的相对地址值,用后述的方法产生与每个块对应的密码键。密码处理模块1313用每个产生的块的密码键实施对应的块的密码/解码处理。因为在块的密码处理中需要多个块,所以也包含用于对多个模块进行并列处理的分配器。键值表(KVT)912根据从超高速缓冲存储器传送来的表ID信息检索表,将键的值供给高速密码键处理模块911。分发键管理模块913设定分发键的公开键解码和解码结果的表。又,微处理机,如虚线箭头所示,具有任务通道916,将现在执行中的任务和上下文保存的任务信息从磁芯902传达到其它的模块。在微处理机的组件外,具有作为外部存储器的RAM907,和与周围电路连接的被称为南方电桥(southbridge)908,通过总线接口905,进行内部总线905和外部存储器907与南方电桥908之间的数据传送、缓冲。图3是说明对每个块对程序进行密码化的程序的图。这个处理由图1的软件销售者121的块对应密码处理部分126进行。软件销售者开发的普通文本的应用程序的程序区域1001由以128位(16字节)为单位的多个块0~块n构成。对于这个区域全体,预先选择2个常数Kx和Cx。首先,求常数Cx和从程序的前头见到相对的各块的前头地址之和。例如,因为最初的块0的前头字节为0,所以可以计算Cx+0(S1002-0)。用密码键Kx对Cx+0的值进行密码化,产生块对应键Kv0(S1003-0)。用这个块对应键Kv0对普通文本块1001-0进行密码化(S1004-0),产生密码块1005-0。同样,因为第2个块1的前头字节为16字节,所以从块前头看到的相对地址成为16,计算Cx+16(S1002-1)。第n+1个的块n的相对地址为16n,求Cx+16n(S1002-n)。用Kx对这些值进行密码化,产生对应块的密码键Kv1~Kvn(S1004-1~S1004-n)。用各密码键对普通文本块1~n进行密码化,产生密码块1005-1~1005-n。在图3中,独立地显示密码化处理S1003-0~S1003-n和S1004-0~S1004-n,但是也可以改变并重复使用给予一个密码化处理的参数,也可以用软件来实现。如果根据图3所示的密码化方法,软件销售者121能够不知道在目标系统102中配置了程序的绝对地址,进行密码处理。因为程序销售者不能预想绝对地址值,所以根据绝对地址值产生块对应键时,在从目标系统102接收预先配置了程序的绝对地址的通知后,必须制成配置地址对应的密码化程序本体,或无数次分发配置地址对应的密码化程序本体。无论哪种情形都显著地增大了程序本体的分发成本。在图3的方法中,因为必须分发的秘密只是键Kx和常数Cx,并且,通过使用各块的相对地址产生多个块对应的密码键,所以能够减轻软件销售者一侧的处理负担,也能够满足经济性要求。这样,将经过密码化的各块S1005-0~S1005-n与分发键Kx[A],Cx[A]一起传送给目标系统102。在目标系统中,如果只给予秘密信息Kx,Cx和块的相对地址值,则在微处理机内,与其它的块的数据和配置的存储器的绝对地址无关,能够独立地对各块进行解码。这能够高效率地适合于将以随机访问存储器为特征的现在的计算机总体结构和应用程序的再定位作为前提的现在的OS。又,例如攻击者即便进行块的不正当的改换,因为每个块的相对地址值不同,所以块的密码键Kv也不同,从而无法实现攻击者企图进行的工作。其次,我们说明在目标系统102一侧的工作的详细情形。在执行程序前,OS110将各个存储器108的区域分配给从软件销售者121接收地应用程序的执行码,初始化数据(静态数据),和作业区域(栈)。在这个阶段,程序处于保持密码化的状态。因为被分配的存储区域的开始地址根据系统状态,即关连地进行工作的其它的程序模块和共有存储器的配置而变化,所以管理系统的OS与状况对应地自由地决定区域的地址(再定位)。又OS110决定配置配置键的存储区域,读入分发键信息。OS110将这些区域的地址信息记述在被称为存储器上的信息配置记述符(IADinformationarrangementdescriptor)的构造体中。图4表示某个任务的假想地址空间的存储器地图和信息配置记述符1111与分发键信息1121的构造。在存储器地图上,除了程序1102,初始化(static(静态的))数据1103,和作业区域(栈)1104外,还配置了信息配置记述符用的区域1105和分发键用的区域1106。信息配置记述符1111包含程序区域的开始地址(偏移)1112,数据区域的开始地址(偏移)1113,数据区域的结束地址1114,作业区域的开始地址(偏移)1115,作业区域的结束地址1116,分发键地址的开始地址(偏移)1117。分发键1121包含程序键(Kx)1122,程序秘密常数(Cx)1123,初始化数据键1124,初始化数据秘密常数1125,初始化数据长1126,作业区域(栈)键1127,作业区域秘密常数1128,和作业区域长1129。当通过将配置在存储器上的程序读入微处理机103,进行解码,执行时,OS110根据信息配置记述符发布控制任务状态的种种特权指令(任务控制指令),对任务的状态进行管理。图5表示任务控制指令的例子,图6表示任务的状态迁移。任务控制指令包含到内部表的任务登记(register),任务的开始(start),中断的任务状态的保存(Suspend),中断的任务的再开始(continue),任务结束,即削除来自内部表的任务秘密信息(delete)等。而且,与这些控制指令相应,如图6所示地从NULL(无用)状态201变到INIT(初始)状态202,迁移到RUN状态203,STOPPED(停止)状态204,SUSPEND状态205等。下面,我们详细说明用于执行任务的工作,特别是以任务的登记,任务的执行,任务的中断,任务的结束为中心进行说明。(任务的登记)1.登记处理程序首先,为了登记任务,OS110发布将要登记的任务的ID和它的程序的信息配置记述符的前头地址作为参数,作为特权指令的register指令。通过发布register指令,对用于这个程序的分发键1121进行解码,将用于各存储器块解码的键和相对地址信息与任务ID关联地登记在微处理机内的各种表(后述)中。图7表示在微处理机(硬件)103上的任务登记的概略工作,图8表示登记(register)指令的处理程序。将信息配置记述符(IAD)1111的地址和任务ID#1作为参数发布register指令时,磁芯902内的任务转换开关914检查任务的状态(S301)。如果任务状态不是NULL(在S301为“否”),则认为任务状态成为INVALID(无效)是错误的(S308)。如果任务状态是NULL(在S301为“是”),则如图7的虚线(1)所示,磁芯902将包含信息配置记述符的地址和任务ID的登记要求写入分发键管理模块913的序列发生器913-1。序列发生器,如图7的虚线(2)所示,将对于信息配置记述符的区域的存储器读出要求传送给BIU906,BIU,如虚线(3)所示,将信息记述符1111供给序列发生器。序列发生器解析这个信息记述符,取得与程序,初始化数据,作业区域对应的偏移地址和范围,和分发键偏移地址1117(S302)。接着,序列发生器将对分发键地址的读出要求传送给BIU。BIU,如虚线(4)所示,将分发键的内容供给公开键解码模块913-2。公开键解码模块913-2对分发键1121(图4)进行解码,取得程序的秘密常数(Cx),初始化数据的秘密常数,和作业区域秘密常数(S303)。其次,如图7的虚线(5)所示,将在S302取得的程序,初始化数据,作业区域的偏移地址写入指令超高速缓冲存储器903的偏移表(请参照图9)(S304)。同样,将在S303取得的程序,初始化数据,作业区域的密码键(秘密常数)写入键值表912(S305)。这样,设定表,结束任务登记。当结束任务登记时,任务状态从NULL移动到INIT(S306),通过插入将这个状态迁移通知磁芯902(S307),OS知道已经作好为了执行任务的准备。2.表的设定在说明微处理机内的各种表的设定前,我们先参照图9~11,说明构成微处理机的指令超高速缓冲存储器903,高速密码键处理模块(FCM)911,键值表(KVT)912,和数据超高速缓冲存储器904的构成。图9表示指令超高速缓冲存储器903的详细情况。指令超高速缓冲存储器903包含具有指令TLB(translationlookasidebuffer(翻译后援备缓冲器))1202的指令管理装置(MMU)1201,指令超高速缓冲存储器1203,现在任务ID寄存器1204,超高速缓冲存储器访问验证部分1205,任务ID写入部分1206和偏移表1207。超高速缓冲存储器1203由多条所定大小的超高速缓冲器线构成,各条超高速缓冲器线具有保持在这条超高速缓冲器线(块)中执行的任务的任务ID的标签。超高速缓冲存储器访问验证部分1205比较保持在标签中的任务ID和现在任务ID寄存器的值,只有当值一致时才允许访问。当值不一致时,废弃这个超高速缓冲器线的内容。图10表示键值表(KVT)912和高速密码键处理模块(FCM)911的详细情况。KVT912包含表访问控制部分1301,现在任务ID寄存器1302,任务键(或程序键)表1303,上下文键表1304,和数据键表1305。这里图中未画出,但是数据键表1305包含4个表(0~3)。KVT912通过总线1315与总线905连接。高速密码键处理模块(FCM)911包含分配器1311,键产生模块1312,和密码处理模块1313。键产生模块1312具有作为键产生单位的并列的1312-1~1312-3,密码处理模块1313具有作为密码处理单位的1313-1~1313-3。分配器1311,如后所述,可以将处理分配给键产生单位和密码处理单位的空的某个部分,进行并列处理。FCM911通过总线1314与总线905连接。通过总线1316将密码键从KVT912传送到FCM911,并通过总线1317将相对地址值从KVT912传送到FCM911。图11表示数据超高速缓冲存储器904的详细情况。数据超高速缓冲存储器904包含现在任务ID寄存器1401,保持地址范围的MTRR(memorytyperangeregister(存储器型范围寄存器))表1403,比较管理这个表的MTRR表的地址范围与目标地址的MTRR表管理比较部分1402,密码属性发送部分1411,数据超高速缓冲存储器1431,具有任务TLB1433的MMU1442,和保存预定上下文识别符寄存器1434。密码属性发送部分1411具有当将数据和上下文写回到外部存储器时,用于确认这个密码属性的,读入要求数据密码识别符寄存器1412,读入要求上下文密码键识别符寄存器1413,写出要求数据密码键识别符寄存器1414,写出要求上下文密码键识别符寄存器1415,和访问验证部分1421。MMU1442根据所定的变换信息,通过从磁芯902输出的假想地址变换到物理地址进行存储器访问。分别用任务ID指示KVT912的6种表,即程序键表1303,上下文键表1304,和数据键表1305(0-3),能够保持用于键产生的2种秘密信息。用于产生块的解码键的2种秘密信息,例如将用于图4所示的程序的Kx1122和Cx1123写入KVT912的程序键表1303的任务ID#1的栏。另一方面,将这个程序区域的偏移值1112写入指令超高速缓冲存储器903内的偏移表1207的任务ID#1的栏。用取任务ID和0-3的值的MTRR识别符识别数据超高速缓冲存储器904的MTRR表1403。即MTRR表1403持有每1个任务的4个MTRR(地址范围寄存器),能够将数据区域的地址范围和键的值登记在各个MTRR中。当登记任务时,设定与MTRR识别符0,1对应的初始化数据和与作业区域(栈)对应的MTRR。又,将MTRR2,3的内容初始化到0。当某个任务参照存储器时,比较目标地址和MTRR的地址范围,可以使用与一致的MTRR对应的密码化属性(即键)。即便对于数据,也可以将MTRR的前头地址作为偏移,用相对地址值,应用于产生上述程序的密码键。为了防止在表内容中发生矛盾,在改写这些表的期间,在磁芯902中禁止对这个任务进行所有的操作。当结束表的改写时,在任务转换开关(STS)914的任务状态表921中,将与这个任务ID对应的项目从状态NULL改写到状态INIT,通过插入将登记结束通知磁芯902。此外,在本实施例中我们表示了将这些登记操作安装在硬件中的例子,但是也可以作为固件作为组入处理机内部的软件进行安装。但是,必须注意不能让持有恶意的系统用户改变固件。(任务的执行)1.开始执行任务为了执行任务,对于处于INIT状态的任务,OS将任务ID作为参数执行start指令。这样做时,控制移动到程序区域的前头。当通过指定处于INIT状态的任务以外的任务,执行start指令时,成为错误,什么也不执行。图12表示任务执行开始指令的处理程序。当关于某个任务通过指定它的任务ID发布start指令时,首先,判断这个任务状态是否是INIT,即是否是准备好执行任务的状态(S401)。通过指定处于INIT以外的状态的任务识别符发出start指令时(在S401为“否”),使任务状态表921处于INVALID(无效)(S407),成为错误。当任务处于INIT状态时(在S401为“是”),将磁芯902保持的现在任务ID设定在新的任务上(S402),对寄存器阵列915进行初始化(S403)。又,将程序计数器(图中未画出)的值设定在程序区域的前头(S404)。接着,通过任务通道916,将新的任务ID通知指令超高速缓冲存储器903,数据超高速缓冲存储器904,和键值表912,保持在各个现在任务ID寄存器1204,1401,1302中(S405)。此后,在磁芯902的任务状态表921中,将任务状态从INIT改写到RUN(S406),开始执行。在本实施形态中,因为执行对于每个块进行密码化受到保护的程序,所以当将外部存储器的程序读入超高速缓冲存储器时,根据与任务ID对应登记的程序键,对于每个块进行程序的解码,将作为解码结果的普通文本读入超高速缓冲存储器,进行执行。这时,因为通过与任务登记时配置的存储器地址一致,将偏移登记在指令超高速缓冲存储器903内部的偏移表1297中,将存储器访问和偏移之差作为相对地址值使用,所以即便通过OS将密码化的程序配置在哪个地址上,也能够正确地对程序进行解码。此外,在实施形态中写出了从NULL状态经过中间的INIT状态移动到RUN状态的例子,但是这是为了通过非同步地执行分发键的公开键算法处理,缩短公开键算法处理中比较长的不能应答时间。如果允许不能应答时间则即便省略中间的INIT状态也没有妨碍。(关于非同步的公开算法处理,请参照同一专利申请人提出的专利申请第2001-024480号。)2.指令超高速缓冲存储器的读入下面,我们参照图13的处理程序说明指令超高速缓冲存储器903的读入处理。在开始执行任务读入超高速缓冲存储器的线上,除了判定通常的存储器地址的一致的标签外,还加上这个任务的任务ID标签。而且,当访问读入的超高速缓冲器线时,在指令超高速缓冲存储器903的访问验证部分1205中,判断附加在线上的任务ID的标签和访问的现在任务ID的一致,不一致。当不一致时,例如即便存储器地址的标签一致也作为超高速缓冲存储器的误中进行处理,再次从外部存储器读入这个超高速缓冲器线的信息。即便通过别的任务再读入与这条线对应的外部存储器的内容,也用与新访问的任务的任务ID对应的键进行解码读入。即,执行用与本来的键不同的键进行解码的结果,不能够进行正常的处理。此外,在以下的说明中,根据假想地址进行相对地址的计算,但是对于物理地址进行超高速缓冲存储器的击中,误中的判定。当将假想地址用于超高速缓冲存储器的击中,误中的判定时,被称为在超高速缓冲存储器上存在多个相同的存储器块的同义名的现象发生了。因为当多个任务共有同一个物理地址区域时这个现象成为一个问题,所以在本实施形态中,根据物理地址来判定通常的超高速缓冲存储器的击中,误中。图13表示指令超高速缓冲存储器903的读入处理程序。在这个程序中,为了说明简略化起见,使指令超高速缓冲存储器903和FCM911,BIU906的工作一体化进行显示。首先,当存在从磁芯902读出的要求时,指令超高速缓冲存储器903将目标地址块的读出要求传送给BIU906。在读出要求中包含请求ID,有无保护,目标地址范围和要求源ID的信息。这里,判断目标地址和附加在读入的超高速缓冲器线上的地址标签的一致,不一致(S501)。当物理地址不一致时(在S501为“否”),作为误中,开始取得与读出要求的新的任务ID对应的偏移地址。从偏移表1207中的与现在任务ID对应的项目取得偏移地址(S502)。其次,我们从取得的偏移值计算相对地址。通过从存储器地址算出偏移值求得相对地址(S503)。此外,当在执行保护任务中存在到超高速缓冲存储器的访问时,指令超高速缓冲存储器903与超高速缓冲存储器的访问并行地,进行相对地址的计算。指令超高速缓冲存储器903通过内部总线905将求得的相对地址值和任务ID传送给键值表(KVT)912。这时,加上请求ID。KVT912从任务键表1303取得与任务ID对应的键的值,通过通道1316将键的值和偏移值传送到高速密码键处理模块(FCM)911的键产生模块1312。同时KVT912通过通道1317将偏移值和请求ID,要求源ID传送到FCM911的密码处理模块1313。FCM911的键产生模块1312当接收来自KVT912的键值和偏移值时,立即开始与这个块对应的键的计算。即,求将相对地址值加到程序的秘密常数Cx上得到的中间值(S504),用程序的秘密键Kx对求得的中间值进行密码化,产生与程序的块对应的块对应键(S505)。因为这个键计算是密码化处理,所以需要多个周期的时间。为了高效率地进行计算,在键产生模块1312中设置多个键产生单位1312-1~1312-3,分配器1311将处理要求分配给空的键产生单位。当1个请求由多个密码块构成时增加相对地址值直到产生所有的密码块对应键那样地反复进行S502~505。另一方面,BIU906直到密码块大的数据对从外部存储器读出的结果进行缓冲。当要求原先不受保护的非密码化数据时,将数据直接传送到要求源的指令超高速缓冲存储器,但是在本实施形态中,因为要求密码化数据,所以将读出结果传送到FCM911。FCM911的密码处理模块1313用由键产生模块产生的块密码键对从BIU906供给的数据进行解码(S506)。因为解码需要多个周期的时间,所以当在上述解码处理结束前构成超高速缓冲器线的下一个密码块到来时,能够分配给别的密码处理单位,并列地进行处理。在图10中,只显示作为密码处理单位的1313-1~1313-3,但是如果准备足够数目的密码处理单位,则即便数据在比密码处理单位的处理周期短的间隔中来到,也可以不发生延迟地进行解码处理。将结束解码的块经过内部总线直接传送到要求源的指令超高速缓冲存储器903。指令超高速缓冲存储器903将数据存储在这条超高速缓冲器线中,收集构成线的所有的数据,并且在超高速缓冲存储器标签中写入线有效的显示,密码化的显示,执行中的任务ID(S507)。当超高速缓冲器线有效时,磁芯902从这条线读出数据,再开始执行程序(S508)。其次,当在S501中目标地址和超高速缓冲器线的地址标签(物理地址部分)一致时,即,具有与至今执行的任务A不同的任务ID的任务B考虑由于偶尔访问同一个存储区域,超高速缓冲器线击中的情形。所谓的超高速缓冲器线的物理地址击中是任务B在已有的资源管理的意义上具有这个地址的存储器的访问权。这时,指令超高速缓冲存储器903的访问验证部分1205进一步比较现在任务ID寄存器1204的值和加在这条超高速缓冲器线上的任务ID标签(S509)。当比较结果不一致时,例如当在现在任务ID寄存器1204中写着“B”,但是在超高速缓冲器线标签的任务ID栏中写着“A”,这个密码特性表示是密码化线时(在S509为“否”),使超高速缓冲存储器闪光,在任务B中对于任务ID反复进行S502~S507。即,从任务B的偏移地址计算相对地址,将用任务B的程序键对与超高速缓冲器线地址对应的外部存储器的数据进行解码的结果读入这条超高速缓冲器线。如果任务A和任务B的程序键一致,则即便分别读入,2个任务只执行同一个程序,但是当使外部存储器的数据密码化的本来的键是任务A的程序键,任务B的键与它不同时,任务B执行与本来的程序不同的胡乱的程序,不能够进行有意图的攻击。另一方面,如果现在任务寄存器的值与超高速缓冲器线的任务ID一致(在S509为“是”),则将要求的地址内容传送给磁芯902(S508)。这样,在执行某个任务中,当由别的任务再次读入同一条超高速缓冲器线时,用与本来的键对外部存储器的内容进行解码读入超高速缓冲器线。执行用与本来的键不同的键进行解码的结果的程序当然不能进行正常的工作。即便具有OS(操作系统)的特权也不能够推翻这个控制。如果OS能够自由地操作任务键表1303,则能够取得其它程序的秘密,但是在本发明中,OS能够执行由程序键的登记代表的任务的状态管理和秘密信息的操作,对如图5所示的一连串任务控制指令的发布进行限制。所以,在本发明的微处理机中,例如即便具有OS的资源特权,只要不知道与应用程序或数据的各个块对应的键,就不能够正确地执行它和读出它。由于这种构造,能够提供保证应用程序独立性的多体的程序保护环境。此外,我们述说了与S506关联地可以由多个密码处理模块1313进行迅速的解码处理,但是如果在1个密码处理单位中具有足够的处理能力,则不需要备有多个密码处理单位。例如,我们知道在如DES那样地通过反复进行同一种计算构成的密码处理中,通过对处理进行流水线化,能够得到高的处理能力。但是,这种流水线安装,既需要大规模的硬件又在设计方面存在困难,需要大的成本。又,以一般可以利用的IP的形式提供的密码处理单位,因为在设计中需要高级的技术信息和大量时间,所以每次都要对与必要的处理能力相称的号码处理单位进行设计成为极大的负担。当考虑与多种条件的对应时,本实施形态那样地使多个既存的密码处理单位并列地工作,但是具有设计的灵活性这是有利的。又,具有削减包含硬件设计成本在内的全部成本的效果。3.在数据超高速缓冲存储器中执行的处理其次,我们说明数据超高速缓冲存储器的工作。关于初始化数据和作业区域(栈)等的数据的保护,能够用任意的密码键对任务动态地确保的数据区域进行密码化保护。可以定义初始化数据,作业区域,动态区域等的多个保护区域,设定各个不同的键。例如,当初始化数据时,已经完成密码化的数据位于外部存储器中,读出并解码该数据时的程序基本上与程序的情形的相同。在上述程序(执行码)的情形中,通过在指令超高速缓冲存储器903中比较现在任务ID和超高速缓冲存储器标签的任务ID判断密码属性,但是在数据的情形中通过比较现在任务ID和MTRR(地址范围寄存器)进行属性的判断,它们是不同的。当存在数据访问时,用如图11所示的数据超高速缓冲存储器904的MTRR数据管理比较部分1402判定访问属性。具体地说,将现在任务ID和目标地址输入MTRR数据管理比较部分1402,分别比较与任务ID对应的MTRR表1403的项目(0~3)的地址范围和目标地址。如果只有一个与MTRR项目一致,则无条件采用这个属性,任务ID和MTRR项目ID的组成为访问该存储器的密码属性。当MTRR项目持有重复的地址范围,目标地址与多个项目的地址一致时,按照预先对于每个MTRR决定的优先顺序位只选择一个MTRR,成为访问该存储器的密码属性。这样,当读入数据时,将在MTRR数据管理比较部分1402中决定的存储器访问属性暂时保持在密码属性发送部分1411的读入数据键ID寄存器1412中。又,在MTRR数据管理比较部分1402中,从击中的MTRR项目的前头地址和访问存储器的目标地址计算相对地址值。与访问程序存储器的情形相同,将这些存储器访问属性和相对地址值,通过内部总线905传送到键值表(KVT)912。数据超高速缓冲存储器要求读出在BIU906中的数据,将存储器访问属性传送到给KVT912,将数据传送到FCM911进行解码,返回到数据超高速缓冲存储器的顺序与指令超高速缓冲存储器的情形相同。最后,将存储器访问属性和相对地址值写入超高速缓冲存储器标签,结束超高速缓冲存储器的读入。下面,我们说明关于持有地址变换机构时的数据超高速缓冲存储器的非同步写入的问题和在本实施形态中提供的机构。在图14中,表示出本实施形态的数据超高速缓冲存储器的数据构造。数据超高速缓冲存储器1431由256条线1501-1~1501-255构成。各条线(例如线0)具有存储外部存储器的内容的线缓冲器1501-0-0,物理地址标签1501-0-1,相对地址值1501-0-2,任务识别符1501-0-3,MTRR识别符1501-0-4,和标志区域1501-0-5。数据超高速缓冲存储器904与指令超高速缓冲存储器903不同之处在于当写回数据即插入数据时等,存在着暂时退避到外部存储器的情形。在某个任务A读入的超高速缓冲器线不一定限于在执行任务A中闪光写回到外部存储器。在执行别的任务B中也可以进行闪光。在持有地址变换机构的处理机的情形中,因为持有对于每个任务不同的存储器地图,所以超高速缓冲器线的保存方的物理地址不能够一意地从假想地址决定。至今,这个问题,如果通过在超高速缓冲存储器标签中设置物理地址1501-0-1,给予保存方的物理地址信息,则不管现在执行中的任务是什么样的,都能够决定超高速缓冲器线的保存方。可是,当将利用本发明的块对应键的密码化应用到这里时,就会发生问题。块对应键,如上所述,是从作为超高速缓冲器线的假想地址和偏移值之差的相对地址值产生的。因为一般地说,这个相对地址值不能从物理地址产生,所以不能够进行与写回到超高速缓冲存储器相当的数据密码化。在本实施形态中,通过将存储相对地址值的标签1501-0-2设置在数据超高速缓冲存储器1431的超高速缓冲存储器标签中,保持当确保这个超高速缓冲器线时给予的相对地址值,解决写回时的密码化问题。当决定这个超高速缓冲器线的密码属性时进行标签的写入。作为别的方法,即便将假想地址保持在超高速缓冲存储器标签中也能够实现同样的功能。当执行超高速缓冲存储器的非同步写回时,因为将存储区域信息保持在MTRR表1403中,所以可以从假想地址和任务识别符取得MTRR的偏移信息,计算相对地址。在数据超高速缓冲存储器904中,除了由分发键决定的初始化数据和作业区域外,还能够追加2个数据区域。这些区域由MTRR(地址范围寄存器)的ID2,3指定。追加数据区域是通过任务发布称为setkey(设置键)的特别指令来实施的。将数据的密码键,辅助常数,存储区域和MTRRID存储在处理机所定的寄存器中,发布setkey指令。因为setkey指令只对自己任务ID的数据密码化属性有效,所以不需要用指令明示地指定任务ID。setkey指令是通过在处理机磁芯902的内部,分解成访问数据超高速缓冲存储器904的MTRR表1403和访问键值表912的数据键表1305这样2个步骤来实施的。在任务的初始状态,MTRR(地址范围寄存器)的2,3是无效化的状态,即地址范围的大小为0的状态。在这个状态无论访问什么样的存储器都不与地址范围相当。当发布setkey指令时,最初使任务ID和MTRR的ID一致的数据超高速缓冲器线闪光。其次,将密码键写入用键值表912的数据键表1305的任务ID和MTRR的ID指示的栏中。其次,将地址范围写入由数据超高速缓冲存储器904的MTRR表1403的指定任务ID和MTRRID指示的栏中。MTRR的地址范围的长度超过0时,这个密码化指定有效。下面,关于追加数据的读写与初始化数据的情形相同。为了变更设定的MTRR,即变更数据区域的属性,再次发布setkey指令。如上所述,当发布setkey指令时,与MTRR的ID对应的超高速缓冲存储器上的线都发生闪光,写出到外部存储器。此后,在数据键表1305,MTRR表1403中写入新的设定,开始在新的设定中的读写。通过使前面使用的密码键Kx,辅助常数Cx,偏移地址一致,一开始就正确地读出暂时写回到外部存储器并保存在那里的密码数据。例如即便密码键,辅助常数一致,如果偏移地址不一致则也不能够对正确的值进行解码。这对于读写在任务之间共有的共有存储器和磁盘中的数据是重要的。由于这个理由当执行setkey指令时,无条件地使对应的超高速缓冲器线闪光。相反地,即便将某个数据区域复制到在外部存储器上别的绝对存储器地址的区域上,如果与移动方地址对应地设定MTRR的区域指定前头地址,则在密码键,辅助常数一致的条件下,能够正确地读出原来的数据。这样,在本实施形态中,即便在数据密码化中,也能够使用于防止块交换攻击的每个块的个别密码键方式和存储器的再配置(再定位)两者不矛盾地同时成立。(任务的暂时中断)在多任务OS中,任务的执行常常由于插入而中断。插入后,实施OS的插入处理,必要时,存在将执行切换到别的任务上的情形和不切换任务地恢复到原来的任务的情形。在本实施形态的处理机中,当存在来自插入控制器的插入要求时,使保护任务的执行中断,开始执行由插入矢量指定的地址的插入处理。即,到此的保护任务的寄存器值(上下文信息)由于插入处理退避到磁芯902的寄存器式缓冲器(阵列)915,保护不从包含OS的其它任务读出。由于这个插入,如图6的状态迁移所示,任务状态表921的值从RUN移动到STOPPED(被停止)。在STOPPED状态中,中断的任务的上下文占有磁芯902的寄存器式缓冲器915,但是当在这个状态中发布SUSPEND指令(任务执行状态保存指令)时,将寄存器式缓冲器的内容保存在由SUSPEND指令指定的存储区域中,任务状态移动到SUSPEND。插入处理不能够读出寄存器式缓冲器的内容,但是能够将它统括起来保存在存储器中。当插入处理时间长时,和存在任务切换时,将寄存器式缓冲器的内容保存在超高速缓冲存储器中。又,也存在着进一步将保存的上下文信息写出到外部存储器的情形。这时,在用所定的上下文信息键对上下文信息进行密码化后,写出到外部存储器。为了再开始SUSPEND(保存)状态的任务,如图5和6所示,通过指定任务ID和上下文信息的保存方地址,发布resume(再继续)指令。为了从STOPPED状态(不保存寄存器值,单纯地退避的状态)再开始任务,发布resume指令,例如,当简单地结束插入处理不发生任务的切换时,和在软件时间的计数器增量处理中,不保存到此执行的寄存器值,只是退避到寄存器式缓冲器阵列915。这时,恢复来自寄存器式缓冲器的寄存器值,再开始执行插入前的任务。任务的状态从STOPPED回到RUN(执行)。图15是当发出suspend(任务状态保存)指令时的处理程序。首先,接收发布的suspend指令,参照任务状态表921,判断指定的任务状态是否是STOPPED(S601)。当不是STOPPED(在S601为“否”)时,因为到此的寄存器值不退避到磁芯902的寄存器式缓冲器(阵列)915,所以即便在这个状态中发出suspend指令也是无效的,任务状态成为INVALID(无效)(S605)。当指定的任务状态是STOPPED时(在S601为“是”),将在寄存器式缓冲器阵列915中的内容写入由suspend指令指定定地址的存储区域,开始进行保存(S602)。保存基本上是到超高速缓冲存储器的保存,保存开始前通过任务通道916将到此执行的任务的ID保持在数据超高速缓冲存储器的保存预定上下文识别符寄存器1434中。而且,确保用于在数据超高速缓冲存储器1431上写入上下文信息的超高速缓冲器线,开始传送数据。每次线的写入结束时,将表示上下文的识别符和任务ID写入超高速缓冲器线的标签中。上下文信息的保存是完全写上原来的存储器的内容。上下文信息为超高速缓冲器线的大小的整数倍,它的前头地址一定受到超高速缓冲器线大小的调整,通常在必须的写入前不需要进行读出保存方内容的工作(光分配)。而且,在磁芯902的无用数据计算部分922中,计算寄存器式缓冲器的全部内容的无用数据,与任务ID一起将无用数据值附加到存储器上的寄存器信息的最后(S603)。当涉及多条线时,磁芯902的任务转换开关(STS)914一面将寄存器式缓冲器阵列915的信息顺次地写入超高速缓冲器线一面计算无用数据。将任务ID和无用数据值写入上下文区域的最后,结束附加标签和结束执行suspend指令,任务状态移动到SUSPEND(S604)。将保存的上下文信息,与数据相同,当执行任务时非同步地写出到外部存储器108。在写出到外部存储器时的上下文信息的处理中,存在着2个与其它信息不同的地方。一个是相对地址值的处理,另一个是不同的读入处理。上下文信息由多个块构成,但是用同一个值作为相对地址值。将预先决定的常数用于相对地址值。这是因为将无用数据附加到上下文信息中,对块的交换具有原先的抗捣毁性。当使保存上下文信息的超高速缓冲器线闪光时,写出取出的密码属性暂时保存在上下文键ID1415中。此后的处理与数据超高速缓冲存储器的写出相同。图16是从保存的上下文信息再开始任务的处理程序。首先,因为通过读入保存的上下文信息再开始执行任务,所以当发布将任务ID和保存方存储器地址作为参数的resume指令时,判断指定的任务状态是否是SUSPEND(S701)。当不在SUSPEND状态时(在S701为“否”),因为不保存上下文信息,所以任务状态成为INVALID(S707)。换句话说,resume指令当任务状态在SUSPEND以外时是无效的。当在SUSPEND状态时(在S701为“是”),分别通过地址线和任务通道,将地址和任务ID传送到数据超高速缓冲存储器904。当击中超高速缓冲存储器的地址,并且标签表示上下文,任务ID一致时,将数据超高速缓冲存储器1431的数据传送给寄存器式缓冲器,开始任务的再开始处理(S702)。与到寄存器式缓冲器传送数据并行地进行无用数据的计算(S703)。判断算出的无用数据是否与期待值一致(S704),当不一致时,中止再开始的处理,任务成为INVALID状态(S707)。当无用数据一致时(在S704为“是”),在现在任务寄存器中设定指定任务的ID(S705),使任务的状态变更到RUN再开始执行(S706)。没有记载在图16的程序中,但是由resume指令指定的上下文信息的区域不击中超高速缓冲存储器的情形是保存的数据写出到外部存储器的情形。这时,开始读入来自外部存储器的数据。即,将保存在任务ID寄存器1401中的任务ID和与由resume指令指定的地址对应的存储器的读出要求从数据超高速缓冲存储器904传送到BIU906。而且,将意指任务ID和上下文的密码属性传送到键值表912,产生为了用FCM911进行解码的键。因为用相同的键对所有的在某个时刻保存的任务的上下文信息进行密码化,所以不产生块单位的键。将结束解码的块顺次地传送给数据超高速缓冲存储器904,任务转换开关(STS)914将这个内容读入寄存器式缓冲器阵列915。此后的处理与击中超高速缓冲存储器的情形相同。(任务结束)结束任务,为了别的新的任务再利用插入的任务ID和处理机内的各种表,通过指定任务ID发布delete(删除)指令。在本实施形态中,为了不能够不正当地窥视到此的任务的内容,系统工作中,只要不削除这个登记,就不能够将一次登记的任务的任务ID用于新的任务。图17表示削除任务的处理程序。首先,对任务发布delete指令,判断指定的任务是否处于INIT,STOPPED,SUSPEND中的任何一个状态(S801)。当不处于上述任何一个状态时(即为RUN,NULL(无用)时)任务成为INVALID(S805),成为错误。当处于上述任何一个状态时(在S801为“是”),使给予与指定的任务ID对应的标签的超高速缓冲器线闪光(S802)。因此,也清除对应的键表1303~1305,指令超高速缓冲存储器的偏移表1207,和数据超高速缓冲存储器的MTRR表1403(S803)。当这些工作结束时,任务的状态成为NULL(S804)。发布delete指令的不是任务自身而是OS,能够发布delete指令的是对处于RUN和NULL以外的状态中的任务。如果通过削除任务,任务ID成为NULL状态,则通过再次根据register指令登记分发键,能够执行新的任务。因为根据少数秘密,用简便的方法对每个块对程序进行密码化和解码,所以能够防止块改换攻击,并且能够减轻软件销售者一侧和微处理机一侧双方的资源管理和处理负担。因为在块对应密码化中,用根据假想存储器空间的相对地址,所以能够高效率地解决再定位的问题。由于在超高速缓冲存储器之间共有键值表和高速密码键处理模块,能够削减硬件的成本。权利要求1.一种微处理机,它备有将识别符给予可以取多个状态的任务,与上述任务识别符对应地保持上述任务状态的任务状态表,保持现在执行中的任务识别符的任务寄存器,当存在上述任务要求时,将在用所定的程序键进行密码化的状态中存储在外部存储器中的程序读入超高速缓冲器线单位的接口,根据上述程序键,产生对每个上述超高速缓冲器线不同的解码键,对读入的内容进行解码的密码处理部分,由各条具有标签的多条超高速缓冲器线构成的,对于每条超高速缓冲器线,将与用于这条超高速缓冲器线的解码的解码键对应的任务识别符保持在上述标签中的第1超高速缓冲存储器,和比较保持在上述超高速缓冲器线的标签中的任务识别符和上述任务寄存器的值,当值不一致时废弃上述超高速缓冲器线的内容的访问验证部分。2.权利要求1记载的微处理机,它的特征是它进一步具有将上述程序键与上述任务识别符关联起来进行存储的键值表,当上述访问验证部分的比较结果一致时,上述密码处理部分用与上述任务识别符对应地存储的程序键对上述读入的内容进行解码。3.权利要求1记载的微处理机,它的特征是它进一步备有将配置了与上述任务对应的程序的前头地址作为偏移值保持的偏移表,上述密码处理部分根据上述偏移值和上述程序键,产生上述解码键,对在上述超高速缓冲器线单位中读入的内容进行解码。4.权利要求2记载的微处理机,它的特征是上述任务至少取NULL(无效),RUN(运行)的2类状态,上述键值表当上述任务状态从NULL移动到RUN时,存储上述程序键和根据这个程序键产生的上述解码键。5.权利要求1记载的微处理机,它的特征是上述任务至少取NULL,RUN,SUSPEND(挂起)的3类状态,进一步备有当中断上述执行中的任务时,暂时保存中断的任务的执行状态的第2超高速缓冲存储器。6.密码处理方法,它包含将现在处理中的任务识别符存储在任务ID寄存器中的步骤,当存在任务要求时,为了执行任务,将在对每个块进行密码化的状态中存储在外部存储器中的程序读入超高速缓冲器线单位的步骤,将具有上述要求的任务识别符存储在上述超高速缓冲器线的所定区域中的步骤,比较存储在上述超高速缓冲器线中的任务识别符和存储在上述任务ID寄存器中的任务识别符的步骤,和当上述比较结果一致时,对上述读入的内容进行解码的步骤。7.权利要求6记载的密码处理方法,它的特征是进一步包含当上述比较结果一致时,废弃上述超高速缓冲器线的内容的步骤。8.微处理机,它备有通过指定根据各个固有的程序键存储经过密码化的多个程序的外部存储器的地址,发布读出要求的处理机磁芯,与上述处理机磁芯的读出要求相应,读出外部存储器的指定地址的数据块的接口,与给予每个作为上述程序的执行控制单位的任务的任务识别符对应,保持上述程序键的任务键表,对每个上述任务识别符,将配置了上述程序的前头地址作为偏移值进行保持的偏移表,从由上述读出要求指定的地址和由上述偏移表的任务识别符指定的偏移值计算相对地址值,产生用上述程序键对这个相对地址值进行密码化的块对应键的键产生部分,用上述块对应键对上述读出的数据块进行解码的密码处理部分,和将上述经过解码的数据块读入超高速缓冲器线单位中的超高速缓冲存储器。9.权利要求8记载的微处理机,它的特征是上述处理机磁芯指定的外部存储器的地址是假想地址,上述微处理机进一步具有通过根据所定的变换信息从假想地址变换到物理地址,访问外部存储器的地址变换功能,上述键产生部分从上述假想地址计算相对地址值。10.权利要求8记载的微处理机,它的特征是进一步具有保持现在执行中的任务的识别符的任务寄存器,上述键产生部分将所定的秘密常数加到上述相对地址值上,用由保持在上述任务寄存器中的任务识别符指定的程序键对上述加法结果进行密码化,产生上述块对应键。11.密码处理方法,它包含通过地址指定将经过密码化并保持在外部存储器中的程序读入超高速缓冲器线单位的步骤,取入上述程序的开始地址作为偏移值的步骤,通过从上述指定的地址和上述偏移值求得相对地址,用所定的密码键对上述相对地址进行密码化,产生密码键的步骤,和用上述产生的密码键对上述读入的内容进行解码的步骤。12.微处理机,它的特征是它备有保持现在正在执行的任务的识别符的标签寄存器,由多条超高速缓冲器线构成的,当存在任务要求时,可以与上述任务识别符对应地,在普通文本状态将在密码化状态中存储在外部存储器中的数据读入上述超高速缓冲器线单位的超高速缓冲存储器,用对每条超高速缓冲器线不同的块对应密码键将上述密码状态的数据解码成上述普通文本的密码处理部分,和与上述任务识别符对应地保持上述密码状态的数据的地址范围的地址范围寄存器,在执行上述任务中,当存在第2个任务要求时,上述密码处理部分用上述块对应密码键对与保持在上述任务寄存器中的任务识别符对应的超高速缓冲器线的内容进行密码化,和上述超高速缓冲存储器可以将上述经过密码化的数据写回到外部存储器。13.权利要求12记载的微处理机,它的特征是它进一步备有通过从保持在上述地址范围寄存器中的地址范围和上述任务的要求方的地址计算相对地址,用所定键对这个相对地址进行进行密码化,产生与上述块对应密码键的密码键产生部分。14.一种微处理机,它备有将在密码化状态中存储在外部存储器中的程序的执行码和数据取入每条超高速缓冲器线的接口,具有保持作为上述程序的开始地址的偏移值的偏移表,在普通文本状态中将上述执行码保持在每条超高速缓冲器线中的第1超高速缓冲存储器,具有保持上述数据的地址范围的地址范围寄存器,在普通文本状态中将上述数据保持在每条超高速缓冲器线中的第2超高速缓冲存储器,通过共同总线与上述第1和第2超高速缓冲存储器连接的,保持用于上述程序密码化的密码键的键值表,和通过共同总线与上述第1和第2超高速缓冲存储器总线和上述键值表连接的,分别从上述键值表和上述第1超高速缓冲存储器接受上述密码键和上述偏移值,根据该密码键和偏移值对上述执行码进行解码供给上述第1超高速缓冲存储器,分别从上述键值表和上述第2超高速缓冲存储器接受上述密码键和上述地址范围,根据上述密码键和地址范围对上述数据进行解码,供给上述第2超高速缓冲存储器的密码处理部分。15.权利要求14记载的微处理机,它的特征是上述密码处理部分备有由多个并列键产生装置构成的,产生上述键值表的密码键,和根据来自上述第1和第2超高速缓冲存储器的偏移值和地址范围,对每条上述超高速缓冲器线进行解码的块密码键的键产生模块,由多个并列密码处理装置构成的,根据上述产生的块密码键,对每条上述超高速缓冲器线进行解码的密码处理模块,和向上述键产生装置和密码处理装置的空的装置顺次分配处理的分配器。16.微处理机,它备有与任务的要求相应,将在密码化状态中存储在外部存储器中的程序在普通文本状态中保持在每条超高速缓冲器线中的超高速缓冲存储器,执行上述普通文本状态的程序的指令执行部分,当在执行上述任务中发生插入时,暂时退避上述程序执行状态的退避寄存器,当存在执行状态保存要求时,在上述退避寄存器的内容中附加无用数据,写入上述超高速缓冲存储器的所定的线中的无用数据计算部分,和在上述超高速缓冲器线单位中用所定的密码键对写入上述超高速缓冲器线的执行状态进行密码化,写回到外部存储器的密码处理部分。17.权利要求16记载的微处理机,它的特征是上述超高速缓冲存储器的超高速缓冲器线具有显示该超高速缓冲器线处于存储执行状态之中的标志。18.权利要求16记载的微处理机,它的特征是上述密码处理部分,当存在执行状态恢复要求时,将上述经过密码化的执行状态读入上述超高速缓冲存储器,用上述密码键对每条超高速缓冲器线进行解码供给上述退避寄存器,上述无用数据计算部分验证上述无用数据,只有当验证成功时,才允许恢复上述执行状态。全文摘要本发明提供能够根据少量秘密,从OS高效率地保护密码化程序的内容的抗捣毁处理机。微处理机备有将识别符给予可以取多个状态的任务,与这些任务识别符对应地保持任务状态的任务状态表,保持现在执行中的任务识别符的任务寄存器,当存在任务要求时,将在用所定的程序键进行密码化的状态中存储在外部存储器中的程序读入超高速缓冲器线单位的接口,根据程序键产生对每条超高速缓冲器线不同的解码键,对读入的内容进行解码的密码处理部分,对于每条超高速缓冲器线将与用于这条超高速缓冲器线的解码的解码键对应的任务识别符保持在标签中的超高速缓冲存储器,和比较保持在超高速缓冲器线的标签中的任务识别符和任务寄存器的值,当值不一致时废弃超高速缓冲器线的内容的访问验证部分。文档编号G06F12/14GK1410876SQ0214392公开日2003年4月16日申请日期2002年9月28日优先权日2001年9月28日发明者桥本干生,藤本谦作,白川健治申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1