JP2019096338A - Semiconductor device and semiconductor device sales model - Google Patents

Semiconductor device and semiconductor device sales model Download PDF

Info

Publication number
JP2019096338A
JP2019096338A JP2019017617A JP2019017617A JP2019096338A JP 2019096338 A JP2019096338 A JP 2019096338A JP 2019017617 A JP2019017617 A JP 2019017617A JP 2019017617 A JP2019017617 A JP 2019017617A JP 2019096338 A JP2019096338 A JP 2019096338A
Authority
JP
Japan
Prior art keywords
program
secure
area
address
secure program
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
JP2019017617A
Other languages
Japanese (ja)
Inventor
国泰 石原
Kuniyasu Ishihara
国泰 石原
植木 浩
Hiroshi Ueki
浩 植木
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2019017617A priority Critical patent/JP2019096338A/en
Publication of JP2019096338A publication Critical patent/JP2019096338A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

To provide a semiconductor device with which it is possible to operate a microprocessor as desired while protecting a secure program.SOLUTION: The semiconductor device comprises a memory equipped with a first program area in which a discretionary program is stored and a second program area in which a secure program is stored, a microprocessor CPU for outputting an address that indicates an instruction in the program, and a memory protection unit 204 for controlling access to the memory on the basis of the address outputted from the microprocessor CPU. When the address outputted due to execution of the program by the microprocessor CPU in the first program area indicates a branching-permitted area in the second program area, the memory protection unit 204 permits access to the memory; when it indicates a branching-prohibited area, the memory protection unit 204 prohibits access to the memory.SELECTED DRAWING: Figure 3

Description

本発明は、半導体装置に関し、特にマイクロプロセッサと電気的に書き換え可能な不揮発性メモリとが、1個の半導体チップに内蔵された半導体装置に関する。   The present invention relates to a semiconductor device, and more particularly to a semiconductor device in which a microprocessor and an electrically rewritable non-volatile memory are incorporated in one semiconductor chip.

マイクロプロセッサ(以下、中央処理ユニットとも称する)と電気的に書き換え可能な不揮発性メモリを、1個の半導体チップに内蔵した半導体装置が、例えばマイクロコンピュータとして知られている。このようなマイクロコンピュータは、セキュリティが要求される製品分野でも多く使われている。セキュリティが要求される製品分野でマイクロコンピュータを用いる場合、セキュリティに対するアタックは、マイクロコンピュータの外部から行われることが主である。そのため、セキュリティを守るために、マイクロコンピュータは、その外部からのアタックに対して耐性が高くなるようにされているが、マイクロコンピュータ内でのアタックに対する耐性は弱い場合が多い。   For example, a semiconductor device in which a non-volatile memory electrically rewritable with a microprocessor (hereinafter, also referred to as a central processing unit) is incorporated in one semiconductor chip is known as a microcomputer, for example. Such microcomputers are also widely used in product areas where security is required. When using a microcomputer in a product field where security is required, attacks on security are mainly performed from the outside of the microcomputer. Therefore, in order to protect security, although the microcomputer is made to be highly resistant to attacks from the outside, the resistance to attacks in the microcomputer is often weak.

マイクロコンピュータに内蔵されたマイクロプロセッサは、例えばリアルタイムオペレーティングシステム(以下、RTOSとも称する)で動作し、このRTOS上でアプリケーションプログラムが動作する。この場合、RTOSを、アプリケーションプログラムの暴走から守るために、例外割り込みを発生し、特権モードで動作させるようにすることが行われる。これにより、マイクロコンピュータ内で、アプリケーションプログラムを、悪意をもって暴走させても、RTOSを守ることが可能となる。しかしながら、電源ノイズ等を繰り返し与えるようなアタックに対しては弱いと言う問題がある。   A microprocessor built in the microcomputer operates, for example, in a real time operating system (hereinafter also referred to as RTOS), and an application program operates on this RTOS. In this case, in order to protect the RTOS from runaway application programs, an exception interrupt is generated to operate in a privileged mode. This makes it possible to protect the RTOS even if the application program is run away with malicious intent in the microcomputer. However, there is a problem that it is weak against an attack that repeatedly applies power supply noise and the like.

コンピュータシステムの保護に関する技術としては、例えば特許文献1に記載されている技術がある。   As a technology relating to protection of a computer system, there is a technology described in Patent Document 1, for example.

特開2007−304954号公報Unexamined-Japanese-Patent No. 2007-304954

本発明者らは、半導体装置を販売する新たなビジネスモデルを考えた。この新たな半導体装置販売モデルについては、後で詳しく説明するが、ここでは解決しようとする課題を説明するために、この新たな半導体装置販売モデルの概要を説明しておく。   The present inventors considered a new business model for selling semiconductor devices. Although this new semiconductor device sales model will be described in detail later, an outline of this new semiconductor device sales model will be described in order to explain the problem to be solved.

新たな半導体装置販売モデルでは、RTOSのようなセキュリティが担保されるべきプログラム(以下、セキュアプログラムとも称する)が、マイクロコンピュータの不揮発性メモリに予め格納されて、販売される。すなわち、マイクロコンピュータのような半導体装置を用いるユーザーへ提供される。マイクロコンピュータを購入したユーザーは、例えばRTOS上で動作するユーザープログラムを作成し、不揮発性メモリに格納する。この場合、ユーザーは、RTOSの備えている機能を利用したユーザープログラムを作成すればよいため、ユーザープログラムの作成が容易となる。その結果、ユーザーは、ユーザーが望む機能を有するマイクロコンピュータ(半導体装置)を、容易に製造することが可能となる。   In the new semiconductor device sales model, a program such as an RTOS (hereinafter, also referred to as a secure program) for which security should be secured is stored in advance in a nonvolatile memory of a microcomputer and sold. That is, it is provided to a user who uses a semiconductor device such as a microcomputer. The user who has purchased the microcomputer creates, for example, a user program operating on the RTOS and stores it in the non-volatile memory. In this case, the user needs only to create a user program using the functions provided by the RTOS, which facilitates the creation of the user program. As a result, the user can easily manufacture a microcomputer (semiconductor device) having a function desired by the user.

この場合、マイクロコンピュータを販売(提供)する者(以下、販売者とも称する)は、例えばRTOSのようなプログラムを格納していない不揮発性メモリを内蔵したマイクロコンピュータの対価に、RTOSのようなプログラムの対価を加えて、販売価格として販売する。これにより、販売者は、収益を上げることが可能となり、ユーザーは、ユーザープログラムの作成が容易なマイクロプロセッサを使うことができ、所望の機能を有するマイクロコンピュータを容易に得ることが可能となる。すなわち、販売者およびユーザーの双方でメリットが生じることになる。   In this case, a person who sells (provides) a microcomputer (hereinafter, also referred to as a seller) may, for example, use a program such as RTOS at the price of a microcomputer incorporating a non-volatile memory such as RTOS that does not store a program And the sale price as a sale price. This enables the seller to make a profit, allows the user to use a microprocessor that can easily create a user program, and easily obtains a microcomputer having a desired function. That is, benefits will arise for both the seller and the user.

この半導体装置販売モデルでは、ユーザーが、RTOS上で動作するプログラムを作成することになる。すなわち、マイクロコンピュータに内蔵されたマイクロプロセッサを操作するプログラムを、ユーザーが作成することになる。そのため、マイクロコンピュータにおいては、ユーザーのプログラムから、RTOSが備えている機能を、任意に呼び出すことが可能となるようにしておくことが要求される。   In this semiconductor device sales model, the user creates a program operating on the RTOS. That is, the user creates a program for operating the microprocessor built in the microcomputer. Therefore, in the microcomputer, it is required that the user's program can make it possible to arbitrarily call the function provided in the RTOS.

ここで、ユーザーが、マイクロプロセッサを、任意に操作するプログラムを作成することが可能であり、RTOSの機能も任意にアクセスすることが可能であることにより、新たな課題が発生する。例えば、ユーザーは、RTOSをコピーするようなユーザープログラム、すなわちハッキングプログラムを作成することも可能となることが危惧される。悪意を持って、RTOSをコピーされた場合、例えば、安価なマイクロコンピュータを購入し、そのマイクロコンピュータにコピーしたRTOSを格納することも可能となってしまう。このことは、販売者のメリットが失われてしまうことに繋がる。   Here, it is possible for the user to create a program for operating the microprocessor arbitrarily, and for the function of the RTOS to be arbitrarily accessed, which causes a new problem. For example, it is feared that the user can also create a user program that copies the RTOS, that is, a hacking program. When the RTOS is copied with malicious intent, for example, it becomes possible to purchase an inexpensive microcomputer and store the copied RTOS in the microcomputer. This leads to the loss of the seller's merit.

特許文献1には、バッファオーバーフロー攻撃等による記憶領域内の機密データに対する削除、改竄、漏洩等を防止可能なコンピュータシステムに関する技術が記載されている。すなわち、特許文献1の図1に示されているコンピュータシステム(1)は、記憶領域(19)のアドレス毎のCPU(10)からのプログラム実行用のアクセス権の有無を設定したアクセス制御メモリマップを記憶するメモリマップ回路(15)と、アクセス権判定回路(16)を備えている。アクセス権判定回路(16)は、プログラムカウンタ(20)で指定される実行プログラム格納アドレス(Spc)の記憶領域へのCPU(10)からのアクセス権の有無を、アクセス制御メモリマップに基づいて判定し、アクセス権がない場合には、CPU(10)から実行プログラム格納アドレスの記憶領域へのアクセスを不能にする所定の処理をCPU(10)に実行させるアクセス禁止信号(SC)を出力する。   Patent Document 1 describes a technology related to a computer system capable of preventing deletion, falsification, leakage and the like of confidential data in a storage area by a buffer overflow attack or the like. That is, the computer system (1) shown in FIG. 1 of Patent Document 1 has an access control memory map in which the presence or absence of the access right for program execution from the CPU (10) for each address of the storage area (19) is set. And an access right determination circuit (16). The access right determination circuit (16) determines the presence or absence of the access right from the CPU (10) to the storage area of the execution program storage address (Spc) specified by the program counter (20) based on the access control memory map If there is no access right, the CPU (10) outputs an access inhibition signal (SC) that causes the CPU (10) to execute predetermined processing that disables access to the storage area of the execution program storage address.

これにより、コンピュータシステム(1)の外部からのアタック、例えば電源ノイズを加えることにより、CPUを暴走させるアタックに対して、コンピュータシステムを保護することが可能となる。   This makes it possible to protect the computer system against an attack from outside the computer system (1), for example, an attack that causes the CPU to run away by adding power supply noise.

しかしながら、これはコンピュータシステムの外部からのアタックに対する技術に関するものであり、マイクロプロセッサであるCPUを任意に操作することが可能な場合のアタックに対しては意識されていない。勿論、新たな半導体装置販売モデルについては、記載もされていない。   However, this relates to a technique against an attack from the outside of the computer system, and is not aware of an attack when it is possible to arbitrarily operate the CPU which is a microprocessor. Of course, a new semiconductor device sales model is not described.

一実施の形態による半導体装置は、任意のプログラムが格納される第1プログラム領域と、セキュリティが担保されるべきプログラムが格納される第2プログラム領域とを備えたメモリと、プログラム内の命令を指定するアドレスを出力する中央処理ユニット(マイクロプロセッサ)と、中央処理ユニットから出力されるアドレスに基づいて、メモリへのアクセスを制御するメモリプロテクションユニットを備える。中央処理ユニットが、第1プログラム領域におけるプログラムを実行することにより出力するアドレスが、第2プログラム領域における第1領域を指定するとき、メモリプロテクションユニットは、中央処理ユニットによるメモリへのアクセスを許可し、第1領域とは異なる第2領域を指定するとき、メモリプロテクションユニットは、中央処理ユニットによるメモリへのアクセスを禁止する。   A semiconductor device according to one embodiment designates a memory in a first program area in which an arbitrary program is stored, a second program area in which a program whose security is to be secured is stored, and an instruction in the program And a memory protection unit for controlling access to the memory based on the address output from the central processing unit. When the central processing unit issues an address output by executing a program in the first program area designates the first area in the second program area, the memory protection unit permits the central processing unit to access the memory. When specifying a second area different from the first area, the memory protection unit prohibits the central processing unit from accessing the memory.

すなわち、第1プログラム領域における任意のプログラムが、セキュリティが担保されるべきプログラムが格納される第2プログラム領域の第1領域をアクセスした際には、そのアクセスが許可され、第2プログラム領域の第2領域がアクセスされた際には、アクセスが禁止される。これにより、セキュリティが担保されるべきプログラムを、任意のプログラムから使うことが可能になるとともに、セキュリティが担保されるべきプログラムを保護することが可能となる。   That is, when an arbitrary program in the first program area accesses the first area of the second program area where the program whose security is to be secured is stored, the access is permitted, and the second program area When the two areas are accessed, access is prohibited. This makes it possible to use a program whose security is to be secured from any program and to protect a program whose security is to be secured.

また、他の一実施の形態による半導体装置は、セキュリティが担保されるべきプログラムが格納された電気的に書き換え可能な不揮発性メモリと、実行されるべき命令を指定するアドレスを出力する中央処理ユニットと、中央処理ユニットから出力されているアドレスが、不揮発性メモリにおいて、セキュリティが担保されるべきプログラムが格納されるセキュアプログラム領域を指定しているか否かを検出するメモリプロテクションユニットを備えている。さらに半導体装置は、不揮発性メモリの書き換えを制御する不揮発性メモリ書き換え制御回路と、不正アクセス検出回路を備えている。ここで、不正アクセス検出回路は、メモリプロテクションユニットが、中央処理ユニットから出力されているアドレスが、セキュアプログラム領域内を指定していないことを検出しているとき、不揮発性メモリ書き換え制御ユニットに書き換えを禁止させる。   A semiconductor device according to another embodiment of the present invention is a central processing unit that outputs an electrically rewritable non-volatile memory in which a program whose security is to be secured is stored and an address specifying an instruction to be executed. And a memory protection unit for detecting whether or not the address output from the central processing unit designates, in the non-volatile memory, a secure program area in which a program whose security is to be secured is stored. The semiconductor device further includes a non-volatile memory rewrite control circuit that controls rewrite of the non-volatile memory, and an unauthorized access detection circuit. Here, the unauthorized access detection circuit rewrites the non-volatile memory rewrite control unit when the memory protection unit detects that the address output from the central processing unit does not designate the secure program area. To ban

これにより、中央処理ユニットが、セキュアプログラム領域におけるプログラムを実行していないとき、電気的に書き換え可能な不揮発性メモリの書き換えが禁止される。言い換えるならば、ユーザープログラムが実行されるノンセキュアプログラム領域において、プログラムが実行されているときには、電気的に書き換え可能な不揮発性メモリの書き換えが禁止される。その結果、セキュリティが担保されるべきプログラムの書き換えを可能にするとともに、ノンセキュアプログラム領域におけるプログラムによる書き換えから、セキュアプログラム領域におけるプログラムを保護することが可能となる。   Thus, when the central processing unit is not executing the program in the secure program area, the rewrite of the electrically rewritable nonvolatile memory is prohibited. In other words, in the non-secure program area where the user program is executed, rewriting of the electrically rewritable nonvolatile memory is prohibited when the program is executed. As a result, it is possible to rewrite the program whose security is to be secured, and to protect the program in the secure program area from being rewritten by the program in the non-secure program area.

さらに、他の一実施の形態においては、セキュリティが担保されるべきプログラムが暗号化されて、1つの半導体チップに形成された半導体装置へ提供される。ここで、半導体装置は、電気的に書き換え可能な不揮発性メモリと、不揮発性メモリに結合され、書き込まれたプログラムを実行することが可能な中央処理ユニットと、暗号化されて提供されたプログラムの暗号を復号化する復号回路と、復号回路によって復号されたプログラムを、直接不揮発性メモリへ書き込む書き換え回路を備えている。   Furthermore, in another embodiment, a program to be secured is encrypted and provided to a semiconductor device formed in one semiconductor chip. Here, the semiconductor device includes an electrically rewritable non-volatile memory, a central processing unit coupled to the non-volatile memory and capable of executing the written program, and an encrypted program provided A decryption circuit that decrypts the encryption and a rewriting circuit that writes the program decrypted by the decryption circuit directly to the non-volatile memory are provided.

これにより、中央処理ユニットを、ユーザープログラムによって任意に動作させることを可能とした場合でも、復号されたプログラムは、直接不揮発性メモリへ書き込まれるため、プログラムを保護することが可能となる。   Thus, even if the central processing unit can be operated arbitrarily by the user program, the decrypted program is directly written to the non-volatile memory, so that the program can be protected.

一実施の形態によれば、セキュアプログラムを保護しながら、中央処理ユニットを任意に操作することが可能な半導体装置を提供することができる。   According to one embodiment, it is possible to provide a semiconductor device capable of arbitrarily operating the central processing unit while protecting a secure program.

実施の形態1に係わる半導体装置販売モデルの構成を示すシステム図である。FIG. 1 is a system diagram showing a configuration of a semiconductor device sales model according to a first embodiment. 実施の形態1に係わるマイクロコンピュータの構成を示すブロック図である。FIG. 1 is a block diagram showing a configuration of a microcomputer according to Embodiment 1; 実施の形態1に係わるメモリプロテクションユニットの構成を示すブロック図である。FIG. 2 is a block diagram showing a configuration of a memory protection unit according to Embodiment 1. メモリのプロテクションを説明する説明図である。It is an explanatory view explaining protection of a memory. セキュアプログラムの模式図である。It is a schematic diagram of a secure program. 実施の形態1に係わるメモリプロテクションユニットによるメモリのプロテクションを説明する説明図である。FIG. 5 is an explanatory diagram for explaining protection of a memory by a memory protection unit according to the first embodiment. (A)および(B)は、実施の形態1に係わるフェッチ開始アドレス監視回路、フェッチアドレス比較回路の構成を示すブロック図およびセキュアプログラム領域を示す説明図である。(A) and (B) are a block diagram showing configurations of a fetch start address monitoring circuit and a fetch address comparing circuit according to the first embodiment, and an explanatory view showing a secure program area. (A)〜(D)は、実施の形態1に係わるメモリプロテクションユニットの動作を示すタイミング図である。(A)-(D) are timing diagrams which show operation | movement of the memory protection unit concerning Embodiment 1. FIG. (A)〜(D)は、実施の形態1に係わるメモリプロテクションユニットの動作を示すタイミング図である。(A)-(D) are timing diagrams which show operation | movement of the memory protection unit concerning Embodiment 1. FIG. 実施の形態1に係わるメモリプロテクションユニットの動作を示す表である。5 is a table showing the operation of the memory protection unit according to the first embodiment. 実施の形態1の変形例に係わるメモリプロテクションユニットによるメモリのプロテクションを説明する説明図である。FIG. 18 is an explanatory diagram for explaining protection of a memory by a memory protection unit according to a modification of the first embodiment. 実施の形態2に係わるフラッシュメモリに格納されるデータの配置を示す配置図である。FIG. 16 is a layout view showing a layout of data stored in a flash memory according to a second embodiment. 実施の形態2に係わるマイクロコンピュータの構成を示すブロック図である。FIG. 7 is a block diagram showing the configuration of a microcomputer according to Embodiment 2; 実施の形態2に係わる不正アクセス検出回路の構成を示すブロック図である。FIG. 7 is a block diagram showing a configuration of an unauthorized access detection circuit according to a second embodiment. 実施の形態3に係わるマイクロコンピュータの構成を示すブロック図である。FIG. 10 is a block diagram showing a configuration of a microcomputer according to Embodiment 3. 実施の形態4に係わるマイクロプロセッサの構成を示すブロック図である。FIG. 16 is a block diagram showing the configuration of a microprocessor according to Embodiment 4; マイクロプロセッサの動作を示すフローチャート図である。It is a flowchart figure which shows operation | movement of a microprocessor. 実施の形態4に係わるマイクロプロセッサの動作を示すフローチャート図である。FIG. 14 is a flowchart showing the operation of the microprocessor according to the fourth embodiment. 実施の形態4に係わるマイクロプロセッサの構成を示すブロック図である。FIG. 16 is a block diagram showing the configuration of a microprocessor according to Embodiment 4; 実施の形態4に係わるマイクロプロセッサの動作を示すフローチャート図である。FIG. 14 is a flowchart showing the operation of the microprocessor according to the fourth embodiment.

以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部分には原則として同一の符号を付し、その繰り返しの説明は、原則として省略する。   Hereinafter, embodiments of the present invention will be described in detail based on the drawings. Note that, in all the drawings for describing the embodiments, in principle, the same reference numerals are given to the same parts, and the repetitive description thereof will be omitted in principle.

(実施の形態1)
<半導体装置販売モデル>
複数の実施の形態を以下説明するが、それぞれの実施の形態で説明する半導体装置は、本発明者らが考えた新たな販売モデルに従って販売される。先ずここで、本発明者らが考えた半導体装置販売モデルの説明をする。
Embodiment 1
<Semiconductor device sales model>
Although a plurality of embodiments will be described below, the semiconductor device described in each embodiment is sold according to a new sales model considered by the present inventors. First, a semiconductor device sales model considered by the present inventors will be described.

図1は、実施の形態に係わる半導体装置販売モデルの構成を示すシステム図である。同図において、100は、半導体装置販売モデルを示している。特に制限されないが、この実施の形態においては、半導体装置販売モデル100は、販売者PRD、ユーザーUSRおよびプログラムを提供する第3者OTHによって構成されている。   FIG. 1 is a system diagram showing the configuration of a semiconductor device sales model according to the embodiment. In the figure, reference numeral 100 denotes a semiconductor device sales model. Although not particularly limited, in this embodiment, the semiconductor device sales model 100 is configured by a seller PRD, a user USR, and a third party OTH that provides a program.

販売者PRDは、マイクロコンピュータLSIを、ユーザーUSRに対して販売する。マイクロコンピュータLSIは、周知の半導体製造方法によって、複数の回路ブロックが、1個の半導体チップに形成されている。半導体チップに形成された複数の回路ブロックには、電気的に書き換え可能な不揮発性メモリFRM、不揮発性メモリFRMに書き込まれたプログラムに従って動作するマイクロプロセッサ(以下、中央処理ユニットとも称する)CPUおよびライセンス管理ユニットRCNTが含まれている。このマイクロコンピュータLSIは、販売者PRDが製造してもよいし、図示しない半導体製造メーカが製造し、販売者PRDが販売するようにしてもよい。   The seller PRD sells the microcomputer LSI to the user USR. In the microcomputer LSI, a plurality of circuit blocks are formed on one semiconductor chip by a known semiconductor manufacturing method. The plurality of circuit blocks formed on the semiconductor chip include an electrically rewritable nonvolatile memory FRM, a microprocessor (hereinafter also referred to as a central processing unit) CPU and a license that operate according to a program written in the nonvolatile memory FRM. A management unit RCNT is included. This microcomputer LSI may be manufactured by the seller PRD, or may be manufactured by a semiconductor manufacturer (not shown) and sold by the seller PRD.

販売者PRDは、多種類のプログラムが格納されたサーバP−SVを有している。サーバP−SVに格納されているプログラムには、プログラムを実行する際に、ライセンスの許諾が要求される有償プログラムと、ライセンスの許諾が要求されない無償プログラムとが含まれている。販売者PRDは、ユーザーUSRへ、マイクロコンピュータLSIを販売する前に、マイクロコンピュータLSI内の不揮発性メモリFRMに、1種類あるいは複数種類のプログラムを書き込む。ここでは、有償プログラムであるRTOSのプログラムが、不揮発性メモリFRMに書き込まれるものとして説明する。有償プログラムであるRTOSのプログラムは、不正にコピー等を作成されては、ライセンス料金が未回収となる。そのため、RTOSのプログラムは、セキュリティが担保されるべきプログラム、すなわちセキュアプログラムに該当する。   The seller PRD has a server P-SV in which many types of programs are stored. The programs stored in the server P-SV include a paid program that is required to be granted a license and a free program that is not required to be granted a license when the program is executed. Before selling the microcomputer LSI to the user USR, the seller PRD writes one or more types of programs in the non-volatile memory FRM in the microcomputer LSI. Here, it is assumed that the program of the RTOS, which is a paid program, is written to the non-volatile memory FRM. If the program of RTOS, which is a paid program, is illegally created as a copy etc., the license fee will not be collected. Therefore, the RTOS program corresponds to a program whose security is to be secured, ie, a secure program.

販売者PRDが、ユーザーUSRにマイクロコンピュータLSIを販売する際、不揮発性メモリFRMにプログラムを書き込んでいない状態のマイクロコンピュータLSIの対価に、有償プログラムであるRTOSのライセンスを許諾する際に要求されるライセンス料金(ライセンス対価)を加算して、RTOSのプログラムが不揮発性メモリFRMに書き込まれたマイクロコンピュータの対価(販売価格)を定める。なお、販売促進等のために、RTOSのプログラムが不揮発性メモリFRMに書き込まれたマイクロコンピュータの販売価格は、変動する。   When selling the microcomputer LSI to the user USR, the seller PRD is required to license the RTOS, which is a paid program, for the value of the microcomputer LSI in a state where the program is not written in the non-volatile memory FRM. The license fee (license consideration) is added to determine the value (sales price) of the microcomputer in which the RTOS program is written to the non-volatile memory FRM. The selling price of the microcomputer in which the program of the RTOS is written in the non-volatile memory FRM for sales promotion and the like fluctuates.

ユーザーUSRは、破線で示すように、RTOSのプログラムのライセンス料金を含めた対価を支払うことによって、RTOSのプログラムが予め書き込まれた不揮発性メモリFRMを有するマイクロコンピュータLSIを購入する。ユーザーUSRは、特に制限されないが、サーバU−SVを有している。サーバU−SVは、例えばネットワークNTWを介して、販売者PRDのサーバP−SVまたは/および第3者OTHのサーバO−SVに接続されている。ユーザーUSRは、ネットワークNTWを介して、販売者PRDまたは/および第3者のサーバP−SV、O−SVから、有償プログラムまたは/および無償プログラムを、サーバU−SVにダウンロードし、サーバU−SVに格納する。ユーサーUSRは、購入したマイクロコンピュータLSIで所望の機能が達成されるように、例えばユーザーUSR自身が作成したユーザープログラムU−APとサーバU−SVに格納されているプログラムO−APを、購入したマイクロコンピュータLSIの不揮発性メモリFRMに書き込む。   The user USR purchases the microcomputer LSI having the nonvolatile memory FRM in which the program of the RTOS is written in advance by paying the price including the license fee of the program of the RTOS as shown by a broken line. The user USR includes, but is not limited to, a server U-SV. The server U-SV is connected to the server P-SV of the seller PRD and / or the server O-SV of the third party OTH, for example, via the network NTW. The user USR downloads a paid program or / and a free program to the server U-SV from the seller PRD or / and the third party server P-SV, O-SV via the network NTW to the server U-SV. Store in SV. Uther USR purchased, for example, the user program U-AP created by the user USR itself and the program O-AP stored in the server U-SV so that the desired function is achieved by the purchased microcomputer LSI. It writes in non-volatile memory FRM of microcomputer LSI.

この場合、ユーザープログラムU−APおよびサーバU−SVからのプログラムO−APは、RTOSのプログラム上で動作するように、作成されている。例えば、RTOSのプログラムにおけるサブルーチンを、有効に使うように、ユーザープログラムU−APとプログラムO−APは作成されている。マイクロプロセッサCPUが、不揮発性メモリFRMに格納されているRTOSのプログラム、ユーザープログラムU−APおよびプログラムO−APを実行することにより、ユーザーUSRが、所望する機能が、マイクロコンピュータLSIによって実現される。   In this case, the user program U-AP and the program O-AP from the server U-SV are created to operate on the RTOS program. For example, the user program U-AP and the program O-AP have been created so as to effectively use the subroutine in the RTOS program. A function desired by the user USR is realized by the microcomputer LSI by the microprocessor CPU executing the RTOS program, the user program U-AP and the program O-AP stored in the non-volatile memory FRM. .

ユーザーは、ユーザープログラムU−APを作成する際に、RTOSのプログラムを利用するように作成する。これにより、ユーザープログラムU−APを作成する際のユーザーUSRの負担を低減することが可能となる。   The user creates the user program U-AP so as to use the RTOS program. This makes it possible to reduce the burden on the user USR when creating the user program U-AP.

特に制限されないが、この実施の形態においては、マイクロコンピュータLSIは、ライセンス管理ユニットRCNTを備えている。販売者PRDは、ユーザーUSRへマイクロコンピュータLSIを販売する際に、ユーザーUSRが希望するライセンスの数に相当するライセンス情報を、不揮発性メモリFRMに書き込んで販売する。この場合のマイクロコンピュータLSIの販売価格は、ユーザーUSRが希望するライセンスの数に対応したライセンス料金を、さらに含むことになる。   Although not particularly limited, in this embodiment, the microcomputer LSI includes a license management unit RCNT. When selling the microcomputer LSI to the user USR, the seller PRD writes and sells license information corresponding to the number of licenses desired by the user USR in the non-volatile memory FRM. The selling price of the microcomputer LSI in this case further includes a license fee corresponding to the number of licenses desired by the user USR.

ユーザーUSRが、不揮発性メモリFRMにプログラムを書き込むとき、ライセンス管理ユニットRCNTは、書き込むプログラムが有償プログラムであるか否かを判定する。書き込むプログラムが、有償プログラムであった場合、不揮発性メモリFRMに予め格納されているライセンス情報を参照し、ライセンスの数が1以上か否かを判定する。ライセンスの数が1以上であれば、ライセンス管理ユニットRCNTは、プログラムを、不揮発性メモリFRMへ書き込み、ライセンスの数が1未満であれば、不揮発性メモリFRMへの書き込みを禁止する。また、プログラムを不揮発性メモリFRMへ書き込んだ場合には、ライセンス管理ユニットRCNTは、不揮発性メモリFRMに格納されているライセンス情報によって表されるライセンス数の数を1減らすように更新する。   When the user USR writes a program in the non-volatile memory FRM, the license management unit RCNT determines whether the program to be written is a paid program. If the program to be written is a paid program, the license information stored in advance in the non-volatile memory FRM is referenced to determine whether the number of licenses is one or more. If the number of licenses is one or more, the license management unit RCNT writes the program to the non-volatile memory FRM, and if the number of licenses is less than one, the writing to the non-volatile memory FRM is inhibited. When the program is written to the non-volatile memory FRM, the license management unit RCNT updates the number of licenses represented by the license information stored in the non-volatile memory FRM so as to reduce the number of licenses by one.

この実施の形態においては、ライセンス料金が、マイクロコンピュータLSIを購入する際に、プリペイドされていることになり、プリペイドされたライセンス料金が不足するまで、ユーザーUSRは、不揮発性メモリFRMに有償プログラムをインストールし、実行することが可能となる。このように、ライセンス料金がプリペイドされているため、ライセンス料金の未回収を防ぐことが可能になるとともに、ライセンス料金の支払いの管理も容易となる。   In this embodiment, the license fee is prepaid when the microcomputer LSI is purchased, and the user USR uses the paid program in the non-volatile memory FRM until the prepaid license fee runs short. It will be possible to install and run. As described above, since the license fee is prepaid, it is possible to prevent the license fee from being uncollected, and to facilitate the management of the license fee payment.

ここでは、ユーザーUSRの希望ライセンス数に相当するライセンス情報を、販売者PRDが販売前に不揮発性メモリFRMに書き込む例を示したが、これに限定されるものではない。例えば、予め決まったライセンス数に相当するライセンス情報が書き込まれたマイクロコンピュータLSIを、販売者PRDが準備しておくようにしてもよい。   Here, an example has been shown in which the seller PRD writes license information corresponding to the number of licenses desired by the user USR in the non-volatile memory FRM before sales, but the present invention is not limited to this. For example, the seller PRD may prepare a microcomputer LSI in which license information corresponding to a predetermined number of licenses is written.

マイクロコンピュータLSIを販売する場合の半導体装置販売モデルを示したが、販売する半導体装置は、マイクロコンピュータLSIに限定されるものではない。   Although the semiconductor device sales model in the case of selling the microcomputer LSI is shown, the semiconductor device to be sold is not limited to the microcomputer LSI.

<マイクロコンピュータの構成>
図2は、実施の形態1に係わるマイクロコンピュータLSIの構成を示すブロック図である。図1で説明したように、マイクロコンピュータLSIは、複数の回路ブロックが、周知の半導体製造技術によって、1個の半導体チップに形成されている。図2には、上記した複数の回路ブロックのうちの一部が示されている。すなわち、この実施の形態を説明するうえで必要な回路ブロックのみが示されており、例えば図1で説明したライセンス管理ユニットRCNT等は省略されている。また、図2に示したマイクロコンピュータLSIにおいては、電気的に書き換え可能な不揮発性メモリFRMとして、所謂、フラッシュメモリが用いられている場合を示している。なお、フラッシュメモリには、図1に示した不揮発性メモリと同じ符号FRMが付されている。
<Configuration of microcomputer>
FIG. 2 is a block diagram showing the configuration of the microcomputer LSI according to the first embodiment. As described in FIG. 1, in the microcomputer LSI, a plurality of circuit blocks are formed on one semiconductor chip by a known semiconductor manufacturing technology. FIG. 2 shows a part of the plurality of circuit blocks described above. That is, only the circuit blocks necessary to explain this embodiment are shown. For example, the license management unit RCNT described in FIG. 1 is omitted. Further, in the microcomputer LSI shown in FIG. 2, a case where a so-called flash memory is used as the electrically rewritable nonvolatile memory FRM is shown. The flash memory is given the same reference numeral FRM as the non-volatile memory shown in FIG.

図2には、販売者PRDからユーザーUSRへ販売されたマイクロコンピュータLSIの状態が示されている。すなわち、リアルタイムオペレーティングシステム(RTOS)のプログラムの対価も含めて、ユーザーUSRが販売者PRDへ支払い、販売者PRDから購入したマイクロコンピュータLSIの状態が示されている。そのため、フラッシュメモリFRMには、RTSのプログラムが書き込まれ、格納された状態となっている。また、図2は、フラッシュメモリFRMに書き込まれたプログラム(例えばRTOSのプログラム)をバージョンアップするために、マイクロコンピュータLSIがネットワークNTWを介して、販売者PRDのサーバP−SVに接続されている状態が示されている。なお、図2では、図面が複雑になるのを避けるために、ユーザーUSRのサーバU−SVは省略されている。   FIG. 2 shows the state of the microcomputer LSI sold from the seller PRD to the user USR. That is, the state of the microcomputer LSI is shown, which the user USR pays to the seller PRD and purchases from the seller PRD, including the value of the program of the real time operating system (RTOS). Therefore, the program of RTS is written in and stored in the flash memory FRM. Further, FIG. 2 shows that the microcomputer LSI is connected to the server P-SV of the seller PRD via the network NTW in order to upgrade the program (for example, the program of the RTOS) written in the flash memory FRM. The state is shown. In FIG. 2, the server U-SV of the user USR is omitted in order to avoid the drawing becoming complicated.

図2において、200は通信機能回路、201は暗号復号機能回路、202はフラッシュメモリ書き換え回路、203は揮発性メモリ、204はメモリプロテクションユニット、205はバス、206は信号配線を示している。   In FIG. 2, 200 denotes a communication function circuit, 201 denotes an encryption / decryption function circuit, 202 denotes a flash memory rewriting circuit, 203 denotes a volatile memory, 204 denotes a memory protection unit, 205 denotes a bus, and 206 denotes signal wiring.

通信機能回路200は、マイクロコンピュータLSIの外部と内部との間でデータの送受信を行う。例えば、マイクロコンピュータLSIの外部から、バージョンアップされたプログラム(ソフトウェア)を受信し、格納する。暗号復号機能回路201は、暗号化されているプログラムを復号し、暗号化されていないプログラム(復号化されたプログラム)へ変換する。フラッシュメモリ書き換え回路202は、供給されたデータ、例えばプログラムをフラッシュメモリFRMへ書き込む。揮発性メモリ203は、例えばスタテック型メモリあるいはダイナミック型メモリで構成され、プログラムのようなデータを一次的に格納する。メモリプロテクションユニット204につては、後で詳しく説明するが、フラッシュメモリFRMからの情報とマイクロプロセッサ(中央処理ユニット)CPUからの情報に基づいて、マイクロプロセッサCPUからメモリ(フラッシュメモリFRMおよび揮発性メモリ203)へのアクセスを制御する。   The communication function circuit 200 transmits and receives data between the outside and the inside of the microcomputer LSI. For example, the upgraded version of the program (software) is received from outside the microcomputer LSI and stored. The decryption function circuit 201 decrypts the encrypted program and converts it into an unencrypted program (decrypted program). The flash memory rewrite circuit 202 writes the supplied data, for example, a program into the flash memory FRM. The volatile memory 203 is, for example, a static memory or a dynamic memory, and temporarily stores data such as a program. The memory protection unit 204 will be described in detail later, but based on the information from the flash memory FRM and the information from the microprocessor (central processing unit) CPU, the memory from the microprocessor CPU (flash memory FRM and volatile memory Control access to 203).

例えばフラッシュメモリFRMに格納されているプログラムをバージョンアップするために、マイクロコンピュータLSIは、ネットワークNTWに接続され、バージョンアップしたプログラムが、マイクロコンピュータLSIにダウンロードされる。このダウンロードの時に、プログラムが盗まれ易い状態となる。そのため、このダウンロードの際の動作を以下説明する。   For example, in order to upgrade the program stored in the flash memory FRM, the microcomputer LSI is connected to the network NTW, and the upgraded program is downloaded to the microcomputer LSI. At the time of this download, the program is likely to be stolen. Therefore, the operation at the time of downloading will be described below.

プログラムは、暗号化されている。そのため、サーバP−SVからプログラムが盗まれても、プログラムを実行することはできない。同様に、プログラムをダウンロードする際には、ネットワークNTWをプログラムが通過するが、このときもプログラムは暗号化されているため、例え盗まれても、そのプログラムを実行することはできない。   The program is encrypted. Therefore, even if the program is stolen from the server P-SV, the program can not be executed. Similarly, when downloading a program, the program passes through the network NTW, but since the program is also encrypted at this time, even if it is stolen, the program can not be executed.

プログラムが、ネットワークNTWを経由してマイクロコンピュータLSIに供給されると、通信機能回路200が、プログラムであるデータを受信し、格納する。次に、マイクロプロセッサCPUが、バス205を介して、通信機能回路200から、プログラムであるデータを受け取り、バス205を介して、揮発性メモリ203へ転送する。揮発性メモリ203に格納されたプログラムは、暗号化されているため、マイクロプロセッサCPUは、次に、揮発性メモリ203に格納されている暗号化されたプログラムを、バス205を介して、暗号復号機能回路201へ転送する。暗号復号機能回路201によって、暗号が解除され、暗号化されていないプログラムへ変換される。マイクロプロセッサCPUは、この暗号化されていないプログラムを、バス205を介して、揮発性メモリ203へ転送する。   When the program is supplied to the microcomputer LSI via the network NTW, the communication function circuit 200 receives and stores data which is the program. Next, the microprocessor CPU receives data, which is a program, from the communication function circuit 200 through the bus 205, and transfers the data to the volatile memory 203 through the bus 205. Since the program stored in the volatile memory 203 is encrypted, the microprocessor CPU then decrypts the encrypted program stored in the volatile memory 203 via the bus 205. Transfer to the functional circuit 201. The encryption / decryption function circuit 201 decrypts the encryption and converts it into an unencrypted program. The microprocessor CPU transfers this unencrypted program to the volatile memory 203 via the bus 205.

その後、マイクロプロセッサCPUは、揮発性メモリ203に格納されている暗号化されていないプログラムを、バス205を介して、フラッシュ書き換え回路202へ転送する。フラッシュ書き換え回路202は、供給された暗号化されていないプログラムを、フラッシュメモリFRMへ書き込む。これにより、例えば、バージョンアップしたプログラムが、フラッシュメモリFRMに格納されることになる。マイクロプロセッサCPUは、フラッシュメモリFRMに格納されているバージョンアップしたプログラムを読み出して、実行することになる。   Thereafter, the microprocessor CPU transfers the unencrypted program stored in the volatile memory 203 to the flash rewriting circuit 202 via the bus 205. The flash rewrite circuit 202 writes the supplied unencrypted program into the flash memory FRM. Thus, for example, the upgraded version of the program is stored in the flash memory FRM. The microprocessor CPU reads and executes the upgraded program stored in the flash memory FRM.

上記した動作の説明から理解されるように、プログラムをダウンロードして、フラッシュメモリFRMへ書き込むときには、暗号復号機能回路201、フラッシュメモリ書き換え回路202、揮発性メモリ203、およびマイクロプロセッサCPUに、暗号化されていないプログラムが存在している期間が生じる。また、フラッシュメモリFRMにも、暗号化されていないプログラムが存在していることになる。そのため、暗号化されていないプログラムが存在している期間において、暗号化されていないプログラムが盗まれるのを保護することが要求される。また、フラッシュメモリFRMに存在する暗号化されていないプログラムについても、そのプログラムが盗まれるのを保護することが要求される。   As understood from the above description of the operation, when the program is downloaded and written to the flash memory FRM, the encryption / decryption function circuit 201, the flash memory rewrite circuit 202, the volatile memory 203, and the microprocessor CPU are encrypted. There is a period of time when there is a program that has not been Also, in the flash memory FRM, an unencrypted program is present. Therefore, it is required to protect the unencrypted program from being stolen while the unencrypted program exists. Further, it is also required to protect the unencrypted program existing in the flash memory FRM from being stolen.

この実施の形態1においては、揮発性メモリ203、フラッシュメモリFRM等のメモリにアクセスする機能は、マイクロプロセッサCPUのみが有することに着目し、メモリプロテクションユニット204によって、マイクロプロセッサCPUがアクセスできる領域に制限を設けるようにされる。この場合、領域を指定する情報は、バス205を介さずに、信号配線206によって直接フラッシュメモリFRMからメモリプロテクションユニット204へ伝達される。   In the first embodiment, focusing on the fact that only the microprocessor CPU has the function of accessing the memory such as the volatile memory 203 and the flash memory FRM, the memory protection unit 204 can access the area accessible by the microprocessor CPU. It is intended to set limits. In this case, the information specifying the area is directly transmitted from the flash memory FRM to the memory protection unit 204 by the signal wiring 206 without passing through the bus 205.

なお、図2において、マイクロプロセッサLSIのそれぞれの辺に設けられているPinは、マイクロプロセッサLSIの外部端子(ピン)を、模式的に示している。   In FIG. 2, Pin provided on each side of the microprocessor LSI schematically indicates an external terminal (pin) of the microprocessor LSI.

<メモリプロテクションユニットの構成>
次に、メモリプロテクションユニット204の構成を、図3を用いて説明する。図3は、実施の形態1に係わるメモリプロテクションユニットの構成を示すブロック図である。同図には、説明の都合上、マイクロプロセッサCPUおよびフラッシュメモリFRMも示されている。
<Configuration of Memory Protection Unit>
Next, the configuration of the memory protection unit 204 will be described with reference to FIG. FIG. 3 is a block diagram showing the configuration of the memory protection unit according to the first embodiment. In the same figure, a microprocessor CPU and a flash memory FRM are also shown for convenience of explanation.

プログラムは、複数の命令によって構成される。マイクロプロセッサCPUは、プログラムにおける複数の命令から、実行する命令を指定するアドレスを出力する。すなわち、マイクロプロセッサCPUは、プログラムカウンタを有しており、実行する命令を指定するアドレスは、プログラムカウンタによって形成される。図3では、このプログラムカウンタによって形成されたアドレス、すなわち実行する命令を指定するアドレスが、PCアドレス306として示されている。また、マイクロプロセッサCPUが入出力するデータが、符号307で示されている。   The program is composed of a plurality of instructions. The microprocessor CPU outputs an address specifying an instruction to be executed from a plurality of instructions in the program. That is, the microprocessor CPU has a program counter, and the address specifying an instruction to be executed is formed by the program counter. In FIG. 3, the address formed by the program counter, that is, the address specifying an instruction to be executed is shown as a PC address 306. Further, data input / output by the microprocessor CPU is indicated by reference numeral 307.

この実施の形態1においては、販売者PRDが、フラッシュメモリ(不揮発性メモリ)FRMに、セキュリティが担保されるべきプログラムを書き込んで、販売する場合、セキュリティが担保されるべきプログラム(セキュアプログラム)が格納されたフラッシュメモリFRMのプログラム領域を指定するセキュアアドレス情報304を、フラッシュメモリFRMに書き込んで、販売する。また、このとき、販売者PRDは、揮発性メモリ203(図2)において、セキュリティが担保されるべきデータ(セキュアデータ)を格納するデータ領域を指定するセキュアデータ情報305を、フラッシュメモリFRMに書き込む。   In the first embodiment, when the seller PRD writes a program to be secured in the flash memory (nonvolatile memory) FRM and sells the program (secure program) to be secured. The secure address information 304 specifying the program area of the stored flash memory FRM is written in the flash memory FRM and sold. At this time, the seller PRD writes, in the flash memory FRM, secure data information 305 specifying a data area for storing data (secure data) for which security is to be secured in the volatile memory 203 (FIG. 2). .

RTOSのプログラムは、有償プログラムであるため、セキュアプログラムである。そのため、RTOSのプログラムを書き込んだフラッシュメモリFRMのプログラム領域を特定するセキュアアドレス情報304と、RTOSのプログラムが動作する際にセキュリティを担保すべきデータが格納される揮発性メモリ203のデータ領域を特定するセキュアデータ情報305が、フラッシュメモリFRMに書き込まれることになる。セキュアアドレス情報304およびセキュアデータ情報305の書き込みは、RTSOのプログラムと同様に、販売者PRDが、マイクロプロセッサLSIを販売する前に行われる。   Since the RTOS program is a paid program, it is a secure program. Therefore, the secure address information 304 specifying the program area of the flash memory FRM in which the RTOS program is written and the data area of the volatile memory 203 storing the data to be secured when the RTOS program operates are specified Secure data information 305 is written to the flash memory FRM. The writing of the secure address information 304 and the secure data information 305 is performed before the seller PRD sells the microprocessor LSI, like the program of RTSO.

セキュリティを担保することが必要とされない任意のプログラム(ノンセキュアプログラム)、例えば無償プログラムおよびユーザープログラムU−APは、セキュアアドレス情報304によって特定されるフラッシュメモリFRMのプログラム領域とは異なるプログラム領域に書き込まれることになる。同様に、セキュリティを担保することが必要とされないデータ(ノンセキュアデータ)、例えば無償プログラムおよびユーザープログラムU−APが動作したときに生じるデータは、セキュアデータ情報305によって特定される揮発性メモリ203のデータ領域とは異なるデータ領域に格納されることになる。   Any program (non-secure program) which is not required to secure security, such as a free program and user program U-AP, is written in a program area different from the program area of flash memory FRM specified by secure address information 304 Will be Similarly, data not required to ensure security (non-secure data), such as data generated when the free program and user program U-AP are operated, is stored in volatile memory 203 specified by secure data information 305. It is stored in a data area different from the data area.

ノンセキュアプログラムが書き込まれるフラッシュメモリFRMのプログラム領域を第1プログラム領域と見なした場合、セキュアプログラムが書き込まれるフラッシュメモリFRMのプログラム領域は第2プログラム領域と見なすことができる。このように見なした場合、第2プログラム領域は、セキュアアドレス情報304によって特定されることになる。一方、セキュアアドレス情報304によって特定されていないフラッシュメモリFRMのプログラム領域が、第1プログラム領域となる。勿論、ノンセキュアアドレス情報によって、フラッシュメモリFRMの第1プログラム領域を特定するようにしてもよい。   When the program area of the flash memory FRM in which the non-secure program is written is regarded as a first program area, the program area of the flash memory FRM in which the secure program is written can be regarded as a second program area. In this case, the second program area is identified by the secure address information 304. On the other hand, the program area of the flash memory FRM not specified by the secure address information 304 is the first program area. Of course, the first program area of the flash memory FRM may be specified by the non-secure address information.

同様に、ノンセキュアデータが格納される揮発性メモリ203のデータ領域を、第1データ領域と見なした場合、セキュアデータが格納される揮発性メモリ203のデータ領域を、第2データ領域と見なすことができる。このように見なした場合も、第2データ領域は、セキュアデータ情報305によって特定されることになる。一方、セキュアデータ情報305によって特定されていない揮発性メモリ203のデータ領域が、第1データ領域となる。勿論、ノンセキュアデータ情報によって、揮発性メモリ203の第1データ領域を特定するようにしてもよい。   Similarly, when the data area of volatile memory 203 where non-secure data is stored is regarded as a first data area, the data area of volatile memory 203 where secure data is stored is regarded as a second data area. be able to. Also in this case, the second data area is identified by the secure data information 305. On the other hand, the data area of the volatile memory 203 not specified by the secure data information 305 is the first data area. Of course, the first data area of the volatile memory 203 may be specified by non-secure data information.

セキュアアドレス情報304とセキュアデータ情報305は、バス205ではなく、図2に示した信号配線206を介して、フラッシュメモリFRMからメモリプロテクションユニット204へ直接的に供給される。   The secure address information 304 and the secure data information 305 are directly supplied from the flash memory FRM to the memory protection unit 204 through the signal wiring 206 shown in FIG.

メモリプロテクションユニット204は、フェッチ開始アドレス監視回路300、フェッチアドレス比較回路301およびメモリアクセス制御回路303を備えている。フェッチ開始アドレス監視回路300およびフェッチアドレス比較回路301のそれぞれには、マイクロプロセッサCPUからのPCアドレス306およびフラッシュメモリFRMからのセキュアアドレス情報304が供給される。フェッチ開始アドレス監視回路300およびフェッチアドレス比較回路301については、後で図7等を用いて一例を説明するので、ここでは概要を説明する。   The memory protection unit 204 includes a fetch start address monitoring circuit 300, a fetch address comparison circuit 301, and a memory access control circuit 303. The PC address 306 from the microprocessor CPU and the secure address information 304 from the flash memory FRM are supplied to the fetch start address monitoring circuit 300 and the fetch address comparison circuit 301, respectively. An example of the fetch start address monitoring circuit 300 and the fetch address comparison circuit 301 will be described later with reference to FIG. 7 and the like, so an outline will be described here.

フェッチアドレス比較回路301は、PCアドレス306とセキュアアドレス情報304とを比較し、PCアドレス306が、セキュアアドレス情報304によって指定されている第2プログラム領域内を指定しているのか否かを示す選択信号を出力する。この実施の形態1においては、セキュアアドレス情報304によって指定されている第2プログラム領域を除く、フラッシュメモリFRMのプログラム領域が、ノンセキュアプログラム領域とされている。そのため、フェッチアドレス比較回路301から出力される選択信号は、PCアドレス306が、セキュアプログラム領域(第2プログラム領域)内を指定しているとき、セキュアプログラム領域を指定するセキュアプログラム領域信号と見なすことができ、PCアドレス306がノンセキュアプログラム領域(第1プログラム領域)内を指定しているとき、ノンセキュアプログラム領域を指定するノンセキュアプログラム領域信号と見なすことができる。   The fetch address comparison circuit 301 compares the PC address 306 with the secure address information 304, and selects whether the PC address 306 designates the second program area specified by the secure address information 304 or not. Output a signal. In the first embodiment, the program area of the flash memory FRM excluding the second program area specified by the secure address information 304 is a non-secure program area. Therefore, when the PC address 306 designates the secure program area (second program area), the selection signal output from the fetch address comparison circuit 301 should be regarded as a secure program area signal specifying the secure program area. When the PC address 306 designates a non-secure program area (first program area), it can be regarded as a non-secure program area signal designating the non-secure program area.

フェッチアドレス比較回路301から出力される選択信号が、例えばセキュアプログラム領域を示しているとき、セキュリティが担保されるように、マイクロコンピュータLSIを構成することにより、セキュアプログラムが盗まれるのを防ぐことが可能となる。   When the selection signal output from the fetch address comparison circuit 301 indicates, for example, a secure program area, the secure program is prevented from being stolen by configuring the microcomputer LSI so that security is secured. It becomes possible.

セキュアアドレス情報304は、例えば予め固定の値に設定し、変更不可能にしておくことが考えられる。この場合、フラッシュメモリFRMに格納するセキュアプログラムが変更になったとき、あるいはマイクロコンピュータLSIを、ユーザーUSRが購入した後、セキュアプログラムを変更するときに、セキュアプログラム領域を変更することが困難になる。セキュアプログラム領域を変更することができないと、セキュアプログラムのサイズが大きくなった場合等で、セキュリティを担保することが困難になる。   The secure address information 304 may be set, for example, to a fixed value in advance, and can not be changed. In this case, it becomes difficult to change the secure program area when the secure program stored in the flash memory FRM is changed, or when the secure program is changed after the user USR purchases the microcomputer LSI. . If the secure program area can not be changed, security becomes difficult to secure, for example, when the size of the secure program becomes large.

例えば、ユーザーUSRが、マイクロコンピュータLSIを購入した後で、セキュアアドレス情報304を変更することが可能となるようにするためには、セキュアアドレス情報304をレジスタ等の揮発性メモリに格納するようにすることが考えられる。この場合、マイクロコンピュータLSI内のマイクロプロセッサCPUを、ユーザーUSRが操作することができなければ、セキュアアドレス情報304を格納したレジスタをユーザーUSRが操作することは困難である。その結果、セキュリティを担保しながら、セキュアプログラム領域を変更することが可能となる。   For example, in order to enable the user USR to change the secure address information 304 after purchasing the microcomputer LSI, the secure address information 304 should be stored in volatile memory such as a register. It is possible to do. In this case, if the user USR can not operate the microprocessor CPU in the microcomputer LSI, it is difficult for the user USR to operate the register storing the secure address information 304. As a result, it is possible to change the secure program area while securing security.

しかしながら、この実施の形態1においては、マイクロコンピュータLSIをユーザーUSRが購入した後、ユーザーUSRが、例えばマイクロプロセッサCPUを操作するユーザープログラムU−APを作成する。すなわち、ユーザーUSRは、マイクロプロセッサCPUを操作することが可能である。そのため、ユーザーUSRが、セキュアアドレス情報304を格納したレジスタ等の揮発性メモリを操作するソフトウェア(ノンセキュアプログラム)を作成することか可能となってしまう。レジスタに格納されているセキュアドレス情報304を変更することにより、セキュアプログラムを盗むことが可能となってしまう。   However, in the first embodiment, after the user USR purchases the microcomputer LSI, the user USR creates, for example, a user program U-AP for operating the microprocessor CPU. That is, the user USR can operate the microprocessor CPU. Therefore, it becomes possible for the user USR to create software (non-secure program) for operating volatile memory such as a register storing the secure address information 304. By changing the secure dress information 304 stored in the register, the secure program can be stolen.

この実施の形態1では、セキュアアドレス情報304およびセキュアデータ情報305は、販売者PRDが、マイクロコンピュータLSIを販売する前に、電気的に書き換え可能なフラッシュメモリFRMに書き込む。これにより、セキュアプログラムに対応したセキュアアドレス情報304およびセキュアデータ情報305を、フラッシュメモリFRMに書き込むことが可能となる。また、販売者PRDは、販売後も必要に応じて、セキュアアドレス情報304およびセキュアデータ情報305を、変更することが可能となる。フラッシュメモリFRMに格納されたセキュアアドレス情報304およびセキュアデータ情報305は、ユーザーUSRの作成したソフトウェア(ノンセキュアプログラム)によって変更されないため、セキュリティを担保することも可能である。   In the first embodiment, the secure address information 304 and the secure data information 305 are written into the electrically rewritable flash memory FRM before the seller PRD sells the microcomputer LSI. Thereby, secure address information 304 and secure data information 305 corresponding to the secure program can be written to the flash memory FRM. In addition, the seller PRD can change the secure address information 304 and the secure data information 305 as needed even after the sale. Since secure address information 304 and secure data information 305 stored in the flash memory FRM are not changed by software (non-secure program) created by the user USR, security can also be secured.

また、この実施の形態1においては、バス205とは異なる信号配線206によって、フラッシュメモリFRMからメモリプロテクションユニット204へ、セキュアアドレス情報304およびセキュアデータ情報305が供給される。これにより、ユーザーUSRがマイクロプロセッサCPUを操作しても、セキュアアドレス情報304およびセキュアデータ情報305が、ユーザーUSRによって読み出されるのを防ぐことが可能となる。   In the first embodiment, the secure address information 304 and the secure data information 305 are supplied from the flash memory FRM to the memory protection unit 204 through the signal wiring 206 different from the bus 205. This makes it possible to prevent the secure address information 304 and the secure data information 305 from being read by the user USR even if the user USR operates the microprocessor CPU.

フェッチ開始アドレス監視回路300は、セキュアアドレス情報304、PCアドレス306およびフェッチアドレス比較回路301からの選択信号を受けて、セキュアデータアクセス許可信号302を出力する。   Fetch start address monitoring circuit 300 receives secure address information 304, PC address 306 and a selection signal from fetch address comparison circuit 301, and outputs a secure data access permission signal 302.

この実施の形態1においては、RTOSのプログラム上で、ユーザープログラムU−AP等が動作する。ユーザープログラムU−AP等は、ユーザーUSRが作成するため、ノンセキュアプログラムであり、フラッシュメモリFRMのノンセキュアプログラム領域に書き込まれる。RTOSのプログラム上で、ユーザープログラムU−APが動作するため、ユーザープログラムU−APから、RTOSのプログラムの呼び出しが行われることになる。   In the first embodiment, the user program U-AP or the like operates on the RTOS program. The user program U-AP or the like is a non-secure program because it is created by the user USR, and is written in the non-secure program area of the flash memory FRM. Since the user program U-AP operates on the RTOS program, the RTOS program is called from the user program U-AP.

RTOSのプログラムは、互いに異なった機能を達成する複数のサブルーチンを備えている。ユーザープログラムU−APは、複数のサブルーチンから所望の機能を達成するサブルーチンを呼び出すことになる。ここでのサブルーチンの呼び出しは、分岐により行われる。すなわち、RTOSのプログラムが備えている複数のサブルーチンから選択されたサブルーチンへ、ノンセキュアプログラムであるユーザープログラムU−APが分岐する動作が発生する。後で図5等を用いて一例を説明するが、PCアドレス306が、セキュアプログラム領域内を指定しているか否かを監視する構成では、ノンセキュアプログラムからセキュアプログラムへ分岐する際のアタックに対して弱いと言う課題がある。   The RTOS program comprises a plurality of subroutines that achieve different functions. The user program U-AP will call a subroutine that achieves a desired function from a plurality of subroutines. The subroutine call here is performed by a branch. That is, an operation occurs in which the user program U-AP, which is a non-secure program, branches to a subroutine selected from a plurality of subroutines included in the RTOS program. Although an example will be described later with reference to FIG. 5 and the like, in a configuration where it is monitored whether the PC address 306 designates a secure program area, against an attack when branching from a non-secure program to a secure program. There is a problem that

後で図7等を用いて詳しく説明するが、フェッチ開始アドレス監視回路300は、ノンセキュアプログラムから、セキュアプログラムへ分岐する際に、分岐先アドレスが、フェッチを許可する分岐許可領域(第1領域)内を指定している否かを判定する。分岐許可領域を指定していれば、セキュアデータアクセス許可信号302によって、マイクロプロセッサCPUが、例えばフラッシュメモリFRM内のセキュアプログラム領域へアクセスするのを許可する。これにより、ノンセキュアプログラムからセキュアプログラムへ分岐する際のアタックに対する保護が行われる。   As will be described in detail later with reference to FIG. 7 and the like, the fetch start address monitoring circuit 300 determines that the branch destination address is a branch permitted area (first area It is determined whether or not the inside is specified. If the branch permitted area is designated, the secure data access permit signal 302 permits the microprocessor CPU to access the secure program area in the flash memory FRM, for example. This protects against attacks when branching from a non-secure program to a secure program.

メモリアクセス制御回路303は、フラッシュメモリFRMからのセキュアデータ情報305、セキュアデータアクセス許可信号302、PCアドレス306および入出力データ307を受けて、フラッシュメモリFRMおよび揮発性メモリ203に対するアクセス信号308を出力する。すなわち、メモリアクセス制御回路303は、セキュアデータアクセス許可信号302によって、メモリへのアクセスが許可されている場合、PCアドレス306に対応したアドレス信号を、メモリ(フラッシュメモリFRM、揮発性メモリ203)へ出力し、このアドレス信号によって指定されているメモリ内のアドレスとマイクロプロセッサCPUとの間でのデータ307の送受信を許可する。これに対して、セキュアデータアクセス許可信号302が、メモリへのアクセスを禁止している場合、メモリアクセス制御回路303は、メモリとマイクロプロセッサCPUとの間のデータ307の送受信を禁止する。   The memory access control circuit 303 receives the secure data information 305 from the flash memory FRM, the secure data access permission signal 302, the PC address 306 and the input / output data 307, and outputs the access signal 308 for the flash memory FRM and volatile memory 203. Do. That is, when the access to the memory is permitted by the secure data access permission signal 302, the memory access control circuit 303 sends the address signal corresponding to the PC address 306 to the memory (flash memory FRM, volatile memory 203). It outputs and permits transmission and reception of data 307 between the address in the memory designated by the address signal and the microprocessor CPU. On the other hand, when the secure data access permission signal 302 prohibits the access to the memory, the memory access control circuit 303 prohibits the transmission and reception of the data 307 between the memory and the microprocessor CPU.

<アタック例>
図4は、図3に示したフェッチアドレス比較回路301およびメモリアクセス制御回路303を使って、メモリをプロテクションする場合を説明する説明図である。すなわち、図4は、図3に示したフェッチ開始アドレス監視回路300を、メモリプロテクションユニットが備えていない場合を示している。
<Example of attack>
FIG. 4 is an explanatory diagram for explaining a case where the memory is protected using the fetch address comparison circuit 301 and the memory access control circuit 303 shown in FIG. That is, FIG. 4 shows the case where the memory protection unit does not have the fetch start address monitoring circuit 300 shown in FIG.

この実施の形態1では、ノンセキュアプログラムとセキュアプログラムは、フラッシュメモリFRMに格納され、ノンセキュアデータとセキュアデータは揮発性メモリ203に格納されている。フラッシュメモリFRMには、セキュアプログラムを格納するセキュアプログラム領域を指定するセキュアアドレス情報304とセキュアデータを格納するセキュアデータ領域を指定するセキュアデータ情報305とが格納されている。   In the first embodiment, the non-secure program and the secure program are stored in the flash memory FRM, and the non-secure data and the secure data are stored in the volatile memory 203. The flash memory FRM stores secure address information 304 for specifying a secure program area for storing a secure program, and secure data information 305 for specifying a secure data area for storing secure data.

このセキュアアドレス情報304によって、フラッシュメモリFRMの領域(空間)は、ノンセキュアプログラムが格納されるノンセキュアプログラム領域と、セキュアプログラムが格納されるセキュアプログラム領域に分けられている。また、揮発性メモリ203の領域(空間)は、セキュアデータ情報305によって、ノンセキュアデータが格納されるノンセキュアデータ領域とセキュアデータが格納されるセキュアデータ領域に分けられている。   The area (space) of the flash memory FRM is divided by the secure address information 304 into a non-secure program area in which the non-secure program is stored and a secure program area in which the secure program is stored. The area (space) of the volatile memory 203 is divided by the secure data information 305 into a non-secure data area in which non-secure data is stored and a secure data area in which secure data is stored.

ノンセキュアプログラムもセキュアプログラムも、2値信号であり、データと見なすことができる。そのため、図4では、ノンセキュアプログラムを格納するノンセキュアプログラム領域と、ノンセキュアデータを格納するノンセキュアデータ領域が、纏めてノンセキュアデータ領域として示されている。同様に、セキュアプログラムを格納するセキュアプログラム領域と、セキュアデータを格納するセキュアデータ領域が、纏めて、図4では、セキュアデータ領域として示されている。本明細書においては、特に明示しない限り、ノンセキュアデータは、ノンセキュアプログラムとノンセキュアなデータの両方を意味しており、セキュアデータは、セキュアプログラムとセキュアなデータの両方を意味している。   Both non-secure programs and secure programs are binary signals and can be regarded as data. Therefore, in FIG. 4, the non-secure program area storing the non-secure program and the non-secure data area storing the non-secure data are collectively shown as a non-secure data area. Similarly, a secure program area for storing a secure program and a secure data area for storing secure data are collectively shown as a secure data area in FIG. In this specification, unless otherwise specified, non-secure data means both non-secure program and non-secure data, and secure data means both secure program and secure data.

図4では、ノンセキュアデータ領域が、ノンセキュアプログラムを格納するノンセキュアプログラム領域で、セキュアデータ領域が、セキュアプログラムを格納するセキュアプログラム領域である場合を、例として説明する。   In FIG. 4, an example in which the non-secure data area is a non-secure program area storing a non-secure program and the secure data area is a secure program area storing a secure program will be described.

PCアドレス306が、セキュアプログラム領域内を指定しているとき、すなわち、セキュアプログラムが実行されているとき、フェッチアドレス比較回路301から出力される選択信号が、セキュアプログラム領域信号として、メモリアクセス制御回路303へ供給される。このセキュアプログラム領域信号に応答して、PCアドレス306がセキュアプログラム領域内を指定しているとき、メモリアクセス制御回路303は、マイクロプロセッサCPUが、セキュアデータ領域(セキュアプログラム領域)とノンセキュアデータ領域(ノンセキュアプログラム領域)の両方をアクセスすることを許可する。すなわち、PCアドレス306によって、セキュアデータ領域およびノンセキュアデータ領域のいずれを指定しても、データ307の送受信が可能となる。これにより、図4に示すように、セキュアプログラム領域に配置されたセキュアプログラムからは、ノンセキュアデータ領域およびセキュアデータ領域のいずれに対してもアクセスが許可(アクセス許可と記載)される。   When PC address 306 designates the secure program area, that is, when the secure program is being executed, the select signal output from fetch address comparison circuit 301 is a memory access control circuit as a secure program area signal. It is supplied to 303. When the PC address 306 designates the secure program area in response to the secure program area signal, the memory access control circuit 303 causes the microprocessor CPU to set the secure data area (secure program area) and the non-secure data area. Allow access to both (non-secure program area). That is, data 307 can be transmitted / received by specifying either the secure data area or the non-secure data area by the PC address 306. Thereby, as shown in FIG. 4, from the secure program arranged in the secure program area, access is permitted to both the non-secure data area and the secure data area (referred to as access permission).

一方、PCアドレス306が、セキュアプログラム領域外であるノンセキュアプログラム領域内を指定している場合、フェッチアドレス比較回路301から出力される選択信号は、ノンセキュアプログラム領域を指定するノンセキュアプログラム領域信号となる。メモリアクセス制御回路303は、選択信号がノンセキュアプログラム領域信号のとき、マイクロプロセッサCPUが、ノンセキュアデータ領域に対してアクセスすることを許可し、セキュアデータ領域に対してアクセスすることを禁止する。すなわち、この場合には、PCアドレス306が、ノンセキュアデータ領域内を指定しているとき、データ307の送受信が許可され、PCアドレス306が、セキュアデータ領域内を指定しているとき、データ307の送受信が禁止される。これにより、図4に示すように、ノンセキュアプログラム領域に配置されたノンセキュアプログラムからは、ノンセキュアデータ領域に対してのアクセスが許可(アクセス許可と記載)され、セキュアデータ領域に対してのアクセスは禁止(アクセス禁止と記載)されることになる。   On the other hand, when the PC address 306 designates the non-secure program area outside the secure program area, the selection signal output from the fetch address comparison circuit 301 is a non-secure program area signal designating the non-secure program area. It becomes. When the selection signal is a non-secure program area signal, the memory access control circuit 303 permits the microprocessor CPU to access the non-secure data area and prohibits the access to the secure data area. That is, in this case, when the PC address 306 designates the inside of the non-secure data area, transmission and reception of the data 307 is permitted, and when the PC address 306 designates the inside of the secure data area, the data 307 Sending and receiving are prohibited. Thereby, as shown in FIG. 4, from the non-secure program disposed in the non-secure program area, access to the non-secure data area is permitted (described as access permission), and the secure data area is Access will be prohibited (described as access prohibited).

セキュアプログラム領域に配置されたセキュアプログラムに、セキュリティホールが存在する場合、ノンセキュアプログラム領域に、ハッキングプログラムを配置し、ハッキングプログラムを、マイクロプロセッサCPUによって実行させることにより、セキュアデータ領域に格納されているデータ(プログラム)を盗むことが可能となる。すなわち、ノンセキュアプログラムとして実行されるハッキングプログラムにおいて、図4においてセキュリティホールとして示されているアドレスへ分岐する。この分岐により、セキュリティホールが存在するセキュリティプログラムが動作することになる。セキュリティプログラムであるため、セキュアデータ領域へのアクセスが許可され、セキュアデータ領域に格納されているセキュアなデータ(プログラム)を、例えばマイクロプロセッサCPU内のレジスタ等に格納することができる。このセキュアなデータ(プログラム)がレジスタに格納された状態で、セキュアプログラムからノンセキュアプログラムであるハッキングプログラムへ復帰する。復帰したとき、レジスタの内容を読み出すことにより、セキュアなデータ(プログラム)を盗むことが可能となる。図4では、アタックにより発生する分岐とメモリ(フラッシュメモリFRM)へのアクセスが、ハッキングとして示されている。   If there is a security hole in the secure program located in the secure program area, the hacking program is located in the non-secure program area, and the hacking program is stored in the secure data area by executing it with the microprocessor CPU It is possible to steal certain data (programs). That is, in a hacking program executed as a non-secure program, it branches to an address shown as a security hole in FIG. This branching causes a security program having a security hole to operate. Since this is a security program, access to the secure data area is permitted, and secure data (program) stored in the secure data area can be stored, for example, in a register or the like in the microprocessor CPU. With this secure data (program) stored in the register, the secure program returns to the hacking program which is a non-secure program. When returning, it is possible to steal secure data (program) by reading the contents of the register. In FIG. 4, the branch generated by the attack and the access to the memory (flash memory FRM) are shown as hacking.

ここでは、セキュアデータ領域がセキュアプログラム領域である場合を説明したが、セキュアデータ領域が、揮発性メモリ203におけるセキュアデータ領域の場合も同様に、揮発性メモリ203に格納されているセキュアなデータを盗むことが可能となってしまう。   Here, the case where the secure data area is the secure program area has been described, but in the case where the secure data area is the secure data area in the volatile memory 203, the secure data stored in the volatile memory 203 is It would be possible to steal.

<セキュリティホール例>
図5は、セキュリティホールが存在するセキュアプログラムの例を示す模式図である。フラッシュメモリFRMのセキュアプログラム領域には、RTOSのプログラムが格納されている。RTOSのプログラムは、先に述べたように複数のサブルーチンを有している。図5は、複数のサブルーチンのうち、セキュリティホールが存在するサブルーチンの例を示している。
<Example of security hole>
FIG. 5 is a schematic view showing an example of a secure program in which a security hole exists. The RTOS program is stored in the secure program area of the flash memory FRM. The RTOS program has a plurality of subroutines as described above. FIG. 5 shows an example of a subroutine in which a security hole exists among a plurality of subroutines.

サブルーチンは、メインルーチン(あるいは上位ルーチン)からの分岐により、呼び出される。すなわち、メインルーチンにおいて、PCアドレス306の値が、図5において開始アドレスとして示されているアドレスを指定する値とされる。これにより、メインルーチンから、図5に示すサブルーチンへ分岐する。一例を述べるならば、メインルーチンには、開始アドレスを分岐先アドレスとした分岐命令が格納されており、マイクロプロセッサCPUによって、この分岐命令が実行されることにより、分岐が行われる。   The subroutine is called by a branch from the main routine (or the upper routine). That is, in the main routine, the value of the PC address 306 is set to a value specifying the address shown as the start address in FIG. Thereby, the main routine branches to a subroutine shown in FIG. In one example, the main routine stores a branch instruction whose start address is the branch destination address, and the branch is executed by the microprocessor CPU executing this branch instruction.

サブルーチンにおいては、開始アドレスによって指定されているアドレスに格納されている命令Ex−Aが、先ず実行される。この命令Ex−Aが実行されることにより、例えばメインルーチンの処理において使われていたレジスタ等の値が、スタックポインタ(図示しない)によって指定されるスタック領域に退避される。次に、PCアドレス306の値が、開始アドレスから終了アドレスへ向けて、順番に変化する。これにより、命令Ex−Bから命令Ex−Pが、この順番で、マイクロプロセッサCPUに読み出され、順番に実行される。これにより、所定の処理が行われ、サブルーチンの機能が達成される。PCアドレス306の値が、終了アドレスを示す値に到達すると、命令Ex−Zが実行される。命令Ex−Zを実行することにより、先にスタックポインタで指定されていたスタック領域に格納されていたレジスタ等の値が、マイクロプロセッサCPU内のレジスタに復帰される。これにより、マイクロプロセッサCPU内のレジスタの値は、サブルーチンへ分岐する前の状態へ復帰することになる。   In the subroutine, the instruction Ex-A stored at the address specified by the start address is executed first. By executing this instruction Ex-A, for example, the values of the registers and the like used in the processing of the main routine are saved in the stack area designated by the stack pointer (not shown). Next, the value of the PC address 306 changes in order from the start address to the end address. As a result, the instruction Ex-B to the instruction Ex-P are read by the microprocessor CPU in this order and executed in order. Thereby, predetermined processing is performed, and the function of the subroutine is achieved. When the value of the PC address 306 reaches the value indicating the end address, the instruction Ex-Z is executed. By executing the instruction Ex-Z, the values of the register and the like stored in the stack area previously designated by the stack pointer are restored to the register in the microprocessor CPU. As a result, the value of the register in the microprocessor CPU returns to the state before branching to the subroutine.

このようにメインルーチンからサブルーチンへ分岐する際には、所定の開始アドレスへ分岐することにより、所定の処理が実行されることになる。   As described above, when branching from the main routine to the subroutine, predetermined processing is executed by branching to a predetermined start address.

図5において、所定の処理を実行しているとき、PCアドレス306は、セキュアプログラム領域内を指定しているため、フェッチアドレス比較回路301は、セキュアプログラム領域信号を出力することになる。そのため、メモリアクセス制御回路303は、マイクロプロセッサCPUが、メモリ(フラッシュメモリFRM)をアクセスすることを許可することになる。例えば、図5に示した命令Ex−Sが、特定のストア命令の場合、この特定のストア命令は、セキュリティホールとなってしまうことが考えられる。この特定のストア命令は、例えばマイクロプロセッサCPU内の特定のレジスタ(以下、説明の都合上R0とする)に保持されている値をアドレスとして、このアドレスによって指定されるセキュアデータ領域内のアドレスに格納されているデータ(命令)を、マイクロプロセッサCPU内の別の特定のレジスタ(以下、説明の都合上R1とする)に格納する命令である。   In FIG. 5, when executing a predetermined process, the PC address 306 designates the secure program area, so the fetch address comparison circuit 301 outputs a secure program area signal. Therefore, the memory access control circuit 303 permits the microprocessor CPU to access the memory (flash memory FRM). For example, if the instruction Ex-S shown in FIG. 5 is a specific store instruction, this specific store instruction may be a security hole. This particular store instruction takes, for example, a value held in a particular register (hereinafter referred to as R0 for convenience of explanation) in the microprocessor CPU as an address, to the address in the secure data area designated by this address. The stored data (instruction) is an instruction to be stored in another specific register (hereinafter referred to as R1 for convenience of explanation) in the microprocessor CPU.

ハッキングプログラムにおいて、特定のレジスタR0に、読み出したいセキュアデータ領域内のアドレスを設定した後、開始アドレスではなく、特定のストア命令Ex−Sを格納したアドレスを分岐先アドレスとして、ハッキングプログラムから図5に示したサブルーチンへ分岐する。すなわち、ハッキングプログラムからサブルーチンへ分岐する際に、PCアドレス306の値を、開始アドレスではなく、セキュリティホール(特定のストア命令Ex−S)のアドレス(分岐先アドレス)に設定して、分岐する。これにより、特定のレジスタR1の退避および復帰は行われず、特定のレジスタR1に格納されているセキュアなデータ(命令)を、ハッキングプログラムによって読み出すことが可能となってしまう。   In the hacking program, after setting the address in the secure data area to be read in the specific register R0, not the start address but the address storing the specific store instruction Ex-S as the branch destination address, as shown in FIG. Branch to the subroutine shown in. That is, when branching from the hacking program to the subroutine, the value of the PC address 306 is set not to the start address but to the address (branch destination address) of the security hole (specific store instruction Ex-S). As a result, saving and restoring of the specific register R1 is not performed, and the secure data (instruction) stored in the specific register R1 can be read by the hacking program.

このようなセキュリティホールは、多数存在することが考えられ、全てのセキュリティホールを無くすことは困難である。   A large number of such security holes are considered to exist, and it is difficult to eliminate all the security holes.

<アタック対策>
図6は、図3に示したフェッチアドレス比較回路301、フェッチ開始アドレス監視回路300およびメモリアクセス制御回路303を用いたメモリプロテクションユニット204を使って、アタックに対してメモリをプロテクションする場合を説明する説明図である。図6は、先に説明した図4と類似している。ここでは、図4との相違点を主に説明する。
<Anti-attack>
FIG. 6 illustrates the case of protecting memory against attack using the memory protection unit 204 using the fetch address comparison circuit 301, the fetch start address monitoring circuit 300 and the memory access control circuit 303 shown in FIG. FIG. FIG. 6 is similar to FIG. 4 described above. Here, differences from FIG. 4 will be mainly described.

図5で説明したように、アタックは、ノンセキュアプログラムから、セキュアプログラム領域に格納されたセキュアプログラムに分岐する際、セキュアプログラムによって定まる開始アドレスに分岐せずに、セキュリティホールに直接分岐することによって、行われる。後で図7を用いて、一例を説明するが、フェッチアドレス比較回路301およびフェッチ開始アドレス監視回路300によって、セキュアプログラム領域が、分岐許可領域(第1領域)BAAと分岐禁止領域(第1領域とは異なる第2領域)BPAに分けられる。ここで、セキュアプログラムの開始アドレスは、分岐許可領域BAA内に割り当てられ、セキュリティホールを指定する分岐先アドレスは、分岐禁止領域BPA内に割り当てられる。すなわち、図5を例にすると、命令Ex−A(第1命令)が、分岐許可領域BAAに配置され、命令Ex−Aを除く他の命令Ex−B〜Ex−Z(第2命令)は、分岐禁止領域BPAに配置される。   As described in FIG. 5, when branching off from the non-secure program to the secure program stored in the secure program area, the attack directly branches to the security hole without branching to the start address determined by the secure program. Is done. Although an example will be described later with reference to FIG. 7, the secure program area is divided into a branch permitted area (first area) BAA and a branch prohibited area (first area) by the fetch address comparison circuit 301 and the fetch start address monitoring circuit 300. And the second region BPA. Here, the start address of the secure program is allocated in the branch permission area BAA, and the branch destination address specifying the security hole is allocated in the branch prohibition area BPA. That is, taking FIG. 5 as an example, the instruction Ex-A (first instruction) is disposed in the branch permission area BAA, and the other instructions Ex-B to Ex-Z (second instruction) excluding the instruction Ex-A are , The branch prohibition area BPA.

ノンセキュアプログラム領域に格納されたノンセキュアプログラムから、セキュアプログラム領域に格納されたセキュアプログラムを呼び出す際、フェッチ開始アドレス監視回路300は、呼び出す際の分岐先のアドレスが、分岐許可領域BAAを指定している場合、メモリアクセスを許容するセキュアデータアクセス許可信号302を出力する。これに対して、呼び出す際の分岐先のアドレスが、分岐禁止領域BPAを指定している場合、フェッチ開始アドレス監視回路300は、メモリアクセスを禁止するセキュアデータアクセス許可信号302を出力する。メモリアクセス制御回路303は、セキュアデータアクセス許可信号302が、メモリアクセスの許可を示している場合、マイクロプロセッサCPUによるメモリ(フラッシュメモリFRM)へのアクセスを許可し、セキュアデータアクセス許可信号302が、メモリアクセスの禁止を示している場合、マイクロプロセッサCPUによるメモリへのアクセスを禁止する。   When calling the secure program stored in the secure program area from the non-secure program stored in the non-secure program area, the fetch start address monitoring circuit 300 specifies the branch permitted area BAA as the address of the branch destination at the time of the call. If so, it outputs a secure data access permission signal 302 that permits memory access. On the other hand, when the branch destination address at the time of calling designates the branch prohibited area BPA, the fetch start address monitoring circuit 300 outputs the secure data access permission signal 302 for prohibiting the memory access. When the secure data access permission signal 302 indicates permission of memory access, the memory access control circuit 303 permits the microprocessor CPU to access the memory (flash memory FRM), and the secure data access permission signal 302 indicates that If the memory access is prohibited, the microprocessor CPU is prohibited from accessing the memory.

ハッキングプログラムではないノンセキュアプログラムが、セキュアプログラムを呼び出す場合には、分岐許可領域BAA内を指定する分岐先のアドレスを出力するため、セキュアプログラムを実行することが可能となる。一方、ハッキングプログラムが、セキュリティホールに相当するアドレスを分岐先のアドレスとして呼び出す場合には、分岐禁止領域BPAを指定する分岐先アドレスが出力されることになる。そのため、この場合には、マイクロプロセッサCPUによるメモリへのアクセスが禁止される。その結果、ハッキングプログラムによるハッキングが行われないようにすることが可能となる。   When a non-secure program that is not a hacking program calls a secure program, the secure program can be executed because it outputs an address of a branch destination that specifies the inside of the branch permission area BAA. On the other hand, when the hacking program calls the address corresponding to the security hole as the address of the branch destination, the branch destination address specifying the branch prohibited area BPA is output. Therefore, in this case, access to the memory by the microprocessor CPU is prohibited. As a result, it is possible to prevent the hacking program from performing hacking.

<フェッチ開始アドレス監視回路およびフェッチアドレス比較回路の構成>
次に、図3で説明したフェッチ開始アドレス監視回路300およびフェッチアドレス比較回路301の構成を、図7(A)および(B)を用いて説明する。図7(A)は、実施の形態1に係わるフェッチ開始アドレス監視回路300およびフェッチアドレス比較回路301の構成を示すブロック図である。また、図7(B)は、実施の形態1に係わるセキュアプログラム領域を示す説明図である。
<Configuration of Fetch Start Address Monitoring Circuit and Fetch Address Comparison Circuit>
Next, configurations of the fetch start address monitoring circuit 300 and the fetch address comparison circuit 301 described with reference to FIG. 3 will be described with reference to FIGS. 7A and 7B. FIG. 7A is a block diagram showing configurations of fetch start address monitoring circuit 300 and fetch address comparison circuit 301 according to the first embodiment. FIG. 7B is an explanatory view of a secure program area according to the first embodiment.

図3に示したセキュアアドレス情報304は、セキュアプログラムを格納するセキュアプログラム領域の上限アドレスを示すセキュアプログラム上限アドレス304−U(上限アドレス情報)と、セキュアプログラム領域の下限アドレスを示すセキュアプログラム下限アドレス304−D(下限アドレス情報)と、を含んでいる。このセキュアプログラム上限アドレス304−Uとセキュアプログラム下限アドレス304−Dとによって指定されたフラッシュメモリFRMの領域が、セキュアプログラムを格納するセキュアプログラム領域(第2プログラム領域)となる。言い換えるならば、セキュアプログラムを書き込んだフラッシュメモリFRMのセキュアプログラム領域を、セキュアプログラム上限アドレス304−Uとセキュアプログラム下限アドレス304−Dによって特定する。   The secure address information 304 shown in FIG. 3 includes a secure program upper limit address 304-U (upper limit address information) indicating the upper limit address of the secure program area storing the secure program, and a secure program lower limit address indicating the lower limit address of the secure program area. 304-D (lower limit address information). The area of the flash memory FRM designated by the secure program upper limit address 304-U and the secure program lower limit address 304-D becomes a secure program area (second program area) for storing a secure program. In other words, the secure program area of the flash memory FRM in which the secure program is written is specified by the secure program upper limit address 304-U and the secure program lower limit address 304-D.

この実施の形態1においては、上限アドレス304−Uの値は、下限アドレス304−Dの値よりも大きな値である。プログラムを実行する際に、PCアドレス306の値は、セキュアプログラム上限アドレス304−Uからセキュアプログラム下限アドレス304−Dに向かって変化する。これにより、マイクロプロセッサCPUは、上限アドレス304−Uによって指定されているアドレスに格納されている命令から、下限アドレス304−Dによって指定されているアドレスに格納されている命令に向けて、フラッシュメモリFRMから命令を読み出し、読み出した命令を実行する。すなわち、マイクロプロセッサCPUは、大きいアドレスから小さいアドレスに向かって、命令を読み出し、実行する。   In the first embodiment, the value of the upper limit address 304-U is larger than the value of the lower limit address 304-D. When executing the program, the value of the PC address 306 changes from the secure program upper limit address 304-U toward the secure program lower limit address 304-D. Thus, the microprocessor CPU proceeds from the instruction stored in the address specified by the upper limit address 304-U to the instruction stored in the address specified by the lower limit address 304-D, Reads an instruction from FRM and executes the read instruction. That is, the microprocessor CPU reads and executes an instruction from a large address to a small address.

フェッチアドレス比較回路301は、比較器704、705、2入力アンド回路706(第1論理回路)およびインバータ回路708(第1論理回路)を備えている。   The fetch address comparison circuit 301 includes comparators 704 and 705, a two-input AND circuit 706 (first logic circuit), and an inverter circuit 708 (first logic circuit).

比較器704(第1比較回路)は、セキュアプログラム上限アドレス304−UとPCアドレス306とを比較し、PCアドレス306の値が、セキュアプログラム上限アドレス304−Uの値以下のとき、ハイレベルの比較結果信号704−Rを出力する。反対に、PCアドレス306の値が、セキュアプログラム上限アドレス304−Uの値を超えているとき、比較器704は、ロウレベルの比較結果信号704−Rを出力する。   The comparator 704 (first comparison circuit) compares the secure program upper limit address 304-U with the PC address 306, and when the value of the PC address 306 is less than or equal to the value of the secure program upper limit address 304-U, the high level The comparison result signal 704-R is output. Conversely, when the value of the PC address 306 exceeds the value of the secure program upper limit address 304-U, the comparator 704 outputs a low level comparison result signal 704-R.

比較器705(第2比較回路)は、セキュアプログラム下限アドレス304−DとPCアドレス306とを比較し、PCアドレス306の値が、セキュアプログラム下限アドレス304−Dの値以上のとき、ハイレベルの比較結果信号705−Rを出力する。反対に、PCアドレス306の値が、セキュアプログラム下限アドレス304−Dの値未満とき、比較器705は、ロウレベルの比較結果信号705−Rを出力する。   The comparator 705 (second comparison circuit) compares the secure program lower limit address 304-D with the PC address 306, and when the value of the PC address 306 is greater than or equal to the value of the secure program lower limit address 304-D, the high level The comparison result signal 705 -R is output. Conversely, when the value of the PC address 306 is less than the value of the secure program lower limit address 304-D, the comparator 705 outputs a low level comparison result signal 705-R.

比較器704および705のそれぞれから出力された比較結果信号704−Rおよび705−Rは、2入力アンド回路706に入力される。2入力アンド回路706によって、比較結果信号704−Rおよび705−Rの論理積が求められる。この2入力アンド回路706の出力信号707は、インバータ回路708に供給され、インバータ回路708によって位相反転される。   Comparison result signals 704 -R and 705 -R output from the comparators 704 and 705, respectively, are input to the 2-input AND circuit 706. Two-input AND circuit 706 determines the logical product of comparison result signals 704 -R and 705 -R. The output signal 707 of the two-input AND circuit 706 is supplied to the inverter circuit 708 and is inverted in phase by the inverter circuit 708.

PCアドレス306の値が、セキュアプログラム上限アドレス304−Uの値とセキュアプログラム下限アドレス304−Dとの間にあるとき、比較結果信号704−Rおよび705−Rのそれぞれがハイレベルとなるため、2入力アンド回路706の出力信号707は、ハイレベルとなる。これにより、インバータ回路708の出力信号709はロウレベルとなる。すなわち、PCアドレス306によって表されるアドレスが、セキュアプログラム上限アドレス304−Uとセキュアプログラム下限アドレス304−Dによって指定されるセキュアプログラム領域内を指定しているとき、2入力アンド回路706の出力信号707はハイレベルとなり、インバータ回路708の出力信号709はロウレベルとなる。   When the value of the PC address 306 is between the value of the secure program upper limit address 304-U and the secure program lower limit address 304-D, each of the comparison result signals 704-R and 705-R becomes high level, The output signal 707 of the 2-input AND circuit 706 becomes high level. As a result, the output signal 709 of the inverter circuit 708 becomes low level. That is, when the address represented by PC address 306 designates the secure program area designated by secure program upper limit address 304-U and secure program lower limit address 304-D, the output signal of 2-input AND circuit 706 The signal 707 goes high, and the output signal 709 of the inverter circuit 708 goes low.

一方、PCアドレス306の値が、セキュアプログラム上限アドレス304−Uの値を超えているとき、またはセキュアプログラム下限アドレス304−Dの値未満のときには、2入力アンド回路706の出力信号707はロウレベルとなり、インバータ回路708の出力信号709は、ハイレベルとなる。すなわち、PCアドレス306によって表されるアドレスが、セキュアプログラム領域以外を指定しているときに、出力信号707はロウレベルとなり、出力信号709はハイレベルとなる。   On the other hand, when the value of the PC address 306 exceeds the value of the secure program upper limit address 304-U or is smaller than the value of the secure program lower limit address 304-D, the output signal 707 of the 2-input AND circuit 706 becomes low level. The output signal 709 of the inverter circuit 708 becomes high level. That is, when the address represented by the PC address 306 designates other than the secure program area, the output signal 707 becomes low level and the output signal 709 becomes high level.

そのため、出力信号707および709は、セキュアプログラム領域を選択しているのかノンセキュアプログラム領域を選択しているのかを表す選択信号と見なすことができる。出力信号707は、セキュアプログラム領域が選択されているとき、ハイレベルとなる。そのため、出力信号707は、セキュアプログラム領域信号707と見なすことができる。同様に、出力信号709は、ノンセキュアプログラム領域が選択されているとき、ハイレベルとなる。そのため、出力信号709は、ノンセキュアプログラム領域信号709と見なすことができる。   Therefore, output signals 707 and 709 can be regarded as selection signals indicating whether the secure program area is selected or the non-secure program area is selected. The output signal 707 goes high when the secure program area is selected. Thus, the output signal 707 can be considered as a secure program domain signal 707. Similarly, the output signal 709 goes high when the non-secure program area is selected. Therefore, the output signal 709 can be regarded as the non-secure program area signal 709.

比較器704、705、2入力アンド回路706およびインバータ回路708によって、第1比較ユニットが構成されていると見なすことができる。この場合、第1比較ユニットによって形成されるセキュアプログラム領域信号707または/およびノンセキュアプログラム領域信号709(第1比較出力)を監視することによって、PCアドレスカウンタが、セキュアプログラム領域を指定しているのか、あるいはノンセキュアプログラム領域を指定しているのを判定することが可能である。   The comparators 704 and 705, the two-input AND circuit 706, and the inverter circuit 708 can be considered to constitute a first comparison unit. In this case, the PC address counter designates the secure program area by monitoring the secure program area signal 707 or / and the non-secure program area signal 709 (first comparison output) formed by the first comparison unit. It is possible to determine whether or not a non-secure program area is specified.

フェッチ開始アドレス監視回路300は、比較器700、2入力アンド回路701およびフリップフロップ回路703を備えている。   The fetch start address monitoring circuit 300 includes a comparator 700, a two-input AND circuit 701, and a flip flop circuit 703.

比較器700(第3比較回路)には、セキュアプログラム上限アドレス304−UとPCアドレス306とが供給される。比較器700は、セキュアプログラム上限アドレス304−Uの値から4を減算して得た値(上限アドレス−4)と、PCアドレス306とを比較する。PCアドレス306の値が、セキュアプログラム上限アドレス304−Uの値から4を減算して得た値(上限アドレス−4)以上のとき、比較器700は、ハイレベルの比較結果信号700−Rを出力する。一方、PCアドレス306の値が、セキュアプログラム上限アドレス304−Uの値から4を減算して得た値(上限アドレス−4)未満のとき、比較器700は、ロウレベルの比較結果信号700−Rを出力する。   The secure program upper limit address 304-U and the PC address 306 are supplied to the comparator 700 (third comparison circuit). The comparator 700 compares the PC address 306 with the value (upper limit address-4) obtained by subtracting 4 from the value of the secure program upper limit address 304-U. When the value of the PC address 306 is equal to or greater than the value obtained by subtracting 4 from the value of the secure program upper limit address 304-U (upper limit address-4), the comparator 700 sets the comparison result signal 700-R at high level. Output. On the other hand, when the value of the PC address 306 is less than the value (upper limit address -4) obtained by subtracting 4 from the value of the secure program upper limit address 304-U, the comparator 700 outputs a low level comparison result signal 700-R. Output

比較結果信号700−Rと、上記した比較器704の比較結果信号704−Rが、2入力アンド回路701(第2論理回路)に供給される。この2入力アンド回路701の出力信号は、セキュアプログラム分岐許可領域信号702として、フリップフロップ回路703に供給される。   The comparison result signal 700 -R and the comparison result signal 704 -R of the comparator 704 described above are supplied to the 2-input AND circuit 701 (second logic circuit). An output signal of the 2-input AND circuit 701 is supplied to the flip flop circuit 703 as a secure program branch permission area signal 702.

フリップフロップ回路703は、セット端子(set)、クリア端子(clear)および出力端子(Q)を備えており、セット端子にハイレベルが供給されることにより、出力端子がハイレベルとなる。出力端子のハイレベルは、クリア端子にハイレベルが供給されるまで維持(保持)される。クリア端子にハイレベルが供給されることにより、出力端子はロウレベルへ変化する。   The flip flop circuit 703 includes a set terminal (set), a clear terminal (clear) and an output terminal (Q), and the output terminal becomes high level by supplying the high level to the set terminal. The high level of the output terminal is maintained (held) until the clear terminal is supplied with the high level. By supplying a high level to the clear terminal, the output terminal changes to the low level.

2入力アンド回路701の出力信号であるセキュアプログラム分岐許可領域信号702が、フリップフロップ回路703のセット端子(set)に供給され、前記したインバータ回路708の出力信号、すなわちノンセキュアプログラム領域信号709が、フリップフロップ回路703のクリア端子(clear)に供給される。このフリップフロップ回路703の出力端子(Q)から出力される信号が、セキュアデータアクセス許可信号302として、図3に示したメモリアクセス制御回路303へ供給される。   The secure program branch permission area signal 702 which is the output signal of the 2-input AND circuit 701 is supplied to the set terminal (set) of the flip flop circuit 703, and the output signal of the inverter circuit 708 described above, ie, the non secure program area signal 709 , And the clear terminal (clear) of the flip flop circuit 703. A signal output from the output terminal (Q) of the flip flop circuit 703 is supplied as the secure data access permission signal 302 to the memory access control circuit 303 shown in FIG.

セキュアプログラム上限アドレス304−Uと、セキュアプログラム下限アドレス304−Dと、上記したセキュアプログラム上限アドレス304−Uの値から4を減算して得た値(上限アドレス−4)との関係が、図7(B)に示されている。図7(B)において、上限アドレス304−Uおよび下限アドレス304−Dは、実線で示されており、セキュアプログラム上限アドレス304−Uの値から4を減算して得た値(上限アドレス−4)は、破線で示されている。   The relationship between the secure program upper limit address 304-U, the secure program lower limit address 304-D, and the value (upper limit address -4) obtained by subtracting 4 from the value of the secure program upper limit address 304-U is shown in FIG. 7 (B). In FIG. 7B, upper limit address 304-U and lower limit address 304-D are indicated by solid lines, and a value obtained by subtracting 4 from the value of secure program upper limit address 304-U (upper limit address -4). ) Are shown by dashed lines.

図7(B)において、上限アドレス304−Uとして示されている値(アドレス)よりも、PCアドレス306の値(アドレス)が、小さいとき、上記したように、比較結果信号704−Rは、ハイレベルとなる。一方、比較器700は、PCアドレス306の値が、上限アドレス304−Uよりも4低い値(上限アドレス−4)以上のときに、ハイレベルの比較結果信号700−Rを出力する。そのため、2入力アンド回路701は、PCアドレスの値が、上限アドレス304−Uの値以下で、上限アドレス−4の値以上のときに、ハイレベルのセキュアプログラム分岐許可領域信号702を出力することになる。セキュアプログラム分岐許可領域信号702(第2比較出力)は、比較器700、704および2入力アンド回路701によって構成された第2比較ユニットにより形成されると見なすことができる。この場合、比較器704は、第1比較ユニットと第2比較ユニットとで共用されていることになる。   In FIG. 7B, when the value (address) of the PC address 306 is smaller than the value (address) indicated as the upper limit address 304-U, as described above, the comparison result signal 704-R is: It becomes high level. On the other hand, when the value of the PC address 306 is 4 or more lower than the upper limit address 304-U (upper limit address-4) or more, the comparator 700 outputs the comparison result signal 700-R at high level. Therefore, the 2-input AND circuit 701 outputs the high level secure program branch permission area signal 702 when the value of the PC address is equal to or less than the value of the upper limit address 304-U and equal to or more than the value of the upper limit address-4. become. The secure program branch allowance region signal 702 (second comparison output) can be considered to be formed by the second comparison unit configured by the comparators 700 and 704 and the two-input AND circuit 701. In this case, the comparator 704 is shared by the first comparison unit and the second comparison unit.

セキュアプログラムは、セキュアプログラム領域内に配置されるが、配置の際に、上限アドレス304−Uの値と(上限アドレス−4)の値によって指定されたプログラム領域が、セキュアプログラムの開始アドレス(図5)とされる。この開始アドレスには、分岐の際に最初に実行される命令、図5の例では、レジスタ等を退避する命令Ex−Aが配置される。   Although the secure program is placed in the secure program area, the program area specified by the value of upper limit address 304-U and the value of (upper limit address -4) at the time of arrangement is the start address of the secure program (see FIG. 5) At this start address, an instruction executed first at the time of branching, and in the example of FIG. 5, an instruction Ex-A for saving a register or the like is arranged.

例えば、PCアドレス306の値が、下限アドレス304−Dの値未満の場合、比較器704からは、ハイレベルの比較結果信号704−Rが出力され、比較器700および705からは、ロウレベルの比較結果信号700−Rおよび705−Rが出力されることになる。その結果、セキュアプログラム分岐許可領域信号702およびセキュアプログラム領域信号707のそれぞれは、ロウレベルとなり、ノンセキュアプログラム領域信号709はハイレベルとなる。これにより、フリップフロップ回路703のクリア端子には、ハイレベルが供給されるため、フリップフロップ回路703の出力端子はロウレベルとなり、ロウレベルのセキュアデータアクセス許可信号302が、メモリアクセス制御回路303に供給されることになる。   For example, when the value of the PC address 306 is less than the value of the lower limit address 304-D, the comparator 704 outputs a high level comparison result signal 704-R, and the comparators 700 and 705 compare low levels. The result signals 700-R and 705-R will be output. As a result, each of the secure program branch permission area signal 702 and the secure program area signal 707 becomes low level, and the non-secure program area signal 709 becomes high level. As a result, the high level is supplied to the clear terminal of the flip flop circuit 703, so the output terminal of the flip flop circuit 703 becomes low level, and the low level secure data access permission signal 302 is supplied to the memory access control circuit 303. It will be

また、PCアドレス306の値が、上限アドレス304−Uの値を超えていた場合、比較器704からは、ロウレベルの比較結果信号704−Rが出力され、比較器700および705からは、ハイレベルの比較結果信号700−Rおよび705−Rが出力されることになる。その結果、セキュアプログラム分岐許可領域信号702およびセキュアプログラム領域信号707のそれぞれは、ロウレベルとなり、ノンセキュアプログラム領域信号709はハイレベルとなる。これにより、フリップフロップ回路703のクリア端子には、ハイレベルが供給されるため、フリップフロップ回路703の出力端子はロウレベルとなり、ロウレベルのセキュアデータアクセス許可信号302が、メモリアクセス制御回路303に供給されることになる。   When the value of the PC address 306 exceeds the value of the upper limit address 304-U, the comparator 704 outputs a low level comparison result signal 704-R, and the comparators 700 and 705 output a high level. The comparison result signals 700-R and 705-R are output. As a result, each of the secure program branch permission area signal 702 and the secure program area signal 707 becomes low level, and the non-secure program area signal 709 becomes high level. As a result, the high level is supplied to the clear terminal of the flip flop circuit 703, so the output terminal of the flip flop circuit 703 becomes low level, and the low level secure data access permission signal 302 is supplied to the memory access control circuit 303. It will be

PCアドレス306の値が、上限アドレス304−Uの値以下であって、(上限アドレス−4)の値以上の場合には、比較器700、704および705のそれぞれから、ハイレベルの比較結果信号700−R、704−Rおよび705−Rが出力されることになる。その結果、セキュアプログラム分岐許可領域信号702およびセキュアプログラム領域信号707のそれぞれは、ハイレベルとなり、ノンセキュアプログラム領域信号709はロウレベルとなる。これにより、フリップフロップ回路703のセット端子には、ハイレベルが供給されるため、フリップフロップ回路703の出力端子はハイレベルとなり、ハイレベルのセキュアデータアクセス許可信号302が、メモリアクセス制御回路303に供給されることになる。   When the value of the PC address 306 is less than or equal to the value of the upper limit address 304-U and is greater than or equal to the value of (upper limit address -4), the comparison result signal of high level from each of the comparators 700, 704 and 705 700-R, 704-R and 705-R will be output. As a result, each of the secure program branch permission area signal 702 and the secure program area signal 707 becomes high level, and the non-secure program area signal 709 becomes low level. As a result, the high level is supplied to the set terminal of the flip flop circuit 703, so the output terminal of the flip flop circuit 703 becomes high level, and the secure data access permission signal 302 of high level is output to the memory access control circuit 303. It will be supplied.

メモリアクセス制御回路303は、セキュアデータアクセス許可信号302が、ハイレベルとなることにより、マイクロプロセッサCPUがメモリをアクセスするのを許可する。すなわち、メモリアクセス制御回路303は、このときのPCアドレス306を、メモリへ供給し、メモリとマイクロプロセッサCPUとの間でデータの送受信が可能となるようにする。そのため、セキュアプログラム分岐許可領域信号702がハイレベルとなることにより、マイクロプロセッサCPUからのPCアドレス306が、メモリに供給され、メモリとの間でデータの送受信が可能とされる。   The memory access control circuit 303 permits the microprocessor CPU to access the memory when the secure data access permission signal 302 goes high. That is, the memory access control circuit 303 supplies the PC address 306 at this time to the memory so that data can be transmitted and received between the memory and the microprocessor CPU. Therefore, when the secure program branch permission area signal 702 becomes high level, the PC address 306 from the microprocessor CPU is supplied to the memory, and data transmission / reception with the memory is enabled.

一方、PCアドレス306の値が、(上限アドレス−4)の値未満であって、下限アドレス304−Dの値以上の場合には、比較器700からの比較結果信号700−Rはロウレベルとなり、比較器704および705のそれぞれからは、ハイレベルの比較結果信号704−Rおよび705−Rが出力されることになる。その結果、セキュアプログラム分岐許可領域信号702およびノンセキュアプログラム領域信号709のそれぞれは、ロウレベルとなり、セキュアプログラム領域信号707は、ハイレベルとなる。これにより、フリップフロップ回路703のセット端子およびクリア端子には、ロウレベルが供給されるため、フリップフロップ回路703の出力端子は、以前の状態を維持することになり、以前の状態がハイレベルであれば、ハイレベルのセキュアデータアクセス許可信号302が、メモリアクセス制御回路303に供給され続け、以前の状態がロウレベルであれば、ロウレベルのセキュアデータアクセス許可信号302が、メモリアクセス制御回路303に供給され続けることになる。フリップフロップ回路703によって、以前の状態が維持(保持)されるため、フリップフロップ回路703は、保持回路と見なすことができる。   On the other hand, when the value of the PC address 306 is less than the value of (upper limit address-4) and greater than or equal to the value of lower limit address 304-D, the comparison result signal 700-R from the comparator 700 becomes low level, High-level comparison result signals 704 -R and 705 -R are output from the comparators 704 and 705, respectively. As a result, each of the secure program branch permission area signal 702 and the non-secure program area signal 709 becomes low level, and the secure program area signal 707 becomes high level. As a result, the low level is supplied to the set terminal and the clear terminal of the flip flop circuit 703, so the output terminal of the flip flop circuit 703 maintains the previous state, and the previous state is high level. For example, the high level secure data access permission signal 302 continues to be supplied to the memory access control circuit 303, and if the previous state is low level, the low level secure data access permission signal 302 is supplied to the memory access control circuit 303. I will continue. Since the previous state is maintained (held) by the flip flop circuit 703, the flip flop circuit 703 can be regarded as a holding circuit.

メモリアクセス制御回路303は、セキュアデータアクセス許可信号302がロウレベルのとき、マイクロプロセッサCPUからメモリへのアクセスを禁止する。すなわち、PCアドレス306が、メモリへ伝達されるのを禁止する。これにより、マイクロプロセッサCPUとメモリとの間のデータの送受信を禁止されることになる。   The memory access control circuit 303 prohibits the microprocessor CPU from accessing the memory when the secure data access permission signal 302 is at low level. That is, the PC address 306 is prohibited from being transmitted to the memory. This prohibits the transmission and reception of data between the microprocessor CPU and the memory.

ノンセキュアプログラムからセキュアプログラムへ分岐する際、ノンセキュアプログラムにおいて、マイクロプロセッサCPUのPCアドレス306の値は、開始アドレス(図5)に設定される。この場合、開始アドレスは、上限アドレス304−Uと(上限アドレス−4)の間の分岐許可領域BAA内のアドレスである。マイクロプロセッサCPUのPCアドレスが、この分岐許可領域内を指定している場合には、上記したように、セキュアプログラム分岐許可領域信号702がハイレベルとなり、セキュアデータアクセス許可信号302がハイレベルとなる。その結果、マイクロプロセッサCPUのPCアドレス306は、メモリアクセス制御回路303を介して、メモリへ伝達され、分岐許可領域BAAに格納されていた命令が、マイクロプロセッサCPUによって読み出され、実行される。   When branching from the non-secure program to the secure program, in the non-secure program, the value of the PC address 306 of the microprocessor CPU is set to the start address (FIG. 5). In this case, the start address is an address in the branch permission area BAA between the upper limit address 304-U and (upper limit address -4). When the PC address of the microprocessor CPU designates this branch permission area, as described above, the secure program branch permission area signal 702 becomes high level and the secure data access permission signal 302 becomes high level. . As a result, the PC address 306 of the microprocessor CPU is transmitted to the memory via the memory access control circuit 303, and the instruction stored in the branch permission area BAA is read out and executed by the microprocessor CPU.

これに対して、ノンセキュアプログラムが、例えばハッキングプログラムの場合、ハッキングプログラムからセキュアプログラムへ分岐する際、ハッキングプログラムにおいて、マイクロプロセッサCPUのPCアドレス306の値は、開始アドレス(図5)以外のアドレスに設定される。すなわち、PCアドレス306の値は、(上限アドレス−4)と下限アドレス304−Dとの間を指定することになる。この場合、セキュアプログラム分岐許可領域信号702はロウレベルとなり、セキュアプログラム領域信号707はハイレベルとなり、ノンセキュアプログラム領域信号709はロウレベルとなる。   On the other hand, when the non-secure program branches, for example, from the hacking program to the secure program in the case of a hacking program, in the hacking program, the value of the PC address 306 of the microprocessor CPU is an address other than the start address (FIG. 5) Set to That is, the value of the PC address 306 is designated between (upper limit address-4) and lower limit address 304-D. In this case, the secure program branch allowance area signal 702 goes low, the secure program area signal 707 goes high, and the non-secure program area signal 709 goes low.

セキュアプログラム分岐許可領域信号702およびノンセキュアプログラム領域信号709がロウレベルとなることによって、フリップフロップ回路703の出力端子(Q)の電圧は、以前の電圧が維持される。ノンセキュアプログラムからの分岐であるため、以前の状態はノンセキュアプログラムを実行していたときの状態となる。ノンセキュアプログラムを実行していたときには、ノンセキュアプログラム領域信号709が、ハイレベルとなる。そのため、以前の状態では、フリップフロップ回路703の出力端子(Q)は、ロウレベルである。その結果、ハッキングプログラムにおいて、分岐禁止領域BPAへ分岐しようとした場合には、ロウレベルのセキュアデータアクセス許可信号302が継続して出力されることになる。メモリアクセス制御回路303は、セキュアデータアクセス許可信号302が継続してロウレベルとなることにより、マイクロプロセッサCPUからメモリ内の分岐禁止領域へのアクセスが禁止される。   By setting the secure program branch permission area signal 702 and the non-secure program area signal 709 to low level, the voltage of the output terminal (Q) of the flip flop circuit 703 is maintained at the previous voltage. Since this is a branch from the non-secure program, the previous state is the state when the non-secure program was being executed. When the non-secure program is being executed, the non-secure program area signal 709 becomes high level. Therefore, in the previous state, the output terminal (Q) of the flip flop circuit 703 is at the low level. As a result, when it is attempted to branch to the branch prohibition area BPA in the hacking program, the low level secure data access permission signal 302 is continuously output. In the memory access control circuit 303, when the secure data access permission signal 302 continues to be low level, access from the microprocessor CPU to the branch prohibition area in the memory is prohibited.

この実施の形態1では、セキュアプログラム領域が、比較器700、704および705によって、分岐許可領域BAAと分岐禁止領域BPAに分けられる。ノンセキュアプログラムからセキュアプログラムに分岐する際に、PCアドレス306によって表される分岐先アドレスが分岐許可領域BAA内を指定していれば、マイクロプロセッサCPUによるメモリへのアクセスが許可される。これに対して、PCアドレス306によって表される分岐先アドレスが分岐禁止領域BPA内を指定していれば、マイクロプロセッサCPUによるメモリへのアクセスが禁止される。これにより、セキュアプログラム、セキュアデータをアタックから保護することが可能となる。   In the first embodiment, the secure program area is divided into a branch permission area BAA and a branch prohibition area BPA by the comparators 700, 704 and 705. When branching from the non-secure program to the secure program, if the branch destination address represented by the PC address 306 designates the inside of the branch permission area BAA, access to the memory by the microprocessor CPU is permitted. On the other hand, if the branch destination address represented by the PC address 306 designates the inside of the branch prohibition area BPA, access to the memory by the microprocessor CPU is prohibited. This makes it possible to protect the secure program and secure data from attacks.

この実施の形態1において、分岐許可領域BAAは、上限アドレス304−Uの値(分岐許可領域上限アドレス)と(上限アドレス−4)の値(分岐許可領域下限アドレス)との間のプログラム領域である。また、分岐禁止領域はBPA、下限アドレス304−Dの値(分岐禁止領域下限アドレス)と(上限アドレス−5)の値(分岐禁止領域上限アドレス)との間のプログラム領域である。また、この実施の形態1では、特に制限されないが、開始アドレス(図5)に格納される1個の1ワード命令が、4バイトによって構成されている。そのため、分岐許可領域下限アドレスが、分岐許可領域BAAの上限アドレスに対して4バイト小さくなるように、上限アドレス304−Uから4を減算したアドレスとしている。しかしながら、これに限定されるものではなく、セキュアプログラムの用途等によって、分岐許可領域BAAのサイズは決定してもよい。   In the first embodiment, branch permitted area BAA is a program area between the value of upper limit address 304-U (branch permitted area upper limit address) and the value of (upper limit address -4) (branch permitted area lower limit address). is there. The branch prohibited area is a program area between the value of BPA, lower limit address 304-D (branch prohibited area lower limit address) and the value of (upper limit address-5) (branch prohibited area upper limit address). Further, in the first embodiment, although not particularly limited, one 1-word instruction stored in the start address (FIG. 5) is configured by 4 bytes. Therefore, the upper limit address 304-U is an address obtained by subtracting 4 from the upper limit address 304-U so that the branch lower limit address is 4 bytes smaller than the upper limit address of the branch permission area BAA. However, the present invention is not limited to this, and the size of the branch allowance area BAA may be determined according to the use of the secure program or the like.

また、フリップフロップ回路703は、非同期式のフリップフロップ回路を例として示したが、マイクロプロセッサCPUからメモリへのアクセスにタイミング的に余裕があれば、同期式のフリップフロップ回路を用いるようにしてもよいが、タイミング的に余裕が少ない場合には、非同期式のフリップフロップ回路を用いることが望ましい。   In addition, although the flip-flop circuit 703 is illustrated as an example of an asynchronous flip-flop circuit, it is possible to use a synchronous flip-flop circuit if there is enough timing for the microprocessor CPU to access the memory. Although it is good, it is desirable to use an asynchronous flip-flop circuit when there is little margin in timing.

ここでは、3個の比較器700、704および705を用いる例を示したが、これに限定されるものではない。例えば、フェッチアドレス比較回路301とフェッチ開始アドレス監視回路300のそれぞれに、2個の比較器を用いるようにしてもよい。この場合、フェッチ開始アドレス監視回路300に、比較器704と同様な比較器を第4の比較器として設けるようにすればよい。第4の比較器で比較する上限アドレスを比較器704で比較する上限アドレスとは異なるアドレスにすることにより、分岐許可領域BAAを任意に設定できるようにしてもよい。   Although an example using three comparators 700, 704 and 705 is shown here, the present invention is not limited to this. For example, two comparators may be used for each of the fetch address comparison circuit 301 and the fetch start address monitoring circuit 300. In this case, the fetch start address monitoring circuit 300 may be provided with a comparator similar to the comparator 704 as a fourth comparator. By setting the upper limit address to be compared by the fourth comparator to be an address different from the upper limit address to be compared by the comparator 704, the branch permission area BAA may be set arbitrarily.

しかしながら、フェッチアドレス比較回路301およびフェッチ開始アドレス監視回路300において、PCアドレス306と比較するアドレスとして、上限アドレス304−Uまたは下限アドレス304−Dを共通とすることにより、比較器の個数を低減することが可能となる。この場合、上限アドレス304−U(または下限アドレス304−D)を基準として、許可アドレス情報によって分岐許可領域BAAを定めればよい。この実施の形態1では、上限アドレス304−Uを基準として、許可アドレス情報が−4とされ、分岐許可領域BAAの下限アドレスが、(上限アドレス−4)と定められている。   However, in the fetch address comparison circuit 301 and the fetch start address monitoring circuit 300, the number of comparators is reduced by making the upper limit address 304-U or the lower limit address 304-D common as an address to be compared with the PC address 306. It becomes possible. In this case, the branch permission area BAA may be defined by the permission address information on the basis of the upper limit address 304-U (or the lower limit address 304-D). In the first embodiment, the permitted address information is set to -4, and the lower limit address of the branch permitted area BAA is set to (upper limit address -4) based on the upper limit address 304-U.

<メモリプロテクションユニットの動作>
次に、ノンセキュアプログラムからセキュアプログラムへ分岐するときの動作を、図7〜図10を用いて説明する。先ず、ノンセキュアプログラムがハッキングプログラムではなく、正常にノンセキュアプログラムからセキュアプログラムへ分岐する場合を説明する。
<Operation of Memory Protection Unit>
Next, the operation when branching from the non-secure program to the secure program will be described with reference to FIGS. First, the case where the non-secure program branches from the non-secure program to the secure program normally instead of the hacking program will be described.

<<ノンセキュアプログラムからセキュアプログラムへの分岐>>
図8(A)〜(D)は、実施の形態1に係わるメモリプロテクションユニット204の動作を示すタイミング図である。図8は、正常にノンセキュアプログラムからセキュアプログラムへ分岐する場合を示している。
<< Bifurcation from non-secure program to secure program >>
FIGS. 8A to 8D are timing diagrams showing the operation of the memory protection unit 204 according to the first embodiment. FIG. 8 shows a case where the non-secure program branches to the secure program normally.

時刻t0まで、マイクロプロセッサCPUは、ノンセキュアプログラム領域でノンセキュアプログラムを実行している。すなわち、PCアドレス306は、図7(B)に示したセキュアプログラム領域ではなく、ノンセキュアプログラム領域内を指定している。そのため、時刻t0までは、比較器704または705(図7(A))からの比較結果信号704−Rまたは705−Rはロウレベルとなる。これにより、セキュアプログラム領域信号707はロウレベルとなり、ノンセキュアプログラム領域信号709はハイレベルとなっている。また、比較結果信号704−Rまたは700−Rがロウレベルとなるため、セキュアプログラム分岐許可領域信号702もロウレベルとなっている。   The microprocessor CPU executes the nonsecure program in the nonsecure program area until time t0. That is, the PC address 306 designates not the secure program area shown in FIG. 7 (B) but the non-secure program area. Therefore, until time t0, the comparison result signal 704-R or 705-R from the comparator 704 or 705 (FIG. 7A) becomes low level. As a result, the secure program area signal 707 is at low level, and the non-secure program area signal 709 is at high level. Further, since the comparison result signal 704 -R or 700 -R is at the low level, the secure program branch permission area signal 702 is also at the low level.

ノンセキュアプログラム領域信号709がハイレベルとなっているため、フリップフロップ回路703のクリア端子(clear)にハイレベルが供給されることになる。フリップフロップ回路703のセット端子(set)にはロウレベルが供給されているが、クリア端子にハイレベルが供給されているため、セキュアデータアクセス許可信号302はロウレベルとなる。   Since the non-secure program area signal 709 is at high level, the clear terminal (clear) of the flip flop circuit 703 is supplied with high level. Although the low level is supplied to the set terminal (set) of the flip flop circuit 703, the high level is supplied to the clear terminal, so the secure data access permission signal 302 becomes low level.

時刻t0で、マイクロプロセッサCPUは、ノンセキュアプログラムにおける分岐命令を実行する。このとき実行する分岐命令が、セキュアプログラムへの分岐を指示する分岐命令である。特に制限されないが、このとき分岐先アドレスを指定するアドレス情報が、実行しているノンセキュアプログラムにおいて、マイクロプロセッサCPUに与えられる。マイクロプロセッサCPUは、与えられたアドレス情報に従って、PCアドレス306を設定する。ここでは、図5に示した開始アドレスが、PCアドレス306に設定される(図8(A))。開始アドレスは、分岐許可領域BAA内を指定するアドレスであるため、比較結果信号700−R、704−Rおよび705−Rのそれぞれがハイレベルとなる。これにより、セキュアプログラム領域信号707はハイレベルになり、ノンセキュアプログラム領域信号709はロウレベルとなり、セキュアプロクラム分岐許可領域信号702はハイレベルとなる(図8(C)、図8(B))。   At time t0, the microprocessor CPU executes a branch instruction in the non-secure program. The branch instruction executed at this time is a branch instruction instructing a branch to the secure program. Although not particularly limited, address information specifying the branch destination address at this time is given to the microprocessor CPU in the non-secure program being executed. The microprocessor CPU sets the PC address 306 in accordance with the provided address information. Here, the start address shown in FIG. 5 is set to the PC address 306 (FIG. 8 (A)). Since the start address is an address for designating the inside of the branch permission area BAA, each of the comparison result signals 700 -R, 704 -R and 705 -R becomes high level. As a result, the secure program area signal 707 becomes high level, the non-secure program area signal 709 becomes low level, and the secure program branch permission area signal 702 becomes high level (FIG. 8 (C), FIG. 8 (B)).

セキュアプログラム分岐許可領域信号702がハイレベルとなることにより、フリップフロップ回路703の出力端子(Q)はハイレベルとなる。このとき、フリップフロップ回路703のクリア端子にはロウレベルが供給されているため、フリップフロップ回路703は、ハイレベルを出力する。これにより、セキュアデータアクセス許可信号302はハイレベルへ変化する(図8(D))。セキュアデータアクセス許可信号302がハイレベルとなることにより、メモリアクセス制御回路303(図3)は、マイクロプロセッサCPUからメモリへのアクセスを許可する。   The output terminal (Q) of the flip flop circuit 703 becomes high level when the secure program branch allowance area signal 702 becomes high level. At this time, since the low level is supplied to the clear terminal of the flip flop circuit 703, the flip flop circuit 703 outputs a high level. As a result, the secure data access permission signal 302 changes to high level (FIG. 8 (D)). When the secure data access permission signal 302 goes high, the memory access control circuit 303 (FIG. 3) permits the microprocessor CPU to access the memory.

時刻t1で、マイクロプロセッサCPUは、分岐許可領域BAAに格納されている命令(例えば、図5の命令Ex−A)の実行を完了し、時刻t1から時刻t2の間で、セキュアプログラムの残りの命令を実行する。残りの命令を実行するために、PCアドレス306は、時刻t1から時刻t2の間、分岐禁止領域BPA内を指定するアドレスを順次出力する。図5を例にして述べると、時刻t1から時刻t2の間で、所定の処理に関する命令Ex−B〜Ex−Pと、レジスタ等の復帰に関する命令Ex−Zを実行するために、PCアドレス306は、順次更新される。   At time t1, the microprocessor CPU completes the execution of the instruction (for example, the instruction Ex-A in FIG. 5) stored in the branch permission area BAA, and between time t1 and time t2, the remaining secure program is executed. Execute an instruction. In order to execute the remaining instructions, the PC address 306 sequentially outputs an address specifying the inside of the branch prohibition area BPA between time t1 and time t2. Taking FIG. 5 as an example, in order to execute instructions Ex-B to Ex-P related to predetermined processing and instructions Ex-Z related to restoration of a register or the like between time t1 and time t2, the PC address 306 Are sequentially updated.

これらの命令は、セキュアプログラム領域に配置されており、分岐禁止領域BPAに配置されている。そのため、時刻t1において、時刻t1から時刻t2の間、比較器700からはロウレベルの比較結果信号700−Rが出力されることになる。しかしながら、これらの命令は、セキュアプログラム領域に配置されているため、比較器704および705のそれぞれの比較結果信号704−Rおよび705−Rはハイレベルを維持することになる。   These instructions are arranged in the secure program area and arranged in the branch prohibition area BPA. Therefore, at time t1, the comparator 700 outputs a low level comparison result signal 700-R from time t1 to time t2. However, since these instructions are located in the secure program area, comparison result signals 704-R and 705-R of comparators 704 and 705, respectively, maintain high level.

時刻t1において、比較結果信号700−Rがロウレベルとなることにより、セキュアプログラム分岐許可領域信号702はロウレベルへ変化する。これにより、フリップフロップ回路703のセット端子(set)には、ロウレベルが供給されることになる。一方、比較結果信号704−Rおよび705−Rは、ハイレベルを維持しているため、ノンセキュアプログラム領域信号709はロウレベルを維持している。そのため、フリップフロップ回路703のクリア端子(clear)には、継続してロウレベルが供給されることになる。クリア端子(clear)がロウレベルのため、フリップフロップ回路703は、その出力端子(Q)がハイレベルの状態を維持(保持)することになる。この結果、セキュアデータアクセス許可信号302も、時刻t1から時刻t2の間、ハイレベルを維持することになる。セキュアデータアクセス許可信号302がハイレベルとなっているため、メモリアクセス制御回路303は、時刻t1から時刻t2の間も、マイクロプロセッサCPUが、メモリをアクセスすることを許可し続ける。   At time t1, as the comparison result signal 700-R becomes low level, the secure program branch permission area signal 702 changes to low level. Thus, the low level is supplied to the set terminal (set) of the flip flop circuit 703. On the other hand, since the comparison result signals 704 -R and 705 -R maintain the high level, the non-secure program area signal 709 maintains the low level. Therefore, the low level is continuously supplied to the clear terminal (clear) of the flip flop circuit 703. Since the clear terminal (clear) is at the low level, the flip flop circuit 703 maintains (holds) the state of the output terminal (Q) at the high level. As a result, the secure data access permission signal 302 also maintains the high level from time t1 to time t2. Since the secure data access permission signal 302 is at the high level, the memory access control circuit 303 continues to permit the microprocessor CPU to access the memory also from time t1 to time t2.

時刻t2において、セキュアプログラムの実行が完了すると、セキュアプログラムからノンセキュアプログラムへ復帰する。すなわち、PCアドレス306は、分岐禁止領域BPAから、ノンセキュアプログラム領域内を指定するアドレスに変わる。セキュアプログラム領域から、ノンセキュアプログラム領域内を指定するアドレスに、PCアドレス306が変化するため、時刻t2において、比較器704または705の比較結果信号704−Rまたは705−Rがロウレベルへ変化する。その結果、ノンセキュアプログラム領域信号709は、ハイレベルへ変化する。これにより、フリップフロップ回路703のクリア端子(clear)にハイレベルが供給され、フリップフロップ回路703の出力端子(Q)の電圧は、ロウレベルへ変化し、セキュアデータアクセス許可信号302もロウレベルへ変化する。セキュアデータアクセス許可信号302がロウレベルとなることによって、メモリアクセス制御回路303は、マイクロプロセッサCPUが、メモリのセキュアプログラム領域およびセキュアデータ領域をアクセスするのを禁止する。   At time t2, when the execution of the secure program is completed, the secure program returns to the non-secure program. That is, the PC address 306 changes from the branch prohibition area BPA to an address for designating the inside of the non-secure program area. Since the PC address 306 changes from the secure program area to the address specifying the non-secure program area, at time t2, the comparison result signal 704-R or 705-R of the comparator 704 or 705 changes to low level. As a result, the non-secure program area signal 709 changes to high level. Thereby, the high level is supplied to the clear terminal (clear) of the flip flop circuit 703, the voltage of the output terminal (Q) of the flip flop circuit 703 changes to low level, and the secure data access permission signal 302 also changes to low level. . As the secure data access permission signal 302 goes low, the memory access control circuit 303 inhibits the microprocessor CPU from accessing the secure program area and secure data area of the memory.

フリップフロップ回路703に注目して述べると、マイクロプロセッサCPUからのアドレス(PCアドレス306)が、ノンセキュアプログラム領域を示すまでは、その出力端子(Q)はハイレベル(所定の状態)に維持され、メモリへのアクセスが許可されることになる。   Focusing on the flip flop circuit 703, the output terminal (Q) is maintained at high level (predetermined state) until the address (PC address 306) from the microprocessor CPU indicates the non-secure program area. , Access to the memory will be allowed.

このようにして、ノンセキュアプログラムから、セキュアプログラムへ分岐して、セキュアプログラムを実行することが可能となる。すなわち、ノンセキュアプログラムから、RTOSを構成するセキュアプログラムを呼び出して、利用することが可能となる。   In this way, it is possible to branch from the non-secure program to the secure program and execute the secure program. That is, the non-secure program can call and use the secure program constituting the RTOS.

<<ハッキングプログラムからセキュアプログラムへの分岐>>
次に、ハッキングプログラムからセキュアプログラムへ分岐する場合を説明する。この場合、ハッキングプログラムは、ノンセキュアプログラム領域で動作している。図9(A)〜(D)は、実施の形態1に係わるメモリプロテクションユニットの動作を示すタイミング図である。図9は、ハッキングプログラムからセキュアプログラムへ分岐する場合を示している。なお、図9(B)および(D)において、破線は、図8で説明した状態を示している。すなわち、正常に、ノンセキュアプログラムからセキュアプログラムを呼び出したときの状態を示している。
<< Bifurcation from hacking program to secure program >>
Next, the case where the hacking program branches to the secure program will be described. In this case, the hacking program operates in the non-secure program area. FIGS. 9A to 9D are timing diagrams showing the operation of the memory protection unit according to the first embodiment. FIG. 9 shows the case where the hacking program branches to the secure program. In FIGS. 9B and 9D, broken lines indicate the state described with reference to FIG. That is, it shows the state when a secure program is called from a non-secure program normally.

時刻t0までは、図8と同じであるため、詳しい説明は省略するが、時刻t0までは、ノンセキュアプログラムが実行されているため、ノンセキュアプログラム領域信号709がハイレベルとなっている。そのため、フリップフロップ回路703の出力端子(Q)はロウレベルの状態となっており、セキュアデータアクセス許可信号302もロウレベルとなっている。   Until time t0, which is the same as FIG. 8, detailed description will be omitted, but since non-secure program is executed until time t0, non-secure program area signal 709 is at high level. Therefore, the output terminal (Q) of the flip flop circuit 703 is in the low level state, and the secure data access permission signal 302 is also in the low level.

時刻t0で、マイクロプロセッサCPUは、ハッキングプログラム(ノンセキュアプログラム)における分岐命令を実行する。このとき実行する分岐命令が、セキュアプログラムの所定の分岐先アドレスへの分岐を指示する分岐命令である。特に制限されないが、このとき所定の分岐先アドレスを指定するアドレス情報は、実行しているハッキングプログラムにおいて、マイクロプロセッサCPUに与えられる。マイクロプロセッサCPUは、与えられたアドレス情報に従って、PCアドレス306を設定する。ハッキングプログラムでは、例えば図5に示した分岐先アドレスが、PCアドレス306に設定される(図9(A))。分岐先アドレスは、開始アドレスと異なり、例えばセキュアプログラムを構成する一連の命令列において、途中の命令が格納されているアドレスである。図5の例では、一連の命令列(命令Ex−B〜Ex−P)のうちの途中のストア命令(Ex−S)が格納されているアドレスが、分岐先アドレスとされている。   At time t0, the microprocessor CPU executes a branch instruction in the hacking program (non-secure program). The branch instruction executed at this time is a branch instruction instructing a branch to a predetermined branch destination address of the secure program. Although not particularly limited, address information specifying a predetermined branch destination address at this time is given to the microprocessor CPU in the hacking program being executed. The microprocessor CPU sets the PC address 306 in accordance with the provided address information. In the hacking program, for example, the branch destination address shown in FIG. 5 is set to the PC address 306 (FIG. 9 (A)). The branch destination address is, unlike the start address, an address at which an intermediate instruction is stored, for example, in a series of instruction sequences constituting the secure program. In the example of FIG. 5, the address at which the store instruction (Ex-S) in the middle of the series of instruction sequences (instructions Ex-B to Ex-P) is stored is taken as the branch destination address.

この分岐先アドレスは、分岐禁止領域BPAを指定するアドレスであるため、比較結果信号700−Rはロウレベルとなり、比較結果信号704−Rおよび705−Rはハイレベルとなる。比較結果信号704−Rおよび705−Rがハイレベルとなるため、セキュアプログラム領域信号707はハイレベルになり、ノンセキュアプログラム領域信号709はロウレベルとなる。一方、比較結果信号700−Rがロウレベルとなるため、セキュアプロクラム分岐許可領域信号702もロウレベルとなる(図9(C)、図9(B))。   Since the branch destination address is an address for designating the branch prohibition area BPA, the comparison result signal 700-R becomes low level, and the comparison result signals 704-R and 705-R become high level. Since the comparison result signals 704 -R and 705 -R become high level, the secure program area signal 707 becomes high level, and the non-secure program area signal 709 becomes low level. On the other hand, since the comparison result signal 700-R is at the low level, the secure program branch permitted area signal 702 is also at the low level (FIG. 9C, FIG. 9B).

セキュアプログラム分岐許可領域信号702およびノンセキュアプログラム領域信号709のそれぞれが、ロウレベルとなることにより、フリップフロップ回路703のセット端子(set)およびクリア端子(clear)には、ロウレベルが供給されることになる。そのため、フリップフロップ回路703の出力端子(Q)は、時刻t0までの状態を継続して出力する。すなわち、フリップフロップ回路703の出力端子(Q)はロウレベルを継続して出力する。これにより、セキュアデータアクセス許可信号302は、図8(D)で説明したように、ハイレベル(図9(D)の破線)へは変化せず、ロウレベルを維持することになる。セキュアデータアクセス許可信号302がロウレベルであるため、メモリアクセス制御回路303(図3)は、マイクロプロセッサCPUからメモリのセキュアプログラム領域およびセキュアデータ領域へのアクセスを禁止する。   When each of the secure program branch permission area signal 702 and the non-secure program area signal 709 becomes low level, a low level is supplied to the set terminal (set) and the clear terminal (clear) of the flip flop circuit 703. Become. Therefore, the output terminal (Q) of the flip flop circuit 703 continuously outputs the state until time t0. That is, the output terminal (Q) of the flip flop circuit 703 continuously outputs a low level. As a result, as described with reference to FIG. 8D, the secure data access permission signal 302 does not change to the high level (broken line in FIG. 9D), and maintains the low level. Since the secure data access permission signal 302 is at low level, the memory access control circuit 303 (FIG. 3) prohibits the microprocessor CPU from accessing the secure program area and secure data area of the memory.

時刻t1において、マイクロプロセッサCPUによるセキュアプログラム領域へのアクセスが、メモリアクセス制御回路303によって禁止されるため、セキュアプログラム領域において分岐先アドレスによって指定される命令(図5では、命令Ex−S)は、読み出されず、この命令は、マイクロプロセッサCPUによって実行されない。図9の例では、マイクロプロセッサCPUが、時刻t1から時刻t2の間、セキュアプログラム領域を指定するPCアドレス306を継続して出力している。PCアドレス306が、セキュアプログラム領域を指定している期間では、セキュアプログラム領域信号707がハイレベルを継続し、図9(C)に示すようにノンセキュアプログラム領域信号709はロウレベルを継続する。そのため、時刻t1から時刻t2の期間においても、フリップフロップ回路703は、その出力端子(Q)は、図9(D)に破線で示すようにハイレベルには変化せず、ロウレベルを維持する。すなわち、セキュアデータアクセス許可信号302はロウレベルを維持する。   At time t1, the access to the secure program area by the microprocessor CPU is prohibited by the memory access control circuit 303, so the instruction specified by the branch destination address in the secure program area (instruction Ex-S in FIG. 5) is , Not read, this instruction is not executed by the microprocessor CPU. In the example of FIG. 9, the microprocessor CPU continuously outputs the PC address 306 specifying the secure program area from time t1 to time t2. During a period in which the PC address 306 designates the secure program area, the secure program area signal 707 continues high level, and as shown in FIG. 9C, the non-secure program area signal 709 continues low level. Therefore, even during the period from time t1 to time t2, the flip-flop circuit 703 does not change its output terminal (Q) to the high level as shown by the broken line in FIG. 9D, and maintains the low level. That is, the secure data access permission signal 302 maintains the low level.

セキュアデータアクセス許可信号302がロウレベルを維持するため、時刻t1から時刻t2の期間においても、マイクロプロセッサCPUによるセキュアプログラム領域およびセキュアデータ領域へのアクセスは、メモリアクセス制御回路303によって禁止されることになる。   Since the secure data access permission signal 302 maintains the low level, access to the secure program area and secure data area by the microprocessor CPU is inhibited by the memory access control circuit 303 even during the period from time t1 to time t2. Become.

図9の例では、時刻t2において、マイクロプロセッサCPUは、ノンセキュアプログラムを実行するように、そのPCアドレス306に格納されているアドレスを変更している。PCアドレス306が、ノンセキュアプログラム領域を指定するアドレスに変更されることにより、比較結果信号704−Rまたは705−Rが、ハイレベルからロウレベルへ変化する。これにより、セキュアプログラム領域信号707はハイレベルからロウレベルへ変化し、ノンセキュアプログラム領域信号709は、ロウレベルからハイレベルへ変化する。   In the example of FIG. 9, at time t2, the microprocessor CPU changes the address stored in the PC address 306 so as to execute the non-secure program. By changing the PC address 306 to an address specifying a non-secure program area, the comparison result signal 704 -R or 705 -R changes from high level to low level. As a result, the secure program area signal 707 changes from high level to low level, and the non-secure program area signal 709 changes from low level to high level.

ノンセキュアプログラム領域信号709が、ハイレベルとなることによって、フリップフロップ回路703は、出力端子(Q)をロウレベルにする。時刻t2まで、出力端子(Q)はロウレベルであったため、フリップフロップ回路703は、出力端子(Q)から継続してロウレベルを出力すると見なすことができる。すなわち、セキュアデータアクセス許可信号302は、時刻t2以降も、ロウレベルとなる。   When the non-secure program area signal 709 becomes high level, the flip flop circuit 703 makes the output terminal (Q) low level. Since the output terminal (Q) is at the low level until time t2, the flip-flop circuit 703 can be considered to continuously output the low level from the output terminal (Q). That is, the secure data access permission signal 302 becomes low level also after time t2.

メモリアクセス制御回路303は、セキュアデータアクセス許可信号302がロウレベルとなっているが、PCアドレス306が、ノンセキュアプログラム領域内を指定しているため、マイクロプロセッサCPUによるノンセキュアプログラム領域およびノンセキュアデータ領域へのアクセスを許可する。   In the memory access control circuit 303, the secure data access permission signal 302 is at low level, but since the PC address 306 designates the non-secure program area, the non-secure program area and non-secure data by the microprocessor CPU are Allow access to the area.

その結果、ノンセキュアプログラムに関する命令は実行することが可能となる。勿論、ハッキングプログラムにおいて、セキュアプログラムへの分岐命令の後に、ノンセキュアプログラムの命令が配置されている場合、セキュアプログラムへの分岐命令の後に配置されているノンセキュアプログラムの命令を実行しないように制限してもよい。例えばノンセキュアプログラム領域信号709がロウレベルへ変化するタイミングで、セキュアプログラム分岐許可領域信号702をサンプリングし、サンプリングしたセキュアプログラム分岐許可領域信号702がロウレベルであれば、時刻t2以降は、メモリアクセス制御回路303が、マイクロプロセッサCPUによるノンセキュアプログラム領域およびノンセキュアデータ領域へのアクセスも禁止するようにすればよい。   As a result, instructions relating to non-secure programs can be executed. Of course, in the hacking program, if the instruction of the non-secure program is placed after the branch instruction to the secure program, the instruction of the non-secure program placed after the branch instruction to the secure program is not executed. You may For example, when the non-secure program area signal 709 changes to low level, the secure program branch permission area signal 702 is sampled, and if the sampled secure program branch permission area signal 702 is low level, the memory access control circuit is performed after time t2. 303 may also prohibit the microprocessor CPU from accessing the non-secure program area and the non-secure data area.

このように、ハッキングプログラムによって、セキュアデータ(セキュアプログラムを含む)へのアクセスが禁止されるため、ハッキングプログラムによるアタックから、セキュアデータを保護することが可能となる。ここでは、ハッキングプログラムを例にして説明したが、ノンセキュアプログラムの不備によって、誤ってセキュアデータが読み出されてしまうのも防ぐことが可能となる。   As described above, since the hacking program prohibits access to the secure data (including the secure program), the secure data can be protected from the attack by the hacking program. Here, although the hacking program has been described as an example, it is possible to prevent the secure data from being read out erroneously due to the defect of the non-secure program.

<<メモリプロテクションユニットの動作>>
図10は、実施の形態1に係わるメモリプロテクションユニット204の動作を示す表である。図10は、分岐の際のメモリプロテクションユニット204の動作を示している。図10において、BSA、BDAおよびBOPは、表の列を示している。ここで、列BSAは、分岐元アドレスを示し、列BDAは、分岐先アドレスを示し、列BOPは、分岐の際の制御を示している。
<< Operation of Memory Protection Unit >>
FIG. 10 is a table showing the operation of the memory protection unit 204 according to the first embodiment. FIG. 10 shows the operation of the memory protection unit 204 at the time of branching. In FIG. 10, BSA, BDA and BOP indicate the columns of the table. Here, the column BSA indicates a branch source address, the column BDA indicates a branch destination address, and the column BOP indicates control at the time of branching.

メモリプロテクションユニット204は、分岐元アドレスを、3個に分けて制御する。すなわち、分岐するとき、分岐元が「(1)ノンセキュアプログラム領域」であるか、「(2)セキュアプログラム分岐許可領域」であるか、あるいは「(3)セキュアプログラム分岐禁止領域」であるかに分けて制御する。言い換えるなら、分岐を実行するとき、分岐命令が「(1)ノンセキュアプログラム領域」に配置されているか、「(2)セキュアプログラム分岐許可領域」に配置されているか、あるいは「(3)セキュアプログラム分岐禁止領域」に配置されているかに分けて制御する。なお、図10において、セキュアプログラム分岐許可領域とは、分岐許可領域BAAを表しており、セキュアプログラム分岐禁止領域とは、分岐禁止領域BPAを表している。   The memory protection unit 204 divides and controls the branch source address into three. That is, when branching, whether the branch source is "(1) non-secure program area", "(2) secure program branch permission area", or "(3) secure program branch prohibition area" Divide and control. In other words, when executing a branch, the branch instruction is arranged in "(1) non-secure program area", "(2) secure program branch permission area", or "(3) secure program Control is performed separately depending on whether it is located in the branch prohibited area. In FIG. 10, the secure program branch allowance area represents a branch allowance area BAA, and the secure program branch prohibition area represents a branch prohibition area BPA.

メモリプロテクションユニット204は、図8および図9に示した時刻t0のとき、「(1)ノンセキュアプログラム領域」の制御を行う。また、メモリプロテクションユニット204は、図8において時刻t0から時刻t2の期間は、「(2)セキュアプログラム分岐許可領域」および「(3)セキュアプログラム分岐禁止領域」の制御を行う。   The memory protection unit 204 controls the “(1) non-secure program area” at time t0 shown in FIGS. 8 and 9. In addition, the memory protection unit 204 controls “(2) secure program branch permission area” and “(3) secure program branch prohibition area” in a period from time t0 to time t2 in FIG.

メモリプロテクションユニット204は、列BSAに示した分岐元アドレスが、「ノンセキュアプログラム領域」、「セキュアプログラム分岐許可領域」および「セキュアプログラム分岐禁止領域」のそれぞれに対して、列BDAに示した分岐先アドレスも、3個に分けて制御する。すなわち、分岐するとき、分岐先が、「ノンセキュアプログラム領域」であるか、「セキュアプログラム分岐許可領域」であるか、あるいは「セキュアプログラム分岐禁止領域」に分けて制御する。この場合も、分岐命令を実行した際の分岐先の命令が、「ノンセキュアプログラム領域」に配置されているか、「セキュアプログラム分岐許可領域」に配置されているか、あるいは「セキュアプログラム分岐禁止領域」に配置されているかに分けて制御されていると見なすことができる。   The memory protection unit 204 determines that the branch source address indicated in the column BSA is the branch indicated in the column BDA for each of the “non-secure program area”, the “secure program branch allowance area” and the “secure program branch prohibition area”. The destination address is also divided into three and controlled. That is, when branching, the branch destination is divided into a "non-secure program area", a "secure program branch permission area", or a "secure program branch prohibition area" to control. Also in this case, the instruction at the branch destination when the branch instruction is executed is arranged in the "non-secure program area", in the "secure program branch allowance area", or in the "secure program branch prohibition area". It can be considered as being divided and controlled.

列BOPは、分岐の際の制御を示しており、図10には、分岐の際のセキュアデータ領域に関する制御が示されている。ここでのセキュアデータ領域は、セキュアプログラム領域およびセキュアデータ領域の両方を意味している。セキュアデータ領域に関する制御は、3種類存在する。すなわち、メモリアクセス制御ユニット303が、マイクロプロセッサCPUに対して、セキュアデータ領域に対するアクセスを許可するセキュアデータアクセス許可状態、セキュアデータ領域に対するアクセスを禁止するセキュアデータアクセス禁止状態および分岐前の動作状態を維持する維持状態である。ここで維持状態とは、分岐前が、セキュアデータアクセス許可状態であれば、セキュアデータアクセス許可状態を維持することを意味し、分岐前が、セキュアデータアクセス禁止状態であれば、セキュアデータアクセス禁止状態を維持することを意味する。   Column BOP shows control at the time of branching, and FIG. 10 shows control on a secure data area at the time of branching. The secure data area here means both a secure program area and a secure data area. There are three types of control regarding the secure data area. That is, the memory access control unit 303 allows the microprocessor CPU to access the secure data area in the secure data access permission state, prohibits the access to the secure data area, the secure data access prohibition state, and the operation state before branching. It is a maintenance state to maintain. Here, the maintenance state means maintaining the secure data access permitted state if the branch before is the secure data access permitted state, and prohibiting secure data access if the branch before the branch is the secure data access prohibited state. It means maintaining the state.

メモリプロテクションユニット204は、分岐元アドレスが、列BSAの「(1)セキュアプログラム領域」の場合、分岐先アドレスが、この「(1)セキュアプログラム領域」と同じ行に記載した3個の分岐先アドレスのいずれかを判定し、判定した分岐先アドレスに対応する制御(列BOPに記載した制御)を実行する。同様に、分岐元アドレスが、列BSAの「(2)セキュアプログラム分岐許可領域」の場合、分岐先アドレスが、この「(2)セキュアプログラム分岐許可領域」と同じ行に記載した3個の分岐先アドレスのいずれかを判定し、判定した分岐先アドレスに対応する制御(列BOPに記載した制御)を実行する。また、分岐元アドレスが、列BSAの「(3)セキュアプログラム分岐禁止領域」の場合、分岐先アドレスが、この「(3)セキュアプログラム分岐禁止領域」と同じ行に記載した3個の分岐先アドレスのいずれかを判定し、判定した分岐先アドレスに対応する制御(列BOPに記載した制御)を実行する。   When the branch source address is “(1) secure program area” of column BSA, the memory protection unit 204 has three branch destinations whose branch destination addresses are described in the same row as “(1) secure program area”. One of the addresses is determined, and control corresponding to the determined branch destination address (control described in column BOP) is executed. Similarly, in the case where the branch source address is "(2) secure program branch permission area" of column BSA, the branch destination address is the three branches described in the same row as "(2) secure program branch permission area". One of the destination addresses is determined, and control (control described in the column BOP) corresponding to the determined destination address is executed. When the branch source address is "(3) secure program branch prohibition area" of column BSA, the branch destination address is the three branch destinations described in the same row as "(3) secure program branch prohibition area". One of the addresses is determined, and control corresponding to the determined branch destination address (control described in column BOP) is executed.

次に、図7から図9を用いて、図10に示したメモリプロテクションユニット204の動作を説明する。   Next, the operation of the memory protection unit 204 shown in FIG. 10 will be described using FIGS. 7 to 9.

ユーザープログラムU−APは、例えば複数のノンセキュアプログラムによって構成され、それぞれのノンセキュアプログラムは、ノンセキュアプログラム領域に配置されている。ノンセキュアプログラムであるユーザープログラムU−APが、RTOSのようなセキュアプログラムを利用する場合、図8および図9で説明したように、ノンセキュアプログラム領域からセキュアプログラムへ分岐することになる。   The user program U-AP is configured of, for example, a plurality of non-secure programs, and each non-secure program is arranged in the non-secure program area. When the user program U-AP, which is a non-secure program, uses a secure program such as RTOS, it branches from the non-secure program area to the secure program as described in FIGS. 8 and 9.

ノンセキュアプログラム領域からの分岐であるため、メモリプロテクションユニット204は、分岐元が「(1)ノンセキュアプログラム領域」であると判定する。すなわち、ユーザープログラムU−APからRTOSのプログラムを呼び出す(分岐する)場合(時刻t0)には、メモリプロテクションユニット204は、分岐元が「(1)ノンセキュアプログラム領域」であると判定する。   Since the branch is from the non-secure program area, the memory protection unit 204 determines that the branch source is “(1) non-secure program area”. That is, when the RTOS program is called (branched) from the user program U-AP (time t0), the memory protection unit 204 determines that the branch source is "(1) non-secure program area".

次に、メモリプロテクションユニット204内のメモリアクセス制御回路303は、図7、図8および図9で説明したノンセキュアプログラム領域信号709が、ロウレベルか否かを判定する。ノンセキュアプログラム領域信号709がハイレベルであれば、分岐先は、「ノンセキュアプログラム領域」であると判定し、メモリアクセス制御回路303は、マイクロプロセッサCPUが、セキュアデータ領域へアクセスするのを禁止する(列BOPにおいて「セキュアデータアクセス禁止」)。この場合、図10には記載していないが、メモリアクセス制御回路303は、マイクロプロセッサCPUによって、ノンセキュアデータ領域へのアクセスは許可する。これにより、ユーザープログラムにおいて、所定のノンセキュアプログラムから別のノンセキュアプログラムへの分岐が可能となる。なお、図3および図7では、図面が複雑になるのを避けるために、ノンセキュアプログラム領域信号709を、メモリアクセス制御回路303へ供給する信号配線は省略されている。   Next, the memory access control circuit 303 in the memory protection unit 204 determines whether the non-secure program area signal 709 described with reference to FIGS. 7, 8 and 9 is at the low level. If the non-secure program area signal 709 is high level, the branch destination is determined to be "non-secure program area", and the memory access control circuit 303 prohibits the microprocessor CPU from accessing the secure data area. ("Secure data access prohibited" in column BOP). In this case, although not described in FIG. 10, the memory access control circuit 303 permits the microprocessor CPU to access the non-secure data area. This allows the user program to branch from a given non-secure program to another non-secure program. In FIG. 3 and FIG. 7, signal wiring for supplying the non-secure program area signal 709 to the memory access control circuit 303 is omitted in order to avoid the complexity of the drawings.

ノンセキュアプログラム領域信号709がロウレベルとなっている場合、図8および図9の時刻t0で説明したように、セキュアプログラム分岐許可領域信号702の電圧(ハイレベルまたはロウレベル)に従って、セキュアデータアクセス許可信号302は、ハイレベルまたはロウレベルとなる。メモリアクセス制御回路303は、ノンセキュアプログラム領域信号709がロウレベルで、図8に示すようにセキュアデータアクセス許可信号302がハイレベルであれば、分岐先アドレス(列BDA)は、「セキュアプログラム分岐許可領域」であると判定し、マイクロプロセッサCPUによるセキュアデータ領域へのアクセスを許可する(「セキュアデータアクセス許可」)。   When non-secure program area signal 709 is at low level, secure data access permission signal according to the voltage (high level or low level) of secure program branch permission area signal 702 as described at time t0 in FIGS. 8 and 9. 302 is high level or low level. If the non-secure program area signal 709 is low level and the secure data access permission signal 302 is high level as shown in FIG. 8, the memory access control circuit 303 determines that the branch destination address (column BDA) is “secure program branch permission It is determined that the area is "area", and the microprocessor CPU permits access to the secure data area ("secure data access permission").

これに対して、ノンセキュアプログラム領域信号709がロウレベルで、図9に示すようにセキュアデータアクセス許可信号302がロウレベルであれば、分岐先アドレス(列BDA)は、「セキュアプログラム分岐禁止領域」であると判定し、分岐前の動作状態を維持する状態となる。図9の時刻t0で説明したように、フリップフロップ回路703の出力端子(Q)は、時刻t0よりも前の状態を維持している。この場合、前の状態は、セキュアデータのアクセスを禁止する状態である。そのため、この場合には、マイクロプロセッサCPUによるセキュアデータ領域へのアクセスを禁止する状態が維持される。図9の場合には、時刻t0から時刻t2の期間も、この状態が維持されることになる。   On the other hand, if the non-secure program area signal 709 is low level and the secure data access permission signal 302 is low level as shown in FIG. 9, the branch destination address (column BDA) is “secure program branch prohibition area”. It is determined that there is, and the operation state before branching is maintained. As described at time t0 in FIG. 9, the output terminal (Q) of the flip flop circuit 703 maintains the state prior to time t0. In this case, the previous state is a state where access to secure data is prohibited. Therefore, in this case, a state where access to the secure data area by the microprocessor CPU is inhibited is maintained. In the case of FIG. 9, this state is maintained also in the period from time t0 to time t2.

時刻t0において、分岐先アドレスが、「セキュアプログラム分岐許可領域」と判定された場合、時刻t0から時刻t2の期間においては、メモリプロテクションユニット204は、「(2)セキュアプログラム分岐許可領域」または「(3)セキュアプログラム分岐禁止領域」の制御を実行する。   When the branch destination address is determined to be the “secure program branch permission area” at time t0, the memory protection unit 204 performs “(2) secure program branch permission area” or “during the period from time t0 to time t2”. (3) The control of the secure program branch prohibition area is executed.

先ず、マイクロプロセッサCPUは、時刻t0から時刻t1の期間において、セキュア分岐許可領域に配置された命令を実行する。このとき、実行する命令が分岐命令であった場合には、「(2)セキュア分岐許可領域」の制御を実行する。すなわち、この期間において実行する分岐命令の分岐先アドレスが、「ノンセキュアプログラム領域」であれば、ノンセキュアプログラム領域信号709がロウレベルとなる。これにより、メモリアクセス制御回路303は、マイクロプロセッサCPによるセキュアデータ領域へのアクセスを禁止する(セキュアデータアクセス禁止)。この場合、図7に示したフリップフロップ回路703の出力端子(Q)が、ロウレベルへクリアされるため、ノンセキュアプログラムから再びセキュアプログラムを利用するためには、ノンセキュアプログラムにおいて、セキュアプログラム分岐許可領域を指定する分岐命令を実行することが、要求される。   First, the microprocessor CPU executes an instruction arranged in the secure branch permission area in a period from time t0 to time t1. At this time, if the instruction to be executed is a branch instruction, control of “(2) secure branch permission area” is executed. That is, if the branch destination address of the branch instruction to be executed in this period is the "non-secure program area", the non-secure program area signal 709 is at the low level. Thereby, the memory access control circuit 303 prohibits the microprocessor CP from accessing the secure data area (prohibit secure data access). In this case, since the output terminal (Q) of the flip flop circuit 703 shown in FIG. 7 is cleared to the low level, in order to use the secure program again from the nonsecure program, secure program branch permission is permitted in the nonsecure program. It is required to execute a branch instruction specifying an area.

時刻t0から時刻t1において実行される分岐命令の分岐先アドレスが、「セキュアプログラム分岐許可領域」を指定していれば、セキュアプログラム分岐許可領域信号702がハイレベルとなる。これにより、図7に示したフリップフロップ回路703の出力端子(Q)は、ハイレベルにセットされる。その結果、セキュアデータアクセス許可信号302は、ハイレベルとなり、メモリアクセス制御回路303は、マイクロプロセッサCPUが、セキュアデータ領域をアクセスすることを許可する(セキュアデータアクセス許可)。   If the branch destination address of the branch instruction to be executed from time t0 to time t1 designates the "secure program branch permitted area", the secure program branch permitted area signal 702 becomes high level. Thus, the output terminal (Q) of the flip-flop circuit 703 shown in FIG. 7 is set to the high level. As a result, the secure data access permission signal 302 becomes high level, and the memory access control circuit 303 permits the microprocessor CPU to access the secure data area (secure data access permission).

時刻t0から時刻t1において実行される分岐命令の分岐先アドレスが、「セキュアプログラム分岐禁止領域」を指定していれば、図8で説明したように、セキュアプログラム分岐許可領域信号702はロウレベルとなるが、ノンセキュアプログラム領域信号709は、ロウレベルに維持される。そのため、図8で説明したように、フリップフロップ703の出力端子(Q)の電圧は、ハイレベルに維持されることになる。すなわち、分岐する前の状態が維持される。この結果、メモリアクセス制御回路303は、分岐前の動作状態を維持することになる。この場合、分岐前の動作状態は、セキュアデータアクセス許可の状態であったため、マイクロプロセッサCPUによってセキュアデータ領域へのアクセス許可の状態が継続されることになる。   If the branch destination address of the branch instruction executed from time t0 to time t1 designates the "secure program branch prohibited area", as described in FIG. 8, the secure program branch permitted area signal 702 goes low. However, the non-secure program area signal 709 is maintained at low level. Therefore, as described in FIG. 8, the voltage of the output terminal (Q) of the flip flop 703 is maintained at the high level. That is, the state before branching is maintained. As a result, the memory access control circuit 303 maintains the operation state before the branch. In this case, since the operation state before branching is the state of the secure data access permission, the microprocessor CPU continues the state of the permission to access the secure data area.

これにより、図7に示したフリップフロップ回路703の出力端子(Q)は、ハイレベルにセットされる。その結果、セキュアデータアクセス許可信号302は、ハイレベルとなり、メモリ制御回路303は、マイクロプロセッサCPUが、セキュアデータ領域をアクセスすることを許可する(セキュアデータアクセス許可)。   Thus, the output terminal (Q) of the flip-flop circuit 703 shown in FIG. 7 is set to the high level. As a result, the secure data access permission signal 302 becomes high level, and the memory control circuit 303 permits the microprocessor CPU to access the secure data area (secure data access permission).

時刻t0から時刻t1の期間において、「セキュアプログラム分岐禁止領域」を分岐先アドレスとした分岐命令を実行した場合、マイクロプロセッサCPUは、図8において時刻t1から時刻t2として示した期間で動作することになる。この場合、マイクロプロセッサCPUは、セキュアプログラム分岐禁止領域に格納されているセキュアプログラムを実行することになる。言い換えるならば、この期間において、マイクロプロセッサCPUが実行する分岐命令は、分岐元アドレスが、「(3)セキュアプログラム分岐禁止領域」となる。   If a branch instruction is executed with the "secure program branch prohibition area" as the branch destination address during the period from time t0 to time t1, the microprocessor CPU operates in the period shown as time t1 to time t2 in FIG. become. In this case, the microprocessor CPU executes the secure program stored in the secure program branch prohibition area. In other words, in this period, the branch source address of the branch instruction executed by the microprocessor CPU is "(3) secure program branch prohibition area".

分岐元アドレスが、「(3)セキュアプログラム分岐禁止領域」となっているとき、すなわち、図9において時刻t1から時刻t2の期間、マイクロプロセッサCPUは、セキュア分岐禁止領域に配置された命令を実行する。この期間において、実行する命令が分岐命令であり、その分岐先アドレスが、「ノンセキュアプログラム領域」であれば、ノンセキュアプログラム領域信号709がロウレベルとなる。これにより、メモリアクセス制御回路303は、マイクロプロセッサCPによるセキュアデータ領域へのアクセスを禁止する(セキュアデータアクセス禁止)。この場合、図7に示したフリップフロップ回路703の出力端子(Q)が、ロウレベルへクリアされるため、ノンセキュアプログラムから再びセキュアプログラムを利用するためには、ノンセキュアプログラムにおいて、セキュアプログラム分岐許可領域を指定する分岐命令を実行することが、要求される。   When the branch source address is "(3) secure program branch prohibition area", that is, in FIG. 9, the microprocessor CPU executes the instruction arranged in the secure branch prohibition area in the period from time t1 to time t2 Do. In this period, if the instruction to be executed is a branch instruction and the branch destination address is the "non-secure program area", the non-secure program area signal 709 is at the low level. Thereby, the memory access control circuit 303 prohibits the microprocessor CP from accessing the secure data area (prohibit secure data access). In this case, since the output terminal (Q) of the flip flop circuit 703 shown in FIG. 7 is cleared to the low level, in order to use the secure program again from the nonsecure program, secure program branch permission is permitted in the nonsecure program. It is required to execute a branch instruction specifying an area.

時刻t1から時刻t2において実行される分岐命令の分岐先アドレスが、「セキュアプログラム分岐許可領域」を指定していれば、セキュアプログラム分岐許可領域信号702がハイレベルとなる。これにより、図7に示したフリップフロップ回路703の出力端子(Q)は、ハイレベルにセットされる。その結果、セキュアデータアクセス許可信号302は、ハイレベルとなり、メモリアクセス制御回路303は、マイクロプロセッサCPUが、セキュアデータ領域をアクセスすることを許可する(セキュアデータアクセス許可)。   If the branch destination address of the branch instruction executed from time t1 to time t2 designates the "secure program branch permission area", the secure program branch permission area signal 702 becomes high level. Thus, the output terminal (Q) of the flip-flop circuit 703 shown in FIG. 7 is set to the high level. As a result, the secure data access permission signal 302 becomes high level, and the memory access control circuit 303 permits the microprocessor CPU to access the secure data area (secure data access permission).

時刻t1から時刻t2において実行される分岐命令の分岐先アドレスが、「セキュアプログラム分岐禁止領域」を指定していれば、図8で説明したように、セキュアプログラム分岐許可領域信号702はロウレベルとなるが、ノンセキュアプログラム領域信号709は、ロウレベルに維持される。そのため、図8で説明したように、フリップフロップ703の出力端子(Q)の電圧は、ハイレベルに維持されることになる。すなわち、分岐する前の状態が維持される。この結果、メモリアクセス制御回路303は、分岐前の動作状態を維持することになる。この場合、分岐前の動作状態は、セキュアデータアクセス許可の状態であったため、マイクロプロセッサCPUによってセキュアデータへのアクセス許可の状態が継続されることになる。   If the branch destination address of the branch instruction executed from time t1 to time t2 designates the "secure program branch prohibition area", the secure program branch permission area signal 702 becomes low level as described in FIG. However, the non-secure program area signal 709 is maintained at low level. Therefore, as described in FIG. 8, the voltage of the output terminal (Q) of the flip flop 703 is maintained at the high level. That is, the state before branching is maintained. As a result, the memory access control circuit 303 maintains the operation state before the branch. In this case, since the operation state before branching is the state of the secure data access permission, the microprocessor CPU continues the state of the permission to access secure data.

これにより、図7に示したフリップフロップ回路703の出力端子(Q)は、ハイレベルにセットされる。その結果、セキュアデータアクセス許可信号302は、ハイレベルとなり、メモリアクセス制御回路303は、マイクロプロセッサCPUが、セキュアデータ領域をアクセスすることを許可する(セキュアデータアクセス許可)。   Thus, the output terminal (Q) of the flip-flop circuit 703 shown in FIG. 7 is set to the high level. As a result, the secure data access permission signal 302 becomes high level, and the memory access control circuit 303 permits the microprocessor CPU to access the secure data area (secure data access permission).

なお、図8および図9においては、時刻t2で、ノンセキュアプログラムを実行している。図8の例では、「(3)セキュアプログラム分岐禁止領域」の制御において、分岐先アドレスが、「ノンセキュアプログラム領域」を指定した場合の動作となる。また、図9の例では、「(1)ノンセキュアプログラム領域」の制御において、分岐先アドレスを「ノンセキュアプログラム領域」を指定した場合の動作となる。このいずれの場合においても、メモリアクセス制御回路303によって、マイクロプロセッサCPUが、セキュアデータ領域をアクセスすることは禁止され、ノンセキュアデータ領域のアクセスは許可されることになる。   In FIGS. 8 and 9, the non-secure program is executed at time t2. In the example of FIG. 8, in the control of “(3) secure program branch prohibition area”, the branch destination address is an operation when “non-secure program area” is designated. Further, in the example of FIG. 9, in the control of “(1) non-secure program area”, the operation is performed when “non-secure program area” is specified as the branch destination address. In either case, the memory access control circuit 303 prohibits the microprocessor CPU from accessing the secure data area and permits access to the non-secure data area.

メモリアクセス制御回路303へノンセキュアプログラム領域信号709を、図示しない信号配線で供給する例を説明したが、これに限定されるものではない。例えば、メモリアクセス制御回路303へセキュアプログラム領域信号707を、図示しない信号配線で供給するようにしてもよい。   Although the example in which the non-secure program area signal 709 is supplied to the memory access control circuit 303 by signal wiring (not shown) has been described, the present invention is not limited to this. For example, the secure program area signal 707 may be supplied to the memory access control circuit 303 by signal wiring (not shown).

上記したように、この実施の形態1においては、ノンセキュアプログラムからセキュアデータ領域へのアクセスを許可するのは、ノンセキュアプログラムにおける分岐命令の分岐先アドレスが、セキュアプログラム分岐許可領域(分岐許可領域BAA)を指定しているときである。これにより、マイクロプロセッサCPUを操作することが可能なノンセキュアプログラムを、任意に作成することができるようにしても、RTOSのようなセキュアプログラムを、ハッキングプログラムによるアタックから保護することが可能となる。   As described above, in the first embodiment, the access destination from the non-secure program to the secure data area is determined by the branch destination address of the branch instruction in the non-secure program being the secure program branch permit area (branch permit area It is when specifying BAA). This makes it possible to protect a secure program such as an RTOS from an attack by a hacking program, even if it is possible to arbitrarily create a non-secure program capable of operating the microprocessor CPU. .

また、セキュアプログラム分岐禁止領域で、セキュアプログラム分岐禁止領域を分岐先アドレスとした分岐命令を実行する場合、セキュアデータ領域へのアクセスの許可/禁止は、分岐命令を実行する前の状態が維持される。これにより、セキュアプログラム分岐禁止領域に配置されたセキュアプログラムにおいて、セキュアプログラム分岐禁止領域を分岐先とした分岐命令を実行したときでも、マイクロプロセッサCPUは、セキュアデータ領域へアクセスすることが可能となる。その結果、RTOSのようなセキュアプログラムにおいて、所定のサブルーチンから他のサブルーチンを呼び出す(分岐する)場合があっても、ユーザープログラムU−APからRTOSを有効に利用することが可能となる。   When executing a branch instruction with the secure program branch prohibition area as the branch destination address in the secure program branch prohibition area, permission / prohibition of access to the secure data area is maintained at the state before executing the branch instruction. Ru. Thus, the microprocessor CPU can access the secure data area even when executing a branch instruction with the secure program branch prohibition area as the branch destination in the secure program arranged in the secure program branch prohibition area. . As a result, in a secure program such as an RTOS, even if another subroutine is called (branched) from a predetermined subroutine, the RTOS can be effectively used from the user program U-AP.

なお、セキュアデータ領域へのアクセスを禁止するのは、分岐命令の分岐先アドレスが、ノンセキュアプログラム領域を指定するときである。   The access to the secure data area is prohibited when the branch destination address of the branch instruction designates a non-secure program area.

<変形例>
図11は、実施の形態1に係わる変形例を示す説明図である。図11は、図6と類似しているので、図6との相違点を主に説明する。
<Modification>
FIG. 11 is an explanatory view of a modification according to the first embodiment. Since FIG. 11 is similar to FIG. 6, the differences from FIG. 6 will be mainly described.

図6と同様に、フラッシュメモリFRMは、ノンセキュアプログラム領域とセキュアプログラム領域とを備えており、揮発性メモリ203は、ノンセキュアデータ領域とセキュアデータ領域とを備えている。ここで、セキュアプログラム領域には、セキュリティが担保されるべきプログラムが格納され、セキュアデータ領域にも、セキュリティが担保されるべきデータが格納される。ノンセキュアプログラム領域、ノンセキュアデータ領域およびセキュアデータ領域は、図6と同じであるため、説明は省略する。   As in FIG. 6, the flash memory FRM includes a non-secure program area and a secure program area, and the volatile memory 203 includes a non-secure data area and a secure data area. Here, in the secure program area, a program whose security is to be secured is stored, and in the secure data area, data whose security is to be secured is stored. The non-secure program area, the non-secure data area, and the secure data area are the same as in FIG.

この変形例においても、セキュアプログラム領域は、分岐許可領域BAAと分岐禁止領域BPAに分けられている。例えば、図7で説明したように、セキュアプログラム上限アドレス304−Uとセキュアプログラム下限アドレス304−Dによって指定されたフラッシュメモリFRMの領域の範囲内が、セキュアプログラム領域となり、セキュアプログラム領域を除くフラッシュメモリFRMの領域が、ノンセキュアプログラム領域となる。また、分岐許可領域BAAは、図7で示した(上限アドレス−4)と上限アドレス304−Uとの間の範囲となり、分岐禁止領域BPAは、図7で示した(上限アドレス−5)と下限アドレス304−Dとの間の範囲となる。   Also in this modification, the secure program area is divided into a branch permission area BAA and a branch prohibition area BPA. For example, as described in FIG. 7, the range of the area of the flash memory FRM designated by the secure program upper limit address 304-U and the secure program lower limit address 304-D is a secure program area, excluding the secure program area. The area of the memory FRM is a non-secure program area. Further, the branch allowance area BAA is in the range between (upper limit address -4) and upper limit address 304-U shown in FIG. 7, and the branch prohibition area BPA is shown in FIG. 7 (upper limit address -5). It is a range between the lower limit address 304-D.

変形例においては、分岐許可領域BAAに所定の分岐命令BRIが配置される。また、分岐禁止領域BPAには、入力情報チェック用のチェックプログラムCHK、実行プログラム選択用の選択プログラムEXSおよび複数のプログラムPRG1〜PRGnが格納されている。プログラムPRG1〜PRGnは、互いに異なる機能を実現するプログラムであって、図11には、一例として3個のプログラムPRG1〜PRG3が例示されている。   In the modification, a predetermined branch instruction BRI is arranged in the branch permission area BAA. Further, in the branch prohibition area BPA, a check program CHK for checking input information, a selection program EXS for selecting an execution program, and a plurality of programs PRG1 to PRGn are stored. The programs PRG1 to PRGn are programs realizing different functions, and three programs PRG1 to PRG3 are illustrated as an example in FIG.

ノンセキュアプログラム領域に配置されたノンセキュアプログラムから、セキュアプログラム領域に配置されたセキュアプログラムへ分岐するノンセキュアプログラムは、例えばノンセキュアデータ領域の所定の領域に、プログラムPRG1〜PRGnのうち、実行すべきプログラムを選択する選択情報を格納する命令と、分岐許可領域BAA内を分岐先アドレスとした分岐命令とを備えている。マイクロプロセッサCPUが、このノンセキュアプログラムを実行することにより、プログラムPRG1〜PRGnのうち、実行すべきプログラムを指定する選択情報が、ノンセキュアデータ領域の所定の領域に格納された後、PCアドレス306は、分岐可能領域BAA内を指定することになる。   The non-secure program that branches from the non-secure program arranged in the non-secure program area to the secure program arranged in the secure program area is executed, for example, in a predetermined area of the non-secure data area among the programs PRG1 to PRGn. An instruction for storing selection information for selecting a program to be executed, and a branch instruction with the branch permission area BAA as a branch destination address are provided. After the microprocessor CPU executes the non-secure program, selection information specifying a program to be executed among the programs PRG1 to PRGn is stored in a predetermined area of the non-secure data area, and then the PC address 306 is generated. Will specify the inside of the divisible area BAA.

PCアドレス306によって、分岐許可領域BAAに配置された分岐命令BRIのアドレスが指定されると、分岐命令BRIが、マイクロプロセッサCPUによって読み出され、実行される。この分岐命令BRIは、チックプログラムCHKへ分岐する命令である。   When the address of the branch instruction BRI arranged in the branch allowance area BAA is designated by the PC address 306, the branch instruction BRI is read by the microprocessor CPU and executed. The branch instruction BRI is an instruction to branch to the tick program CHK.

分岐命令BRIを実行することにより、次にチェックプログラムCHKが実行されることになる。チェックプログラムCHKにおいて、マイクロプロセッサCPUは、ノンセキュアデータ領域の所定の領域から、選択情報を読み出し、読み出した選択情報が、予期しない選択情報でないかのチェックを行う。例えば、選択情報が、プログラムPRG1〜PRGnを超えるプログラムを指定するような選択情報でないか等のチェックを行う。チェックプログラムCHKによるチェックによって適切な選択情報と判定した場合、次に選択プログラムEXSを実行する。   By executing the branch instruction BRI, the check program CHK is next executed. In the check program CHK, the microprocessor CPU reads selection information from a predetermined area of the non-secure data area, and checks whether the read selection information is unexpected selection information. For example, it is checked whether the selection information is selection information that designates a program exceeding the programs PRG1 to PRGn. If it is determined by the check program CHK that the selected information is appropriate, then the selected program EXS is executed.

選択プログラムEXSは、プログラムPRG1〜PRGnのうち、選択情報によって指定されているプログラムを選択し、実行する。これにより、セキュアプログラム領域に配置されている複数のプログラムから、所望のセキュアプログラムを選択して、実行することが可能となる。   The selection program EXS selects and executes the program designated by the selection information among the programs PRG1 to PRGn. This makes it possible to select and execute a desired secure program from a plurality of programs arranged in the secure program area.

図11では、省略されているが、分岐許可領域BAAには、例えばレジスタ等の値を退避する命令が配置されている。また、分岐禁止領域BPAには、レジスタ等の値を復帰する命令が配置されている。   Although omitted in FIG. 11, in the branch permission area BAA, for example, an instruction to save the value of a register or the like is arranged. Further, in the branch prohibition area BPA, an instruction for restoring the value of a register or the like is arranged.

分岐許可領域BAAに、例えば、プログラムPRG1〜PRGnのそれぞれに分岐する分岐命令を複数配置しておくことも可能であるが、この場合には、分岐許可領域BAAのサイズが大きくなる。すなわち、分岐を許可する領域が大きくなり、ハッキングプログラムがアクセスすることが可能な領域が大きくなってしまう。この変形例によれば、分岐許可領域BAAのサイズが大きくなるのを抑制することが可能であり、ハッキングプログラムによってアクセスが可能な領域が大きくなるのを抑制することが可能となる。   It is possible to place a plurality of branch instructions for branching to each of the programs PRG1 to PRGn in the branch allowance area BAA, for example, but in this case, the size of the branch allowance area BAA becomes large. That is, the area for permitting branching is increased, and the area accessible to the hacking program is increased. According to this modification, it is possible to suppress an increase in the size of the branch allowance area BAA, and it is possible to suppress an increase in the area accessible by the hacking program.

この変形例においても、図6と同様に、分岐禁止領域BPAを、分岐先アドレスとしてアクセスされた場合、メモリプロテクションユニット204によって、セキュアデータ領域へのアクセスを禁止することが可能であり、セキュアプログラムPRG1〜PRGnを保護することが可能である。   Also in this modification, as in FIG. 6, when the branch prohibition area BPA is accessed as the branch target address, the memory protection unit 204 can prohibit access to the secure data area, and the secure program It is possible to protect PRG1 to PRGn.

なお、セキュアプログラムを指定する選択情報を、ノンセキュアデータ領域に格納する例を説明したが、これに限定されるものではない。   Although an example in which selection information for specifying a secure program is stored in the non-secure data area has been described, the present invention is not limited to this.

実施の形態1によれば、RTOSのようなセキュアプログラムの保護を図りながら、マイクロプロセッサCPUは、セキュアプログラムを実行するとともに、ユーザーが作成したユーザープログラムU−APを実行することができる。すなわち、予めRTOSのプログラムを格納したマイクロコンピュータLSIを提供し、ユーザーが、マイクロコンピュータLSI内のマイクロプロセッサCPUを操作して(動作させて)、RTOSの機能を使うようなユーザープログラムU−APを作成するようにしても、セキュアプログラムであるRTOSのプログラムを保護することができる。その結果、新たな半導体販売モデルにおいても、セキュアプログラム(RTOSのプログラム)が盗まれることを防ぐことが可能となり、販売者のメリットが損なわれるのを防ぐことが可能となる。その結果、新たな半導体販売モデルにより、販売者およびユーザーの双方が、メリットを享受できるようになる。   According to the first embodiment, the microprocessor CPU can execute the secure program and the user program U-AP created by the user while protecting the secure program such as the RTOS. That is, a microcomputer LSI having a program of RTOS stored in advance is provided, and a user program U-AP in which the user operates (operates) the microprocessor CPU in the microcomputer LSI to use the function of RTOS Even if it is created, the program of RTOS which is a secure program can be protected. As a result, even in the new semiconductor sales model, it is possible to prevent the secure program (the program of the RTOS) from being stolen, and it is possible to prevent the merits of the seller from being lost. As a result, the new semiconductor sales model will allow both sellers and users to benefit.

セキュアプログラムを保護するために、例外割り込みを発生させて、特権モードに移行させることにより、セキュアプログラム領域を形成することが考えられる。しかしながら、この場合には、ノンセキュアプログラム領域に、ハッキングプログラムを展開し、ノイズ等を与え、暴走させることによって特権モードへ移行させることが可能であり、ノイズを利用したハッキングに対して、保護が弱いことが考えられる。   In order to protect a secure program, it is conceivable to form a secure program area by generating an exception interrupt and transitioning to a privileged mode. However, in this case, it is possible to develop a hacking program in the non-secure program area, give noise and so on, and make a transition to the privileged mode by causing runaway, and protection against hacking using noise is provided. It is thought that it is weak.

これに対して、実施の形態1におけるメモリプロテクションユニット204は、マイクロプロセッサCPUのPCアドレスを監視して、マイクロプロセッサCPUによるセキュアデータへのアクセスを制御している。そのため、ノイズを利用したハッキングに対して、保護が弱くなるのを防ぐことが可能である。また、ノンセキュアプログラム領域に、ハッキングプログラムを展開し、ハッキングプログラムからセキュアプログラムへの分岐によって行うアタックに対しても、セキュアプログラム領域を分岐許可領域BAAと分岐禁止領域BPAに分けることにより、保護が弱くなるのを抑制している。   On the other hand, the memory protection unit 204 in the first embodiment monitors the PC address of the microprocessor CPU to control access to secure data by the microprocessor CPU. Therefore, it is possible to prevent the protection from being weakened against noise-based hacking. In addition, the hacking program is developed in the non-secure program area, and the protection is achieved by dividing the secure program area into the branch permission area BAA and the branch prohibition area BPA against attacks performed by branching from the hacking program to the secure program. It is suppressing the weakening.

その結果、予めRTOSのプログラムを書き込んだマイクロコンピュータLSIを提供し、マイクロコンピュータを購入したユーザーが、RTOSの機能を利用するようなプログラムを作成するようにした場合でも、予め書き込んだセキュアプログラムが盗まれるのを防ぐことが可能となる。   As a result, even if the microcomputer LSI provided with the RTOS program is provided in advance and the user who purchased the microcomputer creates a program that uses the RTOS function, the previously written secure program is stolen. It is possible to prevent

(実施の形態2)
図12は、実施の形態2に係わるフラッシュメモリFRMに格納されるデータの配置を模式的に示した配置図である。
Second Embodiment
FIG. 12 is a layout diagram schematically showing the layout of data stored in flash memory FRM according to the second embodiment.

実施の形態2に係わるフラッシュメモリFRMは、複数の領域に分けられている。図12には、フラッシュメモリFRMを構成する複数の領域のうち、ノンセキュアプログラム領域、セキュアプログラム領域および保護情報領域が例示されている。図12において、ノンセキュアプログラム領域は、符号1200で示され、セキュアプログラム領域は、符号1201で示され、保護情報領域は、符号1202で示されている。   The flash memory FRM according to the second embodiment is divided into a plurality of areas. FIG. 12 exemplifies a non-secure program area, a secure program area, and a protection information area among a plurality of areas constituting the flash memory FRM. In FIG. 12, the non-secure program area is indicated by reference numeral 1200, the secure program area is indicated by reference numeral 1201, and the protected information area is indicated by reference numeral 1202.

この実施の形態2において、セキュアプログラム領域1201には、セキュリティが担保されるべきセキュアプログラムが格納され、ノンセキュアプログラム領域1200には、ノンセキュアプログラムが格納される。保護情報領域1202には、セキュアプログラム領域1201を保護する情報が格納される。   In the second embodiment, the secure program area 1201 stores a secure program whose security should be secured, and the non-secure program area 1200 stores a non-secure program. The protection information area 1202 stores information for protecting the secure program area 1201.

新たな半導体販売モデルでは、図1で説明したように、販売者PRDが、マイクロコンピュータLSIを販売する前に、予めRTOSのようなセキュアプログラムを、マイクロコンピュータLSI内のフラッシュメモリFRMに書き込む。販売者PRDは、RTOSを書き込んだフラッシュメモリFRMの領域を、セキュアプログラム領域1201として設定する。このようにして、セキュアプログラム領域1201に、RTOSのようなセキュアプログラムが書き込まれたフラッシュメモリFRMを備えたマイクロコンピュータLSIが、販売者PRDから販売される。   In the new semiconductor sales model, as described in FIG. 1, the seller PRD writes in advance a secure program such as RTOS to the flash memory FRM in the microcomputer LSI before selling the microcomputer LSI. The seller PRD sets the area of the flash memory FRM in which the RTOS is written as the secure program area 1201. In this manner, a microcomputer LSI provided with a flash memory FRM in which a secure program such as RTOS is written in the secure program area 1201 is sold from the seller PRD.

販売者PRDから、マイクロコンピュータLSIを購入したユーザーUSRは、RTOSを利用して動作するユーザープログラムU−APを作成し、フラッシュメモリFRMのノンセキュアプログラム領域1200へ書き込む。フラッシュメモリFRMにユーザープログラムU−APを書き込む際に、予め書き込んでおいたセキュアプログラム(RTOS)に書き込みが行われてしまうと、セキュリティホールをセキュアプログラムに作り込むことが可能となってしまう。これを防ぐために、販売者PRDは、保護情報領域1202に、セキュアプログラムアドレス領域1203を設け、セキュアプログラムアドレス領域1203に、例えば上記したセキュアアドレス情報304、セキュアデータ情報305等を、マイクロコンピュータLSIを販売する前に、書き込む。このセキュアアドレス情報304(セキュアプログラム上限アドレス304−Uおよびセキュアプログラム下限アドレス304−D)によって、図3および図7で説明したように、セキュアプログラム領域を指定し、セキュアプログラム領域への書き込みを禁止する。これによって、セキュアプログラムの書き込みが禁止されることになる。   The user USR who has purchased the microcomputer LSI from the seller PRD creates a user program U-AP that operates using the RTOS, and writes the user program U-AP to the non-secure program area 1200 of the flash memory FRM. When the user program U-AP is written to the flash memory FRM, if the previously written secure program (RTOS) is written, a security hole can be created in the secure program. In order to prevent this, the seller PRD provides a secure program address area 1203 in the protection information area 1202, and for example, the secure address information 304 and the secure data information 305 described above in the secure program address area 1203 and the microcomputer LSI. Write before you sell. This secure address information 304 (secure program upper limit address 304-U and secure program lower limit address 304-D) designates the secure program area and prohibits writing to the secure program area as described in FIGS. 3 and 7. Do. This prohibits the writing of the secure program.

また、販売後、ノンセキュアプログラム領域1200に格納されたノンセキュアプログラム(例えばユーザープログラムU−AP)によって、保護情報領域1202に対して書き込みが可能になっていると、セキュアプログラムアドレス領域1203を書き換えることが可能となり、セキュアプログラム領域1201の書き込み禁止を解除して、セキュアプログラムにセキュリティホールを作り込むことが可能となってしまう。そのため、販売者PRDは、保護情報領域1202に保護情報制御領域1204を設け、販売後は、保護情報領域1202に格納されている保護情報を書き換えることができないようにする保護情報1205を、保護情報制御領域1204へ、販売前に書き込む。これにより、保護情報領域1202への保護情報の書き込みが禁止される。   Also, after the sale, if the protected information area 1202 can be written to by the non-secure program (for example, user program U-AP) stored in the non-secure program area 1200, the secure program address area 1203 is rewritten. As a result, it becomes possible to release the write protection of the secure program area 1201 and create a security hole in the secure program. Therefore, the seller PRD provides the protected information control area 1204 in the protected information area 1202, and after the sale, protects the protected information 1205 that prevents the protected information stored in the protected information area 1202 from being rewritten. Write to control area 1204 before sale. Thereby, the writing of the protection information to the protection information area 1202 is prohibited.

このようにして、販売後は、ノンセキュアプログラム領域1200に格納されたノンセキュアプログラムによって、セキュアプログラムの書き換えが禁止されるようにすることができる。しかしながら、販売後に、セキュアプログラムに、バグ等の不具合が発見された場合、セキュアプログラムの書き換えが禁止されているため、セキュアプログラムの更新が困難となり、不具合の対策が困難となってしまう。一方、販売後に、セキュアプログラムの更新が可能となるようにしておくと、予め書き込んでおいたセキュアプログラムにセキュリティホールが作り込まれてしまうことが危惧される。   In this way, after the sale, rewriting of the secure program can be prohibited by the non-secure program stored in the non-secure program area 1200. However, if a defect such as a bug is found in the secure program after the sale, the rewriting of the secure program is prohibited, so that the update of the secure program becomes difficult, and the countermeasure against the problem becomes difficult. On the other hand, if it is possible to update the secure program after the sale, it is feared that a security hole will be created in the previously written secure program.

この実施の形態2においては、セキュアプログラム領域1201に格納したセキュアプログラムからは、保護情報領域1202の書き換え禁止を解除することができるようにされる。この場合、ノンセキュアプログラム領域1200に格納したノンセキュアプログラムによっては、保護情報領域1202の書き換え禁止を解除することができないようにされる。   In the second embodiment, from the secure program stored in secure program area 1201, the rewriting prohibition of protected information area 1202 can be released. In this case, depending on the non-secure program stored in the non-secure program area 1200, the rewriting prohibition of the protected information area 1202 can not be canceled.

図13は、実施の形態2に係わるマイクロコンピュータLSIの構成を示すブロック図である。同図には、図2で示したマイクロコンピュータLSIの構成のうち、マイクロプロセッサCPU、フラッシュメモリFRM、フラッシュメモリ書き換え回路202およびメモリプロテクションユニット204のみが示されている。また、説明において必要となるフラッシュメモリ書き換え回路202の構成が、図13では詳しく示されている。   FIG. 13 is a block diagram showing the configuration of a microcomputer LSI according to the second embodiment. Of the configuration of the microcomputer LSI shown in FIG. 2, only the microprocessor CPU, the flash memory FRM, the flash memory rewrite circuit 202, and the memory protection unit 204 are shown in FIG. The configuration of the flash memory rewrite circuit 202 required in the description is shown in detail in FIG.

フラッシュメモリ書き換え回路202は、フラッシュメモリ書き換えアドレス設定レジスタ1300、フラッシュメモリ書き換え開始レジスタ1301、フラッシュメモリ書き換え制御回路1304および不正アクセス検出回路1307を備えている。フラッシュメモリ書き換えアドレス設定レジスタ1300およびフラッシュメモリ書き換え開始レジスタ1301は、バス205を介してマイクロプロセッサCPUに接続されている。   The flash memory rewrite circuit 202 includes a flash memory rewrite address setting register 1300, a flash memory rewrite start register 1301, a flash memory rewrite control circuit 1304, and an unauthorized access detection circuit 1307. The flash memory rewrite address setting register 1300 and the flash memory rewrite start register 1301 are connected to the microprocessor CPU via the bus 205.

フラッシュメモリ書き換えアドレス設定レジスタ1300には、フラッシュメモリFRMを書き換えるとき、フラッシュメモリFRMにおいて、書き換える領域を指定するアドレスが、バス205を介してマイクロプロセッサCPUによって設定される。フラッシュメモリ書き換えアドレス設定レジスタ1300は、設定されたアドレスを、書き換えアドレス1302として、フラッシュメモリ書き換え制御回路1304へ供給する。また、フラッシュメモリ書き換えアドレス設定レジスタ1300は、設定されたアドレスが、フラッシュメモリFRMの領域1200〜1202(図12)のうち、保護情報領域1202を指定しているか否かを判定し、保護情報領域1202を指定しているとき、保護情報選択信号1305を形成して、不正アクセス検出回路1307へ供給する。   In the flash memory rewrite address setting register 1300, when the flash memory FRM is rewritten, an address specifying an area to be rewritten in the flash memory FRM is set by the microprocessor CPU via the bus 205. The flash memory rewrite address setting register 1300 supplies the set address as the rewrite address 1302 to the flash memory rewrite control circuit 1304. Further, the flash memory rewrite address setting register 1300 determines whether or not the set address designates the protection information area 1202 among the areas 1200 to 2022 (FIG. 12) of the flash memory FRM, and the protection information area When 1202 is designated, the protection information selection signal 1305 is formed and supplied to the unauthorized access detection circuit 1307.

フラッシュメモリ書き換え開始レジスタ1301は、マイクロプロセッサCPUから、フラッシュメモリFRMを書き換えるタイミングを示す開始情報が、バス205を介して設定される。フラッシュメモリ書き換え開始レジスタ1301は、設定された開始情報に基づいて、フラッシュメモリ書き換え開始信号1303を形成し、不正アクセス検出回路1307へ供給する。   In the flash memory rewrite start register 1301, start information indicating the timing of rewriting the flash memory FRM is set from the microprocessor CPU via the bus 205. The flash memory rewrite start register 1301 forms a flash memory rewrite start signal 1303 based on the set start information, and supplies it to the unauthorized access detection circuit 1307.

フラッシュメモリ書き換え制御回路1304は、書き換えアドレス1302、フラッシュメモリ書き換え開始信号1303および不正アクセス検出回路1307からの不正アクセス検出信号1308を受け、不正アクセス検出信号1308が、不正アクセスであることを示していないとき、書き換えアドレス1302によって指定されるフラッシュメモリFRMの領域に対して書き換えを行う。このときの書き換えの開始タイミングが、フラッシュメモリ書き換え開始信号1303によって定められる。なお、図13では、図面が複雑になるのを避けるために、フラッシュメモリFRMに書き込まれるデータを供給する信号配線は省略されているが、書き込まれるデータは、バス205を介してマイクロプロセッサCPUからフラッシュメモリFRMへ供給される。   The flash memory rewrite control circuit 1304 receives the rewrite address 1302, the flash memory rewrite start signal 1303, and the unauthorized access detection signal 1308 from the unauthorized access detection circuit 1307, and the unauthorized access detection signal 1308 does not indicate that the access is unauthorized. At this time, the area of the flash memory FRM designated by the rewrite address 1302 is rewritten. The start timing of the rewriting at this time is determined by the flash memory rewriting start signal 1303. Note that, in FIG. 13, the signal wiring for supplying the data to be written to the flash memory FRM is omitted to avoid the complexity of the drawing, but the data to be written is from the microprocessor CPU via the bus 205. It is supplied to the flash memory FRM.

不正アクセス検出回路1307は、後で図14を用いて一例を示すが、メモリプロテクションユニット204からのノンセキュアプログラム選択信号1306と、上記した保護情報選択信号1305と、上記したフラッシュメモリ書き換え開始信号1303を受け、不正アクセス検出信号1308を形成して、フラッシュメモリ書き換え制御回路1304へ供給する。   The unauthorized access detection circuit 1307 will be described later by way of example with reference to FIG. 14. However, the non-secure program selection signal 1306 from the memory protection unit 204, the protection information selection signal 1305 described above, and the flash memory rewrite start signal 1303 , Forms an unauthorized access detection signal 1308, and supplies it to the flash memory rewrite control circuit 1304.

メモリプロテクションユニット204は、図3および図7(A)に示した構成を備えており、図3および図7(A)のフェッチアドレス比較回路301において形成されたノンセキュアプログラム領域信号709が、上記したノンセキュアプログラム選択信号1306として、不正アクセス検出回路1307へ供給される。この実施の形態2において、メモリプロテクションユニット204は、マイクロプロセッサCPUからのアドレス(PCアドレス306)が、セキュアプログラム領域を指定しているのかノンセキュアプログラム領域を指定しているのかを検出するために使われている。   The memory protection unit 204 has the configuration shown in FIG. 3 and FIG. 7A, and the non-secure program area signal 709 formed in the fetch address comparison circuit 301 in FIG. 3 and FIG. The non-secure program selection signal 1306 is supplied to the unauthorized access detection circuit 1307. In the second embodiment, the memory protection unit 204 detects whether the address (PC address 306) from the microprocessor CPU designates a secure program area or a non-secure program area. It is used.

図7(A)において説明したように、フェッチアドレス比較回路301は、フラッシュメモリFRMからのセキュアアドレス情報304(セキュアプログラム上限アドレス304−U、セキュアプログラム下限アドレス304−D)と、マイクロプロセッサCPUからのPCアドレス306を受けている。PCアドレス306が、セキュアアドレス情報によって定められているセキュアプログラム領域内を指定するとき、セキュアプログラム領域信号707(図7(A))は、ハイレベルとなり、ノンセキュアプログラム領域信号709は、ロウレベルとなる。一方、PCアドレス306が、セキュアプログラム領域ではなく、ノンセキュアプログラム領域を指定しているとき、セキュアプログラム領域信号707はロウレベルとなり、ノンセキュアプログラム領域信号709は、ハイレベルとなる。そのため、ノンセキュアプログラム領域に配置されているノンセキュアプログラムが実行されているとき、ノンセキュアプログラム領域信号709、すなわちノンセキュアプログラム選択信号1306はハイレベルとなる。   As described in FIG. 7A, the fetch address comparison circuit 301 receives secure address information 304 (secure program upper limit address 304-U, secure program lower limit address 304-D) from the flash memory FRM and the microprocessor CPU. Has received a PC address 306 of When the PC address 306 designates the secure program area defined by the secure address information, the secure program area signal 707 (FIG. 7A) becomes high level and the non-secure program area signal 709 becomes low level. Become. On the other hand, when the PC address 306 designates not the secure program area but the non-secure program area, the secure program area signal 707 becomes low level and the non-secure program area signal 709 becomes high level. Therefore, when the non-secure program disposed in the non-secure program area is being executed, the non-secure program area signal 709, that is, the non-secure program selection signal 1306 becomes high level.

不正アクセス検出回路1307は、ノンセキュアプログラム選択信号1306が、ハイレベルかロウレベルかによって、ノンセキュアプログラムが実行されているのか、セキュアプログラムが実行されているのかを判定する。また、不正アクセス検出回路1307は、保護情報選択信号1305によって、フラッシュメモリFRM内の保護情報領域1202の書き換えが指示されているのか、保護情報領域1202以外の領域の書き換えが指示されているのかを判定する。また、不正アクセス検出回路1307は、フラッシュメモリ書き換え開始信号1303によって、フラッシュメモリFRMの書き換えタイミングを判定する。言い換えるならば、不正アクセス検出回路1307は、マイクロプロセッサCPUからの開始情報に基づいたフラッシュメモリ書き換え開始信号1303によって示されるタイミングで、不正アクセスか否かの検出を行う。   The unauthorized access detection circuit 1307 determines whether a non-secure program is being executed or a secure program is being executed, depending on whether the non-secure program selection signal 1306 is high level or low level. In addition, the unauthorized access detection circuit 1307 is instructed by the protection information selection signal 1305 to rewrite the protection information area 1202 in the flash memory FRM or to instruct rewriting of an area other than the protection information area 1202. judge. Further, the unauthorized access detection circuit 1307 determines the rewrite timing of the flash memory FRM by the flash memory rewrite start signal 1303. In other words, the unauthorized access detection circuit 1307 detects whether the access is unauthorized or not at the timing indicated by the flash memory rewrite start signal 1303 based on the start information from the microprocessor CPU.

不正アクセス検出回路1307は、ノンセキュアプログラム選択信号1306が、ノンセキュアプログラムが実行されていることを表し、保護情報選択信号1305が、保護情報領域1202を表しているときに、不正アクセス検出信号1308を形成し、フラッシュメモリ書き換え制御回路1304に対して、フラッシュメモリFRMへの書き換えを禁止する。不正アクセス検出信号1308は、フラッシュメモリ書き換え開始信号1303によって示されるタイミングで形成される。   The unauthorized access detection circuit 1307 indicates that the non-secure program selection signal 1306 indicates that the non-secure program is being executed, and the protected information selection signal 1305 indicates the protected information area 1202. And prohibit the flash memory rewrite control circuit 1304 from rewriting the flash memory FRM. The unauthorized access detection signal 1308 is formed at the timing indicated by the flash memory rewrite start signal 1303.

これにより、ノンセキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202が書き換えられるのを禁止することが可能となり、セキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202が書き換えられることが許可されることになる。   This makes it possible to inhibit the protection information area 1202 in the flash memory FRM from being rewritten in the non-secure program, and allows the protection information area 1202 in the flash memory FRM to be rewritten in the secure program. It will be.

図14は、実施の形態2に係わる不正アクセス検出回路1307の構成を示すブロック図である。同図において、1400は、3入力のアンド回路であり、1401は、フリップフロップ回路である。上記した保護情報選択信号1305、フラッシュメモリ書き換え開始信号1303およびノンセキュアプログラム選択信号1306が、3入力のアンド回路1400に入力される。3入力のアンド回路1400の出力は、フリップフロップ回路1401のセット端子(set)に供給される。フリップフロップ回路1401のクリア端子(clear)には、マイクロコンピュータLSIのリセット信号RSTが供給される。   FIG. 14 is a block diagram showing a configuration of the unauthorized access detection circuit 1307 according to the second embodiment. In the figure, 1400 is a 3-input AND circuit, and 1401 is a flip flop circuit. The protection information selection signal 1305, the flash memory rewrite start signal 1303 and the non-secure program selection signal 1306 described above are input to the 3-input AND circuit 1400. An output of the 3-input AND circuit 1400 is supplied to a set terminal (set) of the flip flop circuit 1401. The reset signal RST of the microcomputer LSI is supplied to the clear terminal (clear) of the flip flop circuit 1401.

フリップフロップ回路1401は、特に制限されないが、図7で説明したフリップフロップ回路703と同様な構成を有している。すなわち、フリップフロップ回路1401(保持回路)は、セット端子(set)にハイレベルが供給されることにより、出力端子(Q)はハイレベルとなる。出力端子(Q)がハイレベルになると、セット端子(set)にロウレベルが供給されても、クリア端子(clear)にハイレベルが供給されるまで、出力端子(Q)はハイレベルに維持される。   The flip-flop circuit 1401 is not particularly limited, but has a configuration similar to that of the flip-flop circuit 703 described in FIG. That is, in the flip-flop circuit 1401 (holding circuit), the high level is supplied to the set terminal (set), and the output terminal (Q) becomes high level. When the output terminal (Q) becomes high level, even if the set terminal (set) is supplied with low level, the output terminal (Q) is maintained at high level until the clear terminal (clear) is supplied with high level .

リセット信号RSTは、マイクロコンピュータLSIの外部から、マイクロコンピュータLSI内の回路ブロックに供給される。例えば、リセット信号RSTは、図13に示すように、マイクロプロセッサCPUにも供給されている。特に制限されないが、この実施の形態2においては、リセット信号RSTがハイレベルになることにより、マイクロコンピュータLSIがリセット状態にされる。   The reset signal RST is supplied from the outside of the microcomputer LSI to a circuit block in the microcomputer LSI. For example, as shown in FIG. 13, the reset signal RST is also supplied to the microprocessor CPU. Although not particularly limited, in the second embodiment, when the reset signal RST goes high, the microcomputer LSI is reset.

図13に示したフラッシュメモリ書き換えアドレス設定レジスタ1300は、設定されたアドレスが、フラッシュメモリFRM内の保護情報領域1202を指定しているとき、ハイレベルの保護情報選択信号1305を形成する。これに対して、設定されたアドレスが、フラッシュメモリFRM内の保護情報領域1202以外の領域(例えば、ノンセキュアプログラム領域1200)を指定している場合、フラッシュメモリ書き換えアドレス設定レジスタ1300は、ロウレベルの保護情報選択信号1305を形成する。また、図13に示したフラッシュメモリ書き換え開始レジスタ1301は、フラッシュメモリFRMを書き換えるタイミングで、フラッシュメモリ書き換え開始信号1303をハイレベルにする。ノンセキュアプログラム選択信号1306は、ノンセキュアプログラムが実行されているとき、ハイレベルとなり、セキュアプログラムが実行されているとき、ロウレベルとなる。   When the set address designates the protection information area 1202 in the flash memory FRM, the flash memory rewrite address setting register 1300 shown in FIG. 13 forms the protection information selection signal 1305 at high level. On the other hand, when the set address designates an area other than the protection information area 1202 in the flash memory FRM (for example, the non-secure program area 1200), the flash memory rewrite address setting register 1300 is low. A protection information selection signal 1305 is formed. Further, the flash memory rewrite start register 1301 shown in FIG. 13 sets the flash memory rewrite start signal 1303 to the high level at the timing of rewriting the flash memory FRM. The non-secure program selection signal 1306 is high when the non-secure program is being executed, and is low when the secure program is being executed.

そのため、フラッシュメモリFRM内の保護情報領域1202を書き換えるとき、ノンセキュアプログラムが実行されていれば、3入力のアンド回路1400の出力信号は、ハイレベルとなる。言い換えるならば、ノンセキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202を書き換えようとすると、3入力のアンド回路1400の出力信号はハイレベルとなる。3入力のアンド回路1400からのハイレベルの出力信号が、フリップフロップ回路1401のセット端子(set)に供給されるため、フリップフロップ回路1401の出力端子(Q)の電圧はハイレベルとなり、不正アクセス検出信号1308は、ハイレベルとなる。   Therefore, when the protection information area 1202 in the flash memory FRM is rewritten, the output signal of the 3-input AND circuit 1400 becomes high level if the non-secure program is executed. In other words, when trying to rewrite the protection information area 1202 in the flash memory FRM in the non-secure program, the output signal of the 3-input AND circuit 1400 becomes high level. The high-level output signal from the three-input AND circuit 1400 is supplied to the set terminal (set) of the flip flop circuit 1401, so the voltage at the output terminal (Q) of the flip flop circuit 1401 becomes high level and unauthorized access The detection signal 1308 becomes high level.

フラッシュメモリ書き換え制御回路1304は、不正アクセス検出信号1308がハイレベルとなることにより、供給されている書き換えアドレス1302によって指定されている保護情報領域1202への書き込みを禁止する。フリップフロップ回路1401は、リセット信号RSTがハイレベルとなるまで、出力端子(Q)をハイレベルに維持する。そのため、マイクロコンピュータLSIをリセットするまで、フラッシュメモリ書き換え制御回路1304は、保護情報領域1202への書き込みを禁止することになる。これにより、ハッキングの手段で、繰り返しアタックされても、フラッシュメモリFRMの保護情報領域1202が書き換えられるのを防ぐことが可能となる。   The flash memory rewrite control circuit 1304 prohibits writing to the protection information area 1202 designated by the supplied rewrite address 1302 when the unauthorized access detection signal 1308 becomes high level. The flip-flop circuit 1401 maintains the output terminal (Q) at high level until the reset signal RST becomes high level. Therefore, the flash memory rewrite control circuit 1304 prohibits writing to the protection information area 1202 until the microcomputer LSI is reset. This makes it possible to prevent the protection information area 1202 of the flash memory FRM from being rewritten even if attacked repeatedly by means of hacking.

一方、フラッシュメモリFRM内の保護情報領域1202を書き換えるとき、セキュアプログラムが実行されていれば、3入力のアンド回路1400の出力信号は、ロウレベルとなる。言い換えるならば、セキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202を書き換えようとすると、3入力のアンド回路1400の出力信号はロウレベルとなる。3入力のアンド回路1400の出力信号がロウレベルとなるため、フリップフロップ回路1401の出力端子(Q)の電圧は、ロウレベルとなり、不正アクセス検出信号1308もロウレベルとなる。   On the other hand, when the protected information area 1202 in the flash memory FRM is rewritten, the output signal of the 3-input AND circuit 1400 becomes low level if the secure program is executed. In other words, when trying to rewrite the protected information area 1202 in the flash memory FRM in the secure program, the output signal of the 3-input AND circuit 1400 becomes low level. Since the output signal of the 3-input AND circuit 1400 becomes low level, the voltage of the output terminal (Q) of the flip flop circuit 1401 becomes low level, and the unauthorized access detection signal 1308 also becomes low level.

フラッシュメモリ書き換え制御回路1304は、不正アクセス検出信号1308がロウレベルとなることにより、供給されている書き換えアドレス1302によって指定されている保護情報領域1202への書き込みを許可する。すなわち、セキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202をアクセスする場合には、許可され、保護情報領域1202を書き換えることが可能となる。   The flash memory rewrite control circuit 1304 permits writing to the protection information area 1202 designated by the supplied rewrite address 1302 when the unauthorized access detection signal 1308 becomes low level. That is, in the case of accessing the protected information area 1202 in the flash memory FRM in the secure program, it is permitted and the protected information area 1202 can be rewritten.

実施の形態2によれば、ノンセキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202を書き換えようとすると、不正アクセス検出回路1307から不正アクセス検出信号1308が出力され、フラッシュメモリ書き換え制御回路1304が、フラッシュメモリFRMの保護情報領域1202への書き込みを禁止する。この書き込みの禁止は、マイクロコンピュータLSIが、リセットされるまで継続し、解除することができない。これにより、フラッシュメモリFRMの保護情報領域1202が不正に書き換えられるのを防ぐことが可能となる。保護情報領域1202が不正に書き換えられるのを防ぐことが可能なため、ノンセキュアプログラムによって、セキュアプログラムにセキュリティホールを作り込むことを防ぐことができ、セキュアプログラムを保護することが可能となる。   According to the second embodiment, when attempting to rewrite the protected information area 1202 in the flash memory FRM in the non-secure program, the unauthorized access detection circuit 1307 outputs the unauthorized access detection signal 1308, and the flash memory rewrite control circuit 1304 And prohibit writing to the protection information area 1202 of the flash memory FRM. The prohibition of writing continues until the microcomputer LSI is reset and can not be released. This makes it possible to prevent the protection information area 1202 of the flash memory FRM from being rewritten illegally. Since the protected information area 1202 can be prevented from being rewritten illegally, the non-secure program can be prevented from forming a security hole in the secure program, and the secure program can be protected.

また、セキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202を書き換える場合には、フラッシュメモリ書き換え制御回路1304が、フラッシュメモリFRMの保護情報領域1202への書き込みを許可する。そのため、フラッシュメモリFRMに予め書き込んでおいたRTOSのプログラム(セキュアプログラム)に不具合が発見された場合、セキュアプログラムにおいて、セキュアプログラム領域1201が書き換え可能となるように、保護情報領域1202内の情報を書き換える。その後、書き換え可能となったセキュアプログラム領域1201に、不具合を修正したRTOS(セキュアプログラム)を書き込む。修正したRTOSを書き込んだ後、セキュアプログラムにおいて、セキュアプログラム領域1201が書き込み禁止となるように、保護情報領域1202内の情報を書き換える。これにより、セキュアプログラムに不具合が発見された場合でも、セキュアプログラムの修正を行うことが可能となる。   Further, when rewriting the protected information area 1202 in the flash memory FRM in the secure program, the flash memory rewrite control circuit 1304 permits writing to the protected information area 1202 of the flash memory FRM. Therefore, if a defect is found in the RTOS program (secure program) written in advance in the flash memory FRM, the information in the protected information area 1202 is set so that the secure program area 1201 can be rewritten in the secure program. rewrite. After that, the RTOS (secure program) having the defect corrected is written in the rewritable secure program area 1201. After writing the corrected RTOS, in the secure program, the information in the protected information area 1202 is rewritten so that the secure program area 1201 becomes write-protected. As a result, even when a defect is found in the secure program, the secure program can be corrected.

例えば、販売者PRDは、ネットワークNTW(図1)を介して、不具合を修正したRTOSと、フラッシュメモリFRMを書き換えるセキュアプログラムを配信する。配信されたこれらのセキュアプログラムが、マイクロコンピュータLSIにダウンロードされ、実行されるようにする。これにより、予めフラッシュメモリFRMに書き込んで提供したマイクロコンピュータLSIのRTOSを修正することが可能となる。   For example, the seller PRD distributes the RTOS that has corrected the problem and the secure program that rewrites the flash memory FRM via the network NTW (FIG. 1). These distributed secure programs are downloaded to the microcomputer LSI and executed. As a result, it becomes possible to correct the RTOS of the microcomputer LSI, which has been written and provided in advance to the flash memory FRM.

また、実施の形態1で説明したセキュアアドレス情報304は、販売者PRDが販売する前に、保護情報領域1202に書き込むが、実施の形態2によれば、ユーザーUSRが購入した後で、書き換えることが可能となる。これにより、後で、例えばセキュアプログラム領域のサイズ等を、必要に応じて変更することが可能となる。   In addition, secure address information 304 described in the first embodiment is written in the protected information area 1202 before the seller PRD sells, but according to the second embodiment, it is to be rewritten after the user USR purchases it. Is possible. Thereby, for example, the size of the secure program area can be changed later as needed.

(実施の形態3)
図15は、実施の形態3に係わるマイクロコンピュータの構成を示すブロック図である。図15に示したマイクロコンピュータLSIの構成は、図2に示したマイクロコンピュータと類似しているので、主に相違点を説明する。なお、図15にも、図2と同様に、マイクロコンピュータLSI以外に、サーバP−SVおよびネットワークNTWが示されている。
Third Embodiment
FIG. 15 is a block diagram showing a configuration of a microcomputer according to the third embodiment. The configuration of the microcomputer LSI shown in FIG. 15 is similar to that of the microcomputer shown in FIG. Similarly to FIG. 2, FIG. 15 also shows the server P-SV and the network NTW in addition to the microcomputer LSI.

新たな半導体販売モデルでは、図1で説明したように、販売者PRDが、RTOSのようなセキュアプログラムを、予めフラッシュメモリFRMへ書き込む。RTOSが書き込まれたフラッシュメモリFRMと、マイクロプロセッサCPU等を備えたマイクロコンピュータLSIが、販売者PRDから販売される。ユーザーUSRは、購入したマイクロコンピュータLSIに、ユーザーUSRが作成したユーザープログラムU−AP等をフラッシュメモリFRMに書き込む。   In the new semiconductor sales model, as described in FIG. 1, the seller PRD writes a secure program such as an RTOS to the flash memory FRM in advance. A microcomputer LSI including a flash memory FRM in which an RTOS is written and a microprocessor CPU and the like is sold by a seller PRD. The user USR writes the user program U-AP or the like created by the user USR into the flash memory FRM in the purchased microcomputer LSI.

ユーザーUSRが、購入したマイクロコンピュータLSIのフラッシュメモリFRMに格納されたRTOSのようなセキュアプログラムを、バージョンアップするときあるいは不都合を修正するとき等では、サーバP−SVに、バージョンアップされたRTOSあるいは修正されたRTOSが、格納される。この場合、バージョンアップされたRTOSあるいは修正されたRTOSは、暗号化されて、サーバP−SVに格納されている。そのため、ユーザーUSRが、バージョンアップされたRTOSあるいは修正されたRTOSをダウンロードするために、バージョンアップされたRTOSあるいは修正されたRTOSが、ネットワークNTWを通過するときに、バージョンアップされたRTOSあるいは修正されたRTOSが、第3者によって盗まれても、バージョンアップされたRTOSあるいは修正されたRTOSを動作させることは困難である。   When the user USR upgrades a secure program such as the RTOS stored in the flash memory FRM of the purchased microcomputer LSI, or when correcting a problem, the RTOS or the upgraded RTOS on the server P-SV The modified RTOS is stored. In this case, the upgraded RTOS or the modified RTOS is encrypted and stored in the server P-SV. Therefore, when the user USR passes the network NTW, the upgraded RTOS or modified RTOS passes the network NTW in order to download the upgraded RTOS or modified RTOS. Even if the RTOS is stolen by a third party, it is difficult to operate the upgraded RTOS or the modified RTOS.

ネットワークNTWを経由したプログラム(バージョンアップされたRTOSあるいは修正されたRTOS)は、通信機能回路200によって、受信され、マイクロプロセッサCPUによって、バス205を介して暗号復号機能回路に伝達され、暗号復号機能回路によって復号される。暗号復号機能回路によって復号され、暗号化されていないプログラムは、図2では、マイクロプロセッサCPUによって揮発性メモリ203に格納されていた。   The program (versioned up RTOS or modified RTOS) via the network NTW is received by the communication function circuit 200, transmitted by the microprocessor CPU to the decryption function circuit via the bus 205, and the decryption function Decoded by the circuit. The program decrypted by the decryption function circuit and not encrypted is stored in the volatile memory 203 by the microprocessor CPU in FIG.

新たな半導体販売モデルでは、マイクロプロセッサCPUを操作するノンセキュアプログラムをユーザーUSRが作成する。すなわち、ユーザーUSRは、ノンセキュアプログラムではあるが、マイクロプロセッサCPUを任意に操作するプログラムを作成することができる。そのため、マイクロプロセッサCPUを操作するハッキングプログラムを、ユーザーUSRは作成することが可能となる。実施の形態1で説明したメモリプロテクションユニット204によって、揮発性メモリ203、フラッシュメモリFRMに格納されているセキュアデータの保護等は図れるが、マイクロプロセッサCPU、揮発性メモリ203はハッキングに対して弱く、セキュリティホールを発見して、マイクロプロセッサCPU、揮発性メモリ203がハッキングされる危険性が存在する。   In the new semiconductor sales model, the user USR creates a non-secure program for operating the microprocessor CPU. That is, although the user USR is a non-secure program, it can create a program for arbitrarily operating the microprocessor CPU. Therefore, the user USR can create a hacking program for operating the microprocessor CPU. Although memory protection unit 204 described in the first embodiment can protect secure data stored in volatile memory 203 and flash memory FRM, etc., microprocessor CPU and volatile memory 203 are weak against hacking, There is a risk that the microprocessor CPU and volatile memory 203 may be hacked upon finding a security hole.

この実施の形態3においては、暗号復号機能回路201−A(復号回路)は、専用の信号配線1500によってフラッシュメモリ書き換え回路202−Aに接続され、フラッシュメモリ書き換え回路202−Aは、専用の信号配線1501によってフラッシュメモリFRMに接続されている。   In the third embodiment, the decryption function circuit 201-A (decryption circuit) is connected to the flash memory rewrite circuit 202-A by the dedicated signal wiring 1500, and the flash memory rewrite circuit 202-A is a dedicated signal. The wiring 1501 is connected to the flash memory FRM.

暗号復号機能回路201−Aは、暗号復号機能回路201と異なり、復号化した暗号化されていないプログラムを専用の信号配線1500を介して、フラッシュメモリ書き換え回路202−Aへ伝達する。フラッシュメモリ書き換え回路202−Aは、フラッシュメモリ書き換え回路202と異なり、伝達された暗号化されていないプログラムを、専用の信号配線1501を介してフラッシュメモリFRMへ伝達し、フラッシュメモリFRMに、プログラムを書き込む。   Unlike the decryption function circuit 201, the decryption function circuit 201-A transfers the decrypted unencrypted program to the flash memory rewrite circuit 202-A via the dedicated signal wiring 1500. Unlike the flash memory rewrite circuit 202, the flash memory rewrite circuit 202-A transmits the transmitted unencrypted program to the flash memory FRM via the dedicated signal wiring 1501, and the program is stored in the flash memory FRM. Write.

これにより、マイクロプロセッサCPUによって、通信機能回路200(通信回路)から暗号復号機能回路201−Aへ転送された暗号化されたプログラムは、暗号復号機能回路201−Aによって復号化され、復号化された暗号化されていないプログラム(データ)は、マイクロプロセッサCPUによってアクセスされずに、信号配線1500を介して直接、フラッシュメモリ書き換え回路202−Aに供給されるようになる。また、フラッシュメモリ書き換え回路202−Aに供給された暗号化されていないプログラム(データ)も、マイクロプロセッサCPUによってアクセスされず、信号配線1501によって、直接フラッシュメモリFRMへ供給されることになる。   Thus, the encrypted program transferred from the communication function circuit 200 (communication circuit) to the decryption function circuit 201-A by the microprocessor CPU is decrypted by the decryption function circuit 201-A and decrypted. The unencrypted program (data) is supplied directly to the flash memory rewrite circuit 202-A through the signal wiring 1500 without being accessed by the microprocessor CPU. The unencrypted program (data) supplied to the flash memory rewrite circuit 202-A is also not directly accessed by the microprocessor CPU but is directly supplied to the flash memory FRM by the signal wiring 1501.

すなわち、暗号化されていないプログラム(データ)が、マイクロプロセッサCPUおよび揮発性メモリ203を仲介することなく、フラッシュメモリFRMに書き込まれるようにすることが可能となる。   That is, an unencrypted program (data) can be written to the flash memory FRM without intervention of the microprocessor CPU and the volatile memory 203.

マイクロコンピュータLSIの外部からのハッキングを考えた場合、マイクロコンピュータLSIの外部からマイクロプロセッサCPUを、任意に操作することは難しい。そのため、例えばマイクロプロセッサCPUを、暗号化されていないプログラム(データ)が経由しても、プログラムをハッキングすることは難しい。ところが、新たな半導体販売モデルでは、マイクロプロセッサCPUを、任意に操作することが可能なプログラムをユーザーが作成する。そのため、例えばマイクロプロセッサCPUを、暗号化されていないプログラムが経由すると、暗号化されていないプログラムが盗まれると言うことが危惧される。この実施の形態3においては、暗号化されていないプログラムは、マイクロプロセッサCPUおよび揮発性メモリ203を経由せずに、直接、暗号復号機能回路201−Aからフラッシュメモリ書き換え回路202−Aを介してフラッシュメモリFRMへ供給され、書き込まれる。これにより、プログラムをハッキングから保護することが可能となる。   When hacking from the outside of the microcomputer LSI is considered, it is difficult to arbitrarily operate the microprocessor CPU from the outside of the microcomputer LSI. Therefore, for example, it is difficult to hack a program even if an unencrypted program (data) passes through the microprocessor CPU. However, in the new semiconductor sales model, the user creates a program capable of arbitrarily operating the microprocessor CPU. Therefore, for example, when an unencrypted program passes through the microprocessor CPU, it is feared that the unencrypted program is stolen. In the third embodiment, an unencrypted program is directly transmitted from the decryption function circuit 201-A to the flash memory rewrite circuit 202-A without passing through the microprocessor CPU and the volatile memory 203. It is supplied to and written to the flash memory FRM. This makes it possible to protect the program from hacking.

実施の形態3においては、ハッキングプログラムによって、マイクロプロセッサCPUが任意に操作可能となっても、ダウンロードした暗号化されていないプログラム(データ)が、マイクロプロセッサCPUによってアクセスされないため、プログラムが盗まれるのを防ぐことが可能となる。   In the third embodiment, even if the microprocessor CPU can be arbitrarily operated by the hacking program, the downloaded unencrypted program (data) is not accessed by the microprocessor CPU, so the program is stolen. Can be prevented.

(実施の形態4)
図16は、実施の形態4に係わるマイクロプロセッサCPUの構成を示すブロック図である。図16は、実施の形態1〜3において説明したマイクロプロセッサCPUの構成を模式的に示している。マイクロプロセッサCPUは、種々の回路ブロックを有しているが、図16には、この実施の形態4の説明に係わる回路ブロックのみが示されている。
Embodiment 4
FIG. 16 is a block diagram showing a configuration of a microprocessor CPU according to the fourth embodiment. FIG. 16 schematically shows the configuration of the microprocessor CPU described in the first to third embodiments. The microprocessor CPU has various circuit blocks, but FIG. 16 shows only the circuit blocks involved in the description of the fourth embodiment.

同図において、1600は制御ユニット、1601は汎用レジスタ群、1602は第1スタックポインタ、1603は第2スタックポインタ、1604はプログラムカウンタ、1605は演算器を示している。   In the figure, reference numeral 1600 denotes a control unit, 1601 a general-purpose register group, 1602 a first stack pointer, 1603 a second stack pointer, 1604 a program counter, and 1605 an arithmetic unit.

汎用レジスタ群1601は、複数の汎用レジスタR0〜Rnを備えている。それぞれの汎用レジスタR0〜Rnは、マイクロプロセッサLSIが処理を実行するとき、演算データまたは/およびアドレスを格納する。汎用レジスタR0〜Rnに格納されているアドレスは、マイクロプロセッサCPUが、処理を実行するとき、例えばフラッシュメモリFRMまたは/および揮発性メモリ203のアドレスとして用いられる。   The general purpose register group 1601 includes a plurality of general purpose registers R0 to Rn. Each of the general purpose registers R0 to Rn stores operation data or / and an address when the microprocessor LSI executes a process. The address stored in the general purpose registers R0 to Rn is used, for example, as an address of the flash memory FRM or / and the volatile memory 203 when the microprocessor CPU executes a process.

制御ユニット1600は、フラッシュメモリFRMに格納されているセキュアプログラムおよびノンセキュアプログラムに従って、汎用レジスタ群1601内の汎用レジスタ、演算器1605、第1スタックポインタ1602、第2スタックポインタ1603およびプログラムカウンタ1604を制御する。制御ユニット1600が、これらの回路ブロックを制御することにより、セキュアプログラムおよびノンセキュアプログラムに従った処理が、マイクロプロセッサCPUによって実現される。   Control unit 1600 executes general-purpose registers in general-purpose register group 1601, arithmetic unit 1605, first stack pointer 1602, second stack pointer 1603 and program counter 1604 according to the secure program and non-secure program stored in flash memory FRM. Control. The control unit 1600 controls these circuit blocks, whereby the processing according to the secure program and the non-secure program is realized by the microprocessor CPU.

マイクロプロセッサCPUは、セキュアプログラムとノンセキュアプログラムの両方を、時分割的に実行する。すなわち、1個のマイクロプロセッサCPUによって、RTOSのようなセキュアプログラムとユーザープログラムU−APのようなノンセキュアプログラムの両方が、時分割的に実行される。   The microprocessor CPU executes both the secure program and the non-secure program in a time division manner. That is, one microprocessor CPU executes both a secure program such as an RTOS and a non-secure program such as a user program U-AP in a time division manner.

プログラムカウンタ1604は、実施の形態1〜3において説明したPCアドレス306を形成する。すなわち、マイクロプロセッサCPUが、セキュアプログラムを実行する際には、プログラムカウンタ1604が、セキュアプログラムを構成する命令を指定するPCアドレス306を形成する。同様に、ノンセキュアプログラムを実行する際には、プログラムカウンタ1604が、ノンセキュアプログラムを構成する命令を指定するPCアドレス306を形成する。特に制限されないが、第1スタックポインタ1602は、マイクロプロセッサCPUが、ノンセキュアプログラムを実行するとき、スタック領域を指定するアドレスを出力する。また、第2スタックポインタ1603は、マイクロプロセッサCPUが、セキュアプログラムを実行するとき、スタック領域を指定するアドレスを出力する。   The program counter 1604 forms the PC address 306 described in the first to third embodiments. That is, when the microprocessor CPU executes a secure program, the program counter 1604 forms a PC address 306 specifying an instruction that configures the secure program. Similarly, when executing a non-secure program, the program counter 1604 forms a PC address 306 specifying an instruction that constitutes the non-secure program. Although not particularly limited, the first stack pointer 1602 outputs an address specifying a stack area when the microprocessor CPU executes a non-secure program. The second stack pointer 1603 outputs an address specifying a stack area when the microprocessor CPU executes a secure program.

演算器1605は、例えば汎用レジスタR0〜Rnに格納されているデータ間で演算を行い、演算結果を演算データあるいはアドレスとして、汎用レジスタに格納する。   The arithmetic unit 1605 performs, for example, an operation between data stored in the general purpose registers R0 to Rn, and stores the operation result in the general purpose register as operation data or an address.

上記したように、マイクロプロセッサCPUは、セキュアプログラムとノンセキュアプログラムを時分割的に実行する。そのため、セキュアプログラムを実行したときに発生したセキュアデータが、ノンセキュアプログラムを実行する際に、読み取られないように対策を行うことが必要である。   As described above, the microprocessor CPU executes the secure program and the non-secure program in a time division manner. Therefore, it is necessary to take measures so that secure data generated when the secure program is executed can not be read when the non-secure program is executed.

マイクロプロセッサCPUが動作するとき、第1スタックポインタ1602、第2スタックポインタ1603およびプログラムカウンタ1604は、フラッシュメモリFRMまたは/および揮発性メモリ203等のアドレスを指定するが、セキュアデータは格納しない。また、第1スタックポインタ1602、第2スタックポインタ1603およびプログラムカウンタ1604によって指定されるメモリ(フラッシュメモリFRMおよび揮発性メモリ203)については、メモリプロテクションユニット204によって保護することが可能である。例えば、実施の形態1で述べたように、メモリをセキュアプログラム領域とノンセキュアプログラム領域に分け、ノンセキュアプログラムがセキュアプログラム領域をアクセスするのを制限することにより、保護することが可能である。   When the microprocessor CPU operates, the first stack pointer 1602, the second stack pointer 1603 and the program counter 1604 designate addresses such as the flash memory FRM and / or the volatile memory 203 but do not store secure data. The memory protection unit 204 can protect the memories (the flash memory FRM and the volatile memory 203) specified by the first stack pointer 1602, the second stack pointer 1603 and the program counter 1604. For example, as described in the first embodiment, it is possible to protect the memory by dividing the memory into a secure program area and a non-secure program area and restricting access to the secure program area by the non-secure program.

一方、汎用レジスタR0〜Rnは、演算データまたは/およびアドレスを格納する。例えば、セキュアプログラムを実行したとき、セキュアデータである演算データが汎用レジスタR0〜Rnに格納される。この汎用レジスタR0〜Rnに格納されたデータが、ノンセキュアプログラムによって読み出されると、セキュアデータが盗まれることになる。次に、汎用レジスタR0〜Rnに格納されているデータが盗まれる一例を、図17を用いて説明する。   On the other hand, general purpose registers R0 to Rn store operation data or / and an address. For example, when the secure program is executed, operation data which is secure data is stored in the general purpose registers R0 to Rn. When the data stored in the general purpose registers R0 to Rn is read by the non-secure program, the secure data is stolen. Next, an example in which data stored in general-purpose registers R0 to Rn is stolen will be described using FIG.

図17は、セキュアプログラムを実行しているときに、ハードウェア割り込みが発生した場合のマイクロプロセッサCPUの動作を示すフローチャート図である。図17において、HDWは、マイクロプロセッサCPUが、ハードウェアで実施する処理を示しており、NSPは、マイクロプロセッサCPUが、ノンセキュアプログラムを実行することにより行われる処理を示している。図17は、ハードウェア割り込みが発生した場合、ノンセキュアプログラムによって規定された割り込み処理へ分岐する例を示している。   FIG. 17 is a flowchart showing the operation of the microprocessor CPU when a hardware interrupt occurs while a secure program is being executed. In FIG. 17, HDW indicates processing performed by the microprocessor CPU in hardware, and NSP indicates processing performed by the microprocessor CPU executing a non-secure program. FIG. 17 shows an example of branching to interrupt processing defined by the non-secure program when a hardware interrupt occurs.

先ず、ステップSH00で、マイクロプロセッサCPUがセキュアプログラムを開始する(Start)。次に、ステップSH01で、ハードウェア割り込みが発生したとする(割り込み発生)。この割り込み発生に応答して、ステップSH02において、割り込みフラグがセットされる(割り込みフラグセット)。   First, at step SH00, the microprocessor CPU starts the secure program (Start). Next, in step SH01, it is assumed that a hardware interrupt has occurred (interrupt generation). In response to the occurrence of the interrupt, the interrupt flag is set in step SH02 (interrupt flag set).

次に、ステップSH03において、割り込み条件が判定され(割り込み条件判定)、ステップSH04において、割り込みフラグがクリアされる(割り込みフラグクリア)。その後、割り込み処理を行った後で、汎用レジスタR0〜Rnの値を戻すことが可能となるように、ステップSH05において、汎用レジスタR0〜Rnの値を、例えば、第2スタックポインタ1603によって指定されるスタック領域に退避させる(汎用レジスタの値を退避)。汎用レジスタR0〜Rnの値を退避した後、ステップSH06において、割り込み処理へ分岐する(割り込み分岐)。   Next, in step SH03, an interrupt condition is determined (interrupt condition determination), and in step SH04, the interrupt flag is cleared (interrupt flag clear). Thereafter, after the interrupt processing is performed, the values of the general purpose registers R0 to Rn are designated by, for example, the second stack pointer 1603 in step SH05 so that the values of the general purpose registers R0 to Rn can be returned. Save to the target stack area (save the value of the general-purpose register). After saving the values of general-purpose registers R0 to Rn, in step SH06, the process branches to interrupt processing (interrupt branch).

割り込み分岐によって、次にノンセキュアプログラムへ分岐する。ノンセキュアプログラムによって、処理の内容が規定されたところの割り込み処理を、マイクロプロセッサCPUが、ステップSN00で実行し(割り込み処理)、ステップSN01で、マイクロプロセッサCPUは、リターン命令(RET)を実行する。   Next branch to the non-secure program by the interrupt branch. At step SN00, the microprocessor CPU executes interrupt processing in which the content of processing is defined by the non-secure program (interrupt processing), and at step SN01, the microprocessor CPU executes a return instruction (RET). .

リターン命令(RET)が実行されることにより、マイクロプロセッサCPUは、ステップSH07を実行する。ステップSH07では、第2スタックポインタ1603によって指定されているスタック領域から、ステップSH05で退避した汎用レジスタR0〜Rnの値か、汎用レジスタR0〜Rnへ戻される(汎用レジスタの値を復帰)。ステップSH08で、セキュアプログラムの実行が終了する(End)。   The microprocessor CPU executes step SH07 by executing the return instruction (RET). At step SH07, the values of the general purpose registers R0 to Rn saved at step SH05 are returned to the general purpose registers R0 to Rn from the stack area designated by the second stack pointer 1603 (the values of the general purpose registers are restored). In step SH08, execution of the secure program ends (End).

このように、割り込みが発生した場合、セキュアプログラムを実行していたときの汎用レジスタR0〜Rnの値は、退避されるが、汎用レジスタR0〜Rnは、それぞれの値を保持した状態で、ノンセキュアプログラムによって規定された割り込み処理が、ステップSN00において行われることになる。そのため、汎用レジスタに格納されているセキュアデータを、割り込み処理(ステップSN00)で読み出すことが可能となってしまう。例えば、ノンセキュアプログラムとしてハッキングプログラムを作成し、割り込みを繰り返して発生することにより、汎用レジスタR0〜Rnに格納されているセキュアデータを盗むことが可能となってしまう。   As described above, when an interrupt occurs, the values of general purpose registers R0 to Rn when the secure program is being executed are saved, but while general purpose registers R0 to Rn hold their respective values, they are not The interrupt processing defined by the secure program will be performed in step SN00. Therefore, secure data stored in the general-purpose register can be read out by the interrupt process (step SN00). For example, by creating a hacking program as a non-secure program and repeatedly generating interrupts, it becomes possible to steal secure data stored in the general purpose registers R0 to Rn.

実施の形態4においては、汎用レジスタR0〜Rnに格納されているデータを保護することが可能なマイクロプロセッサCPUを備えたマイクロコンピュータLSIが提供される。実施の形態4においては、汎用レジスタR0〜Rnに格納されているデータの保護が、セキュアプログラムによる汎用レジスタクリア処理と、汎用レジスタクリア制御回路によって達成される。次に、セキュアプログラムによる汎用レジスタクリア処理と、汎用レ
ジスタクリア制御回路を説明する。
In the fourth embodiment, a microcomputer LSI provided with a microprocessor CPU capable of protecting data stored in general purpose registers R0 to Rn is provided. In the fourth embodiment, protection of data stored in general purpose registers R0 to Rn is achieved by a general purpose register clear process by a secure program and a general purpose register clear control circuit. Next, general purpose register clear processing by the secure program and a general purpose register clear control circuit will be described.

<セキュアプログラムによる汎用レジスタクリア>
図18は、実施の形態4に係わるマイクロプロセッサCPUの動作を示すフローチャート図である。図18は、図17と同様に、RTOSのようなセキュアプログラムを実行しているときに、ハードウェア割り込みが発生した場合のマイクロプロセッサCPUの動作を示すフローチャート図である。図18において、HDWは、マイクロプロセッサCPUのハードウェアで実施する処理を示しており、NSPは、ノンセキュアプログラムを実行することにより行われる処理を示しており、SSPは、セキュアプログラムを実行することにより行われる処理を示している。図18においても、ハードウェア割り込みが発生した場合、ノンセキュアプログラムによって規定された割り込み処理へ分岐する例が示されている。
<General-purpose register clear by secure program>
FIG. 18 is a flowchart showing the operation of the microprocessor CPU according to the fourth embodiment. FIG. 18 is a flowchart showing the operation of the microprocessor CPU when a hardware interrupt occurs while executing a secure program such as RTOS, as in FIG. In FIG. 18, HDW indicates a process performed by hardware of a microprocessor CPU, NSP indicates a process performed by executing a non-secure program, and SSP executes a secure program. Shows the process performed by Also in FIG. 18, when a hardware interrupt occurs, an example of branching to the interrupt processing defined by the non-secure program is shown.

ハードウェアで行われる処理HDWは、ステップSH00、SH01、SH02およびSH08によって達成される。また、セキュアプログラムを実行することにより行われる処理SSPは、ステップSS00〜SS09によって達成され、ノンセキュアプログラムを実行することにより行われる処理NSPは、ステップSN00およびSN01によって達成される。   The process HDW performed by the hardware is achieved by the steps SH00, SH01, SH02 and SH08. Further, the processing SSP performed by executing the secure program is achieved by steps SS00 to SS09, and the processing NSP performed by executing the non-secure program is achieved by steps SN00 and SN01.

ステップSH00で、RTOSのようなセキュアプログラムが動作を開始する(Start)。次に、ステップSH01で、割り込みが発生したものとする(割り込み発生)。この割り込みが発生することにより、ステップSH02において、割り込みフラグが、例えば1にセットされる(割り込みフラグセット)。   At step SH00, a secure program such as RTOS starts operation (Start). Next, in step SH01, an interrupt occurs (an interrupt is generated). When this interrupt occurs, the interrupt flag is set to, for example, 1 in step SH02 (interrupt flag set).

一方、動作を開始したセキュアプログラム(RTOS)においては、上記した割り込みフラグのチェック(判定)が、所定の周期で行われる。すなわち、セキュアプログラムを実行することにより行われる処理SSPにおいて、マイクロプロセッサCPUは、ステップS00で、任意のセキュアプログラムを実行する(セキュアプログラム実行)。ステップS00で、セキュアプログラムを実行した後、割り込みフラグが1にセットされているか否かの判定を、マイクロプロセッサCPUが、ステップSS01で行う。割り込みフラグがセットされていなければ、ステップSS00へ戻り、任意のセキュアプログラムが実行される。一方、割り込みフラグが1にセットされている場合には、次にステップSS02が、マイクロプロセッサCPUによって実行される。これにより、周期的に、割り込みフラグが1にセットされているか否かの判定が行われ、割り込みフラグがセットされていない場合には、任意のセキュアプログラムが繰り返し実行されることになる。   On the other hand, in the secure program (RTOS) which has started the operation, the check (determination) of the above-described interrupt flag is performed at a predetermined cycle. That is, in the process SSP performed by executing the secure program, the microprocessor CPU executes an arbitrary secure program in step S00 (secure program execution). After executing the secure program in step S00, the microprocessor CPU determines whether or not the interrupt flag is set to 1 in step SS01. If the interrupt flag is not set, the process returns to step SS00, and an arbitrary secure program is executed. On the other hand, if the interrupt flag is set to 1, then step SS02 is executed by the microprocessor CPU. Thereby, it is periodically determined whether or not the interrupt flag is set to 1. If the interrupt flag is not set, an arbitrary secure program is repeatedly executed.

次に、マイクロプロセッサCPUは、セキュアプログラムを実行することにより、ステップSS02において、割り込み条件を判定し(割り込み条件判定)し、ステップSS03において、割り込みフラグをクリアする(割り込みフラグクリア)。   Next, the microprocessor CPU executes the secure program to determine the interrupt condition (interrupt condition determination) in step SS02, and clears the interrupt flag in step SS03 (clear interrupt flag).

ステップSS03において、割り込みフラグがクリアされるため、ハードウェアでの処理HDWにおいては、図17で説明したステップSH03(割り込み条件判定)〜ステップSH07(汎用レジスタの値の復帰)は行われない。   Since the interrupt flag is cleared in step SS03, step SH03 (interrupt condition determination) to step SH07 (return of general-purpose register value) described in FIG. 17 are not performed in the process HDW by the hardware.

ステップSS03に続いて、ステップSS04において、マイクロプロセッサCPUは、汎用レジスタR0〜Rnの値を、第2スタックポインタ1603によって指定されるスタック領域に退避する(汎用レジスタの値を退避)。汎用レジスタR0〜Rnの値を退避した後で、マイクロプロセッサCPUは、ステップSS05を実行する。ステップSS05では、マイクロプロセッサCPUは、汎用レジスタR0〜Rnをクリアする。例えば、所定の値を、汎用レジスタR0〜Rnのそれぞれに書き込むことにより、汎用レジスタR0〜Rnのそれぞれの値はクリアされることになる。   Following step SS03, in step SS04, the microprocessor CPU saves the values of the general purpose registers R0 to Rn in the stack area designated by the second stack pointer 1603 (saves the value of the general purpose register). After saving the values of the general purpose registers R0 to Rn, the microprocessor CPU executes step SS05. At step SS05, the microprocessor CPU clears the general purpose registers R0 to Rn. For example, by writing a predetermined value to each of general purpose registers R0 to Rn, each value of general purpose registers R0 to Rn is cleared.

汎用レジスタR0〜Rnのそれぞれをクリアした後、ステップSS06において、マイクロプロセッサCPUは、使用するスタックポインタを、第2スタックポインタ1603から第1スタックポインタ1602へ切り替える(スタックポインタの切り替え)。次に、ステップSS07において、マイクロプロセッサCPUは、ソフトウェア割り込み命令(CALL)を実行する。このとき割り込み命令で呼び出すプログラムは、ノンセキュアプログラムである。呼び出されたノンセキュアプログラムで行われる処理NSPは、図17で説明した処理NSPと同じである。処理NSPで、マイクロプロセッサCPUが行うステップも、図17で説明したステップSN00、SN01と同じであるため、説明は省略する。なお、このノンセキュアプログラムを実行するときには、ステップSS06でスタックポインタが、第1スタックポインタ1602に切り替えられているため、第1スタックポインタ1602を用いて、ノンセキュアプログラムが実行されることになる。   After clearing each of the general purpose registers R0 to Rn, the microprocessor CPU switches the stack pointer to be used from the second stack pointer 1603 to the first stack pointer 1602 (switching of the stack pointer) in step SS06. Next, in step SS07, the microprocessor CPU executes a software interrupt instruction (CALL). The program called by the interrupt instruction at this time is a non-secure program. The process NSP performed by the called non-secure program is the same as the process NSP described in FIG. The steps performed by the microprocessor CPU in the process NSP are also the same as steps SN00 and SN01 described with reference to FIG. When the non-secure program is executed, the stack pointer is switched to the first stack pointer 1602 in step SS06, so the non-secure program is executed using the first stack pointer 1602.

処理NSPにおいて、マイクロプロセッサCPUが、ステップSN01を実行することにより、マイクロプロセッサCPUは、セキュアプログラムでの処理を再開する。すなわち、ステップSS08を次に実行する。ステップSS08では、使用するスタックポインタを第1スタックポインタ1602から第2スタックポインタ1603へ切り替える(スタックポインタの切り替え)。ステップSS09では、切り替えた第2スタックポインタ1603によって指定されているスタック領域から、ステップSS04で退避した汎用レジスタR0〜Rnの値を、汎用レジスタR0〜Rnへ復帰する(汎用レジスタの値を復帰)。   In the process NSP, the microprocessor CPU executes the process of step SN01, and the microprocessor CPU resumes the process with the secure program. That is, step SS08 is executed next. At step SS08, the stack pointer to be used is switched from the first stack pointer 1602 to the second stack pointer 1603 (switching of the stack pointer). In step SS09, the values of general purpose registers R0 to Rn saved in step SS04 are restored from general purpose registers R0 to Rn from the stack area designated by the switched second stack pointer 1603 (the values of general purpose registers are restored). .

ステップSS09の後は、ステップSS00へ戻る。以降は、割り込みフラグが1にセットされるまで、ステップSS00とSS01が繰り返し実行され、割り込みフラグが1にセットされたときには、ステップSS02〜SS09およびSN00〜SN01が実行されることになる。また、セキュアプログラムを終了した場合は、ステップSH08が実行される(End)。   After step SS09, the process returns to step SS00. Thereafter, steps SS00 and SS01 are repeatedly executed until the interrupt flag is set to 1, and when the interrupt flag is set to 1, steps SS02 to SS09 and SN00 to SN01 are executed. When the secure program is ended, step SH08 is executed (End).

これにより、セキュアプログラムを実行している際に、ハードウェア割り込みが発生した場合でも、汎用レジスタR0〜Rnに格納されたセキュアデータ(演算データ、アドレス)は、ノンセキュアプログラムを実行する前に、マイクロプロセッサCPUによって、クリアされる。そのため、セキュアデータが盗まれることを防ぐことが可能となる。   As a result, even when a hardware interrupt occurs while executing a secure program, secure data (operation data, address) stored in the general purpose registers R0 to Rn is executed before the non-secure program is executed. Cleared by the microprocessor CPU. Therefore, it is possible to prevent secure data from being stolen.

<汎用レジスタクリア制御回路>
図18で説明したセキュアプログラムによる汎用レジスタクリアでは、マイクロプロセッサCPUが、例えば汎用レジスタR0〜Rnのそれぞれに、所定の値を書き込むことによって、汎用レジスタR0〜Rnのそれぞれをクリアする。
<General-purpose register clear control circuit>
In the general purpose register clear by the secure program described in FIG. 18, the microprocessor CPU clears each of the general purpose registers R0 to Rn, for example, by writing a predetermined value to each of the general purpose registers R0 to Rn.

マイクロプロセッサCPUが実行するセキュアプログラムが、RTOSの場合、割り込みに対して行われる処理が、所定の時間内に完了すれば、リアルタイム性を維持することが可能である。そのため、割り込みに対する処理として、所定の時間内に、セキュアプログラムによる複数の汎用レジスタのクリアが完了すれば、リアルタイム性を維持できる。割り込みの発生から、対応する割り込み処理が実行されるまでの応答が、汎用レジスタをクリアする処理により、若干遅れても、リアルタイム性は問題ない。   If the secure program executed by the microprocessor CPU is an RTOS, real-time capability can be maintained if the processing performed for the interrupt is completed within a predetermined time. Therefore, real time property can be maintained if clearing of a plurality of general purpose registers by a secure program is completed within a predetermined time as processing for an interrupt. Even if the response from the occurrence of an interrupt to the execution of the corresponding interrupt processing is delayed by a process of clearing a general purpose register, there is no problem in real time.

しかしながら、マイクロコンピュータLSIで、例えばモータを制御するような用途等では、割り込みが発生してから、短期間のうちに、対応した割り込み処理を実行することが要求される。すなわち、応答時間を短くすることが要求される。この実施の形態4においては、マイクロプロセッサCPUは、汎用レジスタクリア制御回路を備えており、応答時間の短縮化が図られる。   However, in an application that controls a motor, for example, in a microcomputer LSI, it is required to execute corresponding interrupt processing within a short period of time after an interrupt occurs. That is, it is required to shorten the response time. In the fourth embodiment, the microprocessor CPU is provided with a general purpose register clear control circuit, and response time can be shortened.

図19は、実施の形態4に係わるマイクロプロセッサCPUの構成を示すブロック図である。図19は、図16に示したマイクロプロセッサと類似しているので、相違点を主に説明する。図19に示したマイクロプロセッサCPUにおいては、汎用レジスタクリア制御回路1900が、図16に示したマイクロプロセッサに追加されている。汎用レジスタクリア制御回路1900は、制御ユニット1600と汎用レジスタ群1601に接続されており、制御ユニット1600からの指示に従って、汎用レジスタ群1601に含まれている汎用レジスタR0〜Rnをクリアする。   FIG. 19 is a block diagram showing a configuration of a microprocessor CPU according to the fourth embodiment. FIG. 19 is similar to the microprocessor shown in FIG. 16, so the differences will be mainly described. In the microprocessor CPU shown in FIG. 19, a general purpose register clear control circuit 1900 is added to the microprocessor shown in FIG. The general purpose register clear control circuit 1900 is connected to the control unit 1600 and the general purpose register group 1601 and clears the general purpose registers R0 to Rn included in the general purpose register group 1601 according to an instruction from the control unit 1600.

この実施の形態4に係わるマイクロプロセッサCPUは、マスク可能な割り込み(第1割り込み)とマスク不可能な割り込み(第1割り込みとは異なる第2割り込み)を受け付ける機能を有している。マスク不可能な割り込みを受け付けた場合、制御ユニット1600は、汎用レジスタクリア制御回路1900に対して、汎用レジスタR0〜Rnをクリアする指示を出力する。   The microprocessor CPU according to the fourth embodiment has a function of receiving a maskable interrupt (first interrupt) and an unmaskable interrupt (second interrupt different from the first interrupt). When the non-maskable interrupt is received, the control unit 1600 outputs an instruction to clear the general purpose registers R0 to Rn to the general purpose register clear control circuit 1900.

図20は、図19に示したマイクロプロセッサCPUの動作を示すフローチャート図である。図20を用いて、図19に示したマイクロプロセッサCPUの動作を説明する。図20に示したフローチャートは、図18に示したフローチャートと類似しているので、ここでは主に相違する部分を説明する。図20においても、HDWは、マイクロプロセッサCPUのハードウェアで実行する処理を示しており、NSPは、ノンセキュアプログラムを実行することにより行われる処理を示しており、SSPは、セキュアプログラムを実行することにより行われる処理を示している。   FIG. 20 is a flowchart showing the operation of the microprocessor CPU shown in FIG. The operation of the microprocessor CPU shown in FIG. 19 will be described with reference to FIG. The flow chart shown in FIG. 20 is similar to the flow chart shown in FIG. 18, so the main differences will be described here. Also in FIG. 20, HDW indicates processing executed by hardware of the microprocessor CPU, NSP indicates processing executed by executing a non-secure program, and SSP executes a secure program. Shows the processing to be performed.

ハードウェアで行われる処理HDWは、ステップSH00〜SH08およびSH10〜SH13によって達成される。また、セキュアプログラムを実行することにより行われる処理SSPは、ステップSS00〜SS09によって達成され、ノンセキュアプログラムを実行することにより行われる処理NSPは、ステップSN02〜SN05によって達成される。   The process HDW performed in hardware is achieved by the steps SH00-SH08 and SH10-SH13. Further, the processing SSP performed by executing the secure program is achieved by steps SS00 to SS09, and the processing NSP performed by executing the non-secure program is achieved by steps SN02 to SN05.

セキュアプログラムを実行することにより行われる処理SSP(ステップSS00〜SS09)は、図18で説明した処理SSP(ステップSS00〜SS09)と同じであるため、詳しい説明は省略する。また、図20において、ノンセキュアプログラムを実行することにより行われる処理NSPのうち、ステップSN02は、低速割り込み処理と記載しているが、図18で説明したステップSN00と同じであり、ステップSN03は、図18で説明したステップSN01と同じである。そのため、ステップSN02およびSN03についても、説明は省略する。   The process SSP (steps SS00 to SS09) performed by executing the secure program is the same as the process SSP (steps SS00 to SS09) described with reference to FIG. Further, in FIG. 20, of the processing NSP performed by executing the non-secure program, step SN02 is described as low-speed interrupt processing, but it is the same as step SN00 described in FIG. , It is the same as step SN01 explained in FIG. Therefore, the description of steps SN02 and SN03 is also omitted.

ステップSH00で、RTOS(セキュアプログラム)が動作を開始する(Start)。次に、ステップSH01で、割り込みが発生したものとする(割り込み発生)。次に、ステップSH10において、ステップSH01で受け付けた割り込みが、高速割り込みか否かの判定を行う(高速割り込み?)。この実施の形態4においては、マスク不可能な割り込みが、高速な割り込みに該当する。すなわち、ステップSH01において、マスク不可能な割り込みを受け付けた場合、ステップSH10において、高速な割り込みであると判定する。一方、ステップSH01において、マスク可能な割り込みを受け付けた場合、ステップSH10において、高速な割り込みではないと判定する。   At step SH00, the RTOS (secure program) starts operation (Start). Next, in step SH01, an interrupt occurs (an interrupt is generated). Next, in step SH10, it is determined whether the interrupt accepted in step SH01 is a high-speed interrupt (high-speed interrupt?). In the fourth embodiment, non-maskable interrupts correspond to high-speed interrupts. That is, when an unmaskable interrupt is accepted in step SH01, it is determined in step SH10 that the interrupt is a high-speed interrupt. On the other hand, when a maskable interrupt is accepted in step SH01, it is determined in step SH10 that the interrupt is not a high-speed interrupt.

ステップSH10において、高速な割り込みでないと判定した場合、次にステップSH02が実行される。ステップSH02において、割り込みフラグが、1にセットされる。割り込みフラグが1にセットされているか否かのチェック(判定)が、図18で説明したように、マイクロプロセッサCPUがセキュアプログラムを実行することにより、所定の周期で行われる。ステップSH02で、割り込みフラグが1にセットされると、図18で説明したように、セキュアプログラムを実行することにより行われる処理SSPにおいて、汎用レジスタR0〜Rnがクリアされる。汎用レジスタR0〜Rnがクリアされた後、ノンセキュアを実行することにより行われる処理NSPにおいて、低速割り込み処理(ステップSN02)およびRET命令(ステップSN03)が実行される。   If it is determined in step SH10 that the interrupt is not a high speed interrupt, step SH02 is next executed. At step SH02, the interrupt flag is set to 1. A check (determination) as to whether or not the interrupt flag is set to 1 is performed at a predetermined cycle as the microprocessor CPU executes the secure program as described in FIG. When the interrupt flag is set to 1 in step SH02, the general purpose registers R0 to Rn are cleared in the process SSP performed by executing the secure program as described in FIG. After general-purpose registers R0 to Rn are cleared, low speed interrupt processing (step SN02) and RET instruction (step SN03) are executed in processing NSP performed by executing non-secure.

ステップSH10において、高速な割り込みと判定した場合、次にステップSH03で、割り込み条件の判定(割り込み条件判定)をし、ステップSH04で、割り込みフラグをクリア(割り込みフラグクリア)する。割り込みフラグをクリアした後、第2スタックポインタ1603で指定されているスタック領域に、汎用レジスタR0〜Rnの値を退避する(汎用レジスタの値を退避)。   If it is determined in step SH10 that the interrupt is a high speed interrupt, then in step SH03, the interrupt condition is determined (interrupt condition determination), and in step SH04 the interrupt flag is cleared (interrupt flag clear). After clearing the interrupt flag, the values of the general purpose registers R0 to Rn are saved in the stack area designated by the second stack pointer 1603 (the values of the general purpose registers are saved).

汎用レジスタの値を退避した後、ステップSH11において、制御ユニット1600は、汎用レジスタクリア制御回路1900へ、汎用レジスタR0〜Rnをクリアするように指示する。この指示に応答して、汎用レジスタクリア制御回路1900は、汎用レジスタR0〜Rnをクリアする(汎用レジスタをクリア)。   After saving the value of the general purpose register, in step SH11, the control unit 1600 instructs the general purpose register clear control circuit 1900 to clear the general purpose registers R0 to Rn. In response to this instruction, general purpose register clear control circuit 1900 clears general purpose registers R0 to Rn (clears the general purpose register).

ステップSH11に続いて、ステップSH12において、使用するスタックポインタを、第2スタックポインタ1603から第1スタックポインタ1602へ切り替える(スタックポインタの切り替え)。続いて、ステップSH06で、割り込み処理へ分岐する(割り込み分岐)。   Following step SH11, the stack pointer to be used is switched from the second stack pointer 1603 to the first stack pointer 1602 in step SH12 (switching of the stack pointer). Then, at step SH06, the process branches to interrupt processing (interrupt branch).

割り込み分岐によって、次にノンセキュアプログラムへ分岐する。ノンセキュアプログラムによって、処理の内容が規定されたところの割り込み処理を、マイクロプロセッサCPUが、ステップSN04で実行し(高速割り込み処理)、ステップSN05で、マイクロプロセッサCPUは、リターン命令(RET)を実行する。   Next branch to the non-secure program by the interrupt branch. In step SN04, the microprocessor CPU executes interrupt processing in which the content of processing is defined by the non-secure program (high-speed interrupt processing), and in step SN05, the microprocessor CPU executes a return instruction (RET). Do.

リターン命令(RET)が実行されることにより、マイクロプロセッサCPUは、ステップSH13を実行する。ステップSH13では、使用するスタックポインタを、第1スタックポインタ1602から第2スタックポインタ1603へ切り替える(スタックポインタの切り替え)。   The microprocessor CPU executes step SH13 by executing the return instruction (RET). At step SH13, the stack pointer to be used is switched from the first stack pointer 1602 to the second stack pointer 1603 (switching of the stack pointer).

スタックポインタを第2スタックポインタ1603へ切り替えた後、ステップSH07で、第2スタックポインタ1603によって指定されているスタック領域から、ステップSH05で退避した汎用レジスタR0〜Rnの値を、汎用レジスタR0〜Rnへ戻す(汎用レジスタの値を復帰)。ステップSH14で、セキュアプログラムの実行が終了する(End)。   After switching the stack pointer to the second stack pointer 1603, at step SH07, the values of general purpose registers R0 to Rn saved at step SH05 from the stack area designated by the second stack pointer 1603 are compared with general purpose registers R0 to Rn. Return to (return general register value). At step SH14, execution of the secure program ends (End).

ステップSS05では、セキュアプログラムを実行することにより、マイクロプロセッサCPUが、汎用レジスタR0〜R6のそれぞれをクリアしている。これに対して、ステップSH11では、汎用レジスタクリア制御回路1900によって、汎用レジスタR0〜Rnをクリアしている。マイクロプロセッサCPUによって、例えば汎用レジスタR0〜Rnを1個ずつクリアするのに比べて、汎用レジスタクリア制御回路1900により汎用レジスタR0〜Rnをクリアする方が、高速にクリアすることが可能となる。そのため、高速な割り込みを受け付けたときには、短い応答時間で、高速割り込み処理SN04を実行することが可能となる。そのため、短い応答時間で、割り込み処理が実行されることを要求する用途にも、マイクロコンピュータLSIを適用することが可能となる。また、この場合でも、ノンセキュアプログラムを実行する前に、汎用レジスタR0〜Rnは、クリアされるため、セキュアデータが盗まれることを防ぐことが可能となる。   At step SS05, the microprocessor CPU clears each of the general purpose registers R0 to R6 by executing the secure program. On the other hand, at step SH11, the general purpose registers clear control circuit 1900 clears the general purpose registers R0 to Rn. The general purpose register clear control circuit 1900 can clear the general purpose registers R0 to Rn faster than the general purpose registers R0 to Rn, for example, by the microprocessor CPU. Therefore, when a high speed interrupt is received, it is possible to execute the high speed interrupt processing SN04 with a short response time. Therefore, the microcomputer LSI can be applied to an application requiring interrupt processing to be executed with a short response time. Also in this case, the general purpose registers R0 to Rn are cleared before executing the non-secure program, which makes it possible to prevent secure data from being stolen.

さらに、スタックポインタを、切り替えるようにしているため、セキュアプログラムにおいて、汎用レジスタを退避したスタック領域を、ノンセキュアプログラムにおいて把握することが困難となる。これにより、さらにセキュアデータが盗まれるのを防ぐことが可能となる。   Furthermore, since the stack pointer is switched, in the secure program, it is difficult to grasp the stack area in which the general-purpose register is saved in the non-secure program. This can further prevent the secure data from being stolen.

この実施の形態4によれば、RTOSのようなセキュアプログラムを書き込んだフラッシュメモリFRMを有するマイクロコンピュータLSIを購入したユーザーUSRは、マイクロコンピュータLSIを、モータ制御等の高速な割り込みを必要とする用途に使うことが可能となる。また、ユーザーUSRが作成したユーザープログラムによって、セキュアデータが盗まれるのを防ぐことが可能となり、マイクロコンピュータLSIを販売する販売者PRDのメリットも維持することが可能となる。   According to the fourth embodiment, a user USR who has purchased a microcomputer LSI having a flash memory FRM in which a secure program such as RTOS has been written uses the microcomputer LSI to require a high speed interrupt such as motor control. It can be used for Also, the user program created by the user USR makes it possible to prevent the secure data from being stolen, and it is also possible to maintain the merits of the seller PRD who sells the microcomputer LSI.

<付記>
本明細書には、複数の発明が開示されており、その内のいくつかは、請求の範囲に記載しているが、これ以外の発明も開示しており、その代表的なものを次に列記する。
<Supplementary Note>
Although a plurality of inventions are disclosed herein, some of which are described in the claims, other inventions are also disclosed, the representative ones of which are listed below. List.

(A)中央処理ユニットと、前記中央処理ユニットによって実行されるセキュアプログラムとノンセキュアプログラムを格納する不揮発性メモリとを備えた半導体装置であって、
前記中央処理ユニットは、互いに異なる複数の割り込みを受付可能で、割り込みがあったとき、割り込みに対応した割り込み処理を実行する中央処理ユニットであって、前記中央処理ユニットは、
プログラムに従って動作する制御ユニットと、
前記制御ユニットが動作するときに、情報を保持するために用いられる複数のレジスタと、
割り込みがあったとき、前記複数のレジスタの値を退避する領域を指定するスタックポインタと、
前記複数のレジスタに保持されている値をクリアするレジスタクリア制御回路と、
を備え、
前記中央処理ユニットは、前記複数の割り込みのうちの第1割り込みに応答して、前記スタックポインタにより指定されている領域に、前記複数のレジスタの値を退避した後、前記複数のレジスタのそれぞれをクリアし、前記第1割り込みに対応した所定の割り込み処理を実施し、
前記中央処理ユニットは、前記複数の割り込みのうち、前記第1割り込みとは異なる第2割り込みに応答して、前記スタックポインタにより指定されている領域に、前記複数のレジスタに保持されている値を退避した後、前記レジスタクリア制御回路によって、前記複数のレジスタをクリアし、前記第2割り込みに対応した所定の割り込み処理を実施する、半導体装置。
(A) A semiconductor device comprising: a central processing unit; and a non-volatile memory storing a non-secure program and a secure program executed by the central processing unit,
The central processing unit is a central processing unit capable of accepting a plurality of different interrupts and performing interrupt processing corresponding to the interrupt when there is an interrupt, wherein the central processing unit is:
A control unit that operates according to a program;
A plurality of registers used to hold information when the control unit operates;
A stack pointer specifying an area for saving the values of the plurality of registers when an interrupt occurs;
A register clear control circuit for clearing values held in the plurality of registers;
Equipped with
The central processing unit saves each of the plurality of registers after saving the values of the plurality of registers in the area designated by the stack pointer in response to the first one of the plurality of interrupts. Clear and execute predetermined interrupt processing corresponding to the first interrupt,
The central processing unit responds to a second interrupt different from the first interrupt among the plurality of interrupts, and stores the values held in the plurality of registers in the area designated by the stack pointer. A semiconductor device, wherein the plurality of registers are cleared by the register clear control circuit after evacuation and a predetermined interrupt process corresponding to the second interrupt is performed.

(B)前記(A)に記載の半導体装置において、
前記第1割り込みの発生は、前記セキュアプログラムによる監視によって、検出され、前記セキュアプログラムの実行により、前記スタックポインタにより指定されている領域への前記複数のレジスタの値の退避と、前記複数のレジスタのそれぞれのクリアとが行われ、
前記第2割り込みの発生に応答して、前記中央処理ユニットは、前記スタックポインタにより指定されている領域へ前記複数のレジスタの値を退避し、前記レジスタクリア制御回路によって前記複数のレジスタをクリアする、半導体装置。
(B) In the semiconductor device according to (A),
The generation of the first interrupt is detected by monitoring by the secure program, and execution of the secure program saves the values of the plurality of registers to the area designated by the stack pointer, and the plurality of registers. Each of the clear and done,
In response to the occurrence of the second interrupt, the central processing unit saves the values of the plurality of registers in the area designated by the stack pointer, and clears the plurality of registers by the register clear control circuit. , Semiconductor devices.

(C)前記(B)に記載の半導体装置において、
前記セキュアプログラムは、リアルタイムオペレーティングシステムである、半導体装置。
(C) In the semiconductor device according to (B),
The semiconductor device, wherein the secure program is a real time operating system.

(D)プログラムを実行する中央処理ユニットと、前記中央処理ユニットに接続された電気的に書き換え可能な不揮発性メモリとを内蔵した半導体装置を販売する半導体装置販売モデルであって、
前記不揮発性メモリには、オペレーティングシステムを構成するセキュアプログラムが格納され、格納されたセキュアプログラムの対価を含めた対価で、前記半導体装置は販売され、
購入した前記半導体装置において、前記オペレーティングシステム上で動作するプログラムが、前記書き換え可能な不揮発性メモリに書き込まれる、半導体装置販売モデル。
(D) A semiconductor device sales model for selling a semiconductor device including a central processing unit for executing a program and an electrically rewritable nonvolatile memory connected to the central processing unit,
A secure program constituting an operating system is stored in the non-volatile memory, and the semiconductor device is sold for a price including the price of the stored secure program,
In the purchased semiconductor device, a semiconductor device sales model in which a program operating on the operating system is written to the rewritable non-volatile memory.

(E)前記(D)に記載の半導体装置販売モデルにおいて、
購入した前記半導体装置において、ネットワークを介してダウンロードしたプログラムが、前記不揮発性メモリに書き込まれる、半導体装置販売モデル。
(E) In the semiconductor device sales model described in (D),
In the purchased semiconductor device, a semiconductor device sales model in which a program downloaded via a network is written to the non-volatile memory.

(F)前記(E)に記載の半導体装置販売モデルにおいて、
前記ダウンロードしたプログラムは、前記半導体装置を提供するものから提供される、半導体装置販売モデル。
(F) In the semiconductor device sales model described in (E),
The semiconductor device sales model, wherein the downloaded program is provided from those providing the semiconductor device.

(G)前記(F)に記載の半導体装置販売モデルにおいて、
前記半導体装置は、ライセンス管理ユニットを備え、前記半導体装置を販売する前に、前記ライセンス管理ユニットに、プリペイドで有料ソフトの対価に相当するライセンス情報が格納され、
購入した半導体装置において、ダウンロードしたプログラムが有料ソフトの場合、前記ライセンス管理部は、格納されているライセンス情報に相当する対価に到達するまで、ダウンロードしたプログラムが、前記不揮発性メモリに格納されるのを許可する、半導体装置販売モデル。
(G) In the semiconductor device sales model described in (F),
The semiconductor device includes a license management unit, and before selling the semiconductor device, license information that is prepaid and corresponds to a value for paid software is stored in the license management unit.
In the purchased semiconductor device, if the downloaded program is pay software, the license management unit stores the downloaded program in the non-volatile memory until the value corresponding to the stored license information is reached. Allows the semiconductor device sales model.

以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。   As mentioned above, although the invention made by the present inventor was concretely explained based on an embodiment, the present invention is not limited to the above-mentioned embodiment, and can be variously changed in the range which does not deviate from the gist. Needless to say.

CPU マイクロプロセッサ
FRM 不揮発性メモリ(フラッシュメモリ)
LSI マイクロコンピュータ
PRD 販売者
USR ユーザー
200 通信機能回路
201 暗号復号機能回路
202 フラッシュメモリ書き換え回路
203 揮発性メモリ
204 メモリプロテクションユニット
300 フェッチ開始アドレス監視回路
301 フェッチアドレス比較回路
303 メモリアクセス制御回路
700、704、705 比較器
703、1401 フリップフロップ回路
1307 不正アクセス検出回路
CPU microprocessor FRM non-volatile memory (flash memory)
LSI Microcomputer PRD Vendor USR User 200 Communication Function Circuit 201 Decryption Function Circuit 202 Flash Memory Rewriting Circuit 203 Volatile Memory 204 Memory Protection Unit 300 Fetch Start Address Monitoring Circuit 301 Fetch Address Comparison Circuit 303 Memory Access Control Circuit 700, 704, 705 Comparator 703, 1401 Flip-flop circuit 1307 Illegal access detection circuit

Claims (7)

中央処理ユニットと、前記中央処理ユニットによって実行されるセキュアプログラムとノンセキュアプログラムを格納する不揮発性メモリとを備えた半導体装置であって、
前記中央処理ユニットは、互いに異なる複数の割り込みを受付可能で、割り込みがあったとき、割り込みに対応した割り込み処理を実行する中央処理ユニットであって、前記中央処理ユニットは、
プログラムに従って動作する制御ユニットと、
前記制御ユニットが動作するときに、情報を保持するために用いられる複数のレジスタと、
割り込みがあったとき、前記複数のレジスタの値を退避する領域を指定するスタックポインタと、
前記複数のレジスタに保持されている値をクリアするレジスタクリア制御回路と、
を備え、
前記中央処理ユニットは、前記複数の割り込みのうちの第1割り込みに応答して、前記スタックポインタにより指定されている領域に、前記複数のレジスタの値を退避した後、前記複数のレジスタのそれぞれをクリアし、前記第1割り込みに対応した所定の割り込み処理を実施し、
前記中央処理ユニットは、前記複数の割り込みのうち、前記第1割り込みとは異なる第2割り込みに応答して、前記スタックポインタにより指定されている領域に、前記複数のレジスタに保持されている値を退避した後、前記レジスタクリア制御回路によって、前記複数のレジスタをクリアし、前記第2割り込みに対応した所定の割り込み処理を実施する、半導体装置。
What is claimed is: 1. A semiconductor device comprising: a central processing unit; and a non-volatile memory storing a non-secure program and a secure program executed by the central processing unit,
The central processing unit is a central processing unit capable of accepting a plurality of different interrupts and performing interrupt processing corresponding to the interrupt when there is an interrupt, wherein the central processing unit is:
A control unit that operates according to a program;
A plurality of registers used to hold information when the control unit operates;
A stack pointer specifying an area for saving the values of the plurality of registers when an interrupt occurs;
A register clear control circuit for clearing values held in the plurality of registers;
Equipped with
The central processing unit saves each of the plurality of registers after saving the values of the plurality of registers in the area designated by the stack pointer in response to the first one of the plurality of interrupts. Clear and execute predetermined interrupt processing corresponding to the first interrupt,
The central processing unit responds to a second interrupt different from the first interrupt among the plurality of interrupts, and stores the values held in the plurality of registers in the area designated by the stack pointer. A semiconductor device, wherein the plurality of registers are cleared by the register clear control circuit after evacuation and a predetermined interrupt process corresponding to the second interrupt is performed.
請求項1に記載の半導体装置において、
前記第1割り込みの発生は、前記セキュアプログラムによる監視によって、検出され、前記セキュアプログラムの実行により、前記スタックポインタにより指定されている領域への前記複数のレジスタの値の退避と、前記複数のレジスタのそれぞれのクリアとが行われ、
前記第2割り込みの発生に応答して、前記中央処理ユニットは、前記スタックポインタにより指定されている領域へ前記複数のレジスタの値を退避し、前記レジスタクリア制御回路によって前記複数のレジスタをクリアする、半導体装置。
In the semiconductor device according to claim 1,
The generation of the first interrupt is detected by monitoring by the secure program, and execution of the secure program saves the values of the plurality of registers to the area designated by the stack pointer, and the plurality of registers. Each of the clear and done,
In response to the occurrence of the second interrupt, the central processing unit saves the values of the plurality of registers in the area designated by the stack pointer, and clears the plurality of registers by the register clear control circuit. , Semiconductor devices.
請求項2に記載の半導体装置において、
前記セキュアプログラムは、リアルタイムオペレーティングシステムである、半導体装置。
In the semiconductor device according to claim 2,
The semiconductor device, wherein the secure program is a real time operating system.
プログラムを実行する中央処理ユニットと、前記中央処理ユニットに接続された電気的に書き換え可能な不揮発性メモリとを内蔵した半導体装置を販売する半導体装置販売モデルであって、
前記不揮発性メモリには、オペレーティングシステムを構成するセキュアプログラムが格納され、格納されたセキュアプログラムの対価を含めた対価で、前記半導体装置は販売され、
購入した前記半導体装置において、前記オペレーティングシステム上で動作するプログラムが、前記書き換え可能な不揮発性メモリに書き込まれる、半導体装置販売モデル。
A semiconductor device sales model for selling a semiconductor device including a central processing unit for executing a program and an electrically rewritable non-volatile memory connected to the central processing unit,
A secure program constituting an operating system is stored in the non-volatile memory, and the semiconductor device is sold for a price including the price of the stored secure program,
In the purchased semiconductor device, a semiconductor device sales model in which a program operating on the operating system is written to the rewritable non-volatile memory.
請求項4に記載の半導体装置販売モデルにおいて、
購入した前記半導体装置において、ネットワークを介してダウンロードしたプログラムが、前記不揮発性メモリに書き込まれる、半導体装置販売モデル。
In the semiconductor device sales model according to claim 4,
In the purchased semiconductor device, a semiconductor device sales model in which a program downloaded via a network is written to the non-volatile memory.
請求項5に記載の半導体装置販売モデルにおいて、
前記ダウンロードしたプログラムは、前記半導体装置を提供するものから提供される、半導体装置販売モデル。
In the semiconductor device sales model according to claim 5,
The semiconductor device sales model, wherein the downloaded program is provided from those providing the semiconductor device.
請求項6に記載の半導体装置販売モデルにおいて、
前記半導体装置は、ライセンス管理ユニットを備え、前記半導体装置を販売する前に、前記ライセンス管理ユニットに、プリペイドで有料ソフトの対価に相当するライセンス情報が格納され、
購入した半導体装置において、ダウンロードしたプログラムが有料ソフトの場合、前記ライセンス管理部は、格納されているライセンス情報に相当する対価に到達するまで、ダウンロードしたプログラムが、前記不揮発性メモリに格納されるのを許可する、半導体装置販売モデル。
In the semiconductor device sales model according to claim 6,
The semiconductor device includes a license management unit, and before selling the semiconductor device, license information that is prepaid and corresponds to a value for paid software is stored in the license management unit.
In the purchased semiconductor device, if the downloaded program is pay software, the license management unit stores the downloaded program in the non-volatile memory until the value corresponding to the stored license information is reached. Allows the semiconductor device sales model.
JP2019017617A 2019-02-04 2019-02-04 Semiconductor device and semiconductor device sales model Pending JP2019096338A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019017617A JP2019096338A (en) 2019-02-04 2019-02-04 Semiconductor device and semiconductor device sales model

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019017617A JP2019096338A (en) 2019-02-04 2019-02-04 Semiconductor device and semiconductor device sales model

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015182140A Division JP6476098B2 (en) 2015-09-15 2015-09-15 Semiconductor device

Publications (1)

Publication Number Publication Date
JP2019096338A true JP2019096338A (en) 2019-06-20

Family

ID=66971901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019017617A Pending JP2019096338A (en) 2019-02-04 2019-02-04 Semiconductor device and semiconductor device sales model

Country Status (1)

Country Link
JP (1) JP2019096338A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550619B2 (en) 2020-09-23 2023-01-10 Kabushiki Kaisha Toshiba Information processing device and processing method

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160656A (en) * 1993-12-13 1995-06-23 Nippon Telegr & Teleph Corp <Ntt> External interruption control method
JP2001266026A (en) * 2000-03-15 2001-09-28 Ntt Data Corp Prepaid system
JP2005269019A (en) * 2004-03-17 2005-09-29 Toshiba Corp Semiconductor device, communication terminal, and communication service system
US20110019774A1 (en) * 2009-07-22 2011-01-27 Fujitsu Limited Wireless communication apparatus and wireless communication method
JP2011150457A (en) * 2010-01-20 2011-08-04 Sony Corp Information processing apparatus and memory access control method
WO2013117896A1 (en) * 2012-02-08 2013-08-15 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
JP2014191509A (en) * 2013-03-26 2014-10-06 Toshiba Corp Information processing device, information processing program

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160656A (en) * 1993-12-13 1995-06-23 Nippon Telegr & Teleph Corp <Ntt> External interruption control method
JP2001266026A (en) * 2000-03-15 2001-09-28 Ntt Data Corp Prepaid system
JP2005269019A (en) * 2004-03-17 2005-09-29 Toshiba Corp Semiconductor device, communication terminal, and communication service system
US20110019774A1 (en) * 2009-07-22 2011-01-27 Fujitsu Limited Wireless communication apparatus and wireless communication method
JP2011029780A (en) * 2009-07-22 2011-02-10 Fujitsu Ltd Wireless communication apparatus, wireless communication method and wireless communication program
JP2011150457A (en) * 2010-01-20 2011-08-04 Sony Corp Information processing apparatus and memory access control method
WO2013117896A1 (en) * 2012-02-08 2013-08-15 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
JP2015510189A (en) * 2012-02-08 2015-04-02 エイアールエム リミテッド Keeping secure data isolated from non-secure access when switching between domains
JP2014191509A (en) * 2013-03-26 2014-10-06 Toshiba Corp Information processing device, information processing program

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
岸田 経哉: "ICカードアプリケーションダウンロードシステムの開発と実証実験の実施", NTT技術ジャーナル VOL.13 NO.11, vol. 第13巻, JPN6019049844, 1 November 2001 (2001-11-01), pages 91 - 93, ISSN: 0004291435 *
森山 明子: "基礎講座 知っておきたいICカードの知識 第2回", 月刊バーコード 第15巻 第5号, vol. 第15巻, JPN6019049843, 2 April 2002 (2002-04-02), JP, pages 47 - 51, ISSN: 0004291434 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550619B2 (en) 2020-09-23 2023-01-10 Kabushiki Kaisha Toshiba Information processing device and processing method

Similar Documents

Publication Publication Date Title
JP6476098B2 (en) Semiconductor device
US9836609B2 (en) Event-based apparatus and method for securing bios in a trusted computing system during execution
US9183394B2 (en) Secure BIOS tamper protection mechanism
EP2874091B1 (en) Partition-based apparatus and method for securing bios in a trusted computing system during execution
EP2874092B1 (en) Recurrent BIOS verification with embedded encrypted hash
JP2005018770A (en) Security architecture for system-on-chip
WO2016176126A1 (en) Secure access in a microcontroller system
KR20190085387A (en) Semiconductor device and method for operating semiconductor device
US9779242B2 (en) Programmable secure bios mechanism in a trusted computing system
US9798880B2 (en) Fuse-enabled secure bios mechanism with override feature
US10049217B2 (en) Event-based apparatus and method for securing bios in a trusted computing system during execution
US9779243B2 (en) Fuse-enabled secure BIOS mechanism in a trusted computing system
JP2019096338A (en) Semiconductor device and semiconductor device sales model
EP3316168B1 (en) Fuse-enabled secure bios mechanism in a trusted computing system
US10055588B2 (en) Event-based apparatus and method for securing BIOS in a trusted computing system during execution
JP6462540B2 (en) Driver device, information processing system, program, and method
EP3316167B1 (en) Programmable secure bios mechanism in a trusted computing system
US9767288B2 (en) JTAG-based secure BIOS mechanism in a trusted computing system
EP3316170B1 (en) Fuse-enabled secure bios mechanism with override feature
EP3316169B1 (en) Jtag-based secure bios mechanism in a trusted computing system
US10095868B2 (en) Event-based apparatus and method for securing bios in a trusted computing system during execution

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191224

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200623