半导体集成电路及系统\n技术领域\n[0001] 本发明公开了一种内置有CPU(Central Processing Unit,中央处理器)且外置或内置了非易失性存储器的半导体集成电路及使用了所述半导体集成电路的系统的技术,特别是适用于可将保存在非易失性存储器中的程序及数据等内容进行加密保护的半导体集成电路及使用了所述半导体集成电路的系统。\n背景技术\n[0002] 在安装有闪速存储器(注册商标)等非易失性存储器以及将CPU安装在单芯片上的单片机及系统LSI(Large Scale Integrated circuit,大规模集成电路)等的半导体集成电路(IC:Integrated Circuit)中,在非易失性存储器中保存有程序及数据,并通过CPU执行该程序及使用该数据。保存程序及数据的非易失性存储器也可外置。在上述半导体器件受到攻击时,有时可读取存储器。虽然对通信协议进行加密便可隐匿程序和数据,但是如果将保存在半导体器件的非易失性存储器中的程序和数据的通信信息进行加密,在受到攻击时就无法防止存储器被直接读取。\n[0003] 例如,在专利文献1和专利文献2中公开了通过加密来隐匿通信协议的技术,在专利文献3中公开了通过将内置在微控制器中的存储器上的程序进行加密以进行保护的技术。\n[0004] 专利文献1中公开了如下的系统,即在本体和配件之间进行认证的系统中,在认证侧及被认证侧的每一个上都分别具有微控制器,并在两边对于相同的随机数使用相同的加密密钥进行加密,而且通过匹配结果来认证其是否是真正的付属品。通过采用根据其他的加密密钥及识别信息将用于将随机数进行加密的上述加密密钥进行加密的结构,便可使非法取得程序的仿制品无法正常运行,所以可将仅通过复制程序存储器的内容的仿制品排除在外。\n[0005] 专利文献2中公开了在与外部设备连接的半导体器件中,可充分保证写入数据时的安全性的半导体器件的技术。半导体器件具有可在该器件中生成固有值(唯一码)的唯一码生成单元,并将所述唯一码传送到外部装置上。所述唯一码例如是因制造偏差而在该器件个体中固有的值,即使完全复制了设计信息,其值也各不相同。例如,可使用物理无法克隆功能(PUF:Physically Unclonable Function)来生成唯一码。外部设备使用所接收到的唯一码并进行其他的加密处理后将在半导体器件进行数据写入时所用的加密密钥传送到半导体器件上。半导体器件通过自身的唯一码将接收到的加密后的加密密钥进行解密后获得加密密钥。并使用所述加密密钥将应隐匿的数据进行加密后进行数据写入。由于用于数据写入的加密密钥是通过不可复制的独特数据进行加密的,所以在外部设备和半导体器件之间可进行高安全性的通信。\n[0006] 专利文献3中公开了如下的微控制器,即由用于保存加密后的程序的存储器、将程序进行解密的解密块,以及执行解密后的程序的CPU构成的微控制器。用于将加密后的程序进行解密的解密信息保持在所述解密块内的寄存器上,且无法从CPU进行物理读取。\n[0007] 专利文献1日本特开2007-184735号公报\n[0008] 专利文献2日本特开2013-003431号公报\n[0009] 专利文献3日本特开2008-217579号公报\n发明内容\n[0010] 经过对上述专利文献1、2、3进行研究后,本案发明人发现还存在如下的新课题。\n[0011] 通过片上或不同芯片的方式与CPU连接的非易失性存储器上如果保存有应隐匿的程序或数据时,通过专利文献1中所公开的技术先行对执行程序进行认证,由于可防止对应隐匿的程序进行复制,所以成立的前提是需要确保认证侧的安全。在专利文献2所公开的技术中,由于半导体器件内应隐匿的程序已被加密,而且对此进行解密的加密密钥由外部设备供给,所以虽然无需在导体器件自身保持加密密钥,但是相反地,就需要确保该外部设备的安全性。\n[0012] 另一方面,专利文献3所公开的技术并不能满足通信安全方面的要求,但是可适用于单机版的微控制器。但为此还必须对硬件进行设计,以使即使从CPU也无法读取用于将加密后的程序进行解密的加密密钥等的解密信息。但是即使在硬件方面进行了如上所述的设计,在完全复制了该设计信息的仿制品中,也不可确保该隐匿的程序及数据都已非常安全地隐匿了。\n[0013] 下面说明解决上述课题的方法。本发明的所述内容及所述内容以外的目的和新特征在本说明书的描述及附图说明中写明。\n[0014] 根据本发明一实施方式,方法如下。\n[0015] 即,一种半导体集成电路或系统,由使用规定的加密密钥将加密后的值(程序及/或数据)进行保存的非易失性存储器、唯一码生成单元以及密码解密单元构成。其结构如下:唯一码生成单元生成因制造偏差而固有的唯一码。密码解密单元根据所生成的唯一码和修正参数计算加密密钥,并使用所计算的加密密钥将从非易失性存储器读取的加密后的值进行解密。修正参数即根据所述规定的加密密钥将制造所述半导体集成电路后从唯一码生成单元生成的初始唯一码和保存在非易失性存储器中的值进行加密时使用,预先在所述半导体集成电路或系统外部计算而得出的。\n[0016] 下面简单说明根据上述实施方式所获得的效果。\n[0017] 即,可提高所述半导体集成电路或系统的安全性。搭载在半导体集成电路中、或保存在系统所包括的非易失性存储器中的加密后的值(编程代码或数据等)即使因受到读取攻击而导致保存在存储器中的数据被读取出来,由于无法获取加密密钥而无法进行解密,从而可确保其隐匿性。另外,在高度模仿了半导体集成电路及系统设计的仿制品中,由于与唯一码生成单元所生成的唯一码与真正品不同,所以无法正确计算加密密钥而无法将密码进行解密,因而可确保加密后保存在非易失性存储器中的值的隐匿性。\n附图说明\n[0018] 图1所示的是第1实施方式中相关的ROM内容保护系统结构的框图。\n[0019] 图2所示的是第1实施方式中由包括内置了ROM的半导体集成电路(ICa)构成的相关的ROM内容保护系统的框图。\n[0020] 图3所示的是与实施方式相关的半导体集成电路结构例的(内置有ROM的微控制器)框图。\n[0021] 图4所示的是第1实施方式中由外置有ROM的半导体集成电路(ICa)构成的相关的ROM内容保护系统的框图。\n[0022] 图5所示的是实施方式中相关的半导体集成电路结构例(RAM版微控制器)的框图。\n[0023] 图6所示的是第2实施方式中相关的半导体集成电路结构的框图(内置ROM版)。\n[0024] 图7所示的是第2实施方式中相关的半导体集成电路结构的框图(RAM版)。\n[0025] 图8所示的是第3实施方式中相关的半导体集成电路(内置ROM版)及系统结构的框图。\n[0026] 图9所示的是第3实施方式中相关的半导体集成电路(RAM版)及系统结构的框图。\n[0027] 图10所示的是第4实施方式中相关的半导体集成电路及ROM内容保护系统结构的框图。\n[0028] 图11所示的是第4实施方式中相关的密匙数据库结构例的说明图。\n[0029] 图12所示的是第5实施方式中相关的半导体集成电路及ROM内容保护系统结构的框图。\n[0030] 图13所示的是第6实施方式中相关的半导体集成电路及ROM内容保护系统结构的框图。\n[0031] 图14所示的是第7实施方式中相关的半导体集成电路及ROM内容保护系统结构的框图。\n[0032] 图15所示的是第8实施方式中相关的半导体集成电路及ROM内容保护系统结构的框图。\n[0033] 图16所示的是第8实施方式中相关的密匙数据库结构例的说明图。\n[0034] 符号说明\n[0035] 1 保护对象IC\n[0036] 2 唯一码生成单元\n[0037] 3 密码处理单元\n[0038] 4 非易失性存储器\n[0039] 5 共通密匙生成单元\n[0040] 6 解密单元\n[0041] 7 加密单元\n[0042] 8 管理IC\n[0043] 9 密匙数据库\n[0044] 10 ROM内容保护系统\n[0045] 11 网络\n[0046] 12 网络接口\n[0047] 13 CPU\n[0048] 14 RAM\n[0049] 15 I/O\n[0050] 16 加密IP\n[0051] 17 总线\n[0052] 18 认证单元\n[0053] 19 接口(I/F)单元\n[0054] 20 离线处理\n[0055] 21 修正参数计算步骤\n[0056] 22 ROM内容(程序及/或数据)\n[0057] 23 加密步骤\n[0058] UC(a)、UC(b) 唯一码\n[0059] UC(a)_init 初始唯一码\n[0060] CK(1)、CK(2) 加密密钥(共通密匙)\n[0061] SK(1) 私人密钥\n[0062] PK(1) 公开密钥\n[0063] CD(1,a)、CD(1,b)、\n[0064] CD(2,a)、CD(2,b) 修正参数\n[0065] Chr 挑战数据\n[0066] Chr(CK(2)) 使用共通密匙CK(2)加密后的挑战数据\n[0067] Chr(SK(1)) 使用私人密钥SK(1)加密后的挑战数据\n[0068] D(CK(1)) 使用共通密匙CK(1)加密后的ROM内容\n[0069] (程序及/或数据)\n[0070] Exp 期望值\n[0071] match 匹配结果\n具体实施方式\n[0072] 1.实施方式概要\n[0073] 下面首先说明本发明所公开的具有代表性实施方式的概要。具有代表性的实施方式的概要说明中,文中括号内的参照图中的参照符号仅为构成要素的一例而已,并不代表全部的构成要素。\n[0074] 〔1〕<通过由唯一码和修正参数解密的加密密钥进行解密>本发明中所公开的具有代表性实施方式中相关的半导体集成电路(ICa,1)具有:使用规定的加密密钥(CK(1))可将加密后的值(D(CK(1)))进行保存的非易失性存储器(ROM:Read Only Memory,4)、唯一码生成单元(2)以及密码处理单元(3)。其结构如下所述。\n[0075] 所述唯一码生成单元可生成唯一码(UC(a))即因所述半导体集成电路的制造偏差而固有的多个位的数字值。\n[0076] 所述密码处理单元根据修正参数(CD(1,a))和所述唯一码计算所述加密密钥(CK(1)),并使用所计算的所述加密密钥,将从所述非易失性存储器读取的加密后的值(D(CK(1)))进行解密。\n[0077] 所述修正参数根据所述半导体集成电路制造后从所述唯一码生成单元生成的初始唯一码(UC(a)_init)和所述规定的加密密钥(CK(1)),预先在所述半导体集成电路外部(20)计算得出。\n[0078] 由此,便可提高所述半导体集成电路(ICa,1)的安全性。被加密并保存在半导体集成电路的非易失性存储器(ROM,4)中的值(编程代码或数据等)(D(CK(1)))在受到攻击时即使保存在存储器中的数据被读取,由于无法获取加密密钥(CK(1))而无法进行解密,从而可确保数据的隐匿性。另外,即使仿制品中很好地复制了半导体集成电路(ICa,1)的设计,由于在被复制的唯一码生成单元(2_x)中所生成的唯一码(UC(x))与真正品的唯一码(UC(a))不同,所以无法正确计算加密密钥。因此,无法将保存在非易失性存储器(ROM,4)中并被加密后的值(编程代码或数据等)(D(CK(1)))的密码进行解密,从而可确保其隐匿性。而且,即使修正参数(CD(1,a))从外部(20)至所述半导体集成电路(ICa,1)的通信路径被读取等,即使在知道了攻击者的情况下,同样也可确保被加密后保存在非易失性存储器(ROM,4)中的值(编程代码或数据等的ROM内容)(D(CK(1)))的隐匿性。只要无法生成真正品的唯一码(UC(a)),加密密钥(CK(1))将不可能被正确计算。\n[0079] 〔2〕<含有错误的唯一码>在上述〔1〕项中,相对于所述初始唯一码(UC(a)_init),即使从所述唯一码生成单元生成的所述唯一码(UC(a))中含有错误,所述密码处理单元也可根据所述修正参数(CD(1,a))和所述唯一码(UC(a))计算所述加密密钥(CK(1))。\n[0080] 由此,相对于初始唯一码(UC(a)_init),即使从唯一码生成单元生成的唯一码(UC(a))中含有错误,密码处理单元(3)也可修正该错误并计算正确的加密密钥(CK(1)),因而可使半导体集成电路(ICa,1)保持正常的功能。\n[0081] 〔3〕<将修正参数保持在同一芯片内>在上述的〔1〕和〔2〕项中,将所述修正参数(CD(1,a))保持在同一芯片内。\n[0082] 由此,便无需用于传送所述修正参数的数据通信。\n[0083] 〔4〕<经由网络取得修正参数>在〔1〕和〔2〕项中,所述半导体集成电路还具有网络接口(12),并经由所述网络接口可接收所述修正参数(CD(1,a))。\n[0084] 由此,即使经由网络(11)也可在确保安全性的状态下发送相当于加密密钥的信息CD(1,a))。\n[0085] 〔5〕<从一个唯一码生成多个加密密钥>在〔1〕和〔2〕项中,将所述修正参数作为第1修正参数(CD(1,a)),将所述加密密钥作为第1加密密钥(CK(1)),所述密码处理单元根据与所述第1修正参数不同的第2修正参数(CD(2,a))和所述唯一码,可计算与所述第1加密密钥不同的第2加密密钥(CK(2))。\n[0086] 由此,便可根据用途区分多个加密密钥,从而进一步提高所述半导体集成电路的安全性。\n[0087] 〔6〕<CPU(Central Processing Unit,中央处理器)>在〔1〕至〔5〕项的任一项中,所述半导体集成电路还具有CPU(13),所述非易失性存储器(4)的结构是:可由所述CPU执行的程序的编程代码使用所述规定的加密密钥,并保存加密后的值,所述CPU可执行由所述密码处理单元进行解密的程序。\n[0088] 由此,保存在非易失性存储器中的程序将被隐匿。\n[0089] 〔7〕<从CPU读取加密后的数据>在〔5〕项中,所述非易失性存储器(4)的结构是:\n可从所述CPU(13)进行存取的数据使用所述规定的加密密钥将加密后的值进行保存,所述CPU可读取由所述密码处理单元加密后的所述数据。\n[0090] 由此,CPU便可利用保存在非易失性存储器中的隐匿的数据。\n[0091] 〔8〕<从CPU向非易失性存储器写入数据>在〔6〕项中,所述密码处理单元还具有:\n使用所述计算的加密密钥将从所述CPU输出的数据进行加密的功能,所述CPU通过所述密码处理单元将写入所述非易失性存储器的数据进行加密后,可将其写入所述非易失性存储器。\n[0092] 由此,在使用所述半导体集成电路的过程中,即使所述非易失性存储器中有追加数据或应变更的数据,也可隐匿该数据。\n[0093] 〔9〕<ROM内容保护系统>本发明中所公开的具有代表性实施方式中相关的系统(ROM内容保护系统10)包括:具有唯一码生成单元(2)和密码处理单元(3)的半导体集成电路(ICa,1),以及使用规定的加密密钥(CK(1))将加密后的值(D(CK(1)))进行保存的非易失性存储器(ROM,4),其结构如下所述。\n[0094] 所述唯一码生成单元可生成唯一码(UC(a))即因所述半导体集成电路的制造偏差而固有的多个位的数字值。\n[0095] 所述密码处理单元根据修正参数(CD(1,a))和所述唯一码计算所述加密密钥(CK(1)),并使用所计算的所述加密密钥,将从所述非易失性存储器读取的加密后的值(D(CK(1)))进行解密。\n[0096] 所述修正参数是根据在制造所述半导体集成电路后从所述唯一码生成单元生成的初始唯一码(UC(a)_init)和所述规定的加密密钥(CK(1)),预先在所述系统的外部(20)计算得出的。\n[0097] 由此,可提高由所述半导体集成电路(ICa,1)构成的系统(ROM内容保护系统10)的安全性。加密后保存在半导体集成电路(ICa,1)中内置或外置的非易失性存储器(4)中的值(编程代码或数据等的ROM内容)(D(CK(1)))即使受到攻击而导致保存在存储器中的数据被读取,由于无法获取加密密钥(CK(1))而无法进行解密,从而可确保数据的隐匿性。另外,即使仿制品完全复制了半导体集成电路(ICa,1)的设计,由于从唯一码生成单元(2_x)生成的唯一码(UC(x))与真正品不同,所以因无法正确计算加密密钥(CK(1))而无法将密码进行解密,因此可确保保存在非易失性存储器(4)中的加密后的值的隐匿性。\n[0098] 〔10〕<含有错误数据的唯一码>在〔9〕项中,相对于所述初始唯一码(UC(a)_init),即使从所述唯一码生成单元生成的所述唯一码(UC(a))中含有错误数据,所述密码处理单元也可根据所述修正参数(CD(1,a))和所述唯一码计算所述加密密钥。\n[0099] 由此,即使从唯一码生成单元(2)生成的唯一码(UC(a))中含有错误数据,密码处理单元也可将其进行修正并计算正确的加密密钥(CK(1)),并在ROM内容保护系统(10)中确保半导体集成电路(ICa,1)保持正常的功能。而且,还可提高具有半导体集成电路(ICa,1)的ROM内容保护系统(10)整体的安全性。\n[0100] 〔11〕<密匙数据库>在〔9〕和〔10〕项中,还具有数据库(9),所述数据库(9)与所述半导体集成电路关联并保持所述修正参数(CD(1,a)),并将所述修正参数供给至所述半导体集成电路。\n[0101] 由此,通过不同的芯片来对保存加密后的值(D(CK(1)))的非易失性存储器(4)和为了生成其加密密钥的修正参数(CD(1,a))进行管理,便可提高安全性。\n[0102] 〔12〕<多个半导体集成电路和密匙数据库>在〔9〕和〔10〕项中,所述系统具有多个所述半导体集成电路和数据库(9)。\n[0103] 所述多个半导体集成电路(1_a,1_b)的每一个分别具有所述非易失性存储器(4_a,4_b)和所述唯一码生成单元、以及所述密码处理单元。\n[0104] 所述非易失性存储器中保存有使用分别与所述多个半导体集成电路的每一个关联的加密密钥(CK(1,a),CK(1,b))进行加密后的值(D(CK(1,a)),D(CK(1,b)))。\n[0105] 所述数据库分别与所述多个半导体集成电路的每一个关联,并保持多个所述修正参数,而且将所述修正参数供给至所关联的所述半导体集成电路。\n[0106] 所述修正参数(CD(1,a))根据初始唯一码(UC(a)_init)和所述加密密钥预先在所述系统外部计算得出并保存在所述数据库(9)中,其中,所述初始唯一码(UC(a)_init)在所关联的所述半导体集成电路制造后从所述唯一码生成单元生成的,所述加密密钥用于将保存在所述关联的所述半导体集成电路的所述非易失性存储器中的值进行加密。\n[0107] 所述非易失性存储器(4_a,4_b)可内置于所述多个半导体集成电路(1_a,1_b)的每一个中,也可外置。此时,所述多个半导体集成电路(1_a,1_b)的每一个都具有易失性存储器(14),且可从所述非易失性存储器(4_a,4_b)将保存在所述非易失性存储器(4_a,4_b)中的加密后的值(D(CK(1,a)),D(CK(1,b)))进行传送。\n[0108] 由此,便可构筑搭载有多个提高了安全性的半导体集成电路(1_a,1_b)的ROM内容保护系统(10)。该系统可为搭载了多个相同半导体集成电路的结构,也可为包含了不同种类的半导体集成电路的结构,还可为同时具有多个相同半导体集成电路和不同类型的半导体集成电路的结构。\n[0109] 〔13〕<外置ROM+RAM版LSI>在〔9〕和〔10〕项中,所述半导体集成电路还具有易失性存储器(RAM,14),还可将使用所述规定的加密密钥进行加密后的所述值(D(CK(1)))从所述非易失性存储器向所述易失性存储器传送。另外,所述密码处理单元可将从所述易失性存储器读取且加密后的所述值进行解密。\n[0110] 由此,即使在没内置有非易失性存储器的所谓RAM版的半导体集成电路(ICa,1)中,也可确保从非易失性存储器(4)向保存在内置有易失性存储器(RAM,14)的所述半导体集成电路(ICa,1)传送加密后的值(ROM内容)的秘匿性。\n[0111] 〔14〕<外置ROM+RAM版LSI的数据库>在〔13〕项中,还具有控制半导体集成电路(ICs,8),所述控制半导体集成电路(ICs,8)由与所述半导体集成电路关联并保持所述修正参数(CD(1,a))且将所述修正参数向所述半导体集成电路供给的数据库(9)、以及所述非易失性存储器(4)构成。\n[0112] 由此,在没内置有非易失性存储器的所谓RAM版的半导体集成电路(ICa,1)中,可抑制构成ROM内容保护系统(10)的部件数量的增加。\n[0113] 〔15〕<经由网络取得修正参数>在〔11〕或〔12〕项中,所述半导体集成电路和所述数据库经由网络(11)连接,并可经由所述网络将所述修正参数(CD(1,a))接收到所述半导体集成电路。\n[0114] 由此,便可在确保安全的状态下经由网络(11)发送相当于加密密钥的信息(CD(1,a))。\n[0115] 〔16〕<从一个唯一码生成多个加密密钥>在〔11〕或〔12〕项中,将用于保存在所述非易失性存储器中的值进行加密的所述加密密钥作为第1加密密钥(CK(1)),所述数据库与所述半导体集成电路关联且保持多个所述修正参数(CD(1,a),CD(2,a)),并将所述多个修正参数向所述半导体集成电路供给。\n[0116] 所述密码处理单元根据所供给的所述多个修正参数和所述唯一码计算所述第1加密密钥(CK(1))及其他的加密密钥(CK(2)),并使用计算的所述第1加密密钥(CK(1)),将从所述非易失性存储器读取的加密后的值进行解密。\n[0117] 由此,可根据用途区分多个加密密钥(CK(1),CK(2)),从而提高所述半导体集成电路及整个ROM内容保护系统(10)的安全性。\n[0118] 〔17〕<从一个唯一码生成认证用和解密用的加密密钥>在〔11〕或〔12〕项中,将用于保存在所述非易失性存储器中的值进行加密的所述加密密钥作为第1加密密钥(CK(1)),将与所述第1加密密钥关联的修正参数作为第1修正参数(CD(1,a)),所述系统还具有包括所述数据库和认证单元(18)的管理集成电路(8)。\n[0119] 所述管理集成电路将与所述半导体集成电路关联的所述第1修正参数和第2修正参数(CD(2,a))保持在所述数据库中。所述管理集成电路还将挑战数据(challenge data)(Chr)及挑战数据期望值(Exp)保持在所述认证单元中,并将所述第2修正参数和所述挑战数据供给所述半导体集成电路,其中,通过与第2修正参数关联的第2加密密钥(CK(2))将加密后的认证用的挑战数据作为挑战数据期望值(Exp)并被保持。\n[0120] 在所述半导体集成电路中,所述密码处理单元根据所供给的所述第2修正参数和所述唯一码生成所述第2加密密钥(CK(2)),并使用所述第2加密密钥将所供给的所述挑战数据进行加密(Chr(CK(2)))后返送回所述管理集成电路。\n[0121] 所述管理集成电路将所述加密后返送回来的所述挑战数据(Chr(CK(2)))与保持在所述认证单元中的所述挑战数据期望值(Exp)进行比较,匹配时将所述第1修正参数(CD(1,a))供给到所述半导体集成电路。\n[0122] 所述半导体集成电路根据所供给的所述第1修正参数(CD(1,a))和所述唯一码(UC(a))计算所述第1加密密钥(CK(1)),并通过所计算的所述第1加密密钥,将从所述非易失性存储器读取的加密后的值(D(CK(1)))进行解密。\n[0123] 由此,可将多个加密密钥中的1个(CK(2))用于进行认证,从而进一步提高所述半导体集成电路的安全性,也能提高整个ROM内容保护系统(10)的安全性。\n[0124] 〔18〕<从1个唯一码生成认证用和解密用的加密密钥(将修正参数保持在同一芯片内)>在〔11〕和〔12〕项中,将保存在所述非易失性存储器中的值进行加密的所述加密密钥作为第1加密密钥(CK(1)),并将与所述第1加密密钥关联的修正参数作为第1修正参数(CD(1,a)),所述系统还具有包括所述数据库和认证单元(18)的管理集成电路(8)。\n[0125] 所述管理集成电路将与所述半导体集成电路关联的所述第1修正参数(CD(1,a))和第2修正参数(CD(2,a))保持在所述数据库中。所述管理集成电路还通过与挑战数据(Chr)和所述第2修正参数关联的第2加密密钥(CK(2))得到加密后的挑战数据期望值(Exp)保持在所述认证单元中,并将所述挑战数据供给到所述半导体集成电路。\n[0126] 所述半导体集成电路保持所述第2修正参数(CD(2,a)),所述密码处理单元根据所述第2修正参数和所述唯一码生成所述第2加密密钥(CK(2)),并通过所述第2加密密钥将所供给的所述挑战数据进行加密(Chr(CK(2)))后返送到所述管理集成电路。\n[0127] 所述管理集成电路将加密后返送回来的所述挑战数据(Chr(CK(2)))与保持在所述认证单元中的所述挑战数据期望值(Exp)进行比较,匹配时,与所述第1修正参数(CD(1,a))一起返送到所述半导体集成电路。\n[0128] 所述半导体集成电路根据所供给的所述第1修正参数(CD(1,a))和所述唯一码(UC(a))计算所述第1加密密钥(CK(1)),并使用所计算的所述第1加密密钥,将从所述非易失性存储器读取的加密后的值(D(CK(1)))进行解密。\n[0129] 由此,可将多个加密密钥中的一个用于进行认证,从而可进一步提高所述半导体集成电路的安全性,也能提高整个ROM内容保护系统(10)的安全性。\n[0130] 〔19〕<从1个唯一码生成认证用和解密用的加密密钥(公开密钥认证方式)>在〔11〕和〔12〕项中,将保存在所述非易失性存储器中的值进行加密的所述加密密钥作为第1加密密钥(CK(1)),将与所述第1加密密钥关联的修正参数作为第1修正参数(CD(1,a)),所述系统还具有包括所述数据库和认证单元(18)的管理集成电路(8)。\n[0131] 所述管理集成电路将与所述半导体集成电路关联的所述第1修正参数、第2修正参数(CD(2,a))、挑战数据(Chr)及公开密钥(PK(1))保持在所述数据库中,并将所述第2修正参数和所述挑战数据供给到所述半导体集成电路。\n[0132] 所述半导体集成电路之,所述密码处理单元根据所述第2修正参数和所述唯一码生成所述第2加密密钥(CK(2)),使用所述第2加密密钥将所供给的所述挑战数据进行加密后返送到所述管理集成电路。\n[0133] 所述管理集成电路通过所述公开密钥将所述加密后并返送回来的所述挑战数据(Chr(CK(2)))进行解密,并将解密后的值与所述挑战数据进行比较,匹配时将所述第1修正参数供给所述半导体集成电路。\n[0134] 所述半导体集成电路根据所供给的所述第1修正参数和所述唯一码计算所述第1加密密钥,并将通过计算的所述第1加密密钥将从所述非易失性存储器读取的加密后的值进行解密。\n[0135] 由此,可将多个加密密钥中的一个(CK(2))用于进行认证,从而可进一步提高所述半导体集成电路的安全性,也能提高整个ROM内容保护系统(10)的安全性。\n[0136] 〔20〕<在半导体集成电路(ICa,1)中复制再生私人密钥>在〔19〕项中,所述第2加密密钥为与所述公开密钥关联的所述半导体集成电路的私人密钥(SK(1))。\n[0137] 由此,便可适用于公开密钥认证系统。\n[0138] 2.实施方式的详细内容下面更详细地说明实施方式的内容。\n[0139] 〔第1实施方式〕\n[0140] <从修正参数和唯一码生成加密密钥的IC>\n[0141] 下面说明本专利说明书中所公开的与具有代表性实施方式相关的ROM内容保护系统。第1实施方式的说明部分所涉及的内容与其他实施方式共通并可也可适用于其他实施方式。\n[0142] 图1所示的是第1实施方式中相关的ROM内容保护系统10结构的框图。ROM内容保护系统10还具有由唯一码生成单元2和密码处理单元3构成的半导体集成电路(ICa,1)、以及非易失性存储器(ROM)4。ROM4可为闪速存储器(注册商标)等可以电改写的非易失性存储器,也可为掩模ROM等不可改写的存储器。ROM4中保存有通过规定的加密密钥CK(1)加密后的程序及/或数据。不管是程序还是数据,都将之统称为加密后的值D(CK(1))。加密密钥CK(1)如为共通密匙,保存在ROM4中时应被隐匿的内容22即程序及/或数据在离线处理20中,经过使用共通密匙CK(1)进行加密处理的步骤23进行加密后,并被写入ROM4。\n[0143] 唯一码生成单元2可生成因ICa1的制造偏差而固有的多个位的数字值即唯一码UC(a)。虽无特别限制,但唯一码生成单元2可通过使用物理不可克隆技术(PUF)生成唯一码UC(a)。例如,在SRAM(Static Random Access Memory,静态随机存储器)中,接通电源时存储器单元的状态即使与设计参数及制造参数完全相同,也可将之作为因在制造时每个产品的制造偏差而固有的数字值即唯一码UC(a)。这种方式被称为SRAM-PUF。此外,还有利用逻辑门电路的信号传播时延、以及利用模拟元件值等。唯一码生成单元2中,无论使用何种PUF均可。\n[0144] 密码处理单元3如由共通密匙生成单元5和解密单元6构成。共通密匙生成单元5和解密单元6无需由不同的硬件模块构成,也可通过一连串的软件处理中的共通密匙生成步骤和解密步骤来实现,也可通过硬件和软件的协调动作所执行的处理中实现。密码处理单元3根据唯一码UC(a)及后述的修正参数CD(1,a)计算共通密匙CK(1),并可通过所计算的共通密匙CK(1)将从ROM4读取的加密后的值D(CK(1))进行解密。\n[0145] 修正参数CD(1,a)在外部的离线处理20的修正参数计算步骤21中,根据ICa1制造后从唯一码生成单元2生成的初始唯一码UC(a)_init和共通密匙CK(1),预先计算得出。共通密匙CK(1)与将保持在ROM4中时应隐匿的内容22进行加密的加密步骤23所用的共通密匙CK(1)为相同值。修正参数计算步骤21的算法与共通密匙生成单元5的算法可参照修正参数CD(1,a)和唯一码UC(a),只需满足共通密匙CK(1)的算法即可。此时,离线处理20是指通过不与ICa连接的安全设备执行的处理,由此便可使加密密钥CK(1)及加密步骤23、以及修正参数计算步骤21的内容及其输入输出数据、中间数据等安全地进行隐匿。\n[0146] ROM4可内置于半导体集成电路(ICa)1中,也可外置。\n[0147] 图2所示的是第1实施方式中由包括内置了ROM4的半导体集成电路(ICa)1构成的相关的ROM内容保护系统10的框图。内置有ROM4时可将从ROM4读取的值(编程代码或数据等的ROM内容)D(CK(1))直接或经过总线桥接等传送电路传送到解密单元6并进行解密。图2中的其他结构与图1相同,在此不再进行重复说明。\n[0148] 图3所示的是与实施方式相关的半导体集成电路(ICa)1结构例(内置有ROM的微控制器)的框图。为安装了具有CPU13的微控制器的一例。详细内容将在后详述。内置有通过CPU13执行的程序以及保存该程序所使用的数据的非易失性存储器ROM4。RAM14为易失性存储器,暂时保持程序的中间数据等。\n[0149] 图4所示的是第1实施方式中由外置有ROM的半导体集成电路(ICa)构成的相关的ROM内容保护系统的框图。ROM4为外置时,从ROM4读取的值(编程代码或数据等的ROM内容)D(CK(1))暂时被传送至内置于半导体集成电路(ICa)1中的RAM14。所述传送在接通电源时如系统启动顺序(boot-up sequence)等方式执行。之后,在存取RAM14时,从RAM14读取的值(编程代码或数据等的ROM内容)D(CK(1))被供给至解密单元6并被解密。图4中的其他结构与图1相同,所以在此不再进行重复说明。\n[0150] 此时,半导体集成电路(ICa)1可使用不将ROM4内置于片上的所谓的RAM版的微控制器。图5所示的是实施方式中相关的半导体集成电路结构例(RAM版微控制器)的框图。详细内容将如后文所述,其与图3所示的微控制器的不同点在于ROM4不被内置于片上。通过接通电源时的系统启动顺序等来读取外置的ROM4,并在传送至片上的RAM14后执行程序等。\n[0151] 如上所述,可提高所述半导体集成电路(ICa)1的安全性。保存在内置于ICa1中或外置的ROM4中的加密后的值(编程代码或数据等)D(CK(1))即使遭受攻击而导致保存在存储器中的数据被读取,由于其无法获知共通密匙CK(1)而无法被解密,从而可确保数据的隐匿性。另外,即使在完全复制了设计的仿制品中,也可确保保存在非易失性存储器中被加密的值的隐匿性。在完全复制了ICa1的设计的仿制品IC中,从所述仿制IC的唯一码生成单元\n2_x所生成的唯一码UC(x)与真正品的唯一码UC(a)并不相同。由于唯一码UC为因制造偏差而固有的多个位的数字值,所以即使仿制IC与真正的IC为完全相同的设计,由于不同的制造偏差,所生成的唯一码也不相同。这是由于PUF的“物理不可克隆技术”的性质决定的。仿制IC中,ROM4中保存有与复制源的IC相同的、通过真正的共通密匙CK(1)加密后的值D(CK(1))。从唯一码生成单元2_x生成的唯一码UC(x)与真正品并不相同。因此,由于从共通密匙生成单元5_x生成的共通密匙也与真正的共通密匙CK(1)不同,所以无法对D(CK(1))进行解密。如上所述,可提高半导体集成电路(ICa)1的安全性。\n[0152] <唯一码中具有错误数据时>\n[0153] 第1实施方式中提高ICa1的安全性的原理在于:不能从外部读取加密的共通密匙CK(1),以及通过使用唯一码UC(a)来生成共通密匙CK(1)而在对IC进行复制时不会生成相同的值。另一方面,为了对应隐匿的值D(CK(1))进行正确地解密,就必须生成与脱机加密时所用的共通密匙CK(1)相同的共通密匙CK(1)。\n[0154] 但是,从唯一码生成单元2生成的唯一码UC(a)因ICa1的电源电压、温度、经过时间的变化等因素,也有可能发生变化。这是由于唯一码生成单元2在利用PUF时,PUF利用了物理的参数,所以还取决于其运行环境等。因此,从唯一码生成单元2生成的唯一码UC(a)与制造后的初始唯一码UC(a)_init并非总是完全相同,相对于初始唯一码UC(a)_init,有时也含有错误。\n[0155] 因此,相对于初始唯一码UC(a)_init来说,即使在从唯一码生成单元2生成的唯一码UC(a)中含有错误数据,密码处理单元3也可根据修正参数CD(1,a)和唯一码UC(a)计算共通密匙CK(1)。\n[0156] 由此,相对于初始唯一码UC(a)_init来说,即使在从唯一码生成单元2生成的唯一码UC(a)中含有错误数据,密码处理单元3也可修正该错误数据并计算正确的共通密匙CK(1),由此可使半导体集成电路(ICa)1保持正常的功能。\n[0157] 修正参数计算步骤21的算法与共通密匙生成单元5的算法也可参照修正参数CD(1,a)和唯一码UC(a),只需满足共通密匙CK(1)的算法即可。此时,相对于初始唯一码UC(a)_init,即使唯一码UC(a)中含有错误数据,虽无特别限制,为了生成相同的共通密匙CK(1),也可利用错误修正符号。此时的错误修正符号是指,如通过汉明码(Hamming Code)及BCH码等,将结合了n位的数据和m位的冗长位的n+m位的代码设置为可修正k位以内的错误的结构。如果将n位的数据作为唯一码UC(a),将m位的冗长位作为修正参数CD(1,a),则结合了这两个位的n+m位的符号中含有可修正k位以内的错误。可将修正了错误后的n位作为共通密匙CK(1),也可将n+m位的整个符号作为共通密匙CK(1),并根据从n+m位的符号中的某个规则,生成适当位数的数据并作为共通密匙CK(1)。\n[0158] 相当于错误修正能力的位数k根据所采用的错误修正符号的修正算法,可调整源数据的位数n和所结合的冗长位的位数m进行调整。只需根据唯一码UC(a)中所含有的错误的位数的实际状态决定即可。唯一码UC(a)和修正参数CD(1,a)的每一位的位数无需与上述错误修正符号的数据n位和冗长位m位关联。\n[0159] <半导体集成电路(ICa)1的安装形态>\n[0160] 此外,半导体集成电路(ICa)1还具有CPU,如可作为微控制器使用。\n[0161] 图3和图5所示的是实施方式中相关的半导体集成电路(ICa)1的结构例的框图。图\n3所示的是将ROM4内置于片上的所谓内置有ROM的微控制器,图5所示的是不将ROM4内置于片上的所谓RAM版的微控制器。\n[0162] 图3所示的内置有ROM的微控制器具有:CPU13、RAM14、I/O15、唯一码生成单元2、加密IP16及ROM4,并经由总线17相互连接。虽无特别限制,ICa1例如通过熟知的CMOS(Complementary Metal-Oxide-Semiconductor field effect transistor,互补金属氧化物半导体)LSI的制造技术,形成于硅等单一半导体基板上。\n[0163] 唯一码生成单元2为生成上述的器件固有的数字值的设备。所述唯一码生成设备无需其他构成要素。例如,为上述的SRAM-PUF时,也可使用RAM14一部分的结构。\n[0164] 使用所述规定的加密密钥即共通密匙CK(1)将可从CPU13进行存取的程序或数据作为加密后的值保存在ROM4中。加密IP16生成从唯一码生成单元2供给的唯一码UC(a)、以及从修正参数CD(1,a)生成共通密匙CK(1),并将从ROM4读取的值D(CK(1))进行解密后供给到CPU13。如果从ROM4所读取的值D(CK(1))为程序,CPU13取得解密后的编程代码并执行,如为数据则将之用于运算处理等。\n[0165] 图5所示的RAM版的微控制器也具有:CPU13、RAM14、I/O15、唯一码生成单元2、以及加密IP16,并经由总线17相互连接,并未内置有ROM4。虽无特别限制,RAM版的微控制器例如可通过使用熟知的CMOSLSI的制造技术,形成于硅等单一半导体衬底上,由于无需形成非易失性存储器的工序,所以制造成本比内置ROM版更低,而且,每单位芯片面积的缺陷密度低而可提高成品率,因此可降低制造的单价。\n[0166] 一般的RAM版的微控制器中,将应执行程序的编程代码及程序所利用的数据事先保存在外置的ROM中,并通过接通电源后的系统启动顺序等,将之传送到片上的RAM14后,CPU13对RAM14存取并执行。为了使CPU13可对外置的存储器进行存取,则需比片上存储器更多的存期周期,所以运行速度将会受到限制。\n[0167] 本实施方式中,使用所述规定的加密密钥即共通密匙CK(1)将可从CPU13进行存取的程序及数据作为加密后的值保存在外置ROM中。通过上述的系统启动顺序等预先从外置的ROM将加密后的值D(CK(1))传送到RAM14。如上所述,加密IP16生成从唯一码生成单元2供给的唯一码UC(a)以及从修正参数CD(1,a)生成共通密匙CK(1)。使用由加密IP16生成的共通密匙CK(1)将通过CPU13对RAM14进行存取而读取的值D(CK(1))进行解密,并供给到CPU13。所读取的值D(CK(1))如为程序,CPU13取得解密后的编程代码并执行,如为数据则将之用于运算处理等。\n[0168] 如上所述,CPU13可利用保存在非易失性存储器(ROM4)中并隐匿的数据。\n[0169] <从CPU向非易失性存储器写入数据>\n[0170] ICa1还具有加上了加密IP16的加密单元。包括有加密IP16中的密码处理单元3还具有通过所生成的共通密匙CK(1)将从CPU13输出的数据进行加密的功能。CPU13通过密码处理单元3将写入ROM4的数据进行加密后再写入ROM4。此时,ROM4为可电改写的存储器。\n[0171] 由此,在ICa1使用过程中,即使欲向ROM4中追加写入数据或改写数据时,也可隐匿该数据。\n[0172] 如上所述的实施方式中,以通过加密IP16来执行密码处理单元3的功能为例进行了说明,但也可通过CPU13的软件来执行密码处理单元3的功能。此时,既可采用不具备加密IP16的结构,也可采用具有用于对部分密码运算处理进行加速的加速器的结构。另外,可通过任何方法将修正参数CD(1,a)传送到共通密匙生成单元5。例如,可将修正参数保持在与ICa1同一芯片内并供给,也可从ICa1的外部供给。\n[0173] 〔第2实施方式〕\n[0174] <片上具有密匙数据库的IC>\n[0175] 图6所示的是第2实施方式中相关的半导体集成电路(ICa)1结构的框图(内置ROM版)。与图2所示的第1实施方式不同点是ICa1为具有密匙数据库9的结构。通过离线处理20将计算的修正参数CD(1,a)预先保存在密匙数据库9中,并将修正参数CD(1,a)保持在同一芯片内。对于与图2相同的部分的结构,在此不再进行重复说明。\n[0176] 密匙数据库9如为ROM4内的规定的区域,并预先在该区域保存修正参数CD(1,a),由此便可通过接通电源处理、启动处理、复位处理等初始顺序读入共通密匙生成单元5。另外,还具备除了ROM4以外的非易失性存储器,也可将修正参数CD(1,a)保持在ROM4以外的非易失性存储器中。\n[0177] 另外,也可采取不将ROM4内置于ICa1中而是外置的方式构成ROM内容保护系统。图\n7所示的是第2实施方式中相关的半导体集成电路结构的框图(RAM版)。与图4所示的第1实施方式的不同点在于ICa1具有密匙数据库9。通过离线处理20计算的修正参数CD(1,a)被预先保存在外置的ROM4的密匙数据库9中。再通过系统启动顺序等将密匙数据库9传送到片上的RAM14后,将修正参数CD(1,a)保持在同一芯片内。对于与图2、图4中相同的部分的结构,在此不再进行重复说明。\n[0178] 由此,便无需进行将修正参数CD(1,a)从芯片外传送的数据通信。由于无需从芯片或系统外部传送,所以可降低攻击者对传送过程中的值进行观测并重复进行攻击探知数据的风险,从而降低修正参数CD(1,a)的值被泄露的风险,因而可提高所述半导体集成电路(ICa)1及该ROM内容保护系统的安全性。\n[0179] 〔第3实施方式〕\n[0180] (ICa)1及ICa构成的ROM内容保护系统10构成的框图(内置ROM版)。与图3所示的第\n2实施方式的不同点是ICa1不在片上具有密匙数据库9,而是将具有密匙数据库9的管理IC(ICs)8外置,并向ICa1供给修正参数CD(1,a)。通过离线处理20(图中未示出)计算的修正参数CD(1,a)预先保存并保持在ICs8的密匙数据库9中。对于图1、图2、图6中的同样部分的结构,在此不再进行重复说明。\n[0181] 图9所示的是第3实施方式中相关的半导体集成电路(RAM版)及系统结构的框图。\n如图4、图5所示,ICa1为没内置有ROM4的半导体集成电路。外置的管理IC(ICs)8中内置有ROM4。ROM4中保存有加密后的值D(CK(1)),如通过系统启动顺序等,在接通电源后立即传送到ICa1内的RAM14上。与图8的情况一样,通过离线处理20(图中未示出)所计算的修正参数CD(1,a)预先保存在ICs8的密匙数据库9中并保持,再从管理IC(ICs)8供给到ICa1上。此外,对于与图1、图4、图7同样的部分的结构不再进行重复说明。以上就ROM4内置于管理IC(ICs)\n8内的情况进行了说明,但是ROM4也可外置于ICs8之外。\n[0182] 如上所述,由于对保存在ROM4中的加密后的值D(CK(1))、以及生成用于将该密码进行解密的加密密钥即共通密匙CK(1)的修正参数CD(1,a)是通过不同的芯片进行管理的,所以可提高安全性。\n[0183] 另外,管理IC(ICs)8与离线处理20有所不同,其结构为不将加密密钥CK(1)、加密步骤23、以及修正参数计算步骤21的内容和输入输出数据、中间数据等保持在内部,而仅保持其结果即密匙数据库9。由此,管理IC(ICs)8即使被用在不安全的环境中,也能提高整个ROM内容保护系统10的安全性。\n[0184] 〔第4实施方式〕\n[0185] <多个保护对象IC(ICa、ICb)和1个管理IC(ICs)>\n[0186] 图10所示的是第4实施方式中相关的半导体集成电路(ICa、ICb)1_a,1_b及由ICa和ICb构成的ROM内容保护系统10的结构的框图。与图8所示的第3实施方式的不同点在于:\n相对于1个管理IC(ICs)8,除了图8所示的ICa(1_a)以外,还与同样结构的ICb(1_b)连接。图\n10中仅示出了2个保护对象IC(ICa、ICb),其数量也可任意决定。\n[0187] 多个半导体集成电路(ICa、ICb)1_a,1_b的每一个都分别由非易失性存储器(ROM)\n4_a,4_b、唯一码生成单元2_a、2_b、以及密码处理单元3_a、3_b构成。\n[0188] 非易失性存储器(ROM)4_a和4_b上分别保存有使用与ICa(1_a)和ICb(1_b)关联的共通密匙CK(1,a)和CK(1,b)进行加密后的值D(CK(1,a))和D(CK(1,b))。ICa(1_a)和ICb(1_b)中可分别使用不同的共通密匙(CK(1,a)≠CK(1,b))进行加密,也可使用相同的共通密匙CK(1)(=CK(1,a)=CK(1,b))进行加密。图5中示出了使用相同的共通密匙CK(1)进行加密的例子。由于无需按单个产品改变写入ROM4的代码,所以可进行大批量生产。另一方面,如使各个产品的代码都不相同,便可提高产品的安全性。\n[0189] 管理IC(ICs)8中的密匙数据库9分别与多个半导体集成电路(ICa、ICb)1_a,1_b关联,并保持多个修正参数CD(1,a)和CD(1,b)并供给到与修正参数关联的半导体集成电路上。修正参数CD(1,a)被供给到ICa(1_a),并通过共通密匙生成单元5_a参照唯一码UC(a)后生成共通密匙CK(1)。解密单元6_a通过所生成的共通密匙CK(1)将保存在ROM4_a中并被加密的数据D(CK(1))进行解密。另一方面,修正参数CD(1,b)被供给至ICb(1_b),通过共通密匙生成单元5_b并参照唯一码UC(b)以生成共通密匙CK(1)。解密单元6_b通过所生成的共通密匙CK(1)将保存在ROM4_b中并被加密后的数据D(CK(1))进行解密。\n[0190] 图11所示的是第4实施方式中相关的管理IC(ICs)8中的密匙数据库结构例的说明图。密匙数据库9为按多个半导体集成电路ICa、ICb、…的每一个将与多个共通密匙CK(1)、CK(2)、…的每一个关联的多个修正参数进行保存的数据库。\n[0191] 修正参数CD(1,a)为根据所关联的ICa制造后从唯一码生成单元2_a生成的初始唯一码UC(a)_init和共通密匙CK(1)预先在系统外部计算得出的修正参数。修正参数CD(2,a)也同样,是根据关联的ICa的初始唯一码UC(a)_init,用于生成其他的共通密匙CK(2)。其他的半导体集成电路ICb等也同样,预先在系统外部计算所关联的修正参数CD(1,b)、CD(2,b)并将其保存在密匙数据库9中。图10所示的是将通过相同的共通密匙CK(1)进行加密后的值D(CK(1))保存在ROM4_a及ROM4_b中的示例,所以并未使用CD(2,a)和CD(2,b)。使用不同的共通密匙CK(1)和CK(2)对ROM4_a和ROM4_b的程序及数据进行加密时,只需将CD(1,a)供给ICa,将CD(2,b)供给ICb即可。\n[0192] 另外,修正参数CD的供给方法可任意决定。例如,管理IC(ICs)8中具有分别与ICa、ICb、…等连接的布线,并通过并行通信或串行通信供给修正参数CD(1,a)、CD(1,b)、…。另外,也可设置共同的总线或通信路径后通过使用了识别代码等通信方式,逐个传送修正参数。\n[0193] 由此,便可构筑搭载了多个已提高了安全性能的半导体集成电路(1_a,1_b)的ROM内容保护系统10。该系统可为搭载多个相同的半导体集成电路的结构,也可为搭载了不同类型的半导体集成电路的结构,以及为同时搭载有多个相同的半导体集成电路和不同的半导体集成电路的结构。\n[0194] 图10中示出了分别内置了ROM4_a,4_b的半导体集成电路(ICa、ICb)1_a,1_b,但是并不意味着必须将ROM4_a,4_b内置,也可与图4、图7一样外置。另外,无需分别将ROM外置,也可将所有的内容保存在一个ROM后内置在ICs8中。此时,通过系统启动顺序等依次将加密后的值D(CK(1,a))和D(CK(1,b))传送到各半导体集成电路(ICa、ICb)1_a,1_b上。\n[0195] 〔第5实施方式〕\n[0196] <经由网络供给修正参数>\n[0197] 图12所示的是第5实施方式中由相关的半导体集成电路(ICa)1及ICa构成的ROM内容保护系统10结构的框图。与图8所示的第3实施方式的不同点是ICa1具有网络接口12并经由网络11与管理IC(ICs)8连接。ICa1可经由网络11接收保存在ICs8的密匙数据库9中的修正参数CD(1,a)。对于与图8相同的部分的结构在此不再进行重复说明。\n[0198] 网络11可为公众网、局域网(LAN:Local Area Network)、也可为具有独特通信协议的简单网络,通信路径可为如图8所示的1:1的结构,也可为如图10所示的n:1的结构。\n[0199] 由此,即使经由网络11,也可在确保安全的状态下,将相当于加密密钥的信息即修正参数CD(1,a)发送到保护对象的IC上。由于经由网络11传送的信息并非共通密匙CK(1),而是修正参数CD(1,a),所以即使泄露了修正参数CD(1,a),只要唯一码UC(a)没被泄露,便不可能生成共通密匙CK(1)。因此,即使经由网络11来传送修正参数CD(1,a),也可确保安全性。\n[0200] 图12示出了内置了ROM4的半导体集成电路(ICa)1,但是并不意味着必须将ROM4内置,也可与图4、图7等一样外置。此时,加密后的值D(CK(1,a))如通过接通电源时的系统启动顺序等进行传送。另外,加密后的值D(CK(1,a))也可经由网络11从ICs8下载到ICa1。\n[0201] 〔第6实施方式〕\n[0202] <用于ROM保护用密码及认证用密码等的多个修正参数>\n[0203] 如图11所示,密匙数据库9可保持用于按保护对象的IC生成多个共通密匙的多个修正参数。多个共通密匙可按用途区别使用过。例如,可使用共通密匙CK(1)对程序进行加密,使用其他的共通密匙CK(2)对数据进行加密,而且还用其他的共通密匙CK(3)对通信进行加密。另外,在多个保护对象的IC之间,可使用共通密匙,也可使用相同的共通密匙将相互间的通信进行加密。在后文的第6实施方式、第7实施方式及第8实施方式中共列举3个例子,进行更详细的说明。\n[0204] <从一个唯一码生成多个加密密钥>\n[0205] 将用于保存在搭载于ICa1的非易失性存储器(ROM)4中的值进行加密的加密密钥作为第1共通密匙CK(1),密匙数据库9与ICa1关联并保持多个修正参数CD(1,a)、CD(2,a)、…,并将所述修正参数供给到ICa1上。ICa1的密码处理单元3根据所供给的多个修正参数CD(1,a)、CD(2,a)、…和从唯一码生成单元2生成的唯一码UC(a),计算第1共通密匙CK(1)及其他共通密匙CK(2)。密码处理单元3通过在解密单元6中计算的第1共通密匙CK(1)可将从ROM4读取的加密后的值D(CK(1))进行解密。\n[0206] 由此,可根据用途区分使用多个加密密钥(CK(1)、CK(2)、…),并可进一步提高所述半导体集成电路的安全性,从而提高整个系统的安全性。\n[0207] <从一个唯一码生成认证用和解密用的加密密钥>\n[0208] 图13所示的是第6实施方式中由相关的半导体集成电路(ICa)1_a及ICa构成的ROM内容保护系统10结构的框图。从一个唯一码UC(a)生成2个加密密钥CK(1)和CK(2),一个共通密匙CK(1)用于将保存在ROM4中并被加密后的值D(CK(1))进行解密,另一个共通密匙CK(2)用于进行认证。ICa(1_a)与管理IC(ICs)8连接,还与其他的保护对象IC(ICz)1_z连接,且由非易失性存储器(ROM)4、唯一码生成单元2、密码处理单元3以及接口部19构成。密码处理单元3中具有共通密匙生成单元5和解密单元6_1及6_2、加密单元7_1及7_2。ROM4中保存有通过共通密匙CK(1)进行加密后的程序及/或数据D(CK(1))。图13中的解密单元6_2和加密单元7_2以一个块示出,且经由接口单元19与其他的保护对象IC(ICz)1_z连接。除了密匙数据库9外,管理IC(ICs)8还具有认证单元18。管理IC(ICs)8的认证单元18与ICa(1_a)的加密单元7_1连接。\n[0209] 下面说明由ICa(1_a)及ICa构成的系统的运行。ICs8将与共通密匙CK(1)关联的修正参数CD(1,a)、与共通密匙CK(2)关联的修正参数CD(2,a)保持在密匙数据库9中。而且,通过共通密匙CK(2)将加密后的用于认证的挑战数据Chr的Chr(CK(2))作为期望值Exp并保持。挑战数据Chr例如可用随机数等的值。可依次或随机切换多个挑战数据Chr_1~Chr_x及与其关联的期望值Exp_1~Exp_x。如上所述,通过切换多个候补数据,便可提高安全性。\n[0210] 首先,ICs8从密匙数据库9将修正参数CD(2,a)以及从认证单元18将挑战数据Chr向ICa(1_a)发送。ICa(1_a)通过共通密匙生成单元5并参照从唯一码生成单元2生成的唯一码UC(a),通过所接收到的修正参数CD(2,a)生成共通密匙CK(2)并供给至加密单元7_1。加密单元7_1使用共通密匙CK(2)将从ICs8接收到的挑战数据Chr进行加密后(Chr(CK(2)))返送至ICs8。ICs8通过认证单元18将加密后并返送回来的挑战数据Chr(CK(2))与挑战数据期望值Exp进行比较,匹配时将ICa作为真正的保护对象IC并进行认证。\n[0211] 将ICa认证为真正的保护对象IC后,管理IC(ICs)8将修正参数CD(1,a)供给至ICa。\n例如,认证单元18将加密后返送回来的挑战数据Chr(CK(2))与挑战数据期望值Exp进行比较,匹配时从密匙数据库9输出匹配结果match,并根据该结果,从密匙数据库9将修正参数CD(1,a)供给至ICa。ICa(1_a)通过共通密匙生成单元5参照从唯一码生成单元2生成的唯一码UC(a),使用所接收到的修正参数CD(1,a)生成共通密匙CK(1),并供给至解密单元6_1。解密单元6_1与第1实施方式或第4实施方式等一样,可使用所计算的共通密匙CK(1)将从ROM4读取的加密后的值D(CK(1))进行解密。\n[0212] 还可将所计算的共通密匙CK(1)供给至解密单元6_2和加密单元7_2。并可经由接口单元19在与拥有相同的共通密匙CK(1)的其他保护对象IC即ICz(1_z)之间进行加密通信。本实施方式中,以使用与ROM4的保护内容相同的加密密钥(共通密匙CK(1))进行加密为例对与ICz(1_z)之间的加密通信进行了说明,但也可使用其他的加密密钥(共通密匙CK(3)等)。\n[0213] 也可将解密单元6_1、6_2以及加密单元7_1、7_2统合成一个加密模块后进行安装。\n通过时分割按顺序执行解密单元6_1、6_2及加密单元7_1、7_2的解密及加密运算,便可使电路规模比设置为并联时的规模小。\n[0214] 由此,可将多个加密密钥中的1个(CK(2))用于进行认证,从而可进一步提高所述半导体集成电路(ICa)的安全性,同时也可提高整个ROM内容保护系统10的安全性。\n[0215] 图13示出了分别内置有ROM4的半导体集成电路(ICa和ICz)1_a、1_z,并不意味着必须将ROM4设为内置,也可如图4、图7所示的一样进行外置。此时,例如通过接通电源时的系统启动顺序等分别将加密后的值D(CK(1,a))和D(CK1,z)传送至ICa(1_a)和ICz(1_z)。\nROM4也可分别外置于ICa(1_a)和ICz(1_z)外,也可将整合了双方内容的1个ROM4外置,并按顺序将各自的内容分别传送至ICa(1_a)和ICz(1_z)上。也可将1个ROM4内置于管理IC(ICs)中。\n[0216] 〔第7实施方式〕\n[0217] <将认证用密码的修正参数设置于片上IC>\n[0218] 图14所示的是第7实施方式中由相关的半导体集成电路(ICa)1_a及ICa构成的ROM内容保护系统10结构的框图。与图13所示的第6实施方式的不同点在于:与用于进行认证的共通密匙CK(2)关联的修正参数CD(2,a)保存在ICa(1_a)的ROM4中,并在认证时被供给至共通密匙生成单元5。其他方面的结构与第6实施方式的图13相同,所以在此不再进行重复说明。\n[0219] 下面说明由ICa(1_a)及ICa构成的系统的运行情况。ICs8将与共通密匙CK(1)关联的修正参数CD(1,a)、以及通过共通密匙CK(2)将加密后的认证用的挑战数据Chr的Chr(CK(2))作为期望值Exp并保存在密匙数据库9中。首先,ICs8从认证单元18将挑战数据Chr传送至ICa(1_a)。ICa(1_a)通过共通密匙生成单元5参照从唯一码生成单元2生成的唯一码UC(a),并且使用保存在ROM4中的修正参数CD(2,a)生成共通密匙CK(2)后供给至加密单元7_\n1。加密单元7_1通过共通密匙CK(2)将从ICs8接收到的挑战数据Chr进行加密(Chr(CK(2)))后返送回ICs8。此后的动作与第6实施方式的图13相同,所以在此不再进行重复说明。\n[0220] 第7实施方式也与第6实施方式一样,可将多个加密密钥中的1个(CK(2))用于进行认证,由此可进一步提高所述半导体集成电路(ICa)的安全性,从而也可提高整个ROM内容保护系统10的安全性。\n[0221] 图14示出了分别内置有ROM4的半导体集成电路(ICa和ICz)1_a、1_z,但并不意味着必须将ROM4进行内置,也可如图4、图7等所示的一样进行外置。此时,例如通过接通电源时的系统启动顺序等分别将加密后的值D(CK(1,a))和D(CK1,z)传送至ICa(1_a)和ICz(1_z)。ROM4也可分别外置于ICa(1_a)和ICz(1_z)之外,也可将整合了双方内容的1个ROM4外置,并按顺序分别将各自的内容传送至ICa(1_a)和ICz(1_z)上。也可将1个ROM4内置于管理IC(ICs)中。\n[0222] 〔第8实施方式〕\n[0223] <公开密钥认证>\n[0224] 如图11所示,密匙数据库9可保持用于按各个保护对象的IC生成多个共通密匙的多个修正参数。如上所述,可按用途区分使用多个共通密匙。第8实施方式列举了从1个唯一码UC(a)生成2个加密密钥CK(1)和CK(2),其中一个共通密匙CK(1)用于将保存在ROM4中的加密后的值D(CK(1))进行解密,另一个共通密匙CK(2)用于进行认证。用于进行认证的共通密匙CK(2)为私人密钥(SK:Secret Key),并保持管理IC(ICs)8所关联的公开密钥(SK:\nPublic Key)。\n[0225] 图15所示的是第8实施方式中相关的半导体集成电路及ROM内容保护系统结构的框图。图16所示的是密匙数据库9的结构例的说明图。\n[0226] 图15所示的是第8实施方式中由相关的半导体集成电路(ICa)1_a及ICa构成的ROM内容保护系统10结构的框图。从1个唯一码UC(a)生成2个加密密钥即共通密匙CK(1)和私人密钥SK(1),将共通密匙CK(1)用于将保存在ROM4中的加密后的值D(CK(1))进行解密,将私人密钥SK(1)用于进行认证。ICa(1_a)与管理IC(ICs)8及其他的保护对象IC(ICz)1_z连接,由非易失性存储器(ROM)4、唯一码生成单元2、密码处理单元3、接口单元19等构成。密码处理单元3具有共通密匙生成单元5和解密单元6_1,6_2、以及加密单元7_1,7_2等。ROM4中保存有使用共通密匙CK(1)进行加密后的程序及/或数据D(CK(1))。图15示出了将解密单元6_\n2和加密单元7_2统合成1个块的示例,并经由接口单元19与其他的保护对象IC(ICz)1_z连接。除了密匙数据库9之外,管理IC(ICs)8还具有认证单元18。管理IC(ICs)8的认证单元18也可执行生成挑战数据Chr,并与ICa(1_a)的加密单元7_1连接。\n[0227] 下面说明由ICa(1_a)及ICa构成的系统的运行情况。ICs8将与共通密匙CK(1)关联的修正参数CD(1,a)、以及与私人密钥SK(1)关联的修正参数CD(2,a)保持在密匙数据库9中。ICs8将与私人密钥SK(1)关联的修正参数CD(2,a)及认证用的挑战数据Chr发送至ICa(1_a)。\n[0228] ICa(1_a)通过共通密匙生成单元5参照从唯一码生成单元2生成的唯一码UC(a),并使用将所接收的修正参数CD(2,a)生成私人密钥SK(1)后供给至加密单元7_1。加密单元\n7_1使用私人密钥SK(1)将从ICs8接收到的挑战数据Chr进行加密(Chr(SK(1))后返送至ICs8。ICs8通过认证单元18使用公开密钥PK(1)将加密后返送回来的挑战数据Chr(SK(1))进行解密,并与所发送的挑战数据Chr进行比较。匹配时,将ICa认证为真正的保护对象IC。\n匹配时认证单元18将匹配结果match输出到密匙数据库9,并根据该结果将修正参数CD(1,a)从密匙数据库9供给至ICa。\n[0229] 将ICa认证为真正的保护对象IC后,管理IC(ICs)8将修正参数CD(1,a)供给至ICa。\nICa(1_a)通过共通密匙生成单元5参照从唯一码生成单元2生成的唯一码UC(a),并使用接收到的修正参数CD(1,a)生成共通密匙CK(1)后供给解密单元6_1。解密单元6_1与第1实施方式及第4实施方式等一样,可使用所计算的共通密匙CK(1)将从ROM4读取的加密后的值D(CK(1))进行解密。\n[0230] 还可将所计算的共通密匙CK(1)供给至解密单元6_2和加密单元7_2。并可经由接口单元19在与拥有相同的共通密匙CK(1)的其他保护对象IC即ICz(1_z)之间进行加密通信。本实施方式中,以使用与ROM4的保护内容相同的加密密钥(共通密匙CK(1))进行加密为例对与ICz(1_z)之间的加密通信进行了说明,但也可使用其他的加密密钥(共通密匙CK(3)等)。\n[0231] 也可将解密单元6_1、6_2以及加密单元7_1、7_2统合成一个加密模块后进行安装。\n通过时分割按顺序执行解密单元6_1、6_2及加密单元7_1、7_2的解密及加密运算,便可使电路规模比设置为并联时的规模小。\n[0232] 由此,可将多个加密密钥中的1个(CK(2))用于进行公开密钥认证系统中的私人密钥SK(1)的认证,从而可进一步提高所述半导体集成电路(ICa)的安全性,同时也可提高整个ROM内容保护系统10的安全性。\n[0233] 图15示出了分别内置了ROM4的半导体集成电路(ICa和ICz)1_a、1_z,并不意味着必须将ROM4设为内置,也可如图4、图7等所示的一样进行外置。此时,例如通过接通电源时的系统启动顺序等分别将加密后的值D(CK(1,a))和D(CK1,z)传送至ICa(1_a)和ICz(1_z)。\nROM4也可分别外置于ICa(1_a)和ICz(1_z)外,也可将整合了双方内容的1个ROM4外置,并按顺序将各自的内容分别传送至ICa(1_a)和ICz(1_z)上。也可将1个ROM4内置于管理IC(ICs)中。\n[0234] 以上根据实施方式具体地说明了本案发明人所作的发明,但是本发明并不受到所述实施方式的限定,在不超出其要旨的范围内能够进行种种变更,在此无需赘言。