程序开发方法、程序开发支援装置及程序安装方法

文档序号:6563640阅读:194来源:国知局
专利名称:程序开发方法、程序开发支援装置及程序安装方法
技术领域
本发明涉及安装了密钥的系统、用于该系统的LSI的程序开发以及程序的安装这一技术。
对密钥的机密性和隐匿性很高的密钥安装系统而言,最大课题是,在如何维持它的程序开发和程序安装的安全性。

发明内容
本发明的目的,在于对上述密钥安装系统提供安全水平很高的程序开发方法、程序开发环境及程序安装方法。
具体而言,本发明提供一种程序开发方法,开发的是装到拥有包括含不可改写区域的机密存储器的LSI的系统中的程序,包括以其结构和所述LSI一样的LSI作开发用LSI,并将它设定为与程序安装及产品工作时的商品操作模式不同的开发模式的步骤,及在所述开发用LSI上开发所述程序的步骤。
根据本发明,安装到具有包括机密存储器的LSI的系统中的程序的开发,是在其结构和该LSI一样且被设定为和程序安装及产品工作时的商品操作模式不同的开发模式的开发用LSI中进行的。换句话说,因为可将拥有含不可改写区域的机密存储器且隐匿性高的LSI的操作模式从安装模式转换为开发模式,而将该LSI1作程序开发环境用,故能使程序开发环境的安全性比现有技术下的安全性高。
最好是,在所述本发明所涉及的程序开发方法中,限制LSI的操作,做到当将它设定为开发模式时能执行明文程序,同时当将它设定为商品操作模式时则不能执行明文程序。
所述本发明所涉及的程序开发方法,最好是,包括在所述开发用LSI上,对在所述程序开发步骤中开发的程序加密的加密步骤。
在所述本发明所涉及的程序开发方法中,最好是,限制LSI的操作,以做到当将它设定为开发模式时,不会生成用以将明文程序加密的密钥。
所述本发明所涉及的程序开发方法,最好是,包括以其结构与所述LSI一样的LSI作密钥生成用LSI,将它设定为与开发模式及商品操作模式不同的密钥生成模式的步骤;将加密后的密钥生成程序安装到所述密钥生成用LSI上并通过执行该密钥生成程序而生成密钥的步骤。而且,最好是,限定所述LSI的操作,做到在将它设定为密钥生成模式的时候,不能执行明文程序。或者是,最好是,包括以其结构与所述LSI一样的LSI作管理者用LSI,将它设定为与开发模式、商品操作模式及密钥生成模式不同的管理模式的步骤;在上述管理者用LSI上开发所述密钥生成程序并用任意密钥加密的步骤。
本发明提供一种支援加密程序的开发的程序开发支援装置,它包括其结构与上述加密程序运作的LSI一样的LSI和将明文程序存储起来的外部存储器;所述LSI又包括存储与原有的共有密钥有关的共有密钥密钥信息的机密存储器。而且,可执行从存储在所述机密存储器中的共有密钥密钥信息得到原有的共有密钥的第1步骤;及用所述原有的共有密钥将从所述外部存储器输入的明文程序加密的第2步骤。
根据本发明,给出了其结构与成为开发对象的加密程序运作的LSI的结构一样的LSI作开发环境。在该LSI上,从存储在机密存储器中的共有密钥密钥信息得到原有的共有密钥,同时使用该原有的共有密钥对从外部存储器输入的明文程序加密。换句话说,可执行原有的共有密钥的解密和利用了该原有的共有密钥对明文程序的加密。因此,故可在原有的共有密钥不被程序开发者不得知的情况下,执行明文程序的加密。
本发明提供了一种支援加密程序的开发的程序开发支援装置,它包括LSI和将明文程序存储起来的外部存储器,所述LSI又包括存储与原有的共有密钥有关的共有密钥密钥信息的机密存储器和存储引导程序的引导ROM。而且,包括通过执行存储在所述引导ROM中的引导程序,而执行从存储在所述机密存储器中的共有密钥密钥信息得到原有的共有密钥的第1步骤,及用所述原有的共有密钥对从所述外部存储器输入的明文程序加密的第2步骤。
根据本发明,通过在LSI上执行引导程序,从存储在机密存储器中的共有密钥密钥信息得到原有的共有密钥,同时使用该原有的共有密钥将从外部存储器输入的明文程序加密。换句话说,是通过引导程序执行原有的共有密钥的解密和利用了该原有的共有密钥的明文程序的加密,而不是利用来自外部的指示来执行原有的共有密钥的解密和利用了该原有的共有密钥的明文程序的加密。因此,故既确能防止原有的共有密钥被程序开发者得知,又能执行对明文程序的加密。
在所述本发明所涉及的程序开发支援装置中,最好是,所述共有密钥密钥信息包括用原有的第1中间密钥对原有的共有密钥加密后而得到的加密共有密钥、和用原有的第2中间密钥将所述原有的第1中间密钥加密后而得到的加密第1中间密钥。所述第1步骤,最好是利用所述加密共有密钥、加密的第1中间密钥及程序加密种子对所述原有的共有密钥解密。
本发明提供一种将加密的程序安装到包括拥有机密存储器的LSI及外部存储器的密钥安装系统中的方法,该方法包括将与原有的共有密钥有关的共有密钥密钥信息和与原有的固有密钥有关的固有密钥密钥信息存储在所述机密存储器中的初始值设定处理;在所述LSI上,从存储在所述机密存储器中的共有密钥密钥信息得到原有的共有密钥的第1步骤;在所述LSI上,用在所述第1步骤得到的原有的共有密钥对从所述外部存储器施来的共有密钥加密程序解密的第2步骤;在所述LSI上,从存储在所述机密存储器中的固有密钥密钥信息得到原有的固有密钥的第3步骤;在所述LSI上,用在所述第3步骤得到的原有的固有密钥对在所述第2步骤得到的明文程序加密的第4步骤。将在所述第4步骤中得到的固有密钥加密程序安装到所述外部存储器中。
根据本发明,用从存储在机密存储器中的共有密钥密钥信息得到的原有的共有密钥对施加给LSI的共有密钥加密程序解密。用从存储在机密存储器中的共有密钥密钥信息得到的原有的固有密钥对已解密的明文程序加密。换句话说,共有密钥加密程序是通过将加密的密钥从共有密钥变化为固有密钥而安装到系统中的。因此,在不同用户所持有的不同产品中,装上了由相互不同的固有密钥加密的程序,隐匿性提高。即使万一密码被破,受害产品也是有限的,故和现有技术下的安全性相比,这时的安全性提高了。
在所述本发明所涉及的程序安装方法中,最好是,LSI包括存储引导程序的引导ROM,通过在所述LSI上执行存储在所述引导ROM中的引导程序来执行上述第1~第4步骤。
在所述本发明所涉及的程序安装方法中,最好是,将固有密钥密钥信息存储到所述机密存储器的不可改写区域。
在所述本发明所涉及的程序安装方法中,最好是,共有密钥密钥信息包括用原有的第1中间密钥对原有的共有密钥加密后而得到的加密共有密钥、和用原有的第2中间密钥对所述原有的第1中间密钥加密后而得到的加密第1中间密钥。所述第1步骤,最好是,利用所述加密共有密钥、加密第1中间密钥和程序加密种子对所述原有的共有密钥解密。
在所述本发明所涉及的程序安装方法中,最好是,固有密钥密钥信息包括用原有的第1中间密钥对原有的固有密钥加密后而得到的加密固有密钥、和用原有的第2中间密钥对所述原有的第1中间密钥加密后而得到的加密第1中间密钥。所述第3步骤,最好是,利用所述加密固有密钥、加密的第1中间密钥和程序加密种子对所述原有的固有密钥解密。
在所述本发明所涉及的程序安装方法中,最好是,固有密钥密钥信息为该LSI所固有的固有ID。


图1为显示本发明的实施例所涉及的机密LSI的结构的方框图。
图2为显示使用了图1的机密LSI的开发及产品化的整个流程的图。
图3为显示引导程序的整个处理流程的流程图。
图4为前一个处理SZ2的数据流。
图5为密钥生成密钥的加密的数据流。
图6为程序加密处理SA2的流程图。
图7为程序加密处理SA2的数据流。
图8为密钥产生模式中的密钥生成器制造处理SB1的流程图。
图9和图10为密钥生成器制造处理SB1的数据流。
图11为密钥产生模式中密钥管理、发行处理SB2的流程图。
图12和图13为密钥管理、发行处理SB2的数据流。
图14为开发模式中的程序加密处理SC1的流程图。
图15为程序加密处理SC1的数据流。
图16为商品操作模式中的程序安装处理SD1的流程图。
图17和图18为程序安装处理SD1的数据流。
图19为商品操作模式中的通常引导处理SD2的流程图。
图20和图21为通常引导处理SD2的数据流。
图22为初始值设定处理SZ1的数据流。
具体实施例方式
下面,参考附图,说明本发明的实施例。需提一下,在以下的说明中,用Enc(X,Y)表示用密钥Y将X(密钥或者程序)加密后而得到的加密密钥或者程序。
图1为表示本实施例所涉及的机密LSI的内部结构的方框图。图1中的结构是这样的,即机密LSI1可通过外部总线120和外部存储器(闪烁存储器)100、外部工具110等连接。而且,可通过加上模式ID来设定操作模式。
对本实施例所涉及的主要的结构要素进行简单的说明。
首先,机密LSI1包括含不可改写区域11的机密存储器(保密Flash)10。该不可改写区域11中设有不可改写区域写入旗标12。一旦模式ID写到机密存储器10中,不可改写区域写入旗标12的旗标值就会从“可写入”变成“已经写完”,之后就不能向不可改写区域中写入了。需提一下,在本实施例中,机密存储器10及外部存储器100是由闪烁存储器构成的,但并不限于此,只要是非易失性存储器就行了。
还有,秘密密钥运算处理部分20,拥有存储各种密钥及程序加密种子的寄存器,由它进行加密处理。密钥生成/更新定序器30,拥有模式ID存储寄存器31,该密钥生成/更新定序器30根据存储在该模式ID存储寄存器31中的模式ID,控制秘密密钥运算处理部分20的操作,换句话说,控制是否生成各种密钥。该密钥生成/更新定序器30,拥有存储表示密钥或者程序由什么算法、密钥长加密的加密种类种类标识符的加密种类标识符存储寄存器32。还拥有程序加密种子33。
模式定序器40也拥有模式ID存储寄存器41。该模式定序器40根据存储在模式ID存储寄存器41中的模式ID和跳线43的值控制外部主接口(I/F)50的操作,换句话说,是控制通过哪一个主接口来将存储在外部存储器100中的程序、数据读进来。由此可控制是否可执行存储在外部存储器100中的明文程序。模式定序器40还拥有存储了表示用什么方法将密钥加密的加密种类标识符的加密种类标识符存储寄存器42。
外部主接口50,在模式定序器40的控制下,通过程序处理部分51所拥有的通过部分52、延迟部分53及程序解密用加密引擎54、数据处理部分55所拥有的通过部分56及内容加密/解密用加密引擎57中之任一个,在外部存储器100、外部工具110之间进行程序、数据的输出入。
这里,除了后述的管理模式以外,通过通过部分52输入的程序不会在机密LSI1内部执行。换句话说,通过部分52,是一在明文程序的加密、或者是用其他的密钥对已经加密的程序再次加密时有效的部分。机密LSI1的结构是这样的,除了后述的管理模式以外,操作不会进入通过通过部分52输入的程序。因此,即使例如已经成为商品的机密LSI1通过通过部分52取入了明文程序,也不能执行该明文程序。需提一下,在执行明文程序的时候,机密LSI1通过延迟部分53将程序输到它的内部。
引导ROM60存储控制机密LSI1的启动操作的引导程序。HASH运算部分70,为验证读到机密LSI1的程序的正当性而计算HASH值。
还有,外部存储器100中存储了程序、内容。外部工具110中存储了一开始启动机密LSI1时存储在机密存储器10中的各种初始值。该初始值的种类随着所设定的操作模式的不同而不同。
图2为显示使用了图1中的机密LSI1的开发及产品化的整个流程的图。如图2所示,机密LSI1在管理模式(模式ID00)、密钥生成模式(模式ID01)、开发模式(模式ID10)及商品操作模式(模式ID11)这4种操作模式下操作。
首先,被设定为管理模式的机密LSI1作为管理者用LSI操作。在管理者用LSI中,开发密钥生成程序,而且使用任意的密钥生成密钥对该密钥生成程序加密。
被设定为密钥生成模式的机密LSI1作为密钥生成用LSI操作,在密钥生成用LSI中,安装了在管理者用LSI中生成、加密的密钥生成程序。执行该密钥生成程序以后,就生成了各种密钥。
被设定为开发模式的机密LSI1作为开发用LSI操作,在开发用LSI中,开发在实际的产品中执行的应用程序。而且,使用程序共有密钥对该应用程序加密。
被设定为商品操作模式的机密LSI1作为实际的商品LSI操作。在商品LSI中,安装了在开发用LSI中生成的由程序共有密钥加密的应用程序,在其内部,用程序固有密钥将所安装的应用程序变换成加密后的应用程序。需提一下,在开发用LSI中也可为调试应用程序来执行该变换处理。
下面,参考流程图及数据流,对每一个模式下的机密LSI1的操作进行详细的说明。机密LSI1,通过执行存储在引导ROM60中的引导程序而进行以下操作。
图3为显示引导程序的整个处理过程的流程图。一给机密LSI1通上电以后,就由CPU65来执行引导ROM60中所存储的引导程序。如图3所示,首先,将每一个硬件初始化(SZ0)。然后,从外部工具110读入各种各样的初始值,设定在机密存储器10中(SZ1)。
图22为初始值设定处理SZ1的流程图。首先,在跳线44,判断机密存储器10是否安装在LSI内。接着,判断不可改写区域写入旗标12是否为“已写完”,因为当为“已写完”时,初始值就已经设定在机密存储器10中,故让处理SZ1结束。当不可改写区域写入旗标12为“可写入”时,就将初始值写到机密存储器10中。不仅将模式ID写到机密存储器10的不可改写区域11中,还将加密的程序固有密钥、地址管理信息、数据固有密钥写到机密存储器10的不可改写区域11中。需提一下,在最开始的判断结果是,机密存储器10在LSI的外部的时候,就将模式ID写在表示商品操作模式的值上。这样以来,机密存储器10在LSI包外那样的欺诈产品,只可在商品操作模式下工作。
接着,将不可改写区域写入旗标12设定为“已写完”。这样以来,以后的不可改写区域11就不能改写了。而且,还将加密种类标识符及安装模式旗标写到通常区域13、14中。而且,当模式ID显示管理模式以外的模式的时候,除了将加密种类标识符及安装模式旗标写到通常区域13、14中以外,还将已加密的共有密钥/密钥生成密钥写到通常区域13、14中。
之后,执行前处理SZ2。图4为前处理SZ2的数据流。这里,设定在机密存储器10的不可改写区域11中的模式ID,被设定在密钥生成/更新定序器30的模式ID存储寄存器31及模式定序器40的模式ID存储寄存器41中;设定在机密存储器10的第1通常区域13中的加密种类标识符被设定在密钥生成/更新定序器30的加密种类标识符存储寄存器32及模式定序器40的加密种类标识符存储寄存器42中;机密存储器10的不可改写区域11中所存储的地址管理信息被设定在MEMC80的密码地址区分存储寄存器81中。到这里为止的操作,和图2中的初始值设定阶段PA0、PB0、PC0、PD0相对应。
之后,根据模式ID的值来进行每一个模式下的操作(SZ3)。
(管理模式)当模式ID为“00”时,机密LSI1成为管理模式,根据跳线43的值(SA0)执行明文程序执行处理SA1或者是程序加密处理SA2。
在密钥生成程序开发阶段PA1,进行明文程序执行处理SA1,在这里生成密钥生成程序。该密钥生成程序存储在外部存储器100中。
在密钥生成程序加密阶段PA2,首先,如图5的数据流所示,通过执行密钥生成程序而对施来的任意密钥生成密钥加密。换句话说,在外部主接口50中,程序处理部分51的通过部分52在模式定序器40的作用下有效。外部存储器100中所存储的密钥生成程序通过通过部分52加到CPU65中而得以执行。执行了该密钥生成程序以后,外部存储器100中所存储的密钥生成密钥就由秘密密钥运算处理部分20利用装在密钥生成/更新定序器30中的程序加密种子加密。
需提一下,在本实施例中,密钥的加密是利用第1中间密钥和第2中间密钥来进行的。换句话说,加密的结果是,得到了明文密钥(这里为密钥生成密钥)由第1中间密钥(这里为MK1)加密后而得到的加密密钥(这里为Enc(密钥生成密钥,MK1))、和由第2中间密钥(这里为CK)将第1中间密钥加密后而得到的加密第1中间密钥(这里为Enc(MK1,CK)。当然,本发明并不限于这样的密钥加密方法。
之后,执行程序加密处理SA2。图6为该程序加密处理SA2的流程图,图7为数据流。首先,通过外部主接口50的通过部分52将存储在外部存储器100中的已加密的密钥生成密钥Enc(密钥生成密钥,MK1)、Enc(MK1,CK)设定在秘密密钥运算处理部分20中(SA21)。再用安装在密钥生成/更新定序器30中的程序加密种子将该加密后的密钥生成密钥解密,得到密钥生成密钥(SA22)。之后,取入存储在外部存储器100中的明文的密钥生成程序,再用已在SA22解密的密钥生成密钥对明文的密钥生成程序加密,写到外部存储器100中(SA23)。由HASH运算部分70对外部存储器100中的明文的密钥生成程序进行HASH运算,并将计算出的HASH值写到外部存储器100中(SA24)。
经过了这样的操作以后,在管理模式,生成由密钥生成密钥加密的密钥生成程序Enc(密钥生成程序,密钥生成密钥)、已加密的密钥生成密钥Enc(密钥生成密钥,MK1)、Enc(MK1,CK)、密钥生成程序的HASH值。
-密钥生成模式-
当模式ID为“01”时,机密LSI1成为密钥生成模式,根据安装模式旗标的值(SB0)来执行密钥生成器制造处理SB1或者是密钥管理/发行处理SB2。
在密钥生成器制造阶段PB1,执行密钥生成器制造处理SB1,图8为该处理SB1的流程图,图9及图10为数据流。这里,根据模式ID和安装模式旗标的值,在外部主接口50所拥有的程序处理部分51中通过部分52被设定为有效。
首先,将存储在机密LSI1的不可改写区域11中加密的程序固有密钥Enc(程序固有密钥,MK0)、Enc(MK0,CK)设定在秘密密钥运算处理部分20的加密密钥存储寄存器中(SB11)。再用安装在密钥生成/更新定序器30中的程序加密种子对已加密的程序固有密钥解密,得到程序固有密钥(SB12)。接着,将在初始值设定阶段PB0所设定的、被加密的密钥生成密钥Enc(密钥生成密钥,MK1)、Enc(MK1,CK)设定在秘密密钥运算处理部分20的加密密钥存储寄存器中(SB13),用安装在密钥生成/更新定序器30中的程序加密种子对该加密的密钥生成密钥解密,得到密钥生成密钥(SB14)。
之后,通过外部主接口50所拥有的程序处理部分51的通过部分52,将存储在外部存储器100中由密钥生成密钥加密的密钥生成程序Enc(密钥生成程序,密钥生成密钥)取到秘密密钥运算处理部分20中(SB15)。接着,用密钥生成密钥将所取入的加密密钥生成程序解密以后,再用程序固有密钥加密,得到加密的密钥生成程序Enc(密钥生成程序,程序固有密钥)(SB16)。写到外部存储器100中(SB17)。接着,再通过通过部分52将存储在外部存储器100中的HASH值设定在机密存储器10的通常区域13中(SB18)。
由CPU65将存储在机密存储器10的通常区域13中的安装模式旗标的值设定为“OFF”(SB19)。接着,消除存储在机密存储器10中的通常区域13中加密的密钥生成密钥Enc(密钥生成密钥,MK1)、Enc(MK1,CK)(SB1A),同时消除存储在外部存储器100中加密的密钥生成程序Enc(密钥生成密钥程序,密钥生成密钥)及HASH值(SB1B)。
在密钥管理/发行阶段PB2,执行密钥管理/发行程序SB2。图11为该处理SB2的流程图,图12及图13为数据流。这里,根据模式ID和安装模式旗标的值,将外部主接口50所拥有的程序解密用加密引擎54设定为有效。
首先,将存储在机密存储器10的不可改写区域11中且加密了的程序固有密钥Enc(程序固有密钥,MK0)、Enc(MK0,CK)设定在秘密密钥运算处理部分20的加密密钥存储寄存器中(SB21)。接着,用安装在密钥生成/更新定序器30中的程序加密种子对已加密了的程序固有密钥解密,得到程序固有密钥(SB22)。所得到的程序固有密钥被设定在外部主接口50的程序解密用加密引擎54的程序固有密钥存储寄存器中(SB23)。
之后,通过外部主接口50所拥有的程序处理部分51的程序解密用加密引擎54,对存储在外部存储器100中由程序固有密钥加密了的密钥生成程序Enc(密钥生成程序,程序固有密钥)解密并将它取到HASH运算部分70中,计算HASH值(SB24)。接着,对计算出的HASH值和存储在机密存储器10的通常区域13中的HASH值进行比较,检查密钥生成程序是否被窜改了(SB25)。当HASH值一致时(在SB26为No),处理将移到存储在外部存储器100的密钥生成程序Enc(密钥生成程序,程序固有密钥)中,执行密钥的生成(SB27)。另一方面,当HASH值不一致时(在SB26为Yes),就推测是有欺骗行为,而执行欺骗访问控制处理(SB28)。
在商品操作模式下,仅使通过部分52有效而输入程序,或者使程序解密用加密引擎54有效而将已加密的程序解密并将它输入,故机密LSI1的操作受到限制,结果是不能执行明文程序。
-开发模式-当模式ID为“10”时,机密LSI1成为开发模式,根据跳线43的值(SC0)来执行程序加密处理SC1、明文程序执行处理SC2、程序安装处理SC3或者是加密程序执行处理SC4。
在应用程序开发阶段PC1,设延迟部分53有效,执行明文程序执行处理SC2,开发出应用程序。所开发的应用程序存储在外部存储器100中。
在应用程序加密阶段PC2,执行程序加密处理SC1。图14为该程序加密处理SC1的流程图,图15为数据流。首先,将存储在机密存储器10的通常区域14中的作为共有密钥密钥信息的加密的程序共有密钥Enc(程序共有密钥,MK2)、Enc(MK2,CK)设定在秘密密钥运算处理部分20中(SC11)。接着,用安装在密钥生成/更新定序器30中的程序加密种子对已加密的程序共有密钥解密,得到程序共有密钥(SC12)。之后,将存储在外部存储器100中的明文应用程序取进来,用在SC12解密的程序共有密钥对它加密,并写到外部存储器100中(SC13)。接着,再由HASH运算部分70对外部存储器100的明文应用程序进行HASH运算,将计算出的HASH值写入外部存储器100中(SC14)。
经过了这样的操作以后,生成了由程序共有密钥加密的应用程序Enc(应用程序,程序共有密钥)、应用程序的HASH值。
其次,在应用程序安装阶段PC3,执行程序安装处理SC3;在应用程序调试阶段PC4,执行加密程序执行处理SC4。因为这些处理和商品操作模式中的各个处理SD1,SD2一样,故详情省略不述。
就这样,因为可将拥有含不可改写区域11的机密存储器10且具有高隐匿性的LSI1的操作模式从安装模式转换为开发模式,而让该LSI1作程序开发环境用,故能使程序开发环境中的安全性比现在的安全性高。
因原有的共有密钥由存储在机密存储器10中的作为共有密钥密钥信息的已加密的共有密钥(共有密钥信息)解密,并用该原有的共有密钥对明文程序加密,故可在程序开发者不知道原有的共有密钥的情况下,对明文程序加密。
因为原有的共有密钥的解密、利用了该原有的共有密钥的明文程序的加密,是通过引导程序执行的,而不是通过接收来自外部的指示而执行的,故既确可防止程序开发者知道原有的共有密钥,又能执行明文程序的加密。
-商品操作模式-当模式ID为“11”时,机密LSI1成为商品操作模式,根据安装模式旗标的值(SD0)来执行程序安装处理SD1或者通常引导处理SD2。
在商品安装阶段PD1,执行程序安装处理SD1。图16为该处理SD1的流程图,图17及图18为数据流。这里,根据模式ID和安装模式旗标的值,在外部主接口50所拥有的程序处理部分51中通过部分52被设定为有效。
首先,将存储在机密存储器10的不可改写区域11中作为固有密钥密钥信息的已加密的程序固有密钥(程序固有密钥,MK0)、Enc(MK0,CK)设定在秘密密钥运算处理部分20的加密密钥存储寄存器中(SD11)。接着,用安装在密钥生成/更新定序器30中的程序加密种子对已加密的程序固有密钥解密,得到程序固有密钥(SD12)。接着,将在初始值设定阶段PD0所设定的作为共有密钥密钥信息的已加密的程序共有密钥Enc(程序共有密钥,MK2)、Enc(MK2,CK)设定在秘密密钥运算处理部分20的加密密钥存储寄存器中(SD13),再使用安装在密钥生成/更新定序器30中的程序加密种子对该已加密的程序共有密钥解密,而得到程序共有密钥(SD14)。
之后,通过外部主接口50所拥有的程序处理部分51的通过部分52,将存储在外部存储器100中且由程序共有密钥加密的应用程序Enc(应用程序,程序共有密钥)取到秘密密钥运算处理部分20中(SD15)。接着,用程序共有密钥将所取入的加密了的应用程序解密以后,再用程序固有密钥对它加密,得到加密后的应用程序Enc(应用程序,程序固有密钥)(SD16),并写到外部存储器100中(SD17)。接着,再通过通过部分52将存储在外部存储器100中的HASH值设定在机密存储器10的通常区域13中(SD18)。
由CPU65将存储在机密存储器10的通常区域13中的安装模式旗标的值设定为“OFF”(SD19)。消除存储在机密存储器10的通常区域13中且已加密的程序共有密钥Enc(程序共有密钥,MK1)、Enc(MK1,CK)(SD1A),同时消除存储在外部存储器100中且已加密的应用程序Enc(应用程序,程序共有密钥)及HASH值(SD1B)。
换句话说,共有密钥加密程序,是通过让加密的密钥从共有密钥变换为固有密钥而安装到系统上的。因此,用户所持有的每一个产品就安装了分别由不同的固有密钥加密后而得到的程序,隐匿性提高。万一密码子遭到破坏,受害产品的数量也是有一定限度的,故和现有的技术相比,安全性得到了提高。
需提一下,可以以固有ID为本生成固有密钥。换句话说,对每一个机密LSI1而言,在它的机密存储器10中安装一个自己的固有ID作固有密钥密钥信息,在该产品安装阶段PD1,由引导程序从所安装的固有ID生成固有密钥。
在商品操作阶段PD2,执行通常引导处理SD2。图19为该处理SD2的流程图;图20及图21为数据流。这里,根据模式ID及安装模式旗标的值将外部主接口50所拥有的程序解密用加密引擎54设定为有效。
首先,将存储在机密存储器10的不可改写区域11中加密了的程序固有密钥Enc(程序固有密钥,MK0)、Enc(MK0,CK)设定在秘密密钥运算处理部分20的加密密钥存储寄存器中(SD21)。用安装在密钥生成/更新定序器30中的程序加密种子对该已加密的程序固有密钥解密,得到程序固有密钥(SD22)。所得到的程序固有密钥设定在外部主接口50的程序解密用加密引擎54的程序固有密钥存储寄存器中(SD23)。
之后,将存储在机密存储器10的不可改写区域11中的数据固有ID设定在秘密密钥运算处理部分20的固有ID存储寄存器中(SD24)。由CPU65产生随机数,并将它设定在秘密密钥运算处理部分20的随机数存储寄存器中(SD25)。由秘密密钥运算处理部分20从数据固有ID和随机数生成数据固有密钥(SD26)。
之后,通过外部主接口50所拥有的程序处理部分51的程序解密用加密引擎54,对存储在外部存储器100中且由程序固有密钥加密的应用程序Enc(应用程序,程序固有密钥)解密并将它取到HASH运算部分70中,计算HASH值(SD27)。接着,对该计算出的HASH值和存储在机密存储器10的通常区域13中的HASH值进行比较,检查应用程序是否被窜改(SD28)。当HASH值一致时(在SD29为No),处理将移到存储在外部存储器100的应用程序Enc(应用程序,程序固有密钥),执行应用(SD2A)。另一方面,当HASH值不一致时(在SD29为Yes),就推测是有不正行为,而执行不正访问控制处理(SD2B)。
在商品操作模式下,仅使通过部分52有效输入程序,或者仅使程序解密用加密引擎54有效而将已加密的程序解密并将它输入,故机密LSI1的操作受到了限制,结果是不能执行明文程序。
需提一下,在开发模式和商品操作模式下,即使从外部利用秘密密钥运算处理部分20执行生成密钥这样的处理,也能由密钥生成/更新定序器30判断出这一情况而不得执行产生密钥这样的处理。换句话说,密钥生成/更新定序器30,在开发模式及商品操作模式下,操作受限而只在启动时使用程序加密种子,除此以外的其他时候都不能使用程序加密种子。故不能执行生成密钥的处理。
需提一下,在本实施例中,程序、数据存储在外部存储器100中,安装在机密存储器10中的初始值存储在外部工具110中,将程序、数据及初始值安装在哪里都行。例如,可从外部工具110中读入程序、数据,再对它加密,是没有任何问题的。
需提一下,在本实施例中。由引导程序执行各种处理,本发明并不限于此,由其他手段来执行处理的一部分或者全部也是可以的。只不过是,由引导程序来执行处理时的安全性会比由来自外部的指示执行处理的安全性更高。
综上所述,根据本发明,因为可将拥有含不可改写区域的机密存储器且隐匿性高的LSI的操作模式从安装模式转换为开发模式,而让该LSI作程序开发环境用,故能使程序开发环境中的安全性比现在的安全性高。
权利要求
1.一种将加密的程序写入到具有LSI及外部存储器的密钥安装系统中的方法,所述LSI具有存储引导程序的引导ROM和机密存储器,包括如下步骤将与未加密的共有密钥有关的共有密钥密钥信息和与未加密的固有密钥有关的固有密钥密钥信息存储在所述机密存储器中的初始值设定处理,在所述LSI上,从存储在所述机密存储器中的共有密钥密钥信息得到未加密的共有密钥的第1步骤,在所述LSI上,用在所述第1步骤得到的未加密的共有密钥对从所述外部存储器施来的共有密钥加密程序解密的第2步骤,在所述LSI上,从存储在所述机密存储器中的固有密钥密钥信息得到未加密的固有密钥的第3步骤,在所述LSI上,用在所述第3步骤得到的未加密的固有密钥对在所述第2步骤得到的明文程序加密的第4步骤,以及仅在所述LSI第一次起动时,执行上述第1~第4步骤,将在所述第4步骤中得到的固有密钥加密程序写入到所述外部存储器中。
2.根据权利要求1所述的方法,其中将所述固有密钥密钥信息存储到所述机密存储器的不可改写区域。
3.根据权利要求1所述的方法,其中所述共有密钥密钥信息包括用未加密的第1中间密钥对未加密的共有密钥加密后而得到的加密共有密钥、和用未加密的第2中间密钥对所述未加密的第1中间密钥加密后而得到的加密第1中间密钥;在所述第1步骤中,利用所述加密共有密钥、加密第1中间密钥和程序加密种子对所述未加密的共有密钥解密。
4.根据权利要求1所述的方法,其中所述固有密钥密钥信息包括用未加密的第1中间密钥对未加密的固有密钥加密后而得到的加密固有密钥、和用未加密的第2中间密钥对所述未加密的第1中间密钥加密后而得到的加密第1中间密钥;在所述第3步骤中,利用所述加密固有密钥、加密第1中间密钥和程序加密种子对所述未加密的固有密钥解密。
5.根据权利要求1所述的方法,其中所述固有密钥密钥信息为该LSI所固有的固有ID。
全文摘要
本发明公开了一种程序开发方法、程序开发支援装置及程序安装方法。对密钥安装系统提供一安全水平很高的开发环境。用一个其结构和拥有包括机密存储器的LSI系统中的LSI一样的LSI,将它设定在与商品操作模式不同的开发模式上,来进行该拥有包括机密存储器的LSI系统的程序的开发;还将它设定为管理模式而进行密钥生成程序的开发和加密;也将它设定为密钥生成模式,执行已加密的密钥生成程序而生成各种密钥。
文档编号G06F21/00GK1967482SQ20061016054
公开日2007年5月23日 申请日期2003年7月23日 优先权日2002年7月24日
发明者藤原睦, 根本祐辅, 安井纯一, 前田卓治, 伊藤孝幸, 山田泰司, 井上信治 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1