(57)【特許請求の範囲】
【請求項１】
メモリデバイスを備える機能デバイスであって、
外部装置と接続可能な外部インタフェースと、
前記外部インタフェースと導通する第１インタフェースと、
前記メモリデバイスと導通する第２インタフェースと、
前記第１インタフェースと前記第２インタフェースとの間の結合を制御する結合制御部と、
前記外部インタフェースに対応する認証コマンドに基づく認証処理が成功した場合に、前記第１インタフェースと前記第２インタフェースとを導通するように前記結合制御部を制御する制御手段と、
を備えたことを特徴とする、
機能デバイス。
【請求項２】
前記制御手段は、前記認証処理が成功した場合は第１値の信号を出力し、それ以外の場合は前記信号を前記第１値と異なる第２値に変化させる二値回路を含み、かつ、前記結合制御部を制御して、該二値回路が前記第１値の信号を出力する期間は前記第１インタフェースと前記第２インタフェースとが導通する結合状態とし、当該期間を除き前記第１インタフェースと前記第２インタフェースとが物理的に遮断された非結合状態にすることを特徴とする、
請求項１に記載の機能デバイス。
【請求項３】
前記第１インタフェースは、前記外部インタフェースからの外部アクセスを前記メモリデバイスに伝える入力バッファ、前記メモリデバイスからの情報を前記外部インタフェースに伝える出力バッファ、前記外部インタフェースと前記メモリデバイスとの間で双方向の情報の受け渡しを行う双方向バッファのいずれかを含み、前記制御手段は、前記二値回路が前記第１値の信号を出力しないときは当該信号を用いてすべてのバッファの動作を停止させることを特徴とする、
請求項２に記載の機能デバイス。
【請求項４】
外部デバイスと導通する第３インタフェースをさらに備え、
前記制御手段は、前記結合制御部を制御して、前記二値回路が前記第１値の信号を出力する期間は前記第１インタフェースと前記第３インタフェースとを前記結合状態とし、それ以外の場合は前記非結合状態とすることを特徴とする、
請求項２または３に記載の機能デバイス。
【請求項５】
外部装置からの外部アクセスを認証する認証手段を備えており、
前記二値回路は、前記認証手段による認証結果が正当性を維持する期間は前記第１値の信号を出力することを特徴とする、
請求項４に記載の機能デバイス。
【請求項６】
前記メモリデバイスは、前記外部アクセスを受け入れる前記外部インタフェース、又は前記第１インタフェースを識別するための認証ＩＤを記憶しており、
前記認証手段は、前記外部アクセスに対して前記認証ＩＤを用いた認証を行うことを特徴とする、
請求項５に記載の機能デバイス。
【請求項７】
前記二値回路は、前記認証結果に関わらず前記第１値の状態を不可逆的に形成する不可逆手段と、前記認証結果に応じて前記第１値の状態と前記第２値の状態とを可逆的に形成する可逆手段とのいずれかで形成された状態に基づいて前記信号を出力することを特徴とする、
請求項６に記載の機能デバイス。
【請求項８】
前記制御手段は、前記認証結果を通電中のみ有効とすることを特徴とする、
請求項７に記載の機能デバイス。
【請求項９】
前記機能デバイスに固有の個体識別情報を保持する保持手段を有し、
前記制御手段は、認証ＩＤ候補と第１固有値とを伴う登録コマンドを取得し、取得した前記認証ＩＤ候補と前記個体識別情報とに基づいて第２固有値を導出するとともに、導出した第２固有値と前記第１固有値とを比較し、一致した場合、前記認証ＩＤ候補を前記認証ＩＤとして前記メモリデバイスに記憶させることを特徴とする、
請求項６に記載の機能デバイス。
【請求項１０】
前記認証手段は、前記個体識別情報を用いて前記外部アクセスの相互認証を行い、相互認証が成功したときに前記登録コマンドの取得を可能にすることを特徴とする、
請求項９に記載の機能デバイス。
【請求項１１】
前記認証手段は、前記相互認証の認証結果が正当でない回数を累積し、累積値が予め設定された上限回数を超えたときは、前記外部アクセスのアクセス元に対する以後の認証を回避することを特徴とする、
請求項１０に記載の機能デバイス。
【請求項１２】
一つのパッケージに、請求項９に記載された機能デバイスと、前記外部インタフェースを通じて前記機能デバイスと接続される第２制御手段とが収容されており、
前記第２制御手段は、
前記機能デバイスに前記登録コマンドを送信し、これにより前記機能デバイスとの情報の受け渡しを可能にすることを特徴とする、
制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュリティ性の機能デバイス及び制御装置に関する。
【背景技術】
【０００２】
ネットワークに接続可能な情報処理装置では、認証処理や秘密情報に対する暗号化処理などのセキュリティ機能を有する機能デバイスを搭載するのが一般的になっている。セキュリティ機能は、情報処理装置に接続される周辺装置との関係でも求められる。例えば特許文献１には、制御装置と周辺装置との間に認証装置を介在させるシステムが開示されている。このシステムでは、周辺装置に対応する鍵識別子と暗号鍵データとを記憶しておく。そして、制御装置から周辺装置の使用要求に関する認証用コマンドを検知すると、認証用コマンドに含まれる関連装置の識別情報及び認証データから鍵を特定する。そして、特定した鍵に対応する暗号鍵データと認証データとを用いて認証処理を実行する。認証処理が成功すると、周辺装置を接続する物理的な入出力ポートを介して周辺装置を動作可能状態にする。これにより、制御装置あるいは周辺装置のセキュリティ情報の改ざんなどを防止することができるとされている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１２３７２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示されたシステムでは、認証装置と周辺装置とを接続する物理的な外部インタフェースポートが存在する。この外部インタフェースは、通常、当該装置の最終動作チェックなどを行う上で必須となる。しかし、高度なスキルを有する者により、外部インタフェースに入力される信号自体が偽装されると、セキュリティが破られるおそれがある。例えば、正当でない者による外部インタフェースにつながる内部機能部品へのアクセスにより、当該内部機能部品に記憶された秘密情報が改ざんされたり、破壊されたりする脅威がある。
本発明は、このような脅威から秘密情報を保護することができる機能デバイス及びそれを搭載した制御装置を提供することを主たる課題とする。
【課題を解決するための手段】
【０００５】
本発明の機能デバイスは、メモリデバイスを備える機能デバイスであって、外部装置と接続可能な外部インタフェースと、前記外部インタフェースと導通する第１インタフェースと、前記メモリデバイスと導通する第２インタフェースと、前記第１インタフェースと前記第２インタフェースとの間の結合を制御する結合制御部と、前記外部インタフェースに対応する認証コマンドに基づく認証処理が成功した場合に、前記第１インタフェースと前記第２インタフェースとを導通するように前記結合制御部を制御する制御手段と、を備えたことを特徴とする。
【発明の効果】
【０００６】
本発明によれば、正当でない者が外部インタフェースを通じて内部の機能部品に記憶された秘密情報にアクセスを試みても、当該アクセスを確実に防止することができる。
【図面の簡単な説明】
【０００７】
【図１】本実施形態に係る制御装置の構成図。
【図２】制御装置を機能デバイスで構成した場合の接続状態の説明図。
【図３】セキュリティＩＣのブロック構成図。
【図４】結合制御部とその主たる周辺部品との接続状態の説明図。
【図５】（ａ）、（ｂ）は結合回路の構成例を示す図。
【図６】ＳＡＴＡ規格に従う拡張コマンド群の説明図。
【図７】拡張コマンドの詳細説明図。
【図８】結合制御部における動作のタイムチャート。
【図９】セキュリティＩＣにおける初期化処理の手順説明図。
【図１０】端子認証ＩＤの登録処理の手順説明図。
【図１１】端子認証ＩＤ登録後の認証処理の手順説明図。
【発明を実施するための形態】
【０００８】
以下、本発明の実施の形態例について図面を用いて説明する。図１は、本発明の実施形態に係る画像形成システムの全体構成図である。この画像形成システムは、複数の機能部品ないし機能デバイスを含む制御装置１２２を備えている。制御装置１２２は、ＣＰＵ（Central Processing Unit）１０１、ＲＯＭ（Read Only Memory）１０３、ＲＡＭ（Random Access Memory）１０４を有するコンピュータを有している。ＲＯＭ１０３及びＲＡＭ１０４は、メモリ制御部１０２及びバス１２１を介してＣＰＵ１０１と接続されている。バス１２１は、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現したものである。バス１２１の代表例として「ＰＣＩｅ」（PCI Express）などがある。バス１２１には、画像処理部１１０も接続されている。バス１２１には、さらに、ＬＡＮ−ＩＦ制御部１０５、Ｒｅａｄｅｒ−ＩＦ制御部１０８、Ａ−ＩＦ制御部１１１、ＳＡＴＡ−Ｈｏｓｔ制御部１１３、パネルＩＦ制御部１１７及びビデオＩＦ制御部１１９も接続されている。なお、「ＩＦ」は、端子、コネクタ、ケーブルその他の接続具を含む情報入出力インタフェースの総称である。
【０００９】
ＣＰＵ１０１は、所定のコンピュータプログラムを実行することにより、制御装置１２２の動作を統括的に制御する。メモリ制御部１０２は、ＲＯＭ１０３及びＲＡＭ１０４への入出力制御やＤＭＡ（Direct Memory Access）制御を行う。ＲＯＭ１０３は、Ｆｌａｓｈメモリに代表されるリード専用メモリである。ＲＯＭ１０３には、ＢＩＯＳ(Basic Input/Output System)プログラムや制御パラメータ等が格納される。Ｆｌａｓｈメモリを接続することでオンボードでの書き換えも可能である。ＲＡＭ１０４は、ＤＤＲ（Double-Data-Rate）メモリに代表される書き換え専用メモリである。ＲＡＭ１０４は、プログラムの作業領域や印刷データの格納領域等の用途に用いられる。
【００１０】
ＬＡＮ−ＩＦ制御部１０５は、ネットワーク１０６との間のデータ入出力制御を行う。プロトコルは、例えばＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）に対応可能である。ネットワーク１０６には、ＨＯＳＴコンピュータ１０７などのネットワーク対応機器と接続されており、これによりネットワーク経由での画像形成を行うことができる。また、図示しないルータを介してインターネットへの接続も可能である。
Ｒｅａｄｅｒ−ＩＦ制御部１０８は、スキャナ装置１０９との入出力制御を行う。スキャナ装置１０９でスキャンされた入力画像データを印字させることでコピー機能を実現する。画像処理部１１０は、ＬＡＮ−ＩＦ制御部１０５、Ｒｅａｄｅｒ−ＩＦ制御部１０８を介して取り込んだ画像に対して各種画像処理を行う。
【００１１】
パネルＩＦ制御部１１７は、ユーザが操作するパネル装置１１８との入出力制御を行う。図１には示されていないが、パネル装置１１８のＵＩ（User Interface）として表示される画面やボタン画像等を操作することにより画像形成に係る各種設定及び状態の確認ができる。ビデオＩＦ制御部１１９は、印字部１２０とのコマンド／ステータスの通信制御や印刷データの転送を行う。印字部１２０は、画像形成を行う機能ブロックであり、詳細は図示しないが印刷装置本体と給紙系及び排紙系から構成される。印字部１２０は、主にビデオＩＦ制御部１１９からのコマンド情報に従い、印刷データを紙媒体などに印刷する。
【００１２】
Ａ−ＩＦ制御部１１１は、ボードＡ１１２との入出力制御を行う。ボードＡ１１２は、制御装置１２２と接続される、所定機能を発揮する機能部品である。本実施形態では、Ｆｌａｓｈメモリのような不揮発性記憶デバイスが搭載された機能部品であるものとする。例えば、ボードＡ１１２は、画像形成システムのブートプログラム格納、印字部１２０に固有となる情報（個体識別データや消耗品情報など）格納などに用いられる。ＳＡＴＡ−Ｈｏｓｔ制御部１１３は、ＳＡＴＡ（Serial Advanced Technology Attachment）規格に準拠したＩＦを有するデバイスとのデータ入出力制御を行う。
【００１３】
暗号化制御部１１４は、接続される不揮発性記憶デバイスとの入出力制御やミラーリング制御を実行しつつ、不揮発性記憶デバイスへの書き込み及び読み出しデータに対して暗号処理及び復号化処理を行う。ここで用いる不揮発性記憶デバイスは、ＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive）などである。ミラーリング制御とは最低２台以上の不揮発性記憶デバイスを用いて上記暗合処理及び復号化処理を行う。本実施形態では、２台のＨＤＤ１１５，１１６を用いてミラーリング制御を行うものとする。一方のＨＤＤ１１５をマスターＨＤＤ、他のＨＤＤ１１６をバックアップＨＤＤと称する。ミラーリング制御ではマスターＨＤＤ１１５のデータをバックアップＨＤＤ１１６にコピーする。書き込み時は、マスターＨＤＤ１１５、バックアップＨＤＤ１１６の双方に暗号化データを書き込む。読み出し時は、マスターＨＤＤ１１５から読み出した暗号データを復号化したものを要求元であるＳＡＴＡ−Ｈｏｓｔ制御部１１３に送信する。
【００１４】
暗号化制御部１１４は、一つのパッケージに収容されたＩＣ搭載の機能デバイスとして構成することができる。この場合、画像形成システムのハードウエア構成はより簡略化されたものとなる。そこで、以後、暗号化制御部１１４を機能デバイスの一例となる「セキュリティＩＣ」と表記する。また、制御装置１２２のうち、ＣＰＵ１０１及び主要制御部もまた、パッケージに収容されたＩＣ搭載の機能デバイスで構成することができる。以後の説明では、この機能デバイスを「コントローラデバイス」あるいは「コントローラＩＣ」と称する。主要制御部は、図１の例では、メモリ制御部１０２、ＬＡＮ−ＩＦ制御部１０５、Ｒｅａｄｅｒ−ＩＦ制御部１０８、画像処理部１１０、Ａ−ＩＦ制御部１１１、ＳＡＴＡ−Ｈｏｓｔ制御部１１３、パネルＩＦ制御部１１７、ビデオＩＦ制御部１１９である。
【００１５】
図２は、コントローラＩＣとセキュリティＩＣ間及びその周辺デバイスとの接続構成図である。周辺デバイスとしては、ボードＡ１１２，ＨＤＤ１１５，１１６が例示されている。セキュリティＩＣ１１４は、ＳＡＴＡ−Ｄｅｖｉｃｅ−ＩＰ２０３と、ＳＡＴＡ−Ｈｏｓｔ−ＩＰ２０４，２０５とを含む。ＳＡＴＡ−Ｄｅｖｉｃｅ−ＩＰ２０３は、ＳＡＴＡ−ＩＦ２０２を介してコントローラＩＣ２０１のＳＡＴＡ−Ｈｏｓｔ制御部１１３と接続される。ＳＡＴＡ−Ｈｏｓｔ−ＩＰ２０４は、ＳＡＴＡ−ＩＦ２０６を介してＨＤＤ１１５に接続される。また、ＳＡＴＡ−Ｈｏｓｔ−ＩＰ２０５は、ＳＡＴＡ−ＩＦ２０７を介してＨＤＤ１１６に接続される。ＳＡＴＡ−Ｄｅｖｉｃｅ−ＩＰ２０３は、ＳＡＴＡ−ＩＦ２０２を介してＳＡＴＡ−Ｈｏｓｔ制御部１１３と接続される。
【００１６】
セキュリティＩＣ１１４は、固有情報を記憶した機能部品であるＦｌａｓｈメモリ２０８を内蔵する。このＦｌａｓｈメモリ２０８は、単独のチップダイであり、その他の機能ブロックのチップダイ（ユーザ・ダイと呼ぶ場合がある）とは独立して設けられる。すなわち、セキュリティＩＣ１１４は、一つのパッケージに２つのチップが内蔵されるＳｉＰ（System in Package）構成を持つ。
【００１７】
コントローラＩＣ２０１には、Ａ−ＩＦ制御部１１１及びＡ−ＩＦ２０９を介してボードＡ１１２が接続される。ボードＡ１１２には、機能部品であるＦｌａｓｈメモリ２１０が実装されている。このＦｌａｓｈメモリ２１０は、セキュリティＩＣ１１４のＦｌａｓｈメモリ２０８に保持される識別データを読み出し、格納する。その詳細は後述する。
【００１８】
図３は、セキュリティＩＣ１１４の内部機能構成図である。セキュリティＩＣ１１４は、制御バス３１２に接続されたＣＰＵ３０１を有する。ＣＰＵ３０１は、所定の暗号・復号プログラムを実行することにより、ＳＡＴＡ−ＩＦ制御、上述した暗号・復号化制御及びミラーリング制御などを行う。ＣＰＵ３０１は、また、所定のＩＣＥプログラムを実行することにより、プログラム開発用デバッガとしてのＩＣＥ（In Circuit Emulator）機能を有する。ＣＰＵ３０１は、また、所定の認証用プログラムを実行することにより、認証手段として機能する。
【００１９】
制御バス３１２には、メモリ制御部３０２も接続されている。メモリ制御部３０２は、Ｆｌａｓｈメモリ２０８やＲＡＭ３０３に対するデータの入出力制御を行う。Ｆｌａｓｈメモリ２０８には、認証処理や暗号化処理及びミラーリング制御に用いられる各種プログラム、データの入出力制御に必要な認証情報及び暗号鍵生成の元データなどの秘密情報及び各種制御パラメータなどが格納される。ＲＡＭ３０３は、プログラムの作業領域や一時的なデータの格納用などに用いられる。
【００２０】
制御バス３１２には、ＳＡＴＡ−Ｄｅｖｉｃｅ制御部３０４も接続されている。ＳＡＴＡ−Ｄｅｖｉｃｅ制御部３０４は、図２に示したＳＡＴＡ−Ｄｅｖｉｃｅ−ＩＰ２０３とその周辺回路を含む。ＳＡＴＡ−Ｄｅｖｉｃｅ制御部３０４は、ＳＡＴＡ−ＩＦ２０２を介してＳＡＴＡ−Ｈｏｓｔ制御部１１３との間で、コマンド／ステータス、各種データの入出力制御を行う。
【００２１】
制御バス３１２には、ＳＡＴＡ−Ｈｏｓｔ制御部３０５も接続されている。ＳＡＴＡ−Ｈｏｓｔ制御部３０５は、図２に示したＳＡＴＡ−Ｈｏｓｔ−ＩＰ２０４、２０５とその周辺回路とを含む。ＳＡＴＡ−Ｈｏｓｔ制御部３０５は、ＨＤＤ１１５、１１６とＳＡＴＡ−ＩＦ２０６、２０７を介して、コマンド／ステータス、各種データの入出力制御を行う。制御バス３１２には、暗号／復号化部３０６も接続されている。暗号／復号化部３０６は、ＨＤＤ１１５、１１６への書き込み及び読み出しデータに対して暗号化及び復号化処理を行う。
【００２２】
制御バス３１２には、また、インタフェース間の結合制御手段として機能する結合制御部３０７が接続されている。前述したようにＦｌａｓｈメモリ２０８には、暗号・復号用プログラムや秘密情報が格納されている。Ｆｌａｓｈメモリダイとユーザ・ダイとをワンパッケージ化するＳｉＰ構成は、秘密情報の漏洩や改ざんを防ぐ観点からは単独デバイスとして外部にＦｌａｓｈメモリ２０８を置くよりも強固なものとなる。しかしながら、セキュリティＩＣ１１４の内部にＦｌａｓｈメモリ２０８を封入すると、供給時の出荷テスト等を行うために、当該Ｆｌａｓｈメモリ２０８にアクセスするための外部端子が必要となる。ここにセキュリティ・ホールが存在する。例えば、権限は無いが技術レベルの高い者がＦｌａｓｈ制御装置３１０を外部Ｆｌａｓｈ端子３１１に接続してＦｌａｓｈメモリ２０８に格納されている認証プログラムや秘密情報に外部アクセスすることが考えられる。そうすると、認証アルゴリズムが解読されたり、認証情報などが暴露されてしまうおそれがある。同様の理由から、ＩＣＥ制御装置３０８が接続される外部ＩＣＥ端子３０９もセキュリティ・ホールとなり得る。結合制御部３０７は、このようなセキュリティ・ホールを解消するために設けられる。
【００２３】
図４は、セキュリティＩＣ１１４のうち、結合制御部３０７とその要部周辺部との接続状態を示した図である。セキュリティＩＣ１１４には、外部インタフェースとして、外部ＩＣＥ端子３０９、外部Ｆｌａｓｈ端子３１１などが設けられている。また、ＳＡＴＡ−ＩＦ２０２を介してＳＡＴＡ−Ｈｏｓｔ制御部１１３（図３参照）が接続されている。さらに、ＳＡＴＡ−ＩＦ２０６，２０７を介してＨＤＤ１１５，１１６が接続されている。
結合制御部３０７は、外部インタフェースと、ＣＰＵ３０１，Ｆｌａｓｈメモリ２０８のような内部機能部品及びセキュリティＩＣ１１４につながる外部デバイス（例えばＨＤＤ１１５，１１６，ＳＡＴＡ−Ｈｏｓｔ制御部１１３）との間に介在する。そして、Ｆｕｓｅ４０２及びＲＥＧ４０３の出力に基づいて結合回路４０１が、これらを結合状態又は非結合状態にする。結合回路４０１は、外部インタフェースと導通する第１インタフェースと、ＣＰＵ３０１、Ｆｌａｓｈメモリ２０８及びメモリ制御部３０２と導通する第２インタフェースとの間に介在する。結合回路４０１は、また、第１インタフェースと外部デバイスが接続される制御バス３１２と導通する第３フェースとの間に介在する。
【００２４】
Ｆｕｓｅ４０２は、過電流状態のときに切断される公知のヒューズを含む部品であり、切断前は第１値の状態（論理Ｈｉｇｈ：“１”）を形成し、切断されたときは、該状態を解除する。つまり、Ｆｕｓｅ４０２は、第１値の状態（“１”）を不可逆的に形成する不可逆手段として機能する。
他方、ＲＥＧ４０３は、認証手段による認証結果に応じて第１値の状態と第２値の状態（論理Ｌｏｗ：“０”）を可逆的に形成する可逆手段として機能するレジスタである。ＲＥＧ４０３は、認証結果が正当性を維持する期間だけ第１値の状態（“１”）を維持する。第１値の状態（“１”）は、セキュリティＩＣ１１４の通電が遮断されるとリセットされ、第２値の状態（“０”）となる。つまり、第１値の状態（“１”）は、通電中のみ有効となる。
【００２５】
結合制御部３０７における結合回路４０１とＦｕｓｅ４０２及びＲＥＧ４０３との間の構成例は例えば図５（ａ）、（ｂ）に示すものとなる。結合回路４０１は、図５（ａ）では結合回路４０１Ａ、図５（ｂ）の場合は結合回路４０１Ｂとなる。
図５（ａ）は、３ステート・バスが実装可能な場合を前提とした回路構成例である。外部インタフェースと導通する第１インタフェースは、入力端子５０１、出力端子５０２、双方向端子５０３で構成されるものとする。
入力端子５０１は、結合回路４０１Ａの入力バッファ５０４に導通接続される。出力端子５０２は出力バッファ５０６に導通接続される。双方向端子５０３は双方向バッファ５０７に導通接続される。入力バッファ５０４の入力側に接続されるプルアップ又はプルダウン抵抗５０５は、信号の特性に応じて適切な方が付加される（双方向バッファ５０７の場合も同様）。また、各バッファの入出力は、第２インタフェース及び第３インタフェースを兼ねる内部入出力バス５０８に接続される。内部入出力バス５０８には、図３に示されたＦｌａｓｈメモリ２０８、ＣＰＵ３０１、メモリ制御部３０２、制御バス３１２が接続される。つまり、内部入出力バス５０８には内部入出力信号が伝送される。
【００２６】
バッファ５０４〜５０７は、いずれも３ステート・バッファである。これらの３ステート・バッファ５０４〜５０７がオープンの場合、第１インタフェースと第２インタフェース（及び第３インタフェース）とが非結合状態となる。また、クローズの場合、第１インタフェースと第２インタフェース（及び第３インタフェース）とが結合状態となる。各３ステート・バッファ５０４〜５０７をオープンにするかクローズにするかは、各３ステート・バッファ５０４〜５０７のイネーブル端子に接続されるイネーブル信号により制御される。このイネーブル信号は、ＣＰＵ３０１により実現される入出力イネーブル制御部５１３により制御される。
【００２７】
結合制御部３０７は、二値回路の一例となるＯＲ回路５１４を有している。ＯＲ回路５１４の入力には、Ｆｕｓｅ４０２及びＲＥＧ４０３からの信号線が接続される。そして、Ｆｕｓｅ４０２とＲＥＧ４０３の少なくとも一方が“１”の信号を生成するときは、当該“１”の信号を出力する。それ以外の場合は、“１”を“０”に変化させる。図５（ａ）の例では、この信号をマスク信号と呼ぶ。マスク信号は、ＮＡＮＤ回路５０９〜５１２に入力される。マスク信号が“１”の場合、ＮＡＮＤ回路５０９〜５１２のゲートが開き、入出力イネーブル制御部５１３から入力されるイネーブル信号が有効になる。つまり、第１インタフェースと第２インタフェースとを結合状態にする。このとき、第１インタフェースと第３インタフェースとの間も結合状態となる。それ以外の場合、結合制御部３０７は、第１インタフェースと第２インタフェース、第１インタフェースと第３インタフェースをそれぞれ非結合状態にする。すなわち、インタフェース間を物理的に遮断する。つまり、所定の条件を満たす場合を除き、第１インタフェースと第２インタフェースを物理的に非結合状態にする。
【００２８】
例えば図５（ａ）の構成の場合、ＯＲ回路５１４から出力されるマスク信号が“１”でない期間は、すべてのバッファ５０４，５０６，５０７の動作を停止する。そのため、内部入出力バス５０８と入力端子５０１、出力端子５０２、双方向端子５０３とがいずれも非結合状態となる。これにより、外部Ｆｌａｓｈ端子３１１とＦｌａｓｈメモリ２０８とが非導通となるので、正当でない者が外部Ｆｌａｓｈ端子３１１を通じてＦｌａｓｈメモリ２０８に外部アクセスを試みてもそれが不可能となる。
【００２９】
結合回路４０１は、入力元と出力先とを選択又は分配する回路として使用することもできる。図５（ｂ）は、外部アクセスにより入力された信号及びセキュリティＩＣ１１４の内部で生じた信号の出力先を選択又は分配する場合の回路構成例を示す。この場合にＯＲ回路５１４から出力される信号をセレクト信号と呼ぶ。
マルチプレクサ（選択）５１５は、外部入力端子、例えば外部Ｆｌａｓｈ入力端子５１７から入力された信号と内部入力バス５１８から入力された信号のどちらを内部出力バス５１９に入力するかを決定（選択）する。内部入力バス５１８には、例えばメモリ制御部３０２が接続される。内部出力バス５１９には、例えば内部Ｆｌａｓｈメモリ２０８が接続される。
ＯＲ回路５１４から出力され、マルチプレクサ５１５に入力されるセレクト信号が“１”の場合、外部Ｆｌａｓｈ入力端子５１７が決定され、入力信号として例えばＦｌａｓｈ制御装置３１０からの入力信号が選択される。他方、セレクト信号が“１”でない場合、つまり“０”の場合、内部入力バス５１８から入力された信号、例えば内部メモリ制御部３０２から入力された信号が選択される。
【００３０】
デマルチプレクサ５１６（分配）は、Ｆｌａｓｈメモリ２０８から出力される信号を外部出力端子、例えば外部Ｆｌａｓｈ出力端子５２０又はメモリ制御部３０２のいずれに分配するかを決定する。セレクト信号が“１”の場合、外部Ｆｌａｓｈ出力端子５２０（すなわち、Ｆｌａｓｈ制御装置３１１への出力信号）へ分配される。他方、セレクト信号が“１”でない場合、つまり“０”の場合、メモリ制御部３０２への出力信号として分配される。従って、セレクト信号が“１”の期間は、外部Ｆｌａｓｈ出力端子５２０（第１インタフェース）と第２インタフェースに接続された機能部品とが結合状態となる。
【００３１】
ここで、ＯＲ回路５１４から出力される信号のレベル（“１”／“０”）に応じて、外部Ｆｌａｓｈ入力端子５１７とＦｌａｓｈメモリ２０８とがどのタイミングで結合状態となり、あるいは、非結合状態となるかについて図８を参照して説明する。図８は、ＯＲ回路５１４に入力されるＦｕｓｅ４０２及びＲＥＧ４０３とＯＲ回路５１４から出力されるセレクト信号との関係を示すタイムチャートである。横軸は、セキュリティＩＣ１１４に電圧が印加される時間軸を示す。ある時刻Ｔ０を基点として、Ｔ０〜Ｔ１の間、Ｆｕｓｅ４０２は切断されていない。つまり、ＯＲ回路５１４から出力されるセレクト信号（「ＯＲ」と表記）は“１”を維持しており、外部Ｆｌａｓｈ出力端子５２０は、Ｆｌａｓｈメモリ２０８と結合状態にある。時刻Ｔ１で電源をＯＦＦし、時刻Ｔ２でＦｕｓｅ４０２を切断した直後に再び電源ＯＮしたとする。この場合、Ｆｕｓｅ４０２とＲＥＧ４０３の出力は、共に“０”となる。そのため、ＯＲ回路５１４から出力されるセレクト信号も“０”レベルとなり、外部Ｆｌａｓｈ出力端子５２０とＦｌａｓｈメモリ２０８とが非結合状態となる。つまり、物理的に遮断された状態となる。時刻Ｔ３の直前に、後述する認証手段による認証結果が正当とされたとする。するとＲＥＧ４０３は“１”となり、ＯＲ回路５１４から出力されるセレクト信号は“１”に遷移する。
【００３２】
時刻Ｔ４〜Ｔ６は、直前のセレクト信号が“１”で、時刻Ｔ４において電源ＯＦＦし、再び時刻Ｔ５において電源ＯＮ、時刻Ｔ６で再度ＲＥＧ４０３を“１”の状態へ信号遷移させるとする。時刻Ｔ３でのセレクト信号は“１”であるが、時刻Ｔ４の電源ＯＦＦによりＲＥＧ４０３が初期化される。そのため、再び電源ＯＮした時刻Ｔ５後、時刻Ｔ６の直前までセレクト信号は“０”の状態となる。そのため、外部Ｆｌａｓｈ出力端子５２０は、Ｆ１ａｓｈメモリ２０８と再び物理的に遮断された状態となる。時刻Ｔ６において、認証手段による認証が行われ、ＲＥＧ４０３が“１”の状態になると（認証が成功すると）、セレクト信号も“１”となり、外部Ｆｌａｓｈ出力端子５２０は、Ｆｌａｓｈメモリ２０８と再び物理的に接続状態となる。
このように、本実施形態では、電源ＯＮ状態で、且つＦｕｓｅ４０２の切断後は、後述する認証手段によりＲＥＧ４０３を“１”の状態にすると、外部インタフェースと内部の機能部品とが結合状態となる。但し、結合状態が継続されるのは、セキュリティＩＣ１１４が電源ＯＦＦされるまでの期間となる。
【００３３】
次に、セキュリティＩＣ１１４と外部デバイス及び周辺デバイスとのデータの受け渡しについて説明する。上述したように、制御装置１２２上のコントローラＩＣ２０１とセキュリティＩＣ１１４との接続インタフェースはＳＡＴＡ−ＩＦ２０２のみであり、サイドバンド信号は生じない。従って、セキュリティＩＣ１１４との間で受け渡されるデータは、全てＳＡＴＡ−ＩＦ２０２を介して行われる。具体的には、コマンド／ステータスパケットの送受信により行われる。本実施形態では、ＳＡＴＡ規格における独自定義である拡張コマンドを使用してコマンド／ステータスパケットの送受信を行うものとする。
【００３４】
ＳＡＴＡ規格における拡張コマンドの例を図６に示す。ＳＡＴＡ規格では、リードコマンドやライトコマンドのように規格として定義されたもの以外に、コマンドの中身が未定義の空コマンドが準備されている。本実施形態では、この空コマンドに独自の定義を与えることにより、コマンド／ステータスパケットの送受信を行う。図６に示す表は、コマンド名６０１、機能６０２、ＣＲ６０３、ＦＲ６０４、ＴＹＰＥ６０５で構成されている。
【００３５】
ＣＲ６０３は、「Command Register」である。ＦＲ６０４は、「Features Register」である。ＴＹＰＥ６０５は、転送タイプを表す。なお、ＣＲ６０３やＦＲ６０４は、ＳＡＴＡ規格でタスクレジスタと呼ばれ、パケット内の所定の位置にレジスタとして定義される。ＣＲ６０３には、必ずＳＡＴＡ規格に定義されたコマンド番号をセットしなければならない。図６に示した表でＣＲ６０３の列に記載されている“Ｆ０”は、未定義コマンドを示す番号である。ＦＲ６０４は、サブコマンド番号として独自に定義した拡張コマンドのコマンド番号である。コマンド名６０１列の上から順次“０１”〜“０８”が定義される。すなわち、ＳｅｔＵｐ（ＳＵ）コマンド６０６のコマンド番号が“０１”となる。また、InstallSecretコマンド６０７のコマンド番号が“０２”と定義される。以後、“０８”までＦＲ６０４が定義される。なお、実施に際しては、“Ｆ０”は“Ｆ０ｈ”、“０１”〜“０８”は“０１ｈ”〜“０８ｈ”として認識される。ＴＹＰＥ６０５列に記された略称（ＰＯやＰＩ）は、ＳＡＴＡ規格で定義された転送タイプを示す記号である。ホストを基準としてＯｕｔ（書き込み系）かＩｎ（読み出し系）で、且つパケットにデータが伴うか、そうでないかで分類されている。
【００３６】
ＴＹＰＥ６０５列に記された記号において、ＰＯは、ＰＩＯ−ｏｕｔ転送プロトコル、ＰＩはＰＩＯ−ｉｎ転送プロトコルとして定義される。いずれもデータを伴う転送タイプである。データを伴わない（すなわち、レジスタ値のみ）場合は、ＮＤ、すなわちＮｏｎ−Ｄａｔａ転送プロトコルが定義される。各拡張コマンドの詳細内容については省略するが、一部の拡張コマンドの機能６０２について簡単に説明しておく。また、以下の説明の以降で各拡張コマンドを指定する場合には、括弧内に示す略称を用いることにする。
【００３７】
コマンド名６０１について具体的に説明すると、以下のようになる。ＳｅｔＵｐ（ＳＵ）コマンド６０６は、本実施形態では、コントローラＩＣ２０１からセキュリティＩＣ１１４の各種設定を行うために使用される。設定する事項としては、例えば、暗号機能やミラーリング機能の有効・無効設定やエラー時のタイムアウト時間の設定等がある。InstallSecret（秘密情報設定：ＩＳ）コマンド６０７は、秘密情報の設定を促すコマンドである。CrossCertificationＨＤ（ＣＣＨＤ）及びCrossCertificationＤＨコマンド（ＣＣＤＨ）６０８、６０９は、コントローラＩＣ２０１とセキュリティＩＣ１１４間の相互認証を行うために利用される。相互認証は、チャレンジ＆レスポンス方式で行う。RegisterTerminalＩＤコマンド（ＲＴ）６１０は、認証ＩＤ候補の登録を促すコマンド、つまり登録コマンドである。CertifyTerminalコマンド（ＣＴ）６１１は、端子認証コマンドである。GetSatusコマンド（ＧＳ）６１２は、セキュリティＩＣ１１４内部のステータス情報取得を促すコマンドである。例えば、接続される前記ＨＤＤ１１５、１１６の状態やエラー時の内容などを取得できる。GetIdentifyコマンド６１３は、セキュリティＩＣ１１４の個体別に内部で生成される識別情報の取得を促すコマンドである。
【００３８】
図７は、ＲＴコマンド６１０及びＣＴコマンド６１１について補足するものである。両コマンドの転送タイプであるＰＯにはデータパケット７０２が付随する。すなわち、コマンドパケット７０１の送信後、続いてデータパケット７０２が送信される。例えば、認証ＩＤ候補の登録コマンドであるＲＴコマンド６１０に付随するデータパケット７０３には、登録したい認証ＩＤ候補とハッシュ値を表すＫ値が送信される。認証ＩＤ候補は、外部アクセスを受け入れる外部インタフェース（例えば外部Ｆｌａｓｈ端子３１１）を識別するための識別情報である認証ＩＤの候補である。Ｋ値はハッシュ関数により導出される固有値（第１固有値）である。ＣＴコマンド６１１に付随するデータパケット７０４には、外部端子認証処理時に使用する認証ＩＤ候補が送信される。このように、セキュリティＩＣ１１４に対する各種設定や認証及びステータス取得等は、コントローラＩＣ２０１から発行される拡張コマンドによって制御される。
【００３９】
次に、制御装置１２２の動作例について説明する。図９は、使用開始時にコントローラＩＣ２０１が実行する初期化処理の手順説明図である。コントローラＩＣ２０１では、ＣＰＵ１０１が初期化処理を実行する。この初期化処理により、セキュリティＩＣ１１４側では、ＣＰＵ３０１が対応する処理を実行する。
図９を参照すると、ＣＰＵ１０１は、セキュリティＩＣ１１４の設定処理を行う（Ｓ１１）。具体的には、図６に示したＳＵ（SetUp）コマンド６０６に所定設定値を定義してＣＰＵ３０１へ送信する。ＳＵコマンド６０６を受信したセキュリティＩＣ１１４のＣＰＵ３０１は、ＳＵコマンド６０６に定義された内容に応じて自身のセットアップを実行する。ＣＰＵ３０１は、また、物理乱数を生成し、個体別に固有の個体識別情報を生成し、これを固有情報の一つとして、Ｆｌａｓｈメモリ２０８の所定の場所に格納する。個体識別情報は、暗号鍵生成の元データや認証ＩＤ候補の登録時の認証などに利用される。
【００４０】
その後、ＣＰＵ１０１は、秘密情報の設定処理を行う（Ｓ１２）。すなわち、ＣＰＵ１０１は、図６に示したＩＳコマンド６０７に秘密情報を定義し、これをＣＰＵ３０１へ送信する。ＩＳコマンド６０７を受信したＣＰＵ３０１は、秘密情報をＦｌａｓｈメモリ２０８の所定の場所に格納する。ＣＰＵ１０１は、次いで、ＣＣＨＤ（相互認証Ｈ⇒Ｄ）コマンド６０８及びＣＣＤＨ（相互認証Ｄ⇒Ｈ）コマンド６０９を用いて、例えばチャレンジ＆レスポンス方式でＣＰＵ３０１との相互認証処理を行う（Ｓ１３）。相互認証が失敗した場合（Ｓ１４：Ｎ）、ＣＰＵ１０１は適切なエラー処理実行した後（Ｓ１８）、初期化処理を終了する。エラー処理関連については、一般的なエラー処理を用いることができる。他方、ＣＰＵ３０１は、ＳＡＴＡ−ＩＦ２０２での通常アクセス可能なコマンドの受け渡しを遮断する。
【００４１】
Ｓ１４において、相互認証が成功した場合（Ｓ１４：Ｙ）、ＣＰＵ１０１は、ＧＩ（識別情報取得）コマンド６１３をＣＰＵ３０１へ送信する。ＧＩコマンド６１３を受信したＣＰＵ３０１は、Ｆｌａｓｈメモリ２０８の所定の場所から個体識別情報の取得を試みる（Ｓ１５）。個体別識別情報の取得に失敗した場合（Ｓ１６：Ｎ）、ＣＰＵ１０１はエラー処理実行した後（Ｓ１８）、初期化処理を終了する。Ｓ１６において、個体識別情報の取得に成功した場合（Ｓ１６：Ｙ）、ＣＰＵ３０１は、Ｆｌａｓｈメモリ２０８から読み出した個体識別情報をステータスとしてＣＰＵ１０１に送信する。そして、通常運用を開始し（Ｓ１８）、初期化処理を終了する。
【００４２】
ここで、Ｓ１３の相互認証処理は、電源ＯＮ起動時に毎回実施する。相互認証の認証結果が通電中のみ有効となるためである。また、ＧＩコマンド６１３により個体識別情報を取得したＣＰＵ１０１は、図２で説明したように制御装置１２２に接続されるボードＡ１１２のＦｌａｓｈメモリ２１０にその個体識別情報を格納する。ボードＡ１１２は、容易には取り外せない隠された位置に取り付けられていることを前提としている。
【００４３】
次に、外部アクセスを受け入れるための端子認証ＩＤの登録処理について説明する。図１０はＣＰＵ３０１が実行する処理の手順説明図である。この処理は、図９のＳ１３で説明した相互認証処理の実行が前提となる（Ｓ２１）。相互認証処理が失敗した場合（Ｓ２２：Ｎ）、ＣＰＵ３０１は、エラー処理を実行して（Ｓ２３）、登録処理を終了する。エラー処理は、ＣＰＵ３０１が端子認証ＩＤの登録に失敗したことをステータスとしてＣＰＵ１０１に送信する処理である。ＣＰＵ３０１は、また、ＳＡＴＡ−ＩＦ２０２をＨＤＤ１１５、１１６から遮断する。
【００４４】
相互認証処理が成功した場合（Ｓ２２：Ｙ）、ＣＰＵ３０１は、コマンドの取得を可能にする。取得したコマンドが登録コマンドではない場合（Ｓ２４：Ｎ）、ＣＰＵ３０１は、当該コマンド処理を実行する（Ｓ２５）。Ｓ２４において登録コマンドであったということは、図７に示されるように、ＣＰＵ１０１が、ＲＴコマンド６１０に適切な認証ＩＤ候補とＫ値（第１固有値）とをセットしてＣＰＵ３０１へ送信したことを意味する。この場合（Ｓ２４：Ｙ）、ＣＰＵ３０１は、認証ＩＤ候補の登録コマンドを取得する取得手段として機能する。
【００４５】
その後、ＣＰＵ３０１は、取得した認証ＩＤ候補から独自にＫ値の計算を行う（Ｓ２６）。独自に計算したＫ値を第２固有値と呼ぶ。第２固有値となるＫ値の計算は、ＣＰＵ３０１が、Ｓ１５において取得し、Ｆｌａｓｈメモリ２０８に格納している個体識別情報を読み出して行う。Ｋ値は、個体識別情報と端子認証ＩＤとを結合して計算したものである。従って、権限を持たない者は、個体識別情報を知らないので、Ｋ値を計算することができない。
【００４６】
第２固有値となるＫ値が算出されると、ＣＰＵ３０１は、これをＲＴコマンド６１０に設定された第１固有値であるＫ値と比較する。不一致であれば（Ｓ２７：Ｎ）、エラー処理を行う（Ｓ２９）。その後、再びＳ２４に戻り、コマンドの待機状態に入る。Ｓ２７においてＫ値が一致した場合（Ｓ２７：Ｙ）、ＣＰＵ３０１は、認証ＩＤ候補を端子認証ＩＤと認識し、これを機能部品であるＦｌａｓｈメモリ２０８に記憶させる。つまり、ＣＰＵ３０１は、端子認証ＩＤの登録手段として機能する。その後、ＣＰＵ３０１は、登録完了したことを表すＯＫ返信をＣＰＵ１０１に対して行い、再びＳ２４に戻る。
【００４７】
次に、登録完了後の認証処理の手順について、図１１を参照して説明する。この認証処理は、ＣＰＵ３０１が実行する。ＣＰＵ３０１は、Ｓ１３で説明した相互認証処理を実行する（Ｓ３１）。相互認証処理が失敗した場合（Ｓ３２：Ｎ）、ＣＰＵ３０１は、エラー処理実行後（Ｓ３３）、処理を終了する。また、ＳＡＴＡ−ＩＦ２０２をＨＤＤ１１５、１１６から遮断する。
Ｓ３２において、相互認証処理が成功した場合（Ｓ３２：Ｙ）、ＣＰＵ３０１は、コントローラＩＣ２０１からのコマンドの受付を開始する。受け付けたコマンドが端子認証コマンドでない場合（Ｓ３４：Ｎ）、ＣＰＵ３０１は、その他のコマンド処理を実行し、その後、Ｓ３４に戻る。
【００４８】
Ｓ３４において、受け付けたコマンドが端子認証コマンドであることは、ＣＰＵ１０１がＣＴコマンド６１１に認証ＩＤ候補をセットしてＣＰＵ３０１へ送信し、認証ＩＤ候補が端子認証ＩＤとして登録済であることを意味する。この認証ＩＤ候補を伴う端子認証コマンドを取得した場合、ＣＰＵ３０１は認証手段として機能する。この場合（Ｓ３４：Ｙ）、ＣＰＵ３０１は、設定された認証ＩＤ候補と自身がＦｌａｓｈメモリ２０８に格納している端子認証ＩＤを読み出して比較処理を行う（Ｓ３５）。一致した場合（Ｓ３７：Ｙ）、ＣＰＵ３０１は、端子認証ＩＤに対応する外部インタフェースと内部機能部品等とを非結合状態から結合状態に遷移させる。その後、ＣＰＵ３０１は、後述する累積値Ｎを初期化（＝０）し、外部端子認証が成功したこと（認証結果が正当性を表すこと）をステータスとしてＣＰＵ１０１に送信する。つまりＯＫ返信を行う（Ｓ３８）。その後、Ｓ３４に戻り、コマンドの待機状態に入る。
【００４９】
Ｓ３７において、ＩＤが不一致であった場合（Ｓ３７：Ｎ）、ＣＰＵ３０１は、エラー処理として認証結果が正当でないことをステータスとしてＣＰＵ１０１に送信する。ＣＰＵ３０１は、また、認証結果が正当でないとされた回数を累積する。すなわち「Ｎ→Ｎ＋１」のカウントアップを行う（Ｓ３９）。そして累積値Ｎが予め設定された上限回数を超えていないかどうかを判定する（Ｓ３１０）。上限回数は、権限の無い者が外部端子認証を繰り返す全検索攻撃を防御するために設定される数値である。本実施形態では、３回以下とする。上限回数は、ＳＵコマンド６０６で設定されているものとする。この上限回数が３回を超えていない場合（Ｓ３１０：Ｎ）、再びＳ３４に戻り、受信コマンドの待機状態に入る。
【００５０】
Ｓ３１０において、累積値Ｎが上限回数（３回）を超えた場合（Ｓ３１０：Ｎ）、ＣＰＵ３０１は、外部アクセスのアクセス元に対する以後の認証を回避する。具体的にはＳＡＴＡ−ＩＦ２０２を遮断するなどして、コマンドの受け渡しを不能にする。また、ＣＰＵ１０１は適切なエラー処理を実行し（Ｓ３８）、処理を終了する。ここでは図示しないが、相互認証の再認証を実施することで運用を継続してもよい。
なお、外部端子と内部機能リソースとの結合状態は、例えば印刷装置の電源ＯＮ期間のみ継続し、電源ＯＦＦ後は再び図１０で説明した外部端子認証処理を実行するなど期間限定でもよい。
【００５１】
セキュリティＩＣ１１４は、製品化以前の開発段階、ＩＣ内部のＦｌａｓｈメモリ２０８への書き込み及び出荷テストの段階では、Ｆｕｓｅ４０２を通常状態（第１状態）にしておく。これにより、外部インタフェースと内部機能部品とを結合状態とし、製品化後はＦｕｓｅ４０２を物理的に遮断して非結合状態にする。その後は、外部端子ＩＤを用いた認証処理の結果が正当性を維持する限り結合状態を維持し、その間に製品の障害への迅速な解析等に利用することができる。
なお、本実施形態では、不可逆手段としてＦｕｓｅ４０２の利用を挙げたが、同等の性質を持つ他の手段を利用してもよい。また、本実施形態では、Ｆｕｓｅ４０２を１個利用する例を記載したが、当然ながら複数個用いても構わない。
【００５２】
［変形例］
本実施形態では、受け入れる外部インタフェースを識別するための認証ＩＤとして外部端子ＩＤを用いる場合の例について説明したが、第１インタフェースを識別するための認証ＩＤを用いてもよい。また、本実施形態では、それぞれＩＣ搭載の機能デバイスであるコントローラＩＣ２０１とセキュリティＩＣ１１４とを制御装置１２２に搭載した場合の例について説明したが、これらのＩＣ搭載デバイスは、一つのパッケージに搭載したものであってもよい。
【図１】
0006719894.tif 000002
【図２】
0006719894.tif 000003
【図３】
0006719894.tif 000004
【図４】
0006719894.tif 000005
【図５】
0006719894.tif 000006
【図６】
0006719894.tif 000007
【図７】
0006719894.tif 000008
【図８】
0006719894.tif 000009
【図９】
0006719894.tif 000010
【図１０】
0006719894.tif 000011
【図１１】
0006719894.tif 000012