专利名称:调试系统,微处理器,以及调试器的制作方法
技术领域:
本发明涉及微处理器及其调试技术。
背景技术:
近几年,装有IC芯片的IC卡已经应用于电子货币系统。IC芯片为一个微计算机系统,其包括微处理器,只读存储器(ROM),随机访问存储器(RAM)等等。在此,ROM存储控制计算机的程序,微处理器执行该控制计算机的程序以控制通过IC卡的电子货币交易。
IC卡中的微处理器包括一个调试接口,其使得即使在微处理器被设计和运输之后也可以调试微处理器。在此,调试表示下面的操作。调试单元连接到主个人计算机(以下称为主PC)。调试器在主PC上操作,在微处理器的存储器中提取指令或数据,并在主PC上显示。此外,通过在主PC上将输入的指令或数据写入微处理器的存储器中,调试器查找和纠正程序中的错误。
如果装有调试接口的这种微处理器安装在电子货币系统中使用的IC卡上,就有这样的风险恶意的分析者非法分析并伪造存储在微处理器上的指令和数据。因此,用于这种系统中的微处理器需要高级别的保密等级,从而避免对存储在微处理器上的指令和数据的分析和伪造。
文献1(日本未审专利申请No.2000-357085)公开了一种信息保护系统,包括存储程序的ROM,输入/输出设备,用于将程序写入ROM;半导体处理器,用于从ROM读出程序。在此,半导体处理器将加密的程序写入ROM,并从ROM上读出经过加密的程序并对其解密。
文献2(日本未审专利申请No.2000-347942)公开了一种信息处理装置,其保护存储在ROM中的信息,防止使用位于装置外部的调试工具的非法访问。
该信息处理装置包括一存储器和片上调试电路。
该存储器存储防止利用位于该信息处理装置之外的仿真器非法访问的信息,以及由单独用户设置的安全无效程序。片上调试电路与仿真器连接,从而控制用于仿真器和信息处理装置之间调试操作的输入和输出信号,并且支持信息处理装置的操作的调试。
当在接通电源时接收了复位该装置的接通电源复位信号时,该信息处理装置使片上调试电路的功能无效,从而激活安全。因此,禁止仿真器读取存储在存储器上的信息。
在接收了安全指示位和允许代码的置位,以禁止安全指示位的复位时,该信息处理装置激活片上调试电路的功能,从而使安全无效。因此,允许仿真器读取存储在存储器上的信息。
如上所述,加密电路被用于微处理器保护内部信息,并且内部信息被加密,以向相关技术中的外部设备输出。详细来说,微处理器持有一个密钥,是在设计微处理器时就设置了的,使用该密钥对指令和数据加密。在主PC上操作的调试器包括一个解密电路,并且从微处理器接收加密的指令和数据。该调试器则接收密钥的输入,并且将加密的指令和数据解密。这就是说,仅有知道存储在微处理器上的密钥的人能够获得完全解密的指令和数据,从而执行调试操作。
但是,由于密钥是在设计微处理器时被写入这样的微处理器,从事系统开发的人,例如微处理器和调试器的设计者,知道该密钥。在此,将用在电子货币系统中的IC卡作为例子。IC卡中的微处理器的制造商,IC卡的制造商,IC卡的供应商互不相同。因此,微处理器和IC卡的制造商可以是电子货币系统的用户。这将引发一个问题这些制造商可以将调试单元连接至微处理器,从而分析和伪造微处理器上的信息。
发明内容
考虑到上述的问题,本发明的目的是提供微处理器,调试器,以及调试系统,其中用于获得微处理器操作的调试操作以及存储在微处理器上的信息的安全都得以实现。
上述目的可以通过这样的调试系统实现包括,微处理器,用于存储保密程序信息;和主计算机,连接至微处理器,从而调试微处理器上的程序信息。
该微处理器包括非易失性存储器,该存储器(i)具有存储用于保证控制程序信息的密钥信息的区域,并且(ii)仅可以写一次。如果在非易失性存储器上没有存储密钥信息,该微处理器从主计算机上接收密钥信息,并且将该密钥信息写入非易失性存储器。使用被写入非易失性存储器的密钥信息,微处理器安全地执行程序信息与主计算机的传输。
在此,被写入非易失性存储器的密钥信息在微处理器外部是不可读的。
主计算机从用户接收密钥信息,存储从用户接收的密钥信息,并且将密钥信息发送至微处理器。使用其中存储的密钥信息,主计算机安全地与微处理器执行程序信息的传输。
根据该结构,被写入非易失性存储器的密钥信息不能从外部读或者写。在调试系统中,该微处理器和主计算机使用不能从外部读或者写的密钥信息而将程序信息安全地互相传输。因此,仅在主计算机上输入密钥信息的第一个用户能够获得存储在微处理器上的程序信息。因此,即使多个开发者与使用微处理器的系统的开发有关,只有输入该密钥信息的第一个用户能够获得存储在微处理器上的程序信息,并且在保证安全的情况下调试微处理器的操作。
在此,本发明可以是一个微处理器,用于存储保密程序信息,并且连接至用于调试微处理器中程序信息的主计算机。微处理器存储程序信息,该信息是程序,数据,以及程序和数据中的一个,并且读取程序信息,用以执行与已经读取的程序信息相应的操作。微处理器包括非易失性存储器,(a)具有存储用于安全控制程序信息的密钥信息的区域,以及(b)仅可以写一次。如果在非易失性存储器上没有存储密钥信息,微处理器从主计算机接收密钥信息,并且将接收的密钥信息写入非易失性存储器。使用被写入非易失性存储器的密钥信息,微处理器安全地与主计算机执行程序信息的传输。在此,被写入非易失性存储器的密钥信息在微处理器外部是不可读的。
根据该结构,一旦密钥信息被写入微处理器中的非易失性存储器,密钥信息在微处理器外部就不再可读或者可写。因此,微处理器能够安全地与主计算机执行程序信息的传输。
在此,非易失性存储器还可以在其中存储标志信息,该标志信息指示密钥信息是否存储在非易失性存储器上。微处理器可以读取标志信息,同时,如果读出的标志信息指示在非易失性存储器上没有密钥信息,则从主计算机接收密钥信息,并将从主计算机接收的密钥信息写入非易失性存储器。
根据该结构,微处理器读取非易失性存储器中的标志,从而判断密钥信息是否被写入非易失性存储器。
在此,微处理器可以利用存储在非易失性存储器上的密钥信息将程序信息加密,并且输出加密的程序信息。
根据该结构,利用被写入非易失性存储器中的密钥信息将程序信息加密。如以上所述,一旦密钥信息被写入非易失性存储器,其在微处理器外部就不再可读或者可写。因此,微处理器可以高度安全地将程序信息传输至主计算机。
在此,存储在微处理器中的程序信息可以是加密的程序信息,即,是加密的程序、加密的数据,以及加密的程序和加密的数据中的一个。微处理器可以读出存储在非易失性存储器中的密钥信息,利用读取的密钥信息,将加密的程序信息解密,从而产生解密的程序信息,即,是解密的程序,解密的数据,以及解密的程序和解密的数据中的一个,并且执行与解密程序信息相应的操作。同时,微处理器执行的传输可以是加密程序信息的传输。
根据该结构,存储在微处理器中的程序信息为加密的程序信息。因此,微处理器能够安全地执行程序信息与主计算机的传输。当对加密的程序信息执行了解密的时候,使用存储在非易失性存储器上的密钥信息。因此,能够执行存储在微处理器中的加密程序信息。
在此,微处理器可以利用存储在非易失性存储器中的密钥信息对操作的结果加密,并在其中写入加密的结果。
根据该结构,利用密钥信息,将存储在微处理器中的加密数据解密,以及通过在解密数据上进行计算产生的结果数据,使用密钥信息而被再次加密。因此,即使当存储在微处理器中的数据为加密数据的时候,仍可以实现加密数据的执行和安全性。
在此,存储在微处理器中的程序可以是加密程序,并且微处理器具有与外部设备通信的路径。
根据该结构,微处理器与外部设备相连。但是,由于微处理器存储了加密程序,实现了安全性。另一方面,由于微处理器存储了非加密数据,外部设备能够获得所需要的非加密数据。
在此,被写入非易失性存储器的密钥信息可以由一段或多段局部密钥信息构成。存储在微处理器中的程序可以是多个加密的局部程序,其中的每一个对应于局部密钥信息的任何一段。微处理器(a)从非易失性存储器上读取局部密钥信息段,(b)读取与所读取的局部密钥信息段对应的加密局部程序的一个或多个,(c)利用读取的多个局部密钥信息,将读取的加密局部程序解密,产生解密的局部程序,以及(d)执行与解密的局部程序对应的操作。
根据该结构,密钥信息的不同段被分配给每一个加密的局部程序,并且加密局部程序的每一个开发者设置不被其他开发者所知的密钥信息。因此,每一个加密的局部程序能够被安全地传输至主计算机。
在此,微处理器可以根据来自主计算机的请求,禁止加密程序信息的输出。
根据该结构,即使当微处理器存储加密程序信息的时候,响应来自主计算机的请求,加密程序信息向主计算机的输出仍被禁止。因此,可以防止恶意的分析者从微处理器获得加密的程序信息。
在此,微处理器可以存储禁止条件,该条件涉及从主计算机上接收的密钥信息。如果从主计算机上接收的密钥信息满足禁止条件,微处理器可以禁止加密的程序信息输出。
根据该结构,即使当微处理器存储了加密的程序信息时,如果密钥信息满足禁止条件,禁止加密的程序信息输出至主计算机。因此,防止恶意的分析者从微处理器获得加密的程序信息。在此,上述的微处理器禁止加密的程序信息的输出,响应来自主计算机的请求。但是,具有该结构的微处理器在其所拥有的主计算机判断是否禁止输出。从而获得较高级别的安全性。
在此,非易失性存储器还可以存储标志信息,该标志信息指示密钥信息是否存储在非易失性存储器中。并且微处理器可以读取标志信息。在此,如果读取的标志信息指示非易失性存储器中没有存储密钥信息,微处理器可以读取程序信息,并输出读取的程序信息。如果读取的标志信息指示非易失性存储器中存储了密钥信息,微处理器可以读取程序信息,利用存储在非易失性存储器中的密钥信息将读取的程序信息加密,并且输出加密的程序信息。
根据该结构,微处理器能够输出经过加密或者未经过加密的程序信息。微处理器选择其中的一个。因此,当非易失性存储器上没有存储密钥信息的时候,程序的开发者能够执行不包括加密的调试操作。然后,与开发者不同的用户能够写入密钥信息。作为举例,将该操作解释为使用IC卡的执行服务系统。安装在IC卡上的微处理器、程序和IC卡的开发者获得未加密的程序信息,以在开发阶段执行调试操作。然后,使用IC卡的服务供应商将程序信息和密钥信息写入非易失性存储器。一旦密钥信息被写入非易失性存储器,仅有服务供应商能够获得存储在微处理器上的程序信息。
在此,微处理器还可以包括高速缓冲存储器。存储在微处理器上的程序信息为加密的程序信息,是加密程序,加密数据,以及加密程序和加密数据中的一个。微处理器可以(a)读取存储在非易失性存储器上的密钥信息,(b)利用读取的密钥信息,将加密的程序信息解密,从而产生解密的程序信息,其可以是解密程序,解密数据,以及解密程序和解密数据中的一个,(c)将解密的程序信息写入高速缓冲存储器,(d)根据执行单元的处理速度,从高速缓冲存储器上读取解密的程序信息,(e)执行与解密的程序信息对应的操作。在此,微处理器执行的传输是加密的程序信息的传输。
根据该结构,当加密的程序信息加密所需要的时间短,而执行解密的程序信息所需要的时间长的时候,解密的程序信息被累加到高速缓冲存储器中,从而可以不产生问题的执行。
在此,本发明是主计算机,(i)与微处理器连接,用于存储保密程序信息,(ii)调试微处理器中的程序信息。主计算机从用户接收密钥信息,在此存储接收到的密钥信息,并将接收到的密钥信息发送到微处理器。利用其中的密钥信息,主计算机与微处理器安全地执行程序信息的传输。
根据该结构,从用户接收的密钥信息被发送至微处理器,并且利用密钥信息传输程序信息。因此,仅有用户知道程序信息。
在此,主计算机可以从微处理器接收加密的程序信息,利用其中存储的密钥信息,将加密的程序信息解密,从而产生解密的程序信息,并显示解密的程序信息。
根据该结构,程序信息不能被用户之外的人解密。因此,用户能够安全地获得程序信息并且执行调试操作。
在此,主计算机可以从用户接收程序信息,其可以是程序、数据,以及程序和数据中的一个,将从用户接收的程序信息加密,利用其中存储的密钥信息产生加密的程序信息,并将加密的程序信息输出至微处理器。
根据该结构,从用户接收的程序信息被加密,从而被传输到微处理器。因此,程序信息能够被安全地传输至微处理器。
在此,主计算机可以存储源程序,将源程序转换为目标程序,利用其中存储的密钥信息将目标程序加密,从而产生加密的程序。那么,主计算机可以将加密的程序传输至微处理器。
根据该结构,主计算机对源程序编译,产生目标程序。主计算机还将产生的目标程序加密,并且将其传输至微处理器。因此,目标程序可以被安全地写入微处理器。
在此,主计算机可以存储涉及密钥信息的禁止条件。如果密钥信息满足禁止条件,主计算机可以输出一个请求至微处理器,以禁止加密的程序信息的传输。
根据该结构,主计算机存储禁止条件,其是数字值,指示不同的密钥信息被输入的次数。因此,如果不同的密钥信息被输入多次,主计算机与微处理器之间的加密的程序信息的传输将被禁止。因此,即使恶意的分析者多次输入不同的密钥信息,企图将加密的程序信息解密,将防止她他将程序信息解密和伪造程序信息。
本发明的这些和其它目的、优点和特征将在下面结合说明本发明特定实施例的附图的描述中变得清楚。
图1表示微处理器10的结构框图。
图2表示主PC12的结构框图。
图3表示调试系统1的操作的流程图,并且该流程图在图4中继续。
图4表示调试系统1的操作流程图,是接着图3所示的流程图。
图5表示微处理器20的结构框图。
图6表示主PC22的结构框图。
图7表示调试系统2的操作的流程图,是接着图3所示的流程图。
图8表示微处理器30的结构框图。
图9表示微处理器40的结构框图。
图10表示主PC42的结构框图。
图11表示调试系统4的操作的流程图,是接着图3所示的流程图。
图12表示主PC52的结构框图。
图13表示调试系统5的操作的流程图,是接着图3所示的流程图。
图14表示微处理器60的结构框图。
图15表示主PC62的结构框图。
图16表示调试系统6的操作的流程图,是接着图7所示的流程图。
图17表示微处理器70的结构框图。
图18表示主PC72的结构框图。
图19表示调试系统7的操作的流程图,是接着图4和图20所示的流程图。
图20表示调试系统7的操作的流程图,是接着图19和图22所示的流程图。
图21表示微处理器80的结构框图。
图22表示调试系统8的操作的流程图,是接着图4和图20所示的流程图。
图23表示微处理器90的结构框图。
图24表示调试系统9的操作的流程图,是接着图4和图25所示的流程图。
图25表示调试系统9的操作的流程图,是接着图24所示的流程图。
图26表示微处理器100的结构框图。
具体实施例方式
1.第一实施例将参考附图描述涉及本发明第一实施例的调试系统1。
(结构)下面的部分描述调试系统1的结构。调试系统1由微处理器10,调试单元11,主PC12和外部存储器13构成。
微处理器10和外部存储器13安装在IC卡的基片上,所述IC卡由调试系统1的用户开发,并通过外部总线相互连接。调试单元11通过缆线与微处理器10和主PC12连接。在此,外部存储器13存储计算机程序,包括指令和数据,该计算机程序由微处理器10执行。
下面的部分详细描述微处理器10和主PC12。
(微处理器10)图1表示微处理器10的结构框图。如图1所示,微处理器10包括指令存储器101,指令执行单元102,数据存储器103,数据处理单元104,非易失性存储器105,加密电路106,调试接口107,以及总线控制器108。
指令存储器101尤其包括随机访问存储器(RAM)和只读存储器(ROM),并且存储指令。指令存储器101通过总线与指令执行单元102连接。另外,指令存储器101通过总线与加密电路106连接。因此,在从主PC12上运行的调试器接收请求的时候,指令存储器101将其中存储的指令输出至加密电路106。此外,指令存储器101接收并存储从加密电路106输出的指令。
指令执行单元102通过总线与指令存储器101连接。指令执行单元102读取,解释并执行存储在指令存储器101中的指令。指令执行单元102还通过总线控制器108和外部总线与外部存储器13相连。因此,指令执行单元102通过总线控制器108读取存储在外部存储器13中的指令,并且解释和执行指令。
数据存储器103尤其包括ROM和RAM的一个,并存储数据。数据存储器103通过总线与数据处理单元104相连。当数据存储器103从数据处理单元104接收的请求时,数据存储器103将数据输出至数据处理单元104。数据存储器103接收并存储从数据处理单元104输出的计算结果。数据存储器103也通过总线与加密电路106相连。因此,数据存储器103将其中存储的数据输出至加密电路106,响应来自主PC上运行的调试器的请求。同时,数据存储器103接收并存储从加密电路106输出的数据。
数据处理单元104通过总线与数据存储器103相连。数据处理单元104从数据存储器102读取数据,对读取的数据执行计算,并将计算的结果写入数据存储器103。数据处理单元104还通过总线和总线控制器108与外部存储器13连接。因此,数据处理单元104通过总线控制器108读取存储在外部存储器13上的数据,在读取的数据上执行计算,并且将计算的结果写入外部存储器13。
非易失性存储器105具有用于存储密钥的区域,以及存储判断标志的区域。当密钥被写入,就被存储在非易失性存储器105的相应区域中。在此,密钥是加密密钥,用于加密电路106执行对指令和数据加密。一旦密钥被写入非易失性存储器105,就在微处理器10外部不再可读或可写。判断标志用于判断密钥是否被写入非易失性存储器105。如果密钥被写入非易失性存储器105,则在非易失性存储器105中设置判断标志。一旦设置了判断标志,以后就不能再恢复。
加密电路106,利用主PC12,通过调试接口107和调试单元11,将从指令存储器101或数据存储器103读取的指令和数据加密。利用存储在非易失性存储器105中的密钥作为加密密钥,加密电路106对存储在指令存储器101的指令和存储在数据存储器103的数据执行加密算法E1,以产生加密的指令和加密的数据。例如,加密算法E1是数据加密标准(DES)。加密电路106通过调试接口107和调试单元11将加密的指令和加密的数据输出至主PC12。
调试接口107是包括调试终端的接口。调试接口107与加密电路106、调试单元11、非易失性存储器105和调试单元11相连。
当调试接口107通过调试单元11、从PC12接收表示将被显示的指令的信号时,调试接口107从指令存储器101提取指令,并且将提取的指令输出至加密电路106。当调试接口107接收表示将被显示的数据的信号时,调试接口107从数据存储器103提取数据,并且将提取的数据输出至加密电路106。当调试接口107通过调试单元11从主PC接收指令时,调试接口107通过加密电路106将接收的指令写入指令存储器101。在此,调试接口107需要加密电路106将接收的指令写入指令存储器101,而不对指令加密。当调试接口107通过调试单元11从主PC12接收数据时,调试接口107通过加密电路106将接收的数据写入数据存储器103。在此,调试接口107需要加密电路106将接收的数据写入数据存储器103,而不对数据加密。
总线控制器108在设置于微处理器10外部的外部存储器13和指令执行单元102之间,以及外部存储器13和数据处理单元104之间,执行信息的传送。
(主PC12)主PC12为计算机系统,其中调试器相应于微处理器10的操作。主PC12尤其是包括微处理器,ROM,RAM,硬盘单元,显示屏,键盘,鼠标等等。硬盘单元存储各种计算机程序,包括调试程序。
图2表示主PC12功能的功能框图。如图2所示,主PC12包括显示单元121和调试器122。调试器122功能性地描述为存储在硬盘单元上的调试程序如何操作,当其被主PC12上的微处理器执行的时候。调试器122包括密钥输入单元123,命令输入单元124,解密单元125,以及指令/数据输入单元126。
显示单元121包括显示屏,并且在显示屏上显示来自调试器122的屏幕页面输出。当用于接收密钥输入的屏幕页面在屏幕上显示的时候,显示单元121在显示屏上显示密钥单元123接收了什么。类似地,当用于接收命令输入的屏幕页面在显示屏上显示的时候,显示单元121在显示屏上显示命令输入单元124接收了什么。当用于接收指令输入的屏幕页面在显示屏上显示的时候,显示单元121在显示屏上显示指令/数据输入单元126接收了什么。当用于接收数据输入的屏幕页面在显示屏上显示的时候,显示单元121在显示屏上显示指令/数据单元126接收了什么。
密钥输入单元123将屏幕页面信息输出至显示单元121,以产生用于接收密钥输入的屏幕页面。当用于接收密钥输入的屏幕页面在显示单元121显示的时候,密钥输入单元123利用键盘和鼠标,通过用户操作接收密钥的输入。密钥输入单元123中存储接收的密钥。密钥输入单元123通过微处理器10的调试单元11和调试接口107从非易失性存储器105中读取判断标志,然后判断密钥是否被写入非易失性存储器105。如果密钥没有被写入,密钥输入单元123通过调试单元11和调试接口107将接收的密钥发送至非易失性存储器105。在此,如果调试器122的操作结束,密钥输入单元123废除其中存储的密钥。
命令输入单元124将屏幕页面信息输出至显示单元121,产生用于接收命令输入的屏幕页面。当用于接收命令输入的屏幕页面在显示单元121显示的时候,命令输入单元124利用键盘和鼠标,通过用户操作接收命令输入。然后,命令输入单元124读取接收的命令。当接收的命令为指令显示命令时,命令输入单元124通过调试单元11,将指示将被显示的命令的信号发送至调试接口107。当接收的命令为指令写命令时,命令输入单元124将与命令对应的信号发送至指令/数据输入单元126。当接收的命令是数据显示命令时,命令输入单元124通过调试单元11将指示将被显示的数据的信号发送至调试接口107。当接收的命令是数据写信号时,命令输入单元124将与命令对应的信号输出至指令/数据输入单元126。当接收的命令是结束命令时,主PC12的操作结束。
解密单元125通过调试单元11和调试接口107,从加密电路106接收由加密电路106产生的加密指令。解密单元125读取存储在密钥输入单元123中的密钥。利用读取的密钥作为解密密钥,解密单元125对接收的加密指令执行解密算法D1,以产生解密的指令。解密算法D1是将利用加密算法E1产生的加密文本解密的算法。解密单元125将解密指令输出至显示单元121。类似地,解密单元125通过调试单元101和调试接口107,从加密电路106接收由加密电路106产生的加密数据。然后,解密单元125读取存储在密钥输入单元123中的密钥。利用读取的密钥作为解密密钥,解密单元125对接收的加密数据执行解密算法D1,以产生解密数据。解密单元125将解密数据输出至显示单元121。
在此,如果由密钥输入单元123接收的密钥与存储在非易失性存储器105中存储的密钥相同,主PC12就能够正确地将从微处理器10获得的加密指令和加密数据解密。
当指令/数据输入单元126从命令输入单元124接收指示将被写的指令信号时,指令/数据输入单元126将屏幕页面信息输出至显示单元121,以产生用于接收指令输入的屏幕页面。当用于接收指令输入的屏幕页面在显示单元121上显示时,指令/数据输入单元126利用键盘,通过用户操作接收指令输入。指令/数据输入单元126通过调试单元11,将接收的指令输出至调试接口107。当指令/数据输入单元126从命令输入单元124接收指示将被写的数据的信号时,指令/数据输入单元126将屏幕页面信息输出至显示单元121,以产生用于接收数据输入的屏幕页面。当用于接收数据输入的屏幕页面在显示单元121上显示时,指令/数据输入单元126利用键盘,通过用户操作接收数据的输入。指令/数据输入单元126通过调试单元11将接收的数据发送至调试接口107。
(操作)下面的部分参考流程图3和4描述调试系统1的操作。
主PC12的调试器122被激活,密钥输入单元123从用户接收密钥输入(步骤S101)。密钥输入单元123中存储接收的密钥(步骤S102)。密钥输入单元123通过调试单元11,从微处理器10的非易失性存储器105中检索判断标志,并且读取检索到的判断标志,从而判断密钥是否已经被写入非易失性存储器105(步骤S103)。如果密钥没有被写入(步骤S104的“否”),密钥输入单元123将其中存储的密钥通过调试单元11和调试接口107写入非易失性存储器105(步骤S105)。在此之后,密钥输入单元123在非易失性存储器105中设置判断标志,以指示密钥已经被写入非易失性存储器105(步骤S106)。
在此之后,主PC12的命令输入单元124从用户接收命令输入(步骤S107)。在此,用户选择并输入指令显示命令、指令写命令、数据显示命令、数据写命令以及结束命令中的一条。命令输入单元124读取接收的命令(步骤S108)。
当接收的命令为指令显示命令时(指令显示步骤S108),命令输入单元124将信号发送至调试接口107。调试接口107从指令存储器101提取指令(步骤S109)并且将提取的指令输出至加密电路106。加密电路106接收指令,并利用存储在非易失性存储器105中的密钥将接收的指令加密(步骤S110)。加密电路106通过调试接口107以及调试单元11将加密指令输出至主PC12(步骤S111)。主PC12的解密单元125接收加密指令,并且利用在步骤S102存储在密钥输入单元123中的密钥将加密指令解密(步骤S112)。解密单元125将解密指令输出至显示单元121,并且显示单元121在显示屏上显示解密指令(步骤S113)。在此,如果在步骤S101中输入的密钥与存储在非易失性存储器105中的密钥相同,指令将被正确地显示。如果这些密钥不相同,指令将不能被正确地解密。在此之后,调试系统1的处理返回步骤S107并继续。
当接收的命令是指令写命令时(指令写步骤S108),主PC12的指令/数据输入单元126从用户接收指令输入(步骤S121)。指令/数据输入单元126通过调试单元11将接收的指令发送至调试接口107,并且调试接口107将指令输出至加密电路106(步骤S122)。加密电路106从调试接口107接收指令,并将指令写入指令存储器101(步骤S123)。在此,加密电路106将指令写入指令存储器101,而不对指令加密。在此之后,调试系统1的处理返回步骤S107并继续。
当接收的命令是数据显示命令时(数据显示步骤S108),命令输入单元124将信号发送至调试接口107。调试接口107提取存储在数据存储器103中的数据(步骤S131),并将提取的数据输出至加密电路106。加密电路106从调试接口107接收数据,并利用存储非易失性存储器105中的密钥将数据加密(步骤S132)。加密电路106通过调试接口107和调试单元11将加密数据输出至主PC12(步骤S133)。主PC12的解密单元125接收加密数据,并利用在步骤S102中存储在密钥输入单元123中的密钥将数据解密(步骤S134)。解密单元125将解密数据输出至显示单元121,显示单元121在显示屏幕上显示解密数据(步骤S135)。在此,如果在步骤S101中输入的密钥与存储在非易失性存储器105中的密钥相同,能正确显示数据。如果这些密钥不同,则不能正确显示数据。在此之后,调试系统1返回步骤S107并继续。
当接收的命令是数据写命令时(数据写步骤S108),主PC12的指令/数据输入单元126从用户接收数据输入(步骤S141)。指令/数据输入单元126通过调试单元11将接收的数据发送至调试接口107,调试接口107将数据输出至加密电路106(步骤S142)。加密电路106从调试接口107接收数据,并将数据写入数据存储器103(步骤S143)。在此,加密电路106将数据写入数据存储器103,而不对数据加密。在此之后,调试系统1的处理返回步骤S107并继续。
当接收的命令是结束命令时(结束步骤S108),主PC12的操作结束。
2.第二实施例将参考附图描述涉及本发明第二实施例的调试系统2。
(结构)下面的部分描述了调试系统2的结构。调试系统2包括微处理器20,调试单元21,主PC22。微处理器20安装在IC卡的基片上,由调试系统2的用户开发。调试单元21通过电缆与微处理器20和主PC22相连。
下面的部分详细描述微处理器20和主PC22。
(微处理器20)图5表示微处理器20的结构框图。如图5所示,微处理器20包括指令存储器201,指令执行单元202,数据存储器203,数据处理单元204,非易失性存储器205,解密电路206,以及调试接口207。
指令存储器201尤其包括RAM和ROM,存储加密的指令。存储在指令存储器201上的加密指令预先以这样的方式产生主PC22(后面将提到)的编译器224对指令执行加密算法E2。指令存储器201通过总线与解密电路206相连,也通过总线与调试接口207相连。因此,从在主PC22上操作的调试器上接收请求时,指令存储器201通过调试接口207和调试单元21将存储在其中的加密指令输出至主PC22。同时,指令存储器201接收并存储从调试接口207输出的加密指令。
指令执行单元202通过总线与解密电路206相连。指令执行单元202接收、解释并执行来自解密电路206的指令。
数据存储器203尤其是ROM和RAM其中之一,并存储数据。数据存储器203通过总线与数据处理单元204相连。当数据存储器203从数据处理单元204接收请求时,数据存储器203将数据输出至数据处理单元204。数据存储器203接收并存储从数据处理单元204输出的计算结果。数据存储器203通过总线与调试接口207相连。从在主PC上操作的调试器接收请求时,数据存储器203将存储在其中的数据输出至调试接口207。同时,数据存储器203接收并存储从调试接口207输出的数据。
数据处理单元204通过总线与数据存储器203相连。数据处理单元204从数据存储器203读取数据,在读取的数据上执行计算,并将计算结果写入数据存储器203。
非易失性存储器205具有存储密钥的区域,以及存储判断标志的区域。当密钥被写入时,将被存储器在非易失性存储器205中对应的区域。在此,密钥是利用解密电路206执行的,用于将加密指令解密的解密密钥。一旦密钥被写入非易失性存储器205,在微处理器20之外将不再可读或者可写。判断标志用于判断密钥是否已经被写入非易失性存储器205。如果密钥被写入非易失性存储器205,将在非易失性存储器205中设置判断标志。一旦设置了判断标志,后来将不能复位。
解密电路206将加密指令解密,加密指令是由指令执行单元202从指令存储器201中读取的。利用存储在非易失性存储器205中的密钥作为解密密钥,解密电路206对存储在指令存储器201中的加密指令执行解密算法D2,以产生解密指令。解密算法D2是将利用加密算法E2产生的加密文本解密的算法。解密电路206将解密的指令输出至指令执行单元202。
调试接口207是这样的接口,包括,与微处理器20和调试单元21相连的调试终端。调试接口207与指令存储器201和调试单元21、数据存储器203和调试单元21,以及非易失性存储器205和调试单元相连。
当调试接口207通过调试单元21从主PC接收了表示指令将被显示的信号时,调试接口207从指令存储器201提取加密指令。当调试接口207接收了指示数据将被显示的信号时,调试接口207从数据存储器203上提取数据,并将提取的数据输出至调试单元21。当调试接口207通过调试单元21从主PC接收加密指令时,调试接口207将接收的加密指令写入指令存储器201。当调试接口207接收数据时,调试接口207将接收的数据写入数据存储器203。
(主PC22)主PC22是一个计算机系统,其中编译器和调试器与微处理器20的操作相对应。主PC22尤其包括微处理器,ROM,RAM,硬盘单元,显示屏,键盘,鼠标等等。硬盘单元存储不同的计算机程序,包括调试程序和编译程序。
图6是表示主PC22结构的框图。如图6所示,主PC22包括显示单元221和调试器222,源文件223,编译器224和加密的目标文件235。调试器222功能性地描述为当被主PC22的微处理器执行时,存储在硬盘单元中的调试程序如何操作。调试器222包括密钥输入单元225,命令输入单元226,解密单元227,指令/数据输入单元228,以及加密单元229。
编译器224功能性地描述为当在主PC22的微处理器上执行时,存储在硬盘单元中的编译程序如何操作。编译器224包括编译/汇编/链接单元231,目标文件232,以及密钥输入单元233,加密单元234。
显示单元221包括显示屏,并在显示屏上显示从调试器222输出的屏幕页面数据。当在显示屏上显示用于接收密钥输入的屏幕页面时,显示单元221在显示屏上显示密钥输入单元225接收了什么。当在显示屏上显示用于接收命令输入的屏幕页面时,显示单元221在显示屏上显示命令输入单元226接收了什么。当在显示屏上显示用于接收指令输入的屏幕页面时,显示单元221在显示屏上显示指令/数据输入单元228接收了什么。当在显示屏上显示用于接收数据输入的屏幕页面时,显示单元221在显示屏上显示指令/数据输入单元228接收了什么。
密钥输入单元225将屏幕页面信息输出至显示单元221,以产生用于接收密钥输入的屏幕页面。当用于接收密钥输入的屏幕页面在显示单元221上显示时,密钥输入单元225利用键盘和鼠标,通过用户操作接收密钥输入。密钥输入单元225存储接收的密钥。在此之后,密钥输入单元225通过微处理器20的调试单元21和调试接口207读取非易失性存储器205中的判断标志,然后判断密钥是否已经被写入非易失性存储器205。如果密钥尚未被写入,密钥输入单元225通过调试单元21和调试接口207将接收的密钥发送至非易失性存储器205。如果调试器222的操作结束,密钥输入单元225废除其中存储的密钥。
命令输入单元226将屏幕页面信息输出至显示单元221,以产生用于接收命令输入的屏幕页面。当在显示单元221上显示用于接收命令输入的屏幕页面时,命令输入单元226利用键盘和鼠标,通过用户操作接收命令输入。此外,命令输入单元226读取接收的命令。当接收的命令是指令显示命令,命令输入单元226通过调试单元21将指示将被显示的指令的信号发送至调试接口207。当接收的指令是指令写命令时,命令输入单元226将与命令对应的信号发送至指令/数据输入单元228。当接收的命令是数据显示命令时,命令输入单元226通过调试单元21,将表示即将被显示的数据的信号发送至调试接口207。当接收的命令是数据写命令时,命令输入单元226将与命令对应的信号发送至指令/数据输入单元228。当接收的命令是结束命令时,主PC22的操作结束。
解密单元227通过调试单元21和调试接口207,从指令存储器201接收加密指令。此外,解密电路227读取存储在密钥输入单元225中的密钥。利用读取的密钥作为解密密钥,解密单元227对接收的加密指令执行解密算法D2,以产生解密指令。解密单元227将解密指令输出至显示单元221。
在此,如果密钥输入单元225接收的密钥与存储在非易失性存储器205中的密钥相同,主PC22能够正确地将从微处理器20获得的加密指令解密。
当接收到与来自命令输入单元226的指令写命令对应的信号时,指令/数据输入单元228将屏幕页面信息输出至显示单元221,以产生用于接收指令输入的屏幕页面。当在显示单元221上显示用于接收指令输入的屏幕页面时,指令/数据输入单元228利用键盘,通过用户的操作接收指令的输入。指令/数据输入单元228将接收的指令输出至加密电路229。当指令/数据输入单元228接收与来自命令输入单元226的数据写命令对应的信号时,指令/数据输入单元228将屏幕页面信息输出至显示单元221,以产生用于接收数据输入的屏幕页面。当在显示单元221上显示用于接收数据输入的屏幕页面时,指令/数据输入单元228利用键盘,通过用户的操作接收数据输入。指令/数据输入单元228通过调试单元21,将接收的数据发送至调试接口207。
加密单元229从指令/数据输入单元228接收指令,并读取存储在密钥输入单元225中的密钥。利用读取的密钥作为加密密钥,加密单元229对接收的指令执行加密算法E2,以产生加密指令。加密单元229通过调试单元21将加密指令发送至调试接口207。
编译/汇编/链接处理单元231从外部存储设备中读取源文件223,并对源文件223执行编译/汇编/链接处理,以产生目标文件232。然后密钥输入单元233通过键盘和鼠标接收密钥的输入,并且将接收的密钥存储其中。利用存储在密钥输入单元233中的密钥作为加密密钥,加密单元234对源文件232执行加密算法E2,以产生加密的目标文件235。编译器224将加密目标文件235写入外部存储设备。
(操作)下面的部分参考流程图3和7描述调试系统2的操作。
图3中的步骤S101至S108对于调试系统1和2的操作来说是相同的。因此,不再对这些步骤进行说明。下面将描述图7中步骤。
当接收的命令是指令显示命令时(指令显示步骤S108),调试器222通过调试单元21将与命令对应的信号发送至调试接口207。调试接口207读取存储在指令存储器201中的加密指令,并通过调试单元21将加密指令输出至解密单元227(步骤S201)。解密单元227接收加密指令,并利用由密钥输入单元225接收的密钥将加密指令解密,以产生解密指令(步骤S202)。解密单元227将解密指令输出至显示单元221。显示单元221接收指令,并在显示屏幕上显示指令(步骤S203)。在此之后,调试系统2的处理返回至图3所示的步骤S107并继续。
当接收的命令是指令写入命令时(指令写入步骤S108),主PC22的指令/数据输入228从用户接收指令输入(步骤S206)。指令/数据输入单元228将接收的指令发送至加密单元229。加密单元229读取存储在密钥输入单元225中的密钥,并利用读取的密钥作为加密密钥将指令加密(步骤S207)。加密单元229通过调试单元21,将加密指令发送至调试接口207(步骤S208)。调试接口207接收加密指令,并将其存储在指令存储器201中(步骤S209)。在此之后,调试系统2的处理返回至步骤S107并继续。
当接收的命令是数据显示命令时(数据显示步骤S108),主PC22的调试器222通过调试单元21,将与命令对应的信号发送至调试接口207。调试接口207读取存储在数据存储器203中的数据,并通过调试单元21将读取的数据输出至显示单元221(步骤S221)。显示单元221在显示屏上接收并显示数据(步骤S222)。在此之后,调试系统2的处理返回至步骤S107并继续。
当接收的命令是数据写入指令时(数据写入步骤S108),主PC22的指令/数据输入单元228从用户接收数据输入(步骤S231)。指令/数据输入单元228通过调试单元21将接收的数据发送至调试接口207(步骤S232)。调试接口207接收数据并将其存储在数据存储器203中(步骤S233)。在此之后,调试系统2的处理返回步骤S107并继续。
当接收的命令是结束命令(结束步骤S108),主PC22的操作结束。
(修改实例1)将描述调试系统2的修改实例,即调试系统3。
(结构)调试系统3包括微处理器30,调试单元31,主PC32及外部存储器33。微处理器30和外部存储器33安装在IC卡的基片上,由调试系统3的用户开发,并通过外部总线互连。调试单元31通过电缆与微处理器30和主PC32相连。在此,外部存储器33存储数据和加密指令。加密指令已经以这样的方式预先产生使用与存储器在微处理器30的非易失性存储器305中的密钥相同的密钥对指令执行加密算法E2。加密指令由微处理器30解密和执行。
调试系统3与调试系统2不同,其中外部存储器33与微处理器30相连。没有图示主PC32的结构,因为主PC32具有与调试系统2中的主PC22相同的结构和功能。因此,主PC的结构在此不描述。下面的部分着重描述微处理器30与微处理器20不同之处。
图8表示微处理器30的结构框图。如图8所示,微处理器30包括指令存储器301,指令执行单元302,数据存储器303,数据处理单元304,非易失性存储器305,解密电路306,调试接口307,以及总线控制器308。
指令存储器301,数据存储器303,非易失性存储器305,以及调试接口307分别具有与指令存储器201,数据存储器203,非易失性存储器205,调试接口207相同的功能。因此,不再描述它们的构成。
指令执行单元302通过总线与解密电路306相连。指令执行单元302接收,解释并执行来自解密电路306的指令。在此,指令执行单元302从解密电路306接收的指令是通过对存储在指令存储器301或存储在外部存储器33中的加密指令解密而产生的。
数据处理单元304通过总线与数据存储器303相连。数据处理单元304从数据存储器303读取数据,对读取的数据执行计算,并将计算结果写入数据存储器303。同时,数据处理单元304通过总线及总线控制器308连接到外部存储器33。因此,数据处理单元304通过总线控制器308读取存储在外部存储器33中的数据,对读取的数据执行计算,并将计算的结果写入外部存储器33。
解密电路306利用存储在非易失性存储器305中的密钥作为解密密钥,对存储在指令存储器301中的加密指令执行解密算法D2,以产生解密指令。同时,解密电路306对存储在外部存储器33中的加密指令执行解密算法D2,以产生解密指令。解密算法D2是将利用加密算法E2产生的加密文本进行解密的算法。解密电路306将解密指令输出至指令执行单元302。
总线控制器308执行设置在微处理器30之外的外部存储器33和指令执行单元302之间的信息转换,以及外部存储器33和数据处理单元304之间的信息转换。
图3和7中的调试系统3的操作与调试系统2相同。因此,调试系统3的操作将不再进行说明。
(修改实例2)将描述调试系统2的修改实例,即调试系统4。
(结构)调试系统4包括微处理器40,调试单元41,主PC42。微处理器40安装在IC卡的基片上,由调试系统4的用户开发。调试单元41通过电缆与微处理器40和主PC42连接。
调试系统4与调试系统2不同,其中微处理器40中存储加密数据,该加密数据是通过对数据执行加密算法E2产生的,并且其中微处理器40将加密数据解密,以执行数据处理。微处理器40对数据处理所获得的计算结果执行加密算法E2,以产生加密数据,并且在其中存储加密数据。下面的部分着重描述微处理器40与微处理器20不同之处。
图9是微处理器40的结构框图。如图9所示,微处理器40包括,指令存储器401,指令执行单元402,数据存储器403,数据处理单元404,非易失性存储器405,解密电路406,调试接口407,加密/解密电路408。
指令存储器401,指令执行单元402,调试接口407分别具有与指令存储器201,指令执行单元202,调试接口207相同的功能。因此,不再对这些结构进行描述。
数据存储器403尤其是ROM和RAM其中之一,存储加密数据,该加密数据是以这样的方式产生的利用与存储在非易失性存储器405中相同的密钥作为加密密钥,对数据执行加密算法E2。数据存储器403通过总线与解密/加密电路408相连。当数据存储器403从数据处理单元404接收请求时,数据存储器403将加密数据输出至加密/解密电路408。此外,数据存储器403接收并存储已经被解密/加密电路408加密的计算结果。数据存储器403也通过总线与调试接口407相连。当从主PC42中运行的调试器接收了一条请求时,数据存储器403将其中存储的加密数据输出至调试接口407。同时,数据存储器403接收并存储从调试接口407输出的加密数据。
数据处理单元404通过总线与加密/解密电路406相连。数据处理单元404从加密/解密电路408接收数据,对接收的数据执行计算,并将计算的结果输出至加密/解密电路408。
解密电路406通过总线与指令存储器401和非易失性存储器405相连。解密电路406从指令存储器401接收加密指令。解密电路406读取存储在非易失性存储器405中的密钥。利用读取的密钥作为解密密钥,解密电路406对加密指令执行解密算法D2,以产生解密指令。解密算法D2是将利用加密算法E2产生的加密文本解密的算法。解密电路406将解密指令输出至指令执行单元402。
加密/解密电路408包括加密电路和解密电路。当加密/解密电路408从数据存储器403接收加密数据时,加密/解密电路408利用其中的解密电路产生解密数据,并将解密数据输出至数据处理单元404。当加密/解密电路408从数据处理单元404接收数据时,加密/解密电路408利用其中的加密电路,产生加密数据,并将加密数据输出至数据存储器403。
主PC42是个人计算机,其中的编译器和调试器对应于微处理器40的操作。如图10所示,主PC42包括显示单元421,调试器422,源文件423,编译器424。调试器422功能性地描述为在主PC42中运行的调试程序。调试器422包括密钥输入单元425,命令输入单元426,解密单元427,指令/数据输入单元428,加密单元429。编译器424功能性地描述为主PC42中运行的编译程序,汇编程序,以及链接程序。编译器424包括编译/汇编/链接处理单元431,目标文件432,密钥输入单元433,以及加密单元434。主PC42具有与主PC22相同的功能。因此,不对主PC42做详细描述。
(操作)下面的部分参考图3和11的流程图描述调试系统4的操作。
图3中的步骤S101至S108在调试系统1和4中是相同的。因此,不再描述这些步骤。下面将描述图11中所示的步骤。
当接收的命令是指令显示命令时(指令显示步骤S108),主PC42的调试器422通过调试单元41,将与命令对应的信号发送至调试接口407。调试接口407读取存储在指令存储器401中的加密指令,并通过调试单元41将加密指令输出至解密单元427(步骤S401)。解密单元427通过调试单元41,利用由密钥输入单元425接收的密钥将加密指令解密,以产生解密指令(步骤S402)。解密单元427将解密指令输出至电视广播单元421,并且显示单元421在显示屏上显示解密指令(步骤S403)。在此之后,调试系统4的处理将返回至步骤S107并继续。
当接收的命令是指令写入命令时(指令写入步骤S108),主PC42的指令/数据输入单元428从用户接收指令的输入(步骤S411)。指令/数据输入单元428将接收的指令输出至加密单元429。加密单元429读取存储在密钥输入单元425中的密钥,并利用读取的密钥作为加密密钥将指令加密(步骤S412)。加密单元429通过调试单元41将加密指令发送至调试接口407(步骤S413)。调试接口407接收加密指令,并将其存储在指令存储器401(步骤S414)。在此之后,调试系统4的处理返回步骤S107并继续。
当接收的命令是数据显示命令时(数据显示步骤S108),主PC42的调试器422通过调试单元41将与命令对应的信号发送至调试接口407。然后,调试接口407读取存储在数据存储器403中的加密数据,并通过调试单元41将加密数据输出至解密单元427(步骤S421)。解密单元427通过调试单元41从调试接口407接收加密数据。解密单元427利用由密钥输入单元425接收的密钥将加密数据解密,以产生解密数据(步骤S422)。解密单元427将解密数据输出至显示单元421。显示单元421接收并在显示屏上显示解密数据(步骤S423)。在此之后,调试系统4的处理返回图3中的步骤S107并继续。
当接收的命令是数据写入命令时(数据写入步骤S108),主PC42的指令/数据输入单元428从用户接收数据输入(步骤S431)。指令/数据输入单元428将接收的数据发送至加密单元429。加密单元429读取存储在密钥输入单元425中的密钥,并利用读取的密钥作为加密密钥,以将数据加密(步骤S432)。加密单元429通过调试单元41将加密数据发送至调试接口407(步骤S433)。调试接口407接收加密数据,并将加密数据存储在数据存储器403(步骤S434)。在此之后,调试系统4的处理返回步骤S107并继续。
当接收的命令是结束命令时(结束步骤S108),主PC42的操作结束。
(修改实例3)
将描述调试系统2的修改实例,即调试系统5。
(结构)如图12所示,调试系统5包括微处理器50,存储器读/写设备51,以及主PC52。微处理器50安装在IC卡的基片上,由调试系统5的用户开发。存储器读/写设备51读取微处理器50的存储器中的程序和数据,并将程序和数据写入微处理器50的存储器。存储器读/写设备51通过电缆与微处理器50和主PC52相连。
微处理器50包括,指令存储器501,指令执行单元502,数据存储器506,数据处理单元504,非易失性存储器505,解密电路506,以及调试接口507。由于微处理器50与图5中所示的微处理器20具有相同的结构,所以不再给出微处理器50的结构图。微处理器50具有分别与微处理器20中的指令存储器201,指令执行单元202,数据存储器203,数据处理单元204,非易失性存储器205,解密电路206,调试接口207相同的功能的结构。因此,不再描述微处理器50的结构。
主PC52包括,微处理器,ROM,RAM,硬盘单元,显示屏,键盘,鼠标等等。硬盘单元存储不同的计算机程序,包括存储器读/写设备控制程序。
图12表示主PC52的功能框图。如图12所示,主PC52包括显示单元521和存储器读/写设备控制单元522,源文件523,编译器524。存储器读/写设备控制单元522包括密钥输入单元525,存储器操作命令输入单元526,解密单元527,加密单元528。
显示单元521包括显示屏,在显示屏上显示来自存储器读/写设备控制单元522的屏幕页面数据。当在屏幕上显示用于接收密钥输入的屏幕页面时,显示单元521在显示屏上显示密钥输入单元525接收了什么。当在显示屏上显示用于接收命令输入的页面信息时,显示单元521在屏幕上显示存储器操作命令输入单元526接收了什么。
密钥输入单元525尤其包括键盘,鼠标等等,并将用于产生用于接收密钥输入的屏幕页面的屏幕页面信息输出至显示单元521。当在显示单元521上显示用于接收密钥输入的屏幕页面时,密钥输入单元525利用键盘和鼠标,通过用户操作接收密钥输入。密钥输入单元525在其中存储接收的密钥。而且,密钥输入单元525通过存储器读/写设备51,将接收的密钥发送至调试接口507。如果存储器读/写设备控制单元522的操作结束,密钥输入单元525废除存储在其中的密钥。
存储器操作命令输入单元526尤其包括键盘,鼠标等等,并将用于产生接收命令输入的屏幕页面的屏幕页面信息输出至显示单元521。当显示单元521上显示用于接收命令输入的屏幕页面时,存储器操作命令输入单元526利用键盘和鼠标,通过用户操作接收命令输入。此外,存储器操作命令输入单元526读取接收的命令。
当接收的命令是“从存储器读”的命令时,存储器操作命令输入单元526通过存储器读/写设备51,将与命令对应的信号发送至调试接口507。当接收的命令是“向存储器写”的命令时,存储器操作命令输入单元526将请求编译器524指定将被写入文件的信号发送至编译器524。当接收的命令是“结束命令”时,主PC52的操作结束。
解密单元527通过存储器读/写设备51,从微处理器50接收加密指令。然后,解密单元527读取存储器在密钥输入单元525中的密钥。利用读取的密钥作为解密密钥,解密单元527对接收的加密指令执行解密算法D2,以产生解密指令。解密单元527将解密指令输出至显示单元521。
在此,如果由密钥输入单元525接收的密钥与存储在非易失性存储器505中的密钥相同,主PC52能够正确地将从微处理器50获得的加密指令解密。
加密单元528从外部存储设备读取目标文件532。加密单元528同时读取存储在密钥输入单元525中的密钥。利用读取的密钥作为加密密钥,加密单元528对读取的目标文件532执行加密算法E2,以产生加密文件。加密单元528通过存储器读/写设备51将加密文件发送至微处理器50。
编译器524功能性地描述为在主PC52上运行的编译程序,汇编程序和链接程序。编译器524从存储器操作命令输入单元526接收请求,并从外部存储设备读取由请求指定的文件,即源文件523。编译器524对源文件523执行编译,汇编,链接操作,以产生目标文件532。然后,编译器524将目标文件532写入外部存储设备。
(操作)下面的部分参考流程图3和13描述调试系统5的操作。图3中的步骤S101至步骤S108对于调试系统1和5来说是相同的。因此,不再对这些步骤进行描述,在下面的部分将说明图13中所示的步骤。
当接收的命令是“向存储器写”的命令时(向存储器写步骤S108),主PC52的存储器操作命令输入单元526接收一条请求,指定将被写入微处理器50的目标文件(步骤S501)。存储器操作命令输入单元526从外部存储器设备中读取指定的目标文件(步骤S502),并将其传输至加密单元528。加密单元528接收目标文件,并利用存储在密钥输入单元525中的密钥作为加密密钥,对目标文件执行加密算法E2,对目标文件加密(步骤S503)。加密单元528通过存储器读/写设备51将加密目标文件输出至微处理器50(步骤S504),从而将加密目标文件写入微处理器50的指令存储器501以及数据存储器503(步骤S505)。
当接收的命令是“从存储器读”的命令(从存储器读步骤S108),主PC52的存储器读/写设备控制单元522通过存储器读/写设备51将与命令对应的信号发送至调试接口507。调试接口507分别从指令存储器501和数据存储器503读取加密指令和加密数据,并通过存储器读/写设备51将它们输出至解密单元527(步骤S511)。解密单元527接收加密指令和加密数据,并利用密钥输入单元525接收的密钥将它们解密,以产生解密指令和解密数据(步骤S512)。解密单元527将解密指令和解密数据输出至显示单元521,显示单元521接收并在显示屏上显示解密指令和解密数据(步骤S513)。在此之后,调试系统5的处理返回至图3中的步骤S107并继续。
当接收的命令是结束命令时,主PC52的操作结束。
3.第三实施例下面将参考有关附图描述涉及本发明第三实施例的调试系统6。
(结构)下面的部分描述调试系统6的结构。调试系统6包括微处理器60,调试单元61,主PC62以及外部存储器63。微处理器60和外部存储器63安装在IC卡的基片上,由调试系统6的用户开发,并且通过外部总线互连。调试单元61通过电缆与微处理器60和主PC62相连。外部存储器63被分成(n-1)个存储器块,每一个存储器块存储了由加密的指令和数据构成的计算机程序。计算机程序由微处理器60执行。
根据调试系统6,多个开发者能够利用程序唯一的密钥调试微处理器60的操作,其中程序是由开发者中的每一个开发的。下面的部分详细描述微处理器60和主PC62。
(微处理器60)图14表示微处理器60的结构框图。如图14所示,位处理器60包括指令存储器601,指令执行单元602,数据存储器603,数据处理单元604,非易失性存储器605,解密电路606,调试接口607,总线控制器608,以及地址解码器609。
指令存储器601尤其包括RAM和ROM,并存储加密指令。存储在指令存储器601中的加密指令通过对指令执行加密算法E3而产生。例如,加密算法E3是DES。指令存储器601通过总线与解密电路606相连,并将加密指令输出至解密电路606,响应来自指令执行单元602的请求。指令存储器601也通过总线与调试接口607相连。因此,当从主PC62中操作的调试器接收请求时,指令存储器601通过调试接口607和调试单元61,将其中存储的加密指令输出至主PC62。此外,指令存储器601接收并存储从调试接口607输出的加密指令。
指令执行单元602通过总线与解密电路606相连。指令执行单元602接收,解释并执行来自解密单元606的指令。
数据存储器603尤其是ROM和RAM中的一个,并存储数据。数据存储器603通过总线与数据处理单元604相连。当数据存储器603从数据处理单元604接收一条请求时,数据存储器603将数据输出至数据处理单元604。数据存储器603接收并存储从数据处理单元604输出的计算结果。数据存储器603也通过总线与调试接口607相连。因此,当从主PC62上运行的调试器接收一条请求时,数据存储器603通过调试接口607以及调试单元61将其中存储的数据输出至主PC62。同时,数据存储器603接收并存储从调试接口607输出的数据。
数据处理单元604通过总线与数据存储器603相连。数据处理单元604从数据存储器603中读取数据,对读取的数据执行计算,并将计算的结果写入数据存储器603。数据处理单元604通过外部总线和总线控制器608与外部存储器63相连。因此,数据处理单元604通过总线控制器608,读取存储在外部存储器63的每一个存储器块中的数据,对读取的数据执行计算,并将计算的结果写入每一个存储器块。
非易失性存储器605具有用于存储从密钥1至密钥n的n个密钥的区域,以及用于存储从判断标志F1至判断标志Fn的n个判断标志的区域。当密钥被写入时,它被存储在非易失性存储器605的相应区域中。
在此,密钥1是用于将存储在指令存储器601中的加密指令解密的解密密钥,判断标志F1用于判断密钥1是否已经被写入非易失性存储器605。如果密钥被写入非易失性存储器605,在非易失性存储器605设置判断标志F1。类似地,密钥2是用于将存储在外部存储器63的存储器块1中的加密指令解密的解密密钥,判断标志F2用于判断密钥2是否被写入非易失性存储器605。相应地,密钥n是用于将存储在外部存储器63的存储器块(n-1)中的加密指令解密的解密密钥,判断标志Fn用于判断密钥是否被写入非易失性存储器605。
一旦从密钥1至密钥n的密钥被写入,它们在微处理器60之外将不再可读或可写。同时,一旦从判断标志1至判断标志Fn的判断标志被设置,它们将不能够再重写。
解密电路606将存储在指令存储器601以及外部存储器63的存储器块中的加密指令解密,从而指令执行单元602能够执行这些加密指令。解密电路606从指令存储器601或者外部存储器63的存储器块接收加密指令。解密电路606从非易失性存储器605中检索相应的密钥。利用检索的密钥作为解密密钥,解密电路606对加密指令执行解密算法D3,以产生解密指令。在此,解密算法D3是用于将用加密算法E3产生的加密文本解密的算法。解密电路606将解密指令输出至指令执行单元602。
调试接口607是与指令存储器601和调试单元61,数据存储器603和调试单元61,非易失性存储器605和调试单元61相连的接口,并保护非易失性存储器605。调试接口607具有与第二实施例的调试接口207相同的功能。因此,不再进行对调试接口607的详细描述。
总线控制器608利用外部总线,在设置在微处理器60之外的外部存储器63和指令执行单元602之间,以及外部存储器63和数据处理单元604之间执行信息转换。
地址解密器609通过总线与指令存储器601和外部存储器63相连。地址解密器609根据从指令执行单元602输出的地址,选择指令存储器601或者外部存储器63的存储器块之一。然后,地址解密器609读取与从非易失性存储器605中的选择相对应的密钥,并将读取的密钥输出至解密电路606。
(主PC62)主PC62是个人计算机,其中调试器响应于微处理器60而工作,所述主PC62由开发者所有,开发者可以看到存储在微处理器60的指令存储器601中的信息。如图15所示,主PC62包括显示单元621和调试器622。调试器622包括密钥输入单元625,命令输入单元626,解密单元627,指令/数据输入单元628以及加密单元629。显示单元621和调试器622与主PC22中的显示单元221和调试器222具有相同的功能。因此,不再描述主PC的详细结构。
(操作)下面的部分参考流程图16描述调试系统6的操作。
主PC62的调试器622开始,并且密钥输入单元625通过用户操作接收密钥序号M的输入(步骤S600)。在此,M是满足1≤M≤n的整数。
在此之后,密钥输入单元625接收密钥N的输入(步骤S601),并将密钥N存储其中(步骤S602)。密钥输入单元625通过调试单元61将密钥序号M和密钥N发送至调试接口607。当接收了密钥序号M和密钥N,调试接口607读取判断标志FN,所述判断标志FN存储在非易失性存储器605中对应于密钥序号M的区域中,从而判断密钥N是否被写入密钥N应当被写入的非易失性存储器605的区域中(步骤S603)。如果密钥N尚未被写入该区域中(否步骤S604),调试接口607将密钥N写入非易失性存储器605(步骤S605)。然后,调试接口607将判断标志FN设置在非易失性存储器605中,从而指示密钥N已经被写入非易失性存储器605(步骤S606)。
在此之后,命令输入单元626从用户接收命令输入(步骤S607)。在此,用户选择并输入指令显示命令,指令写入命令,数据显示命令,数据写入命令以及结束命令中的一条。命令输入单元626读取接收的命令(步骤S608)。这些是随图7的流程图之后的。
4.第四实施例将参考附图描述涉及本发明第四实施例的调试系统7。
(结构)下面的部分描述调试系统7的结构,其中包括微处理器70,调试单元71,主PC72。微处理器70安装在IC卡的基片上,是由调试系统7的用户开发的。调试单元71通过电缆与微处理器70和主PC72相连。下面的部分详细描述微处理器70和主PC72。
(微处理器70)图17是微处理器70的结构框图。如图17所示,微处理器70包括指令存储器701,指令执行单元702,数据存储器703,数据处理单元704,非易失性存储器705,加密电路706,调试接口707,安全熔丝708以及缓冲器709。
指令存储器701尤其包括RAM和ROM,并存储指令。指令存储器701通过总线与指令执行单元702相连。指令存储器701也通过总线与加密电路706相连。因此,当从主PC72上运行的调试器接收了一条请求时,指令存储器701将其中存储的指令输出至加密电路706。此外,指令存储器701接收并存储从加密电路706输出的指令。
指令执行单元702通过总线与指令存储器701相连。指令执行单元读取,解释并执行存储在指令存储器701中的指令。
数据存储器703尤其包括ROM和RAM其中之一,并存储数据。数据存储器703通过总线与数据处理单元704相连。当数据存储器703从数据处理单元704接收一条请求时,数据存储器703将数据输出至数据处理单元704。数据存储器703从数据处理单元704接收并存储计算结果。数据存储器703也通过总线与加密电路706相连。因此,数据存储器703将其中存储的数据输出至加密电路706,当从主PC72上运行的调试器接收一条请求时。同时,数据存储器703接收并存储从加密电路706输出的数据。
数据处理单元704通过总线与数据存储器703相连。数据处理单元704从数据存储器703读取数据,对读取的数据执行计算,并将计算结果写入数据存储器703。
非易失性存储器705具有用于存储密钥的区域,以及用于存储判断标志的区域。当密钥被写入时,它被存储在非易失性存储器705的相应区域中。在此,密钥是加密电路706使用的加密密钥,对指令和数据加密。一旦密钥被写入,在微处理器70之外将不再可读或可写。判断标志用于判断密钥是否被写入非易失性存储器705。如果密钥被写入非易失性存储器705,在非易失性存储器705中设置判断标志。在此,一旦判断标志被设置,将不可再恢复。
加密电路706将指令或数据加密,其中指令或数据是通过调试接口707、响应来自主PC72的请求,从指令存储器701或数据存储器703读取的。在此,利用存储在非易失性存储器705中的密钥作为加密密钥,加密电路706对存储在指令存储器701中的指令或存储在数据存储器703中的数据执行加密算法E4,以产生加密指令或加密数据。例如,加密算法E4是DES。加密电路706将加密指令或加密数据输出至调试接口707。
调试接口707与加密电路706和缓冲器709,以及非易失性存储器705和缓冲器709相连。调试接口707保护加密电路706和非易失性存储器705。调试接口707具有与第一实施例的调试接口107大致相同的功能。但是,调试接口707在将从加密电路706接收的加密指令和加密数据输出至缓冲器709时不同。
安全熔丝708是一个标志,其数值被设置为0或1。当该数值被设置为0时,安全熔丝708被熔断,从缓冲器709的输出被禁止。当该数值被设置为1时,执行从缓冲器709的输出。安全熔丝708的数值被初始设置为1。通过调试单元71,响应来自主PC72的比较单元728的请求(后面将提及),安全熔丝708的数值从1到0的改变。请注意,如果安全熔丝708的数值已经从1改变为0,那么该数值不能从0被恢复为1。
缓冲器709通过总线与调试接口707和安全熔丝708相连。当安全熔丝的数值被设置为0时,在缓冲器709从调试接口707接收了加密指令和加密数据之后,缓冲器709中断与调试单元71的连接。当安全熔丝708的数值被设置为1时,缓冲器709与调试单元71相连,并且将从调试接口707接收的加密指令和加密数据输出至调试单元71。
(主PC72)主PC72是个人计算机,其中调试器响应于微处理器70而工作。
图18是表示主PC72的结构框图。如图18所示,主PC72包括显示单元721,调试器722以及计数器741。调试器722功能性地被描述为主PC72上运行的调试程序。调试器722包括密钥输入单元723,命令输入单元724,解密单元725,指令/数据输入单元726,阈值存储单元727,以及比较单元728。
显示单元721包括显示屏,并在显示屏上显示各种屏幕页面。显示单元721的功能与调试系统1的显示单元121相同。因此,对显示单元721不进行详细描述。
计数器741存储在外部存储设备中。计数器741对次数计数,其中密钥输入单元接收不同于上一次接收的密钥的密钥。根据来自密钥输入单元723的请求,计数器741将其中存储的数值加1。
密钥输入单元723包括,例如键盘和鼠标。密钥输入单元723具有用于存储由密钥输入单元723上一次接收的密钥的存储区域(下文指上一次密钥)。当显示单元721上显示用于接收密钥输入的屏幕页面时,密钥输入单元723利用键盘和鼠标,通过用户操作接收密钥输入。当接收密钥时,密钥输入单元723判断接收的密钥是否与上一次密钥相同。如果不同,密钥输入单元723将指示存储在计算数器741中的数值加1的信号输出至计数器741,然后以当前接收的密钥覆盖存储在密钥输入单元723的存储区域中的上一次的密钥。
密钥输入单元723通过调试单元71,缓冲器709和调试接口707,将当前接收的密钥发送至非易失性存储器705。
命令输入单元724具有与第一实施例中的命令输入单元124相同的功能。因此,不再对命令输入单元724进行详细描述。
解密单元725通过调试单元71和缓冲器709,从调试接口707接收加密指令。解密单元725读取存储在密钥输入单元723中的密钥。利用读取的密钥作为解密密钥,解密单元725对接收的加密指令执行解密算法D4,以产生解密指令。解密算法D4是将利用加密算法E4产生的加密文本解密的算法。解密单元725将解密指令输出至显示单元721。类似地,解密单元725接收加密数据。利用存储在密钥输入单元723中的密钥作为加密密钥,解密单元725对接收的加密数据执行解密算法D4,以产生解密数据。解密单元725将解密数据输出到显示单元721。
指令/数据输入单元726具有与第一实施例中的指令/数据输入单元126相同的功能。因此,不再对指令/数据输入单元726进行说明。
阈值存储单元727存储阈值。如果密钥输入单元723接收与上一次密钥不同的密钥的次数大于阈值,调试操作将中断。
比较单元728读取并将存储在计数器741中的数值和存储在阈值存储单元727中的阈值进行比较。如果存储在计数器741中的数值大于阈值存储单元727中的阈值数值,比较单元728将通过调试单元71而把该数值从1改变为0的信号发送至安全熔丝708。
(操作)下面的部分参考流程图19和20描述调试系统7的操作。
主PC72的密钥输入单元723读取判断标志(步骤S701),从而判断密钥是否已经被写入非易失性存储器705。如果密钥被写入(是步骤S702),密钥输入单元723从用户接收密钥输入(步骤S703)。密钥输入单元723在其中存储接收到的密钥(步骤S704)。
密钥输入单元723读取在其中存储的上一次密钥(步骤S705),然后判断接收的密钥是否与上一次密钥相同。如果不同(否步骤S706),计数器741从密钥输入单元723接收信号,并将其中存储的数值加1(步骤S707)。在此之后,比较单元728读取并将存储在计数器741中的数值与存储在阈值存储单元727中的阈值数值进行比较(步骤S708)。如果存储在计数器741中的数值大于阈值数值(是步骤S709),比较单元728输出一条请求将安全熔丝708的值改变为0,并将安全熔丝708熔断(步骤S710)。如果存储在计数器741中的数值小于阈值数值(否步骤S709),调试系统7的处理返回步骤S703并继续。
如果密钥输入单元723通过判断标志判断发现密钥尚未被写入非易失性存储器705(否步骤S702),密钥输入单元723从用户接收密钥输入(步骤S721)。密钥输入单元723在其中存储接收到的密钥(步骤S722),同时通过调试单元71,缓冲器709和调试接口707,将接收到的密钥写入非易失性存储器705(步骤S723)。在此之后,通过调试单元71,缓冲器709和调试接口707,密钥输入单元723在非易失性存储器705中设置判断标志,从而表示密钥已经被写入非易失性存储器705(步骤S724)。
随之,主PC72的命令输入单元724从用户接收命令输入(步骤S725)。在此,用户选择并输入指令显示命令,指令写入命令,数据显示命令,数据写入命令,以及结束命令中的一条。命令输入单元724读取接收的命令(步骤S726)。这些步骤是随着图4中的流程图的。
如果当前接收的密钥与上一次密钥相同(是步骤S706),步骤S706依照步骤S725。
5.第五实施例将参考附图描述涉及本发明第五实施例的调试系统8。在调试系统7中,在主PC72中执行一个密钥比较操作。而在调试系统8中,该操作在微处理器中执行。
(结构)下面的部分描述调试系统8的结构,其包括微处理器80,调试单元81和主PC82。微处理器80安装在IC卡的基片上,由调试系统8的用户开发。调试单元81通过电缆与微处理器80和主PC82相连。
主PC82包括显示单元和调试器。调试器包括密钥输入单元,命令输入单元,解密单元,以及指令/数据输入单元。主PC82的结构未示出,因为主PC82的结构分别与第一实施例中的主PC12的结构具有相同的功能。因此,不再对主PC82进行说明。
下面的部分描述微处理器80的结构。
(微处理器80)图21表示微处理器80的结构框图。如图21所示,微处理器80包括指令存储器801,指令执行单元802,数据存储器803,数据处理单元804,非易失性存储器805,加密电路806,调试接口807,上一次密钥存储单元808,阈值数值存储单元809,计数器810,比较单元811,安全熔丝812,以及缓冲器813。
指令存储器801,指令执行单元802,数据存储器803,数据处理单元804,非易失性存储器805,加密电路806以及缓冲器813分别与指令存储器701,指令执行单元702,数据存储器703,数据处理单元704,非易失性存储器705,加密电路706,以及缓冲器709具有相同的功能。因此,不再对这些结构进行说明。
调试接口807与加密电路806和缓冲器813,非易失性存储器805和缓冲器813,以及上一次密钥存储单元808和缓冲器813相连。
上一次密钥存储单元808具有用于存储从缓冲区器813接收的密钥的存储区域(下文指上一次密钥)。上一次密钥存储单元808接收已经被主PC82的密钥输入单元823通过调试单元81从调试接口807接收的密钥。然后,上一次密钥存储单元808将从调试接口807接收的密钥和存储在其中的上一次密钥进行比较。如果它们不同,上一次密钥存储单元808将存储在计数器810中的表示数值加1的信号输出至计数器810。此外,上一次密钥存储单元808将表示存储在计数器810中的数值和存储在阈值存储单元809中的阈值数值进行比较的信号输出至比较单元811。
阈值存储单元809中存储阈值数值,它们仅能被写入一次。如果来自用户的主PC82接收密钥的次数与上一次密钥不同并大于阈值数值,安全熔丝812被熔断并且调试操作断开。
计数器810对次数计数,其中主PC82接收与存储在上一次密钥存储单元808中的上一次密钥不同的密钥。根据来自上一次密钥存储单元808的请求,计数器810对其中存储的数值加1。
比较单元811读取并将存储在计数器810中的数值和存储在阈值存储单元809中的阈值数值进行比较,响应来自上一次密钥存储单元808的请求。如果存储在计数器810中的数值大于存储在阈值存储单元809中的阈值数值,比较单元811指示把数值改变为0的信号发送至安全熔丝812。
安全熔丝812是一个标志,它的数值被设置为0或1,如安全熔丝708。当该值被设置为0时,安全熔丝812熔断,并禁止从缓冲器813的输出。当该值被设置为1时,执行从缓冲器813的输出。安全熔丝812的数值初始设置为1,并响应来自比较单元811的请求从1改变为0。请注意,如果安全熔丝812的值已经从1改变为0,那么该值就不能从0恢复为1。
(操作)下面的部分将参考图20和22的流程图描述调试系统8的操作。
主PC82的密钥输入单元823读取非易失性存储器805中的判断标志(步骤S801),从而判断密钥是否已经被写入非易失性存储器805。如果密钥已经被写入非易失性存储器805(是步骤S802),密钥输入单元823从用户接收密钥的输入(步骤S803)。密钥输入单元823在其中存储接收的密钥(步骤S804)。
随后,密钥输入单元823通过调试单元81,缓冲器813以及调试接口807,将接收到的密钥发送至上一次密钥存储单元808。然后,上一次密钥存储单元808读取其中存储的上一次密钥(步骤S805),并判断当前接收的密钥是否与上一次密钥相同。如果不同(否步骤S806),上一次密钥存储单元808将信号输出至计数器810。当从上一次密钥存储单元808接收信号后,计数器810对存储在其中的数值加1(步骤S807)。在此之后,比较单元811读取并将存储在计数器810中的数值和存储在阈值存储单元809中的阈值数值进行比较。如果存储在计数器810中的数值大于阈值数值(是步骤S808),则比较单元811输出把安全熔丝812的值从1改变为0的请求,并将安全熔丝812熔断(步骤S809)。如果存储在计数器810中的数值小于阈值数值(否步骤S808),则调试系统8的处理返回步骤S803并继续。
如果密钥输入单元823通过判断标志判断,发现密钥尚未被写入非易失性存储器805(否步骤S802),调试系统8的处理返回图20中所示的步骤721。
如果上一次密钥存储单元808发现当前接收的密钥与其中存储的上一次密钥相同(是步骤S806),调试系统8的处理返回图20中所示的步骤S725。
6.第六实施例将参考附图描述涉及本发明第六实施例的调试系统9。
(结构)下面的部分描述调试系统9的结构。调试系统包括微处理器90,调试单元91,以及主PC92。微处理器90安装在IC卡的基片上,由调试系统9的用户开发。调试系统91通过电缆与微处理器90和主PC92相连。
主PC92包括显示单元和调试器。调试器包括密钥输入单元,命令输入单元,解密单元,以及指令/数据输入单元。主PC92未示出,因为主PC92的构成分别与第一实施例的主PC12的构成具有相同的功能。因此,不再对主PC92进行说明。
下面的部分描述微处理器90的结构。
图23表示微处理器90的结构框图。如图23所示,微处理器90包括指令存储器901,指令执行单元902,数据存储器903,数据处理单元904,非易失性存储器905,加密电路906,调试接口907,选择器908。指令存储器901,指令执行单元902,数据存储器903,数据处理单元904,非易失性存储器905,加密电路906以及调试接口907分别与第一实施例的微处理器10中的指令存储器101,指令执行单元102,数据存储器103,数据处理单元104,非易失性存储器105,加密电路106,以及调试接口107具有相同的功能。因此,不再对这些结构进行说明。
选择器908通过总线与非易失性存储器905相连。同时,选择器908通过总线A1与指令存储器901相连,并且通过总线A2与数据存储器903相连。选择器908通过加密总线B1和加密总线B2与加密电路906连接。加密总线B1用于读和写指令,并且连接加密电路906和指令存储器901。加密总线B2用于读和写数据,并且连接加密电路906和数据存储器903。
选择器908在非易失性存储器905中读取判断标志,并在下述方式中基于判断标志选择一条总线。
当非易失性存储器905中的判断标志未被置位,也就是说,当密钥尚未被写入非易失性存储器905,选择器908选择用于读和写指令的总线A1。为了执行指令读操作,选择器908通过总线A1从指令存储器901中读取一条指令,并将读取的指令输出至调试接口907。为了执行指令写操作,选择器908从调试接口907接收指令,并通过总线A1将接收的指令写入指令存储器901。当密钥尚未被写入非易失性存储器905,选择器908选择用于读和写数据的总线A2。为了执行数据读操作,选择器908通过总线A2从数据存储器903中读取数据,并将读取的数据输出至调试接口907。为了执行数据写操作,选择器908从调试接口907接收数据,并通过总线A2将接收的数据写入数据存储器903。
当判断标志在非易失性存储器905被置位,也就是说,当密钥已经被写入非易失性存储器905,选择器908选择加密总线B1,以执行指令读操作。选择器908通过加密总线B1从指令存储器901中读取指令,并将读取的指令输出至加密电路906。在此之后,选择器908通过加密总线B1从加密电路906接收加密指令,并将加密指令输出至调试接口907。为了执行指令写操作,选择器908选择总线A1。选择器908从调试接口907接收指令,并通过总线A1将接收的指令写入到指令存储器901。为了执行数据读操作,选择器908选择加密总线B2。选择器908通过加密总线B2从数据存储器903中读取数据,并将读取的数据输出至加密电路906。选择器908通过加密总线B2从加密电路906接收加密数据,并将加密数据输出至调试接口907。为了执行数据写操作,选择器908选择总线A2。选择器908从调试接口907接收数据,并通过总线A2将接收的数据写入数据存储器903。
根据上述结构,当密钥已经被写入非易失性存储器905,由加密电路906产生的加密指令和加密数据通过调试接口907和调试单元91输出至主PC92。另一方面,望密钥尚未被写入非易失性存储器905,未被加密的指令和数据通过调试接口907和调试单元91输出至主PC92。
(操作)下面的部分参考图4,24和25的流程图描述调试系统9的操作。
从主PC92的调试器开始,并且微处理器90的调试接口907从非易失性存储器905读取判断标志(步骤S901),响应来自调试器的信号。因此,调试接口907判断密钥是否被写入非易失性存储器905。
当密钥被写入非易失性存储器905(是步骤S902),主PC92的密钥输入单元从用户接收密钥的输入(步骤S909)。密钥输入单元通过调试单元91将接收的密钥输出至调试接口907。步骤S907的下一步。当密钥尚未被写入(否步骤S902),调试接口907通过调试单元9 1将指示密钥已经被写入的信号发送至主PC92的调试器。
调试器将屏幕页面输出至显示单元,要求用户如果她/他要把密钥写入非易失性存储器905。当显示这样的屏幕页面时,调试器的密钥输入单元从用户接收密钥的输入。如果用户输入她/他不想将密钥写入非易失性存储器905(否步骤S903),图25中后面的步骤将在下面执行。
在此,主PC92的命令输入单元从用户接收命令输入(步骤S910)。在此,用户选择并输入指令显示命令,指令写入命令,数据显示命令,数据写入命令,以及结束命令中的一条。命令输入单元读取接收的命令(步骤S911)。
当接收的命令是指令显示命令时(指令显示步骤S911),调试器通过调试单元91将与命令对应的信号发送至调试接口907。调试接口907从指令存储器901读取指令(步骤S912)。选择器908选择总线A1,并通过调试接口907和调试单元91将读取的指令输出至主PC92(步骤S913)。主PC92的显示单元接收指令,并将其在显示屏上显示(步骤S914)。在此之后,调试系统9的处理返回至步骤S910并继续。
当接收的命令是指令写入命令(指令写步骤S911),主PC92的指令/数据输入单元从用户接收指令输入(步骤S921)。指争/数据输入单元通过调试单元91将接收的指令发送至调试接口907(步骤S922)。选择器908选择总线A1,并且调试接口907通过总线A1将指令写入指令存储器901(步骤S923)。在此之后,调试系统9的处理返回步骤S910并继续。
当接收的命令是数据显示命令时(数据显示步骤S911),主PC92的调试器通过调试单元91将与命令对应的信号发送至调试接口907。调试接口907从数据存储器903读取数据(步骤S931)。选择器908选择总线A2,并通过调试接口907和调试单元91将数据输出至主PC92(步骤S932)。主PC92的显示单元接收数据并在显示屏上显示(步骤S933)。在此之后,调试系统9的处理返回步骤S910并继续。
当接收的命令是数据写入命令时(数据写步骤S911),主PC92的指令/数据输入单元接收来自用户的数据输入(步骤S941)。指令/数据输入单元通过调试单元91将接收的数据输出至调试接口907(步骤S942)。选择器908选择总线A2,并且调试接口907通过总线A2将数据写入数据存储器903(步骤S943)。在此之后,调试系统9的处理返回步骤S910并继续。
当接收的命令是结束命令(结束步骤S911),主PC92的操作结束。
在此,图24的步骤S903,如果用户输入她/他希望写入密钥(是步骤S903),密钥输入单元从用户接收密钥的输入(步骤S904)。密钥输入单元在其中存储接收的密钥,同时通过调试单元91将接收的密钥发送至调试接口907。调试接口907接收密钥,并将密钥写入非易失性存储器905(步骤S905)。此外,调试接口907在非易失性存储器905中设置判断标志,从而指示密钥已经被写入非易失性存储器905(步骤S906)。
在此之后,主PC92的命令输入单元从用户接收命令输入(步骤S907)。在此,用户选择并输入指令显示命令,指令写入命令,数据显示命令,数据写入命令和结束命令中的一条。命令输入单元读取接收的命令(步骤S908)。
在此,在调试系统9操作的后面的步骤实际上与图4中所示第一实施例的调试系统1的操作相同。因此,下面的着重部分描述与图4中所示的流程图中调试系统1不同的调试系统9的操作。
当接收的命令是指令显示命令时(指令显示步骤S908),调试接口907从指令存储器901读取指令(步骤S109)。选择器908选择加密总线B1,并将指令输出至加密电路906。加密电路906将指令加密以产生加密指令(步骤S110)。加密电路906通过加密总线B1将加密指令输出至调试接口907,调试接口907通过调试单元91将加密指令输出至主PC92(步骤S111)。调试系统9的下面的步骤与调试系统1的步骤S112和S113相同。
当接收的命令是指令写入命令时(指令写步骤S908),主PC92的指令/数据输入单元从用户接收指令的输入(步骤S121)。指令/数据输入单元通过调试单元91将接收的指令输出至调试接口907(步骤S122)。选择器908选择总线A1,调试接口907通过总线A1将指令写入指令存储器901(步骤S123)。在此之后,调试系统9的处理返回步骤S907并继续。
当接收的命令是数据显示命令时(数据显示步骤S908),调试接口907从数据存储器903读取数据(步骤S131)。选择器908选择加密总线B2并将读取的数据输出至加密电路906。加密电路906将数据加密以产生加密数据(步骤S132)。加密电路906通过加密总线B2将加密数据输出至调试接口907。调试接口907通过调试单元91将加密数据输出至主PC92(步骤S133)。调试系统9下面的步骤与调试系统1的步骤S134和S135相同。
当接收的命令是数据写入命令时(数据写步骤S908),主PC92的指令/数据输入单元从用户接收数据输入(步骤S1410)。指令/数据输入单元通过调试单元91将接收的数据输入至调试接口907(步骤S142)。选择器908选择总线A2,并且调试接口907通过总线A2将数据写入数据存储器903(步骤S143)。在此之后,调试系统9的处理返回步骤S907并继续。
当接收的命令是结束命令时(结束步骤S908),主PC92的操作结束。
7.第七实施例参考附图描述涉及本发明第七实施例的调试系统15。
调试系统15包括微处理器100,调试单元110,以及主PC120。微处理器100安装在IC卡的基片上,由调试系统15的用户开发。调试系统110通过电缆与微处理器100和主PC120相连。主PC120与第二实施例中的主PC22具有相同的结构,因此,不再对主PC120进行说明。
(微处理器100的结构)图26表示微处理器100的结构框图。如图26所示,微处理器100包括指令存储器1001,指令执行单元1002,数据存储器1003,数据处理单元1004,非易失性存储器1005,解密电路1006,调试接口1007,缓冲器1008。
微处理器100特征在于,缓冲器1008功能性地设置在解密电路1006和指令执行单元1002之间。指令存储器1001,指令执行单元1002,数据存储器1003,数据处理单元1004,非易失性存储器1005,解密电路1006以及调试接口1007分别与第二实施例的微处理器200中的对应结构具有相同的功能。下面着重描述微处理器100与微处理器20不同之处。
缓冲器1008具有缓冲存储器,功能性地位于解密电路1006和指令执行单元1002之间。当用于由指令执行单元1003执行指令请求的时间长于由解密单元1006对加密指令的解密请求的时间,随着指令执行单元1002执行一条指令,缓冲器1008将其中从解密电路1006接收的指令累加。
指令执行单元1002在缓冲器1008中读取的累加指令,并执行该指令。
调试系统15的操作与调试系统2的操作相同。因此,不再对调试系统15的操作进行说明。
8.其它修改根据本发明描述的上述调试系统和微处理器,利用由用户在主PC上输入的密钥,指令和数据能够被加密,其中运行了调试器,从而在微处理器和主PC之间传输。此外,即使恶意的用户将本发明的微处理器连接至调试单元以分析微处理器,该恶意的用户仅能从微处理器获得加密指令和加密数据。没有存储在微处理器中非易失性存储器上的正确的密钥,这样的加密指令和加密数据不能被解密。因此,恶意的用户不能分析存储在微处理器上的信息。而且,即使微处理器和调试系统的设计者,以及程序的开发者也不知道正确的密钥。仅有设置正确密钥的人能够分析存储在微处理器中的信息。因此,调试操作和安全都可以获得,例如,电子货币系统,需要该级别的安全性。
本发明参考上述的实施例描述。但是,本发明不限于这些实施例,包括下面修改。
(1)根据上述实施例,被调试的微处理器安装在IC卡的基片上。但是,本发明不仅限于IC卡。微处理器可以安装在由调试系统的用户开发的任何基片上。
(2)根据上述实施例,调试器的命令是指令显示命令,指令写入命令,数据显示命令,数据写入命令,以及结束命令中的一条,但是不限于此。
(3)根据涉及第二实施例的指令写入操作,由调试器222的指令/数据输入单元228接收的指令被加密,然后存储到微处理器20的指令存储器201中。但是,下面的处理也是可以接受的。调试器222指定存储在外部存储设备中的源文件。然后,编译器224读取指定的源文件,以产生目标文件。而且,编译器224将产生的目标文件加密,并将加密的目标文件存储在微处理器20的指令存储器201中。可选地,编译器224可以将加密的目标文件存储在预先的外部存储设备中。调试器222从外部存储设备中读取加密的目标文件,并将其写入微处理器20的指令存储器201。
(4)谈到第二实施例,存储在非易失性存储器205中的密钥不能被读出,但是可以重写。这不会产生任何安全问题,只要不知道由编译器指定的密钥。尤其是,即使存储在非易失性存储器205中的密钥被重写,指令也不能被正确地执行。
(5)根据本发明第二实施例的第三修改,存储器读/写设备51的目标是微处理器50,但是不限于此。例如,设置在微处理器50外部的存储器可以是存储器读/写设备51的目标。
(6)根据第三实施例,任何密钥是由执行调试操作的人输入的。可选地,对于一个程序来说密钥是唯一的,预先,保密设置,唯一的密钥和对应于唯一的密钥的密钥序号可以被保密地统一提供给调试程序的人。
此外,密钥可以不与存储器块一一对应(非易失性存储器605和外部存储器63的存储器块)。只要存储器通过利用对应于存储器中保密程序序号的密钥序号管理,一个密钥可以对应多个存储器块。
(7)用于对指令和数据加密的加密算法不限于DES,而可以是公共密钥密码系统。
(8)本发明可以是上述各个部分的操作,利用计算机执行操作的计算机程序,或者计算机程序所包括的数字信号。
本发明可以是计算机程序或者以存储在计算机可读存储媒体上的状态表示的数字信号,例如,软盘,硬盘,CD-ROM,MO,DVD-ROM或者半导体存储器。可选地,本发明可以是计算机程序或者存储在上述记录媒体中的数字信号通过网络的传输,例如通过电子通信网络,无线或固定线路通信网络,以及因特网。
本发明可以是计算机系统,包括微处理器和存储器。在此,存储器存储上述计算机程序,微处理器根据计算机程序操作。
本发明可以以下面的方式实现。转换上述计算机程序或者以存储在上述存储媒体中的状态表示的数字信号,或者计算机程序或者数字信号通过网络等传输,从而不同的计算机系统执行计算机程序或者数字信号。
(9)本发明也包括第一至第七实施例的组合。本发明也包括上述修改和实施例的组合。
尽管已经参照附图通过举例的方式充分描述了本发明,应当注意各种改变和修改对于熟知本技术的人员将是显而易见的。因此,除非这种改变和修改脱离了本发明的范围,否则它们都应该包括在本发明当中。
权利要求
1.一种调试系统,包括微处理器,用于存储保密程序信息;以及主计算机,与该微处理器相连,从而在该微处理器中调试该程序信息,其中所述微处理器包括非易失性存储器,其(i)具有存储用于安全控制程序信息的密钥信息的区域和(ii)仅可写一次;写单元,如果在所述非易失性存储器中没有存储密钥信息,则该写单元从主计算机接收密钥信息,并将该密钥信息写入所述非易失性存储器;以及第一传输单元,用于利用已经写入所述非易失性存储器的密钥信息,安全执行与所述主计算机的程序信息的传输,被写入非易失性存储器的密钥信息在所述微处理器外部不再可读,以及所述主计算机包括接收单元,用于从用户接收密钥信息;发送单元,用于在其中存储从用户接收的密钥信息并将该密钥信息发送至所述微处理器;以及第二传输单元,用于利用存储在所述发送单元中的密钥信息,安全执行与所述微处理器的程序信息的传输。
2.一种微处理器,用于存储保密程序信息,并且与用于在所述微处理器中调试该程序信息的主计算机相连,包括程序信息存储单元,用于存储所述程序信息,该程序信息是程序,数据,以及程序和数据之一;执行单元,用于读取所述程序信息,以执行与所读取的程序信息对应的操作;非易失性存储器,其(i)具有存储用于安全控制程序信息的密钥信息的区域和(ii)仅可写一次;写单元,如果在所述非易失性存储器中没有存储密钥信息,则该写单元用于从所述主计算机接收密钥信息,并将接收的密钥信息写入所述非易失性存储器;以及传输单元,用于利用已经写入所述非易失性存储器的密钥信息,安全执行与所述主计算机的程序信息的传输,其中被写入所述非易失性存储器的密钥信息在所述微处理器外部不可读。
3.根据权利要求2的微处理器,其中所述非易失性存储器还在其中存储有表示所述密钥信息是否已经被存储在该非易失性存储器中的标志信息,所述传输单元读取该标志信息,以及如果读取的标志信息指示该非易失性存储器中没有存储密钥信息,则所述写单元从所述主计算机接收密钥信息,并将从主计算机接收的密钥信息写入该非易失性存储器。
4.根据权利要求3的微处理器,其中所述传输单元包括加密单元,用于利用已经被存储在所述非易失性存储器中的密钥信息,将存储在所述程序信息存储单元的程序信息加密;以及输出单元,用于输出该加密程序信息。
5.根据权利要求4的微处理器,其中所述传输单元进一步包括禁止单元,用于响应来自所述主计算机的请求,禁止所述输出单元将所述加密程序信息输出。
6.根据权利要求4的微处理器,其中所述传输单元进一步包括禁止条件存储单元,存储关于从所述主计算机上接收的密钥信息的禁止条件;以及禁止单元,如果从所述主计算机接收的密钥信息满足所述禁止条件,则该禁止单元禁止所述输出单元将所述加密程序信息输出。
7.根据权利要求3的微处理器,其中存储在所述程序信息存储单元中的所述程序信息是加密程序信息,该加密信息是加密程序,加密数据,以及加密程序和加密数据中的一个,所述执行单元(i)读取存储在所述非易失性存储器中的密钥信息,(ii)利用读取的密钥信息将所述加密程序信息解密,从而产生解密程序信息,它是解密程序,解密数据,以及解密程序和解密数据中的一个,以及(iii)执行对应于解密程序信息的操作,其中由所述传输单元执行的传输是加密程序信息的传输。
8.根据权利要求5的微处理器,其中所述执行单元利用存储在所述非易失性存储器中的密钥信息,将操作结果加密,并将该加密结果写入所述程序信息存储单元。
9.根据权利要求5的微处理器,其中存储在所述程序信息存储单元中的程序是加密程序,以及所述程序信息存储单元具有与外部设备通信的路径。
10.根据权利要求5的微处理器,其中已经被写入所述非易失性存储器的密钥信息由一段或多段局部密钥信息构成,存储在所述程序信息存储单元中的程序是多个加密的局部程序,其中的每一个对应于任何段的所述局部密钥信息,以及所述执行单元(a)从所述非易失性存储器中读取局部密钥信息,(b)从所述程序信息存储单元读取对应于所读取的局部密钥信息段的一个或多个加密的局部程序,(c)利用该读取的局部密钥信息段,将读取的加密局部程序解密,以产生解密的局部程序,以及(d)执行对应于该解密的局部程序的操作。
11.根据权利要求3的微处理器,进一步包括高速缓冲存储器,其中存储在所述程序信息存储单元中的程序信息是加密程序信息,它是加密程序,加密数据,以及加密程序和加密数据中的一个,所述执行单元(a)读取存储在所述非易失性存储器中的密钥信息,(b)利用读取的密钥信息将所述加密程序信息解密,从而产生解密程序信息,它是解密程序,解密数据,以及解密程序和解密数据中的一个,以及(c)将该解密程序信息写入所述高速缓冲存储器,(d)根据所述执行单元的处理速度,从所述高速缓冲存储器中读取该解密程序信息,(e)执行对应于该解密程序信息的操作,以及由所述传输单元执行的传输是加密程序信息的传输。
12.根据权利要求2的微处理器,其中所述非易失性存储器还存储指示所述密钥信息是否已经被存储在所述非易失性存储器中的标志信息,所述传输单元读取该标志信息,以及如果读取的标志信息指示该非易失性存储器中没有存储密钥信息,则所述传输单元从所述程序信息存储单元中读取程序信息,并将读取的程序信息输出至所述主计算机,以及如果读取的标志信息指示该非易失性存储器中已经存储了密钥信息,则所述传输单元从所述程序存储单元中读取程序信息,并利用存储在所述非易失性存储器中的密钥信息,将读取的程序信息加密,并将加密程序信息输出至所述主计算机。
13.一种主计算机,其(i)与用于存储保密程序信息的微处理器相连,以及(ii)在该微处理器中调试该程序信息,包括接收单元,用于从用户接收密钥信息;发送单元,用于在其中存储接收的密钥信息,并将该接收的密钥信息发送至所述微处理器;以及传输单元,用于利用存储在所述发送单元中的密钥信息,安全执行与所述微处理器的程序信息的传输。
14.根据权利要求13的主计算机,其中所述传输单元包括程序信息接收单元,用于从所述微处理器接收加密程序信息,该加密程序信息是通过对程序信息加密产生的;解密单元,用于利用存储在所述发送单元中的密钥信息,将所述加密程序信息解密,从而产生解密程序信息;以及显示单元,用于显示由所述解密单元产生的解密程序信息。
15.根据权利要求14的主计算机,其中所述传输单元进一步包括程序信息输入单元,用于从用户接收程序信息,该程序信息是程序,数据,以及程序和数据中的一个;加密单元,用于利用存储在发送单元中的密钥信息,将从用户接收的程序信息加密,从而产生加密程序信息;以及输出单元,用于将所述加密单元产生的加密程序信息输出至所述微处理器。
16.根据权利要求14的主计算机,进一步包括存储单元,存储源程序;转换单元,用于将该源程序转换为目标程序;以及加密单元,用于利用存储在所述发送单元的密钥信息将该目标程序加密,从而产生加密程序,其中所述传输单元将所述加密单元产生的加密程序传输至所述微处理器。
17.根据权利要求14的主计算机,其中所述传输单元进一步包括禁止条件存储单元,存储关于密钥信息的禁止条件;以及禁止请求输出单元,如果所述密钥信息满足该禁止条件,则该禁止请求输出单元输出一条请求至所述微处理器,以禁止所述加密程序信息的输出。
18.一种读/写设备,与用于存储保密程序信息的微处理器相连,包括接收单元,用于从用户接收密钥信息;发送单元,用于在其中存储所接收的密钥信息,并将该接收的密钥信息发送至所述微处理器;以及传输单元,用于利用存储在发送单元的密钥信息,安全执行与所述微处理器的程序信息的传输。
全文摘要
本发明提供了一调试系统,其中微处理器的调试操作和存储在调试系统中的信息的安全性都能实现。根据本发明的微处理器,当用户在主PC上输入密钥时,微处理器存储密钥,并利用密钥将指令和数据加密,从而将其发送至主PC。即使当恶意的用户将微处理器连接至调试单元并且获得加密指令和加密数据时,除非她/他知道密钥,否则她/他不能将加密指令和加密数据解密。
文档编号G06F1/00GK1542629SQ20041004511
公开日2004年11月3日 申请日期2004年3月19日 优先权日2003年3月19日
发明者山下太纪夫 申请人:松下电器产业株式会社