JP2006042289A - マイクロプロセッサ - Google Patents

マイクロプロセッサ Download PDF

Info

Publication number
JP2006042289A
JP2006042289A JP2004226885A JP2004226885A JP2006042289A JP 2006042289 A JP2006042289 A JP 2006042289A JP 2004226885 A JP2004226885 A JP 2004226885A JP 2004226885 A JP2004226885 A JP 2004226885A JP 2006042289 A JP2006042289 A JP 2006042289A
Authority
JP
Japan
Prior art keywords
key
information
encryption
decryption
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.)
Granted
Application number
JP2004226885A
Other languages
English (en)
Other versions
JP4559794B2 (ja
Inventor
Hiromi Haruki
洋美 春木
Mikio Hashimoto
幹生 橋本
Takeshi Kawabata
健 川端
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2004226885A priority Critical patent/JP4559794B2/ja
Priority to US11/060,704 priority patent/US8191155B2/en
Publication of JP2006042289A publication Critical patent/JP2006042289A/ja
Application granted granted Critical
Publication of JP4559794B2 publication Critical patent/JP4559794B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】処理対象となる情報が第三者から不正に読み出されるのを防止しつつ、必要に応じて当該情報に対する処理を施すことができるマイクロプロセッサを提供する。
【解決手段】プロセッサコア110を備えたマイクロプロセッサ100であって、プロセッサコア110が利用すべき情報を外部から取得する情報取得手段134と、情報取得手段130が取得した情報が暗号化された暗号化情報である場合に、当該暗号化情報を復号鍵を利用して復号化し、平文情報を得る復号化手段134と、復号化手段134が暗号化情報を復号化するときに利用する暗号復号鍵に基づいて、情報取得手段134が取得した情報に対する処理を制御する制御手段142とを備えたことを特徴とする。
【選択図】 図2

Description

本発明は、プロセッサコアを備えたマイクロプロセッサに関するものである。
近年、マイクロプロセッサ内部にデバッガインタフェースを内蔵し、それとデバッガを接続することによって、プロセッサ内部の状態を解析して、ソフトウェア開発時のデバッグを容易にする方法が知られている。
この方法を利用することにより、デバッガからプロセッサに内蔵されたデバッガインタフェースを経由して、プロセッサ内部のレジスタやメモリ等のリソースにアクセスすることができる。また、プロセッサで動作しているプログラムのステップ実行をすることができるなどの利点がある。
しかし、デバッガインタフェースを内蔵することにより、ソフトウェア開発者がプログラムの動作を検証しやすくなる一方で、他のソフトウェア開発者やユーザがソフトウェアを解析しやすくなるといった問題がある。
例えば、開発したソフトウェアに機密情報が含まれる場合には、ソフトウェアユーザが、当該ソフトウェアを解析するのを防ぐ必要がある。さらに、他のソフトウェア開発者による解析も防ぐ必要がある。
そのための技術として、復号化の際に選択した鍵に基づいて、デバッグ機能を禁止する方法や、プロセッサ内部のメモリに格納された保護対象のプログラムがデバッグ対象として選択された場合に、デバッグ機能の動作を禁止する方法が提案されている(例えば、「特許文献1」参照)。
特開2002−244757号公報
しかしながら、所定のプログラム等に対するデバッグを禁止した場合には、当該プログラム等のデバッグを全く行うことができず不便である。また、よりデバッグ機能の有効無効をより適切に制御することにより、デバッグ機能を向上させることが望まれている。
本発明は、上記に鑑みてなされたものであって、より適切にデバッガ機能を制御することにより、処理対象となる情報を保護することのできるマイクロプロセッサを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、プロセッサコアを備えたマイクロプロセッサであって、前記プロセッサコアが利用すべき情報を外部から取得する情報取得手段と、前記情報取得手段が取得した情報が暗号化された暗号化情報である場合に、当該暗号化情報を暗号復号鍵を利用して復号化し、平文情報を得る復号化手段と、前記復号化手段が前記暗号化情報を復号化するときに利用する前記暗号復号鍵に基づいて、前記情報取得手段が取得した前記情報に対する処理を制御する制御手段とを備えたことを特徴とする。
本発明にかかるマイクロプロセッサは、プロセッサコアが利用すべき情報が暗号化された暗号化情報である場合に、復号化手段が当該暗号化情報を暗号復号鍵を利用して復号化し、平文情報を得る。そして、制御手段は、復号手段が前記暗号化情報を復号化するときに利用した暗号復号鍵に基づいて、情報に対する処理を制御するので、処理対象となる情報が第三者から不正に読み出されるのを防止しつつ、必要に応じて当該情報に対する処理を施すことができるという効果を奏する。
以下に、本発明にかかるマイクロプロセッサの実施の形態を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
(実施の形態1)
図1は、本実施の形態にかかるプログラム開発システム4の全体を示す図である。プログラム開発システム4は、プロセッサ開発ベンダ1と、ソフトウェアベンダ2と、ユーザ端末3とを備えている。プロセッサ開発ベンダ1は、ソフトウェアベンダ2およびユーザ端末3にマイクロプロセッサ100を販売する。
さらに、プロセッサ開発ベンダ1は、ソフトウェアベンダ2がデバッグ時に用いる開発鍵700と、第1製品鍵711と、第2製品鍵712と、第3製品鍵713とを準備する。これらの鍵はあらかじめマイクロプロセッサ100に内蔵されている。
ここで、開発鍵とは、ソフトウェアベンダ2がプログラム等を開発するときに利用する暗号復号鍵である。また、製品鍵とは、ソフトウェアベンダ2が開発したソフトウェアを外部に提供するときに利用する暗号復号鍵である。本実施の形態においては、開発鍵と製品鍵とを別個に準備し、同一のプログラムから開発鍵で暗号化した開発鍵暗号化プログラムと製品鍵で暗号化した製品鍵暗号化プログラムとを得る。
そして、ソフトウェアベンダ2に対して、開発鍵と、所定の製品鍵と、それらに対応する鍵IDを通知する。本実施の形態においては、開発鍵700と第1製品鍵711と、対応する鍵ID 1,2を通知する。
いずれの鍵を通知するかは、プロセッサ開発ベンダ1とソフトウェアベンダ2との契約により決定してもよい。具体的には、所定のソフトウェアベンダに対して、第1製品鍵711と対応する鍵ID2を通知し、他のソフトウェアベンダに対して、第2製品鍵712と対応する鍵ID3を通知することとしてもよい。
このように、ソフトウェアベンダごとに異なる製品鍵を通知することにより、あるソフトウェアベンダが開発したソフトウェアを他のソフトウェアベンダが解析することを防ぐことができる。
また、開発鍵および製品鍵の数は本実施の形態に限定されるものではない。複数の開発鍵を準備してもよい。また、製品鍵は1つであってもよい。
ソフトウェアベンダ2は、システム10を備えている。システム10は、主にマイクロプロセッサ100と外部メモリ200とを備えている。ソフトウェアベンダ2は、プロセッサ開発ベンダ1から取得した開発鍵700と第1製品鍵711とを保持している。
ソフトウェアベンダ2は、ソフトウェアを開発する際に、デバッガ500を接続することにより、開発中のソフトウェアのデバッグを行う。このとき、プロセッサ開発ベンダ1
から取得した開発鍵700でソフトウェアの暗号化および復号化を行う。
ソフトウェアベンダ2は、ソフトウェアを製品として出荷するとき、第一製品鍵711に対応するID2と、第一製品鍵711で暗号化したプログラムをユーザ端末3に提供する。
ユーザ端末3は、ソフトウェアベンダ2が提供するID2を設定することにより、第一製品鍵711で暗号化されたプログラムを実行することが出来る。なお、ユーザ端末3の構成は、ソフトウェアベンダ2の構成と同様である。
図2は、ソフトウェアベンダ2のシステム10の全体構成を示すブロック図である。システム10は、マイクロプロセッサ100と、外部メモリ200と、ユーザインターフェース300と、外部バス400と、デバッガ500とを備えている。
マイクロプロセッサ100は、プロセッサコア110と、バスインターフェースユニット(BIU)130と、デバッガインタフェース140と、デバッガアクセス制御部142とを備えている。BIU130は、鍵IDレジスタ132と、鍵テーブル133と、暗号復号器134と、保護属性付与部135とを有している。
外部メモリ200は、プロセッサコア110の実行対象となるプログラムを保持している。なお、外部メモリ200は、平文プログラム、開発鍵暗号化プログラム、または第1製品鍵暗号化プログラムを保持している。
ここで、平文プログラムとは、暗号化の施されていないプログラムである。また、開発鍵暗号化プログラムとは、開発鍵700で暗号化されたプログラムである。第1製品鍵暗号化プログラムとは、第1製品鍵711で暗号化されたプログラムである。
BIU130は、外部バス400を介して外部メモリ200から平文プログラム、開発鍵暗号化プログラム、または第1製品鍵暗号化プログラムを取得する。BIU130は、暗号化プログラムを取得した場合には、暗号化プログラムを復号化し、平文プログラムとしてプロセッサコア110に送る。また、平文プログラムを取得した場合には、そのままプロセッサコア110に送る。プロセッサコア110は、BIU130から取得した平文プログラムを実行する。デバッガインタフェース140は、外部でデバッガ500に接続されている。デバッガアクセス制御部142は、デバッガ500からのアクセスを制御する。
BIU130は、鍵IDレジスタ132と、鍵テーブル133と、暗号復号器134と、保護属性付与部135とを有している。
鍵IDレジスタ132には、外部メモリ200から読み出したプログラムを復号化するときに利用する暗号復号鍵を識別する鍵IDが設定される。ここで、鍵IDの値は、ユーザインターフェース300を介し、ユーザによって設定される。また、外部メモリ200から読み出すプログラムが暗号化されていない平文プログラムである場合には、鍵IDレジスタ132に「0」が設定される。
ここで、本実施の形態にかかるユーザインターフェース300は、特許請求の範囲に記載の暗号復号鍵指定手段に相当する。
鍵テーブル133は、鍵IDと暗号復号鍵とを対応付けて保持している。図3は、鍵テーブル133のデータ構成を模式的に示している。鍵テーブル133は、暗号復号化に利用する暗号復号鍵を識別する鍵IDと、暗号復号鍵とを対応付けて保持している。本実施
の形態における鍵テーブル133は、開発鍵700と、第1製品鍵711と、第2製品鍵712と、第3製品鍵713とを保持している。そして、開発鍵700は、鍵ID「1」に対応付けられている。鍵テーブル133を利用することにより、鍵IDレジスタ132に設定された鍵IDに対応する暗号復号鍵を特定することができる。
ここで、本実施の形態にかかる鍵テーブル133は、特許請求の範囲に記載の暗号復号鍵保持手段および鍵種テーブルに対応する。
なお、鍵テーブル133に保持される鍵IDは「0」以外の値である。これにより、鍵IDレジスタ132に設定されている値が「0」か否かによって、対象となるプログラムが平文プログラムか否かを特定することができる。
鍵IDレジスタ132に「0」以外が設定されている場合には、外部メモリ200から取得したプログラムは暗号化された暗号化プログラムであるので、暗号復号器134は、鍵テーブル133を利用して鍵IDレジスタ132に設定された鍵IDに対応する暗号復号鍵を特定する。そして、特定した暗号復号鍵を利用して、暗号化プログラムを復号化して、平文プログラムを得る。暗号復号器134はまた、鍵IDレジスタ132に「0」がセットされている場合には、平文プログラムであるので復号化を行わない。
保護属性付与部135は、外部メモリ200から取得したプログラムの保護属性を付与する。図4は、保護属性付与部135が保護属性を付与するときに利用する保護属性決定テーブル136を示している。
図4に示すように保護属性付与部135は、鍵IDレジスタ132に「0」がセットされている場合は、対応するプログラムに対して非保護を示す保護属性「0」を付与する。鍵IDレジスタ132に「1」がセットされている場合は、同様に対応する平文プログラムに対して非保護を示す保護属性「0」を付与する。また、「0」でも「1」でもない値がセットされている場合には、対応する平文プログラムに対して保護を示す保護属性「1」を付与する。
すなわち、製品鍵暗号化プログラムに対して保護を示す保護属性を付与し、暗号化されていない平文プログラムおよび開発鍵復号化プログラムに対して、非保護を示す保護属性を付与する。このように、製品鍵復号化プログラムのみに対して、保護を示す保護属性を付与することができる。
デバッガアクセス制御部142は、デバッガインタフェース140からプログラムへのアクセスを、保護属性に基づいて制御する。具体的には、デバッガアクセス制御部142は、保護を示す保護属性が付与されたプログラムに関する情報へのアクセスを禁止する。
本実施の形態にかかるソフトウェアベンダ2は、同一のプログラムを開発鍵暗号化プログラムおよび製品鍵暗号化プログラムとして保持することができる。そして、開発鍵暗号化プログラムおよび製品鍵暗号化プログラムには、それぞれ非保護および保護を示す保護属性が付与されている。すなわち、デバッガアクセス制御部142は、開発鍵暗号化プログラムへのアクセスを許可しつつ、製品鍵暗号化プログラムへのアクセスのみを禁止することができる。これにより、平文、あるいは、開発鍵で暗号化されたプログラムに対してのみ、デバッガ500はデバッグを行うことができる。
図5は、ソフトウェアベンダ2が開発中のプログラムを外部メモリ200からマイクロプロセッサ100に読み込むときの読込処理を示すフローチャートである。まず、ユーザは、プロセッサコア110に実行させるべきプログラムを外部メモリ200に格納する。
そして、プログラム実行前に、BIU130の鍵IDレジスタ132に、鍵IDを設定する(ステップS100,ステップS102)。ここで、暗号復号鍵の設定は、ユーザインターフェース300を介してユーザからの指示により行われる。
プロセッサコア110は、命令フェッチによりアドレスXのデータを読み出し要求をBIU130へ送る(ステップS104)。
BIU130は外部メモリ200からアドレスXに対応するプログラムE2[C(X)]を読み出す(ステップS106)。このとき鍵IDレジスタ132に設定されている値が「0」以外である場合は(ステップS108,No)、暗号復号器134は、鍵テーブル133から得られた暗号復号鍵で読み出した暗号化プログラムE2[C(X)]に対して復号処理を施し、平文プログラムC(X)を得る(ステップS110)。このように、鍵IDレジスタ132に「0」以外の値が設定されている場合には、対象となるプログラムは暗号化されているので、復号化により平文プログラムを得る。
一方、鍵IDレジスタ132に設定されている値が「0」である場合は(ステップS1
08,Yes)、復号化処理を行わず、後述のステップS112へ進む。このように、鍵
IDレジスタ132に「0」が設定されている場合には、対象となるプログラムは、平文であるので、復号化は行う必要がない。
一方、保護属性付与部135は、鍵IDレジスタ132の値に基づいて、内部メモリ120に保持させるべき平文プログラムに保護属性を付与する(ステップS112)。
具体的には、保護属性付与部135は、鍵IDレジスタ132に設定されている値が「0」である場合、すなわち対象が平文プログラムである場合には、非保護を示す保護属性「0」を付与する。また、鍵IDレジスタ132に設定されている値が「1」である場合、すなわち対象が開発鍵暗号化プログラムとして取得したプログラムである場合には、同様に、非保護を示す保護属性「0」を付与する。また、鍵IDレジスタ132に設定されている値が「0」でも「1」でもない場合、すなわち対象が製品鍵暗号化プログラムである場合には、保護を示す保護属性「1」を付与する。
次に、暗号復号器134は平文プログラムをプロセッサコア110に送る(ステップS114)。以上の処理により、プロセッサコア110がプログラムを実行可能な状態となる。
具体的には、ソフトウェアベンダは、デバッグ機能を利用する製品開発時には、まずデバッグ専用の開発鍵700で暗号化した開発鍵暗号化プログラムを格納する。一方、プログラムの出荷時など製品開発時以外のときは、第1製品鍵711で暗号化した製品鍵暗号化プログラムを格納する。
開発鍵暗号化プログラムの場合には、鍵IDレジスタ132に鍵ID「1」を設定するので(ステップS102)、暗号復号器134は、開発鍵暗号化プログラムを復号化して平文プログラムを得る(ステップS108,No、ステップS110)。また、保護属性付与部135は、平文プログラムに非保護を示す保護属性を付与する。
第1製品鍵暗号化プログラムの場合には、鍵IDレジスタ132に鍵ID「2」を設定する(ステップS102)。この場合も、暗号復号器134は、第1製品鍵暗号化プログラムを復号化して平文プログラムを得る(ステップS108,No、ステップS110)。また、保護属性付与部135は、平文プログラムに保護を示す保護属性を付与する(ステッ
プS112)。
図6は、図5を参照しつつ説明した処理によってプロセッサコア110に送られた平文プログラムをデバッガ500が読み出す場合の読出処理を説明するためのフローチャートである。
デバッガ500は、デバッガインタフェース140を介してデバッガアクセス制御部142に対し、プロセッサコア110に保持されているレジスタ情報の読出要求を送る。デバッガアクセス制御部142は、デバッガインタフェース140を介してデバッガ500からの読出要求を取得すると(ステップS200)、保護属性付与部135から読出要求にかかるプログラムの保護属性を取得する。
当該プログラムに非保護を示す保護属性が付与されている場合には(ステップS202
,No)、デバッガアクセス制御部142は、プロセッサコア110に対してレジスタ情
報の読出要求を出力する(ステップS204)。そして、デバッガアクセス制御部142は、読出要求に対する返信としてプロセッサコア110からレジスタ情報を取得する(ステ
ップS206)。次に、デバッガアクセス制御部142は、プロセッサコア110から取
得したプログラムをデバッガインタフェース140を介してデバッガ500に提供する(
ステップS208)。
一方、ステップS202において、読出要求にかかるプログラムに保護を示す保護属性が付与されている場合には(ステップS202,Yes)、デバッガ500からの要求を無効化する(ステップS210)。以上で、読出処理が完了する。
なお、他の例としては、デバッガ500からの要求を無効化するのにかえて、デバッガ500に対してエラーを出力してもよい。
また、他の例としては、暗号化した状態でプログラムを提供することとしてもよい。具体的には、開発鍵暗号化プログラムには、非保護を示す保護属性が付与されているので(
ステップS202,No)、デバッガアクセス制御部142はレジスタ情報の読み出しを
許可し、デバッガ500に平文のレジスタ値を出力する (ステップS204〜ステップS208)。一方、第1製品鍵暗号化プログラムには、保護を示す保護属性が付与されてい
るので(ステップS202,Yes)、デバッガアクセス制御部142は、レジスタ情報を読み出し、第1製品鍵で暗号化した後、デバッガ500に暗号化したレジスタ情報を出力する 。
このように、デバッガアクセス制御部142は、保護を示す保護属性が付与されたプログラムが利用するレジスタ情報をデバッガ500に読み出すのを禁止するので、第三者が、デバッガ500を利用して不正に平文プログラムの解析を防止することができる。
また、開発鍵で暗号化された開発鍵暗号化プログラムはデバッガ500に解析されることを前提として準備されたプログラムである。開発鍵暗号化プログラムには非保護を示す保護属性が付与されおり、デバッガ500は、開発鍵暗号化プログラムを取得することができる。
したがって、同一のプログラムにかかる第1製品鍵暗号化プログラムへのデバッガ500からの解析を禁止する一方で、開発鍵暗号化プログラムへのデバッガ500からの解析を許可することにより、デバッガ500によるプログラムの解析を制限することなく、デバッガ500を利用して第三者が不正にプログラムを解析するのを防止することができる。
さらに、ソフトウェアベンダ2が開発したプログラムは暗号化した状態で出荷する場合が多い。そこで、プログラム開発時においても、暗号化プログラムを対象とするのが望ましい。これにより、復号処理における遅延等を考慮した開発を行うことができるからである。
本実施の形態にかかるソフトウェアベンダ2は、第1製品鍵暗号化プログラムを利用してソフトウェアを開発することができるので、復号処理における遅延等を考慮した開発を行うことができる。
次に、ユーザ端末3における処理について説明する。ユーザ端末3における処理は図5および図6を参照しつつ説明したソフトウェアベンダ2の処理と同様である。
以下、ユーザ端末3がソフトウェアベンダ2から取得したプログラムをマイクロプロセッサ100に読み込む読込処理について具体的に説明する。
まず、ソフトウェアベンダ2において開発されたプログラムを第1製品鍵711で暗号化された第1製品鍵暗号化プログラムとしてソフトウェアベンダ2から取得する。そして、第1製品鍵暗号化プログラムを外部メモリ200に格納する。
第1製品鍵暗号化プログラム実行前に、BIU130の鍵IDレジスタ132に鍵IDを設定する(ステップS100,S102)。ソフトウェアベンダ2から取得したプログラムは第1製品鍵711で暗号化された第1製品鍵暗号化プログラムである。したがって、暗号復号器134は、第1製品鍵暗号化プログラムを復号化し、平文プログラムを得る(
ステップS108,No、ステップS110)。次に、ステップS112において、保護
属性付与部135は、平文プログラムに対して保護を示す保護属性を付与する。
なお、これ以外のユーザ端末3のプログラムを取得したときの処理は、図5を参照しつつ説明したソフトウェアベンダ2の処理と同様である。
次に、図6を参照しつつユーザ端末3のデバッガ500が実行中のプログラムのレジスタ情報を読み出す場合の読出処理について説明する。
デバッガアクセス制御部142は、デバッガインタフェース140を介してデバッガ500からの読出要求を取得すると(ステップS200)、保護属性付与部135から読出要求にかかるプログラムの保護属性を取得する。ここで、読出要求にかかるプログラムは第1製品鍵暗号化プログラムであって、保護を示す保護属性が付与されているので(ステッ
プS202,Yes)、ステップS210に進む。すなわち、デバッガ500からの要求
は無効化される。
このように、ユーザ端末3には、第1製品鍵711で暗号化された第1製品鍵暗号化プログラムが提供されるので、ユーザ端末3においてデバッガ500を利用して不正にプログラムが解析されるのを防止することができる。
本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
そうした第1の変更例としては、実施の形態1にかかるソフトウェアベンダ2およびユーザ端末3が保持する開発鍵700および第1製品鍵711は、プロセッサ開発ベンダ1が発行したものであったが、開発鍵700の値はソフトウェアベンダ2およびユーザ端末3のユーザが変更してもよい。この場合、ユーザは、ユーザインターフェース300を介
して、任意の開発鍵を設定する。また、この場合、開発鍵用の鍵テーブルと、製品鍵用の鍵テーブルとをそれぞれ別個に設けてもよい。
ここで、本変更例にかかるユーザインターフェース300は、特許請求の範囲に記載の開発鍵生成手段に相当する。
これにより、暗号化プログラムを復号化する際に生じる遅延が暗号復号鍵の値によって異なった場合でも、開発者は、自由に暗号復号鍵の値を設定できるので、遅延によるバグの解析をより正確に行うことができる。
また、製品鍵と同一の鍵値を設定することもできる。このように、製品鍵と同一の鍵値を設定することにより、プログラムを製品として出荷する場合と同一の条件でソフトウェア開発を行うことができる。
製品鍵と同一の鍵値を設定しても、ユーザ3等が保持するプロセッサ内部の製品鍵は同一の鍵とならないようにすることにより、同一の鍵値を設定することによるセキュリティ上の問題は発生しない。
第2の変更例としては、実施の形態1においては、保護属性付与部135がプログラムに対して保護属性として「0」または「1」を付与したが、プログラムの保護属性が特定できればよく、そのための処理はこれに限定されるものではない。例えば、保護属性として、鍵IDレジスタ132に設定される値を利用してもよい。この場合には、デバッガアクセス制御部142は鍵IDの値から保護属性を特定する処理を行う。また、他の例としては、暗号復号鍵の値を保護属性として利用してもよい。
第3の変更例としては、実施の形態1においては、デバッガアクセス制御部142は、プロセッサコア110とは別に独立して設けられていたが、これにかえてデバッガアクセス制御部142をプロセッサコア110に設けてもよい。
(実施の形態2)
図7は、実施の形態2にかかるソフトウェアベンダ2のシステム10を示している。実施の形態2にかかるソフトウェアベンダ2のシステム10は、DMAコントローラ600と、内部メモリ120と、プロセッサコア110と、デバッガインタフェース140とを備えている。
デバッガインタフェース140は、外部でデバッガ500に接続されている。そして、デバッガ500からの要求に対して、プロセッサコア110、内部メモリ120、DMAコントローラ600等へ要求を振り分ける。また、各部からの要求に対応した実行結果を受け取ると、実行結果をデバッガ500に返す。
DMAコントローラ600は、鍵IDレジスタ132と、鍵テーブル133と、暗号復号器134と、保護属性付与部135を有している。ここで、DMAコントローラ600の各部の機能構成は、実施の形態1にかかるBIU130の各部の機能構成と同様である。すなわち、DMAコントローラ600の鍵テーブル133は、開発鍵700と、第1製品鍵711と、第2製品鍵712と、第3製品鍵713とを保持している。
また、暗号復号器134は、復号化した平文プログラムを内部メモリ120に保持させる。保護属性付与部135は、平文プログラムに付与した保護属性を内部メモリ120に保持させる。そして、プロセッサコア110は、内部メモリ120に保持されている平文プログラムを読み出して実行する。
内部メモリ120は、プログラムを保持する命令メモリ部121と、データを保持するデータメモリ部125とを有している。さらに、命令メモリ部121は、保護属性メモリ122と、命令メモリ123と、命令メモリアクセス制御部124とを有している。
命令メモリ123は、暗号復号器134から取得した平文プログラムを保持する。保護属性メモリ122は、命令メモリ123に保持されている平文プログラムに対して付与された保護属性を保持する。命令メモリアクセス制御部124は、外部から命令メモリ123へのアクセスを制御する。
図8は、命令メモリアクセス制御部124のアクセス制御のルールを模式的に示している。図8に示すように、プロセッサコア110による命令フェッチであって、かつ要求されているプログラムに保護を示す保護属性が付与されている場合には、アクセスを許可する。また、プロセッサコア110による命令フェッチ以外のアクセス要求であって、かつ要求されているプログラムに保護を示す保護属性が付与されている場合には、アクセスを制限する。すなわち、エラーを出力する。また、要求されているプログラムに非保護を示す保護属性が付与されている場合には、要求種別に関わらずアクセスを制限する。
このように、特定の要求種別以外の要求種別からのアクセスを制限することにより、第三者が不正に平文プログラムを読み出すのを防止することができる。
また、保護を示す保護属性が付与されたプログラムへのアクセスを制限することにより、製品鍵で暗号化されたプログラムが不正に読み出されるのを防止することができる。
図9は、ソフトウェアベンダ2が開発中のプログラムを外部メモリ200から取得するときの処理を示すフローチャートである。まず、ユーザは、プロセッサコア110に実行させるべきプログラムを外部メモリ200に格納する。ここで、プログラムを外部メモリ200上のアドレスX〜Yに格納するとする。
また、プログラム実行前に、DMAコントローラ600の鍵IDレジスタ132に、鍵IDを設定する(ステップS100,ステップS102)。ここで、暗号復号鍵の設定は、ユーザインターフェース300を介してユーザからの指示により行われる。
プロセッサコア110は、DMA転送要求をDMAコントローラ600へ送る(ステップS104)。ここで、DMA転送要求は、外部メモリ200上のアドレスX〜Yのデータを内部メモリに転送することを要求する情報である。
DMAコントローラ600は外部メモリ200からアドレスX〜Yに対応するプログラムE2[C(X〜Y)]を読み出す(ステップS106)。以下、ステップS108からステップS112までの処理は、実施の形態1にかかるソフトウェアベンダ2におけるステップS108からステップS112までの処理と同様である。
ステップS112において保護属性が付与されると、暗号復号器134は、平文プログラムを内部メモリ120に送る(ステップS150)。さらに、保護属性付与部135は、平文プログラムに付与された保護属性を内部メモリ120に送る(ステップS152)。
内部メモリ120は、DMAコントローラ600から送られてきた復号結果である、平文プログラムC(X〜Y)を命令メモリ123に保持させる(ステップS154)。また、内部メモリ120は、保護属性を保護属性メモリ122に保持させる(ステップS156)。
そして、DMAコントローラ600から内部メモリ120への平文プログラムの転送が完了すると、プロセッサコア110に対して、DMA転送が完了したことを通知する(ステップS158)。以上の処理により、内部メモリ120にプログラムが保存され、プロセッサコア110がプログラムを実行可能な状態となる。
次に、プロセッサコア110は、命令フェッチにより、プログラムの読み出しを要求する(ステップS160)。内部メモリ120は、読出要求を取得すると、要求されたプログラムをプロセッサコア110に出力する(ステップS162)。
対象が開発鍵暗号化プログラムである場合には、ソフトウェアベンダは、鍵IDレジスタ132に鍵ID「1」を設定する(ステップS102)。したがって、暗号復号器134は、復号化処理を行い平文プログラムを得る(ステップS108,No、ステップS11
0)。そして、保護属性付与部135は、平文プログラムに非保護を示す保護属性を付与
する。
一方、対象が第1製品鍵暗号化プログラムである場合には、ソフトウェアベンダは、鍵IDレジスタ132に鍵ID「2」を設定する(ステップS102)。この場合も、暗号復号器134は復号化処理を行い、平文プログラムを得る(ステップS108,No、ステ
ップS110)。そして、保護属性付与部135は、平文プログラムに保護を示す保護属
性を付与する(ステップS112)。
図10は、図8を参照しつつ説明した処理によって内部メモリ120に保持されたプログラムを読み出す場合の読出処理を説明するためのフローチャートである。内部メモリ120の命令メモリアクセス制御部124は、命令メモリ123に保存されているプログラムの読み出しを示す読出要求を取得すると(ステップS200)、読出要求を出力した要求種別がプロセッサコア110による命令フェッチか否かを特定する。具体的には、例えば、物理的な配線によって要求種別を特定してもよい。要求種別がプロセッサコア110による命令フェッチである場合には(ステップS202,Yes)、命令メモリアクセス制御部124は、命令メモリ123に保存されている平文プログラムをプロセッサコア110に出力する(ステップS212)。
要求種別がプロセッサコア110による命令フェッチ以外である場合には(ステップS
202,No)、暗号復号器134は、要求されている平文プログラムの保護属性を特定
する(ステップS204)。要求されている平文プログラムに保護を示す保護属性が付与されている場合には(ステップS206,Yes)、エラーを出力する(ステップS210)。一方、要求されている平文プログラムに非保護を示す保護属性が付与されている場合には(ステップS206,No)、平文プログラムを出力する(ステップS212)。以上で読出処理が完了する。
ここで、プロセッサコア110が命令フェッチによって内部メモリ120の読出要求を行った場合について具体的に説明する。内部メモリ120にある命令メモリアクセス制御部124は、コアからの命令フェッチ要求であると判断すると、図8を参照しつつ説明したルールにしたがい、命令メモリ123から読み出した平文プログラムC(X〜Y)をプロセッサコア110に送る(ステップS202,Yes、ステップS212)。そして、プロセッサコア110は、取得した平文プログラムを実行する。
要求種別がプロセッサコア110による命令フェッチ以外であって(ステップS202
,No)、かつ保護属性が非保護を示す「0」である場合には、(ステップS206,N
o)、平文プログラムを出力する(ステップS212)。
要求種別がプロセッサコア110による命令フェッチ以外であって(ステップS202
,No)、かつ保護属性が保護を示す「1」である場合には(ステップS206,Yes)
、エラーを出力する(ステップS210)。
対象が開発鍵暗号化プログラムである場合には、非保護を示す保護属性が付与されているので(ステップS202,No)、命令メモリアクセス制御部124は開発鍵暗号化プログラムを復号化して得た平文プログラムへのアクセスを許可する(ステップS204〜ス
テップS208)。
一方、対象が第1製品鍵暗号化プログラムである場合には、保護を示す保護属性が付与されているので(ステップS202,Yes)、命令メモリアクセス制御部124は、要求を無効化する(ステップS210)。
このように、内部メモリ120の命令メモリアクセス制御部124は、プロセッサコア110による命令フェッチ以外の要求種別に対しては、保護を示す保護属性が付与された平文プログラムの読み出しを禁止することができる。すなわち、製品鍵暗号化プログラムの読み出しを禁止することができる。
一方で、開発鍵暗号化プログラムには、非保護を示す保護属性が付与されているので、デバッガ500は、開発鍵暗号化プログラムを取得することができる。したがって開発鍵暗号化プログラムを利用してプログラムの開発を行うことができる。
このように、製品鍵暗号化プログラムと開発鍵暗号化プログラムとをそれぞれ準備したことにより、プログラムの開発を制限することなく、第三者が当該プログラムを不正に読み出すのを防止することができる。
デバッガ500によってソフトウェアを解析する方法の1つとして、デバッガ500からデバッガインタフェース140を介して内部メモリ120に保持されている平文プログラムの読出要求を行う方法が考えられる。
しかしこの場合、要求種別がプロセッサコア110による命令フェッチ以外であることから、図10において説明した読出処理にしたがい、保護を示す保護属性が付与された平文プログラムの読み出しを制限する。すなわち、命令メモリアクセス制御部124は、デバッガインタフェース140に対してエラーを出力する。したがって、デバッガ500を介して平文プログラムが読み出されるのを防止することができる。
また他の方法としては、DMAコントローラ600を介して第三者が不正に平文プログラムを読み出す方法が考えられる。例えば、デバッガ500が、DMAコントローラ600に対して、DMA転送要求を行うことにより実現できる。このDMA転送要求は、内部メモリ120に保持されているプログラムを、内部メモリ120内の領域から外部メモリ200の適当な領域への転送要求である。
この場合、DMAコントローラ600は、デバッガ500からのDMA転送要求に対し、内部メモリ120に対して転送要求を行う。具体的には、内部メモリ120の命令メモリ123から外部メモリ200への転送要求を行う。
しかしこの場合、要求種別がプロセッサコア110による命令フェッチ以外であることから、図10において説明した読出処理に従い、保護を示す保護属性が付与されたプログ
ラムの読み出しを制限する。すなわち、エラーを出力する。
このように、デバッガ500は、デバッガインタフェース140を介したアクセスだけでなく、DMAコントローラ600を介してアクセスすることができる。しかし、この場合であっても、第三者に不正にプログラムが読み出されるのを防止することができる。
図11は、命令メモリ123に既に平文プログラムが保持された状態で新たに平文プログラムの書き込み、すなわち上書きが指示された場合の書込処理を示すフローチャートである。
内部メモリ120は、書込要求を取得すると(ステップS300)、既に保持されている平文プログラムに付与された保護属性を特定する(ステップS302)。平文プログラムに保護を示す保護属性「1」が付与されている場合には(ステップS304,Yes)、既にプログラムが保持されている命令メモリ123の内容を総てクリアする(ステップS306)。次に、書込要求が示すプログラムを命令メモリ123に書き込む(ステップS308)。
一方、平文プログラムに非保護を示す保護属性「0」が付与されている場合には(ステ
ップS304,No)、ステップS308に進む。すなわち、命令メモリ123の内容を
クリアすることなく、新たな平文プログラムを命令メモリ123に書き込む(ステップS
308)。以上で、書込処理が完了する。なお、ステップS308における書込処理は、
図9を参照しつつ説明したプログラムを取得した場合の処理と同様である。
プログラムが既に書き込まれた状態で、プログラムの上書きを許可した場合には、既にプログラムが格納されている領域へのアクセスが可能となるため、既に保持されているプログラムを読み出すことが可能である。これを利用して、第三者が不正に平文プログラムを読み出すことが考えられる。
しかし、図11を参照しつつ説明したように、保護を示す保護属性が付与されたプログラムが既に保持されている場合には、命令メモリ123にプログラムを書き込む処理が開始する前に、命令メモリ123に既に保持されているプログラムを総てクリアし、その後で新たな平文プログラムを書き込むので、既に保持されているプログラムが不正に読み出されるのを防ぐことができる。製品鍵暗号化プログラムには保護を示す保護属性が付与されているので、製品鍵暗号化プログラムが不正に読み出されるのを防ぐことができる。
なお、これ以外のソフトウェアベンダ2の構成および処理は、実施の形態1にかかるソフトウェアベンダ2の構成および処理と同様である。また、実施の形態2にかかるユーザ端末3の構成および処理は、実施の形態2にかかるソフトウェアベンダ2の構成および処理と同様である。
図10を参照しつつ、ユーザ端末3において、デバッガ500がプログラムを読み出す場合の処理について説明する。デバッガインタフェース140がデバッガ500からの読出要求を取得し(ステップS200)、命令メモリアクセス制御部124は、プログラムの保護属性を特定する。ユーザ端末3の命令メモリ123に保持されているプログラムは第1製品鍵暗号化プログラムである。当該プログラムには、保護を示す保護属性が付与されている。したがって、要求種別にかかわらずステップS210に進み、エラーを出力する。
本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
そうした第1の変更例としては、命令メモリ123は、複数の平文プログラムを同時に保持し、平文プログラム単位でアクセスを制限してもよい。図12は、この場合の保護属性メモリ122のデータ構成を模式的に示している。図12に示すように保護属性メモリ122は、平文プログラムを識別するプログラムIDと保護属性とを対応付けて保持している。ここでプログラムIDとは、ある平文のプログラムが格納されているアドレス範囲を示す識別子である。これにより、プログラム単位でアクセスを制限することができる。
そして、第1の変更例においては、命令メモリアクセス制御部124は、保護属性メモリ122における対応関係に基づいて、各平文プログラムが保持されている領域単位で命令メモリ123へのアクセスを制限する。
例えば、プログラムID「0001」に対応する領域に対する読出要求を取得したとする。図12に示すようにプログラムID「0001」で識別される平文プログラムには保護を示す保護属性が付与されている。そこで、命令メモリ123は、プログラムID「0001」で識別される平文プログラムへのアクセスを制限する。一方、プログラムID「0002」で識別される保護プログラムへのアクセスは許可する。
具体的には、プログラムID「0001」の読出要求を取得した場合には、プログラムID「0001」で識別される平文プログラムには、保護を示す保護属性が付与されているので、図10に示す読出処理にしたがい、平文プログラムを出力するか、エラーを出力するかを決定する。
一方、プログラムID「0002」の読出要求を取得した場合には、プログラムID「0002」で識別される平文プログラムには、非保護を示す保護属性が付与されているので、図10に示す読出処理にしたがい、エラーを出力する。
またプログラムID「0001」の書込要求を取得した場合には、プログラムID「0001」で識別される平文プログラムには、保護を示す保護属性が付与されているので、図11に示す書込処理にしたがい、平文プログラムが既に保持されている領域に新たにプログラムを書き込む前に、既に保持されている平文プログラムをクリアする。
一方、プログラムID「0002」の書込要求を取得した場合には、プログラムID「0002」で識別される平文プログラムには、非保護を示す保護属性が付与されているので、図11に示す書込処理にしたがい、既に保持されている平文プログラムをクリアせずに、平文プログラムが既に保持されている領域に新たにプログラムを書き込む。
このように、保護を示す保護属性を付与された平文プログラムと、非保護を示す保護属性を付与された平文プログラムとを同時に保持している場合であっても、保護を示す保護属性が付与された平文プログラムへのアクセスのみを制限することができるので、所定の平文プログラムが第三者に不正に読み出されるのを防止することができる。
第2の変更例としては、第1の変更例においては、保護属性メモリ122は、プログラムIDと保護属性とを対応付けて保持していたが、これにかえて保護属性メモリ122は、命令メモリ123におけるバンク位置と保護属性とを対応付けて保持してもよい。
図13は、この場合の保護属性メモリ122のデータ構成を模式的に示している。図13に示すように、保護属性メモリ122は、命令メモリ123におけるバンク位置と各バンク位置に保持されている平文プログラムに付与された保護属性とを対応付けて保持している。第2の変更例においては、命令メモリアクセス制御部124は、バンク位置と保護
属性との対応関係に基づいて各プログラムが保持されている領域単位で命令メモリ123へのアクセスを制御する。
例えば、バンク1と保護を示す保護属性とが対応付けられており、かつバンク1にプログラムID「0001」で識別される平文プログラムが保持されている場合には、プログラムID「0001」で識別される平文プログラムへのアクセスを制限する。また、バンク2にプログラムID「0002」で識別される平文プログラムが保持されている場合には、プログラムID「0002」で識別される平文プログラムへのアクセスを制限する。
このように、第2の変更例によれば、命令メモリ123が複数のプログラムを同時に保持している場合であっても、バンク単位で、第三者が平文プログラムを不正に読み出すのを防止することができる。
第3の変更例としては、実施の形態2においては、プログラムに対するアクセス制御について説明したが、これにかえてデータに対するアクセス制御を行ってもよい。図14は、第3の変更例にかかるシステム10の全体構成を示す図である。データメモリ部125は、命令メモリ部121と同様に、保護属性メモリ126と、データメモリ127と、データメモリアクセス制御部128とを有する。
なお、保護属性メモリ126の構成および処理は、保護属性メモリ122の構成および処理と同様である。また、データメモリ127の構成および処理は、命令メモリ123の構成および処理と同様である。また、データメモリアクセス制御部128の構成および処理は、命令メモリアクセス制御部124の構成および処理と同様である。
また、他の例としては、プログラムに対するアクセス制御とデータに対するアクセス制御とをともに行ってもよい。このように、アクセス制御の対象は、実施の形態に限定されるものではない。
第4の変更例としては、第3の変更例のようにデータに対するアクセス制御を行う場合、図11に示すように書き込み処理においては、データに付与された保護属性に基づいて、データを書き込む前に既に保持されているデータをクリアするか否かを決定したが、他の例としては、保護属性に加えて、要求元に応じてデータをクリアするか否かを決定してもよい。
図15は、第4の変更例にかかる書込処理を示すフローチャートである。図15に示すように、第4の変更例にかかる書込処理においては、取得した書込要求の要求種別がプロセッサコアからの書き込み要求である場合には(ステップS320,Yes)、ステップS308へ進む。すなわち、要求種別がプロセッサコア110からの書き込み要求である場合にはクリア処理を行わずに新たな平文プログラムの書き込みを行う。
このように、要求種別に基づいてアクセスを制御することにより、他の要求種別からのアクセスを制御することなく、所定の要求種別からのアクセスのみを効率的に制御することができる。
第5の変更例としては、実施の形態2においては、保護を示す保護属性が付与された平文プログラムに対する読出要求を取得した場合のアクセス制御として、読み出しを禁止することとしたが、これにかえて、暗号化した状態でプログラムを提供することとしてもよい。これにより、アクセス制御を行う場合には、プログラムが平文の状態で読み出されることがないので、第三者が不正に平文プログラムを読み出すのを防止することができる。
第6の変更例としては、実施の形態2においては、既に平文プログラムが保持されている領域にプログラムを上書きする場合には、プログラムの保護属性に応じて上書き処理の前に既に保持されているプログラムをクリアするか否かを決定したが、さらにユーザからの指示によって、プログラムをクリアするか否かを決定してもよい。
具体的には、既に保持されている平文プログラムに対するアクセス制御を行う場合には、ユーザインターフェース300を介してユーザから既に保持されている平文プログラムをクリアする旨の指示を受け付けた場合にのみ平文プログラムをクリアし、これ以外の場合にはエラーを出力してもよい。これにより、ユーザがクリアをしない限り書き込みが出来ず、平文プログラムを保護できる。
第7の変更例としては、実施の形態2においては、DMAコントローラ600が保護属性付与部135を有していたが、これにかえて内部メモリ120が保護属性付与部135を有してもよい。この場合、DMAコントローラ600は、鍵IDレジスタ132に保持されている鍵IDを内部メモリ120に出力する。そして、内部メモリ120において、保護属性付与部135は、鍵IDレジスタ132から取得した鍵IDに基づいて保護属性を付与する。そして、保護属性付与部135は、付与した保護属性を保護属性メモリ122に保持させる。
(実施の形態3)
図16は、実施の形態3にかかるユーザ端末3の全体構成を示すブロック図である。ユーザ端末3は、マイクロプロセッサ100と、外部メモリ200と、ユーザインターフェース300と、外部バス400と、デバッガ500とを備えている。
また、マイクロプロセッサ100は、プロセッサコア110と、デバッガインタフェース140と、公開鍵処理部170と、BIU602と、キャッシュコントローラ180と、セキュアコンテキストスイッチ部190とを有している。
公開鍵処理部170は、秘密鍵テーブル172と、配布鍵復号化部174とを有している。図17は、秘密鍵テーブル172のデータ構成を模式的に示す図である。秘密鍵テーブル172は、秘密鍵と公開鍵とを対応付けて複数保持している。さらに、公開鍵を識別する公開鍵IDを公開鍵に対応付けて保持している。
本実施の形態においては、公開鍵ID「1」に対応付けて開発用公開鍵と開発用秘密鍵とを保持している。また、公開鍵ID「2」に対応付けて製品用公開鍵と製品用秘密鍵とを保持している。
また、配布鍵復号化部174は、ユーザからの指示にしたがい秘密鍵テーブル172に保持されている秘密鍵を利用して、配布鍵を復号化し、共通鍵を得る。なお、ユーザ端末3は、配布鍵として公開鍵を取得する。
これ以降、開発用公開鍵で暗号化された配布鍵を開発用配布鍵、製品用公開鍵で暗号化された配布鍵を製品用配布鍵とする。また、開発用配布鍵に含まれる共通鍵で暗号化されたプログラムを開発鍵暗号化プログラム、製品用配布鍵に含まれる共通鍵で暗号化されたプログラムを製品鍵暗号化プログラムとする。
BIU602は、共通鍵テーブル139と、公開鍵ID特定部137と、保護属性付与部135と、暗号復号器134とを有している。
図18は、共通鍵テーブル139のデータ構成を模式的に示す図である。共通鍵テーブル139は、タスクIDと、公開鍵IDと、共通鍵とを対応付けて保持している。ここで、タスクIDは、公開鍵処理部170から通知される。
暗号復号器134は、公開鍵処理部170からタスクIDの指定を受けると共通鍵テーブル139において、指定されたタスクIDに対応付けられている共通鍵を利用して暗号化プログラムを復号化し、平文プログラムを得る。暗号復号器134は、平文プログラムをキャッシュコントローラ180に出力する。
公開鍵ID特定部137は、公開鍵処理部170からタスクIDの指定を受けると保護属性付与部135において、指定されたタスクIDに対応付けられている公開鍵IDを特定する。
保護属性付与部135は、公開鍵ID特定部137が特定した公開鍵IDに基づいて保護属性を付与する。具体的には、平文プログラムに対しては、非保護を示す保護属性「0」を付与する。また、開発用公開鍵IDに対応するプログラムに対しても、非保護を示す保護属性「0」を付与する。製品用公開鍵IDに対応するプログラムに対しては、保護を示す保護属性「1」を付与する。保護属性付与部135は、保護属性をキャッシュコントローラ180に出力する。
キャッシュコントローラ180は、命令キャッシュ182と、命令キャッシュアクセス制御部184と、データキャッシュ186と、データキャッシュアクセス制御部188とを有している。
図19は、命令キャッシュ182のデータ構成を模式的に示している。命令キャッシュ182は、アドレスタグ、プログラム、保護属性を保持する領域を有している。命令キャッシュアクセス制御部184は、外部から命令キャッシュ182へのアクセスを制御する。すなわち、命令キャッシュ182に保持されているプログラムの読み出しおよび書き込みを制御する。
プロセッサコア110は、カレントタスクIDレジスタ112と、汎用レジスタ114とを有している。カレントタスクIDレジスタ112は、実行中のタスクのタスクIDを保持する。汎用レジスタ114は、実行中のプログラムを保持する。
セキュアコンテキストスイッチ部190は、コンテキストを保持するためのコンテキストバッファ192とプロセッサコア110とコンテキストバッファ192の間の制御を行うコンテキスト制御部194を有している。コンテキスト制御部194は、割り込みが発行されたとき、プロセッサコア110の汎用レジスタ114の内容を読み出して、コンテキストバッファ192に書き込み、汎用レジスタ114の内容をクリアする。また、タスクを再開するための命令が発行されたとき、コンテキストバッファ192に保存されたコンテキストを汎用レジスタ114に復帰させる。
図20は、命令キャッシュアクセス制御部184におけるアクセス制御のルールを模式的に示している。保護属性が非保護を示す場合、すなわち平文プログラムとして外部メモリ200から取得したプログラムまたは開発鍵暗号化プログラムとして外部メモリ200から取得したプログラムである場合には、当該プログラムへのアクセスを許可する。また、プロセッサコア110による命令フェッチであって、かつ保護属性が保護を示す場合、すなわち製品鍵暗号化プログラムとして外部メモリ200から取得したプログラムである場合には、当該プログラムへのアクセスを許可する。
一方、プロセッサコア110による命令フェッチ以外であって、かつ保護属性が保護を示す場合には、当該プログラムへのアクセスを制限する。すなわち、エラーを出力する。
図21は、実施の形態3にかかるソフトウェアベンダ2において、ソフトウェア開発時にデバッグを行う場合の処理を示すフローチャートである。デバッグを行う場合、保護したいプログラムPを予め独自の共通鍵Kxで暗号化し、開発鍵暗号化プログラムE(Kx,P)を得る。そして、Kxなどを含むKを開発用公開鍵Kp1でプログラムPを暗号化し、開発用配布鍵E(Kp1,K)を得る。そして、開発鍵暗号化プログラムE(Kx,P)を外部メモリ200に保持させる。また、開発用配布鍵E(Kp1,K)を外部メモリ200に保持させる。ここで、E(X,Y)とは、鍵XでデータYを暗号化して得られるデータを示している。
ソフトウェアベンダ2は、作成したプログラムE(Kx,P)と開発用配布鍵E(Kp
1,K)とを外部メモリ200に格納する。そして、適当なタスクIDと開発用公開鍵の
公開鍵IDとを指定して鍵登録命令を発行する(ステップS400)。
このとき、プロセッサコア110は、さらに公開鍵処理部170に対し鍵登録命令を発行する(ステップS402)。公開鍵処理部170は、秘密鍵テーブル172において鍵登録命令に示された鍵公開IDに対応付けられている秘密鍵を特定する(ステップS404)。そして、配布鍵復号化部174は、秘密鍵で開発用配布鍵E(Kp1,K)を復号化して、共通鍵Kxを得る(ステップS406)。なお、開発用配布鍵E(Kp1,K)は、外部メモリ200より取得する。このように、本実施の形態においては、開発用配布鍵E(Kp
1,K)として共通鍵を外部メモリ200から取得する。
次に、公開鍵処理部170は、共通鍵Kxと、タスクIDと、公開鍵IDとを合わせてBIU602に通知する(ステップS408)。
BIU602は、通知された情報を共通鍵テーブル139に登録する(ステップS41
0)。そして、プロセッサコア110に対して登録完了を通知する(ステップS412)。
プロセッサコア110は、キャッシュコントローラ180に対し、カレントタスクIDと、プログラムの開始番地を指定してプログラムの開始命令を発行することによりプログラムの実行を開始する。プログラム開始命令においては、例えば、カレントタスクID「3」、プログラムの開始番地「X1」と指定する。
プロセッサコア110は、プログラム開始命令を発行した後、指定されたカレントタスクIDをカレントタスクIDレジスタ112に保持させる。そして、キャッシュコントローラ180に対し、タスクIDおよび読み出し開始番地を指定してプログラムの読出要求を送る(ステップS414)。
読出要求において指定されたプログラムが命令キャッシュ182に保持されていない場合には(ステップS416,No)、キャッシュコントローラ180は、BIU130に対しプログラムの読出要求を送る(ステップS418)。ここで、BIU602に送る読出要求には、対象がプログラムであることを示すフラグ、タスクID、および開始番地が含まれている。
BIU602は、キャッシュコントローラ180からの読出要求により、外部メモリ200から開始番地にあるプログラムを読み出す(ステップS420)。さらに、暗号復号器134は、共通鍵テーブル139からタスクIDに対応する共通鍵Kxを選択し、外部メモリ200から読み出したプログラムを復号化する(ステップS422)。
次に、暗号復号器134は、復号化したプログラムをキャッシュコントローラ180に出力する(ステップS424)。公開鍵ID特定部137は、タスクIDから公開鍵IDを
特定する。保護属性付与部135は、公開鍵ID特定部137が特定した公開鍵IDから復号化したプログラムに対して保護属性を付与する。そして、付与した保護属性をキャッシュコントローラ180に出力する(ステップS426)。
キャッシュコントローラ180は、BIU602から取得したプログラム、および保護属性を命令キャッシュ182に保持する(ステップS428)。次に、キャッシュコントローラ180は、プログラムをプロセッサコア110に出力する(ステップS430)。
なお、ステップS416において、キャッシュコントローラ180の命令キャッシュ182に読出要求において指定されたプログラムが保持されている場合には(ステップS4
16,Yes)、ステップS430に進む。以上で、プログラムを読み出す場合の処理が
完了する。
図22は、プログラムの読出要求を取得した場合のキャッシュコントローラ180の読出処理を示すフローチャートである。命令キャッシュ182の命令キャッシュアクセス制御部184は、命令キャッシュ182に保存されているプログラムの読み出しを示す読出要求を取得すると(ステップS500)、要求種別がプロセッサコア110による命令フェッチか否かを特定する。具体的には、例えば、物理的な配線によって要求種別を特定してもよい。要求種別がプロセッサコア110による命令フェッチである場合には(ステッ
プS501,Yes)、命令キャッシュアクセス制御部184は、命令キャッシュ182
に保存されている平文プログラムをプロセッサコア110に出力する(ステップS506)。要求種別がプロセッサコア110による命令フェッチ以外である場合には(ステップ
S501,No)、命令キャッシュ182に保持されているプログラムの保護属性を特定
する(ステップS502)。保護を示す保護属性が付与されている場合には(ステップS5
04、Yes)、エラーを出力する(ステップS510)。
一方、非保護を示す保護属性が付与されている場合には(ステップS504,No)、命令キャッシュ182に保持されているプログラムを提供する(ステップS506)。以上で、キャッシュコントローラ180の読出処理が完了する。
対象が開発鍵暗号化プログラムである場合には、非保護を示す保護属性が付与されている。したがって、キャッシュコントローラ180は、デバッガ500から当該プログラムの読出要求を取得すると、当該プログラムをデバッガ500に提供する(ステップS50
4,No、ステップS506)。
一方、対象が製品鍵暗号化プログラムである場合には、保護を示す保護属性が付与されている。したがって、キャッシュコントローラ180は、デバッガ500から当該プログラムの読出要求を取得すると、エラーを出力する(ステップS504,Yes、ステップ
S510)。
このように、開発用公開鍵と製品用公開鍵に異なる公開鍵IDを付与し、公開鍵IDの値に基づいて保護属性を付与することにより、製品鍵暗号化プログラムのみ解析を制限することができる。
実施の形態3にかかる第1の変更例としては、本実施の形態においては、命令キャッシュ182に保持されるプログラムについてのアクセスを制御したが、同様にデータキャッシュ186に保持されるデータについてのアクセスを制御してもよい。なお、この場合のデータキャッシュ186およびデータキャッシュアクセス制御部188における処理は、それぞれ命令キャッシュ182および命令キャッシュアクセス制御部184の処理と同様である。
(実施の形態4)
次に実施の形態4にかかるユーザ端末3について説明する。実施の形態4にかかるユーザ端末3の構成は、実施の形態3にかかるユーザ端末3の構成と同様である。
実施の形態4にかかるユーザ端末3は、外部メモリ200から複数の種類の情報を読み出す。そして、情報の種類に応じて、当該情報を復号化するか否かを決定する。この点で、他の実施の形態にかかるユーザ端末3と異なっている。
図23は、実施の形態4にかかるユーザ端末3の全体構成を示すブロック図である。実施の形態4にかかるユーザ端末3のBIU604は、実施の形態3にかかるBIU602の構成に加えて暗号復号要求生成部138をさらに有している。暗号復号要求生成部138は、暗号復号器134による暗号化および復号化を行うか否かを暗号復号器134に対して要求する。
図24は、暗号復号要求生成部138が暗号化および復号化するか否かを決定するためのルールを模式的に示している。例えば、公開鍵IDが「0」で、対象となる情報がプログラムである場合には、スルー要求を生成する。すなわち、公開鍵ID「0」で識別される公開鍵で暗号化されたプログラムに対しては、暗号復号器134は、暗号化および復号化を行わない。また、公開鍵IDが「2」で、対象となる情報がプログラムである場合には、暗号復号要求を生成する。すなわち、公開鍵ID「2」で識別される公開鍵で暗号化されたプログラムに対しては、暗号復号器134は、暗号化および復号化を行う。
このように、タスクIDに対応付けられている公開鍵IDおよび対象となる情報の種類に基づいて、暗号復号器134の処理を制御することができる。具体的には、暗号復号器134における暗号化処理及び復号化処理を行うか否かを決定することができる。
図25は、実施の形態4にかかるユーザ端末3におけるプロセッサコア110への情報の読込処理を示すフローチャートである。なお、鍵を登録するとき処理は、図21を参照しつつ説明した実施の形態3にかかるソフトウェアベンダ2が鍵を登録するときの処理と同様である。
鍵が登録され後に、プロセッサコア110は、キャッシュコントローラ180に対し情報の読出要求を出力する(ステップS600)。キャッシュコントローラ180は、情報読
出要求を取得すると、情報読出要求によって要求されている情報を保持しているか否かを確認する。要求されている情報を保持していない場合には(ステップS602,Yes)、
キャッシュコントローラ180は、BIU604に対して情報読出要求を出力する(ステ
ップS604)。
次に、BIU604は、外部メモリ200に対して情報読出要求を出力し、外部メモリ200から要求されている情報を取得する(ステップS606)。次に、BIU604の暗号復号要求生成部138は、図24を参照しつつ説明したルールにしたがい、暗号復号器134に対して出力する要求を生成する(ステップS608)。
暗号復号要求生成部138が復号要求を生成し、復号要求を暗号復号器134に出力した場合には(ステップS610,Yes)、暗号復号器134は、外部メモリ200から取得した情報を復号化する(ステップS612)。そして、復号化した情報をキャッシュコントローラ180に出力する(ステップS614)。
一方、暗号復号要求生成部138がスルー要求を生成し、スルー要求を暗号復号器13
4に出力した場合には(ステップS610,No)、暗号復号器134は、外部メモリ200から取得した情報を復号化せずにキャッシュコントローラ180に出力する(ステップ
S614)。
キャッシュコントローラ180は、BIU604から取得した情報を命令キャッシュ182またはデータキャッシュ186に保持させる(ステップS616)。キャッシュコントローラ180は、さらにBIU604から取得した情報をプロセッサコア110に出力する(ステップS618)。以上で、プロセッサコア110への読込処理が完了する。
図26は、プロセッサコア110が出力する情報読出要求において、タスクID「3」、開始アドレス「X1」が指定されている場合の処理について説明する。なお、読出要求の対象となる情報は、プログラムである。
この場合、プロセッサコア110は、プログラム開始命令が発行されると、カレントタスクIDレジスタ112に入力されたタスクIDを保持し、キャッシュコントローラ180に対して、上述の情報読出要求を出力する(ステップS600)。
キャッシュコントローラ180は、命令キャッシュ182に有効で、かつ該当するプログラムが保持されていないため(ステップS602,No)、BIU604に対して対象がプログラムであることを示すフラグと、タスクID「3」と、開始アドレス「X1」とを含む情報読出要求を出力する(ステップS604)。BIU604は、開始アドレス「X1」を含む情報読出要求を外部メモリ200に出力することにより、外部メモリ200から要求対象のプログラムC(X1)を取得する(ステップS0606)。
公開鍵ID特定部137は、タスクID「3」と共通鍵テーブル139から公開鍵ID「1」を特定する。暗号復号要求生成部138は、公開鍵ID特定部137が特定した公開鍵ID「1」から、図24を参照しつつ説明したルールにしたがい暗号復号器134に出力すべき要求を生成する。ここで、公開鍵ID「1」であり、対象とする情報はプログラムであるので、図24に示すルールにしたがいスルー要求を生成する(ステップS60
8)。
暗号復号器134は、暗号復号要求生成部138からスルー要求を取得すると、外部メモリ200から取得したプログラムに対する復号処理を行わずに(ステップS610,N
o)、プログラムC(X1)と、タスクID「3」とをキャッシュコントローラ180に
出力する(ステップS614)。そして、キャッシュコントローラ180は、命令キャッシュ182に外部メモリ200から読み出したプログラムC(X1)と、タスクID「3」とを保持させ、プロセッサコア110にプログラムC(X1)を出力する(ステップS6
16)。以上で、タスクID「3」、開始アドレス「X1」が指定されている場合の処理
が完了する。
図27は、プロセッサコア110が出力する情報読出要求において、タスク「3」、開始アドレス「Y1」が指定されている場合の処理について説明する。なお、読出要求の対象となる情報は、データである。
この場合、プロセッサコア110は、キャッシュコントローラ180に対して情報読出要求を出力する(ステップS600)。キャッシュコントローラ180は、命令キャッシュ182に有効で、かつ該当するデータがないため(ステップS602,No)、BIU604に対して対象がデータであることを示すフラグと、タスクID「3」と、開始アドレス「Y1」とを含む情報読出要求を出力する(ステップS604)。
BIU604は、アドレス「Y1」を含む情報読出要求を外部メモリ200に出力することにより、外部メモリ200から要求対象のデータC(Y1)を取得する(ステップS
0606)。
公開鍵ID特定部137は、タスクID「3」と共通鍵テーブルから公開鍵ID「1」を特定する。暗号復号要求生成部138はまた、公開鍵ID特定部137が特定した公開鍵ID「1」から、図24を参照しつつ説明したルールにしたがい暗号復号器134に出力すべき要求を生成する。ここで、公開鍵ID「1」であり、対象とする情報はデータであるので、図24に示すルールにしたがい復号要求を生成する(ステップS608)。
暗号復号器134は、暗号復号要求生成部138から復号要求を取得すると(ステップ
S610,Yes)、外部メモリ200から取得したプログラムに対する復号処理を行う(ステップS612)。そして、データC(Y1)と、タスクID「3」とをキャッシュコ
ントローラ180に出力する(ステップS614)。
そして、キャッシュコントローラ180は、命令キャッシュ182に外部メモリ200から読み出したデータC(Y1)と、タスクID「3」とを保持させ、プロセッサコア110にデータC(Y1)を出力する(ステップS616)。以上で、タスクID「3」、開始アドレス「Y1」が指定されている場合の処理が完了する。
このように、実施の形態4にかかるユーザ端末3は、公開鍵IDおよび情報の種類に基づいて、当該情報に対する暗号化および復号化を行うか否かを決定することができる。
例えば、暗号機能を利用することによって生じる暗号遅延を最小限にして、低コストの処理能力でソフトウェアを動作させるためには、プログラムのみを暗号復号対象とし、データおよびコンテキストは平文として扱うのが望ましい。このような場合に、本実施の形態にかかるユーザ端末3においては、上記処理によってプログラムに対してのみ暗号化および復号化を行うことができる。
なお、実施の形態4にかかるユーザ端末3のこれ以外の構成および処理は、実施の形態3にかかるユーザ端末3の構成および処理と同様である。
実施の形態4にかかるユーザ端末3の第1の変更例としては、本実施の形態においては、公開鍵IDに基づいて暗号復号処理を行うか否かを決定したが、これにかえて公開鍵IDに基づいてセキュアコンテキストスイッチ部190における機能を制御してもよい。具体的には、コンテキストをコンテキストバッファ192に保持するか否かを制御してもよい。また、コンテキストバッファ192に保持されているコンテキストをプロセッサコア110に復帰させるか否かを制御してもよい。
第2の変更例としては、公開鍵IDに基づいてキャッシュコントローラ180の機能を制御してもよい。具体的には、キャッシュコントローラ180へのプログラムやデータのアクセス制御にタスクIDを用いるか否かを制御してもよい。
実施の形態1にかかるプログラム開発システム4の全体を示す図である。 ソフトウェアベンダ2のシステム10の全体構成を示すブロック図である。 鍵テーブル133のデータ構成を模式的に示す図である。 保護属性付与部135が保護属性を付与するときに利用する保護属性決定テーブル136を示す図である。 ソフトウェアベンダ2が開発中のプログラムを外部メモリ200からマイクロプロセッサ100に読み込むときの読込処理を示すフローチャートである。 図5を参照しつつ説明した処理によってプロセッサコア110に送られた平文プログラムをデバッガ500が読み出す場合の読出処理を説明するためのフローチャートである。 実施の形態2にかかるソフトウェアベンダ2のシステム10を示す図である。 命令メモリアクセス制御部124のアクセス制御のルールを模式的に示す図である。 ソフトウェアベンダ2が開発中のプログラムを外部メモリ200から取得するときの処理を示すフローチャートである。 図5を参照しつつ説明した処理によって内部メモリ120に保持されたプログラムを読み出す場合の読出処理を説明するためのフローチャートである。 命令メモリ123に既に平文プログラムが保持された状態で新たに平文プログラムの書き込み、すなわち上書きが指示された場合の書込処理を示すフローチャートである。 実施の形態2の第1の変更例にかかる保護属性メモリ122のデータ構成を模式的に示す図である。 実施の形態2の第2の変更例にかかる保護属性メモリ122のデータ構成を模式的に示す図である。 実施の形態2の第3の変更例にかかるシステム10の全体構成を示す図である。 実施の形態2の第4の変更例にかかる書込処理を示すフローチャートである。 実施の形態3にかかるユーザ端末3の全体構成を示すブロック図である。 秘密鍵テーブル172のデータ構成を模式的に示す図である。 共通鍵テーブル139のデータ構成を模式的に示す図である。 命令キャッシュ182のデータ構成を模式的に示す図である。 命令キャッシュアクセス制御部184におけるアクセス制御のルールを模式的に示す図である。 実施の形態3にかかるソフトウェアベンダ2において、ソフトウェア開発時にデバッグを行う場合の処理を示すフローチャートである。 プログラムの読出要求を取得した場合のキャッシュコントローラ180の読出処理を示すフローチャートである。 図23は、実施の形態4にかかるユーザ端末3の全体構成を示すブロック図である。 暗号復号要求生成部138が暗号化および復号化するか否かを決定するためのルールを模式的に示す図である。 実施の形態4にかかるユーザ端末3におけるプロセッサコア110への情報の読込処理を示すフローチャートである。 プロセッサコア110が出力する情報読出要求において、タスクID「3」、開始アドレス「X1」が指定されている場合の処理について説明するためのフローチャートである。 プロセッサコア110が出力する情報読出要求において、タスク「3」、開始アドレス「Y1」が指定されている場合の処理について説明するためのフローチャートである。
符号の説明
1 プロセッサ開発ベンダ
2 ソフトウェアベンダ
3 ユーザ端末
4 プログラム開発システム
10 システム
100 マイクロプロセッサ
110 プロセッサコア
112 カレントタスクIDレジスタ
114 汎用レジスタ
120 内部メモリ
121 命令メモリ部
122 保護属性メモリ
123 命令メモリ
124 命令メモリアクセス制御部
125 データメモリ部
126 保護属性メモリ
127 データメモリ
128 データメモリアクセス制御部
130,602,604 BIU
131 コントローラ
132 鍵IDレジスタ
133 鍵テーブル
134 暗号復号器
135 保護属性付与部
136 保護属性決定テーブル
137 公開鍵ID特定部
138 暗号復号要求生成部
139 共通鍵テーブル
140 デバッガインタフェース
142 デバッガアクセス制御部
170 公開鍵処理部
172 秘密鍵テーブル
174 配布鍵復号化部
180 キャッシュコントローラ
182 命令キャッシュ
184 命令キャッシュアクセス制御部
186 データキャッシュ
188 データキャッシュアクセス制御部
190 セキュアコンテキストスイッチ部
192 コンテキストバッファ
194 コンテキスト制御部
200 外部メモリ
300 ユーザインターフェース
400 外部バス
500 デバッガ
600 DMAコントローラ

Claims (20)

  1. プロセッサコアを備えたマイクロプロセッサであって、
    前記プロセッサコアが利用すべき情報を外部から取得する情報取得手段と、
    前記情報取得手段が取得した情報が暗号化された暗号化情報である場合に、当該暗号化情報を暗号復号鍵を利用して復号化し、平文情報を得る復号化手段と、
    前記復号化手段が前記暗号化情報を復号化するときに利用する前記暗号復号鍵に基づいて、前記情報取得手段が取得した前記情報に対する処理を制御する制御手段と
    を備えたことを特徴とするマイクロプロセッサ。
  2. 前記情報取得手段は、前記情報を製品として提供するときに利用すべき暗号復号鍵である製品鍵で暗号化された製品鍵暗号化情報を取得し、
    前記制御手段は、前記製品鍵暗号化情報に対する処理を制限することを特徴とする請求項1に記載のマイクロプロセッサ。
  3. 前記情報取得手段は、前記情報を開発するときに利用すべき暗号復号鍵である開発鍵で暗号化された開発鍵暗号化情報を取得し、
    前記制御手段は前記開発鍵暗号化情報に対する処理を許可することを特徴とする請求項1または2に記載のマイクロプロセッサ。
  4. 前記情報を開発するときに利用すべき暗号復号鍵である開発鍵を生成する開発鍵生成手段をさらに備え、
    前記制御手段は、前記開発鍵生成手段によって生成された前記開発鍵で暗号化された前記開発鍵暗号化情報に対する処理を許可することを特徴とする請求項3に記載のマイクロプロセッサ。
  5. 前記開発鍵生成手段は、前記製品鍵と同一の値を示す開発鍵を生成し、
    前記制御手段は、前記開発鍵生成手段によって生成された前記開発鍵で暗号化された前記開発鍵暗号化情報に対する処理を許可することを特徴とする請求項4に記載のマイクロプロセッサ。
  6. 前記復号化手段が復号化を行うときに利用する暗号復号鍵であって前記情報を製品として提供するときに利用すべき暗号復号鍵である製品鍵と、前記情報を開発するときに利用すべき暗号復号鍵である開発鍵とを保持する暗号復号鍵保持手段、
    前記暗号復号鍵保持手段が保持している前記暗号復号鍵を識別する鍵識別情報と、前記暗号復号鍵が前記開発鍵であるか前記製品鍵であるかを示す鍵種情報とを対応付けて保持する鍵種テーブルと
    をさらに備え、
    前記制御手段は、前記鍵種テーブルにおいて、前記復号化手段が利用した前記暗号復号鍵に対応付けられている鍵種情報を特定し、特定した鍵種情報に基づいて、前記情報取得手段が取得した前記情報に対する処理を制御することを特徴とする請求項1から5のいずれか一項に記載のマイクロプロセッサ。
  7. 前記復号化手段が復号化を行うときに利用すべき前記暗号復号鍵の指定を受け付ける暗号復号鍵指定手段をさらに備え、
    前記復号化手段は、前記復号鍵指定手段によって指定された前記暗号復号鍵を利用して前記復号化を行い、
    前記制御手段は、前記復号鍵指定手段によって指定された前記暗号復号鍵に基づいて、前記情報取得手段が取得した前記情報に対する処理を制御することを特徴とする請求項1から6のいずれか一項に記載のマイクロプロセッサ。
  8. 前記情報取得手段は、前記暗号化情報と共に、前記復号化手段が復号化処理において利用すべき前記暗号復号鍵を取得し、
    前記復号化手段は、前記情報取得手段が取得した前記暗号復号鍵を利用して復号化を行い、
    前記制御手段は、前記情報取得手段が取得した前記暗号復号鍵に基づいて、前記情報取得手段が取得した前記情報に対する処理を制御することを特徴とする請求項1か6のいずれか一項に記載のマイクロプロセッサ。
  9. 前記復号化手段が復号化によって得た前記平文情報を保持する平文情報保持手段と、
    前記平文情報保持手段に保持されている前記平文情報へのアクセス要求を取得するアクセス要求取得手段と、
    前記アクセス要求取得手段が取得した前記アクセス要求の要求種別を特定する要求種別特定手段と
    をさらに備え、
    前記制御手段は、前記プロセッサコアが実行すべき前記平文情報を、前記要求種別特定手段が特定した前記要求種別、および前記復号手段が前記復号化情報を復号化するときに利用する前記暗号復号鍵に基づいて、前記平文情報へのアクセスを制御することを特徴とする請求項1から8のいずれか一項に記載のマイクロプロセッサ。
  10. 前記制御手段は、前記要求種別特定手段が特定した前記要求種別が、予め登録されている登録要求種別以外の要求種別である場合に、前記平文情報へのアクセスを制限することを特徴とする請求項9に記載のマイクロプロセッサ。
  11. 前記制御手段は、前記要求種別特定手段が特定した前記要求種別が予め登録されている登録要求種別以外の要求種別であって、かつ前記平文情報を復号化するときに利用する前記暗号復号鍵に基づいて、前記平文情報へのアクセスを制御することを特徴とする請求項10に記載のマイクロプロセッサ。
  12. 前記制御手段は、前記要求種別および前記暗号復号鍵に基づいて、前記平文情報へのアクセスを禁止することを特徴とする請求項1から11のいずれか一項に記載のマイクロプロセッサ。
  13. 前記制御手段は、前記要求種別および前記暗号復号鍵に基づいて、前記要求種別へ前記平文情報を出力するか、前記平文情報を暗号化した暗号化情報を出力するかを決定することを特徴とする請求項1から11のいずれか一項に記載のマイクロプロセッサ。
  14. 前記制御手段は、前記要求種別および前記保護属性に基づいて、前記平文情報への上書きを制限することを特徴とする請求項1から11のいずれか一項に記載のマイクロプロセッサ。
  15. 前記平文情報保持手段は、内部メモリに設けられており、
    前記登録要求種別として、前記プロセッサコアによる命令フェッチが登録されており、
    前記アクセス制御手段は、前記要求種別特定手段が特定した前記要求種別が前記プロセッサコアによる命令フェッチ以外である場合にアクセスを制限することを特徴とする請求項9に記載のマイクロプロセッサ。
  16. 前記制御手段は、前記要求種別および前記暗号復号鍵に基づいて、前記プロセッサコアが実行している前記平文情報へのアクセスを制限することを特徴とする請求項9に記載のマイクロプロセッサ。
  17. 前記制御手段は、前記暗号復号鍵に基づいて、前記情報取得手段が取得した前記情報に対する暗号化および復号化を制御することを特徴とする請求項1に記載のマイクロプロセッサ。
  18. 前記情報取得手段が取得した情報を保持するキャッシュメモリをさらに備え、
    前記制御手段は、前記情報を復号化するときに利用する前記暗号復号鍵に基づいて、前記キャッシュメモリが保持する前記情報の読み出しを制御することを特徴とする請求項1に記載のマイクロプロセッサ。
  19. 前記情報取得手段が取得した情報を前記プロセッサコアが実行しているときに、前記プロセッサコアが実行している前記情報の退避および復帰を管理するセキュアコンテキストスイッチ手段をさらに備え、
    前記制御手段は、前記情報を復号化するときに利用する前記暗号復号鍵に基づいて、前記コンテキストスイッチ手段における情報の退避および復帰を制御することを特徴とする請求項1に記載のマイクロプロセッサ。
  20. 公開鍵を利用して暗号化された配布鍵を取得する配布鍵取得手段と、
    前記配布鍵取得手段が取得した前記配布鍵を前記公開鍵を利用して復号化して前記暗号復号鍵を得る鍵復号化手段と
    をさらに備え、
    前記制御手段は、前記鍵復号化手段が前記暗号復号鍵を得たときに利用した前記公開鍵に基づいて前記情報に対する処理を制御することを特徴とする請求項1に記載のマイクロプロセッサ。
JP2004226885A 2004-06-24 2004-08-03 マイクロプロセッサ Expired - Fee Related JP4559794B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004226885A JP4559794B2 (ja) 2004-06-24 2004-08-03 マイクロプロセッサ
US11/060,704 US8191155B2 (en) 2004-06-24 2005-02-18 Microprocessor

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004186911 2004-06-24
JP2004226885A JP4559794B2 (ja) 2004-06-24 2004-08-03 マイクロプロセッサ

Publications (2)

Publication Number Publication Date
JP2006042289A true JP2006042289A (ja) 2006-02-09
JP4559794B2 JP4559794B2 (ja) 2010-10-13

Family

ID=35507503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004226885A Expired - Fee Related JP4559794B2 (ja) 2004-06-24 2004-08-03 マイクロプロセッサ

Country Status (2)

Country Link
US (1) US8191155B2 (ja)
JP (1) JP4559794B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009212840A (ja) * 2008-03-04 2009-09-17 Canon Inc 情報処理装置、情報処理方法及びシステム
JP2020119023A (ja) * 2019-01-18 2020-08-06 日本電気株式会社 ファイルアクセス制御方法、コンピュータプログラム及びコンピュータ

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4559794B2 (ja) * 2004-06-24 2010-10-13 株式会社東芝 マイクロプロセッサ
JP4204522B2 (ja) * 2004-07-07 2009-01-07 株式会社東芝 マイクロプロセッサ
US8046824B2 (en) * 2005-04-11 2011-10-25 Nokia Corporation Generic key-decision mechanism for GAA
JP2007058588A (ja) * 2005-08-24 2007-03-08 Toshiba Corp プログラム保護機能を持つプロセッサ
US7917710B2 (en) * 2006-06-05 2011-03-29 Oracle America, Inc. Memory protection in a computer system employing memory virtualization
DE102006031790A1 (de) * 2006-07-10 2008-01-17 Giesecke & Devrient Gmbh Abgesicherter Programmcode
US8001383B2 (en) 2007-02-01 2011-08-16 Microsoft Corporation Secure serial number
GB2450505A (en) * 2007-06-26 2008-12-31 Symbian Software Ltd Authorised debugging
JP4976991B2 (ja) * 2007-11-22 2012-07-18 株式会社東芝 情報処理装置、プログラム検証方法及びプログラム
US8787579B2 (en) 2008-06-30 2014-07-22 Verizon Patent And Licensing Inc. Key-based content management and access systems and methods
JP5322620B2 (ja) 2008-12-18 2013-10-23 株式会社東芝 情報処理装置、プログラム開発システム、プログラム検証方法及びプログラム
CN102577227A (zh) * 2010-05-31 2012-07-11 三洋电机株式会社 终端装置以及基站装置
JPWO2012008158A1 (ja) * 2010-07-13 2013-09-05 三洋電機株式会社 端末装置
JP5171907B2 (ja) * 2010-09-13 2013-03-27 株式会社東芝 情報処理装置、情報処理プログラム
US9053233B2 (en) * 2011-08-15 2015-06-09 Freescale Semiconductor, Inc. Method and device for controlling debug event resources
KR102013841B1 (ko) * 2012-08-06 2019-08-23 삼성전자주식회사 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치
US9311209B2 (en) * 2012-11-27 2016-04-12 International Business Machines Corporation Associating energy consumption with a virtual machine
JP5996777B2 (ja) 2013-03-19 2016-09-21 株式会社東芝 コード処理装置およびプログラム
JP6265783B2 (ja) * 2014-03-06 2018-01-24 キヤノン株式会社 暗号化/復号化システム及びその制御方法、並びにプログラム
US9632914B2 (en) * 2015-05-21 2017-04-25 International Business Machines Corporation Error diagnostic in a production environment
US10721067B2 (en) * 2016-08-10 2020-07-21 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Secure processor for multi-tenant cloud workloads
US10417433B2 (en) 2017-01-24 2019-09-17 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Encryption and decryption of data owned by a guest operating system
US11443071B2 (en) * 2020-02-13 2022-09-13 SiFive, Inc. Secure debug architecture

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265867A (ja) * 1992-03-23 1993-10-15 Nec Corp シングルチップマイクロコンピュータ
JP2001223687A (ja) * 2000-02-08 2001-08-17 Toshiba Corp 秘匿データ処理装置と方法及びそのic装置
JP2001318787A (ja) * 2000-05-08 2001-11-16 Toshiba Corp マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
JP2002014838A (ja) * 2000-06-30 2002-01-18 Fujitsu Ltd Lsi,lsiを搭載した電子装置、デバッグ方法、lsiのデバッグ装置
JP2002244757A (ja) * 2001-02-19 2002-08-30 Sony Corp 半導体回路
JP2002341956A (ja) * 2001-05-21 2002-11-29 Sony Corp 情報処理半導体装置、デバッグ許可鍵装置および情報処理半導体システム
JP2003091459A (ja) * 2001-07-24 2003-03-28 Texas Instruments Inc 半導体デバイス内のコードとデータにセキュリティを与えるためのシステムと方法
JP2003108442A (ja) * 2001-09-28 2003-04-11 Toshiba Corp マイクロプロセッサ
JP2003140763A (ja) * 2001-11-07 2003-05-16 Matsushita Electric Ind Co Ltd マイクロプロセッサおよびデバッグ装置
JP2003177938A (ja) * 2001-12-07 2003-06-27 Fujitsu Ltd 電子装置及びそのデバッグ認証方法
JP2003280989A (ja) * 2002-03-20 2003-10-03 Toshiba Corp 内部メモリ型耐タンパプロセッサおよび秘密保護方法
JP2004038394A (ja) * 2002-07-01 2004-02-05 Toshiba Corp 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム
JP2004054834A (ja) * 2002-07-24 2004-02-19 Matsushita Electric Ind Co Ltd プログラム開発方法、プログラム開発支援装置およびプログラム実装方法
JP2004133793A (ja) * 2002-10-11 2004-04-30 Dainippon Printing Co Ltd 動作解析装置、プログラム開発システム及び動作解析プログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5825878A (en) * 1996-09-20 1998-10-20 Vlsi Technology, Inc. Secure memory management unit for microprocessor
WO2000062507A1 (en) * 1999-04-09 2000-10-19 General Instrument Corporation Key management between a cable telephony adapter and associated signaling controller
US6983374B2 (en) * 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
US20040125957A1 (en) * 2000-04-11 2004-07-01 Ty Rauber Method and system for secure distribution
JP4153653B2 (ja) * 2000-10-31 2008-09-24 株式会社東芝 マイクロプロセッサおよびデータ保護方法
JP4067757B2 (ja) * 2000-10-31 2008-03-26 株式会社東芝 プログラム配布システム
JP4074057B2 (ja) * 2000-12-28 2008-04-09 株式会社東芝 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法
JP4098478B2 (ja) * 2001-01-31 2008-06-11 株式会社東芝 マイクロプロセッサ
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
JP2003330365A (ja) * 2002-05-09 2003-11-19 Toshiba Corp コンテンツ配布/受信方法
JP3880933B2 (ja) * 2003-01-21 2007-02-14 株式会社東芝 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
US7346769B2 (en) * 2003-10-23 2008-03-18 International Business Machines Corporation Method for selective encryption within documents
US20050177749A1 (en) * 2004-02-09 2005-08-11 Shlomo Ovadia Method and architecture for security key generation and distribution within optical switched networks
KR20050096040A (ko) * 2004-03-29 2005-10-05 삼성전자주식회사 휴대형 저장장치와 디바이스간에 디지털 저작권 관리를이용한 콘텐츠 재생방법 및 장치와, 이를 위한 휴대형저장장치
JP4559794B2 (ja) * 2004-06-24 2010-10-13 株式会社東芝 マイクロプロセッサ

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265867A (ja) * 1992-03-23 1993-10-15 Nec Corp シングルチップマイクロコンピュータ
JP2001223687A (ja) * 2000-02-08 2001-08-17 Toshiba Corp 秘匿データ処理装置と方法及びそのic装置
JP2001318787A (ja) * 2000-05-08 2001-11-16 Toshiba Corp マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
JP2002014838A (ja) * 2000-06-30 2002-01-18 Fujitsu Ltd Lsi,lsiを搭載した電子装置、デバッグ方法、lsiのデバッグ装置
JP2002244757A (ja) * 2001-02-19 2002-08-30 Sony Corp 半導体回路
JP2002341956A (ja) * 2001-05-21 2002-11-29 Sony Corp 情報処理半導体装置、デバッグ許可鍵装置および情報処理半導体システム
JP2003091459A (ja) * 2001-07-24 2003-03-28 Texas Instruments Inc 半導体デバイス内のコードとデータにセキュリティを与えるためのシステムと方法
JP2003108442A (ja) * 2001-09-28 2003-04-11 Toshiba Corp マイクロプロセッサ
JP2003140763A (ja) * 2001-11-07 2003-05-16 Matsushita Electric Ind Co Ltd マイクロプロセッサおよびデバッグ装置
JP2003177938A (ja) * 2001-12-07 2003-06-27 Fujitsu Ltd 電子装置及びそのデバッグ認証方法
JP2003280989A (ja) * 2002-03-20 2003-10-03 Toshiba Corp 内部メモリ型耐タンパプロセッサおよび秘密保護方法
JP2004038394A (ja) * 2002-07-01 2004-02-05 Toshiba Corp 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム
JP2004054834A (ja) * 2002-07-24 2004-02-19 Matsushita Electric Ind Co Ltd プログラム開発方法、プログラム開発支援装置およびプログラム実装方法
JP2004133793A (ja) * 2002-10-11 2004-04-30 Dainippon Printing Co Ltd 動作解析装置、プログラム開発システム及び動作解析プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009212840A (ja) * 2008-03-04 2009-09-17 Canon Inc 情報処理装置、情報処理方法及びシステム
JP2020119023A (ja) * 2019-01-18 2020-08-06 日本電気株式会社 ファイルアクセス制御方法、コンピュータプログラム及びコンピュータ
JP7215181B2 (ja) 2019-01-18 2023-01-31 日本電気株式会社 ファイルアクセス制御方法、コンピュータプログラム及びコンピュータ

Also Published As

Publication number Publication date
US8191155B2 (en) 2012-05-29
JP4559794B2 (ja) 2010-10-13
US20050289397A1 (en) 2005-12-29

Similar Documents

Publication Publication Date Title
JP4559794B2 (ja) マイクロプロセッサ
JP4612461B2 (ja) マイクロプロセッサ
KR102107711B1 (ko) 처리 시스템에서의 직접 메모리 액세스 인가
US7107459B2 (en) Secure CPU and memory management unit with cryptographic extensions
US6363486B1 (en) Method of controlling usage of software components
KR101457355B1 (ko) 보안 애플리케이션 실행을 제공하는 방법 및 장치
US7673155B2 (en) Microprocessor with improved task management and table management mechanism
US7874009B2 (en) Data processing device
JP5249399B2 (ja) 安全なメモリ区分を使用した安全な実行のための方法および装置
US8473754B2 (en) Hardware-facilitated secure software execution environment
EP1396778B1 (en) Semiconductor device including encryption section, semiconductor device including external interface, and content reproduction method
JP4551231B2 (ja) プログラム実行保護システム、プログラム実行保護方法
US11748493B2 (en) Secure asset management system
JP4514473B2 (ja) コンピュータシステム、中央装置及びプログラム実行方法
JP4591163B2 (ja) バスアクセス制御装置
JP2009064462A (ja) マイクロプロセッサ
Khan et al. Utilizing and extending trusted execution environment in heterogeneous SoCs for a pay-per-device IP licensing scheme
JP2002244757A (ja) 半導体回路
CN100353276C (zh) 微处理器
TWI428824B (zh) 微處理器及限制存取的方法
US20050210274A1 (en) Apparatus and method for intellectual property protection using the microprocessor serial number
JP5304304B2 (ja) セキュリティ強化システム、方法、プログラム及びusbメモリ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100406

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100526

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100629

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100723

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130730

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees