JP2019096338A - Semiconductor device and semiconductor device sales model - Google Patents
Semiconductor device and semiconductor device sales model Download PDFInfo
- 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
Links
- 239000004065 semiconductor Substances 0.000 title claims abstract description 89
- 230000015654 memory Effects 0.000 claims abstract description 396
- 238000012545 processing Methods 0.000 claims description 76
- 238000000034 method Methods 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 28
- 238000012544 monitoring process Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 12
- 230000006870 function Effects 0.000 description 36
- 238000010586 diagram Methods 0.000 description 27
- 238000001514 detection method Methods 0.000 description 26
- 101000999079 Homo sapiens Radiation-inducible immediate-early gene IEX-1 Proteins 0.000 description 9
- 101000879840 Homo sapiens Serglycin Proteins 0.000 description 9
- 102100030368 Phospholipid phosphatase-related protein type 4 Human genes 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000007547 defect Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 101000818014 Homo sapiens Ferroptosis suppressor protein 1 Proteins 0.000 description 1
- 101001123334 Homo sapiens Proteoglycan 3 Proteins 0.000 description 1
- 102100030288 Phospholipid phosphatase-related protein type 1 Human genes 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000003313 weakening effect Effects 0.000 description 1
Images
Landscapes
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
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.
本発明者らは、半導体装置を販売する新たなビジネスモデルを考えた。この新たな半導体装置販売モデルについては、後で詳しく説明するが、ここでは解決しようとする課題を説明するために、この新たな半導体装置販売モデルの概要を説明しておく。 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.
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部分には原則として同一の符号を付し、その繰り返しの説明は、原則として省略する。 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,
販売者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
例えばフラッシュメモリ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
その後、マイクロプロセッサCPUは、揮発性メモリ203に格納されている暗号化されていないプログラムを、バス205を介して、フラッシュ書き換え回路202へ転送する。フラッシュ書き換え回路202は、供給された暗号化されていないプログラムを、フラッシュメモリFRMへ書き込む。これにより、例えば、バージョンアップしたプログラムが、フラッシュメモリFRMに格納されることになる。マイクロプロセッサCPUは、フラッシュメモリFRMに格納されているバージョンアップしたプログラムを読み出して、実行することになる。
Thereafter, the microprocessor CPU transfers the unencrypted program stored in the
上記した動作の説明から理解されるように、プログラムをダウンロードして、フラッシュメモリ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 /
この実施の形態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
なお、図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
プログラムは、複数の命令によって構成される。マイクロプロセッサ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
この実施の形態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
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
セキュリティを担保することが必要とされない任意のプログラム(ノンセキュアプログラム)、例えば無償プログラムおよびユーザープログラム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
ノンセキュアプログラムが書き込まれるフラッシュメモリ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
同様に、ノンセキュアデータが格納される揮発性メモリ203のデータ領域を、第1データ領域と見なした場合、セキュアデータが格納される揮発性メモリ203のデータ領域を、第2データ領域と見なすことができる。このように見なした場合も、第2データ領域は、セキュアデータ情報305によって特定されることになる。一方、セキュアデータ情報305によって特定されていない揮発性メモリ203のデータ領域が、第1データ領域となる。勿論、ノンセキュアデータ情報によって、揮発性メモリ203の第1データ領域を特定するようにしてもよい。
Similarly, when the data area of
セキュアアドレス情報304とセキュアデータ情報305は、バス205ではなく、図2に示した信号配線206を介して、フラッシュメモリFRMからメモリプロテクションユニット204へ直接的に供給される。
The
メモリプロテクションユニット204は、フェッチ開始アドレス監視回路300、フェッチアドレス比較回路301およびメモリアクセス制御回路303を備えている。フェッチ開始アドレス監視回路300およびフェッチアドレス比較回路301のそれぞれには、マイクロプロセッサCPUからのPCアドレス306およびフラッシュメモリFRMからのセキュアアドレス情報304が供給される。フェッチ開始アドレス監視回路300およびフェッチアドレス比較回路301については、後で図7等を用いて一例を説明するので、ここでは概要を説明する。
The
フェッチアドレス比較回路301は、PCアドレス306とセキュアアドレス情報304とを比較し、PCアドレス306が、セキュアアドレス情報304によって指定されている第2プログラム領域内を指定しているのか否かを示す選択信号を出力する。この実施の形態1においては、セキュアアドレス情報304によって指定されている第2プログラム領域を除く、フラッシュメモリFRMのプログラム領域が、ノンセキュアプログラム領域とされている。そのため、フェッチアドレス比較回路301から出力される選択信号は、PCアドレス306が、セキュアプログラム領域(第2プログラム領域)内を指定しているとき、セキュアプログラム領域を指定するセキュアプログラム領域信号と見なすことができ、PCアドレス306がノンセキュアプログラム領域(第1プログラム領域)内を指定しているとき、ノンセキュアプログラム領域を指定するノンセキュアプログラム領域信号と見なすことができる。
The fetch
フェッチアドレス比較回路301から出力される選択信号が、例えばセキュアプログラム領域を示しているとき、セキュリティが担保されるように、マイクロコンピュータLSIを構成することにより、セキュアプログラムが盗まれるのを防ぐことが可能となる。
When the selection signal output from the fetch
セキュアアドレス情報304は、例えば予め固定の値に設定し、変更不可能にしておくことが考えられる。この場合、フラッシュメモリFRMに格納するセキュアプログラムが変更になったとき、あるいはマイクロコンピュータLSIを、ユーザーUSRが購入した後、セキュアプログラムを変更するときに、セキュアプログラム領域を変更することが困難になる。セキュアプログラム領域を変更することができないと、セキュアプログラムのサイズが大きくなった場合等で、セキュリティを担保することが困難になる。
The
例えば、ユーザーUSRが、マイクロコンピュータLSIを購入した後で、セキュアアドレス情報304を変更することが可能となるようにするためには、セキュアアドレス情報304をレジスタ等の揮発性メモリに格納するようにすることが考えられる。この場合、マイクロコンピュータLSI内のマイクロプロセッサCPUを、ユーザーUSRが操作することができなければ、セキュアアドレス情報304を格納したレジスタをユーザーUSRが操作することは困難である。その結果、セキュリティを担保しながら、セキュアプログラム領域を変更することが可能となる。
For example, in order to enable the user USR to change the
しかしながら、この実施の形態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
この実施の形態1では、セキュアアドレス情報304およびセキュアデータ情報305は、販売者PRDが、マイクロコンピュータLSIを販売する前に、電気的に書き換え可能なフラッシュメモリFRMに書き込む。これにより、セキュアプログラムに対応したセキュアアドレス情報304およびセキュアデータ情報305を、フラッシュメモリFRMに書き込むことが可能となる。また、販売者PRDは、販売後も必要に応じて、セキュアアドレス情報304およびセキュアデータ情報305を、変更することが可能となる。フラッシュメモリFRMに格納されたセキュアアドレス情報304およびセキュアデータ情報305は、ユーザーUSRの作成したソフトウェア(ノンセキュアプログラム)によって変更されないため、セキュリティを担保することも可能である。
In the first embodiment, the
また、この実施の形態1においては、バス205とは異なる信号配線206によって、フラッシュメモリFRMからメモリプロテクションユニット204へ、セキュアアドレス情報304およびセキュアデータ情報305が供給される。これにより、ユーザーUSRがマイクロプロセッサCPUを操作しても、セキュアアドレス情報304およびセキュアデータ情報305が、ユーザーUSRによって読み出されるのを防ぐことが可能となる。
In the first embodiment, the
フェッチ開始アドレス監視回路300は、セキュアアドレス情報304、PCアドレス306およびフェッチアドレス比較回路301からの選択信号を受けて、セキュアデータアクセス許可信号302を出力する。
Fetch start
この実施の形態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
後で図7等を用いて詳しく説明するが、フェッチ開始アドレス監視回路300は、ノンセキュアプログラムから、セキュアプログラムへ分岐する際に、分岐先アドレスが、フェッチを許可する分岐許可領域(第1領域)内を指定している否かを判定する。分岐許可領域を指定していれば、セキュアデータアクセス許可信号302によって、マイクロプロセッサCPUが、例えばフラッシュメモリFRM内のセキュアプログラム領域へアクセスするのを許可する。これにより、ノンセキュアプログラムからセキュアプログラムへ分岐する際のアタックに対する保護が行われる。
As will be described in detail later with reference to FIG. 7 and the like, the fetch start
メモリアクセス制御回路303は、フラッシュメモリFRMからのセキュアデータ情報305、セキュアデータアクセス許可信号302、PCアドレス306および入出力データ307を受けて、フラッシュメモリFRMおよび揮発性メモリ203に対するアクセス信号308を出力する。すなわち、メモリアクセス制御回路303は、セキュアデータアクセス許可信号302によって、メモリへのアクセスが許可されている場合、PCアドレス306に対応したアドレス信号を、メモリ(フラッシュメモリFRM、揮発性メモリ203)へ出力し、このアドレス信号によって指定されているメモリ内のアドレスとマイクロプロセッサCPUとの間でのデータ307の送受信を許可する。これに対して、セキュアデータアクセス許可信号302が、メモリへのアクセスを禁止している場合、メモリアクセス制御回路303は、メモリとマイクロプロセッサCPUとの間のデータ307の送受信を禁止する。
The memory
<アタック例>
図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
この実施の形態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
このセキュアアドレス情報304によって、フラッシュメモリFRMの領域(空間)は、ノンセキュアプログラムが格納されるノンセキュアプログラム領域と、セキュアプログラムが格納されるセキュアプログラム領域に分けられている。また、揮発性メモリ203の領域(空間)は、セキュアデータ情報305によって、ノンセキュアデータが格納されるノンセキュアデータ領域とセキュアデータが格納されるセキュアデータ領域に分けられている。
The area (space) of the flash memory FRM is divided by the
ノンセキュアプログラムもセキュアプログラムも、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アドレス306が、セキュアプログラム領域外であるノンセキュアプログラム領域内を指定している場合、フェッチアドレス比較回路301から出力される選択信号は、ノンセキュアプログラム領域を指定するノンセキュアプログラム領域信号となる。メモリアクセス制御回路303は、選択信号がノンセキュアプログラム領域信号のとき、マイクロプロセッサCPUが、ノンセキュアデータ領域に対してアクセスすることを許可し、セキュアデータ領域に対してアクセスすることを禁止する。すなわち、この場合には、PCアドレス306が、ノンセキュアデータ領域内を指定しているとき、データ307の送受信が許可され、PCアドレス306が、セキュアデータ領域内を指定しているとき、データ307の送受信が禁止される。これにより、図4に示すように、ノンセキュアプログラム領域に配置されたノンセキュアプログラムからは、ノンセキュアデータ領域に対してのアクセスが許可(アクセス許可と記載)され、セキュアデータ領域に対してのアクセスは禁止(アクセス禁止と記載)されることになる。
On the other hand, when the
セキュアプログラム領域に配置されたセキュアプログラムに、セキュリティホールが存在する場合、ノンセキュアプログラム領域に、ハッキングプログラムを配置し、ハッキングプログラムを、マイクロプロセッサ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
<セキュリティホール例>
図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
サブルーチンにおいては、開始アドレスによって指定されているアドレスに格納されている命令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
このようにメインルーチンからサブルーチンへ分岐する際には、所定の開始アドレスへ分岐することにより、所定の処理が実行されることになる。 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
ハッキングプログラムにおいて、特定のレジスタ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
このようなセキュリティホールは、多数存在することが考えられ、全てのセキュリティホールを無くすことは困難である。 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
図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
ノンセキュアプログラム領域に格納されたノンセキュアプログラムから、セキュアプログラム領域に格納されたセキュアプログラムを呼び出す際、フェッチ開始アドレス監視回路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
ハッキングプログラムではないノンセキュアプログラムが、セキュアプログラムを呼び出す場合には、分岐許可領域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
図3に示したセキュアアドレス情報304は、セキュアプログラムを格納するセキュアプログラム領域の上限アドレスを示すセキュアプログラム上限アドレス304−U(上限アドレス情報)と、セキュアプログラム領域の下限アドレスを示すセキュアプログラム下限アドレス304−D(下限アドレス情報)と、を含んでいる。このセキュアプログラム上限アドレス304−Uとセキュアプログラム下限アドレス304−Dとによって指定されたフラッシュメモリFRMの領域が、セキュアプログラムを格納するセキュアプログラム領域(第2プログラム領域)となる。言い換えるならば、セキュアプログラムを書き込んだフラッシュメモリFRMのセキュアプログラム領域を、セキュアプログラム上限アドレス304−Uとセキュアプログラム下限アドレス304−Dによって特定する。
The
この実施の形態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
フェッチアドレス比較回路301は、比較器704、705、2入力アンド回路706(第1論理回路)およびインバータ回路708(第1論理回路)を備えている。
The fetch
比較器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
比較器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
比較器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
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アドレス306の値が、セキュアプログラム上限アドレス304−Uの値を超えているとき、またはセキュアプログラム下限アドレス304−Dの値未満のときには、2入力アンド回路706の出力信号707はロウレベルとなり、インバータ回路708の出力信号709は、ハイレベルとなる。すなわち、PCアドレス306によって表されるアドレスが、セキュアプログラム領域以外を指定しているときに、出力信号707はロウレベルとなり、出力信号709はハイレベルとなる。
On the other hand, when the value of the
そのため、出力信号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
比較器704、705、2入力アンド回路706およびインバータ回路708によって、第1比較ユニットが構成されていると見なすことができる。この場合、第1比較ユニットによって形成されるセキュアプログラム領域信号707または/およびノンセキュアプログラム領域信号709(第1比較出力)を監視することによって、PCアドレスカウンタが、セキュアプログラム領域を指定しているのか、あるいはノンセキュアプログラム領域を指定しているのを判定することが可能である。
The
フェッチ開始アドレス監視回路300は、比較器700、2入力アンド回路701およびフリップフロップ回路703を備えている。
The fetch start
比較器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
比較結果信号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
フリップフロップ回路703は、セット端子(set)、クリア端子(clear)および出力端子(Q)を備えており、セット端子にハイレベルが供給されることにより、出力端子がハイレベルとなる。出力端子のハイレベルは、クリア端子にハイレベルが供給されるまで維持(保持)される。クリア端子にハイレベルが供給されることにより、出力端子はロウレベルへ変化する。
The
2入力アンド回路701の出力信号であるセキュアプログラム分岐許可領域信号702が、フリップフロップ回路703のセット端子(set)に供給され、前記したインバータ回路708の出力信号、すなわちノンセキュアプログラム領域信号709が、フリップフロップ回路703のクリア端子(clear)に供給される。このフリップフロップ回路703の出力端子(Q)から出力される信号が、セキュアデータアクセス許可信号302として、図3に示したメモリアクセス制御回路303へ供給される。
The secure program branch
セキュアプログラム上限アドレス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
セキュアプログラムは、セキュアプログラム領域内に配置されるが、配置の際に、上限アドレス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アドレス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アドレス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
メモリアクセス制御回路303は、セキュアデータアクセス許可信号302が、ハイレベルとなることにより、マイクロプロセッサCPUがメモリをアクセスするのを許可する。すなわち、メモリアクセス制御回路303は、このときのPCアドレス306を、メモリへ供給し、メモリとマイクロプロセッサCPUとの間でデータの送受信が可能となるようにする。そのため、セキュアプログラム分岐許可領域信号702がハイレベルとなることにより、マイクロプロセッサCPUからのPCアドレス306が、メモリに供給され、メモリとの間でデータの送受信が可能とされる。
The memory
一方、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
メモリアクセス制御回路303は、セキュアデータアクセス許可信号302がロウレベルのとき、マイクロプロセッサCPUからメモリへのアクセスを禁止する。すなわち、PCアドレス306が、メモリへ伝達されるのを禁止する。これにより、マイクロプロセッサCPUとメモリとの間のデータの送受信を禁止されることになる。
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
これに対して、ノンセキュアプログラムが、例えばハッキングプログラムの場合、ハッキングプログラムからセキュアプログラムへ分岐する際、ハッキングプログラムにおいて、マイクロプロセッサ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
セキュアプログラム分岐許可領域信号702およびノンセキュアプログラム領域信号709がロウレベルとなることによって、フリップフロップ回路703の出力端子(Q)の電圧は、以前の電圧が維持される。ノンセキュアプログラムからの分岐であるため、以前の状態はノンセキュアプログラムを実行していたときの状態となる。ノンセキュアプログラムを実行していたときには、ノンセキュアプログラム領域信号709が、ハイレベルとなる。そのため、以前の状態では、フリップフロップ回路703の出力端子(Q)は、ロウレベルである。その結果、ハッキングプログラムにおいて、分岐禁止領域BPAへ分岐しようとした場合には、ロウレベルのセキュアデータアクセス許可信号302が継続して出力されることになる。メモリアクセス制御回路303は、セキュアデータアクセス許可信号302が継続してロウレベルとなることにより、マイクロプロセッサCPUからメモリ内の分岐禁止領域へのアクセスが禁止される。
By setting the secure program branch
この実施の形態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
この実施の形態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-
ここでは、3個の比較器700、704および705を用いる例を示したが、これに限定されるものではない。例えば、フェッチアドレス比較回路301とフェッチ開始アドレス監視回路300のそれぞれに、2個の比較器を用いるようにしてもよい。この場合、フェッチ開始アドレス監視回路300に、比較器704と同様な比較器を第4の比較器として設けるようにすればよい。第4の比較器で比較する上限アドレスを比較器704で比較する上限アドレスとは異なるアドレスにすることにより、分岐許可領域BAAを任意に設定できるようにしてもよい。
Although an example using three
しかしながら、フェッチアドレス比較回路301およびフェッチ開始アドレス監視回路300において、PCアドレス306と比較するアドレスとして、上限アドレス304−Uまたは下限アドレス304−Dを共通とすることにより、比較器の個数を低減することが可能となる。この場合、上限アドレス304−U(または下限アドレス304−D)を基準として、許可アドレス情報によって分岐許可領域BAAを定めればよい。この実施の形態1では、上限アドレス304−Uを基準として、許可アドレス情報が−4とされ、分岐許可領域BAAの下限アドレスが、(上限アドレス−4)と定められている。
However, in the fetch
<メモリプロテクションユニットの動作>
次に、ノンセキュアプログラムからセキュアプログラムへ分岐するときの動作を、図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
時刻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
ノンセキュアプログラム領域信号709がハイレベルとなっているため、フリップフロップ回路703のクリア端子(clear)にハイレベルが供給されることになる。フリップフロップ回路703のセット端子(set)にはロウレベルが供給されているが、クリア端子にハイレベルが供給されているため、セキュアデータアクセス許可信号302はロウレベルとなる。
Since the non-secure
時刻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
セキュアプログラム分岐許可領域信号702がハイレベルとなることにより、フリップフロップ回路703の出力端子(Q)はハイレベルとなる。このとき、フリップフロップ回路703のクリア端子にはロウレベルが供給されているため、フリップフロップ回路703は、ハイレベルを出力する。これにより、セキュアデータアクセス許可信号302はハイレベルへ変化する(図8(D))。セキュアデータアクセス許可信号302がハイレベルとなることにより、メモリアクセス制御回路303(図3)は、マイクロプロセッサCPUからメモリへのアクセスを許可する。
The output terminal (Q) of the
時刻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
これらの命令は、セキュアプログラム領域に配置されており、分岐禁止領域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
時刻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
時刻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
フリップフロップ回路703に注目して述べると、マイクロプロセッサCPUからのアドレス(PCアドレス306)が、ノンセキュアプログラム領域を示すまでは、その出力端子(Q)はハイレベル(所定の状態)に維持され、メモリへのアクセスが許可されることになる。
Focusing on the
このようにして、ノンセキュアプログラムから、セキュアプログラムへ分岐して、セキュアプログラムを実行することが可能となる。すなわち、ノンセキュアプログラムから、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
時刻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
この分岐先アドレスは、分岐禁止領域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
セキュアプログラム分岐許可領域信号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
時刻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
セキュアデータアクセス許可信号302がロウレベルを維持するため、時刻t1から時刻t2の期間においても、マイクロプロセッサCPUによるセキュアプログラム領域およびセキュアデータ領域へのアクセスは、メモリアクセス制御回路303によって禁止されることになる。
Since the secure data
図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
ノンセキュアプログラム領域信号709が、ハイレベルとなることによって、フリップフロップ回路703は、出力端子(Q)をロウレベルにする。時刻t2まで、出力端子(Q)はロウレベルであったため、フリップフロップ回路703は、出力端子(Q)から継続してロウレベルを出力すると見なすことができる。すなわち、セキュアデータアクセス許可信号302は、時刻t2以降も、ロウレベルとなる。
When the non-secure
メモリアクセス制御回路303は、セキュアデータアクセス許可信号302がロウレベルとなっているが、PCアドレス306が、ノンセキュアプログラム領域内を指定しているため、マイクロプロセッサCPUによるノンセキュアプログラム領域およびノンセキュアデータ領域へのアクセスを許可する。
In the memory
その結果、ノンセキュアプログラムに関する命令は実行することが可能となる。勿論、ハッキングプログラムにおいて、セキュアプログラムへの分岐命令の後に、ノンセキュアプログラムの命令が配置されている場合、セキュアプログラムへの分岐命令の後に配置されているノンセキュアプログラムの命令を実行しないように制限してもよい。例えばノンセキュアプログラム領域信号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
このように、ハッキングプログラムによって、セキュアデータ(セキュアプログラムを含む)へのアクセスが禁止されるため、ハッキングプログラムによるアタックから、セキュアデータを保護することが可能となる。ここでは、ハッキングプログラムを例にして説明したが、ノンセキュアプログラムの不備によって、誤ってセキュアデータが読み出されてしまうのも防ぐことが可能となる。 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
メモリプロテクションユニット204は、分岐元アドレスを、3個に分けて制御する。すなわち、分岐するとき、分岐元が「(1)ノンセキュアプログラム領域」であるか、「(2)セキュアプログラム分岐許可領域」であるか、あるいは「(3)セキュアプログラム分岐禁止領域」であるかに分けて制御する。言い換えるなら、分岐を実行するとき、分岐命令が「(1)ノンセキュアプログラム領域」に配置されているか、「(2)セキュアプログラム分岐許可領域」に配置されているか、あるいは「(3)セキュアプログラム分岐禁止領域」に配置されているかに分けて制御する。なお、図10において、セキュアプログラム分岐許可領域とは、分岐許可領域BAAを表しており、セキュアプログラム分岐禁止領域とは、分岐禁止領域BPAを表している。
The
メモリプロテクションユニット204は、図8および図9に示した時刻t0のとき、「(1)ノンセキュアプログラム領域」の制御を行う。また、メモリプロテクションユニット204は、図8において時刻t0から時刻t2の期間は、「(2)セキュアプログラム分岐許可領域」および「(3)セキュアプログラム分岐禁止領域」の制御を行う。
The
メモリプロテクションユニット204は、列BSAに示した分岐元アドレスが、「ノンセキュアプログラム領域」、「セキュアプログラム分岐許可領域」および「セキュアプログラム分岐禁止領域」のそれぞれに対して、列BDAに示した分岐先アドレスも、3個に分けて制御する。すなわち、分岐するとき、分岐先が、「ノンセキュアプログラム領域」であるか、「セキュアプログラム分岐許可領域」であるか、あるいは「セキュアプログラム分岐禁止領域」に分けて制御する。この場合も、分岐命令を実行した際の分岐先の命令が、「ノンセキュアプログラム領域」に配置されているか、「セキュアプログラム分岐許可領域」に配置されているか、あるいは「セキュアプログラム分岐禁止領域」に配置されているかに分けて制御されていると見なすことができる。
The
列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
メモリプロテクションユニット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
次に、図7から図9を用いて、図10に示したメモリプロテクションユニット204の動作を説明する。
Next, the operation of the
ユーザープログラム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
次に、メモリプロテクションユニット204内のメモリアクセス制御回路303は、図7、図8および図9で説明したノンセキュアプログラム領域信号709が、ロウレベルか否かを判定する。ノンセキュアプログラム領域信号709がハイレベルであれば、分岐先は、「ノンセキュアプログラム領域」であると判定し、メモリアクセス制御回路303は、マイクロプロセッサCPUが、セキュアデータ領域へアクセスするのを禁止する(列BOPにおいて「セキュアデータアクセス禁止」)。この場合、図10には記載していないが、メモリアクセス制御回路303は、マイクロプロセッサCPUによって、ノンセキュアデータ領域へのアクセスは許可する。これにより、ユーザープログラムにおいて、所定のノンセキュアプログラムから別のノンセキュアプログラムへの分岐が可能となる。なお、図3および図7では、図面が複雑になるのを避けるために、ノンセキュアプログラム領域信号709を、メモリアクセス制御回路303へ供給する信号配線は省略されている。
Next, the memory
ノンセキュアプログラム領域信号709がロウレベルとなっている場合、図8および図9の時刻t0で説明したように、セキュアプログラム分岐許可領域信号702の電圧(ハイレベルまたはロウレベル)に従って、セキュアデータアクセス許可信号302は、ハイレベルまたはロウレベルとなる。メモリアクセス制御回路303は、ノンセキュアプログラム領域信号709がロウレベルで、図8に示すようにセキュアデータアクセス許可信号302がハイレベルであれば、分岐先アドレス(列BDA)は、「セキュアプログラム分岐許可領域」であると判定し、マイクロプロセッサCPUによるセキュアデータ領域へのアクセスを許可する(「セキュアデータアクセス許可」)。
When non-secure
これに対して、ノンセキュアプログラム領域信号709がロウレベルで、図9に示すようにセキュアデータアクセス許可信号302がロウレベルであれば、分岐先アドレス(列BDA)は、「セキュアプログラム分岐禁止領域」であると判定し、分岐前の動作状態を維持する状態となる。図9の時刻t0で説明したように、フリップフロップ回路703の出力端子(Q)は、時刻t0よりも前の状態を維持している。この場合、前の状態は、セキュアデータのアクセスを禁止する状態である。そのため、この場合には、マイクロプロセッサCPUによるセキュアデータ領域へのアクセスを禁止する状態が維持される。図9の場合には、時刻t0から時刻t2の期間も、この状態が維持されることになる。
On the other hand, if the non-secure
時刻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
先ず、マイクロプロセッサ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
時刻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
時刻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
これにより、図7に示したフリップフロップ回路703の出力端子(Q)は、ハイレベルにセットされる。その結果、セキュアデータアクセス許可信号302は、ハイレベルとなり、メモリ制御回路303は、マイクロプロセッサCPUが、セキュアデータ領域をアクセスすることを許可する(セキュアデータアクセス許可)。
Thus, the output terminal (Q) of the flip-
時刻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
時刻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
時刻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
これにより、図7に示したフリップフロップ回路703の出力端子(Q)は、ハイレベルにセットされる。その結果、セキュアデータアクセス許可信号302は、ハイレベルとなり、メモリアクセス制御回路303は、マイクロプロセッサCPUが、セキュアデータ領域をアクセスすることを許可する(セキュアデータアクセス許可)。
Thus, the output terminal (Q) of the flip-
なお、図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
メモリアクセス制御回路303へノンセキュアプログラム領域信号709を、図示しない信号配線で供給する例を説明したが、これに限定されるものではない。例えば、メモリアクセス制御回路303へセキュアプログラム領域信号707を、図示しない信号配線で供給するようにしてもよい。
Although the example in which the non-secure
上記したように、この実施の形態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
この変形例においても、セキュアプログラム領域は、分岐許可領域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アドレス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
分岐命令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
なお、セキュアプログラムを指定する選択情報を、ノンセキュアデータ領域に格納する例を説明したが、これに限定されるものではない。 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
その結果、予め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
この実施の形態2において、セキュアプログラム領域1201には、セキュリティが担保されるべきセキュアプログラムが格納され、ノンセキュアプログラム領域1200には、ノンセキュアプログラムが格納される。保護情報領域1202には、セキュアプログラム領域1201を保護する情報が格納される。
In the second embodiment, the
新たな半導体販売モデルでは、図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
販売者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
また、販売後、ノンセキュアプログラム領域1200に格納されたノンセキュアプログラム(例えばユーザープログラムU−AP)によって、保護情報領域1202に対して書き込みが可能になっていると、セキュアプログラムアドレス領域1203を書き換えることが可能となり、セキュアプログラム領域1201の書き込み禁止を解除して、セキュアプログラムにセキュリティホールを作り込むことが可能となってしまう。そのため、販売者PRDは、保護情報領域1202に保護情報制御領域1204を設け、販売後は、保護情報領域1202に格納されている保護情報を書き換えることができないようにする保護情報1205を、保護情報制御領域1204へ、販売前に書き込む。これにより、保護情報領域1202への保護情報の書き込みが禁止される。
Also, after the sale, if the protected
このようにして、販売後は、ノンセキュアプログラム領域1200に格納されたノンセキュアプログラムによって、セキュアプログラムの書き換えが禁止されるようにすることができる。しかしながら、販売後に、セキュアプログラムに、バグ等の不具合が発見された場合、セキュアプログラムの書き換えが禁止されているため、セキュアプログラムの更新が困難となり、不具合の対策が困難となってしまう。一方、販売後に、セキュアプログラムの更新が可能となるようにしておくと、予め書き込んでおいたセキュアプログラムにセキュリティホールが作り込まれてしまうことが危惧される。
In this way, after the sale, rewriting of the secure program can be prohibited by the non-secure program stored in the
この実施の形態2においては、セキュアプログラム領域1201に格納したセキュアプログラムからは、保護情報領域1202の書き換え禁止を解除することができるようにされる。この場合、ノンセキュアプログラム領域1200に格納したノンセキュアプログラムによっては、保護情報領域1202の書き換え禁止を解除することができないようにされる。
In the second embodiment, from the secure program stored in
図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
フラッシュメモリ書き換え回路202は、フラッシュメモリ書き換えアドレス設定レジスタ1300、フラッシュメモリ書き換え開始レジスタ1301、フラッシュメモリ書き換え制御回路1304および不正アクセス検出回路1307を備えている。フラッシュメモリ書き換えアドレス設定レジスタ1300およびフラッシュメモリ書き換え開始レジスタ1301は、バス205を介してマイクロプロセッサCPUに接続されている。
The flash
フラッシュメモリ書き換えアドレス設定レジスタ1300には、フラッシュメモリFRMを書き換えるとき、フラッシュメモリFRMにおいて、書き換える領域を指定するアドレスが、バス205を介してマイクロプロセッサCPUによって設定される。フラッシュメモリ書き換えアドレス設定レジスタ1300は、設定されたアドレスを、書き換えアドレス1302として、フラッシュメモリ書き換え制御回路1304へ供給する。また、フラッシュメモリ書き換えアドレス設定レジスタ1300は、設定されたアドレスが、フラッシュメモリFRMの領域1200〜1202(図12)のうち、保護情報領域1202を指定しているか否かを判定し、保護情報領域1202を指定しているとき、保護情報選択信号1305を形成して、不正アクセス検出回路1307へ供給する。
In the flash memory rewrite
フラッシュメモリ書き換え開始レジスタ1301は、マイクロプロセッサCPUから、フラッシュメモリFRMを書き換えるタイミングを示す開始情報が、バス205を介して設定される。フラッシュメモリ書き換え開始レジスタ1301は、設定された開始情報に基づいて、フラッシュメモリ書き換え開始信号1303を形成し、不正アクセス検出回路1307へ供給する。
In the flash memory
フラッシュメモリ書き換え制御回路1304は、書き換えアドレス1302、フラッシュメモリ書き換え開始信号1303および不正アクセス検出回路1307からの不正アクセス検出信号1308を受け、不正アクセス検出信号1308が、不正アクセスであることを示していないとき、書き換えアドレス1302によって指定されるフラッシュメモリFRMの領域に対して書き換えを行う。このときの書き換えの開始タイミングが、フラッシュメモリ書き換え開始信号1303によって定められる。なお、図13では、図面が複雑になるのを避けるために、フラッシュメモリFRMに書き込まれるデータを供給する信号配線は省略されているが、書き込まれるデータは、バス205を介してマイクロプロセッサCPUからフラッシュメモリFRMへ供給される。
The flash memory
不正アクセス検出回路1307は、後で図14を用いて一例を示すが、メモリプロテクションユニット204からのノンセキュアプログラム選択信号1306と、上記した保護情報選択信号1305と、上記したフラッシュメモリ書き換え開始信号1303を受け、不正アクセス検出信号1308を形成して、フラッシュメモリ書き換え制御回路1304へ供給する。
The unauthorized
メモリプロテクションユニット204は、図3および図7(A)に示した構成を備えており、図3および図7(A)のフェッチアドレス比較回路301において形成されたノンセキュアプログラム領域信号709が、上記したノンセキュアプログラム選択信号1306として、不正アクセス検出回路1307へ供給される。この実施の形態2において、メモリプロテクションユニット204は、マイクロプロセッサCPUからのアドレス(PCアドレス306)が、セキュアプログラム領域を指定しているのかノンセキュアプログラム領域を指定しているのかを検出するために使われている。
The
図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
不正アクセス検出回路1307は、ノンセキュアプログラム選択信号1306が、ハイレベルかロウレベルかによって、ノンセキュアプログラムが実行されているのか、セキュアプログラムが実行されているのかを判定する。また、不正アクセス検出回路1307は、保護情報選択信号1305によって、フラッシュメモリFRM内の保護情報領域1202の書き換えが指示されているのか、保護情報領域1202以外の領域の書き換えが指示されているのかを判定する。また、不正アクセス検出回路1307は、フラッシュメモリ書き換え開始信号1303によって、フラッシュメモリFRMの書き換えタイミングを判定する。言い換えるならば、不正アクセス検出回路1307は、マイクロプロセッサCPUからの開始情報に基づいたフラッシュメモリ書き換え開始信号1303によって示されるタイミングで、不正アクセスか否かの検出を行う。
The unauthorized
不正アクセス検出回路1307は、ノンセキュアプログラム選択信号1306が、ノンセキュアプログラムが実行されていることを表し、保護情報選択信号1305が、保護情報領域1202を表しているときに、不正アクセス検出信号1308を形成し、フラッシュメモリ書き換え制御回路1304に対して、フラッシュメモリFRMへの書き換えを禁止する。不正アクセス検出信号1308は、フラッシュメモリ書き換え開始信号1303によって示されるタイミングで形成される。
The unauthorized
これにより、ノンセキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202が書き換えられるのを禁止することが可能となり、セキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202が書き換えられることが許可されることになる。
This makes it possible to inhibit the
図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
フリップフロップ回路1401は、特に制限されないが、図7で説明したフリップフロップ回路703と同様な構成を有している。すなわち、フリップフロップ回路1401(保持回路)は、セット端子(set)にハイレベルが供給されることにより、出力端子(Q)はハイレベルとなる。出力端子(Q)がハイレベルになると、セット端子(set)にロウレベルが供給されても、クリア端子(clear)にハイレベルが供給されるまで、出力端子(Q)はハイレベルに維持される。
The flip-
リセット信号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
そのため、フラッシュメモリFRM内の保護情報領域1202を書き換えるとき、ノンセキュアプログラムが実行されていれば、3入力のアンド回路1400の出力信号は、ハイレベルとなる。言い換えるならば、ノンセキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202を書き換えようとすると、3入力のアンド回路1400の出力信号はハイレベルとなる。3入力のアンド回路1400からのハイレベルの出力信号が、フリップフロップ回路1401のセット端子(set)に供給されるため、フリップフロップ回路1401の出力端子(Q)の電圧はハイレベルとなり、不正アクセス検出信号1308は、ハイレベルとなる。
Therefore, when the
フラッシュメモリ書き換え制御回路1304は、不正アクセス検出信号1308がハイレベルとなることにより、供給されている書き換えアドレス1302によって指定されている保護情報領域1202への書き込みを禁止する。フリップフロップ回路1401は、リセット信号RSTがハイレベルとなるまで、出力端子(Q)をハイレベルに維持する。そのため、マイクロコンピュータLSIをリセットするまで、フラッシュメモリ書き換え制御回路1304は、保護情報領域1202への書き込みを禁止することになる。これにより、ハッキングの手段で、繰り返しアタックされても、フラッシュメモリFRMの保護情報領域1202が書き換えられるのを防ぐことが可能となる。
The flash memory
一方、フラッシュメモリFRM内の保護情報領域1202を書き換えるとき、セキュアプログラムが実行されていれば、3入力のアンド回路1400の出力信号は、ロウレベルとなる。言い換えるならば、セキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202を書き換えようとすると、3入力のアンド回路1400の出力信号はロウレベルとなる。3入力のアンド回路1400の出力信号がロウレベルとなるため、フリップフロップ回路1401の出力端子(Q)の電圧は、ロウレベルとなり、不正アクセス検出信号1308もロウレベルとなる。
On the other hand, when the protected
フラッシュメモリ書き換え制御回路1304は、不正アクセス検出信号1308がロウレベルとなることにより、供給されている書き換えアドレス1302によって指定されている保護情報領域1202への書き込みを許可する。すなわち、セキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202をアクセスする場合には、許可され、保護情報領域1202を書き換えることが可能となる。
The flash memory
実施の形態2によれば、ノンセキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202を書き換えようとすると、不正アクセス検出回路1307から不正アクセス検出信号1308が出力され、フラッシュメモリ書き換え制御回路1304が、フラッシュメモリFRMの保護情報領域1202への書き込みを禁止する。この書き込みの禁止は、マイクロコンピュータLSIが、リセットされるまで継続し、解除することができない。これにより、フラッシュメモリFRMの保護情報領域1202が不正に書き換えられるのを防ぐことが可能となる。保護情報領域1202が不正に書き換えられるのを防ぐことが可能なため、ノンセキュアプログラムによって、セキュアプログラムにセキュリティホールを作り込むことを防ぐことができ、セキュアプログラムを保護することが可能となる。
According to the second embodiment, when attempting to rewrite the protected
また、セキュアプログラムにおいて、フラッシュメモリFRM内の保護情報領域1202を書き換える場合には、フラッシュメモリ書き換え制御回路1304が、フラッシュメモリFRMの保護情報領域1202への書き込みを許可する。そのため、フラッシュメモリFRMに予め書き込んでおいたRTOSのプログラム(セキュアプログラム)に不具合が発見された場合、セキュアプログラムにおいて、セキュアプログラム領域1201が書き換え可能となるように、保護情報領域1202内の情報を書き換える。その後、書き換え可能となったセキュアプログラム領域1201に、不具合を修正したRTOS(セキュアプログラム)を書き込む。修正したRTOSを書き込んだ後、セキュアプログラムにおいて、セキュアプログラム領域1201が書き込み禁止となるように、保護情報領域1202内の情報を書き換える。これにより、セキュアプログラムに不具合が発見された場合でも、セキュアプログラムの修正を行うことが可能となる。
Further, when rewriting the protected
例えば、販売者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,
(実施の形態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
新たな半導体販売モデルでは、マイクロプロセッサ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
この実施の形態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
暗号復号機能回路201−Aは、暗号復号機能回路201と異なり、復号化した暗号化されていないプログラムを専用の信号配線1500を介して、フラッシュメモリ書き換え回路202−Aへ伝達する。フラッシュメモリ書き換え回路202−Aは、フラッシュメモリ書き換え回路202と異なり、伝達された暗号化されていないプログラムを、専用の信号配線1501を介してフラッシュメモリFRMへ伝達し、フラッシュメモリFRMに、プログラムを書き込む。
Unlike the
これにより、マイクロプロセッサ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
すなわち、暗号化されていないプログラム(データ)が、マイクロプロセッサ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
マイクロコンピュータ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
実施の形態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,
汎用レジスタ群1601は、複数の汎用レジスタR0〜Rnを備えている。それぞれの汎用レジスタR0〜Rnは、マイクロプロセッサLSIが処理を実行するとき、演算データまたは/およびアドレスを格納する。汎用レジスタR0〜Rnに格納されているアドレスは、マイクロプロセッサCPUが、処理を実行するとき、例えばフラッシュメモリFRMまたは/および揮発性メモリ203のアドレスとして用いられる。
The general
制御ユニット1600は、フラッシュメモリFRMに格納されているセキュアプログラムおよびノンセキュアプログラムに従って、汎用レジスタ群1601内の汎用レジスタ、演算器1605、第1スタックポインタ1602、第2スタックポインタ1603およびプログラムカウンタ1604を制御する。制御ユニット1600が、これらの回路ブロックを制御することにより、セキュアプログラムおよびノンセキュアプログラムに従った処理が、マイクロプロセッサ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
演算器1605は、例えば汎用レジスタR0〜Rnに格納されているデータ間で演算を行い、演算結果を演算データあるいはアドレスとして、汎用レジスタに格納する。
The
上記したように、マイクロプロセッサ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
一方、汎用レジスタ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
割り込み分岐によって、次にノンセキュアプログラムへ分岐する。ノンセキュアプログラムによって、処理の内容が規定されたところの割り込み処理を、マイクロプロセッサ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
処理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
ステップ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
この実施の形態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
図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
ステップSH11に続いて、ステップSH12において、使用するスタックポインタを、第2スタックポインタ1603から第1スタックポインタ1602へ切り替える(スタックポインタの切り替え)。続いて、ステップSH06で、割り込み処理へ分岐する(割り込み分岐)。
Following step SH11, the stack pointer to be used is switched from the
割り込み分岐によって、次にノンセキュアプログラムへ分岐する。ノンセキュアプログラムによって、処理の内容が規定されたところの割り込み処理を、マイクロプロセッサ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
スタックポインタを第2スタックポインタ1603へ切り替えた後、ステップSH07で、第2スタックポインタ1603によって指定されているスタック領域から、ステップSH05で退避した汎用レジスタR0〜Rnの値を、汎用レジスタR0〜Rnへ戻す(汎用レジスタの値を復帰)。ステップSH14で、セキュアプログラムの実行が終了する(End)。
After switching the stack pointer to the
ステップ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
さらに、スタックポインタを、切り替えるようにしているため、セキュアプログラムにおいて、汎用レジスタを退避したスタック領域を、ノンセキュアプログラムにおいて把握することが困難となる。これにより、さらにセキュアデータが盗まれるのを防ぐことが可能となる。 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
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割り込みの発生は、前記セキュアプログラムによる監視によって、検出され、前記セキュアプログラムの実行により、前記スタックポインタにより指定されている領域への前記複数のレジスタの値の退避と、前記複数のレジスタのそれぞれのクリアとが行われ、
前記第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.
前記セキュアプログラムは、リアルタイムオペレーティングシステムである、半導体装置。 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.
購入した前記半導体装置において、ネットワークを介してダウンロードしたプログラムが、前記不揮発性メモリに書き込まれる、半導体装置販売モデル。 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.
前記ダウンロードしたプログラムは、前記半導体装置を提供するものから提供される、半導体装置販売モデル。 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.
前記半導体装置は、ライセンス管理ユニットを備え、前記半導体装置を販売する前に、前記ライセンス管理ユニットに、プリペイドで有料ソフトの対価に相当するライセンス情報が格納され、
購入した半導体装置において、ダウンロードしたプログラムが有料ソフトの場合、前記ライセンス管理部は、格納されているライセンス情報に相当する対価に到達するまで、ダウンロードしたプログラムが、前記不揮発性メモリに格納されるのを許可する、半導体装置販売モデル。 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.
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)
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)
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 |
-
2019
- 2019-02-04 JP JP2019017617A patent/JP2019096338A/en active Pending
Patent Citations (9)
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)
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)
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 |