(57)【要約】【課題】プログラム可能な回路に記憶する内部ロジックの解析を防止した半導体装置を提供する。【解決手段】画像処理部６のＡＳＩＣ８は、画像処理回路１１及び極秘回路１２ａへの入出力を行う入出力回路１０を備えている。入出力回路１０が、極秘回路１２ａの行う処理を隠蔽するように、例えば極秘回路１２ａからの出力を、タイミングをずらしてＡＳＩＣ８から出力する。これによって、極秘回路１２ａにおけるアルゴリズムを隠蔽できる。ＡＳＩＣ８とは別体の不揮発性メモリ９に記憶されている暗号化したプログラムを復号するための復号回路１３ａを備えている。復号回路１３ａは、後から書込みするＯＴＰ１３ｂによって、復号部１３として機能する。【選択図】図１
2005251017.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブル回路と固定ロジック回路とを含んでいる半導体装置において、
上記プログラマブル回路および上記固定ロジック回路にデータを入出力する入出力手段を備え、
上記入出力手段が、上記プログラマブル回路に対するデータ入出力を、半導体装置本体の外部に対して隠蔽することを特徴とする半導体装置。
【請求項２】
上記入出力手段が、上記プログラマブル回路からの出力のタイミングをずらして半導体装置本体から出力することによって、データ入出力を半導体装置本体の外部に対して隠蔽することを特徴とする請求項１に記載の半導体装置。
【請求項３】
上記入出力手段が、上記プログラマブル回路からの出力のタイミングをランダムにずらすことを特徴とする請求項２に記載の半導体装置。
【請求項４】
上記入出力手段が、上記プログラマブル回路からの出力を暗号化して半導体装置本体から出力することによって、データ入出力を半導体装置本体の外部に対して隠蔽することを特徴とする請求項１に記載の半導体装置。
【請求項５】
上記プログラマブル回路が揮発性のプログラマブル回路であり、
上記入出力手段が、上記プログラマブル回路のプログラムデータを、半導体装置本体が備えられている電子装置の電源立ち上げ時以外のタイミングにて、半導体装置本体の外部から取得することによって、データ入出力を半導体装置本体の外部に対して隠蔽することを特徴とする請求項１に記載の半導体装置。
【請求項６】
上記入出力手段が、複数に分割された上記プログラムデータを取得することを特徴とする請求項５に記載の半導体装置。
【請求項７】
上記入出力手段が、ランダムなサイズに分割された上記プログラムデータを取得することを特徴とする請求項６に記載の半導体装置。
【請求項８】
上記入出力手段が、複数に分割された上記プログラムデータを、ランダムな時間間隔で取得することを特徴とする請求項６に記載の半導体装置。
【請求項９】
上記入出力手段が、上記プログラムデータを取得するための複数のインタフェースを有していることを特徴とする請求項５に記載の半導体装置。
【請求項１０】
上記プログラマブル回路のプログラムデータからチェック用データを作成する一方向性ハッシュ関数手段を備えていることを特徴とする請求項１に記載の半導体装置。
【請求項１１】
半導体装置本体が、画像処理を行う画像処理部であり、
上記プログラマブル回路において、特定原稿の認識処理を行うことを特徴とする請求項１に記載の半導体装置。
【請求項１２】
暗号化された、上記プログラマブル回路のプログラムデータを復号するための復号手段を備えていることを特徴とする請求項１ないし１１のいずれか１項に記載の半導体装置。
【請求項１３】
上記復号手段の少なくとも一部を、半導体装置本体の外部から書き込み可能で読み出し不可能なプログラマブルＲＯＭで構成したことを特徴とする請求項１２に記載の半導体装置。
【請求項１４】
上記プログラマブルＲＯＭが、ワンタイムプログラマブルＲＯＭであることを特徴とする請求項１３に記載の半導体装置。
【請求項１５】
上記プログラマブルＲＯＭに、鍵データを書き込むと上記復号手段が上記プログラムデータを復号するために機能する鍵データ書込み領域を設けたことを特徴とする請求項１３に記載の半導体装置。
【請求項１６】
上記復号手段が、アドレス操作によって暗号化された上記プログラムデータを復号することを特徴とする請求項１２に記載の半導体装置。
【請求項１７】
上記復号手段が、ダミーデータの混合された上記プログラムデータを復号することを特徴とする請求項１２に記載の半導体装置。
【請求項１８】
上記復号手段が、ブロック暗号化された上記プログラムデータを復号することを特徴とする請求項１２に記載の半導体装置。
【請求項１９】
上記復号手段が、データビットの並べ替えによって暗号化された上記プログラムデータを復号することを特徴とする請求項１２に記載の半導体装置。
【請求項２０】
上記復号手段が、圧縮符号化によって暗号化された上記プログラムデータを復号することを特徴とする請求項１２に記載の半導体装置。
【請求項２１】
上記復号手段が、アドレス操作によって暗号化された上記プログラムデータを復号する第１復号器と、ダミーデータの混合された上記プログラムデータを復号する第２復号器と、ブロック暗号化された上記プログラムデータを復号する第３復号器と、データビットの並べ替えによって暗号化された上記プログラムデータを復号する第４復号器と、圧縮符号化によって暗号化された上記プログラムデータを復号する第５復号器とを有しており、
上記入出力手段が、第１復号器、第２復号器、第３復号器、第４復号器、および第５復号器を所望の順番で切換えて用いる切換器として動作することを特徴とする請求項１２に記載の半導体装置。
【請求項２２】
上記復号手段が、上記プログラムデータを取得したときに、上記切換器の上記所望の順番を設定することを特徴とする請求項２１に記載の半導体装置。
【請求項２３】
請求項１に記載の半導体装置と上記プログラマブル回路のプログラムデータを記憶した記憶装置とを一体にパッケージした半導体装置。
【請求項２４】
請求項１に記載の半導体装置と上記プログラマブル回路のプログラムデータを記憶した記憶装置とを備えている電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブル回路を含んでいる半導体装置およびそれを備えた電子装置に関するものである。
【背景技術】
【０００２】
近年、ユーザが現場で所望の回路をプログラムできるプログラマブル回路が注目されている。
【０００３】
例えば、ゲートアレイの一部をＦＰＧＡ(Field Programmable Gate Array)とすることで、マスクドＧＡ(Gate Array)の高速性高集積性を活かしつつ、ユーザが処理を変更できるようにした構成が提案されている（特許文献１参照）。
【０００４】
このようなプログラマブル回路を用いる一例として、ＰＬＤ(Programmable Logic Device)に復号手段とキー保持手段を持たせ、予め設定したキーで暗号化したプログラムでのみ動作するようにすることで、プログラムの不正な複製を防止する構成が提案されている（特許文献２参照）。
【０００５】
また、ＦＰＧＡ素子からのＦＰＧＡプログラムのコピーを阻止するための構成も提案されている（特許文献３参照）。
【特許文献１】特開平６−２７５７１８号公報（公開日：１９９４年９月３０日）
【特許文献２】特開平６−１８７２４６号公報（公開日：１９９４年７月８日）
【特許文献３】特開２００３−８４８５３号公報（公開日：２００３年３月１９日）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の構成の半導体装置では、プログラマブル回路に書き込む内部アルゴリズムを確実に隠蔽できない虞があるという問題を生ずる。
【０００７】
例えば、特許文献１の構成では、プログラムを格納しているＲＯＭを読むことによって、アルゴリズムやロジックが解析される虞がある。また、特許文献２の構成では、ＲＯＭのプログラムは暗号化されているが、ＰＬＤ自体の動作を解析することで、アルゴリズムやロジックを推測される虞がある。
【０００８】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、回路の処理をブラックボックス化して、内部アルゴリズムの解析を困難にして隠蔽することのできる半導体装置および電子装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明に係る半導体装置は、上記課題を解決するために、プログラマブル回路と固定ロジック回路とを含んでいる半導体装置において、上記プログラマブル回路および上記固定ロジック回路にデータを入出力する入出力手段を備え、上記入出力手段が、上記プログラマブル回路に対するデータ入出力を、半導体装置本体の外部に対して隠蔽することを特徴としている。
【００１０】
プログラマブル回路は、書込みによってプログラムできる回路である。プログラマブル回路としては、例えば揮発性のプログラマブル回路を用いる。プログラマブル回路は不揮発性であってもよい。固定ロジック回路とは、書換え不可能な回路である。固定ロジック回路は、不揮発性である。
【００１１】
上記構成において、入出力手段は、プログラマブル回路に対するデータ入出力を、半導体装置本体の外部に対して隠蔽する。
【００１２】
例えば入出力手段は、プログラマブル回路からの出力を、タイミングを遅延させて出力する。また、例えば入出力手段は、プログラマブル回路へ入力するプログラムデータの取得を、通常期待されるタイミングよりも遅延させて行う。
【００１３】
これによって、半導体装置の外部において解析を行ったとしても、プログラマブル回路に対するデータ入出力が隠蔽され、プログラマブル回路における処理を推定するのが困難になる。したがって、プログラマブル回路において処理されるアルゴリズムに対する、不正な解析を困難にできる。
【００１４】
また、半導体装置のプログラマブル回路からの出力を隠蔽して、プログラマブル回路からの出力に対する不正ななりすましを防止できる。これによって、半導体回路の不正利用を防止できる。
【００１５】
また、上記プログラム可能な回路を、ＦＰＧＡ(Field Programmable Gate Array)によって実現してもよい。この構成であれば、容易に実現できる。
【００１６】
本発明に係る半導体装置は、上記構成において、上記入出力手段が、上記プログラマブル回路からの出力のタイミングをずらして半導体装置本体から出力することによって、データ入出力を半導体装置本体の外部に対して隠蔽することを特徴としている。
【００１７】
入出力手段は、例えば出力タイミングを遅延させることによって、出力のタイミングをずらす。このように、入出力手段がタイミングをずらせば、データ出力を隠蔽できる。
【００１８】
また、上記構成において、入出力手段は、半導体装置への他のデータの入力後に、上記プログラマブル回路から出力する構成であってもよい。このようにすれば、他のデータに対する出力であるかのように振る舞うことによって、データ出力を隠蔽できる。
【００１９】
本発明に係る半導体装置は、上記構成において、上記入出力手段が、上記プログラマブル回路からの出力のタイミングをランダムにずらすことを特徴としている。
【００２０】
このように、出力のタイミングをランダムにずらせば、出力を作成するために用いられた入力がどれかを隠すことができる。
【００２１】
また、上記構成において、例えば出力のタイミングを、平均処理遅延時間よりも長い範囲でランダムに遅延させてもよい。または、例えば平均処理遅延時間の２倍以上の範囲でランダムに遅延させてもよい。このようにすれば、出力を作成するために用いられた入力がどのデータであるかを隠すことができる。
【００２２】
本発明に係る半導体装置は、上記構成において、上記入出力手段が、上記プログラマブル回路からの出力を暗号化して半導体装置本体から出力することによって、データ入出力を半導体装置本体の外部に対して隠蔽することを特徴としている。
【００２３】
入出力手段が暗号化することによって、データ出力を隠蔽できる。この場合、入出力手段からの出力を受信する側で復号を行う。
【００２４】
本発明に係る半導体装置は、上記構成において、上記プログラマブル回路が揮発性のプログラマブル回路であり、上記入出力手段が、上記プログラマブル回路のプログラムデータを、半導体装置本体が備えられている電子装置の電源立ち上げ時以外のタイミングにて、半導体装置本体の外部から取得することによって、データ入出力を半導体装置本体の外部に対して隠蔽することを特徴としている。
【００２５】
揮発性のプログラマブル回路とは、例えばＳＲＡＭ(static random access memory)型の書換え可能な回路である。
【００２６】
半導体装置の入出力手段は、例えば半導体装置外部の記憶装置にアクセスして、記憶装置に記憶されているプログラムデータを取得する。プログラムデータの入力を隠蔽するので、プログラマブル回路において処理されるアルゴリズムに対する、不正な解析を困難にできる。
【００２７】
ここで、通常は電源立ち上げ時にプログラムデータを取得することが期待される。
【００２８】
そこで、上記構成のように電源立ち上げ時以外に取得すれば、半導体装置とプログラムデータの記憶された記憶装置との間で不正な取得が試みられている場合であっても、これを困難にできる。
【００２９】
また、上記構成において、入出力手段は、プログラマブル回路を用いる前に、プログラムデータを取得する構成であってもよい。また、上記構成において、入出力手段は、固定ロジック回路からの入出力を開始したよりも後に、プログラムデータを取得する構成であってもよい。また、上記構成において、入出力手段は、電源立ち上げ後に所定時間経過すると、プログラムデータを取得する構成であってもよい。
【００３０】
また、上述の半導体装置を、プログラム供給タイミングとして、電源立ち上げでないタイミングに行う構成である、と表現することもできる。
【００３１】
本発明に係る半導体装置は、上記構成において、上記入出力手段が、複数に分割された上記プログラムデータを取得することを特徴としている。
【００３２】
このように、プログラムデータを分割して取得するので、不正な取得が試みられている場合であっても、プログラムデータの特定を困難にして、不正な取得を防止できる。
【００３３】
また、上述の半導体装置を、プログラム供給時に、通信を分割して行う構成である、と表現することもできる。
【００３４】
本発明に係る半導体装置は、上記構成において、上記入出力手段が、ランダムなサイズに分割された上記プログラムデータを取得することを特徴としている。
【００３５】
分割したプログラムデータのサイズがランダムであるので、さらにプログラムデータの特定を困難にできる。
【００３６】
また、上述の半導体装置を、通信分割は、データパケットサイズをランダムにする構成である、と表現することもできる。
【００３７】
本発明に係る半導体装置は、上記構成において、上記入出力手段が、複数に分割された上記プログラムデータを、ランダムな時間間隔で取得することを特徴としている。
【００３８】
ランダムな時間間隔で取得するので、さらにプログラムデータの特定を困難にできる。
【００３９】
また、上述の半導体装置を、通信分割は、通信の間隔をランダムにする構成である、と表現することもできる。
【００４０】
本発明に係る半導体装置は、上記構成において、上記入出力手段が、上記プログラムデータを取得するための複数のインタフェースを有していることを特徴としている。
【００４１】
複数のインタフェースを使い分けて、分割されたプログラムデータを取得することができるので、さらにプログラムデータの特定を困難にできる。
【００４２】
また、上述の半導体装置を、複数のＩＦから分割してプログラムを供給する構成である、と表現することもできる。
【００４３】
本発明に係る半導体装置は、上記構成において、上記プログラマブル回路のプログラムデータからチェック用データを作成する一方向性ハッシュ関数手段を備えていることを特徴としている。
【００４４】
一方向性ハッシュ関数手段によってプログラムデータからチェック用データを作成すれば、予め作成しておいたチェック用データと比較することによって、プログラムデータが予め作成した正規のものであるか否かを簡単に確認できる。また、プログラム用データ自身を比較する訳ではないので、半導体装置の外部において、機密性を損なわずに確認ができる。
【００４５】
本発明に係る半導体装置は、上記構成において、半導体装置本体が、画像処理を行う画像処理部であり、上記プログラマブル回路において、特定原稿の認識処理を行うことを特徴としている。
【００４６】
特定原稿とは、認識した対象となる原稿である。例えば、画像形成装置に備えられる画像処理回路においては、紙幣を特定原稿とする。複写する原稿が紙幣であるか否かを画像処理回路にて判別し、紙幣である場合には複写を禁止する。
【００４７】
上記構成によれば、画像処理回路における特定原稿の認識処理のアルゴリズムを隠蔽できる。
【００４８】
本発明に係る半導体装置は、上記構成において、暗号化された、上記プログラマブル回路のプログラムデータを復号するための復号手段を備えていることを特徴としている。
【００４９】
プログラマブル回路のプログラムデータが暗号化されているので、プログラムデータを解析されることによるアルゴリズム、ロジックの解析を困難にできる。
【００５０】
また、上述の半導体装置を、少なくともＳＲＡＭ型のプログラム可能な第１の回路と電源を切ってもロジックが固定した第２の回路を同一集積回路内に設けたＡＳＩＣであって、第２の回路は、外部より第１の回路に供給される予め暗号化されたプログラムの復号手段と、第１の回路がプログラムに基づいて行う処理をＡＳＩＣ外部から隠蔽する入出力手段とを備える構成である、と表現することもできる。この構成であれば、外部からロードされるプログラムからも、ＡＳＩＣの動作からも、第１の回路のアルゴリズムやロジックの解析を困難にすることができる。また、上述の半導体装置は、第２の回路が、復号されて第１の回路に供給されたプログラムデータからチェック用データを作成する一方向性ハッシュ関数手段を備える構成であってもよい。
【００５１】
本発明に係る半導体装置は、上記構成において、上記復号手段の少なくとも一部を、半導体装置本体の外部から書き込み可能で読み出し不可能なプログラマブルＲＯＭで構成したことを特徴としている。
【００５２】
ここで、半導体装置が読み出し不可能であるとは、外へ出力するためのバッファを設けておらず、バッファが外部から内部への一方通行のみである構成を意味する。
【００５３】
このように、復号手段の少なくとも一部をプログラマブルＲＯＭとすれば、このプログラマブルＲＯＭを後から書き込むようにできる。
【００５４】
したがって、例えば半導体装置の作成を外部業者に依頼する際に、プログラマブルＲＯＭに書き込む内容を知らせずに依頼することができ、復号手段の全体を外部業者に知らせる必要がなくなる。
【００５５】
本発明に係る半導体装置は、上記構成において、上記プログラマブルＲＯＭが、ワンタイムプログラマブルＲＯＭであることを特徴としている。
【００５６】
プログラマブルＲＯＭが一度のみ書込み可能であるので、後からプログラマブルＲＯＭの書換えを試行してプログラマブルＲＯＭの内容を推測される虞がない。
【００５７】
また、上述の半導体装置を、復号手段のＰＲＯＭはワンタイムＰＲＯＭである構成である、と表現することもできる。
【００５８】
本発明に係る半導体装置は、上記構成において、上記プログラマブルＲＯＭに、鍵データを書き込むと上記復号手段が上記プログラムデータを復号するために機能する鍵データ書込み領域を設けたことを特徴としている。
【００５９】
鍵データ領域に鍵データを書き込まなければ、半導体装置の復号手段が動作しないので、鍵データを適切に管理することによって、半導体装置の不正利用を防止できる。
【００６０】
また、上述の半導体装置を、復号手段は少なくとも一部が外部から書き込み可能で読み出し不可能なＰＲＯＭで構成され、ＰＲＯＭに書き込まれた（鍵）データが復号手段をカスタマイズする構成である、と表現することもできる。
【００６１】
本発明に係る半導体装置は、上記構成において、上記復号手段が、アドレス操作によって暗号化された上記プログラムデータを復号することを特徴としている。
【００６２】
このように、アドレス操作によって暗号化されたデータであれば、簡単な処理で復号できる。
【００６３】
また、上述の半導体装置を、プログラムの暗号化はアドレスの操作である構成である、と表現することもできる。
【００６４】
本発明に係る半導体装置は、上記構成において、上記復号手段が、ダミーデータの混合された上記プログラムデータを復号することを特徴としている。
【００６５】
このようにダミーデータを混合すれば、プログラムデータの特定を困難にできる。
【００６６】
また、上述の半導体装置を、プログラム供給時にダミーデータと共に、データ供給を行う構成である、と表現することもできる。
【００６７】
本発明に係る半導体装置は、上記構成において、上記復号手段が、ブロック暗号化された上記プログラムデータを復号することを特徴としている。
【００６８】
ＤＥＳ(data encryption standard)やＡＥＳ（advanced encryption standard）を用いて暗号化を強靭にできる。また、ハードウェア化も容易である。
【００６９】
また、上述の半導体装置を、プログラムの暗号化はブロック暗号である構成である、と表現することもできる。
【００７０】
本発明に係る半導体装置は、上記構成において、上記復号手段が、データビットの並べ替えによって暗号化された上記プログラムデータを復号することを特徴としている。
【００７１】
このように、データビットの並べ替えによって暗号化されたデータであれば、簡単な処理で復号できる。
【００７２】
また、上述の半導体装置を、プログラムの暗号化は、データｂｉｔの並べ変えである構成である、と表現することもできる。
【００７３】
本発明に係る半導体装置は、上記構成において、上記復号手段が、圧縮符号化によって暗号化された上記プログラムデータを復号することを特徴としている。
【００７４】
ここで、圧縮符号化とは、ＪＢＩＧ、ランレングス等の圧縮である。
【００７５】
このように、圧縮符号化によって暗号化されたデータであれば、簡単な処理で復号できる。
【００７６】
また、上述の半導体装置を、プログラムの暗号化は、ＪＢＩＧ、ランレングス等の圧縮である構成である、と表現することもできる。
【００７７】
本発明に係る半導体装置は、上記構成において、上記復号手段が、アドレス操作によって暗号化された上記プログラムデータを復号する第１復号器と、ダミーデータの混合された上記プログラムデータを復号する第２復号器と、ブロック暗号化された上記プログラムデータを復号する第３復号器と、データビットの並べ替えによって暗号化された上記プログラムデータを復号する第４復号器と、圧縮符号化によって暗号化された上記プログラムデータを復号する第５復号器とを有しており、上記入出力手段が、第１復号器、第２復号器、第３復号器、第４復号器、および第５復号器を所望の順番で切換えて用いる切換器として動作することを特徴としている。
【００７８】
このように暗号を組み合わせ、切換えて用いれば、暗号化を強靭にできる。
【００７９】
また、上述の半導体装置を、上述の復号手段を同時に持ち、暗号組み合わせを行う構成である、と表現することもできる。また、上述の復号手段を同時に持ち、暗号組み合わせ及び順番の組み合わせを行う構成である、と表現することもできる。
【００８０】
本発明に係る半導体装置は、上記構成において、上記復号手段が、上記プログラムデータを取得したときに、上記切換器の上記所望の順番を設定することを特徴としている。
【００８１】
切換器の順番を後で設定すれば、暗号化を強靭にできる。
【００８２】
また、上述の半導体装置を、上述の復号手段を同時に持ち、プログラム供給時に組み合わせ及び順番を選択する構成である、と表現することもできる。
【００８３】
本発明に係る半導体装置は、上記課題を解決するために、上述の半導体装置と上記プログラマブル回路のプログラムデータを記憶した記憶装置とを一体にパッケージしたことを特徴としている。
【００８４】
一体にパッケージされた半導体装置によって、内部アルゴリズムの解析を困難にした半導体装置を実現できる。
【００８５】
本発明に係る電子装置は、上記課題を解決するために、上述の半導体装置と上記プログラマブル回路のプログラムデータを記憶した記憶装置とを備えていることを特徴としている。
【００８６】
電子装置において極秘にしたい処理を、上述の半導体装置および記憶装置によって実現し、アルゴリズムを隠蔽できる。
【発明の効果】
【００８７】
本発明に係る半導体装置は、以上のように、プログラマブル回路を含んでいる半導体装置において、プログラマブル回路にデータを入出力する入出力手段が、プログラマブル回路に対するデータ入出力を、半導体装置本体の外部に対して隠蔽する構成である。
【００８８】
入出力手段が隠蔽することによって、半導体装置の外部において解析を行ったとしても、プログラマブル回路に対するデータ入出力が隠蔽され、プログラマブル回路における処理を推定するのが困難になり、アルゴリズムに対する不正な解析を困難にできる。
【００８９】
また、半導体装置のプログラマブル回路からの出力を隠蔽して、プログラマブル回路からの出力に対する不正ななりすましを防止して、半導体回路の不正利用を防止できる。
【発明を実施するための最良の形態】
【００９０】
本発明の一実施形態について図１ないし図１０に基づいて説明すると以下の通りである。
【００９１】
本実施形態の半導体装置は、図１に示すように、画像形成装置（電子装置）１に、ＡＳＩＣ(Application specific integrated circuit)８として備えられる。
【００９２】
画像形成装置１は、シートに画像を形成するものである。画像形成装置１は、図示しない入出力インタフェースを介して、装置外部と情報伝達することもできる。
【００９３】
画像形成装置１は、制御部２、操作部３、記憶部４、画像読取部５、画像処理部（半導体装置）６、および画像形成部７を備えている。
【００９４】
制御部２は、画像形成装置１の動作を制御する。本実施形態の制御部２はハードウェアによって実現されているが、これに限るものではない。画像形成装置１のＣＰＵ(Central Processing Unit)が記憶部４に記憶されたプログラムを読み込んで実行することによって、制御部２を実現してもよい。
【００９５】
操作部３は、ユーザによる操作指示を検出して、制御部２へと出力する。操作部３は、動作状況を表示するための図示しない表示部を含んでいる。
【００９６】
記憶部４は、データを記憶するためのメモリである。この記憶部４に、ＣＰＵを制御部２として機能させるためのプログラムを記憶させてもよい。
【００９７】
画像読取部５は、シートに形成されている画像を読取るためのものである。操作部３にて検出したユーザの指示に応じて、制御部２から開始信号が出力されると、画像読取部５は、図示しない台に載置された原稿の画像読取動作を開始する。画像読取部５は、読取った画像データを画像処理部６へと出力する。
【００９８】
画像処理部６は、入力される画像データに、所定の画像処理を施すものである。画像処理部６は、画像読取部５から画像データが入力されると、画像処理を施して、制御部２を介して画像データを画像形成部７へと出力する。本実施形態の画像処理部６は、ＡＳＩＣ８と不揮発性メモリ（記憶装置）９とを一体にパッケージした半導体装置である。画像処理部６については後述する。
【００９９】
画像形成部７は、画像データに基づいてシートに画像を形成する。画像形成部７は、制御部２を介して画像処理部６からの画像データが入力されると、この画像データに基づいてシートに画像を形成する。
【０１００】
上記構成の画像形成装置１は、例えば紙幣のような所定の原稿（以下、特定原稿とする。）のコピーを防止するために、特定原稿を認識してその印刷を禁止する特定原稿抽出機能を有している。以下、特定原稿抽出機能について説明する。
【０１０１】
画像形成装置１においては、画像読取部５にて読取った原稿の画像データを用いて、画像処理部６にて、原稿が特定原稿であるか否かを判別する。画像処理部６は、上述のように入力される画像データに対して判別を行って、特定原稿であるか否かを示す検出信号を制御部２へと出力する。画像処理部６の詳細について説明すると、以下のようである。
【０１０２】
画像処理部６は、ＡＳＩＣ（半導体装置）８と不揮発性メモリ９とを含んでいる。
【０１０３】
ＡＳＩＣ８は、画像形成装置１の画像処理機能を実現するための半導体装置である。ＡＳＩＣ８は、特定原稿抽出機能の詳細を極秘とするため、固定したレイアウトの固定ロジック回路として回路全体を実現するのではなく、少なくとも一部を書き換え可能でプログラム可能な回路にプログラム（プログラムデータ）を読み込むことによって実現する。これによって、レイアウトからロジックが推定されることを防止している。
【０１０４】
不揮発性メモリ９は、ＡＳＩＣ８の極秘回路（プログラマブル回路）１２ａを動作させるための、暗号化されたプログラムの記憶領域である。本実施形態の不揮発性メモリ９は、ＲＯＭによって実現される。不揮発性メモリ９は、当初、ＡＳＩＣ８とは別体に設けられ、その後にＡＳＩＣ８とともに１つの半導体装置としてパッケージ化されて、画像処理部６となる。
【０１０５】
ＡＳＩＣ８は、入出力回路（入出力手段）１０、画像処理回路１１、極秘回路１２ａ、揮発性メモリ１２ｂ、復号部（復号手段）１３およびハッシュ関数回路（一方向性ハッシュ関数手段）１４を備えている。
【０１０６】
入出力回路１０は、ＡＳＩＣ８の入出力インタフェースである。入出力回路１０は、制御部２からＡＳＩＣ８に入力される、画像処理回路１１、極秘回路１２ａ、復号回路１３ａなどへのデータを一旦受信して、それぞれの回路へと出力する。また、ＡＳＩＣ８内部の各回路からのデータを一旦受信して、制御部２へと出力する。入出力回路１０は、極秘回路１２ａへの入出力を隠蔽するための入出力手段として機能する。この点については後述する。
【０１０７】
画像処理回路１１は、入力される画像データに、所定の画像処理を施す。一例として、画像形成装置１が、ユーザによる拡大・縮小指示を操作部３にて検出した場合について説明すると、画像処理回路１１は、画像読取部５から入出力回路１０を介して入力される画像データに拡大・縮小処理を施し、得られたデータを入出力回路１０を介して制御部２へと出力する。
【０１０８】
極秘回路１２ａおよび揮発性メモリ１２ｂは、揮発性のプログラム可能な回路である。この極秘回路１２ａにおいて、外部に秘匿する、極秘の処理を行う。
【０１０９】
本実施形態の極秘回路１２ａは、特定原稿の判別を行う。極秘回路１２ａは、入力される画像データから、特定原稿であるか否かを判別して、判別結果を表す検出信号を入出力回路１０を介して画像処理部６の外部へと出力する。極秘回路１２ａは、画像読取部５にて読取られて、入出力回路１０を介して入力される画像データや、入出力回路１０および画像処理回路１１を介して入力される画像データに基づいて、判別を行う。本実施形態の極秘回路１２ａは、揮発性のプログラム可能なＦＰＧＡ(Field Programmable Gate Array)によって実現される。ＦＰＧＡによる極秘回路１２ａは、揮発性メモリ１２ｂに記憶されたプログラムに応じて、ＡＮＤゲート、ＯＲゲートなどのつなぎ方を変えて、所望の機能を実現する。極秘回路１２ａの詳細については後述する。
【０１１０】
揮発性メモリ１２ｂは、極秘回路１２ａの機能を実現するためのプログラムの記憶領域である。揮発性メモリ１２ｂは例えばＲＡＭ(Random Access Memory)によって実現される。本実施形態の揮発性メモリ１２ｂは、揮発性で書き換え可能なＳＲＡＭ（static random access memory）によって実現される。このように、プログラムを揮発性メモリ１２ｂに記憶するので、プログラムの内容がリバースエンジニアリングによって不正に取得されることがない。
【０１１１】
復号部１３は、復号回路１３ａおよびＯＴＰ(one time programmable ROM)（プログラマブルＲＯＭ、ワンタイムプログラマブルＲＯＭ、鍵データ書込み領域）１３ｂを含む。復号部１３は、復号回路１３ａおよびＯＴＰ１３ｂが一体となって、不揮発性メモリ９に記憶されたプログラムの復号を行うものである。
【０１１２】
このうち、復号回路１３ａは、ＡＳＩＣ８中のＦＰＧＡ領域（極秘回路１２ａ）へのダウンロード部分に設けられる。
【０１１３】
ＯＴＰ１３ｂは、復号部１３の一部を、後から書込み可能で読み出し不可能なＰＲＯＭ(programmable read only memory)としたものである。このようなワンタイムＰＲＯＭの一例としては、例えばヒューズを焼き切る形式のＰＲＯＭが挙げられる。ＯＴＰ１３ｂには、画像形成装置１の製造者がＯＴＰＲＯＭ書込回路２０を用いて回路データ（鍵データ）を書込み、これによって所望の復号部１３とする。
【０１１４】
ハッシュ関数回路１４は、ＡＳＩＣ８に供給されたプログラムデータから、チェック用データを作成するチェック部として機能する。より詳細には、ハッシュ関数回路１４は、一方向性ハッシュ関数回路であり、チェックサムを生成する。チェックサムとは、例えば誤り訂正のＣＲＣなどである。なお、ハッシュ関数回路１４が生成して出力するのは単なるチェックサムであり、プログラム自身を出力する訳ではないので、ハッシュ関数回路１４からの出力によって内部アルゴリズム（プログラム）が推測されることはない。入力データから生成されるチェックサムの値が、予め計算しておいたチェックサムの値と一致することを確認して、元の入力データが変更されていないことを確認できる。
【０１１５】
本実施形態のＡＳＩＣ８において、入出力回路１０、画像処理回路１１、復号回路１３ａおよびハッシュ関数回路１４は、不揮発性の固定ロジック回路である。これらの固定ロジック回路では、特に秘密ではない処理を行う。なお、本実施形態においては、ＡＳＩＣ８の固定ロジック回路のうち、どの部分がどの回路に相当するのかについての判別を困難なものとするように、各回路のレイアウトは混合して配置された状態となっている。
【０１１６】
以上に説明した画像処理部６において、入力される画像データを用いて、特定原稿であるか否かを示す検出信号を制御部２へと出力する動作について説明すると、以下のようである。
【０１１７】
まず、電源オン操作を操作部３にて検出すると、制御部２からの指示に応じて、入出力回路１０が、不揮発性メモリ９のデータの呼び出し指示を復号部１３に対して行う。復号部１３は、不揮発性メモリ９のデータを読み出して復号し、揮発性メモリ１２ｂに格納する。
【０１１８】
ここで、復号部１３は、復号したプログラムをハッシュ関数回路１４へと出力する。ハッシュ関数回路１４は、入力されたプログラムからチェックサムを生成する。ハッシュ関数回路１４からの出力は制御部２へと出力され、制御部２にて、生成された値と予め計算して記憶部４に記憶した値とが比較される。比較結果が一致した場合には、不揮発性メモリ９に格納されたプログラムが正規のものであるとされ、処理が続行される。一方、比較結果が不一致であった場合には、不揮発性メモリ９、復号回路１３ａ、ＯＴＰ１３ｂの少なくともいずれか１つが正規のものでないとして、処理を中止する。
【０１１９】
その後、使用者によって原稿の複写が行われるものとする。画像形成装置１においては、原稿画像が画像読取部５にて読取られて、操作部３にて検出した指示に応じて画像処理部６にて画像処理が行われ、画像形成部７にてシートに複写画像が形成される。
【０１２０】
この際、まず画像読取部５にて読取った画像データが入出力回路１０よりＡＳＩＣ８に入力される。ＡＳＩＣ８では、画像データを、入出力回路１０から画像処理回路１１および極秘回路１２ａにそれぞれ出力する。画像処理回路１１では、操作部３にて読取った指示に基づく制御部２からの制御命令に応じて、拡大縮小・反転などの画像処理を行う。画像処理されたデータは、制御部２へと出力される。制御部２は、画像処理部６からの検出信号を待機する状態となる。
【０１２１】
一方、極秘回路１２ａでは、画像データが特定原稿の画像を含んでいるか否かを、画像処理によって判別する。例えば、紙幣に特有の特徴図形を含んでいるか否かを、パターンマッチングによって判別する。極秘回路１２ａは、判別結果を検出信号として入出力回路１０に出力する。
【０１２２】
入出力回路１０は、極秘回路１２ａからの検出信号の出力タイミングをずらして、ＡＳＩＣ８の外部へと出力する。例えば、入出力回路１０は、入力された検出信号を、ランダムな時間だけ待機した後に、制御部２へと出力する。例えば出力のタイミングは、画像処理回路１１における平均処理遅延時間よりも長い範囲でランダムに遅延させる。または、例えば平均処理遅延時間の２倍以上の範囲でランダムに遅延させてもよい。このようにすれば、出力を作成するために用いられた入力がどのデータであるかを隠すことができる。または、入出力回路１０は、検出信号を所定のタイミングまで遅延させてから出力してもよい。
【０１２３】
制御部２は、特定画像を含まないとの否定的な検出信号を受信すると、画像処理された画像データを画像形成部７へと出力して、画像形成部７に印刷を実行させる。一方、制御部２は、特定画像が含まれているとの肯定的な検出信号を受信すると、その旨を操作部３の図示しない表示パネルに表示して、処理を中止する。
【０１２４】
このように、制御部２では、画像処理部６からの検出信号の入力タイミングにかかわらず、検出信号の値のみに応じて、画像データが特定原稿を含むか否かを判別する。このため、入出力回路１０によって検出信号の出力タイミングがずらされたとしても、画像形成装置１は、タイミングをずらさない場合と結果として同じ動作をする。したがって、画像処理部６と制御部２との間ではデータ転送が正しく行われ、画像形成装置１は正しく動作する。
【０１２５】
以上のようにして、入出力回路１０は、入出力するデータが極秘回路１２ａに対するものか、または画像処理回路１１などのその他の回路に対するものかを、ＡＳＩＣ８の外部に対して隠蔽することができる。すなわち、制御部２に入力される数多くの信号のうち、どの信号がＡＳＩＣ８からの検出信号であるか否かという点についての不正な検出を困難にできる。このため、例えば外部から制御部２への不正な検出信号の送信を防止して、なりすまし、不正利用を防止できる。また、極秘回路１２ａに対する入出力の解析が困難となるため、極秘回路１２ａにおける内部ロジックに対する不正な解析を困難にできる。
【０１２６】
また、揮発性メモリ１２ｂに格納するためのプログラムをＡＳＩＣ８とは別体の記憶装置に記憶させている。例えば、暗号化したプログラムを、ＡＳＩＣ８とは別体の、ＲＯＭ(Read Only Memory)などからなる不揮発性メモリ９に格納する。これによって、ＡＳＩＣ８の生産者にプログラムを秘密にして、機能を実現するための情報が漏れるのを防止できる。また、このように、ＡＳＩＣ８と不揮発性メモリ９とを別体のものとすれば、例えばＡＳＩＣ８の作成をある製造業者（ＡＳＩＣベンダー）Ｂに依頼し、また不揮発性メモリ９の作成をある製造業者（ＲＯＭメーカー）Ｃに依頼した場合であっても、ＡＳＩＣ８における処理のアルゴリズムに対する不正な解読を防止できる。
【０１２７】
また、暗号化したプログラムを解読するための復号回路は、後からの鍵データの書込みを必要とする構成である。このため、復号回路のみを見ても復号のアルゴリズムを推測することができないので、秘密を保持できる。
【０１２８】
また、鍵を、ＯＴＰとする。すなわち、一度のみ書き込むことのできる形式の鍵とする。この鍵を、例えば画像形成装置１の製造者（メーカー）が書き込むようにすれば、復号回路の不正利用を防止できる。
【０１２９】
なお、このように、内部の処理を外部に対して隠蔽するためには、タイミングを遅延させる入出力回路１０を用いる構成に限るものではない。例えば、入出力部として、何らかの処理をする回路を介在させれば、内部アルゴリズムの推定を困難にして、ブラックボックス化できる。すなわち、例えば画像データのようなデータを入力して得られる、検出信号のような出力からは、内部の秘密回路における処理の詳細を推定することは困難となる。この場合、内部の処理の段数が深ければ、出力から内部アルゴリズムを推定することは非常に困難となる。一方、従来は、このような入出力部は設けられておらず、制御部と内部の極秘回路との間が不正に計測され、内部アルゴリズムを推定される虞があった。
【０１３０】
ここで、例えば入出力回路１０は、検出信号を暗号化（ブロック暗号化）する構成であってもよい。このように、検出信号を暗号化して制御部２へと出力すれば、極秘回路１２ａにおける処理を隠蔽できる。ただし、この場合は制御部２の側に、暗号を復号する機能が必要となる。また、例えば、入出力回路１０は、検出信号にダミーデータを混在させて出力する構成であってもよい。
【０１３１】
次に、上述した画像処理部６の製造工程の一例について、図２、図３に基づいて説明する。
【０１３２】
図２に示すように、設計メーカーＡは、ＡＳＩＣベンダーＢに、ＡＳＩＣ８の製造を委託する（Ｔ１：一般回路出図）。この際、ＡＳＩＣ８のうち、極秘回路１２ａをプログラム可能なＦＰＧＡ領域として設けるような設計で委託する。また、極秘回路１２ａのための復号回路１３ａには、後から書込みをするＯＴＰ１３ｂを設けた設計とする。
【０１３３】
ＡＳＩＣベンダーＢは、ＡＳＩＣ８を製造して設計メーカーＡに納入する（Ｔ２：ＡＳＩＣ（ＦＰＧＡ＋ＯＴＰ）納入）。
【０１３４】
一方、設計メーカーＡは、ＡＳＩＣ８のＦＰＧＡ領域のプログラムを暗号化した内容を記憶したＲＯＭ（不揮発性メモリ９）の製造を、ＲＯＭメーカーＣに委託する（Ｔ３：暗号化したＦＰＧＡプログラム出図）。ＲＯＭメーカーＣは、暗号化されたプログラムをＲＯＭとして製造し、設計メーカーＡに納入する（Ｔ４：ＲＯＭ納入）。
【０１３５】
また、図３を参照して説明すると、設計メーカーＡは、Ｓ１にて画像処理部６のために、ＡＳＩＣ８および不揮発性メモリ９の回路設計を行う。設計メーカーＡは、設計したＡＳＩＣ８の回路図をＡＳＩＣベンダーＢに提供し（Ｔ１）、設計した不揮発性メモリ９の回路図をＲＯＭメーカーＣに提供する（Ｔ３）。
【０１３６】
ＡＳＩＣベンダーＢは、受領した回路図に基づきＡＳＩＣ８を設計し（Ｓ２）、設計メーカーＡに納入する（Ｔ２）。また、ＲＯＭメーカーＣは、受領した回路図に基づき、ＲＯＭ（不揮発性メモリ９）を作成し（Ｓ４）、設計メーカーＡに納入する（Ｔ４）。
【０１３７】
設計メーカーＡでは、ＡＳＩＣベンダーＢから受領したＡＳＩＣ８のＯＴＰ１３ｂに鍵データの書込みをした（Ｓ３）上で、そのＡＳＩＣ８およびＲＯＭ９を１パッケージ化して、画像処理部６を製品とする（Ｓ５）。
【０１３８】
このように、ＡＳＩＣベンダー８には極秘回路１２ａの中身（プログラムのためのレイアウト）は出図しないので、秘密が保たれる。また、復号回路１３ａにＯＴＰ１３ｂを設けた構成としてＡＳＩＣベンダーＢに生産を委託するので、ＡＳＩＣベンダー８に復号回路１３ａの中身が知られることはない。
【０１３９】
また、ＲＯＭ（不揮発性メモリ９）に書き込む、極秘回路１２ａ（ＦＰＧＡ領域）のためのプログラムは、暗号化した上でＲＯＭメーカーＣに生産を委託するので、ＲＯＭメーカーＣにプログラムを知られることがなく、セキュリティが保たれる。また、どの部分のデータがＦＰＧＡ領域回路データか、判別しにくくできる。
【０１４０】
また、設計メーカーＡにてＯＴＰ１３ｂの書込みを行うので、復号回路１３ａとＯＴＰ１３ｂとが一体となった復号部１３の詳細について、ＡＳＩＣベンダーＢやＲＯＭメーカーＣに知られることがない。なお、このように、後から書込みするＯＴＰ１３ｂによって復号部１３を完成させる構成でなければ、復号部１３の全てをＡＳＩＣベンダーＢに出図することになるので、復号部１３におけるアルゴリズムがＡＳＩＣベンダーＢに知られる虞がある。
【０１４１】
なお、半導体装置としてのＡＳＩＣ８は、上述の構成に限るものではない。ＡＳＩＣ８においては、復号回路１３ａを固定ロジック回路として設けた構成について説明したが、これに限るものではない。例えば、復号回路１３ａも書込み可能な構成としてもよい。すなわち、例えばＯＴＰ１３ｂだけでなく、復号回路１３ａもＦＰＧＡとして設けてもよい。このようにして、鍵としてのＯＴＰ１３ｂだけでなく、復号回路１３ａについてもメーカー側で書込みをすれば、ＡＳＩＣ８の製造委託先に復号部１３の構成が漏れることはない。なお、復号回路１３ａを書込み可能とする場合には、ＥＥＰＲＯＭのような書換え可能なものは用いないものとする。
【０１４２】
また、ＡＳＩＣ８および不揮発性メモリ９は、以下のような構成であってもよい。
【０１４３】
まず、図１に示す不揮発性メモリ９の一例としてのＲＯＭ９ａを用いて極秘回路１２ａの解析を困難にする構成の一例について、図４（ａ）（ｂ）に基づいて説明する。
【０１４４】
本変形例は、ＲＯＭ９ａに記憶させるプログラムを、アドレス並べ替えしておくものである。図４（ａ）に示すように、ＲＯＭ９ａのアドレスhXX_XXからhYY_YYまでが、極秘回路１２ａのためのＦＰＧＡプログラムを記憶させたＦＰＧＡプログラム領域である。
【０１４５】
ＲＯＭ９ａに記憶されたプログラムをＡＳＩＣ８に読み込む際の動作を説明すると、以下のようである。
【０１４６】
まず、図４（ｂ）のＳ６のように、制御部２として機能するＣＰＵからのプログラムのダウンロード命令に応じて、入出力回路１０が、ＲＯＭ９ａのアドレスhXX_XXからhYY_YYまでを取得して復号部１３に送る。
【０１４７】
Ｓ７では、復号回路１３ａとＯＴＰ１３ｂとが、復号部１３として、ダウンロードしたプログラムを所定の手順に従って復号する。ここでは、ＯＴＰ１３ｂに記憶されている関数にしたがってアドレスを並べ替え、結果としてデータを並べ替える。関数としては、ＲＯＭ９ａにおいて用いた関数の逆関数を用いればよい。これによって、プログラムは復号される。その後、復号したプログラムを、図１に示す揮発性メモリ１２ｂの一例としてのＲＡＭにダウンロードする。
【０１４８】
Ｓ８では、揮発性メモリ１２ｂから、ＦＰＧＡである極秘回路１２ａへとプログラムをダウンロードする。これによって、極秘回路１２ａに機能が実装され、ＦＰＧＡプログラムに従って動作するようになる。
【０１４９】
なお、アドレス並べ替え関数の一例としては、例えばアドレスの最上位と最下位を入れ替えるなどが考えられる。この関数に応じて、予めＲＯＭ９ａ中に、アドレス順序を入れ替えたプログラムデータを格納しておく。
【０１５０】
以上に説明した一例においては、不揮発性メモリ９に格納しているプログラムが、生のプログラム自体ではなく、並べ替えしたものとなっているので、プログラムを読取ることによる極秘回路１２ａの機能特定を防ぐことができる。また、プログラムの復号を、後から書込みされたＯＴＰ１３ｂを含む復号部１３にて行うので、復号のアルゴリズムの解析をも防止できる。
【０１５１】
次に、図１に示す不揮発性メモリ９の一例としてのＲＯＭ９ｂを用いて極秘回路１２ａの解析を困難にする構成の一例について、図５（ａ）（ｂ）に基づいて説明する。本変形例は、ＦＰＧＡにダウンロードする総データ量サイズよりも大きいＲＯＭ９ｂ中において、一部分を有効データ領域、他をダミーデータ領域とするものである。ＡＳＩＣ８中の入出力回路１０から入力されるデータの内、復号部１３は、元々回路で設定されていた有効データ領域のみを選別してダウンロードする。
【０１５２】
図５（ａ）に示すように、ＲＯＭ９ｂのアドレスhXX_XXからhYY_YYまでには、極秘回路１２ａのためのＦＰＧＡプログラムを記憶させる。また、ＲＯＭ９ｂのアドレスhPP_PPからhXX_XXまで、hYY_YYからhQQ_QQまでには、ダミーデータを記録させる（ダミーデータ領域）。
【０１５３】
ＲＯＭ９ｂに記憶されたプログラムをＡＳＩＣ８に読み込む際の動作を説明すると、以下のようである。
【０１５４】
まず、制御部２として機能するＣＰＵから、入出力回路１０に対してプログラムのダウンロード命令がなされる。入出力回路１０は、これに応じて、図５（ｂ）のＳ９のように、ＲＯＭ９ｂのアドレスhPP_PPからhQQ_QQまでを復号部１３にダウンロードする。入出力回路１０は、ダミーデータ領域を含めた有効データのダウンロード命令を行う。
【０１５５】
Ｓ１０では、復号回路１３ａとＯＴＰ１３ｂとが、復号部１３として、ダウンロードしたプログラムを所定の手順に従って復号する。ここでは、ＯＴＰ１３ｂに記憶されている内容にしたがって、所定のアドレス範囲（アドレスhXX_XXからhYY_YYまで）のデータのみを抽出する。これによって、プログラムは復号される。その後、復号したプログラムを、図１に示す揮発性メモリ１２ｂの一例としてのＲＡＭにダウンロードし、さらに揮発性メモリ１２ｂから、ＦＰＧＡである極秘回路１２ａへとダウンロードする。これによって、極秘回路１２ａに機能が実装され、ＦＰＧＡプログラムに従って動作するようになる。
【０１５６】
このように、不揮発性メモリ９に格納しているプログラムにダミーデータを含ませておくことによっても、プログラムを不正に読取ることによる極秘回路１２ａの機能特定を困難にできる。また、プログラムの復号を、後から書込みされたＯＴＰ１３ｂを含む復号部１３にて行うので、復号のアルゴリズムの解析を防止できる。
【０１５７】
次に、図１に示す不揮発性メモリ９の一例としてのＲＯＭ９ｃを用いて極秘回路１２ａの解析を困難にする構成の一例について、図６（ａ）（ｂ）に基づいて説明する。
【０１５８】
本変形例は、プログラムを圧縮符号化してＲＯＭ９ｃに記憶させる。圧縮符号化として、例えばデータのbit並びをばらばらにするJBIG圧縮を用いる。圧縮符号化は、プログラムの原データそのものから他のデータを生成するので、一種の暗号化とみなすことができる。
【０１５９】
図６（ａ）に示すように、ＲＯＭ９ｃのアドレスhXX_XXからhYY_YYに、極秘回路１２ａのためのＦＰＧＡプログラムを圧縮符号化して記憶させる。
【０１６０】
ＲＯＭ９ｃに記憶されたプログラムをＡＳＩＣ８に読み込む際の動作を説明すると、以下のようである。
【０１６１】
まず、制御部２として機能するＣＰＵから、入出力回路１０に対して、プログラムのダウンロード命令がなされる。これに応じて、図６（ｂ）のＳ１１に示すように、入出力回路１０は、ＲＯＭ９ｃのアドレスhXX_XXからhYY_YYまでを復号部１３にダウンロードする。
【０１６２】
Ｓ１２では、復号回路１３ａとＯＴＰ１３ｂとが、復号部１３として、ダウンロードしたプログラムを圧縮符号化の逆関数を用いて所定の手順に従って復号する。その後、復号したプログラムを、図１に示す揮発性メモリ１２ｂの一例としてのＲＡＭにダウンロードする。そして、Ｓ１３にて、さらに揮発性メモリ１２ｂから、ＦＰＧＡである極秘回路１２ａへとダウンロードする。これによって、極秘回路１２ａに機能が実装され、ＦＰＧＡプログラムに従って動作するようになる。
【０１６３】
このように、不揮発性メモリ９に格納しているプログラムを暗号化しておけば、プログラムを読取ることによる極秘回路１２ａの機能特定を防ぐことができる。また、プログラムの復号を、後から書込みされたＯＴＰ１３ｂを含む復号部１３にて行うので、復号のアルゴリズムの解析をも防止できる。
【０１６４】
なお、暗号化の一例として圧縮符号化を挙げたが、これに限るものではなく、暗号化する関数のアルゴリズムとしては、例えばＤＥＳなどの通常のいわゆる暗号のアルゴリズムを用いてもよい。また、データビットの並び替えによって暗号化してもよい。
【０１６５】
また、上述した入出力についての変形例を組み合わせることもできる。すなわち、（Ａ）アドレス並べ替えによる暗号化、（Ｂ）ダミーデータを含めることによる暗号化、（Ｃ）いわゆる暗号化(ブロック暗号化)、（Ｄ）データビットの並び替えによる暗号化、（Ｅ）圧縮符号化を、それぞれ組み合わせても良い。このように組み合わせることによって、プログラムの不正な解読を困難にできる。
【０１６６】
この場合、復号回路１３ａ・ＯＴＰ１３ｂによる復号部１３には、（Ａ）アドレス並べ替え、（Ｂ）ダミーデータ、（Ｃ）通常の暗号化、（Ｄ）データビット並び替え、（Ｅ）圧縮符号化に対する復号を行うための復号器をそれぞれ設けて切換え可能とする。入出力回路（切換器）１０の指示により、各復号器を切換える。
【０１６７】
復号部１３における復号方法の切換え方法としては、例えばＯＴＰ１３ｂに、マシン番号の末尾のようなＡＳＩＣ８についての固有情報に応じて復号方法を切換える回路を組み込む。そして、不揮発性メモリ９に、暗号化を組み合わせて得たプログラムを記憶させておき、復号部１３では、暗号化の組み合わせに応じて、逆の手順による復号化を行う。
【０１６８】
暗号化の手順は特に限るものではない。例えば、（Ａ）（Ｂ）（Ｃ）（Ｄ）（Ｅ）の順で暗号化してもよいし、または（Ａ）（Ｃ）（Ｂ）…の順でも、（Ｂ）（Ａ）（Ｃ）…でもよい。また、回数も各１回に限るものではなく、何度行ってもよいので、例えば（Ａ）（Ｂ）（Ｃ）（Ｄ）（Ｅ）（Ａ）（Ｂ）…のような手順であってもよい。
【０１６９】
また、上述したプログラム入出力の変形例では、暗号化の組み合わせなどについて説明したが、本発明はこれに限るものではない。例えば、ＡＳＩＣ８に対するプログラム入力のタイミングをずらすことによって、プログラム入出力の様子をＡＳＩＣ８の外部に対して遮蔽し、極秘回路１２ａのアルゴリズムの不正な解析を困難にすることもできる。
【０１７０】
以下では、不揮発性メモリ９に記憶されているプログラムを、画像形成装置１の電源投入時以外のタイミングにてダウンロードする構成について説明する。
【０１７１】
本変形例の画像形成装置（電子装置）２１は、図７に示すように、制御部２２、操作部２３、記憶部２４、画像読取部２５、画像処理部（半導体装置）２６、および画像形成部２７を備えている。
【０１７２】
また、画像処理部２６は、ＡＳＩＣ（半導体装置）２８と不揮発性メモリ（記憶装置）２９とを含んでいる。ＡＳＩＣ２８は、入出力回路（入出力手段）３０、画像処理回路３１、極秘回路（プログラマブル回路）３２ａ、揮発性メモリ３２ｂ、復号部（復号手段）３３およびハッシュ関数回路（一方向性ハッシュ関数手段）３４を備えている。
【０１７３】
画像形成装置２１は、内部に備える各部がバス形式で接続されている。制御部２２、ＡＳＩＣ２８および不揮発性メモリ２９についても、互いにバス形式で接続されている。このため、不揮発性メモリ２９からＡＳＩＣ２８へのダウンロードは、制御部２２の用いるバスと同じインタフェースで行う。この点が、図１に示す画像形成装置１とは異なっている。なお、図７に示す各部材２２〜３４は、図１に示す画像形成装置１に含まれる２〜１４の部材とほぼ同様の機能を果たす部材であるので、特に説明する場合を除いて説明は省略する。
【０１７４】
画像形成装置２１においては、不揮発性メモリ９に記憶されているプログラムの読み込みを、画像形成装置２１の電源オン時でなく、その後のコピー要求検出時に行う。より詳細には、制御部２２が、制御部２２がＡＳＩＣ２８の入出力回路３０に、プログラムの読み込み指示を行う。ＡＳＩＣ２８においては、入出力回路３０がデータを取得して、入力されるデータの振り分けを行う。入出力回路３０は、不揮発性メモリ２９に記憶されているプログラムをバス３５を介して読み込む。入出力回路３０は、得たプログラムを復号部３３へと出力する。復号部３３は、プログラムを復号して揮発性メモリ３２ｂに記憶させる。
【０１７５】
電源オンの際に読み込むのでなく、その後のタイミングにて読み込むので、不揮発性メモリ２９からＡＳＩＣ２８へのダウンロードを、制御部２２から他の部材へのデータに紛れ込ませることができる。これによって不正な解析を困難にして、ＡＳＩＣ２８の極秘回路３２ａへの入出力を、ＡＳＩＣ２８の外部に対して遮蔽できる。プログラムの読み込みは、極秘回路３２ａを用いる前に行う。プログラムの読み込みは、画像処理回路３３への入出力を開始した後に行ってもよい。または、プログラムの読み込みを、電源オン後に所定時間経過した後に行ってもよい。
【０１７６】
画像形成装置２１における、画像処理部２６のプログラム読み込み動作の一例について、図８に基づいて説明する。
【０１７７】
Ｓ１５では、画像形成装置２１の操作部２３に対する電源オン指示を検出して、制御部２２が画像形成装置２１の電源をオンする。Ｓ１６では、操作部２３に対するコピー要求の有無を、制御部２２が判別する。
【０１７８】
Ｓ１６にてコピー要求があった場合にはＳ１９に進み、不揮発性メモリ２９からＡＳＩＣ２８にバス３５を介してプログラムを読み込み、処理を終了する。電源オン時でないときにダウンロードするので、他のデータ転送に紛れ込ませることができる。Ｓ１６にてコピー要求がなかった場合には、Ｓ１７に進む。
【０１７９】
Ｓ１７では、バス３５を介したデータの送受信などで、内部または外部へのアクセスが頻繁であるか否かを制御部２２が判別する。具体的には、例えばバス３５を介してパケット形式でデータを送受信する場合に、パケットの衝突確率が所定値以上となるか否かを判別する。Ｓ１７においてアクセスが頻繁である場合には、Ｓ１９に進んで制御部２２からの指示を受けた入出力回路３０がプログラムのダウンロードを行い、処理を終了する。このように、アクセスが頻繁である場合にダウンロードすれば、他のデータ転送に紛れ込ませて、不正な解析をさらに困難にできる。Ｓ１７においてアクセスが頻繁でない場合には、Ｓ１８に進んでダウンロード待機状態となり、Ｓ１６に戻る。
【０１８０】
以上のように、例えばコピー時に特定原稿判別に用いる極秘回路３２ａのように、極秘回路３２ａの画像特定機能を用いるタイミングが電源オンよりもずっと後である場合には、極秘回路３２ａのためのプログラムのダウンロードを後のタイミングとする。そして、制御部２２と共用しているバス３５にて、制御部２２からのＡＳＩＣ２８へのアクセスに紛れ込ませてプログラムをダウンロードする。このようにすれば、ＡＳＩＣ２８へのデータ入出力について、バス３５に対して不正に基板波形解析された場合であっても、プログラムの内容は特定されない。これに対して、通常の一般的な構成では、極秘回路のようなＦＰＧＡのプログラムのダウンロードを装置の電源オン時に行うため、不正に基板波形解析された場合に、プログラムの内容を特定されてしまう虞がある。
【０１８１】
次に、画像形成装置２１においてプログラム入出力のタイミングをずらす他の変形例について、図９に基づいて説明する。この変形例では、読み込むべきプログラムをパケットに分割し、各パケットをランダムなタイミングでダウンロードすることによって、プログラムの読み込みを他のデータ転送に紛れ込ませる。
【０１８２】
Ｓ２０では、画像形成装置２１の操作部２３に対する電源オン指示を検出して、制御部２２が画像形成装置２１の電源をオンする。Ｓ２１では、入出力回路３０がランダムに定めた時間の経過を待ち、その後Ｓ２２に進む。
【０１８３】
Ｓ２２では、入出力回路３０が、不揮発性メモリ２９に記憶されたプログラムを分割したデータを、パケットとしてバス３５を介して読み込む。Ｓ２３では、全ての分割したデータをダウンロードしたか否かを入出力回路３０が判別する。まだダウンロードしていないデータがある場合には、Ｓ２１に戻ってランダム時間だけ待機した後に、Ｓ２２にて次のデータをパケットとしてダウンロードする。Ｓ２３において全てのデータをダウンロードしていると判別した場合には処理を終了する。
【０１８４】
以上の処理によれば、分割したデータを、ランダムなタイミングで順次パケットとしてダウンロードするので、データのダウンロードを他のデータ転送に紛れ込ませるようにして、プログラムの不正な解読を困難にできる。
【０１８５】
このように、所定の単位のパケットなど、ダウンロードすべきデータを分割して、制御部２２からのＡＳＩＣ２８へのアクセスに紛れ込ませてダウンロードする。復号したデータはＡＳＩＣ２８の揮発性メモリ３２ｂに格納する。ここで、データをダウンロードする時間間隔をランダムにすれば、不正な読取によるプログラムの判別をさらに困難にできる。また、ダウンロードするデータの分割パケットサイズをランダムにしてもよい。なお、通常の一般的な構成のように、パケットを連続して送受信することによってプログラムのダウンロードを行う場合には、不正に基板波形解析された場合にプログラムの内容を特定されてしまう虞がある。
【０１８６】
また、画像形成装置２１における画像処理部２６のプログラム読み込み動作は、上述の構成に限るものではない。例えば、プログラム読み込み動作を制御部２２からのＡＳＩＣ２８へのアクセスに紛れ込ませるために、入出力回路３０からの指示に応じて制御部２２がＡＳＩＣ２８にダミーライト、ダミーアクセスしてもよい。このように、制御部２からのダミーアクセスに紛れ込ませてプログラムのダウンロードを行っても、データを紛れ込ませて不正な解析を困難にできる。
【０１８７】
なお、図７に示す画像形成装置２１、画像処理部２６に基づいて、制御部２２の用いるバス３５を共用して、入出力回路３０を介してプログラムを読み込む動作を説明したが、この構成に限るものではない。
【０１８８】
例えば、図１に示すように、ＡＳＩＣ８と不揮発性メモリ９とが直接接続されてデータ転送を行う画像処理部６、画像形成装置１であってもよい。また、この場合に不揮発性メモリ９とＡＳＩＣ８とのデータ転送を制御する転送制御部が、ＡＳＩＣ８に含まれていてもよい。但し、この構成であれば、ＡＳＩＣ８と不揮発性メモリ９とが１対１で直接接続されているため、他のデータ転送に紛れ込ませるのは難しい。このため、プログラム転送のタイミングが不正に検出される可能性がある。
【０１８９】
また、図１に示す画像形成装置１、図７に示す画像形成装置２１は、それぞれ復号回路を１つずつ備えているが、これに限るものではない。複数の復号回路を有する画像形成装置であってもよい。
【０１９０】
本変形例の画像形成装置（電子装置）４１は、図１０に示すように、制御部４２、操作部４３、記憶部４４、画像読取部４５、画像処理部（半導体装置）４６、および画像形成部４７を備えている。
【０１９１】
また、画像処理部４６は、ＡＳＩＣ（半導体装置）４８と不揮発性メモリ（記憶装置）４９ａ・４９ｂとを含んでいる。ＡＳＩＣ４８は、入出力回路（入出力手段、切換器）５０、画像処理回路５１、極秘回路（プログラマブル回路）５２ａ、揮発性メモリ５２ｂ、復号部５３ａ・５３ｂ、およびハッシュ関数回路（一方向性ハッシュ関数手段）５４を備えている。復号部５３ａは復号回路５３ｃおよびＯＴＰ（プログラマブルＲＯＭ、ワンタイムプログラマブルＲＯＭ、鍵データ書込み領域）５３ｄからなり、復号部５３ｂは復号回路５３ｅおよびＯＴＰ（プログラマブルＲＯＭ、ワンタイムプログラマブルＲＯＭ、鍵データ書込み領域）５３ｆからなる。
【０１９２】
本実施形態の画像処理部４６は、複数の復号部５３ａ・５３ｂおよび不揮発性メモリ４９ａ・４９ｂを含んでいる点が、上述の実施形態と異なる点である。なお、図１０に示す各部材４２〜５４は、図１に示す画像形成装置１に含まれる２〜１４の部材とほぼ同様の機能を果たす部材であるので、特に説明する場合を除いて説明は省略する。
【０１９３】
上記構成の画像処理部４６においては、不揮発性メモリ４９ａ・４９ｂからのプログラムの読み込みを入出力回路５０が行い、それぞれ独立に備えられた復号部５３ａ・５３ｂに出力する。入出力回路５０による不揮発性メモリ４９ａ・４９ｂへのアクセスタイミングは任意に定めることができ、例えば上述のようにタイミングをずらして読み込んでもよいし、またはランダム時間間隔で読み込んでもよい。各復号部５３ａ・５３ｂは復号したプログラムを揮発性メモリ５２ｂにダウンロードする。揮発性メモリ５２ｂから極秘回路５２ａへとプログラムがダウンロードされ、極秘回路５２ａが機能するようになる。
【０１９４】
このように、ＡＳＩＣ４８に複数のインタフェースが備えられている場合には、それぞれのインタフェースを介してプログラムを読み込めば、不正な解析を困難にできる。
【０１９５】
以上のように、本発明は、ＦＰＧＡのようなプログラム可能な回路を内蔵するＡＳＩＣに関するものであり、より詳しくはＦＰＧＡ部に格納するプログラムの隠蔽に関する。上述の半導体装置は、ＦＰＧＡ（プログラム可能な回路）を内蔵するＡＳＩＣであって、固定回路として対象処理の外部に対するインタフェース、および暗号化されたＦＰＧＡ用プログラムの復号手段を備えた構成である。これにより、プログラム可能な回路の処理をブラックボックス化できるＡＳＩＣを提供する。また、ＡＳＩＣベンダーを含めた外部に対して知られたくない極秘回路（紙幣追跡、認識回路等）を、ＡＳＩＣ内部でＦＰＧＡ化し、さらに製品の基板で波形解析しても、ＦＰＧＡ領域の極秘回路内容の解析を困難にできるＡＳＩＣ回路構成を提供する。
【０１９６】
ここで、従来は、図１１に示すように、画像処理部の画像処理回路６１、極秘回路６２ａ、ＲＡＭ６２ｂ、ＲＯＭ６３は、いずれもむき出しの状態となっており、各回路の入出力を容易に検出できるようになっていた。このため、この状態で画像データを入力し、これに対する応答を検出することによって、画像データ中のどのような特徴を判別しているか、推測されてしまうという問題があった。
【０１９７】
ここで、従来技術としては、（１）極秘回路をＡＳＩＣに内蔵する構成、（２）極秘回路を外付けのＦＰＧＡに入れ、コピー防止手段を設ける構成、（３）極秘回路を含めて全ての回路をＦＰＧＡ化する構成、（４）極秘回路のみをＦＰＧＡ、他をＡＳＩＣとしワンチップ化する構成などがある。
【０１９８】
ここで、上記（１）の構成には、さらに以下のような問題がある。まず、極秘回路をＡＳＩＣ化するには、少なくともゲートレベル回路をＡＳＩＣベンダーに出図する必要がある。このようなゲートレベル回路があれば、理論的には、逆コンパイルで回路ソースの推定が可能である。また、ＡＳＩＣベンダーに極秘回路部分を含めた出荷検査用のテストパターンを出図する必要があり、回路の推定に対する情報を与えてしまう。なお、テストパターンを出図しないと、故障検出率が上がらずＡＳＩＣ量産品の不良率が上がる可能性がある。
【０１９９】
また、上記（２）の構成は、一般回路のＡＳＩＣに基板システム上で極秘回路部分を外付けのＦＰＧＡとするものである。この構成においては、例えば特許文献２、３、に記載のように、応答シーケンスについてもマッチングを取るキーデータマッチングによってＦＰＧＡのコピーを防止したとしても、製品基板上で実動作時にＦＰＧＡの外部端子が丸見えであるため、この端子を解析することにより回路の動作及び内容を推測される可能性がある。また、一般的にＦＰＧＡのダウンロードは電源立ち上げ時に行われるが、そのダウンロード時のデータを解析される虞がある。
【０２００】
また、上記（３）の構成は、現状の大規模・高速動作可能なＦＰＧＡが非常に高価であることから、システムチップのような大規模回路をＦＰＧＡで量産する事は現実的でないといえる。
【０２０１】
また、上記（４）のように、単純に極秘回路のみをＦＰＧＡとし、他をＡＳＩＣ化してワンチップ化する場合も考えられる。しかし、ベンダーにはＦＰＧＡ周辺の回路構成が顧客出図ゲートから推定可能である。また、ベンダー設計のＦＰＧＡであるため、製品基板の波形観測等によるＦＰＧＡへのダウンロードデータ解析により、極秘部分の回路解析が可能である。また、あるベンダーで設計した他の顧客にも、同一のＦＰＧＡ設計に対する資料が配布されてしまうので、ＲＯＭデータにより回路の推定が可能である可能性がある。
【０２０２】
上述の具体的な実施形態または実施例は、あくまでも、本発明の技術内容を明らかにするものであって、本発明はそのような具体例にのみ限定して狭義に解釈されるべきものではなく、特許請求の範囲に示した範囲で種々の変更が可能であり、変更した形態および異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態も、本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【０２０３】
本発明に係る半導体装置は、内部アルゴリズムの不正解読を防止できるので、例えば紙幣を検出して紙幣の複製を防止するための画像処理回路に適用して、画像形成装置に利用することができる。
【図面の簡単な説明】
【０２０４】
【図１】本発明に係る半導体装置の一例を備えた画像形成装置の概略のブロック図である。
【図２】上記半導体装置を製造する手順を説明するためのブロック図である。
【図３】上記半導体装置を製造手順を示すフローチャートである。
【図４】（ａ）は上記半導体装置の一例の一部を示すブロック図であり、（ｂ）は上記半導体装置の動作を示すフローチャートである。
【図５】（ａ）は上記半導体装置の他の一例の一部を示すブロック図であり、（ｂ）は上記半導体装置の動作を示すフローチャートである。
【図６】（ａ）は上記半導体装置のさらに他の一例の一部を示すブロック図であり、（ｂ）は上記半導体装置の動作を示すフローチャートである。
【図７】本発明に係る半導体装置の他の一例を備えた画像形成装置の概略のブロック図である。
【図８】上記半導体装置の動作を示すフローチャートである。
【図９】上記半導体装置の動作を示すフローチャートである。
【図１０】本発明に係る半導体装置のさらに他の一例を備えた画像形成装置の概略のブロック図である。
【図１１】従来の半導体装置の一部を示す概略のブロック図である。
【符号の説明】
【０２０５】
１、２１、４１                    画像形成装置（電子装置）
２、２２、４２                    制御部
６、２６、４６                    画像処理部（半導体装置）
８、２８、４８                    ＡＳＩＣ（半導体装置）
９、２９、４９ａ、４９ｂ          不揮発性メモリ（記憶装置）
１０、３０、５０                  入出力回路（入出力手段、切換器）
１１、３１、５１                  画像処理回路
１２ａ、４２ａ、５２ａ            極秘回路（プログラマブル回路）
１２ｂ、３２ｂ、５２ｂ            揮発性メモリ
１３、３３、５３ａ、５３ｂ        復号部（復号手段）
１３ａ、３３ａ、５３ｃ、５３ｅ    復号回路
１３ｂ、３３ｂ、５３ｄ、５３ｆ    ＯＴＰ（プログラマブルＲＯＭ、ワンタイムプログラマブルＲＯＭ、鍵データ書込み領域）
１４、３４、５４                  ハッシュ関数回路（一方向性ハッシュ関数手段）
２０                              ＯＴＰＲＯＭ書込回路
【図１】
2005251017.tif 000003
【図２】
2005251017.tif 000004
【図３】
2005251017.tif 000005
【図４】
2005251017.tif 000006
【図５】
2005251017.tif 000007
【図６】
2005251017.tif 000008
【図７】
2005251017.tif 000009
【図８】
2005251017.tif 000010
【図９】
2005251017.tif 000011
【図１０】
2005251017.tif 000012
【図１１】
2005251017.tif 000013