(57)【要約】【課題】ＩＣＥを使ってデバッグを行なう際に、デバッグ時のパスワード認証において可変性をもたせることで、プログラムライブラリを開発したユーザのプログラムロジックを不正盗用から保護する。【解決手段】エミュレータを有し、暗号化されたプログラムコードをメモリに復号化する情報処理装置において、プログラムコードの復号化後にプログラムコードから制御データを抜き取り記憶するテーブルレジスタと、エミュレータから中央演算処理装置へのデータ転送の許可又は禁止を制御する制御回路を有し、制御回路は、エミュレータが中央演算処理装置を介してメモリへアクセスするアドレスと、上記テーブルレジスタに格納されるデータによって決定されるプログラムコードのメモリ上のアドレス空間のデータとの比較を行い、一致すればエミュレータから中央演算処理装置へのデータ転送を禁止する。【選択図】図１
2008071250.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのエミュレーションを行うエミュレータを有し、暗号化されたプログラムコードをメモリに復号化してダウンロードする情報処理装置において、
プログラムコードの復号化後にプログラムコードから制御データを抜き取り記憶するテーブルレジスタと、
エミュレータから中央演算処理装置へのデータ転送の許可又は禁止を制御する制御回路を有し、
上記制御回路は、エミュレータが中央演算処理装置を介してメモリへアクセスするアドレスと、上記テーブルレジスタに格納されるデータによって決定されるアドレス空間との比較を行い、両者が一致すればエミュレータから中央演算処理装置へのデータ転送を禁止するように制御することを特徴とする情報処理装置。
【請求項２】
上記テーブルレジスタが、複数のブロックレジスタを持ち、ブロックレジスタごとにメモリを複数のブロック領域に分けており、
上記制御回路は、ブロック領域ごとに、エミュレータから中央演算処理装置へのデータ転送の許可又は禁止を制御することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
上記ブロックレジスタが認証キーのデータを格納しており、
上記制御回路は、エミュレータからの信号に含まれる認証データと、上記認証キーのデータとを比較し、両者が一致すればエミュレータから中央演算処理装置へのデータ転送を許可するように制御することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
中央演算処理装置での実行履歴を記憶するトレースメモリを更に有し、
上記制御回路は、エミュレータがトレースメモリへアクセスするアドレスと、上記ブロックレジスタから決定されるアドレス空間との比較を行い、両者が一致すれば、エミュレータからトレースメモリに対しての出力信号とトレースメモリからエミュレータへの入力信号を無効とするように制御することを特徴とする請求項２に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレータ回路を備えるプロセッサにおいて、エミュレータ回路に接続されたデバッカによるデバッグ時に内蔵ＲＯＭに格納されたデータを不正アクセスから保護する情報処理装置に関する。
【背景技術】
【０００２】
近年、画像プロセッサの高速化が進み、専用ハードウェアを用いて処理されてきた複雑な画像処理等がソフトウェアで処理を行っても十分なパフォーマンスが得られるようになってきた。それのみならず、ソフトウェアによる画像処理技術が進み、専用ハードウェアではできなかった柔軟な処理や処理内容の変更を少ないコストで容易に行なうことができるようにもなった。
【０００３】
それと同時に、プロセッサのソフトウェア開発段階において、開発するソフトウェアの動作をデバッグできる装置の必要性は高くなっている。ソフトウェア開発の初期段階にプログラムを組むことでプロセッサの特徴を把握でき、プロセッサの特徴を生かしたプログラムコードを作成することができるからである。
【０００４】
デバッグするための装置として、一般のマイコンと同様にＩＣＥ（Ｉｎ  ｃｉｒｃｕｉｔ  Ｅｍｕｌａｔｏｒ）を用いたものが幅広く使われている。ＩＣＥ本体は、パーソナルコンピュータ（以下、ＰＣと称する。）との接続に使用されるＩＣＥインターフェースやプロセッサとの接続に使用されるエミュレーションインターフェースを有している（図６参照）。
【０００５】
ＩＣＥ本体は、ＰＣ（ＩＣＥ用デバッガ）１４からの命令によって、プロセッサ（ＣＰＵ）２に対するプログラムの実行、ターゲットボードに搭載されたメモリの内容のダンプ、プログラムを一命令ずつ実行させるステップ実行、プログラムを所定の番地で停止させるブレーク、プログラム実行軌跡を見るプログラムトレースなどの、エミュレータ機能を使用できるようになっている。このことにより、ＩＣＥ８に接続されたプロセッサ２についての内部メモリの参照やプログラムの実行軌跡の解析が可能となり、プログラムの開発、デバッグ、及び故障解析が可能となる。
【０００６】
ところで、そのようなＩＣＥの機能を使用することによって、プロセッサの内部ＲＯＭに記憶された情報がプロセッサの外部に容易に読み出されることが可能となっている場合がある。つまり、このことにより、特定ユーザ以外の不特定ユーザであっても、プロセッサ内部に格納された秘匿性の高いプログラムの参照や解析を行なうことが可能となってしまい、保護すべきプログラムロジックの漏洩や情報の改ざん等が生じるという問題が起きてしまう。
【０００７】
上記問題を解決する技術として、特許文献１に開示された発明がある。特許文献１に開示される情報処理装置は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に記憶された情報を外部に設けられたデバッグツールによる不正アクセスから保護するものであり、予め登録されたコードと外部から与えられたパスワードを照合し、両者が一致した場合にのみＩＣＥによるデバッグ機能を有効にするものである。しかし、この情報処理装置においても、デバッカのパスワードを一度解読してしまえば、ＩＣＥからプロセッサ内部の情報を全て読み取って外部に出力でき、結局セキュリティが脆弱になるという問題が生じ得る。
【０００８】
また、別の問題として、プログラム中に存在するプログラムライブラリの処理内容を不特定ユーザに知られてしまうため、プログラムロジックが不正に盗用されてしまうというものがある。ここで、プログラムライブラリとは、独自性のある高速な画像処理を行なうことができる等の処理を行なうプログラムコードが暗号化されたものである。不特定ユーザは、図７に示すように、プログラムライブラリをＣ言語の関数のように自分が作成したプログラム内で呼び出して使用することができる。
【０００９】
プログラムライブラリを提供する開発者は、通常、不特定ユーザにそれらを利用することは許容している。しかし、開発者は、内部の詳細なアルゴリズムが知られることでプログラムロジックを不正盗用されたくないため、プログラムコード自体を暗号化する。
【００１０】
しかしながら、プログラムライブラリがプロセッサ内部のメインメモリにダウンロードされると、プロセッサ内の復号回路（図１参照）によって非暗号化されたプログラムに展開される。そのため、（不特定）ユーザに一度でもデバッカを使用する権限を与えてしまうと、そのユーザはデバッカを使用してメインメモリ中の非暗号化されたプログラムライブラリの処理内容を外部に取り出すことができる。このため、開発者のプログラムロジック（コード）を保護しきれないことになる。
【００１１】
更に、２人以上の開発者が開発したプログラムライブラリが展開されメモリ中に格納されている場合、開発者のプログラムライブラリ毎にそれらに対するアクセス権限を管理しなければならない、という問題がある。
【００１２】
複数プログラムライブラリが利用されプログラムが作成された場合、プロセッサが持つ記憶領域に格納されるプログラムコードは、例えば、図８のように管理される。まず、記憶領域のアドレス０には、開発者Ａが作成したプログラムライブラリが非暗号化されて格納され、次に、アドレス１には、一般ユーザが作成したプログラムライブラリ（処理Ｂ）、アドレス２にも、一般ユーザが作成したプログラムライブラリ（処理Ｃ）、最後のアドレス３には、開発者Ｂが作成したプログラムライブラリが非暗号されて格納されている。
【００１３】
ここで、一般ユーザがＩＣＥを使用する場合、ＩＣＥからアクセスを行なってもよい記憶領域は、アドレス０又はアドレス３以外である。しかし、開発者ＢがＩＣＥを使用する場合には、一般ユーザがアクセスを行なってもよい記憶領域に加えて、アドレス３もアクセスを行なえるようにする必要がある。
【００１４】
なお、特許文献２に記載の情報セキュリティマイクロコンピュータでは、ＩＣＥが情報処理装置の内部データを読み取るアクセスの際に、アクセスを認証プログラムで許可するかどうかを判断する。認証できないアクセスが行なわれた際は情報処理装置の機能を停止する。また、特許文献３に記載のプロセッサでは、メモリ回路のすべてアドレス番地に1ビットセキュリティビットをもたせている。メモリ回路のあるアドレス番地のセキュリティビットをＯＮすれば、そのアドレス番地のデータは中央演算処理装置からアクセス不可能となり、メモリ回路のセキュリティビットをＯＦＦすれば、そのアドレス番地のデータは中央演算処理装置からアクセス可能となる。また、特許文献４では、中央演算処理装置からメモリへのアクセスとデバッカから中央演算処理装置へのアクセスをマスクする回路をコントロールする信号について開示されている。更に、特許文献５は、電子装置にデバッグ機能の利用を許可するかどうかを判定する認証機能を設ける技術を開示する。認証機能で使用される認証コードは外部記憶装置から受信されたユーザコードである。
【特許文献１】特開２０００−３４７９４２公報
【特許文献２】特開２００４−２１３２１６公報
【特許文献３】特開２００５−２５１２２公報
【特許文献４】特開２００５−３０９７５８公報
【特許文献５】特開２００３−１７７９３８公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明は、ＩＣＥを使ってデバッグを行なう際に、デバッグ時のパスワード認証において可変性をもたせることで、プログラムライブラリを開発したユーザのプログラムロジックを不正盗用から保護するような機構を備えることを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、上記の目的を達成するためになされたものである。本発明に係る請求項１に記載の情報処理装置は、
プログラムのエミュレーションを行うエミュレータを有し、暗号化されたプログラムコードをメモリに復号化してダウンロードする情報処理装置である。そのような情報処理装置において、
プログラムコードの復号化後にプログラムコードから制御データを抜き取り記憶するテーブルレジスタと、
エミュレータから中央演算処理装置へのデータ転送の許可又は禁止を制御する制御回路を有し、
上記制御回路は、エミュレータが中央演算処理装置を介してメモリへアクセスするアドレスと、上記テーブルレジスタに格納されるデータによって決定されるアドレス空間との比較を行い、両者が一致すればエミュレータから中央演算処理装置へのデータ転送を禁止するように制御することを特徴とする。
【００１７】
本発明に係る請求項２に記載の情報処理装置は、
上記テーブルレジスタが、複数のブロックレジスタを持ち、ブロックレジスタごとにメモリを複数のブロック領域に分けており、
上記制御回路は、ブロック領域ごとに、エミュレータから中央演算処理装置へのデータ転送の許可又は禁止を制御することを特徴とする請求項１に記載の情報処理装置である。
【００１８】
本発明に係る請求項３に記載の情報処理装置は、
上記ブロックレジスタが認証キーのデータを格納しており、
上記制御回路は、エミュレータからの信号に含まれる認証データと、上記認証キーのデータとを比較し、両者が一致すればエミュレータから中央演算処理装置へのデータ転送を許可するように制御することを特徴とする請求項２に記載の情報処理装置である。
【００１９】
本発明に係る請求項４に記載の情報処理装置は、
中央演算処理装置での実行履歴を記憶するトレースメモリを更に有し、
上記制御回路は、エミュレータがトレースメモリへアクセスするアドレスと、上記ブロックレジスタから決定されるアドレス空間との比較を行い、両者が一致すれば、エミュレータからトレースメモリに対しての出力信号とトレースメモリからエミュレータへの入力信号を無効とするように制御することを特徴とする請求項２に記載の情報処理装置である。
【発明の効果】
【００２０】
本発明を利用することにより、エミュレータが、テーブルレジスタ内に格納されたデータから決定されるアドレス空間を持つメモリ領域にアクセスすることを禁止できる。また、前記テーブルレジスタに格納されているデータにより決定されるアドレス空間は、ユーザが開発したプログラムコード内の一部で決定されるため、エミュレータからのメモリアクセスが禁止されるメモリアドレス空間が、プログラムコード内で決定され得る。このことにより、不特定ユーザがエミュレータを使ってメモリにアクセスし、メモリにダウンロードされたプログラムコードを外部に取り出すことを禁止することができるため、プログラム開発者は自身が作成したプログラムコードの詳細を不特定ユーザに知られることはない。
【００２１】
また、本発明を利用することにより、テーブルレジスタが１個以上のブロックレジスタを備え、夫々がアドレス空間を設定できることができる。これにより、複数のアドレス空間をエミュレータがアクセスすることを禁止することができる。
【００２２】
また、本発明を利用することにより、テーブルレジスタ内の複数のブロックレジスタ各々が認証キーを保持することができ、これによりエミュレータからの制御が管理されている領域に対して、それぞれユニークな認証が必要となる。つまり、複数の開発者が開発したプログラムデータがメモリ中に格納されている場合（図８参照）において、夫々の開発者のプログラムデータをアクセスするにはユニークな認証キーを外部から入力する必要があるため、開発者単位でプログラムロジックの不正な盗用を防ぐことができる。
【００２３】
更に、情報処理装置内のトレースメモリには中央演算処理装置が実行したプログラムコードの履歴が格納されており、不特定ユーザによってトレースメモリを解析されることで、メインメモリに格納されたプログラムロジック（コード）が不正に盗用されるおそれがあるが、本発明を利用することにより、エミュレータからトレースメモリ内のデータを取り出すことに制限を掛けることができる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照して、本発明に係る好適な実施形態を説明する。
【００２５】
《第１の実施形態》
図１は、本発明の第１の実施形態に係る情報処理装置１のブロック図である。情報処理装置１は、中央演算処理装置２、中央演算処理装置２への命令コード（プログラムコード）が格納される内部記憶装置４、外部ＩＣＥ用デバッカ１４と接続され中央演算処理装置２のエミュレーション機能を提供するエミュレータ８、エミュレータ８から中央演算処理装置２とトレースメモリ１８へのアクセスを制御する制御回路６、テーブルレジスタ１０、及び、外部記憶装置から送られてくる暗号化プログラムを復号化する復号回路１２から構成される。
【００２６】
図１に示す中央演算処理装置２は、内部記憶装置４から転送されてくるデータをインストラクションデコーダに通して作成された制御コードにより複数の論理計算回路の制御を行う。
【００２７】
次に、図１に示す内部記憶装置２は、複数のアドレスにより管理される構造を持つメモリ回路である。内部記憶装置２には、外部記憶装置（ハードディスク、リームバルディスクなど）から取り込まれたプログラムコード１６が格納される。
【００２８】
また、図１に示すエミュレータ８は、マイコンなどで使用されるものであり、ＩＣＥ（Ｉｎ  Ｃｉｒｃｕｉｔ  Ｅｍｕｌａｔｏｒ）と称されるものである。ＩＣＥは、通常、中央演算処理装置と内部記憶装置の状態を把握して外部に出力できる機能を持ち、中央演算処理装置に対し制御命令を発行し任意の処理を実行させることができる。
【００２９】
また、図１に示すトレースメモリ１８は、中央演算処理装置２が実行した命令コードを時系列に格納する。図１に示す復号回路１２は、暗号化されたデータを復号化する論理回路を含み、外部から暗号化されたプログラムコード１６を入力として受け取って復号化されたプログラムコードを出力する機能を持つ。
【００３０】
図１に示すテーブルレジスタ１０は、図３に示すように１つ以上のブロックレジスタから構成されている。ブロックレジスタは、開始アドレス、終了アドレス、制御ビット、認証キーを表すデータを保持するレジスタである。テーブルレジスタ１０は、上記の復号回路１２が出力するプログラムコードから、開始アドレス、終了アドレス、及び認証キーを取り出し、自身の内部のブロックレジスタに格納する。
【００３１】
図１に示す制御回路６は、図４に示すようにブロックレジスタのデータとエミュレータ４の出力信号からアドレスを表す部分とを取り出し（後述のように）比較する回路を備える。比較する回路は、比較により一致すればマスク信号を出力し、一致しなければマスク信号を出力しないように構成されている。
【００３２】
更に、制御回路６は、図５に示すような、マスク信号を有効又は無効にする認証回路を備える。認証回路は、エミュレータ８からの認証を表すデータ２４とブロックレジスタ内の認証キーを比較する回路を備え、比較により両者が一致すればマスク信号を無効とし、一致しなければマスク信号を有効のままとしてマスク回路２２に対して出力する。
【００３３】
図５に示すマスク回路２２は、認証回路が出力するマスク信号を受け取り、受け取ったマスク信号がＯＮ（有効）であればエミュレータ８から中央演算装置２とトレースメモリ１８に対するアクセス信号を無効にし、マスク信号がＯＦＦ（無効）であれば同信号を有効にする。
【００３４】
次に、具体的なデータの流れについて説明する。
【００３５】
図１に示す外部記憶装置から送られてきた暗号化プログラムコード１６は、図１の復号回路１２により復号化され内部記憶装置４に格納される。この時に、復号回路１２により復号化されたプログラムコードは図２に示すプロトコルに従ったデータ構造を持っており、テーブルレジスタにはプロトコル内の開始アドレス、終了アドレス、及び認証キーを示すデータが格納される。プログラムコード内のプログラムデータは、内部記憶装置４の前述の開始アドレスの番地から、前述の終了アドレスの番地までに格納される。
【００３６】
前述のテーブルレジスタ１０に格納されるデータは、図３に示すテーブルレジスタ１０内のブロックレジスタの１番から（Ｎ番までに）抜き取られた順に格納される。ブロックレジスタの１番〜Ｎ番に格納された開始アドレス、終了アドレスは、図１に示す制御回路６によって参照される。
【００３７】
図１に示す制御回路６は、図４で示すようにブロックレジスタの開始アドレスと終了アドレスを参照してアドレス空間を表すデータを作成し、エミュレータからのアクセス信号のアドレス部分を取り出し、そのアドレス部分と上記アドレス空間を比較する。制御回路６は、もし、一致すればマスク信号を作成し、一致しなければマスク信号は作成しない。
【００３８】
更に、図１に示す制御回路６は、上記のようにマスク信号がＯＮした場合（即ち、マスク信号が作成された場合）、図５に示すようにブロックレジスタの認証キーを参照し、エミュレータ８からのアクセス信号内に含まれる認証データ部分を取り出し、認証キーと認証データ部分とを比較する。もし、一致すれば上記のマスク信号を無効にし、一致しなければマスク信号を有効のままにする。有効のままとされたマスク信号は、エミュレータ８から中央演算処理２に対しての出力信号を無効とする。逆にマスク信号が無効であれば、エミュレータ８から中央演算処理２に対しての出力信号はそのまま有効とされる。
【００３９】
制御回路６は、エミュレータ８がトレースメモリ１８に対してアクセスする際も、エミュレータ８からのアクセス信号のアドレス部分を取り出し、そのアドレス部分と、図４で示すようにブロックレジスタの開始アドレスと終了アドレスを参照して作成されるアドレス空間データとを比較する。もし、一致すればマスク信号が作成され、一致しなければマスク信号が作成されない。マスク信号がＯＮした場合（マスク信号が作成された場合）、図５に示すようにブロックレジスタの認証キーを参照し、エミュレータ８からのアクセス信号内に含まれる認証データ部分を取り出し、認証キーと認証データ部分とを比較する。もし、一致すれば上記のマスク信号を無効にし、一致しなければマスク信号を有効のままにする。有効のままとされたマスク信号は、エミュレータ８からトレースメモリ１８に対しての出力信号とトレースメモリ１８からエミュレータ８への入力信号を無効とする。逆にマスク信号が無効であれば、エミュレータ８から中央演算処理２に対しての出力信号はそのまま有効とされる。
【００４０】
《その他の実施形態》
本発明の第１の実施形態に係る情報処理装置１においては、プログラムコードは外部記憶装置内に格納されている。このプログラムコードは図９に示すように（ＲＯＭ等の）内部記憶装置４に格納され、予め開始アドレス、終了アドレス、及び認証キーが取り出されてテーブルレジスタ１０内のブロックレジスタに格納されてもよい。
【００４１】
また、図１に示す情報処理装置１が、エミュレータ８からアクセス可能な内部記憶装置４以外の記憶装置を備える場合においても、エミュレータ８からのアクセス権限を制御することができる。
【図面の簡単な説明】
【００４２】
【図１】本発明の第１の実施形態に係る情報処理装置のブロック図である。
【図２】復号回路により復号化されたプログラムコードが有するデータ構造のプロトコルを示す概念図である
【図３】テーブルレジスタとブロックレジスタの関係を示す概念図である。
【図４】制御回路の機能の一部を示すブロック図である。
【図５】制御回路の機能の一部を示すブロック図である。
【図６】ＩＣＥ用デバッガと第１の実施形態に係る情報処理装置との関係を示すブロック図である。
【図７】プログラムライブラリの機能の一部を示す図である。
【図８】複数プログラムライブラリが利用されプログラムが作成された場合、メモリ上でのプログラムコードの管理の仕組みを示すテーブルである。
【図９】本発明の別の実施形態に係る情報処理装置のブロック図である。
【符号の説明】
【００４３】
１・・・情報処理装置、２・・・中央演算処理装置、４・・・内部記憶装置、６・・・制御回路、８・・・エミュレータ（ＩＣＥ）、１０・・・テーブルレジスタ、１２・・・複合回路、１４・・・ＩＣＥ用デバッガ。
【図１】
2008071250.tif 000003
【図２】
2008071250.tif 000004
【図３】
2008071250.tif 000005
【図４】
2008071250.tif 000006
【図５】
2008071250.tif 000007
【図６】
2008071250.tif 000008
【図７】
2008071250.tif 000009
【図８】
2008071250.tif 000010
【図９】
2008071250.tif 000011