专利名称:程序更新方法及服务器的制作方法
技术领域:
本发明涉及一种在安装了密钥的系统、用于该系统的LSI中,边保持安全性,边更新程序的技术。
背景技术:
到目前为止,为防止让LSI工作的程序被施加不正当的处理,是将用事先决定好的制造商密钥加密了的程序在存储器中存储好,再对它解密而执行让LSI工作的程序的。然而,因在这样的系统中,有大量的执行用共同的制造商密钥加密了的程序的LSI,故即使万一从一个产品将制造商密钥的信息不正当地泄露了出去,也有可能造成大量产品的程序被篡改。因此,就存在着安全性提高不了的问题。
有这样的一种方法,可解决这一问题。即针对每一个LSI用固有的固有密钥对让LSI工作的程序加密,作为产品只执行用固有密钥加密了的程序(参考日本专利申请特愿2002-215096、特愿2002-258481)。使用该手法以后,即使一个产品的密钥信息不正当地泄露出去,也不会对其他产品造成什么影响,故可提高安全性。还有以该手法为前提将密钥双重加密的手法(参考日本专利申请特愿2001-286881)。
需提一下,这里所列举的专利申请都尚未公开,因此没有要叙述的背景技术文献信息。
一般情况下,安装在已成为产品的LSI中的程序的更新(update),是通过SSL连接确保通信通路(communication path)的安全,从服务器将明文程序或者是用制造商密钥加密了的程序发送给LSI,这样来进行的。然而,在这一手法下,若通信通路被不正当地访问,在大量的产品中可执行的程序就被不正当地获得,因此也就不能提高更新程序时的安全性。
为解决这一问题,在使用上述手法的时候,因为LSI仅执行由固有密钥加密了的程序,因此即使发送明文程序、用制造商密钥加密了的程序也不能那样就去执行。
也有这样的一种方法,即在服务器一侧准备每一个LSI用不同的密钥加密了的程序,在对每一个LSI进行密钥信息的管理的基础上,再从服务器将对每一个LSI用不同的密钥加密了的程序发送给LSI。但这一方法需要很多的时间和成本,是不现实的。
发明内容
本发明正是为解决上述问题而开发出来的。其目的在于提供一种对可执行由LSI固有的固有密钥加密了的程序的LSI而言,边保持高的安全性,边更新程序的方法。
为解决上述问题,本发明所采用的技术方案提供了一种程序更新方法,即在拥有LSI和外部存储器的系统中,将存储在所述外部存储器中、由所述LSI固有的固有密钥加密了的固有密钥加密程序更新的方法。包括所述系统接收从服务器发送的、由共有密钥加密了的共有密钥加密程序的第一步骤;所述系统通过将所接收的所述共有密钥加密程序解密而生成明文程序的第二步骤;以及所述系统用所述固有密钥将所述明文程序再次加密,并作为新的固有密钥加密程序存储在所述外部存储器中的第三步骤。
在所述本发明所涉及的程序更新方法中,最好是,还包括接收从所述服务器发送的共有密钥信息的步骤,利用已接收的所述共有密钥信息生成明文共有密钥的步骤。在上述第二步骤中,使用所述明文共有密钥将所述共有密钥加密程序解密。
最好是,所述共有密钥信息,包含用明文第一中间密钥将所述明文共有密钥加密了的加密共有密钥和用明文第二中间密钥将所述明文第一中间密钥加密了的加密第一中间密钥。
在上述本发明所涉及的程序更新方法中,所述LSI拥有存储了固有密钥信息的内部存储器,所述系统,在起动它时利用存储在所述内部存储器中的固有密钥信息生成明文固有密钥;在所述第三步骤中,使用所述明文固有密钥而将所述明文程序再次加密。
最好是,所述固有密钥信息,含有用明文第三中间密钥将所述明文固有密钥加密了的加密固有密钥和用明文第四中间密钥将所述明文第三中间密钥加密了的加密第二中间密钥。或者,最好是,将所生成的所述明文固有密钥存储在所述LSI内,并在执行所述固有密钥加密程序时用所述明文固有密钥将所述固有密钥加密程序解密成明文程序。
在所述本发明所涉及的程序更新方法,所述LSI拥有存储了引导程序的引导ROM,所述外部存储器存储着为在它和服务器之间接收、发送数据而用的取得程序,所述系统,由存储在所述外部存储器中的取得程序执行所述共有密钥加密程序,由存储在所述引导ROM中的引导程序控制接收后的更新处理。
在所述本发明所涉及的程序更新方法中,包括接收从所述服务器发送的所述明文程序的HASH值的步骤;在所述第二步骤中,用所接收的HASH值来对已解密的明文程序进行HASH验证。
本发明所采用的技术方案提供了一种服务器,其为在拥有LSI的系统中更新程序而工作。该服务器执行以下三个步骤,即从所述系统接收所述LSI的ID和为更新对象的程序的识别信息的应用ID的第一步骤;参考表示应用ID和LSIID间之对应关系的第一表,决定是否将所述更新程序发送到所述系统的第二步骤;以及当决定在所述第二步骤发送的时候,就发送由共有密钥对所述为更新对象的程序加密而得到的共有密钥加密程序以及将生成所述共有密钥的共有密钥信息的第三步骤。
在所述本发明所涉及的服务器中,最好是执行以下两个步骤,即从所述系统接收要求执行所述为更新对象的程序所必需的应用固有信息之信号的第四步骤;以及参考表示应用固有信息的发送历史和LSIID之对应关系的第二表,决定是否发送在所述第四步骤所要求的应用固有信息的第五步骤。
在所述本发明所涉及的服务器中,最好是,所述共有密钥信息,含有用明文第一中间密钥将明文共有密钥加密了的加密共有密钥、和用明文第二中间密钥将所述明文第一中间密钥加密了的加密第一中间密钥。
图1为显示本发明的实施例所涉及的机密LSI的结构的方框图。
图2为显示使用了图1的机密LSI的开发及产品化的整个过程的图。
图3为显示引导程序的整个处理过程的流程图。
图4为机密存储器初始值设定SZ1的数据流。
图5为商品操作模式下的程序安装处理SD1的流程图。
图6为程序安装处理SD1的数据流1。
图7为程序安装处理SD1的数据流2。
图8为商品操作模式下的通常引导处理SD2的流程图。
图9为通常引导处理SD2的数据流1。
图10为通常引导处理SD2的数据流2。
图11为显示更新程序时和服务器进行通信的流程图。
图12示出了存储在外部存储器100中的、和程序更新有关的程序的结构。
图13为显示程序的更新处理的流程图。
符号说明1-机密LSI;3-服务器;4-第一表;5-第二表;10-机密存储器(内部存储器);58-程序固有密钥存储寄存器;60-起动ROM;100-外部存储器。
具体实施例方式
下面,参考附图,说明本发明的实施例。需提一下,在以下的说明中,用Enc(X,Y)表示用密钥Y将X(密钥或者程序)加密后而得到的加密了的密钥或者程序。
图1为表示作为本实施例所涉及的半导体器件的机密LSI的内部结构的方框图。图1中的结构是这样的,即机密LSI1可通过外部总线120和外部存储器(闪烁存储器)100、外部工具110等相连。而且,可通过施加模式ID来设定其操作模式。
对本实施例所涉及的主要构成要素进行简单的说明。
首先,机密LSI1包括含不可改写区域11的机密存储器(机密Flash)10。该不可改写区域11中设有不可改写区域写入旗标12。一旦模式ID写到机密存储器10中,不可改写区域写入旗标12的旗标值就会从“可写入”变成“已经写完”,之后就不能再向不可改写区域写入了。需提一下,在本实施例中,机密存储器10及外部存储器100由闪烁存储器构成,当然并不限于此,只要是非易失性存储器什么都行。
还有,加密部分2是对程序进行加密、解密的部分,拥有秘密密钥运算处理部分20和密钥生成/更新定序器30。秘密密钥运算处理部分20拥有存储各种密钥、及程序加密种(program encryption seed)等的寄存器(程序共有密钥存储寄存器21、程序固有密钥存储寄存器22及加密密钥存储寄存器23等),它能够执行多个包括程序的加密处理或者解密处理的顺序(sequences)。密钥生成/更新定序器30,判断是否允许执行秘密密钥运算处理部分20可执行的各种顺序,针对已经判断出为不允许执行的顺序,便禁止秘密密钥运算处理部分20的操作。密钥生成/更新定序器30拥有模式ID存储寄存器31,密钥生成/更新定序器30根据存储在该模式ID存储寄存器31中的模式ID判断每一个顺序是否允许执行。密钥生成/更新定序器30还拥有存储表示密钥或者程序由什么算法、密钥长加密的加密种类标识符的加密种类标识符存储寄存器32及存储程序加密种的存储部分33。
模式定序器40也拥有模式ID存储寄存器41。该模式定序器40根据存储在模式ID存储寄存器41中的模式ID和跳线(jumper)43的值控制外部主接口(I/F)50的工作情况,换句话说,是控制通过哪一个I/F来将存储在外部存储器100中的程序、数据读进来。由此可控制是否可执行存储在外部存储器100中的明文程序。模式定序器40还拥有存储了表示用什么方法将密钥加密的加密种类标识符的加密种类标识符存储寄存器42。
外部主接口50,在模式定序器40的控制下,通过程序处理部分51所拥有的加密用通过部分52、执行用通过部分53和程序解密用密码引擎54、以及数据处理部分55所拥有的通过部分56及内容加密/解密用密码引擎57中之任一个,在它和外部存储器100、外部工具110之间进行程序、数据的输出入。程序解密用密码引擎54,还拥有用来存储对程序加密的程序固有密钥的程序固有密钥存储寄存器58。
这里,使在所构成的后述的密钥生成模式和商品操作模式中,不能通过执行用通过部分53取入程序。换句话说,是这样构成机密LSI1的,即在后述的密钥生成模式和商品操作模式中,不让操作移向用固有密钥加密了的程序以外的程序去。
引导ROM60存储着控制机密LSI1的起动工作的引导程序。HASH运算部分70,为验证读到机密LSI1中的程序的正当性而计算HASH值。
还有,外部存储器100中存储着程序、内容等。外部工具110中存储着机密LSI1一开始起动时存储在机密存储器10中的各种初始值。该初始值的种类随着所设定的操作模式的不同而不同。
图2为显示使用了图1中的机密LSI1的开发及产品化的整个过程的图。如图2所示,机密LSI1在管理模式(模式ID00)、密钥生成模式(模式ID01)、开发模式(模式ID10)及商品操作模式(模式ID11)这4种操作模式下工作。
首先,被设定为管理模式的机密LSI1作为管理者用LSI工作。在管理者用LSI中,开发密钥生成程序(PA1),而且,该密钥生成程序被使用任意的密钥生成密钥加密(PA2)。
被设定为密钥生成模式的机密LSI1作为密钥生成用LSI工作,在密钥生成用LSI中,安装在管理者用LSI中已生成、加密了的密钥生成程序(PB1)。执行该密钥生成程序以后,生成各种密钥(PB2)。
被设定为开发模式的机密LSI1作为开发用LSI工作,在开发用LSI中,开发在实际的产品中执行的应用程序(PC1)。而且,使用程序共有密钥对该应用程序加密(PC2)。
被设定为商品操作模式的机密LSI1作为实际的商品LSI工作。在商品LSI中,安装了在开发用LSI中生成、由程序共有密钥加密了的应用用程序,在其内部,将所安装的应用用程序变换成用程序固有密钥加密了的应用用程序(PD1)。之后,作为通常的商品LSI工作(PD2)。需提一下,在开发用LSI中也可为调试应用用程序来执行该变换处理(PC3)。
下面,参考着流程和数据流,来详细说明按上述构成的机密LSI1的商品操作模式下的通常操作和机密更新操作。
图3为显示引导程序的整个处理过程的流程图。一给机密LSI1通上电以后,就由CPU65来执行存储在引导ROM60中的引导程序。如图3所示,首先,将每一个硬件初始化(SZ0)。然后,从外部工具110读入各种各样的初始值,并将该读入的初始值设定在机密存储器10中(SZ1)。
图4为初始值设定处理SZ1的流程图。首先,在跳线44,判断机密存储器10是否被安装在LSI内(SZ11)。接着,判断不可改写区域写入旗标12是否为“已写完”(SZ12),因为当为“已写完”(Yes)时,初始值就已经设定在机密存储器10中了,故结束处理SZ1。当不可改写区域写入旗标12为“可写入”(No)时,就将初始值写到机密存储器10中(SZ13~ZS18)。不仅将模式ID写到机密存储器10的不可改写区域11中,还将加密了的程序固有密钥、地址管理信息、数据固有密钥写到机密存储器10的不可改写区域11中。需提一下,在最初的判断结果为机密存储器10在LSI的外部的时候(SZ14为No),就将模式ID写在表示商品操作模式的值上(SZ15)。这样以来,机密存储器10在LSI包外那样的不正当产品,就只能在商品操作模式下工作了。
接下来,将不可改写区域写入旗标12设定为“已写完”(SZ19)。这样以来,以后的不可改写区域11就不能再改写了。而且,还将加密种类标识符及安装模式旗标写到通常区域13、14中(SZ1A)。而且,当模式ID显示管理模式以外的模式的时候(SZ1B为No),除此以外,还将已加密了的共有密钥/密钥生成密钥也写到通常区域13、14中(SZ1C)。
之后,执行前处理SZ2。这里,设定在机密存储器10的不可改写区域11中的模式ID,被设定在密钥生成/更新定序器30的模式ID存储寄存器31及模式定序器40的模式ID存储寄存器41中;设定在机密存储器10的第1通常区域13中的加密种类标识符被设定在密钥生成/更新定序器30的加密种类标识符存储寄存器32及模式定序器40的加密种类标识符存储寄存器42中;机密存储器10的不可改写区域11中所存储的地址管理信息被设定在MEMC80的加密地址区分存储寄存器(encryptionaddress segment storage register)81中。到这里为止的操作,和图2中的初始值设定阶段PA0、PB0、PC0、PD0相对应。
之后,根据模式ID的值来进行每一个模式下的操作(SZ3)。这样根据模式ID的值限制在机密LSI进行的操作以后,就能提高程序的隐密性(confidentiality)。
下面,详细说明通常的商品操作(通常引导处理)。
当模式ID为“11”时,机密LSI1成为商品操作模式,根据安装模式旗标的值(SD0)来执行程序安装处理SD1或者通常引导处理SD2。
图5为程序安装处理SD1的流程图。图6、图7为数据流。在程序安装处理SD1中,利用存储在机密存储器10中的固有密钥信息将程序固有密钥解密(SD11,SD12),利用共有密钥信息将程序共有密钥解密(SD13,SD14),利用已解密了的程序共有密钥和程序固有密钥将存储在外部存储器100中的程序Enc(程序、程序共有密钥)变换成Enc(程序、程序固有密钥)(SD15-SD17)。之后,验证程序的正当性(SD18),如果正当,就将安装模式旗标设定为OFF(SD19)。这样从下一次起动时开始,就不进行程序安装处理SD1了。最后,存储在机密存储器10内的程序共有密钥,和存储在外部存储器100中的程序Enc(程序、程序共有密钥)被消除(SD1A,SD1B)。
图8为通常引导处理SD2的流程图。图8、图9为数据流。在通常引导处理SD2中,首先,将存储在作为内部存储器的机密存储器10的不可写入区域11中且作为固有密钥密钥信息加密了的程序固有密钥设定在秘密密钥运算处理部分20的加密密钥存储寄存器中(SD21),也就是说,将加密固有密钥Enc(程序固有密钥(明文)、MK0(明文第三中间密钥))及加密第二中间密钥Enc(MK0,CK0(明文第四中间密钥))设定在秘密密钥运算处理部分20的加密密钥存储寄存器中(SD21)。之后,利用安装在密钥生成/更新定序器30中的程序加密种对该已加密了的程序固有密钥解密,而得到程序固有密钥(SD22)。所得到的程序固有密钥设定在秘密密钥运算处理部分20的程序固有密钥存储寄存器22、外部主I/F50的程序解密用密码引擎54的程序固有密钥存储寄存器58中(SD23)。
之后,将存储在机密存储器10的不可写入区域11内的数据固有ID设定在秘密密钥运算处理部分20的固有ID存储寄存器中(SD24)。由CPU65生成随机数,并将它设定在秘密密钥运算处理部分20的随机数存储寄存器中(SD25)中。然后,由秘密密钥运算处理部分20从固有ID和随机数生成数据固有密钥(SD26)。内容的再生用数据固有密钥进行。因为使用随机数生成数据固有密钥,故每次起动都不一样,再生内容时的安全性也就提高了。
之后,将存储在外部存储器100中用程序固有密钥加密了的程序Enc(程序,程序固有密钥)通过外部主I/F50所拥有的程序处理部分51的程序解密用密码引擎54解密并取到HASH运算部分70中,计算出HASH值(SD27)。用存储在外部主I/F的程序固有密钥存储寄存器58中的程序固有密钥作为用于解密的密钥。然后,对该已计算出来的HASH值和存储在机密存储器10的通常区域13内的HASH值进行比较,检查程序是否被篡改(SD28)。当HASH值一致时(SD29为No),处理就移到存储在外部存储器100中的程序Enc(程序,程序固有密钥),而执行应用(application)(SD2A)。若HASH值不一致(SD29中Yes),就推测是出现了什么不正当的行为,而执行不正当访问控制处理(SD2B)。
这里,参考附图,说明在如上所述作为商品工作的机密LSI中,进行程序更新的处理。图11表示为在进行程序更新时,在服务器3和拥有机密LSI1的系统之间的数据处理的流程。
如图11所示,首先,机密LSI1一起动程序更新处理,服务器3就从系统接收机密LSI1的ID而进行ID认证,当认证了的时候,就将机密LSI1和SSL连接起来(UD1)。这样一来,就确保了服务器3和拥有机密LSI1的系统之间的通信通路的安全性。
若确保了通信通路,系统就将为更新对象的程序的识别信息即应用ID发送给服务器3(UD2)。服务器3,管理表示可更新的程序的应用ID、和让程序运行的良好LSI的ID之间的对应关系的第一表4。根据该第一表4,判断是否发送程序。确认了机密LSI1的ID和被要求更新的程序的应用ID相对应以后,服务器3就开始发送该为更新对象的程序。
首先,从服务器3将为更新对象的程序的附加信息发给机密LSI1(UD3),这里的附加信息,包括使其认证可否在机密LSI1一侧更新程序的署名,为更新对象的程序的大小以及为更新对象的程序的HASH值(明文中的值)等。机密LSI1使用作为附加信息发送来的署名进行认证,并根据发送来的程序尺寸判断外部存储器100中有无可能更新的空区域。在判断出可能更新的情况下,就要求服务器3发送共有密钥信息(UD4)。
服务器3收到要求以后,服务器3就将加密共有密钥Enc(程序共有密钥(明文),MK1(明文第一中间密钥))及加密第一中间密钥Enc(MK1,CK1(明文第二中间密钥)作为共有密钥信息发送给机密LSI1(UD5)。机密LSI1使用共有密钥信息将程序共有密钥解密,在已解密的状态下进行HASH值运算,以验证正当性。将程序共有密钥正常地解密以后,系统就要求服务器3发送共有密钥加密程序(UD6)。服务器3接收了要求以后,服务器3就将程序Enc(程序,程序共有密钥)发送给系统(UD7)。机密LSI1将Enc(程序,程序共有密钥)变换成Enc(程序,程序固有密钥)。还有,再将变换过来的Enc(程序,程序固有密钥)解密为明文程序,进行HASH运算,并和刚才作为附加信息而接收的HASH值加以比较,而验证正当性。一会儿再详细说明这里的处理。
在已将共有密钥加密程序正常地变换为固有密钥加密程序的时候,拥有机密LSI1的系统就要求服务器3发送应用固有信息(UD8)。应用固有信息含有执行程序所必需的信息,若没有应用固有信息,机密LSI1就不能执行已更新了的程序。服务器3,管理表示应用固有信息的发送历史和LSI的ID之间的对应关系的第二表5,做到不将多个应用固有信息发送到同一个机密LSI中。因此,同一个机密LSI就不能将同一个程序更新多次。
当服务器3判断出可以发送应用固有信息的时候,它就将应用固有信息发向拥有机密LSI1的系统中(UD9),若由机密LSI1对它进行HASH运算验证了正当性以后,就结束程序的更新,通信就被切断(UD10)。
需提一下,本发明中的服务器3和拥有机密LSI1的系统之间的数据的收、发,并不限于上述流程。例如,服务器3不一定非要管理第二表,并使多个应用固有信息不发送到同一个机密LSI中。然而,若使同一个程序不多次发送到同一个机密LSI中,就能进一步提高程序的隐密性。
还有,附加信息、共有密钥信息以及共有密钥加密程序,并不一定要分别从服务器3发送给机密LSI,可以以将其中的一部分或者全部收集起来而制成的程序包的形式一次发送出去。
参考附图,详细说明是在机密LSI1中,是怎样将从共有密钥加密程序Enc(程序,程序共有密钥)变换为固有密钥加密程序Enc(程序,程序固有密钥)的。图12示出了存储在外部存储器100中和程序更新有关的程序的结构。
如图12所示,在外部存储器100中,存储了用固有密钥分别加密了的加密控制程序200(Enc(控制程序、程序固有密钥)及加密应用程序210(Enc(应用程序、程序固有密钥)。
加密控制程序200,包括应用起动部分201及程序更新控制部分205,程序更新控制部分205,包括共有密钥解密部分206、程序固有密钥加密处理部分207及程序更新成否判断部分208。
应用起动部分201接收来自存储在引导ROM60中的引导程序的指示,起动加密应用程序210。共有密钥解码部分206以从服务器3发来的共有密钥信息为基础,利用密钥生成/更新定序器30对程序共有密钥解密。程序固有密钥加密处理部分207利用密钥生成/更新定序器30将共有密钥加密程序Enc(程序、程序共有密钥)变换成固有密钥加密程序Enc(程序、程序固有密钥)。程序更新成否判断部分208将固有密钥加密程序Enc(程序、程序固有密钥)解密为明文程序,并通过HASH验证来判断程序更新的成功与否。当程序更新成功时,就消除旧程序,将程序存储地/大小等信息存储到机密存储器10中。
加密应用程序210,除拥有为通常的应用程序的通常操作部分211以外,还拥有为从服务器、存储媒体取得新的应用程序的程序取得部分212作应用程序。用存储在这样的外部存储器100中的程序进行程序的更新。
图13为显示含有将共有密钥加密程序变换为固有密钥加密程序的变换处理的程序更新处理的流程图。
在执行应用程序的过程中(SX1),若由于使用者的操作等外部原因而要求更新程序,系统就检测出它来,并为开始程序更新而由通常操作部分211来起动作为加密应用程序210的取得程序的程序取得部分212(SX2)。
程序取得部分212,和服务器3通信,去取得认证、共有密钥信息/程序(SX3)。若从服务器3取得共有密钥信息,共有密钥解密部分206就将程序共有密钥解密(SX4,SX5)。换句话说,将作为共有密钥密钥信息的被加密的程序共有密钥Enc(程序共有密钥,MK2)、Enc(MK2,CK)设定在秘密密钥运算处理部分20的加密密钥存储寄存器23中,再利用安装在程序生成/更新定序器30中的程序加密种对该已加密了的程序共有密钥解密,而得到程序共有密钥。所得到的程序共有密钥存储在秘密密钥运算处理部分20的程序共有密钥存储寄存器21中。
其次,程序固有密钥加密处理部分207,进行从共有密钥加密程序到固有密钥加密程序的变换。换句话说,通过外部主I/F50所拥有的程序处理部分51的加密用通过部分52将从服务器3发送来的、存储在外部存储器100中的程序Enc(程序,程序共有密钥)取到秘密密钥运算处理部分20中(SX6)。当用存储在程序共有密钥存储寄存器21的程序共有密钥将已取进来的程序解密后,再用存储在程序固有密钥存储寄存器22中的程序固有密钥将它加密,而得到程序Enc(程序,程序固有密钥)。需提一下,如上所述,在起动系统时程序固有密钥已经被解密,且存储在秘密密钥运算处理部分20的程序固有密钥存储寄存器22中。
最后,由程序更新成否判断部分208判断程序更新成功与否。换句话说,将Enc(程序,程序固有密钥)写入到外部存储器100中(SX8)以后,再利用外部主I/F50所拥有的程序处理部分51的程序解密用密码引擎53将Enc(程序,程序固有密钥)解密并取入(SX9),在明文状态下计算HASH值(SX10)。将计算得到的HASH值和由程序取得部分212和加密程序一起取得的HASH值比较一下,并根据该比较结果判断更新的成否(SX11)。当更新成功时,就将旧程序消去(SX12);而当更新失败时,就消去发送来的程序(SX13)。将程序存储地、大小等信息写入机密存储器10中(SX14),结束更新处理。
使用上述程序更新方法以后,若从服务器发送程序共有密钥加密程序,在机密LSI中,加密密钥就被从程序共有密钥变换为程序固有密钥并被安装到系统中。因此,即使从服务器到到机密LSI的通信通路被不正当地访问,程序共有密钥加密程序被盗走,也不能通过该程序让机密LSI工作。而且,更新结果是,在使用者所拥有的各个产品中,安装了由相互不同的固有密钥加密了的程序,而使隐密性提高。而且,万一密钥被破,受损害的产品的个数也是有限的,而可使安全性比现有技术下的高。
需提一下,在该实施例中,是从服务器取得共有密钥信息的。这是因为要在商品操作模式“11”的程序安装(SD1)的最后,消除已解密的程序共有密钥及机密存储器10上的共有密钥信息。在不消除它们的情况下,没有必要从服务器取得共有密钥信息,只要从机密存储器10中读出它并对它解密即可。
在该实施例中,由外部指示要开始更新程序,通常操作部分211起动程序取得部分212,取得程序之后再由引导程序指示各个处理。但本发明并不限于此。例如,若使其为由引导程序起动程序取得部分212的结构,还可进一步提高安全性。
并非一定要一个产品有一个固有的程序固有密钥,一个种类的产品或者是几个产品拥有一个程序固有密钥也是可以的。本案发明人的心愿就是当一个产品的密钥被识破的时候怎么减少所受到的损害。只要将拥有用同一个密钥加密了的程序的LSI的数量减少一些,效果就能充分地发挥出来。进一步说的话,就是即使程序固有密钥全都是共用的,或者即使通信通路遭到破坏,共有密钥加密程序被盗,也不能就那样让机密LSI工作,故仅将密钥从共有密钥改写成固有密钥,就能发挥出效果来。
综上所述,根据本发明,在用每一个LSI的固有密钥将程序再次加密并执行程序的高隐密性的机密LSI中,也是仅从服务器发送相同的程序就能更新程序。
即使从服务器到机密LSI的通信通路被不正当地访问,程序共有密钥加密程序被盗,在那一程序下也不能让机密LSI工作,故可提高隐密性。万一密钥被破,受损害的产品的个数也是有限的,而可使安全性比现在的高。
因为用明文状态的HASH值判断从服务器接收的共有密钥、程序的正当性,故与用在通信通路的加密状态下的HASH值判断从服务器接收的共有密钥、程序的正当性相比,较难篡改HASH值,而可提高安全性。
权利要求
1.一种程序更新方法,在拥有LSI和外部存储器的系统中,将存储在所述外部存储器中、由所述LSI固有的固有密钥加密了的固有密钥加密程序更新的方法,其特征在于包括所述系统接收从服务器发送的、由共有密钥加密了的共有密钥加密程序的第一步骤;所述系统通过将所接收的所述共有密钥加密程序解密而生成明文程序的第二步骤;以及所述系统用所述固有密钥将所述明文程序再次加密,并作为新的固有密钥加密程序存储在所述外部存储器中的第三步骤。
2.根据权利要求1所述的程序更新方法,其特征在于还包括接收从所述服务器发送的共有密钥信息的步骤,以及利用已接收的所述共有密钥信息生成明文共有密钥的步骤;在上述第二步骤中,使用所述明文共有密钥将所述共有密钥加密程序解密。
3.根据权利要求2所述的程序更新方法,其特征在于所述共有密钥信息,包含用明文第一中间密钥将所述明文共有密钥加密了的加密共有密钥和用明文第二中间密钥将所述明文第一中间密钥加密了的加密第一中间密钥。
4.根据权利要求1所述的程序更新方法,其特征在于所述LSI拥有存储了固有密钥信息的内部存储器;所述系统,在起动它时利用存储在所述内部存储器中的固有密钥信息生成明文固有密钥;在所述第三步骤中,使用所述明文固有密钥而将所述明文程序再次加密。
5.根据权利要求4所述的程序更新方法,其特征在于所述固有密钥信息,含有用明文第三中间密钥将所述明文固有密钥加密了的加密固有密钥和用明文第四中间密钥将所述明文第三中间密钥加密了的加密第二中间密钥。
6.根据权利要求4所述的程序更新方法,其特征在于将所生成的所述明文固有密钥存储在所述LSI内寄存器中,并在执行所述固有密钥加密程序时,用所述明文固有密钥将所述固有密钥加密程序解密成明文程序。
7.根据权利要求1所述的程序更新方法,其特征在于所述LSI拥有存储了引导程序的引导ROM;所述外部存储器存储着为在它和服务器之间接收、发送数据而用的取得程序;所述系统,由存储在所述外部存储器中的取得程序执行所述共有密钥加密程序,由存储在所述引导ROM中的引导程序控制接收后的更新处理。
8.根据权利要求1所述的程序更新方法,其特征在于包括接收从所述服务器发送的、所述明文程序的HASH值的步骤;在所述第二步骤中,用所接收的HASH值对已解密的明文程序进行HASH验证。
9.一种服务器,其为在拥有LSI的系统中更新程序而工作,其特征在于执行从所述系统接收所述LSI的ID和为更新对象的程序的识别信息的应用ID的第一步骤;参考表示应用ID和LSIID间之对应关系的第一表,决定是否将所述为更新对象的程序发送到所述系统的第二步骤;以及当决定在所述第二步骤发送的时候,就发送由共有密钥对所述为更新对象的程序加密而得到的共有密钥加密程序以及将生成所述共有密钥的共有密钥信息的第三步骤。
10.根据权利要求9所述的服务器,其特征在于执行从所述系统接收要求执行所述为更新对象的程序所必需的应用固有信息之信号的第四步骤;以及参考表示应用固有信息的发送历史和LSIID之对应关系的第二表,决定是否发送在所述第四步骤所要求的应用固有信息的第五步骤。
11.根据权利要求9所述的服务器,其特征在于所述共有密钥信息,含有用明文第一中间密钥将明文共有密钥加密了的加密共有密钥、和用明文第二中间密钥将所述明文第一中间密钥加密了的加密第一中间密钥。
全文摘要
本发明公开了一种程序更新方法及服务器,其目的在于在能够执行由固有密钥加密了的程序的LSI中,能边保持高安全性,边更新程序。拥有机密LSI1的系统,确立该系统与服务器3之间的通信通路(UD1),接收从服务器3发送来的用共有密钥加密了的共有密钥加密程序(UD6,UD7)。再将所接收的共有密钥加密程序解密而生成明文程序,再用固有密钥将明文程序再次加密,而作为新固有密钥加密程序存储到外部存储器中。
文档编号G06F21/00GK1505311SQ20031011499
公开日2004年6月16日 申请日期2003年11月14日 优先权日2002年11月15日
发明者藤原睦, 根本祐辅, 安井纯一, 前田卓治, 伊藤孝幸, 山田泰司, 井上信治, 一, 司, 幸, 治, 辅 申请人:松下电器产业株式会社