JP2010033603A - Information processor - Google Patents

Information processor Download PDF

Info

Publication number
JP2010033603A
JP2010033603A JP2009256333A JP2009256333A JP2010033603A JP 2010033603 A JP2010033603 A JP 2010033603A JP 2009256333 A JP2009256333 A JP 2009256333A JP 2009256333 A JP2009256333 A JP 2009256333A JP 2010033603 A JP2010033603 A JP 2010033603A
Authority
JP
Japan
Prior art keywords
key
information
program
processing apparatus
information processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009256333A
Other languages
Japanese (ja)
Inventor
Mutsumi Fujiwara
睦 藤原
Yusuke Nemoto
祐輔 根本
Junichi Yasui
純一 安井
Takuji Maeda
卓治 前田
Takayuki Ito
孝幸 伊藤
Shinji Inoue
信治 井上
Taiji Yamada
泰司 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Original Assignee
Panasonic Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp filed Critical Panasonic Corp
Priority to JP2009256333A priority Critical patent/JP2010033603A/en
Publication of JP2010033603A publication Critical patent/JP2010033603A/en
Pending legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide a key mounted system with a development environment where a security level is high. <P>SOLUTION: In this system having an LSI equipped with a secure memory, an LSI having a common configuration is set to a "development mode" different from a "merchandise operation mode", and the development of a program is performed, and the LSI is set to an "administrator mode", and the development and the encryption of a key generation program are performed, and the LSI is set to a "key generation mode", and the encrypted key generation program is executed, and various keys are generated. <P>COPYRIGHT: (C)2010,JPO&INPIT

Description

本発明は、鍵実装されたシステムやこれに用いるLSIのプログラム開発やプログラム実装に関する技術に属する。   The present invention belongs to a technology related to development and program implementation of a key-implemented system and an LSI used for the system.

特願2001−286881では、鍵実装システムにおいて、鍵の機密性および秘匿性を、従来よりも向上させる技術が示されている。   Japanese Patent Application No. 2001-286881 discloses a technique for improving the confidentiality and secrecy of a key in a key mounting system as compared with the prior art.

上述のようなシステムでは、そのプログラム開発工程や実装工程においても、いかにしてセキュリティを維持するか、ということが大きな課題となる。   In the system as described above, how to maintain security is a major issue in the program development process and the mounting process.

本発明は、上述のようなシステムについて、セキュリティレベルの高い、プログラム開発の方法や環境、またはプログラム実装の方法を提案するものである。   The present invention proposes a program development method and environment or a program implementation method with a high security level for the system as described above.

請求項1の発明が講じた解決手段は、情報処理装置として、前記情報処理装置の動作状態には、実装処理状態と商品動作状態とがあり、前記実装処理状態は、所定の情報を変換して、前記情報処理装置の前記商品動作状態の起動に必要な変換情報を生成する動作状態であり、前記商品動作状態は、前記変換情報を用いて、前記情報処理装置を起動させる動作状態であり、前記情報処理装置は、前記所定の情報および/または前記変換情報を格納する格納手段と、前記格納手段から前記所定の情報を読み出す読出手段と、前記所定の情報を変換して、前記変換情報を生成する変換手段と、生成された前記変換情報を、前記格納手段に書き出す書出手段と、前記格納手段に格納された前記変換情報を用いて前記情報処理装置を起動させる起動手段と、前記情報処理装置の電源が、前記情報処理装置が前記実装処理状態のときに投入された場合には、前記読出手段と前記書出手段および前記変換手段を動作させ、前記電源が、前記情報処理装置が前記商品動作状態のときに投入された場合には、起動手段を動作させる状態制御手段とを備えたものである。   According to a first aspect of the present invention, there is provided a solution means that, as an information processing apparatus, an operation state of the information processing apparatus includes a mounting process state and a product operation state. The mounting process state converts predetermined information. The information processing apparatus is an operation state for generating conversion information necessary for starting the product operation state, and the product operation state is an operation state for starting the information processing apparatus using the conversion information. The information processing apparatus includes: a storage unit that stores the predetermined information and / or the conversion information; a reading unit that reads the predetermined information from the storage unit; and the conversion information that converts the predetermined information. Conversion means for generating the information, writing means for writing the generated conversion information to the storage means, and activation means for starting the information processing apparatus using the conversion information stored in the storage means When the information processing apparatus is powered on when the information processing apparatus is in the mounting processing state, the reading means, the writing means, and the converting means are operated, and the power supply When the processing apparatus is turned on when the product is in an operating state, the processing apparatus includes state control means for operating the starting means.

請求項2の発明では、請求項1の発明において、前記変換手段は、前記情報の変換に鍵情報を使用し、前記情報処理装置は、さらに、前記鍵情報を記録する鍵記録手段を備え、前記鍵記録手段は、前記鍵情報を、前記情報処理装置外からのアクセスから保護された状態で記録するものとする。   In the invention of claim 2, in the invention of claim 1, the conversion means uses key information for conversion of the information, and the information processing apparatus further comprises key recording means for recording the key information, The key recording means records the key information in a state protected from access from outside the information processing apparatus.

請求項3の発明では、請求項1の発明において、前記書出手段による書き出しの処理が完了したとき、前記情報処理装置の動作状態を前記商品動作状態に設定する状態設定手段を備えたものとする。   According to a third aspect of the present invention, in the first aspect of the invention, when the writing process by the writing means is completed, the information processing apparatus includes a state setting means for setting the operation state of the information processing apparatus to the product operation state. To do.

請求項4の発明では、請求項3の発明において、前記状態設定手段は、前記情報処理装置の動作状態が前記商品動作状態であるか否かを示す状態情報を記録する状態情報記録部と、前記書出手段による前記変換情報の書き出しが完了したとき、前記状態情報を、前記商品動作状態であることを示す情報に更新する状態更新部とを備えたものとする。   In the invention of claim 4, in the invention of claim 3, the state setting means records a state information indicating whether or not the operation state of the information processing device is the product operation state, When the writing of the conversion information by the writing unit is completed, a state update unit is provided that updates the state information to information indicating the product operation state.

請求項5の発明では、請求項4の発明において、前記状態情報記録部は、前記情報処理装置内に設けられたセキュアメモリであるものとする。   According to a fifth aspect of the present invention, in the fourth aspect of the present invention, the state information recording unit is a secure memory provided in the information processing apparatus.

請求項6の発明では、請求項1の発明において、前記書出手段による前記格納手段への前記変換情報の書き出しが完了したとき、前記格納手段から前記所定の情報を削除する削除手段を備えたものとする。   According to a sixth aspect of the present invention, in the first aspect of the present invention, when the writing of the conversion information to the storage unit by the writing unit is completed, a deletion unit that deletes the predetermined information from the storage unit is provided. Shall.

以上のように本発明によると、書き換え不可領域を含むセキュアメモリを有し、高い秘匿性を持つLSIを、その動作モードを実装モードから開発モードに変えて、プログラム開発環境として用いることによって、プログラム開発環境におけるセキュリティを、従来よりも高めることができる。   As described above, according to the present invention, an LSI having a secure memory including a non-rewritable area and having high secrecy is used as a program development environment by changing its operation mode from the mounting mode to the development mode. Security in the development environment can be increased compared to the past.

本発明の実施形態に係るセキュアLSIの構成を示すブロック図である。1 is a block diagram showing a configuration of a secure LSI according to an embodiment of the present invention. 図1のセキュアLSIを用いた開発および製品化の全体の流れを表す図である。It is a figure showing the whole flow of development and commercialization using the secure LSI of FIG. ブートプログラムの全体的な処理の流れを示すフローチャートである。It is a flowchart which shows the flow of the whole process of a boot program. 前処理SZ2のデータフローである。It is a data flow of pre-processing SZ2. 鍵生成鍵の暗号化のデータフローである。It is a data flow of encryption of a key generation key. プログラム暗号化処理SA2のフローチャートである。It is a flowchart of program encryption process SA2. プログラム暗号化処理SA2のデータフローである。It is a data flow of program encryption process SA2. 鍵生成モードにおけるキージェネレータ製造処理SB1のフローチャートである。It is a flowchart of the key generator manufacturing process SB1 in the key generation mode. キージェネレータ製造処理SB1のデータフローである。It is a data flow of key generator manufacturing process SB1. キージェネレータ製造処理SB1のデータフローである。It is a data flow of key generator manufacturing process SB1. 鍵生成モードにおける鍵管理・発行処理SB2のフローチャートである。It is a flowchart of the key management / issue process SB2 in the key generation mode. 鍵管理・発行処理SB2のデータフローである。It is a data flow of key management / issue process SB2. 鍵管理・発行処理SB2のデータフローである。It is a data flow of key management / issue process SB2. 開発モードにおけるプログラム暗号化処理SC1のフローチャートである。It is a flowchart of program encryption processing SC1 in the development mode. プログラム暗号化処理SC1のデータフローである。It is a data flow of program encryption processing SC1. 商品動作モードにおけるプログラム実装処理SD1のフローチャートである。It is a flowchart of program mounting processing SD1 in the product operation mode. プログラム実装処理SD1のデータフローである。It is a data flow of program mounting process SD1. プログラム実装処理SD1のデータフローである。It is a data flow of program mounting process SD1. 商品動作モードにおける通常ブート処理SD2のフローチャートである。It is a flowchart of normal boot processing SD2 in the product operation mode. 通常ブート処理SD2のデータフローである。It is a data flow of normal boot processing SD2. 通常ブート処理SD2のデータフローである。It is a data flow of normal boot processing SD2. 初期値設定処理SZ1のフローチャートである。It is a flowchart of initial value setting processing SZ1.

以下、本発明の実施の形態について、図面を参照して説明する。なお、以下の説明では、X(鍵またはプログラム)を鍵Yを用いて暗号化して得た、暗号化された鍵またはプログラムのことを、Enc(X,Y)と表すものとする。   Embodiments of the present invention will be described below with reference to the drawings. In the following description, an encrypted key or program obtained by encrypting X (key or program) using the key Y is expressed as Enc (X, Y).

図1は本実施形態に係るセキュアLSIの内部構成を示すブロック図である。図1において、セキュアLSI1は外部バス120を介して、外部メモリ(フラッシュメモリ)100や外部ツール110などと接続可能に構成されている。また、モードIDを与えることによって、その動作モードを設定することが可能になっている。   FIG. 1 is a block diagram showing the internal configuration of a secure LSI according to this embodiment. In FIG. 1, the secure LSI 1 is configured to be connectable to an external memory (flash memory) 100, an external tool 110, and the like via an external bus 120. In addition, the operation mode can be set by giving the mode ID.

本実施形態に関わる主な構成要素について、簡単に説明する。   The main components related to this embodiment will be briefly described.

まず、セキュアLSI1は、書き換え不可領域11を含むセキュアメモリ(セキュアFlash)10を備えている。この書き換え不可領域11には、書き換え不可領域書き込みフラグ12が設けられている。書き換え不可領域書き込みフラグ12は、モードIDが一度セキュアメモリ10に書き込まれると、そのフラグ値が“可”から“済”になり、それ以降の書き換え不可領域への書き込みが不能になる。なお、本実施形態では、セキュアメモリ10および外部メモリ100はフラッシュメモリによって構成されているが、もちろんこれに限定されるものではなく、不揮発性のメモリであればどのようなものであってもかまわない。   First, the secure LSI 1 includes a secure memory (secure flash) 10 including a non-rewritable area 11. In this non-rewritable area 11, a non-rewritable area write flag 12 is provided. When the mode ID is once written in the secure memory 10, the flag value of the non-rewritable area write flag 12 changes from “permitted” to “done”, and subsequent writing to the non-rewritable area becomes impossible. In the present embodiment, the secure memory 10 and the external memory 100 are configured by flash memory, but of course, the present invention is not limited to this, and any non-volatile memory may be used. Absent.

また、秘密鍵演算処理部20は各種の鍵、およびプログラム暗号種を格納するレジスタを備えており、暗号化処理を実行する。鍵生成・更新シーケンサ30はモードID格納レジスタ31を有し、このモードID格納レジスタ31に格納されているモードIDに応じて、秘密鍵演算処理部20の動作、すなわち、各種の鍵を生成できるか否かを制御する。また、鍵またはプログラムがどのようなアルゴリズムや鍵長で暗号化されているかを示す暗号種別識別子を格納する暗号種別識別子格納レジスタ32を備えている。さらに、プログラム暗号種33が実装されている。   The secret key calculation processing unit 20 includes a register for storing various keys and program encryption types, and executes encryption processing. The key generation / update sequencer 30 has a mode ID storage register 31, and can generate an operation of the secret key calculation processing unit 20, that is, various keys according to the mode ID stored in the mode ID storage register 31. Control whether or not. Also, an encryption type identifier storage register 32 for storing an encryption type identifier indicating what algorithm and key length the key or program is encrypted with is provided. Further, a program encryption type 33 is implemented.

モードシーケンサ40も、モードID格納レジスタ41を備えており、モードID格納レジスタ41に格納されているモードIDと、ジャンパー43の値に応じて、外部ホストインターフェース(I/F)50の動作、すなわち、外部メモリ100に格納されたプログラムやデータをどのI/Fを介して読み込むか、を制御する。これにより、外部メモリ100に格納された平文プログラムが実行できるか否かを制御することができる。さらに、モードシーケンサ40は、鍵がどの手法によって暗号化されているかを示す暗号種別識別子を格納する暗号種別識別子格納レジスタ42を備えている。   The mode sequencer 40 also includes a mode ID storage register 41, and the operation of the external host interface (I / F) 50 according to the mode ID stored in the mode ID storage register 41 and the value of the jumper 43, that is, The I / F through which the program or data stored in the external memory 100 is read is controlled. Thereby, it is possible to control whether or not the plaintext program stored in the external memory 100 can be executed. Furthermore, the mode sequencer 40 includes an encryption type identifier storage register 42 that stores an encryption type identifier indicating which method is used to encrypt the key.

外部ホストI/F50は、モードシーケンサ40の制御に従って、プログラム処理部51が有するスルー部52、遅延部53およびプログラム復号用暗号エンジン54、並びに、データ処理部55が有するスルー部56およびコンテンツ暗号・復号用暗号エンジン57のうちのいずれかを介して、外部メモリ100や外部ツール110との間でプログラムやデータの入出力を行う。   Under the control of the mode sequencer 40, the external host I / F 50 includes a through unit 52, a delay unit 53, a program decryption cryptographic engine 54, and a through unit 56, content encryption / A program or data is input / output to / from the external memory 100 or the external tool 110 via any one of the decryption cryptographic engines 57.

ここで、後述するアドミニストレータモードを除いては、スルー部52を介して入力されたプログラムは、セキュアLSI1内部では実行されることはない。すなわち、スルー部52は、平文プログラムの暗号化、またはすでに暗号化されたプログラムを別の鍵を用いて再暗号化するときに有効とされるものであり、セキュアLSI1は、後述するアドミニストレータモードを除いては、スルー部52を介して入力されたプログラムへは動作を遷移しないように構成されている。したがって、例えば商品となったセキュアLSI1はスルー部52を介して平文プログラムを取り込んだとしても、これを実行することはできない。なお、平文プログラムを実行するときは、セキュアLSI1は遅延部53を介してプログラムをその内部に入力する。   Here, except for an administrator mode to be described later, a program input via the through unit 52 is not executed inside the secure LSI 1. That is, the through unit 52 is effective when encrypting a plain text program or re-encrypting an already encrypted program using another key. The secure LSI 1 performs an administrator mode described later. Except for this, the operation is not shifted to the program input via the through unit 52. Therefore, for example, even if the secure LSI 1 that has become a product takes in the plain text program via the through unit 52, it cannot be executed. Note that when executing a plain text program, the secure LSI 1 inputs the program therein via the delay unit 53.

ブートROM60は、セキュアLSI1の起動動作を制御するブートプログラムを格納している。HASH演算部70は、セキュアLSI1に読み込まれたプログラムについてその正当性を検証するために、HASH値を演算する。   The boot ROM 60 stores a boot program that controls the startup operation of the secure LSI 1. The HASH calculation unit 70 calculates a HASH value in order to verify the validity of the program read into the secure LSI 1.

また、外部メモリ100には、プログラムやコンテンツが格納されている。外部ツール110には、セキュアLSI1の最初の起動時にセキュアメモリ10に格納する各種の初期値が格納されている。この初期値の種類は、設定される動作モードに応じて、異なったものになる。   The external memory 100 stores programs and contents. The external tool 110 stores various initial values stored in the secure memory 10 when the secure LSI 1 is first activated. The type of the initial value varies depending on the set operation mode.

図2は図1のセキュアLSI1を用いた開発および製品化の全体の流れを表す図である。図2に示すように、セキュアLSI1は、アドミニストレータモード(モードID:00)、鍵生成モード(モードID:01)、開発モード(モードID:10)および商品動作モード(モードID:11)の4種類の動作モードで、動作する。   FIG. 2 is a diagram showing the overall flow of development and commercialization using the secure LSI 1 of FIG. As shown in FIG. 2, the secure LSI 1 has four modes: an administrator mode (mode ID: 00), a key generation mode (mode ID: 01), a development mode (mode ID: 10), and a product operation mode (mode ID: 11). Operates in various operation modes.

まず、アドミニストレータモードに設定されたセキュアLSI1は、管理者用LSIとして、動作する。管理者用LSIでは、鍵生成プログラムが開発され、また、その鍵生成プログラムが任意の鍵生成鍵を用いて暗号化される。   First, the secure LSI 1 set to the administrator mode operates as an administrator LSI. In the administrator LSI, a key generation program is developed, and the key generation program is encrypted using an arbitrary key generation key.

鍵生成モードに設定されたセキュアLSI1は、鍵生成用LSIとして、動作する。鍵生成用LSIでは、管理者用LSIにおいて生成された、暗号化された鍵生成プログラムが実装され、この鍵生成プログラムを実行することによって、各種の鍵が生成される。   The secure LSI 1 set to the key generation mode operates as a key generation LSI. In the key generation LSI, an encrypted key generation program generated in the administrator LSI is mounted, and various keys are generated by executing the key generation program.

開発モードに設定されたセキュアLSI1は、開発用LSIとして、動作する。開発用LSIでは、実際の製品で実行されるアプリケーション用プログラムが開発される。そして、このアプリケーション用プログラムが、プログラム共有鍵を用いて暗号化される。   The secure LSI 1 set to the development mode operates as a development LSI. In the development LSI, an application program to be executed by an actual product is developed. Then, the application program is encrypted using the program shared key.

商品動作モードに設定されたセキュアLSI1は、実際の商品LSIとして、動作する。商品LSIでは、開発用LSIにおいて生成された、プログラム共有鍵で暗号化されたアプリケーション用プログラムが実装され、その内部で、プログラム固有鍵で暗号化されたアプリケーション用プログラムに、変換される。なお、この変換処理は、開発用LSIでも、アプリケーション用プログラムのデバッグのために、実行可能になっている。   The secure LSI 1 set in the product operation mode operates as an actual product LSI. In the product LSI, the application program generated by the development LSI and encrypted with the program shared key is mounted and converted into the application program encrypted with the program unique key. Note that this conversion process can be executed even in the development LSI for debugging the application program.

以下、各モードにおけるセキュアLSI1の動作の詳細について、フローチャートおよびデータフローを参照して、説明する。セキュアLSI1は、ブートROM60に格納されたブートプログラムを実行することによって、以下のような動作を行う。   Hereinafter, details of the operation of the secure LSI 1 in each mode will be described with reference to a flowchart and a data flow. The secure LSI 1 performs the following operation by executing the boot program stored in the boot ROM 60.

図3はブートプログラムの全体的な処理の流れを示すフローチャートである。セキュアLSI1に電源が投入されると、ブートROM60に格納されたブートプログラムがCPU65によって実行される。図3に示すように、まず、各ハードウェアを初期化する(SZ0)。そして、外部ツール110からさまざまな初期値を読み込み、セキュアメモリ10に設定する(SZ1)。   FIG. 3 is a flowchart showing the overall processing flow of the boot program. When the secure LSI 1 is turned on, the boot program stored in the boot ROM 60 is executed by the CPU 65. As shown in FIG. 3, first, each hardware is initialized (SZ0). Then, various initial values are read from the external tool 110 and set in the secure memory 10 (SZ1).

図22は初期値設定処理SZ1のフローチャートである。まず、ジャンパー44で、セキュアメモリ10がLSI内に実装されているか否かの判定を行う。次に、書き換え不可領域書き込みフラグ12が“済”であるか否かを判定し、“済”であるときはすでにセキュアメモリ10に初期値が設定されているので、処理SZ1を終了する。書き換え不可領域書き込みフラグ12が“可”であるときは、セキュアメモリ10に初期値を書き込んでいく。モードIDに加えて、暗号化されたプログラム固有鍵、アドレス管理情報、データ固有鍵をセキュアメモリ10の書き換え不可領域11に書き込む。なお、最初の判定の結果、セキュアメモリ10がLSIの外部にあると判定されたときは、モードIDは商品動作モードを表す値に上書きされる。これにより、セキュアメモリ10がLSIパッケージ外にあるような不正な製品は、商品動作モードでしか動作できない。   FIG. 22 is a flowchart of the initial value setting process SZ1. First, the jumper 44 determines whether or not the secure memory 10 is mounted in the LSI. Next, it is determined whether or not the non-rewritable area write flag 12 is “completed”. If it is “completed”, the initial value has already been set in the secure memory 10, and the process SZ1 is terminated. When the non-rewritable area write flag 12 is “permitted”, the initial value is written into the secure memory 10. In addition to the mode ID, the encrypted program unique key, address management information, and data unique key are written in the non-rewritable area 11 of the secure memory 10. As a result of the initial determination, when it is determined that the secure memory 10 is outside the LSI, the mode ID is overwritten with a value representing the product operation mode. Thereby, an unauthorized product in which the secure memory 10 is outside the LSI package can operate only in the product operation mode.

次に、書き込み不可領域書き込みフラグ12を“済”にセットする。これによって、以後の書き換え不可領域11の書き換えはできなくなる。さらに、通常領域13,14に暗号種別識別子および実装モードフラグを書き込む。そして、モードIDがアドミニストレータモード以外のモードを示すときは、これらに加えて、暗号化された共有鍵/鍵生成鍵も通常領域13,14に書き込む。   Next, the unwritable area write flag 12 is set to “done”. This makes it impossible to rewrite the non-rewritable area 11 thereafter. Further, the encryption type identifier and the implementation mode flag are written in the normal areas 13 and 14. When the mode ID indicates a mode other than the administrator mode, an encrypted shared key / key generation key is also written in the normal areas 13 and 14 in addition to these.

その後、前処理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に対応している。   Thereafter, pre-processing SZ2 is executed. FIG. 4 is a data flow of the preprocessing SZ2. Here, the mode ID set in the non-writable area 11 of the secure memory 10 is set in the mode ID storage register 31 of the key generation / update sequencer 30 and the mode ID storage register 41 of the mode sequencer 40. In addition, the encryption type identifier set in the first normal area 13 of the secure memory 10 is set in the encryption type identifier storage register 32 of the key generation / update sequencer 30 and the encryption type identifier storage register 42 of the mode sequencer 40. The Furthermore, the address management information stored in the non-rewritable area 11 of the secure memory 10 is set in the encryption address section storage register 81 of the MEMC 80. The operations so far correspond to the initial value setting phases PA0, PB0, PC0, PD0 in FIG.

その後は、モードIDの値に応じて、それぞれのモードにおける動作を行う(SZ3)。   Thereafter, the operation in each mode is performed according to the value of the mode ID (SZ3).

<アドミニストレータモード>
モードIDが「00」のとき、セキュアLSI1はアドミニストレータモードになり、ジャンパー43の値に応じて(SA0)、平文プログラム実行処理SA1、またはプログラム暗号化処理SA2を実行する。
<Administrator mode>
When the mode ID is “00”, the secure LSI 1 enters the administrator mode, and executes the plaintext program execution process SA1 or the program encryption process SA2 according to the value of the jumper 43 (SA0).

鍵生成プログラム開発フェーズPA1では、平文プログラム実行処理SA1が行われ、ここで、鍵生成プログラムが生成される。この鍵生成プログラムは外部メモリ100に格納される。   In the key generation program development phase PA1, a plain text program execution process SA1 is performed, where a key generation program is generated. This key generation program is stored in the external memory 100.

鍵生成プログラム暗号化フェーズPA2では、まず、図5のデータフローのように、鍵生成プログラムを実行させることによって、与えられた任意の鍵生成鍵を暗号化する。すなわち、外部ホストI/F50では、モードシーケンサ40によって、プログラム処理部51のスルー部52が有効化される。そして、外部メモリ100に格納された鍵生成プログラムが、スルー部52を介してCPU65に与えられ、実行される。この鍵生成プログラムを実行することによって、外部メモリ100に格納された鍵生成鍵が、秘密鍵演算処理部20によって、鍵生成・更新シーケンサ30に実装されたプログラム暗号種を用いて暗号化される。   In the key generation program encryption phase PA2, first, the given key generation key is encrypted by executing the key generation program as shown in the data flow of FIG. That is, in the external host I / F 50, the mode sequencer 40 enables the through unit 52 of the program processing unit 51. Then, the key generation program stored in the external memory 100 is given to the CPU 65 via the through unit 52 and executed. By executing this key generation program, the key generation key stored in the external memory 100 is encrypted by the secret key calculation processing unit 20 using the program encryption type installed in the key generation / update sequencer 30. .

なお、本実施形態では、鍵の暗号化は、第1中間鍵と第2中間鍵とを用いて行う。すなわち、暗号化の結果、平文鍵(ここでは鍵生成鍵)を第1中間鍵(ここではMK1)で暗号化した暗号化鍵(ここではEnc(鍵生成鍵、MK1))と、第1中間鍵を第2中間鍵(ここではCK)で暗号化した暗号化第1中間鍵(ここではEnc(MK1,CK))とが得られる。もちろん、本発明は、このような鍵の暗号化手法に限定されるものではない。   In the present embodiment, the encryption of the key is performed using the first intermediate key and the second intermediate key. That is, as a result of encryption, an encryption key (here, Enc (key generation key, MK1)) obtained by encrypting a plaintext key (here, key generation key) with the first intermediate key (here, MK1), and the first intermediate key An encrypted first intermediate key (here, Enc (MK1, CK)) obtained by encrypting the key with the second intermediate key (here, CK) is obtained. Of course, the present invention is not limited to such a key encryption method.

その後、プログラム暗号化処理SA2が実行される。図6はこのプログラム暗号化処理SA2のフローチャート、図7はデータフローである。まず、外部メモリ100に格納されている、暗号化された鍵生成鍵Enc(鍵生成鍵,MK1),Enc(MK1,CK)を、外部ホストI/F50のスルー部52を介して、秘密鍵演算処理部20に設定する(SA21)。そして、この暗号化された鍵生成鍵を、鍵生成・更新シーケンサ30に実装されたプログラム暗号種を用いて復号し、鍵生成鍵を得る(SA22)。その後、外部メモリ100に格納されていた平文の鍵生成プログラムを取り込み、これをSA22で復号した鍵生成鍵を用いて暗号化し、外部メモリ100に書き込む(SA23)。さらに、外部メモリ100の平文の鍵生成プログラムに対して、HASH演算部70によってHASH演算を行い、算出したHASH値を外部メモリ100に書き込む(SA24)。   Thereafter, the program encryption process SA2 is executed. FIG. 6 is a flowchart of the program encryption process SA2, and FIG. 7 is a data flow. First, the encrypted key generation key Enc (key generation key, MK1) and Enc (MK1, CK) stored in the external memory 100 are transferred to the private key via the through unit 52 of the external host I / F 50. Set in the arithmetic processing unit 20 (SA21). Then, the encrypted key generation key is decrypted using the program encryption type installed in the key generation / update sequencer 30 to obtain a key generation key (SA22). Thereafter, the plaintext key generation program stored in the external memory 100 is taken in, encrypted using the key generation key decrypted in SA22, and written in the external memory 100 (SA23). Further, the HASH calculation unit 70 performs HASH calculation on the plaintext key generation program in the external memory 100, and writes the calculated HASH value in the external memory 100 (SA24).

このような動作によって、アドミニストレータモードでは、鍵生成鍵で暗号された鍵生成プログラムEnc(鍵生成プログラム,鍵生成鍵)と、暗号化された鍵生成鍵Enc(鍵生成鍵,MK1),Enc(MK1,CK)と、鍵生成プログラムのHASH値とが、生成される。   By such an operation, in the administrator mode, the key generation program Enc (key generation program, key generation key) encrypted with the key generation key and the encrypted key generation key Enc (key generation key, MK1), Enc ( MK1, CK) and the HASH value of the key generation program are generated.

<鍵生成モード>
モードIDが「01」のとき、セキュアLSI1は鍵生成モードになり、実装モードフラグの値に応じて(SB0)、キージェネレータ製造処理SB1、または鍵管理・発行処理SB2を実行する。
<Key generation mode>
When the mode ID is “01”, the secure LSI 1 enters the key generation mode, and executes the key generator manufacturing process SB1 or the key management / issue process SB2 according to the value of the mounting mode flag (SB0).

キージェネレータ製造フェーズPB1では、キージェネレータ製造処理SB1が実行される。図8はこの処理SB1のフローチャート、図9および図10はデータフローである。ここでは、モードIDと実装モードフラグの値によって、外部ホストI/F部50が有するプログラム処理部51においてスルー部52が有効に設定されている。   In the key generator manufacturing phase PB1, the key generator manufacturing process SB1 is executed. FIG. 8 is a flowchart of the process SB1, and FIGS. 9 and 10 are data flows. Here, the through unit 52 is set to be effective in the program processing unit 51 of the external host I / F unit 50 according to the value of the mode ID and the mounting mode flag.

まず、セキュアメモリ10の書き込み不可領域11に格納されている、暗号化されたプログラム固有鍵Enc(プログラム固有鍵、MK0),Enc(MK0,CK)を秘密鍵演算処理部20の暗号鍵格納レジスタに設定する(SB11)。そして、この暗号化されたプログラム固有鍵を、鍵生成・更新シーケンサ30に実装されたプログラム暗号種を用いて復号し、プログラム固有鍵を得る(SB12)。次に、初期値設定フェーズPB0において設定された,暗号化された鍵生成鍵Enc(鍵生成鍵,MK1),Enc(MK1,CK)を秘密鍵演算処理部20の暗号鍵格納レジスタに設定し(SB13)、この暗号化された鍵生成鍵を、鍵生成・更新シーケンサ30に実装されたプログラム暗号種を用いて復号し、鍵生成鍵を得る(SB14)。   First, the encrypted program unique key Enc (program unique key, MK0) and Enc (MK0, CK) stored in the non-writable area 11 of the secure memory 10 are stored in the encryption key storage register of the secret key calculation processing unit 20. (SB11). Then, the encrypted program unique key is decrypted using the program encryption type installed in the key generation / update sequencer 30 to obtain the program unique key (SB12). Next, the encrypted key generation key Enc (key generation key, MK1) and Enc (MK1, CK) set in the initial value setting phase PB0 are set in the encryption key storage register of the secret key calculation processing unit 20. (SB13) The encrypted key generation key is decrypted using the program encryption type installed in the key generation / update sequencer 30 to obtain a key generation key (SB14).

その後、外部メモリ100に格納されていた,鍵生成鍵で暗号化された鍵生成プログラムEnc(鍵生成プログラム,鍵生成鍵)を、外部ホストI/F50が有するプログラム処理部51のスルー部52を介して、秘密鍵演算処理部20に取り込む(SB15)。そして、取り込んだ暗号化された鍵生成プログラムを、鍵生成鍵で復号した後、プログラム固有鍵で暗号化し、暗号化された鍵生成プログラムEnc(鍵生成プログラム,プログラム固有鍵)を得る(SB16)。そして、外部メモリ100に書き込む(SB17)。次に、外部メモリ100に格納されていたHASH値を、スルー部52を介して、セキュアメモリ10の通常領域13に設定する(SB18)。   Thereafter, the key generation program Enc (key generation program, key generation key) encrypted with the key generation key stored in the external memory 100 is passed through the through unit 52 of the program processing unit 51 of the external host I / F 50. Through the private key calculation processing unit 20 (SB15). The captured encrypted key generation program is decrypted with the key generation key, and then encrypted with the program unique key to obtain an encrypted key generation program Enc (key generation program, program unique key) (SB16). . And it writes in the external memory 100 (SB17). Next, the HASH value stored in the external memory 100 is set in the normal area 13 of the secure memory 10 via the through unit 52 (SB18).

また、セキュアメモリ10の通常領域13に格納された実装モードフラグの値を、CPU65によって“OFF”に設定する(SB19)。そして、セキュアメモリ10の通常領域13に格納されている,暗号化された鍵生成鍵Enc(鍵生成鍵,MK1),Enc(MK1,CK)を削除する(SB1A)とともに、外部メモリ100に格納されていた,暗号化された鍵生成プログラムEnc(鍵生成鍵プログラム,鍵生成鍵)およびHASH値を削除する(SB1B)。   Further, the value of the mounting mode flag stored in the normal area 13 of the secure memory 10 is set to “OFF” by the CPU 65 (SB19). Then, the encrypted key generation key Enc (key generation key, MK1), Enc (MK1, CK) stored in the normal area 13 of the secure memory 10 is deleted (SB1A) and stored in the external memory 100. The encrypted key generation program Enc (key generation key program, key generation key) and the HASH value that have been deleted are deleted (SB1B).

鍵管理・発行フェーズPB2では、鍵管理・発行処理SB2が実行される。図11はこの処理SB2のフローチャート、図12および図13はデータフローである。ここでは、モードIDと実装モードフラグの値によって、外部ホストI/F部50が有するプログラム復号用暗号エンジン54が有効に設定されている。 まず、セキュアメモリ10の書き込み不可領域11に格納されている、暗号化されたプログラム固有鍵Enc(プログラム固有鍵、MK0),Enc(MK0,CK)を秘密鍵演算処理部20の暗号鍵格納レジスタに設定する(SB21)。そして、この暗号化されたプログラム固有鍵を、鍵生成・更新シーケンサ30に実装されたプログラム暗号種を用いて復号し、プログラム固有鍵を得る(SB22)。得たプログラム固有鍵は、外部ホストI/F50のプログラム復号用暗号エンジン54のプログラム固有鍵格納レジスタに設定される(SB23)。   In the key management / issue phase PB2, key management / issue processing SB2 is executed. FIG. 11 is a flowchart of the process SB2, and FIGS. 12 and 13 are data flows. Here, the encryption engine 54 for program decryption included in the external host I / F unit 50 is set to be valid by the value of the mode ID and the implementation mode flag. First, the encrypted program unique key Enc (program unique key, MK0) and Enc (MK0, CK) stored in the non-writable area 11 of the secure memory 10 are stored in the encryption key storage register of the secret key calculation processing unit 20. (SB21). Then, the encrypted program unique key is decrypted using the program encryption type installed in the key generation / update sequencer 30 to obtain the program unique key (SB22). The obtained program unique key is set in the program unique key storage register of the program decryption cryptographic engine 54 of the external host I / F 50 (SB23).

その後、外部メモリ100に格納されていた,プログラム固有鍵で暗号化された鍵生成プログラムEnc(鍵生成プログラム,プログラム固有鍵)を、外部ホストI/F50が有するプログラム処理部51のプログラム復号用暗号エンジン54を介して復号し、HASH演算部70に取り込み、HASH値を演算する(SB24)。そして、この演算したHASH値と、セキュアメモリ10の通常領域13に格納されていたHASH値とを比較し、鍵生成プログラムが改ざんされていないかどうかをチェックする(SB25)。HASH値が一致していたとき(SB26でNo)、外部メモリ100に格納されていた鍵生成プログラムEnc(鍵生成プログラム,プログラム固有鍵)に処理を遷移し、鍵の生成を実行する(SB27)。一方、HASH値が一致していないとき(SB26でYes)は、何らかの不正が行われたものと推定して、不正アクセス時制御による処理を実行する(SB28)。   After that, the key decryption program Enc (key generation program, program unique key) encrypted in the external memory 100 and encrypted with the program unique key is used for the program decryption encryption of the program processing unit 51 of the external host I / F 50. Decoding is performed via the engine 54, and the data is taken into the HASH calculation unit 70 to calculate the HASH value (SB24). Then, the calculated HASH value is compared with the HASH value stored in the normal area 13 of the secure memory 10 to check whether the key generation program has been tampered with (SB25). When the HASH values match (No in SB26), the process shifts to the key generation program Enc (key generation program, program unique key) stored in the external memory 100, and key generation is executed (SB27). . On the other hand, when the HASH values do not match (Yes in SB26), it is presumed that some kind of fraud has been performed, and processing by the unauthorized access time control is executed (SB28).

鍵生成モードにおいては、スルー部52を有効にしてプログラムを入力する、またはプログラム復号用暗号エンジン54を有効にして暗号化されたプログラムを復号して入力するのみであるので、平文プログラムを実行することができないように、セキュアLSI1の動作が制限される。   In the key generation mode, the plain text program is executed because only the program is input with the through unit 52 enabled or the encrypted program encrypted with the program decryption encryption engine 54 enabled. Thus, the operation of the secure LSI 1 is limited.

<開発モード>
モードIDが「10」のとき、セキュアLSI1は開発モードになり、ジャンパー43の値に応じて(SC0)、プログラム暗号化処理SC1、平文プログラム実行処理SC2、プログラム実装処理SC3、または暗号化プログラム実行処理SC4を実行する。
<Development mode>
When the mode ID is “10”, the secure LSI 1 is in the development mode, and depending on the value of the jumper 43 (SC0), the program encryption process SC1, the plain text program execution process SC2, the program implementation process SC3, or the encryption program execution Process SC4 is executed.

アプリケーションプログラム開発フェーズPC1では、遅延部53を有効として、平文プログラム実行処理SC2が行われ、アプリケーションプログラムが開発される。開発されたアプリケーションプログラムは、外部メモリ100に格納される。   In the application program development phase PC1, the plaintext program execution process SC2 is performed with the delay unit 53 enabled, and the application program is developed. The developed application program is stored in the external memory 100.

アプリケーションプログラム暗号化フェーズPC2では、プログラム暗号化処理SC1が実行される。図14はこのプログラム暗号化処理SC1のフローチャート、図15はデータフローである。まず、セキュアメモリ10の通常領域14に格納された共有鍵鍵情報としての暗号化されたプログラム共有鍵Enc(プログラム共有鍵,MK2),Enc(MK2,CK)を秘密鍵演算処理部20に設定する(SC11)。そして、この暗号化されたプログラム共有鍵を、鍵生成・更新シーケンサ30に実装されたプログラム暗号種を用いて復号し、プログラム共有鍵を得る(SC12)。その後、外部メモリ100に格納された平文のアプリケーションプログラムを取り込み、これをSC12で復号したプログラム共有鍵を用いて暗号化し、外部メモリ100に書き込む(SC13)。さらに、外部メモリ100の平文のアプリケーションプログラムに対して、HASH演算部70によってHASH演算を行い、算出したHASH値を外部メモリ100に書き込む(SC14)。   In the application program encryption phase PC2, program encryption processing SC1 is executed. FIG. 14 is a flowchart of the program encryption process SC1, and FIG. 15 is a data flow. First, the encrypted program shared key Enc (program shared key, MK2), Enc (MK2, CK) as shared key key information stored in the normal area 14 of the secure memory 10 is set in the secret key calculation processing unit 20 (SC11). Then, the encrypted program shared key is decrypted using the program encryption type installed in the key generation / update sequencer 30 to obtain the program shared key (SC12). Thereafter, the plaintext application program stored in the external memory 100 is taken in, encrypted using the program shared key decrypted in SC12, and written in the external memory 100 (SC13). Further, HASH calculation is performed by the HASH calculation unit 70 on the plain text application program in the external memory 100, and the calculated HASH value is written in the external memory 100 (SC14).

このような動作によって、プログラム共有鍵で暗号されたアプリケーションプログラムEnc(アプリケーションプログラム,プログラム共有鍵)と、アプリケーションプログラムのHASH値とが、生成される。   By such an operation, the application program Enc (application program, program shared key) encrypted with the program shared key and the HASH value of the application program are generated.

次に、アプリケーションプログラム実装フェーズPC3では、プログラム実装処理SC3が実行され、アプリケーションプログラムデバッグフェーズPC4では、暗号化プログラム実行処理SC4が実行される。これらの処理は、商品動作モードにおける各処理SD1,SD2と同様であるので、詳細は後述する。   Next, in the application program mounting phase PC3, the program mounting process SC3 is executed, and in the application program debugging phase PC4, the encrypted program execution process SC4 is executed. Since these processes are the same as the processes SD1 and SD2 in the product operation mode, details will be described later.

このように、書き換え不可領域11を含むセキュアメモリ10を有し、高い秘匿性を持つLSI1を、その動作モードを実装モードから開発モードに変えてプログラム開発環境として用いることによって、プログラム開発環境におけるセキュリティを、従来よりも高めることができる。   As described above, the LSI 1 having the secure memory 10 including the non-rewritable area 11 and having high secrecy is used as a program development environment by changing the operation mode from the mounting mode to the development mode. Can be increased as compared with the prior art.

また、セキュアメモリ10に格納された共有鍵鍵情報としての暗号化された共有鍵から生共有鍵が復号され、そしてこの生共有鍵を用いて平文プログラムの暗号化が実行されるので、プログラム開発者に生共有鍵を知られることなく、平文プログラムの暗号化を実行することができる。   In addition, since the raw shared key is decrypted from the encrypted shared key as the shared key key information stored in the secure memory 10 and the plaintext program is encrypted using this raw shared key, program development is performed. The plaintext program can be encrypted without the person knowing the raw shared key.

また、生共有鍵の復号と、この生共有鍵を用いた平文プログラムの暗号化とが、外部からの指示ではなく、ブートプログラムによって実行されるので、平文プログラムの暗号化を、プログラム開発者に生共有鍵を知られることを確実に防止しつつ、実行することができる。   In addition, since decryption of the raw shared key and encryption of the plaintext program using this raw shared key are performed by the boot program, not by an external instruction, the plaintext program is encrypted to the program developer. It can be executed while reliably preventing the raw shared key from being known.

<商品動作モード>
モードIDが「11」のとき、セキュアLSI1は商品動作モードになり、実装モードフラグの値に応じて(SD0)、プログラム実装処理SD1、または通常ブート処理SD2を実行する。
<Product operation mode>
When the mode ID is “11”, the secure LSI 1 is in the product operation mode, and executes the program mounting process SD1 or the normal boot process SD2 according to the value of the mounting mode flag (SD0).

商品実装フェーズPD1では、プログラム実装処理SD1が実行される。図16はこの処理SD1のフローチャート、図17および図18はデータフローである。ここでは、モードIDと実装モードフラグの値によって、外部ホストI/F部50が有するプログラム処理部51においてスルー部52が有効に設定されている。   In the product mounting phase PD1, program mounting processing SD1 is executed. FIG. 16 is a flowchart of the process SD1, and FIGS. 17 and 18 are data flows. Here, the through unit 52 is set to be effective in the program processing unit 51 of the external host I / F unit 50 according to the value of the mode ID and the mounting mode flag.

まず、セキュアメモリ10の書き込み不可領域11に格納された、固有鍵鍵情報としての暗号化されたプログラム固有鍵(プログラム固有鍵、MK0),Enc(MK0,CK)を秘密鍵演算処理部20の暗号鍵格納レジスタに設定する(SD11)。そして、この暗号化されたプログラム固有鍵を、鍵生成・更新シーケンサ30に実装されたプログラム暗号種を用いて復号し、プログラム固有鍵を得る(SD12)。次に、初期値設定フェーズPD0において設定された,共有鍵鍵情報としての暗号化されたプログラム共有鍵Enc(プログラム共有鍵,MK2),Enc(MK2,CK)を秘密鍵演算処理部20の暗号鍵格納レジスタに設定し(SD13)、この暗号化されたプログラム共有鍵を、鍵生成・更新シーケンサ30に実装されたプログラム暗号種を用いて復号し、プログラム共有鍵を得る(SD14)。   First, the encrypted program unique key (program unique key, MK0) and Enc (MK0, CK) as unique key key information stored in the non-writable area 11 of the secure memory 10 are stored in the secret key calculation processing unit 20. The encryption key storage register is set (SD11). Then, the encrypted program unique key is decrypted using the program encryption type installed in the key generation / update sequencer 30 to obtain the program unique key (SD12). Next, the encrypted program shared key Enc (program shared key, MK2), Enc (MK2, CK) as shared key key information set in the initial value setting phase PD0 is encrypted by the secret key calculation processing unit 20. It is set in the key storage register (SD13), and the encrypted program shared key is decrypted using the program encryption type installed in the key generation / update sequencer 30 to obtain the program shared key (SD14).

その後、外部メモリ100に格納されていた,プログラム共有鍵で暗号化されたアプリケーションプログラムEnc(アプリケーションプログラム,プログラム共有鍵)を、外部ホストI/F50が有するプログラム処理部51のスルー部52を介して、秘密鍵演算処理部20に取り込む(SD15)。そして、取り込んだ暗号化されたアプリケーションプログラムを、プログラム共有鍵で復号した後、プログラム固有鍵で暗号化し、暗号化されたアプリケーションプログラムEnc(アプリケーションプログラム,プログラム固有鍵)を得る(SD16)。そして、外部メモリ100に書き込む(SD17)。次に、外部メモリ100に格納されていたHASH値を、スルー部52を介して、セキュアメモリ10の通常領域13に設定する(SD18)。   Thereafter, the application program Enc (application program, program shared key) encrypted with the program shared key stored in the external memory 100 is passed through the through unit 52 of the program processing unit 51 of the external host I / F 50. The secret key calculation processing unit 20 takes in (SD15). The captured encrypted application program is decrypted with the program shared key and then encrypted with the program unique key to obtain an encrypted application program Enc (application program, program unique key) (SD16). And it writes in the external memory 100 (SD17). Next, the HASH value stored in the external memory 100 is set in the normal area 13 of the secure memory 10 via the through unit 52 (SD18).

また、セキュアメモリ10の通常領域13に格納された実装モードフラグの値を、CPU65によって“OFF”に設定する(SD19)。そして、セキュアメモリ10の通常領域13に格納されている,暗号化されたプログラム共有鍵Enc(プログラム共有鍵,MK1),Enc(MK1,CK)を削除する(SD1A)とともに、外部メモリ100に格納されていた,暗号化されたアプリケーションプログラムEnc(アプリケーションプログラム,プログラム共有鍵)およびHASH値を削除する(SD1B)。   Further, the value of the mounting mode flag stored in the normal area 13 of the secure memory 10 is set to “OFF” by the CPU 65 (SD19). Then, the encrypted program shared key Enc (program shared key, MK1), Enc (MK1, CK) stored in the normal area 13 of the secure memory 10 is deleted (SD1A) and stored in the external memory 100. The encrypted application program Enc (application program, program shared key) and HASH value that have been deleted are deleted (SD1B).

すなわち、共有鍵暗号化プログラムが、暗号化する鍵が共有鍵から固有鍵に変換されて、システムに実装されることになる。このため、ユーザの持つ各製品では、互いに異なる固有鍵によって暗号化されたプログラムが実装されることになり、秘匿性が向上する。また、万一、暗号を破られた場合でも、被害を受ける製品の数が限定されることになり、従来よりもセキュリティが高まる。   That is, the key to be encrypted by the shared key encryption program is converted from the shared key to the unique key and installed in the system. For this reason, in each product held by the user, a program encrypted with a different unique key is mounted, and the secrecy is improved. In addition, even if the encryption is broken, the number of products that are damaged is limited, and the security is higher than before.

なお、固有鍵の生成は、固有IDを基にして行ってもよい。すなわち、セキュアLSI1毎に、個別の固有IDを固有鍵鍵情報としてセキュアメモリ10に実装しておき、この商品実装フェーズPD1において、ブートプログラムによって、実装された固有IDから固有鍵を生成するようにしてもよい。   The unique key may be generated based on the unique ID. That is, for each secure LSI 1, an individual unique ID is mounted in the secure memory 10 as unique key key information, and in this product mounting phase PD1, a unique key is generated from the mounted unique ID by the boot program. May be.

商品動作フェーズPD2では、通常ブート処理SD2が実行される。図19はこの処理SD2のフローチャート、図20および図21はデータフローである。ここでは、モードIDと実装モードフラグの値によって、外部ホストI/F部50が有するプログラム復号用暗号エンジン54が有効に設定されている。   In the product operation phase PD2, the normal boot process SD2 is executed. FIG. 19 is a flowchart of the process SD2, and FIGS. 20 and 21 are data flows. Here, the encryption engine 54 for program decryption included in the external host I / F unit 50 is set to be valid by the value of the mode ID and the implementation mode flag.

まず、セキュアメモリ10の書き込み不可領域11に格納されている、暗号化されたプログラム固有鍵Enc(プログラム固有鍵、MK0),Enc(MK0,CK)を秘密鍵演算処理部20の暗号鍵格納レジスタに設定する(SD21)。そして、この暗号化されたプログラム固有鍵を、鍵生成・更新シーケンサ30に実装されたプログラム暗号種を用いて復号し、プログラム固有鍵を得る(SD22)。得たプログラム固有鍵は、外部ホストI/F50のプログラム復号用暗号エンジン54のプログラム固有鍵格納レジスタに設定する(SD23)。   First, the encrypted program unique key Enc (program unique key, MK0) and Enc (MK0, CK) stored in the non-writable area 11 of the secure memory 10 are stored in the encryption key storage register of the secret key calculation processing unit 20. (SD21). Then, the encrypted program unique key is decrypted using the program encryption type installed in the key generation / update sequencer 30 to obtain the program unique key (SD22). The obtained program unique key is set in the program unique key storage register of the program decryption cryptographic engine 54 of the external host I / F 50 (SD23).

その後、セキュアメモリ10の書き込み不可領域11に格納されているデータ固有IDを秘密鍵演算処理部20の固有ID格納レジスタに設定する(SD24)。また、CPU65によって乱数を生成し、秘密鍵演算処理部20の乱数格納レジスタに設定する(SD25)。そして、秘密鍵演算処理部20によって、データ固有IDと乱数からデータ固有鍵を生成する(SD26)。   Thereafter, the data unique ID stored in the unwritable area 11 of the secure memory 10 is set in the unique ID storage register of the secret key calculation processing unit 20 (SD24). Further, a random number is generated by the CPU 65 and set in a random number storage register of the secret key calculation processing unit 20 (SD25). Then, the secret key calculation processing unit 20 generates a data unique key from the data unique ID and the random number (SD26).

その後、外部メモリ100に格納されていた,プログラム固有鍵で暗号化されたアプリケーションプログラムEnc(アプリケーションプログラム,プログラム固有鍵)を、外部ホストI/F50が有するプログラム処理部51のプログラム復号用暗号エンジン54を介して復号し、HASH演算部70に取り込み、HASH値を演算する(SD27)。そして、この演算したHASH値と、セキュアメモリ10の通常領域13に格納されていたHASH値とを比較し、アプリケーションプログラムが改ざんされていないかどうかをチェックする(SD28)。HASH値が一致していたとき(SD29でNo)、外部メモリ100に格納されていたアプリケーションプログラムEnc(アプリケーションプログラム,プログラム固有鍵)に処理を遷移し、アプリケーションを実行する(SD2A)。一方、HASH値が一致していないとき(SD29でYes)は、何らかの不正が行われたものと推定して、不正アクセス時制御による処理を実行する(SD2B)。   After that, the application decryption encryption engine 54 of the program processing unit 51 of the external host I / F 50 stores the application program Enc (application program, program unique key) encrypted in the external memory 100 and encrypted with the program unique key. And is fetched into the HASH calculation unit 70 to calculate the HASH value (SD27). Then, the calculated HASH value is compared with the HASH value stored in the normal area 13 of the secure memory 10 to check whether the application program has been tampered with (SD28). When the HASH values match (No in SD29), the process is shifted to the application program Enc (application program, program unique key) stored in the external memory 100, and the application is executed (SD2A). On the other hand, when the HASH values do not match (Yes in SD29), it is presumed that some kind of fraud has been performed, and processing by the unauthorized access time control is executed (SD2B).

商品動作モードにおいては、スルー部52を有効にしてプログラムを入力する、またはプログラム復号用暗号エンジン54を有効にして暗号化されたプログラムを復号して入力するのみであるので、平文プログラムを実行することができないように、セキュアLSI1の動作が制限される。   In the merchandise operation mode, the plain text program is executed because only the program is input with the through section 52 enabled or the encrypted program encrypted with the program decryption encryption engine 54 enabled. Thus, the operation of the secure LSI 1 is limited.

なお、開発モードおよび商品動作モードにおいては、外部から、秘密鍵演算処理部20を用いて鍵を生成する処理を実行させようとしても、鍵生成・更新シーケンサ30によって判別されて実行されない。すなわち、鍵生成・更新シーケンサ30は、開発モードおよび商品動作モードにおいては、起動時以外にプログラム暗号種を用いることができないように動作を制限するので、鍵を生成する処理は実行することができない。   Note that, in the development mode and the product operation mode, even if a process for generating a key using the secret key calculation processing unit 20 is executed from the outside, it is determined by the key generation / update sequencer 30 and is not executed. In other words, the key generation / update sequencer 30 restricts the operation in the development mode and the product operation mode so that the program encryption type cannot be used except at the time of start-up, so the key generation processing cannot be executed. .

なお、本実施形態では、外部メモリ100にプログラムやデータが格納されており、外部ツール110に、セキュアメモリ10に実装される初期値が格納されているが、これらはどちらに格納されていてもかまわない。例えば、プログラムやデータが外部ツール110から読み込まれ、再暗号化されたとしても何ら問題はない。   In the present embodiment, programs and data are stored in the external memory 100, and initial values mounted in the secure memory 10 are stored in the external tool 110. It doesn't matter. For example, there is no problem even if a program or data is read from the external tool 110 and re-encrypted.

なお、本実施形態では、ブートプログラムによって、各処理を実行するものとしたが、本発明はこれに限られるものではなく、処理の一部または全部を、他の手段によって実行してもかまわない。ただし、外部からの指示ではなく、ブートプログラムによって処理を実行させることによって、セキュリティをより高めることができる。   In this embodiment, each process is executed by a boot program. However, the present invention is not limited to this, and a part or all of the process may be executed by other means. . However, security can be further enhanced by executing processing by a boot program instead of an instruction from the outside.

10 セキュアメモリ
11 書き換え不可領域
12 書き換え不可領域書き込みフラグ
20 秘密鍵演算処理部
30 鍵生成・更新シーケンサ
31 モードID格納レジスタ
32 暗号種別識別子格納レジスタ
33 プログラム暗号種
40 モードシーケンサ
41 モードID格納レジスタ
42 暗号種別識別子格納レジスタ
50 外部ホストI/F
51 プログラム処理部
52 スルー部
53 遅延部
54 プログラム復号用暗号エンジン
55 データ処理部
56 スルー部
57 コンテンツ暗号・復号用暗号エンジン
60 ブートROM
70 HASH演算部
100 外部メモリ
DESCRIPTION OF SYMBOLS 10 Secure memory 11 Non-rewritable area 12 Non-rewritable area write flag 20 Secret key operation processing part 30 Key generation / update sequencer 31 Mode ID storage register 32 Encryption type identifier storage register 33 Program encryption type 40 Mode sequencer 41 Mode ID storage register 42 Encryption Type identifier storage register 50 External host I / F
51 Program Processing Unit 52 Through Unit 53 Delay Unit 54 Decryption Encryption Engine 55 Data Processing Unit 56 Through Unit 57 Content Encryption / Decryption Encryption Engine 60 Boot ROM
70 HASH operation unit 100 External memory

Claims (6)

情報処理装置であって、
前記情報処理装置の動作状態には、実装処理状態と商品動作状態とがあり、
前記実装処理状態は、所定の情報を変換して、前記情報処理装置の前記商品動作状態の起動に必要な変換情報を生成する動作状態であり、
前記商品動作状態は、前記変換情報を用いて、前記情報処理装置を起動させる動作状態であり、
前記情報処理装置は、
前記所定の情報および/または前記変換情報を格納する格納手段と、
前記格納手段から前記所定の情報を読み出す読出手段と、
前記所定の情報を変換して、前記変換情報を生成する変換手段と、
生成された前記変換情報を、前記格納手段に書き出す書出手段と、
前記格納手段に格納された前記変換情報を用いて前記情報処理装置を起動させる起動手段と、
前記情報処理装置の電源が、前記情報処理装置が前記実装処理状態のときに投入された場合には、前記読出手段と前記書出手段および前記変換手段を動作させ、
前記電源が、前記情報処理装置が前記商品動作状態のときに投入された場合には、起動手段を動作させる状態制御手段とを備えた
ことを特徴とする情報処理装置。
An information processing apparatus,
The operation state of the information processing apparatus includes a mounting process state and a product operation state,
The mounting process state is an operation state that converts predetermined information and generates conversion information necessary for starting the product operation state of the information processing apparatus,
The product operation state is an operation state in which the information processing apparatus is activated using the conversion information,
The information processing apparatus includes:
Storage means for storing the predetermined information and / or the conversion information;
Reading means for reading the predetermined information from the storage means;
Conversion means for converting the predetermined information to generate the conversion information;
Writing means for writing the generated conversion information to the storage means;
Starting means for starting the information processing apparatus using the conversion information stored in the storage means;
When the information processing apparatus is powered on when the information processing apparatus is in the mounting processing state, the reading unit, the writing unit, and the conversion unit are operated,
An information processing apparatus comprising: state control means for operating an activation means when the power is turned on when the information processing apparatus is in the product operating state.
請求項1において、
前記変換手段は、前記情報の変換に鍵情報を使用し、
前記情報処理装置は、さらに、
前記鍵情報を記録する鍵記録手段を備え、
前記鍵記録手段は、前記鍵情報を、前記情報処理装置外からのアクセスから保護された状態で記録する
ことを特徴とする情報処理装置。
In claim 1,
The converting means uses key information for converting the information;
The information processing apparatus further includes:
A key recording means for recording the key information;
The information processing apparatus, wherein the key recording unit records the key information in a state protected from access from outside the information processing apparatus.
請求項1において、
前記書出手段による書き出しの処理が完了したとき、前記情報処理装置の動作状態を前記商品動作状態に設定する状態設定手段を備えた
ことを特徴とする情報処理装置。
In claim 1,
An information processing apparatus comprising: state setting means for setting an operation state of the information processing apparatus to the product operation state when the writing process by the writing unit is completed.
請求項3において、
前記状態設定手段は、
前記情報処理装置の動作状態が前記商品動作状態であるか否かを示す状態情報を記録する状態情報記録部と、
前記書出手段による前記変換情報の書き出しが完了したとき、前記状態情報を、前記商品動作状態であることを示す情報に更新する状態更新部とを備えた
ことを特徴とする情報処理装置。
In claim 3,
The state setting means includes
A state information recording unit that records state information indicating whether the operation state of the information processing apparatus is the product operation state;
An information processing apparatus comprising: a state update unit configured to update the state information to information indicating that the product is in an operation state when writing of the conversion information by the writing unit is completed.
請求項4において、
前記状態情報記録部は、前記情報処理装置内に設けられたセキュアメモリである
ことを特徴とする情報処理装置。
In claim 4,
The information processing apparatus, wherein the state information recording unit is a secure memory provided in the information processing apparatus.
請求項1において、
前記書出手段による前記格納手段への前記変換情報の書き出しが完了したとき、前記格納手段から前記所定の情報を削除する削除手段を備えた
ことを特徴とする情報処理装置。
In claim 1,
An information processing apparatus comprising: a deletion unit that deletes the predetermined information from the storage unit when the writing of the conversion information to the storage unit by the writing unit is completed.
JP2009256333A 2009-11-09 2009-11-09 Information processor Pending JP2010033603A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009256333A JP2010033603A (en) 2009-11-09 2009-11-09 Information processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009256333A JP2010033603A (en) 2009-11-09 2009-11-09 Information processor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009112759A Division JP2009169989A (en) 2009-05-07 2009-05-07 Program mounting method and information processing apparatus

Publications (1)

Publication Number Publication Date
JP2010033603A true JP2010033603A (en) 2010-02-12

Family

ID=41737904

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009256333A Pending JP2010033603A (en) 2009-11-09 2009-11-09 Information processor

Country Status (1)

Country Link
JP (1) JP2010033603A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105117665A (en) * 2015-07-16 2015-12-02 福建联迪商用设备有限公司 Method and system for safely switching between terminal product mode and development mode
CN105120066A (en) * 2015-07-16 2015-12-02 福建联迪商用设备有限公司 Method and system for safely switching terminal product mode and development mode

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11259330A (en) * 1998-03-06 1999-09-24 Hitachi Ltd Module for evaluation, microcomputer chip for evaluation and debugging system
JP2000122931A (en) * 1998-10-15 2000-04-28 Toshiba Corp Digital integrated circuit
WO2000057278A1 (en) * 1999-03-19 2000-09-28 Hitachi, Ltd. Information processing device
JP2004054834A (en) * 2002-07-24 2004-02-19 Matsushita Electric Ind Co Ltd Program development method, program development support device, and program packaging method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11259330A (en) * 1998-03-06 1999-09-24 Hitachi Ltd Module for evaluation, microcomputer chip for evaluation and debugging system
JP2000122931A (en) * 1998-10-15 2000-04-28 Toshiba Corp Digital integrated circuit
WO2000057278A1 (en) * 1999-03-19 2000-09-28 Hitachi, Ltd. Information processing device
JP2004054834A (en) * 2002-07-24 2004-02-19 Matsushita Electric Ind Co Ltd Program development method, program development support device, and program packaging method

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105117665A (en) * 2015-07-16 2015-12-02 福建联迪商用设备有限公司 Method and system for safely switching between terminal product mode and development mode
CN105120066A (en) * 2015-07-16 2015-12-02 福建联迪商用设备有限公司 Method and system for safely switching terminal product mode and development mode
WO2017008730A1 (en) * 2015-07-16 2017-01-19 福建联迪商用设备有限公司 Method and system for securely switching terminal between product mode and development mode
CN105117665B (en) * 2015-07-16 2017-10-31 福建联迪商用设备有限公司 A kind of end product pattern and the method and system of development mode handoff-security
CN105120066B (en) * 2015-07-16 2017-12-08 福建联迪商用设备有限公司 A kind of end product pattern and the method and system of development mode handoff-security

Similar Documents

Publication Publication Date Title
JP4099039B2 (en) Program update method
JP3881942B2 (en) Semiconductor device having encryption unit
US9842212B2 (en) System and method for a renewable secure boot
KR101735023B1 (en) Method and apparatus including architecture for protecting sensitive code and data
US8190912B2 (en) Program development method, program development supporting system, and program installation method
JP2008204459A (en) Hibernation of processing apparatus for processing secure data
US20170046280A1 (en) Data processing device and method for protecting a data processing device against attacks
EP2270707B1 (en) Loading secure code into a memory
Maene et al. Atlas: Application confidentiality in compromised embedded systems
JP2010033603A (en) Information processor
JP2009169989A (en) Program mounting method and information processing apparatus
JP2007249996A (en) Program development support device and program installation method
JP4580024B2 (en) Content playback method
JP4336690B2 (en) Semiconductor device having external interface
JP4676547B2 (en) Semiconductor device and boot method thereof
JP4580030B2 (en) Secure device
JP2007272923A (en) Server
JP2007272923A5 (en)
JP2010033613A (en) Information processor
CN111291389A (en) Protection method and system for full life cycle of computer core program
JP2004280678A (en) Data processor and data processing method
JP2007013835A (en) Encoded data decoding device and its method
JP2004103027A (en) Game controller
JP2011091735A (en) Encryption method and decryption method, encryption program and decryption program, and encryption system and decryption system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100302

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100422

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100803