(57)【要約】  チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）が開示される。本チップシステムは、複数の暗号化キーが保存された第１メモリと、第２メモリと、暗号化キー設定値が保存された第３メモリと、複数の暗号化キーの中で暗号化キー設定値に対応する暗号化キーを用いて、外部非揮発性メモリに保存された暗号化されたデータを復号化し、復号化されたデータを第２メモリに保存し、第２メモリに保存されたデータを用いてブートを行うＣＰＵとを含む。それにより、ブートのセキュリティ性を向上させることができる。
2016510444.tif 000002
【特許請求の範囲】
【請求項１】
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）において、
複数の暗号化キーが保存された第１メモリと、
第２メモリと、
暗号化キー設定値が保存された第３メモリと、
前記第１メモリに対するアクセスを制御する第１メモリ制御部と、
前記第２メモリに対するアクセスを制御する第２メモリ制御部と、
バスと、
前記複数の暗号化キーの中で前記暗号化キー設定値に対応する暗号化キーを用いて、外部非揮発性メモリに保存された暗号化されたデータを復号化し、復号化されたデータを前記第２メモリに保存し、前記第２メモリに保存されたデータを用いてブートを行うＣＰＵと、
前記ＣＰＵの運営状態（ｏｐｅｒａｔｉｏｎ  ｓｔａｔｅ）に応じて、前記第１メモリ制御部及び前記第２メモリ制御部のいずれか一方を選択的に前記バスと接続するスイッチ部（ｓｗｉｔｃｈｉｎｇ  ｕｎｉｔ）と
を含むチップシステム。
【請求項２】
前記第１メモリ制御部は、前記第１メモリのアクセス制御値が登録された（ｒｅｇｉｓｔｅｒｅｄ）レジスタを含み、
前記スイッチ部は、前記アクセス制御値に応じて、前記第１メモリ制御部及び前記第２メモリ制御部のいずれか一方を選択的に前記バスと接続し、
前記ＣＰＵは、前記ＣＰＵの前記第１メモリ使用が完了すると、前記アクセス制御値を変更して前記第１メモリに対するアクセスをディセーブルさせることを特徴とする請求項１に記載のチップシステム。
【請求項３】
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）において、
複数の暗号化キーが保存された第１メモリと、
第２メモリと、
暗号化キー設定値が保存された第３メモリと、
前記複数の暗号化キーの中で前記暗号化キー設定値に対応する暗号化キーを用いて、外部非揮発性メモリに保存された暗号化されたデータを復号化し、復号化されたデータを前記第２メモリに保存し、前記第２メモリに保存されたデータを用いてブートを行うＣＰＵと、
前記外部メモリとの接続状態を選択する少なくとも１つのスイッチを含む、前記ＣＰＵと接続されたメモリ制御部と
を含み、
前記メモリ制御部は、第１キー値と第２キー値との比較結果に応じて、選択的に前記外部メモリに前記ＣＰＵから受信した記録信号を出力することを特徴とするチップシステム。
【請求項４】
前記メモリ制御部は、
前記第１キー値と前記第２キー値とが同一の場合に、前記外部メモリに記録信号を出力するように、接続状態を選択する前記少なくとも１つのスイッチを制御することを特徴とする請求項３に記載のチップシステム。
【請求項５】
前記メモリ制御部は、
前記記録信号が外部メモリに出力されることを防止するために、前記少なくとも１つのスイッチが前記外部メモリとの接続を切る（ｄｉｓａｂｌｅ）ように制御することを特徴とする請求項３に記載のチップシステム。
【請求項６】
前記メモリ制御部は、
前記メモリ制御部が前記外部メモリに前記記録信号が出力されることを防止する場合にも、前記外部メモリの動作を読み込むように制御することを特徴とする請求項５に記載のチップシステム。
【請求項７】
前記少なくとも１つのスイッチは、第１スイッチ及び第２スイッチを含み、
前記メモリ制御部は、前記第１スイッチが前記外部メモリの動作を読み込むように制御し、前記第２スイッチが前記第２スイッチとの接続を制御し、前記第２スイッチが外部メモリに前記記録信号を出力するように制御することを特徴とする請求項３に記載のチップシステム。
【請求項８】
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）において、
複数の暗号化キーが保存された第１メモリと、
第２メモリと、
暗号化キー設定値が保存された第３メモリと、
前記複数の暗号化キーの中で前記暗号化キー設定値に対応する暗号化キーを用いて、外部非揮発性メモリに保存された暗号化されたデータを復号化し、復号化されたデータを前記第２メモリに保存し、前記第２メモリに保存されたデータを用いてブートを行うＣＰＵと、
ソフトウェアコードを生成するコード生成部と
を含み、
前記ＣＰＵは、前記ソフトウェアコードを用いて初期化を行うことを特徴とするチップシステム。
【請求項９】
前記コード生成部は、
前記ＣＰＵからアドレスを受信してデコードするアドレスデコーダと、
複数のレジスタと、
前記アドレスデコーダでデコードされたアドレスに応じて、前記複数のレジスタに保存されたレジスタ値を選択的に検出して組み合わせ、前記ソフトウェアコードを生成するマルチプレクサと
を含むことを特徴とする請求項８に記載のチップシステム。
【請求項１０】
前記コード生成部は、
前記ＣＰＵからアドレスを受信してデコードするアドレスデコーダと、
前記アドレスデコーダでデコードされたアドレスからインストラクションアドレスを生成する第１生成部と、
複数のグループに区分される複数のインストラクションレジスタと、
前記インストラクションアドレスに応じて、前記複数のインストラクションレジスタからレジスタ値を選択的に検出する複数のインストラクションマルチプレクサと、
前記複数のインストラクションマルチプレクサから検出された値を組み合わせてコードを生成するコードフォーマッタと、
前記アドレスデコーダでデコードされたアドレスからデータアドレスを生成する第２生成部と、
複数のデータレジスタと、
前記データアドレスに応じて、前記複数のデータレジスタからレジスタ値を選択的に検出して組み合わせるデータマルチプレクサと、
前記コードフォーマッタから生成されたコード及び前記第２マルチプレクサで組み合わせられたデータを組み合わせ、前記ソフトウェアコードを生成するマルチプレクサと
を含むことを特徴とする請求項８に記載のチップシステム。
【請求項１１】
ホスト装置において、
パームウェアバージョン別暗号文を保存する保存部と、
予め設定されたイベントが発生すると、画像形成装置に保存された暗号文を受信する通信部と、
前記画像形成装置のパームウェアバージョンに対応する暗号文と前記受信された暗号文とが相互一致すると、前記画像形成装置が印刷待機状態にあるように制御し、前記暗号文が相互不一致の場合は、前記画像形成装置の使用を遮断させる制御部と
を含むホスト装置。
【請求項１２】
電子装置において、
メモリ装置と、
チップシステムと
を含み、
前記チップシステムは、
ＣＰＵと、
前記ＣＰＵ及び前記メモリ装置と接続されたメモリ制御部と
を含み、
前記メモリ制御部は、
第１キー値と第２キー値との比較結果に応じて、選択的に前記メモリ装置に前記ＣＰＵから受信した記録信号を出力することを特徴とする電子装置。
【請求項１３】
前記メモリ制御部は、
前記第１キー値と前記第２キー値とが同一の場合に、前記メモリ装置に前記記録信号を出力するように、接続状態を選択する少なくとも１つのスイッチを制御することを特徴とする請求項１２に記載の電子装置。
【請求項１４】
前記メモリ制御部は、
記録信号が前記メモリ装置に出力されることを防止するために、前記少なくとも１つのスイッチが前記メモリ装置との接続を切る（ｄｉｓａｂｌｅ）ように制御することを特徴とする請求項１３に記載の電子装置。
【請求項１５】
前記メモリ制御部は、
前記メモリ制御部が前記メモリ装置に前記記録信号が出力されることを防止する場合にも、前記メモリ装置の動作を読み込むように制御することを特徴とする請求項１４に記載の電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、チップシステムと、それを用いる画像形成装置及びそのブート方法に関し、より詳細には、暗号化されたデータを用いてセキュアブートを行うチップシステムと、それを用いる画像形成装置及びそのセキュアブート方法に関する。
【背景技術】
【０００２】
電子技術の発達により、多様な電子製品が開発されている。特に、コンピュータの普及に伴い、コンピュータの周辺機器の普及率も次第に向上している。コンピュータ周辺機器とは、コンピュータの活用性を高めるための機器を意味する。代表的には、プリンタ、スキャナ、コピー機、複合機等のような画像形成装置がある。
【０００３】
画像形成装置は、用紙やその他の媒体上に画像を形成する画像形成ジョブを行う装置である。画像形成ジョブを行うために、インクやトナーのような現像剤が使われてよい。トナーを使用するレーザ方式の画像形成装置の場合、帯電ユニット、現像ユニット、転写ユニット、露光ユニット、定着ユニット等が使用される。このようなユニットのように、ジョブ実行によって消耗するユニットを消耗品ユニットとしてよい。消耗品ユニットは、一定期間以上使用すると、特性が変質して優れた印刷の品質を期待することができなくなる。特に、トナーを収めるトナーカートリッジの場合、トナーが無くなるとトナーカートリッジそのものを取り替えなければならない場合がある。このような状況に備え、製品の製造メーカでは完成品と別途に消耗品ユニットも販売している。
【０００４】
最近は、消耗品ユニットの交換時期を正確に判断できるようにするために、消耗品ユニット内にメモリを内蔵する場合がある。内蔵されるメモリには各消耗品ユニットの使用に関連する各種情報が保存される。しかし、従来は、消耗品ユニットに内蔵されたメモリに対して第三者が容易にアクセスできるという問題点があった。それにより、メモリに保存される情報が変更されるおそれがあり、それにより、消耗品ユニットの使用及び管理が困難になるという問題点があった。それを受け、消耗品ユニットのメモリに対するセキュリティ性を強化しようとする試みがあった。
【０００５】
しかし、メモリそのものではなく、消耗品ユニットと通信する装置本体に対するハッキングが行われるおそれもあった。特に、装置本体に搭載されたメインメモリ内のブート過程を変更し、消耗品ユニットに適用されたセキュリティ技術を迂回するその場しのぎの方法が開発されるおそれがある。
【０００６】
よって、ブート過程そのもののセキュリティ性を向上させることができる技術が必要になってきた。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、暗号化されたデータの保存された非揮発性メモリを用いてセキュアブートを行うチップシステムと、それを用いる画像形成装置及びそのセキュアブート方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
以上のような目的を達成するための本発明の一実施形態によると、チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）は、複数の暗号化キーが保存された第１メモリと、第２メモリと、暗号化キー設定値が保存された第３メモリと、前記複数の暗号化キーの中で前記暗号化キー設定値に対応する暗号化キーを用いて、外部非揮発性メモリに保存された暗号化されたデータを復号化し、復号化されたデータを前記第２メモリに保存し、前記第２メモリに保存されたデータを用いてブートを行うＣＰＵとを含む。
そして、前記第１メモリには、前記複数の暗号化キーと別途に初期化データが保存され、前記ＣＰＵは、前記初期化データを用いて初期化動作を行った後、前記暗号化されたデータに対する復号化作業を行ってよい。
または、チップシステムは、予め設定された時間の間、外部ポートを通じたＣＰＵアクセスを制限する第１回路部を更に含んでよい。
【０００９】
そして、前記第１回路部は、パワーオンになると、前記ＣＰＵアクセスをディセーブルさせるためのディセーブル信号を前記ＣＰＵに出力し、システム準備が完了すると、前記ＣＰＵアクセスをイネーブルさせるためのイネーブル信号を前記ＣＰＵに出力してよい。
なお、前記第１回路部は、第１レジスタを含み、前記ＣＰＵは、前記システム準備が完了すると前記第１レジスタの保存値を変更してよい。
【００１０】
そして、前記第１メモリに対するアクセスを制御するための第２回路部及び第３回路部を更に含んでよい。
なお、前記第２回路部は、第２レジスタを含み、前記第３回路部は、第３レジスタを含み、前記ＣＰＵは、前記システム準備が完了すると、前記第１メモリに対するアクセスをディセーブルさせるための制御値を前記第２レジスタに保存し、前記第１メモリに対するアクセスを前記第２メモリに対するアクセスを変更させるための制御値を前記第３レジスタに保存してよい。
【００１１】
一方、前記ＣＰＵは、前記復号化作業に失敗すると、無限ループを実行してよい。
そして、前記ＣＰＵは、パワーオンになると、前記第３メモリに保存された選択値または外部ピンによって指定されたメモリを確認し、前記第１メモリが指定された状態なら、前記暗号化されたデータを用いるセキュアブートを行い、前記第２メモリが指定された状態なら、前記外部非揮発性メモリに保存された非暗号化データを用いるノーマルブートを行ってよい。
【００１２】
そして、前記第１メモリはＭＡＳＫ  ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）またはＯＴＰ（Ｏｎｅ−ｔｉｍｅ  ｐｒｏｇｒａｍｍａｂｌｅ）  ＲＯＭであり、前記第２メモリはＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、前記第３メモリはＥＦＵＳＥ（Ｅｌｅｃｔｒｉｃ  ｆｕｓｅ）メモリであってよい。
【００１３】
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）は、外部メモリと接続状態を選択する少なくとも１つのスイッチを含む、ＣＰＵと通信接続されたメモリ制御部を含む。
第１キー値と第２キー値との比較結果に応じて、メモリ制御部は選択的に外部メモリにＣＰＵから受信した記録信号を出力する。
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）は、第１キー値と第２キー値とが同一の場合に、外部メモリに記録信号を出力するように、接続状態を選択する少なくとも１つのスイッチを制御するメモリ制御部を含む。
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）は、記録信号が外部メモリに出力されることを防止するために、少なくとも１つのスイッチが外部メモリとの接続を切る（ｄｉｓａｂｌｅ）ように制御するメモリ制御部を含む。
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）は、メモリ制御部が外部メモリに記録信号が出力されることを防止する場合にも、外部メモリの動作を読み込むように制御するメモリ制御部を含む。
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）は、第１スイッチと第２スイッチとを含む少なくとも１つのスイッチを含む。
【００１４】
メモリ制御部は、第１スイッチが外部メモリの動作を読み込むように制御し、第２スイッチが外部メモリに記録信号を出力するように接続することを制御する。
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）は、第１キー値と予め保存された第２キー値とが異なる場合、外部非揮発性メモリに動作記録することを防止するメモリ制御部を含む。
【００１５】
一方、本発明の一実施形態によると、画像形成装置は、ＣＲＵＭチップが装着された消耗品ユニットと、消耗品ユニットを用いて画像形成ジョブを行い、画像形成ジョブによってＣＲＵＭチップに記録されるデータをアップデータする制御部とを含む。
【００１６】
制御部は、暗号化されたデータを記録するための非揮発性メモリと、画像形成装置がオンになると暗号化されたデータを用いてセキュアブートを行い、セキュアブートが完了するとユーザ命令に応じて画像形成装置を制御するチップシステムとを含む。
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）は、複数の暗号化キーが保存された第１メモリと、第２メモリと、暗号化キー設定値が保存された第３メモリと、前記複数の暗号化キーの中で前記暗号化キー設定値に対応する暗号化キーを用いて、前記非揮発性メモリに保存されたデータを復号化し、復号化されたデータを前記第２メモリに保存し、前記第２メモリに保存されたデータを用いてブートを行うＣＰＵとを含む。
【００１７】
そして、前記第１メモリには、前記複数の暗号化キーと別途に初期化データが保存され、前記ＣＰＵは、前記初期化データを用いて初期化動作を行った後、前記暗号化されたデータに対する復号化作業を行ってよい。
なお、前記チップシステムは、ブートイベントが発生すると、予め設定された時間の間、外部ポートを通じたＣＰＵアクセスを制限してよい。
そして、前記チップシステムはパワーオンになると、前記ＣＰＵアクセスをディセーブルさせるためのディセーブル信号を前記ＣＰＵに出力し、復号化及び復号化されたデータの認証が完了すると、前記ＣＰＵアクセスをイネーブルさせるためのイネーブル信号を前記ＣＰＵに出力する第１回路部を更に含んでよい。
なお、前記第１回路部は、前記レジスタを含み、前記ＣＰＵは、復号化及び復号化されたデータの認証が完了すると前記第１レジスタの保存値を変更してよい。
【００１８】
そして、前記ＣＰＵは、復号化及び復号化されたデータの認証が完了すると、前記第１メモリに対するアクセスをディセーブルさせ、前記第１メモリに対するアクセスを前記第２メモリに対するアクセスに変更させるためのレジスタ設定作業を行ってよい。
なお、前記ＣＰＵは、パワーオンになると、前記第３メモリに保存された選択値または外部ピンによって指定されたメモリを確認し、前記第１メモリが指定された状態なら、前記暗号化されたデータを用いるセキュアブートを行い、前記第２メモリが指定された状態なら、前記外部非揮発性メモリに保存された非暗号化データを用いるノーマルブートを行ってよい。
【００１９】
そして、前記第１メモリはＭＡＳＫ  ＲＯＭまたはＯＴＰ  ＲＯＭであり、前記第２メモリはＳＲＡＭであり、前記第３メモリはＥＦＵＳＥメモリであってよい。
一方、非揮発性メモリ及びチップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）を含む画像形成装置のブート方法は、前記チップシステム内の第１メモリに保存された初期化データを用いて初期化動作を行う初期化ステップと、前記初期化動作が行われると、前記第１メモリに保存された複数の暗号化キーの中の１つを用いて、前記非揮発性メモリに保存された暗号化されたデータを復号化するステップと、復号化されたデータを前記チップシステム内の第２メモリに保存するステップと、前記第２メモリに保存されたデータを用いてブートを行うステップとを含む。
【００２０】
そして、前記画像形成装置がパワーオンされると、前記チップシステム内の第３メモリまたは外部ピンを介して入力される入力値によって指定されたメモリを確認するステップと、前記指定されたメモリが前記第１メモリなら、前記チップシステム内のＣＰＵに対するアクセスをディセーブルさせるステップとを更に含んでよい。
なお、復号化及び復号化されたデータの認証が完了すると、前記ＣＰＵに対するアクセスをイネーブルさせるステップを更に含んでよい。
【００２１】
そして、復号化及び復号化されたデータの認証が完了すると、前記第１メモリに対するアクセスをディセーブルさせるステップと、前記第１メモリに対するアクセスを前記第２メモリに対するアクセスに変更させるためのレジスタ設定を行うステップとを更に含んでよい。
一方、本発明の一実施形態によると、メモリ装置及びチップシステムを含む電子装置が提供される。チップシステムは、ＣＰＵ、ＣＰＵ及びメモリ装置と接続されたメモリ制御部を含む。
【００２２】
第１キー値と第２キー値との比較結果に応じて、メモリ制御部は選択的に外部メモリにＣＰＵから受信した記録信号を出力する。
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）は、第１キー値と第２キー値とが同一の場合に、外部メモリに記録信号を出力するように、接続状態を選択する少なくとも１つのスイッチを制御するメモリ制御部を含む。
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）は、記録信号が外部メモリに出力されることを防止するために、少なくとも１つのスイッチが外部メモリとの接続を切る（ｄｉｓａｂｌｅ）ように制御するメモリ制御部を含む。
チップシステム（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）は、メモリ制御部が外部メモリに記録信号が出力されることを防止する場合にも、外部メモリの動作を読み込むように制御するメモリ制御部を含む。
【００２３】
一方、本発明の一実施形態によると、複数のバージョンそれぞれに対応する複数の暗号テキストを保存する保存部と、予め決定されたイベントが発生すると、画像形成装置に保存された暗号テキストを受信する通信部と、画像形成装置のパームウェアバージョンに対応する暗号テキストと受信された暗号テキストとが一致すると、画像形成装置が印刷待機状態にあるように制御し、不一致の場合は、画像形成装置の使用を阻む制御部を含むホスト装置が提供される。
【００２４】
以上説明したように、本発明によれば、ブート過程そのもののセキュリティ性を向上させることができるため、第三者の悪意あるハッキングによる被害を防止することができるようになる。
【図面の簡単な説明】
【００２５】
【図１】本発明の一実施形態に係るチップシステムの構成を示すブロック図である。
【図２】本発明の一実施形態に係るセキュアブート方法を説明するためのフローチャートである。
【図３】本発明の別の実施形態に係るチップシステムの構成を示すブロック図である。
【図４】本発明の更に別の実施形態に係るチップシステムの搭載されたメインボードの構成を示すブロック図である。
【図５】本発明の別の実施形態に係るセキュアブート方法を説明するためのフローチャートである。
【図６】本発明の更に別の実施形態に係るセキュアブート方法を説明するためのフローチャートである。
【図７】図４のチップシステムの細部構成の一例を示す回路図である。
【図８】セキュアパームウェアのレイアウトの一例を示す図である。
【図９】セキュアブートを行うためのメモリマップの一例を示す図である。
【図１０】チップシステムの搭載された画像形成装置の構成の一例を示すブロック図である。
【図１１】消耗品ユニットに装着可能なＣＲＵＭチップ構成の一例を示すブロック図である。
【図１２】本発明の更に別の実施形態に係るチップシステムのメモリ使用方法を説明するためのフローチャートである。
【図１３】図１２の実施形態に係るチップシステムの構成の一例を示すブロック図である。
【図１４】本発明の更に別の実施形態に係るチップシステムの構成例を示すブロック図である。
【図１５】本発明の更に別の実施形態に係るチップシステムの構成例を示すブロック図である。
【図１６】図１４及び図１５の実施形態で使用可能なコード生成部の構成の一例を示す図である。
【図１７】図１６のコード生成部の更に別の構成例を示す図である。
【図１８】コード生成部で生成されるソフトウェアコードの多様な構成例を示す図である。
【図１９】コード生成部で生成されるソフトウェアコードの多様な構成例を示す図である。
【図２０】チップシステムとともに使用可能な多様な非揮発性メモリの例を示す図である。
【図２１】チップシステムとともに使用可能な多様な非揮発性メモリの例を示す図である。
【図２２】チップシステムとともに使用可能な多様な非揮発性メモリの例を示す図である。
【図２３】非揮発性メモリの書き込みピンを非活性化処理する方法の一例を示す図である。
【図２４】本発明の更に別の実施形態に係るメモリ制御方法を説明するためのフローチャートである。
【図２５】図２４の実施形態にメモリ制御方法を行うためのメモリコントローラの細部構成の一例を示す図である。
【図２６】本発明の更に別の実施形態に係る印刷制御方法を説明するためのタイミング図である。
【図２７】図２６の印刷制御方法を行うためのホスト装置の構成の一例を示す図である。
【図２８】多様な暗号文の一例を示す図である。
【図２９】多様な暗号文の一例を示す図である。
【図３０】ハッキングされた暗号文の一例を示す図である。
【図３１】本発明の更に別の実施形態に係る画像形成装置の制御方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００２６】
以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。
電子装置はパワーオンになると、正常に動作するためにブート過程を行うのは一般的である。ブート過程を通じて電子装置は適切な初期化を行いプログラムをローディングして実行させることができる。電子装置の初期状態を決定するブート過程は、電子装置の重要な運営パラメータに影響を及ぼし、電子装置が使用される際に実質的な影響を及ぼしかねない。
【００２７】
よって、ブート過程を誰にでも容易に変更できるようにすると、最初に意図していなかったプログラムがローディングされるおそれがあるため、ブート過程を任意に変更できないように安全にブートできる方法、すなわち、セキュアブート方法が必要になる。セキュアブートのために、ブートデータは暗号化された状態で電子装置内の非揮発性メモリに保存されてよい。電子装置の動作を制御するチップシステム１００は、非揮発性メモリにアクセスした後、暗号化されたデータを復号化してセキュアブート過程を行うことができる。以下では、チップシステムの構成及びセキュアブート方法に対する多様な実施形態について具体的に説明する。
【００２８】
図１は、本発明の一実施形態に係るチップシステムの構成を示すブロック図である。図１によると、チップシステム１００は、暗号化されたデータの保存された非揮発性メモリ２００を用いてセキュアブートを行う。図１のチップシステム１００及び非揮発性メモリ２００は１つの電子装置内に内蔵されてよい。例えば、チップシステム１００は、図１０に示す画像形成装置１０００に内蔵されてよい。チップシステム１００は、いかなる適する電子装置にも内蔵されてよい。チップシステムは、ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ、ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ、ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ ａｒｒａｙ及び／または本発明のコンセプトに合うセキュアブートを行う如何なる装置であってよい。
【００２９】
チップシステム１００は、非揮発性メモリ２００に保存された暗号化されたデータを用いてブート過程を行う。具体的には、ブートＢＳＳ（Ｂｌｏｃｋ  Ｓｔａｒｔｅｄ  Ｓｙｍｂｏｌ）、カーネル、ＯＳ、ＯＳ（Ｗｉｒｅｌｅｓｓ  Ｓｔａｃｋ）、Ｅｎｇｉｎｅ、Ｅｍｕｌａｔｉｏｎ、Ｆｉｘｅｄ  Ｓｅｇｍｅｎｔ、Ｈｅａｐ、認証キー、暗号化されたＯＳ、デバイスドライバ等のような多様なデータが暗号化されて非揮発性メモリ２００に保存されてよい。
【００３０】
暗号化方式としては、多様な方式が使用されてよい。例えば、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）方式、ＴＤＥＳ（Ｔｒｉｐｌｅ  ＤＥＳ）方式、ＡＥＳ（高級暗号標準：Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号化方式、ＳＥＥＤアルゴリズム、ＲＳＡ（Ｒｉｖｅｓｔ  Ｓｈａｍｉｒ  Ａｄｌｅｍａｎ）方式、ＡＲＩＡアルゴリズム等が使用されてよい。
【００３１】
ＤＥＳ方式は、５６ビットのキーを使用する対称キー暗号アルゴリズムを用いて暗号化及び復号化する方式であり、ＴＤＥＳ方式とは、ＤＥＳを３回繰り返して使用する方式である。ＡＥＳ方式は、１２８ビットの大きさのブロックを１２８、１６０、１９２、２２４、２５６ビット等、１２８以上の全ての３２の倍数ビット長のキーを使って暗号化及び復号化する方式である。ＳＥＥＤ方式は、ＡＥＳと類似するように、暗号化キー１２８ビットまたは２５６ビットを用いて暗号化及び復号化を行う１２８ビットブロック暗号方式である。なお、ＲＳＡ方式は、一方向関数を用いる公開キー暗号システムの一種であり、ＡＲＩＡ（Ａｃａｄｅｍｙ−Ｒｅｓｅａｒｃｈ  Ｉｎｓｔｉｔｕｔｅ−Ａｇｅｎｃｙ）アルゴリズムは１２８ビットブロックを１２８、１９２、２５６ビットのキーを用いて暗号化及び復号化するブロック暗号化方式である。
【００３２】
非揮発性メモリ２００には、このように多様なデータが多様な暗号化方式によって暗号化されて保存されてよい。保存されたデータや暗号化方式は、図１のチップシステム１００及び非揮発性メモリ２００の搭載される製品の特性やその他の使用環境に応じて選択的に適用されてよい。
【００３３】
図１によると、チップシステム１００は、第１メモリ１１０と、第２メモリ１２０と、ＣＰＵ１３０とを含んでよい。第１メモリ１１０には、暗号化キーが保存されてよい。第１メモリ１１０は、マスクＲＯＭ（ＭＡＳＫ  ＲＯＭ）やＯＴＰ（Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ）メモリ等で実現されてよい。
【００３４】
マスクＲＯＭとは、製造過程で内容を予め記憶しておくメモリであって、ユーザがその内容を変更することができないＲＯＭである。ＯＴＰメモリは、インシステム（ｉｎ−ｓｙｓｔｅｍ）プログラミングに使用されてよいが、一旦プログラミングされると変更することができないプログラマブルＲＯＭの一種である。
【００３５】
暗号化キーは、非揮発性メモリ２００に保存されたデータ、特に、ブートコードを復号化するためのキーを意味する。上述のように、非揮発性メモリ２００には多様な方式のうちの１つで暗号化されたデータが保存されてよく、それに対応するビットの暗号化キーが第１メモリ１１０に保存されてよい。
【００３６】
その他に、第１メモリ１１０にはブートローダー（Ｂｏｏｔ  Ｌｏａｄｅｒ）情報も保存されていてよい。ブートローダーとは、運営体制が始動される前に予め実行され、カーネル（ｋｅｒｎｅｌ）が正しく始動できるように必要な全ての関連作業を仕上げて最終的に運営体制を始動させるプログラムを意味する。すなわち、運営体制は、実際命令語が駆動されるカーネル、プログラムに含まれた命令語をカーネルに伝えるフレームワーク、そして、カーネルとフレームワーク上で駆動されるＵＩのように、大きく３つの部分に区分される。ブートローダーは、カーネルを始動させる前にハードウェアを用意する役割を担うプログラムを意味する。具体的には、第１メモリ１１０にはプライベートブートローダー情報が保存されてよい。プライベートブートローダー情報は、システム初期化に必要な情報を含んでよい。
【００３７】
第２メモリ１２０は、ブートに使用されるための内部メモリである。第２メモリ１２０は、初期化の必要がないＳＲＡＭ等で構成されてよいが、それに限定されるものではない。
【００３８】
ＣＰＵ１３０は、チップシステム１００の外部に存在する非揮発性メモリに保存された暗号化されたデータを、第１メモリ１１０に保存された暗号化キーを用いて復号化し、復号化されたデータを第２メモリ１２０に保存する。その後、ＣＰＵ１３０は、第２メモリ１２０に保存されたデータを用いてブートを行うことができる。復号化方式は、データ暗号化方式に対応する方式で行われてよい。
【００３９】
仮に、ＡＥＳ方式が採用された場合を例に挙げると、暗号化するデータと初期に入力したＣｉｐｈｅｒ  ＫｅｙをＸＯＲ演算するＡｄｄＲｏｕｎｄＫｅｙ過程、その演算結果値を特定規則によって置き換えるＳｕｂＢｙｔｅｓ過程、データ行（ｒｏｗ）例をシフトさせるＳｈｉｆｔＲｏｗｓ過程、データ列をミックスさせるＭｉｘＣｏｌｕｍｎ過程を１０回繰り返して暗号化を行う。非揮発性メモリ２００には、このような方式で暗号化されたデータが保存されてよい。ＣＰＵ１３０は、各暗号化過程に対応する逆過程を繰り返し行い、暗号化されたデータを復号化することができる。復号化されたデータは第２メモリ１２０に保存され、ＣＰＵ１３０は保存されたデータを用いて後続ブート過程を行う。
【００４０】
または、ＲＳＡ方式が採用された場合を例に挙げると、ＲＳＡ方式では公開キー｛Ｎ、Ｅ｝と個人キー｛Ｎ、Ｄ｝とを用いて暗号化及び復号化を行う。具体的には、２つの大きい素数ｐとｑを選定した後、Ｍｏｄｕｌｕｓ  Ｎ＝ｐ＊ｑとＰＩ（Ｎ）を計算する。そして、ＰＩ（Ｎ）＝（ｐ−ａ）（ｑ−１）と互いに素な関係になるように任意にＥを選定し、Ｅ＊Ｄ  ｍｏｎ  ＰＩ（Ｎ）＝１の関係にあるＤを拡張されたユークリッドアルゴリズムを用いて算出する。結果的に、公開キー｛Ｎ、Ｅ｝と個人キー｛Ｎ、Ｄ｝とを用いてＲＳＡ暗号化を行うことができる。ＲＳＡ暗号化は、Ｅ（Ｍ）＝Ｍ＾Ｅ  ｍｏｄ  Ｎ＝Ｃのような数式を用いて行われてよい。ここで、Ｍは暗号化しようとするデータを意味する。非揮発性メモリ２００には、このような数式によって暗号化されたブートコードが保存されてよい。この場合、ＣＰＵ１３０は、Ｄ（Ｃ）＝Ｃ＾Ｄ  ｍｏｄ  Ｎ＝（（Ｍ＾Ｅ）＾Ｄ）ｍｏｄ  Ｎ）＝Ｍのような数式を用いてＲＳＡ復号化を行うことができる。復号化されたデータは第２メモリ１２０に保存され、ＣＰＵ１３０は保存されたデータを用いて後続ブート過程を行う。
【００４１】
このような方式によると、チップシステム１００は外部メモリ２００に保存されたデータを暗号化された状態でチップシステム１００の内部にローディングした後、復号化してブートを行うことができる。よって、第三者が外部メモリ２００及びチップシステム１００の間で通信されるデータをハッキングするとしても、ブート過程を変更させることができないようになるため、ブートセキュリティ性が向上できる。
【００４２】
図２は、本実施形態に係るセキュアブート方法を具体的に説明するためのフローチャートである。図２によると、チップシステムの搭載された電子装置がパワーオンになると（Ｓ２１０）、チップシステムは第１メモリ１１０にアクセスして第１メモリ１１０に保存されたデータを検出する（Ｓ２２０）。具体的には、ＣＰＵ１３０は、特定アドレスが割り当てられたリセットベクトル（ｒｅｓｅｔ  ｖｅｃｔｏｒ）に行ってインストラクション（ｉｎｓｔｒｕｃｔｉｏｎ）をフェッチ（ｆｅｔｃｈ）する。本実施形態において、リセットベクトルのアドレスは第１メモリ１１０に指定されていてよい。
【００４３】
ＣＰＵ１３０は、第１メモリ１１０が指定された場合、第１メモリ１１０に保存されたデータを用いてセキュアブートを行う。第１メモリ１１０にはシステム初期化に必要なコード、暗号化された外部プログラムコードの復号化のために必要なコードや暗号化キー等のような多様なデータが保存されてよい。
【００４４】
ＣＰＵ１３０は、第１メモリ１１０からシステム初期化に必要なコードを検出し、基本ハードウェアに対する初期化作業を行う（Ｓ２３０）。初期化作業には、チップシステム１００の内部で使用されるクロック（ｃｌｏｃｋ）を内部ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋ  Ｌｏｏｐ）回路を用いて速くする動作や、ＤＤＲメモリに使用するためにＤＤＲコントローラを初期化する動作等が含まれてよい。その他に、各種応用プログラム初期駆動、電子装置の内部または外部に接続された装置との通信チャネル形成に必要なセットアップ、メモリ値初期化、内部レジスタ値セッティング、ＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）セッティング、シリアルセッティング、ＭＡＣアドレス獲得、イーサネット（登録商標）ポートセッティング（Ｅｔｈｅｒｎｅｔ（登録商標）  ｐｏｒｔ  ｓｅｔｔｉｎｇ）等のような多様な初期化動作が更に含まれてよい。なお、チップシステム１００の搭載された電子装置に同時に搭載された他のハードウェアを用意させる動作も含まれてよい。このような初期化動作は、チップシステム１００の搭載された電子装置の種類に応じて多様に実現されてよい。初期化の他にも、第１メモリ１１０に保存されたコードを行うことができる。例えば、Ｂｏｏｔ  Ｏｐｔｉｏｎ  Ｐｉｎ設定（ＳＰＩ／ＮＡＮＤ／ＳＤ）値を読み込んで当該ブートオプションに応じて暗号化されたデータを第２メモリ１２０にローディングすることができる。
【００４５】
その後、ＣＰＵ１３０は、チップシステム１１０の内部にローディングされた暗号化されたデータを復号化する（Ｓ２４０）。ＣＰＵ１３０は、第１メモリ１１０に保存された暗号化キーを用いて復号化を行うことができる。ＣＰＵ１３０は、復号化されたデータを第１メモリ１２０、ＤＤＲメモリ等に保存する（Ｓ２５０）。そして、復号化されたデータを用いてブートを行う（Ｓ２６０）。
【００４６】
すなわち、ＣＰＵ１３０は、復号化されたブートＢＳＳ（Ｂｌｏｃｋ  Ｓｔａｒｔｅｄ  Ｓｙｍｂｏｌ）、カーネルコード、ＯＳ、ＯＳ（Ｗｉｒｅｌｅｓｓ  Ｓｔａｃｋ)、Ｅｎｇｉｎｅ、Ｅｍｕｌａｔｉｏｎ、Ｆｉｘｅｄ  Ｓｅｇｍｅｎｔ、Ｈｅａｐ等のようなデータを用いて、ブートを行うことができる。ブートとは、カーネルをロードし、フレームワークを実行させた後、ＵＩを実行して運営体制を始動する行為を意味する。
【００４７】
以上のように、本実施形態によると、チップシステム１００内部の暗号化されていない第１及び第２メモリと、外部の非揮発性メモリ２００に保存された暗号化されたデータを用いて、セキュリティ性の強化されたブートを行うことができる。
【００４８】
図３は、本発明の別の実施形態に係るチップシステムの構成を示すブロック図である。図３によると、チップシステム１００は、第１メモリ１１０と、第２メモリ１２０と、ＣＰＵ１３０の他に、第３メモリ１４０を更に含んでよい。
【００４９】
本実施形態によると、第１メモリ１１０には、複数の暗号化キーが保存されてよい。第３メモリ１４０は、複数の暗号化キーの中から１つを選択するための設定値が保存されてよい。本明細書においては、このような設定値を暗号化キー設定値と称する。第３メモリ１４０は、ＯＴＰメモリ種類の１つであるＥＦＵＳＥメモリで実現されてよいが、必ずしもそれに限定されるものではない。
【００５０】
ＣＰＵ１３０は、第３メモリ１４０に保存された設定値に応じて、第１メモリ１１０に保存された複数の暗号化キーのうちいずれかを選択するかを決定する。チップシステム１００またはチップシステム１００の搭載された電子装置の製作者は使用中のキー（ｋｅｙ）が露出された場合、第３メモリ１４０の内容を変更してキーを変更する。
【００５１】
本実施形態によると、１つの暗号化キーが露出されるとしても、チップシステムそのものを全面を取り替える必要がなく、第３メモリ１４０にプログラミングされる設定値のみを変更して簡単に対処することができるようになる。
【００５２】
第２メモリ１２０及びＣＰＵ１３０の他の動作については、上述の第１実施形態で説明した内容と同様であるため、繰り返し説明は省略する。
【００５３】
図４は、チップシステム１００及び非揮発性メモリ２００の搭載されたメインボード３００の構成を示すブロック図である。図４によると、チップシステム１００と非揮発性メモリ２００とは、１つのメインボード３００上に搭載されてよい。メインボード３００内には、チップシステム１００及び非揮発性メモリ２００の他にも、多様な部品が搭載されてよいが、説明の便宜上それに対する図示は省略する。
【００５４】
チップシステム１００は、第１メモリ１１０と、第２メモリ１２０と、ＣＰＵ１３０と、第３メモリ１４０と、バス１５０とを含む。図４によると、ＣＰＵ１３０は、第１ないし第３メモリ１１０、１２０、１４０をはじめとする各種構成要素とバス１５０を介して接続されてよい。バス１５０は、アドレスバス、データバス、制御バス（ｃｏｎｔｒｏｌ  ｂｕｓ）等のような多様なバスを含んでよい。
【００５５】
図３及び図４に示すチップシステム１００は、第３メモリ１４０を用いて暗号化方式を適切に選択することができる。
【００５６】
図５は、図３または図４に示すチップシステムにおけるセキュアブート方法を説明するためのフローチャートである。図５によると、チップシステム１００の搭載された電子装置がパワーオンになると（Ｓ５１０）、チップシステム１００のＣＰＵ１３０は、第１メモリ１１０にアクセスし（Ｓ５２０）、初期化データを確認する。第１メモリ１１０へのアクセスは、リセットベクトルからフェッチされるインストラクションによって行われてよい。ＣＰＵ１３０は、確認された初期化データによって基本ハードウェアを初期化する初期化動作を行う（Ｓ５３０）。初期化動作の例については、上述の図２に対する説明で具体的に記載しているため、繰り返し説明は省略する。一方、ＣＰＵ１３０は、セキュアブートが行われる間には、外部ポートを介したＣＰＵ１３０のアクセスを禁止することもできる。
【００５７】
初期化が行われると、ＣＰＵ１３０は第３メモリ１４０に保存された選択値を確認し（Ｓ５４０）、第１メモリ１１０に保存された複数の暗号化キーのうち、選択値に対応する暗号化キーを選択する（Ｓ５５０）。ＣＰＵ１３０は、暗号化キーが選択されると、非揮発性メモリ２００に保存された暗号化されたデータを暗号化キーを用いて復号化し、認証を行う（Ｓ５６０）。復号化されたデータは第２メモリ１２０及びＤＤＲメモリ等にコピーされる。
【００５８】
復号化は、上述のように、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）方式、ＴＤＥＳ（Ｔｒｉｐｌｅ  ＤＥＳ）方式、ＡＥＳ（高級暗号標準：Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号化方式、ＳＥＥＤアルゴリズム、ＲＳＡ（Ｒｉｖｅｓｔ  Ｓｈａｍｉｒ  Ａｄｌｅｍａｎ）方式、ＡＲＩＡ方式等のような多様な暗号化アルゴリズムによって行われてよい。
【００５９】
認証は、データの中で認証コードの有効性を検証する過程である。認証のためには、ＨＭＡＣ−ＳＨＡ２５６、ＨＭＡＣ−ＳＨＡ１、ＨＭＡＣ−ＭＤ５等のような認証アルゴリズムが使用されてよい。これらの認証アルゴリズムは、１つの秘密キーを共有するキー基盤の認証アルゴリズムとして、特に、ＨＭＡＣ手続きは、ＲＦＣ  ２０４（メッセージ認証コードのためのキーハッシング（Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ））に定義されている。このように、復号化のための暗号化キー値、認証のためのキー値等は第１メモリ１１０に保存されていることは上述の通りである。
【００６０】
ＣＰＵ１３０は、有効ではない認証コードと判別されたり、復号化に失敗すると（Ｓ５７０）、プログラムの実行を停止し、無限ループに陥るようになる（Ｓ５９５）。一方、復号化及び認証に成功して全てのシステム準備が完了すると、ＣＰＵ１３０はアドレスマップを変更する（Ｓ５８０）。それにより、第１メモリ１１０に対するアクセスが試みられたとき、第２メモリ１２０に対するアクセスに強制的に切り替えられる。
【００６１】
その後は、ＣＰＵ１３０は、第２メモリ１２０にコピーされている復号化されたデータを用いてブートを行う（Ｓ５９０）。ブート過程は、既に上述しているため、繰り返し説明は省略する。
【００６２】
一方、以上のような実施形態では、セキュアブートを行うチップシステムの構成及び動作について説明したが、チップシステムの使用環境に応じてセキュアブート及びノーマルブートを選択的に行うことができる実施形態で実現されてよい。
【００６３】
図６は、本発明の更に別の実施形態に係るチップシステムにおけるブート方法を説明するためのフローチャートである。本実施形態によると、非揮発性メモリ２００には暗号化されたデータ、非暗号化されたデータが同時に保存されてよい。
【００６４】
このような状態で、電子装置がパワーオンになると（Ｓ６１０）、ＣＰＵ１３０はセキュアブートを行うか、ノーマルブートを行うかを判断する（Ｓ６１５）。すなわち、パワーオンになると、ＣＰＵ１３０はリセットベクトルに行ってインストラクションをフェッチ（ｆｅｔｃｈ）する。リセットベクトルは、第１メモリ１１０または第２メモリ１２０に指定されていてよい。すなわち、第１メモリ１１０と第２メモリ１２０とは、同一のアドレス（例えば、０ｘｆｆｆｆ００００）にバス１５０によってマッピングされている。ＣＰＵ１３０は、リセットベクトルでアドレス０ｘｆｆｆｆ００００を確認すると、第１メモリ１１０及び第２メモリ１２０のうち、指定されたメモリにアクセスするようになる。メモリは、ＣＰＵ１３０に接続された外部ピンを介して入力される指定値や第３メモリ１４０に保存された指定値によって指定されてよい。
【００６５】
第２メモリ１２０が指定された場合には、セキュアブートではないノーマルブートを行うと判断する（Ｓ６１５：Ｎ）。この場合、ＣＰＵ１３０は、非揮発性メモリ２００にアクセスして非暗号化されたデータを用いてノーマルブートを行う（Ｓ６２０）。
【００６６】
一方、第１メモリ１１０が指定された場合には、セキュアブートを行うと判断する（Ｓ６１５：Ｙ）。セキュアブートを行う場合には、ＣＰＵ１３０は第１メモリ１１０にアクセスし（Ｓ６２５）、初期化データを検出する（Ｓ６３０）。それに先立ち、ＣＰＵ１３０は外部ポートを通じたＣＰＵ１３０のアクセスを強制的に禁止させることができる。
【００６７】
そして、初期化データを用いて各種基本ハードウェアを初期化させる（Ｓ６３５）。そして、非揮発性メモリ２００に保存された暗号化されたデータを第２メモリ１２０にローディングさせる。
【００６８】
その後、ＣＰＵ１３０は、セキュアブートモードか否かを判断することもできる（Ｓ６３５）。すなわち、上述のように、外部ピン（以下、第１外部ピン）や第３メモリ１４０を用いて、第１メモリ１１０を指定するのとは別に、セキュアブートを行うか否かを選択することができる。例えば、非揮発性メモリ２００に暗号化されていないデータを保存するとしても、第１メモリ１１０を用いてブートを行うことができる。この場合、復号化過程は省略される。セキュアブートモードか否かは、第３メモリ１４０内の更に別の指定値や、更に別の外部ピン（以下、第２外部ピン）を用いて設定することができる。
【００６９】
セキュアブートモードが設定された状態なら、ＣＰＵ１３０は第１メモリ１１０に保存された暗号化キーを用いて復号化及び認証を行う（Ｓ６４０）。復号化及び認証は、それぞれ上述のような多様なアルゴリズムに応じて行われてよい。
【００７０】
復号化及び認証のうち少なくとも一方が失敗すると（Ｓ６４５：Ｎ）、ＣＰＵ１３０は無限ループに陥るようになる（Ｓ６６０）。一方、復号化及び認証に成功すると（Ｓ６４５：Ｙ）、アドレスマップを変更し（Ｓ６５０）、その後のステップでは第１メモリ１１０の代わりに第２メモリ１２０を用いる動作が行われることができるようにする。それにより、第１メモリ１１０に保存されたコードは、アドレスマップ変更後は、アクセスができなくなる。このとき、ＪＴＡＧでもＣｏｄｅ及びＫｅｙ値の追跡が不可能であり、アクセス時には０ｘｆｆｆｆｆｆと読まれるように設計されてよい。
【００７１】
アドレスマップが変更されてからは、第２メモリ１２０にコピーされたデータ（例えば、１次ブートローダー（１ｓｔ  ｂｏｏｔｌｏａｄｅｒ））にジャンプ（ｊｕｍｐ）して、それを用いたブートを行う（Ｓ６５５）。１次ブートローダーとは、２次ブートローダーをメモリにローディングするためのブートローダーを意味する。ユーザインターフェース提供及びカーネルをローディングするブートローダーの中核機能は、２次ブートローダーで行われる。空間不足を考慮して、ブートローダーを１次及び２次ブートローダーに区分して実現することができる。
【００７２】
以上で説明したように、チップシステムは多様な形態で実現され、セキュアブートを行うことができる。
【００７３】
図７は、チップシステムの細部構成の一例を説明するための図である。図７によると、チップシステム１００は、第１メモリ１１０と、第２メモリ１２０と、ＣＰＵ１３０と、第３メモリ１４０と、バス１５０の他にも、ＤＤＲコントローラ１８５及びその他の多様な回路部１５５、１６０、１６５、１７０、１７５、１８０を含んでよい。図７においては、第１メモリ１１０がＭＡＳＫ  ＲＯＭで実現され、第２メモリ１２０はＳＲＡＭで実現され、第３メモリ１４０はＥＦＵＳＥメモリで実現された場合を示す。第３メモリ１４０は、暗号化キーを選択するための設定値（Ｋｅｙ  １、２、３）とセキュアブート有無を設定するための指定値（ＭＡＳＫ  ＲＯＭ）等が保存されてよい。
【００７４】
各回路部１５５、１６０、１６５、１７０、１７５、１８０は、レジスタ、論理回路、マルチプレクサ等のような多様な素子の組み合わせからなってよい。第１回路部１５５は、第１レジスタ１５５−１を含む。ＣＰＵ１３０は、第１回路部１５５を用いて外部ポートを介したＣＰＵアクセスを制御することができる。具体的には、第１回路部１５５は、第１レジスタ１５５−１に書き込まれた値に対応するＪＴＡＧ＿ＥＮ信号をＣＰＵ１３０に入力する。
【００７５】
すなわち、ブートイベントが発生すると、第４回路部１７０は外部ピンを介して入力される値と、第３メモリ１４０を介して入力される指定値に対するＯＲ演算結果を出力する。ブートイベントは、チップシステムまたはチップシステムの搭載された装置がパワーンオンになる場合を含む。セキュアブートを行おうとする場合、第３メモリ１４０には１が記録されてよく、それにより、第４回路部１７０では１が出力される。第４回路部１７０の出力値は第２回路部１６０及び第３回路部１６５にそれぞれ入力される。
【００７６】
第２回路部１６０及び第３回路部１６５は、それぞれ第１メモリ１１０に対するアクセスを制御するための第２及び第３レジスタ１６０−１、１６５−１を含む。第２回路部１６０に入力される第４回路部１７０の出力値１は反転される。
【００７７】
よって、第２回路部１６０には０が入力される。第２回路部１６０は、ＯＲゲートを用いて入力値０と第２レジスタ１６０−１の保存値のＯＲ演算値とを出力する。初期状態で、第２レジスタ１６０−１には０のような値が記録され得るため、結果的に第２回路部１６０は第１回路部１５０に０を出力する。
【００７８】
第１回路部１５０では第１レジスタ１５５−１を含む。第１回路部１５０は第１レジスタ１５５−１に保存された値及び外部値を選択的に出力するマルチプレクサを含む。第２回路部１６０で０が入力されると、第１回路部１５０はＣＰＵアクセスをディセーブルさせるための信号をＣＰＵ１３０に出力する。それにより、外部ポートを介するＣＰＵアクセスが予め設定された時間、例えばパワーンオンの後にセキュアブートが行われる間に制限されてよい。
【００７９】
ＣＰＵ１３０はパワーオンになると、第３メモリ１４０に保存された選択値または外部ピンを介して入力される入力値によって指定されたメモリを確認する。確認の結果、指定されたメモリが第１メモリ１１０であれば、ＣＰＵアクセスをディセーブルさせるための第１値（例えば、１）を第１レジスタ１５５−１に保存する。
【００８０】
一方、ＣＰＵ１３０は、システム準備が完了すると、ＣＰＵアクセスをイネーブルさせるための第２値（例えば、０）を第１レジスタ１５５−１に保存する。なお、第２回路部１６０内の第２レジスタ１６０−１の保存値も変更する。
【００８１】
具体的に、ＣＰＵ１３０はシステム準備が完了すると、第１メモリ１１０に対するアクセスをディセーブルさせるための制御値（例えば、１）を第２レジスタ１６０−１に記録し、第１メモリ１１０の全領域データを読み込めないようにする。第２レジスタ１６０−１の保存値が１に変更されると、第２回路部１６０の出力値は１に変更される。
【００８２】
なお、ＣＰＵ１３０は、第１メモリ１１０に対するアクセスを第２メモリ１２０に対するアクセスに変更させるための制御値（例えば、１）を第３レジスタ１６５−１に記録する。この場合、ＣＰＵ１３０が第１メモリ１１０に接近する際、第２メモリ１２０に接近されるように自動的に変更される。第２メモリ１２０には、復号化されたコードが予めコピーされており、ＣＰＵ１３０はこれを用いることができる。
【００８３】
第４回路部１７０は、外部ピンまたは第３メモリ１４０を介して入力される指定値を提供するＯＲゲートを含むことができる。ＣＰＵ１３０は、第４回路部１７０を介して入力される指定値に応じてセキュアブート有無を判断することができる。
【００８４】
マルチプレクサ１７５は、第２メモリ１２０または第２回路部１６０から入力される値を選択的にバス１５０に入力する。
【００８５】
フラッシュブートローダー１８０は、ブートローダーを保存するためのフラッシュメモリを意味する。フラッシュブートローダー１８０は、ノーマルブートを行う際、非揮発性メモリ２００に保存されたプライベートブートローダーをローディングする。ＣＰＵ１３０は、フラッシュブートローダー１８０を用いてノーマルブートを行う。
【００８６】
ＤＤＲコントローラ１８５は、外部のＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）メモリ４００に対するデータＲ／Ｗを制御するためのコントローラである。以上のように、チップシステム１００は多様な形態で実現され、非揮発性メモリ２００及びＤＤＲメモリ３００等と一緒に使用されてよい。チップシステム１００の詳細な構成は、図７に示すものに限定されるわけではなく、多様な形態で実現されてよい。
【００８７】
図８は、第１メモリ１１０に保存されるデータのレイアウトの一例を示す。図８によると、第１メモリ１１０には認証コード９１０、セキュアブートローダーヘッダ９２０、第１ブートローダー９３０等が保存される。
【００８８】
認証コード９１０は、多様な暗号化アルゴリズムによって暗号化されて保存されてよい。例えば、上述のように、ＨＭＡＣ−ＳＨＡ２５６、ＨＭＡＣ−ＳＨＡ１、ＨＭＡＣ−ＭＤ５等のような認証アルゴリズム等によって暗号化されて保存されてよい。
【００８９】
セキュアブートローダーヘッダ９２０は、電子署名情報、オフセット値、サイズ、日付情報、ユーザＩＤ等を含んでよい。図８において、セキュアブートローダーヘッダ９２０は、上述のように、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）方式、ＴＤＥＳ（Ｔｒｉｐｌｅ  ＤＥＳ）方式、ＡＥＳ（高級暗号標準：Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号化方式、ＳＥＥＤアルゴリズム、ＲＳＡ（Ｒｉｖｅｓｔ  Ｓｈａｍｉｒ  Ａｄｌｅｍａｎ）方式、ＡＲＩＡアルゴリズム等のような多様な暗号化アルゴリズムのいずれかによって暗号化されて保存されてよい。
【００９０】
第１ブートローダー９３０も、内部セキュリティ性のために暗号化された状態で保存されてよい。
【００９１】
図８において、ブートローダー９３０は、内部のセキュリティ性のために複数のＮＯＰ指示に応じて開始されるように実現されてよい。
【００９２】
図９は、チップシステム１００のメモリマップの一例を示す。図９によると、第１メモリ１１０には特定アドレスにプライベートブートローダーが保存されている。プライベートブートローダーはノーマルブート時に使用されてよい。
【００９３】
一方、セキュアブートが行われる場合、ＣＰＵ１３０は非揮発性メモリ２００に保存された第１ブートローダーをストーンレジスタ内の領域１９１や第２メモリ１２０内の特定領域１９２にローディングさせる。そして、暗号化キーを用いて第１ブートローダーを復号化した後、復号化された第１ブートローダーを第２メモリ１２０内の特定領域１２１にコピー（ｃｏｐｙ）する。第２メモリ１２０には読み込み／書き込み動作のためのＲＷセクション１２２、汎用領域１２３等のように多様な領域が設けられてよい。
【００９４】
以上のように、チップシステムは多様な内部メモリを用いて外部非揮発性メモリ２００の暗号化されたデータを処理することができる。
【００９５】
なお、電子装置の生産者または電子装置を使用するサービス事業者は電子装置内部に自分だけが知っている秘密キーを安全に保存することを望む場合がある。秘密キーは、多様な用途に使用することができる。例えば、秘密キーは、カーネルの一部領域または全領域を暗号化したり、電子装置と生産者または電子装置とサービス事業者の間で安全な通信チャネルを作るのに使用することもできる。チップシステム１００内の第１メモリ１１０や第３メモリ１４０をＯＴＰメモリで実現し、上述の秘密キーを保存することもできる。
【００９６】
以上のような多様な実施形態に係るチップシステムは、多様な類型の電子装置に使用されてよい。一例として、プリンタや複合機、ファクシミリ、スキャナ等のような画像形成装置に使用されてよい。
【００９７】
本発明の一実施形態によると、画像形成装置は各種消耗品ユニット及び制御部を含んでよい。制御部は、消耗品ユニットを用いて画像形成ジョブを行うことができる。消耗品ユニットがＣＲＵＭチップが装着された形態の場合には、制御部は画像形成ジョブの実行によってＣＲＵＭチップに記録されたデータをアップデートさせることができる。
【００９８】
制御部は、非揮発性メモリ及びチップシステムを含んでよい。非揮発性メモリには、暗号化されたデータが記録されてよい。チップシステムは、画像形成装置がターンオンされると、非揮発性メモリに保存された暗号化されたデータを用いてセキュアブートを行い、セキュアブートが完了するとユーザ命令に応じて画像形成装置を制御することができる。
【００９９】
図１０は、画像形成装置の細部構成の一例を示すブロック図である。図１０によると、画像形成装置１０００は、制御部１１００、保存部１２００、ユーザインターフェース部１３００、通信部１４００、電源供給部１５００、複数の消耗品ユニット１６００−１〜１６００−ｎを含む。
【０１００】
保存部１２００は、ＨＤＤやその他のストレージを含んでよい。保存部１２００は、必ずしも内蔵メモリのみで実現されるものではなく、画像形成装置１０００に着脱可能な外付けメモリで実現されてよい。
【０１０１】
ユーザインターフェース部１３００は、ユーザから各種選択命令を受信するための部分である。ユーザインターフェース部１３００は、ディスプレイパネル及び少なくとも１つ以上のボタンを含んでよい。この場合、ディスプレイパネルはタッチスクリーンで実現されてよい。ユーザインターフェース部１３００は、各種ＵＩ画面を提供し、ユーザはＵＩ画面を直接タッチしたり、ユーザインターフェース部１３００に具備されたボタンを操作して各種ユーザ命令を入力することができる。
【０１０２】
通信部１４００は、ネットワークまたはローカルで外部デバイスと接続され、データ及びコマンドを受信することができる。すなわち、通信部１４００は、ホストパソコンとの間でローカルインターフェースで接続されたり、ネットワークと有線または無線で接続されて複数個の外部デバイスと接続されてよい。無線通信規格としては、米国のＩＥＥＥ（米国電気電子学会）８０２．１１規格、欧州のハイパーＬＡＮ（ｈｙｐｅｒ  ＬＡＮ）規格、日本のＭＭＡＣ−ＰＣ規格等が使用されてよい。その他に、Ｗｉ−Ｆｉやブルートゥース、Ｚｉｇｂｅｅ（登録商標）、ＮＦＣ（Ｎｅａｒｆｉｅｌｄ  Ｆｒｅｑｕｅｎｃｙ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）等のような多様な通信方式によって通信を行うことができる。
【０１０３】
電源供給部１５００は、画像形成装置１０００内の各構成要素に対して電源を供給する役割を担う。具体的には、電源供給部１５００は、外部から常用交流電源を受け（ＡＣ＿ＩＮ）、トランスフォーマ（ｔｒａｎｓｆｏｒｍｅｒ）、インバータ（ｉｎｖｅｒｔｅｒ）、整流器等のような素子を用いて、各構成要素に適した電位レベルの直流電源に変換して出力（ＤＣ＿ＯＵＴ）することができる。
【０１０４】
制御部１１００は、チップシステム（ＳｏＣ）１００及び非揮発性メモリ２００を含む。それにより、画像形成装置１０００がターンオンされると、制御部１１００はセキュアブートを行う。セキュアブートは、上述のように多様な方式で行われてよい。セキュアブートを行うチップシステム１００の構成及び動作の多様な例については、既に上述において具体的に説明しているため、繰り返し説明は省略する。
【０１０５】
ブートが完了すると、制御部１１００は通信部１４００を介して接続された外部デバイスのデータ及びコマンドや、ユーザインターフェース１３００を介して入力されたユーザ選択命令等に応じて、画像形成装置セット全般を制御する。
【０１０６】
具体的には、ホストパソコンに設置されたプリンタドライバまたはアプリケーションで印刷命令が実行されると、ホストパソコンのプリンタドライバは当該文書を所定のプリント言語に変換した印刷データを生成する。制御部１１００は、このような印刷データを通信部１４００を介して受信する。制御部１１００は、ハーフトーンテーブル（Ｈａｌｆｔｏｎｅ  Ｔａｂｌｅ）を用いて、印刷データを“０”と“１”で構成されたビットマップイメージに変換した後、複数の消耗品ユニット１６００−１〜１６００−ｎを制御してビットマップイメージを用紙上に印刷する。
【０１０７】
消耗品ユニット１６００−１〜１６００−ｎは、画像形成装置１０００の種類に応じて多様に設けられてよい。一例として、レーザ複合機の場合なら、消耗品ユニット１６００−１〜１６００−ｎは、給紙部、帯電部、露光部、現像部、転写部、定着部、排紙部、スキャニング部、スキャンモータ等で構成されてよい。これらの各消耗品ユニット１６００−１〜１６００−ｎのうち少なくとも一部は、ＣＲＵＭチップ１６１０−１〜１６１０−ｎを含んでよい。
【０１０８】
ＣＲＵＭチップ１６１０−１〜１６１０−ｎは、メモリのみで実現されてよく、メモリ及びＣＰＵを含む形態で実現されてよい。なお、制御部１１００とは別にＯ／Ｓを有し、そのＯ／Ｓを用いて自主的に初期化を行うこともできる。ＣＲＵＭチップ１６１０−１〜１６１０−ｎは、制御部１１００との間で認証を行い、認証に成功すると、暗号化データ通信を行うことができる。その他にも、ＣＲＵＭチップ１６１０−１〜１６１０−ｎは多様な形態で構成されてよい。
【０１０９】
図１１は、ＣＲＵＭチップの細部構成の一例を示すブロック図である。図１１によると、本ＣＲＵＭチップ１６１０は、Ｏ／Ｓメモリ１６１１、非揮発性メモリ１６１２、揮発性メモリ１６１３、ＣＰＵ１６１４、クリプトユニット（Ｃｒｙｐｔｏ  Ｕｎｉｔ）１６１５、テンパー検出器（ｔｅｍｐｅｒ  ｄｅｔｅｃｔｏｒ）１６１６、インターフェース部１６１７を含む。図示はしていないが、ＣＲＵＭチップ１６１０内には、クロック信号を出力するクロック部（図示せず）や、認証のためのランダム値を生成するランダム値生成部（図示せず）等が更に含まれてよく、一部の構成要素  は削除されてよく、他の構成要素に含まれてよい。クリプトユニット１６１５は、ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ、ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ、ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ ａｒｒａｙ及び／または本発明のコンセプトに合うセキュアブートを行う暗号化を行う如何なる装置であってよい。テンパー検出器１６１６は、ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ、ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ、ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ ａｒｒａｙ及び／または本発明のコンセプトに合う消耗品ユニット（例えば、第１消耗品ユニット１６００−１、第２消耗品ユニット１６００−２）のテンパーリングを検出する如何なる装置であってよい。インターフェース部１６１７は、チップシステム１００を含むメイン制御部１１００とデータを送受信する如何なる適する通信インターフェースであってよい。
【０１１０】
Ｏ／Ｓメモリ１６１１には、消耗品ユニット１６１０を駆動させるためのＯ／Ｓが保存される。非揮発性メモリ１６１２には、消耗品ユニット、ＣＲＵＭチップ等に関連する各種データ及びプログラムが保存されてよい。具体的には、電子署名情報や、各種暗号化プログラムコード、消耗品ユニットの状態情報（例えば、トナー残量情報、交換時期情報、残り印刷枚数情報等）、固有情報（例えば、製造会社情報、製造日時情報、シリアルナンバー、製品モデル名）、Ａ／Ｓ情報等が保存されてよい。ＣＰＵ１６１４は、非揮発性メモリ１６１２に保存されたプログラム及びデータを揮発性メモリ１６１３にローディングさせ、使用することができる。
【０１１１】
クリプトユニット１６１５は、暗号化アルゴリズムをサポートし、ＣＰＵ１６１４が画像形成装置の本体に設けられた制御部１１００との間で認証や暗号化された通信を行うことができるようにする。具体的には、クリプトユニット１６１５は、上述の多様な暗号化アルゴリズムを使って認証または暗号化データ通信を行うことができる。
【０１１２】
テンパー検出器１６１６は、多様な物理的なハッキングの試み、すなわち、テンパーリングを防御するためのユニットである。具体的には、電圧、温度、圧力、光、周波数等の動作環境に対してモニタリングをし、Ｄｅｃａｐのような試みがある場合、データを消したり物理的に遮断する。この場合、テンパー検出器１６１６は、別途の電源を具備することもできる。
【０１１３】
このように、クリプトユニット１６１５及びテンパー検出器１６１６を備えることで、ハードウェアやソフトウェア全てを用いる体系的なデータセキュリティが可能になる。
【０１１４】
インターフェース部１６１７は、ＣＰＵ１６１４及び制御部１１００を接続させる役割を担う。具体的には、シリアルインターフェースや無線インターフェースで実現されてよい。
【０１１５】
以上のように、チップシステムは、画像形成装置に搭載され、セキュアブートを行うことができる。それにより、ブート過程を変更したり、消耗品ユニットのデータを第三者がハッキングして使用することを防止することができる。その他にも、チップシステムは画像形成装置以外の多様な電子装置に搭載されて使用されてよい。
【０１１６】
具体的には、チップシステム内の第１メモリに保存された初期化データを用いて初期化動作を行う初期化ステップと、初期化動作が行われると、第１メモリに保存された複数の暗号化キーの中の１つを用いて、非揮発性メモリに保存された暗号化されたデータを復号化するステップと、復号化されたデータをチップシステム内の第２メモリに保存するステップと、第２メモリに保存されたデータを用いてブートを行うステップとを順次に行うためのプログラムコードが保存された非一時的な読み取り可能な媒体が使用されてよい。
【０１１７】
図１２は、本発明の更に別の実施形態に係るチップシステムでメモリを使用する方法を説明するためのフローチャートである。図１２によると、画像形成装置がパワーンオンになると（Ｓ１２１０）、ＣＰＵ１３０は第１メモリ１１０にアクセスする（Ｓ１２２０）。それにより、ＣＰＵ１３０は、第１メモリに保存されたプログラム及びデータを用いて各種動作を行う（Ｓ１２３０）。例えば、第１メモリ１１０に初期化データが保存された場合、ＣＰＵ１３０はその初期化データを用いて画像形成装置に対する初期化を行う。初期化が完了すると、ＣＰＵ１３０は非揮発性メモリ２００から暗号化されたデータを検出した後、第１メモリ１１０に保存された暗号化キーを用いて復号化する。ＣＰＵ１３０は、復号化されたデータを第２メモリ１２０に保存する。
【０１１８】
その後からは、第１メモリ１１０を用いずに、第２メモリ１２０を用いてブートを行うようになるため、ＣＰＵ１３０は第１メモリ１１０をこれ以上用いる必要がなくなる。それにより、ＣＰＵ１３０は、第１メモリ１１０に対するアクセスを遮断する（Ｓ１２４０）。そして、第２メモリ１２０にアクセスし、その後の動作を行う。
【０１１９】
復号化動作及びブート動作については、上述の多様な実施形態において具体的に説明しているため、繰り返し説明は省略する。
【０１２０】
図１３は、チップシステムの細部構成の更に別の例を示す図である。図１３によると、チップシステム１００は、第１メモリ１１０と、第２メモリ１２０と、ＣＰＵ１３０と、第３メモリ１４０と、バス１５０と、ＤＤＲコントローラ１８５と、回路部１５５、１６０、１６５、１７０、１７５、１８０）の他にも、第１メモリコントローラ１３１０、第２メモリコントローラ１３２０、スイッチング部１３３０を更に含んでよい。第１メモリコントローラ１３１０、第２メモリコントローラ１３２０、スイッチング部１３３０を除く残りの構成要素については、図７を参照して具体的に説明しているため、繰り返し説明は省略する。
【０１２１】
第１メモリコントローラ１３１０は、第１メモリ１１０に対するアクセスを制御するための構成要素である。第１メモリコントローラ１３１０は、ＣＰＵ１３０から読み取り信号が受信されると、第１メモリ１１０内で読み取り信号によって指定された領域からデータを検出してＣＰＵ１３０に出力することができる。なお、第２メモリコントローラ１３２０は、第２メモリ１２０に対するアクセスを制御するための構成要素である。第２メモリコントローラ１３２０も、第１メモリコントローラ１３１０と同様に、読み取りや書き込み等を行うことができる。
【０１２２】
スイッチング部１３３０は、ＣＰＵ１３０の動作状態に応じて、第１メモリコントローラ１３１０及び第２メモリコントローラ１３２０のいずれか一方とバス１５０を選択的に接続するための構成要素である。すなわち、上述のように、装置がターンオンされて非揮発性メモリ２００のデータが復号化されるまではＣＰＵ１３０は第１メモリ１１０を用い、その後からは第２メモリ１２０を用いるようになる。スイッチング部１３３０は、ＣＰＵ１３０が第１メモリ１１０を用いるべき動作状態の際は、第１メモリコントローラ１３１０とバス１５０とを接続し、第１メモリ１１０に対する利用が終了すると、第２メモリコントローラ１３２０とバス１５０とを接続する。
【０１２３】
図１３によると、第１メモリコントローラ１３１０は、内部にレジスタ１３１１を含む。レジスタ１３１１には、第１メモリ１１０に対するアクセス制御値が記録される。アクセス制御値は、第１メモリ１１０に対するアクセスを許容または遮断するために定義された値であって、少なくとも１つ以上のビット値で実現されてよい。
【０１２４】
図１３によると、第１メモリコントローラ１３１０に内蔵されたレジスタ１３１１は第３回路部１６５に入力される。図７の実施形態と違って、第３回路部１６５はインバータ及びＯＲゲートを含まずに、その代わりに、ＡＮＤゲート１６５−２を含むことができる。ＡＮＤゲート１６５−２は、第３レジスタ１６５−１に保存された保存値と、レジスタ１３１１に保存された保存値、第４回路部１７０から出力される出力値が全て１である場合、１を出力する。よって、ＣＰＵ１３０がレジスタ１３１１に０の値を有するアクセス制御値を記録するようになると、第３レジスタ１６５−１に保存された保存値、第４回路部１７０から出力される出力値等が如何なる値であったとしても、第３回路部１６５からは０が出力される。
【０１２５】
チップシステムがターンオンされた初期は、レジスタ１３１１には、例えば１のようなアクセス制御値が記録される。それにより、第３回路部１６０ではスイッチング部１３００に１を出力する。スイッチング部１３３０は、第１マルチプレクサ１３３１、第２マルチプレクサ１３３２、第３マルチプレクサ１３３３を含む。第１マルチプレクサ１３３１は、第３回路部１６０から出力される値に応じて、第１メモリコントローラ１３１０及び第２メモリコントローラ１３２０から出力される値のうちの１つの選択的にバス１５０に出力する。図１３においては、第３回路部１６０から１が出力されると、第１メモリコントローラ１３１０から出力される値をバス１５０に伝達し、第３回路部１６０から０が出力されると、第２メモリコントローラ１３２０から出力される値をバス１５０に伝達する回路構造を示す。第２マルチプレクサ及び第３マルチプレクサ１３３２、１３３３は、第３回路部１６０から出力される値に応じて、バス１５０から入力される値を第１または第２メモリコントローラ１３１０、１３２０に出力するための構成である。
【０１２６】
図１２及び図１３を参照して説明した実施形態によると、第１メモリ１１０、すなわち、マスクＲＯＭと、第２メモリ１２０、すなわち、内部メモリを同じアドレス領域に割り当て、ブート順に応じて選択的に利用することができる。すなわち、第１メモリ１１０に記録されたコードを先に使用した後、最後の段階ではレジスタ１３１１にセッティングし、スイッチング部１３３０内でバスコマンド１と、データインプット１のみを有効とするようにすることができる。それにより、ＣＰＵ１３０が同じアドレスでアクセスするとしても第２メモリ１２０に接続されるため、第１メモリ１１０に対するセキュリティ性が強化される。図１３においては、レジスタ１３１１が第１メモリコントローラ１３１０内部に設けられたものとして示しているが、必ずしもそれに限定されるものではない。例えば、レジスタ１３１１は、第１メモリコントローラ１３１０の外部に設けられてよく、レジスタ１３１１の代わりに初期に一度だけ設定し、その後は変更ができないように設計された各種ロジックが第１メモリコントローラ１３１０に内蔵されてよい。
【０１２７】
スイッチング部１３３０が設けられることにより、チップシステム１００は第１メモリコントローラ１３１０及び第２メモリコントローラ１３２０のような２つのスレーブとバス１５０とを直接それぞれ接続する必要がなくなるため、ロジックサイズも減少するようになる。
【０１２８】
以上のような実施形態において、チップシステム１００は第１メモリ１１０と、第３メモリ１４０等に記録された各種ソフトウェアコードを用いて初期化またはセキュアブートを行うものとして説明してきた。しかし、不純な意図を有する第三者が脱カプセル化（ｄｅｃａｐｓｕｌａｔｉｏｎ）過程を通じてチップシステム１００内部のＲＯＭ、例えば、第１メモリ１１０を直接ハッキングするおそれもある。それにより、本発明の更に別の実施形態では、ソフトウェアコードをチップシステム１００で自主的に生成して使用することもできる。
【０１２９】
図１４は、このような実施形態に係るチップシステムの構成を示すブロック図である。図１４によると、チップシステム１００は、第１メモリ１１０、第２メモリ１２０、ＣＰＵ１３０、第３メモリ１４０、バス１５０、コード生成部１４００を含む。
【０１３０】
コード生成部１４００は、各種ソフトウェアコードを生成するための構成要素である。ＣＰＵ１３０は、第１ないし第３メモリ１１０、１２０、１４０に保存されたデータだけでなく、コード生成部１４００で生成するソフトウェアコードも併せて使用することができる。
【０１３１】
上述のように、第１メモリ１１０にはシステム初期化に必要なコード、暗号化された外部プログラムコードの復号化のために必要なコードや暗号化キー等のような多様なデータが保存されてよい。コード生成部１４００は、第１メモリ１１０に保存されたデータのうち少なくとも一部を生成してＣＰＵ１３０に提供することができる。
【０１３２】
ＣＰＵ１３０は、第１メモリ１１０に保存されたデータとともに、コード生成部１４００から生成されたソフトウェアコードを使用して初期化を行うことができる。例えば、第１メモリ１１０に初期化コードの全部を記録せずに、記録されていない一部のコードはコード生成部１４００が生成するように実現されてよい。この場合、ＣＰＵ１３０は、リセットベクトルに接近して第１メモリ１１０から初期化コードを読み込みつつ、一部のソフトウェアコードはコード生成部１４００に入力され、初期化を行うことができる。本実施形態のように、ＣＰＵ１３０は第１メモリ１１０の記録値、コード生成部１４００から出力されるデータを同時に用いて、各種動作を行うことができる。それにより、第１メモリ１１０がハッキングされるとしても、第三者が初期化コードの全てを知ることができなくなる。
【０１３３】
図１５は、本発明の更に別の実施形態に係るチップシステム１００の構成を示す。図１５によると、チップシステム１００は第１メモリ１１０を除き、コード生成部１４００を含む。コード生成部１４００はシステム初期化コード、復号化コード、暗号化キー等のような多様なデータを生成することができる。ＣＰＵ１３０は、コード生成部１４００にアドレスを入力し、そのアドレスによって生成されるソフトウェアコードを受ける。
【０１３４】
図１６は、図１４または図１５の実施形態で使用されるコード生成部の一例を示す。図１６によると、コード生成部１４００はアドレスデコーダ１４１０、複数のレジスタ１４２０−１〜１４２０−ｎ、マルチプレクサ１４３０を含む。
【０１３５】
アドレスデコーダ１４１０は、ＣＰＵ１３０からアドレスを受信してデコードする。
【０１３６】
マルチプレクサ１４３０は、アドレスデコーダ１４１０でデコードされたアドレスを受けて、そのアドレスに応じて複数のレジスタ１４２０−１〜１４２０−ｎのそれぞれにアクセスする。
【０１３７】
具体的には、マルチプレクサ１４３０は、複数のレジスタ１４２０−１〜１４２０−ｎの中からアドレスデコーダ１４１０でデコードされたアドレスによって指定されたレジスタに保存されたレジスタ値を選択的に検出し、組み合わせてソフトウェアコードを生成する。
【０１３８】
図１７は、コード生成部の更に別の例を示す。図１７によると、コード生成部１４００はアドレスデコーダ１７１０、第１生成部１７２０、複数のインストラクションレジスタ１７３０−１〜１７３０−ｎ、１７５０−１〜１７５０−ｍ、複数のインストラクションマルチプレクサ１７４０、１７６０、コードフォーマッタ１７７０、第２生成部１７８０、複数のデータレジスタ１７９０−１〜１７９０−ｘ、データマルチプレクサ１８００、マルチプレクサ１８１０を含む。
【０１３９】
アドレスデコーダ１７１０は、ＣＰＵからアドレスを受信してデコードし、デコードされたアドレスをそれぞれ第１生成部１７２０及び第２生成部１７８０に提供する。第１生成部１７２０は、アドレスデコーダ１７１０でデコードされたアドレスからインストラクションアドレスを検出して生成する。第１生成部１７２０から生成されたインストラクションアドレスはそれぞれ複数のインストラクションマルチプレクサ１７４０、１７６０に提供される。
【０１４０】
図１７においては、インストラクションマルチプレクサ１７４０、１７６０が２つのみが示されているが、インストラクションマルチプレクサ１７４０、１７６０の数はインストラクションレジスタを区分するグループの数によって異なってよい。
【０１４１】
すなわち、インストラクションレジスタ１７３０−１〜１７３０−ｎ、１７５０−１〜１７５０−ｍはソフトウェアコードを構成するフィールド別にグルーピングされ、複数個のグループに区分されてよい。インストラクションレジスタ１７３０−１〜１７３０−ｎ、１７５０−１〜１７５０−ｍは、ソフトウェアコードを構成するための細部コードまたは少なくとも１つのビットデータを保存することができる。図１７においては、計ｎのグループに区分されたインストラクションレジスタを示す。
【０１４２】
複数のインストラクションマルチプレクサ１７４０、１７６０は、インストラクションアドレスによってマッチングされるインストラクションレジスタからレジスタ値を選択的に検出する。例えば、インストラクションアドレスで第１グループ内の第１、３、４、５レジスタ、第ｎグループ内の第２、３、５、６レジスタを指定したなら、第１グループにマッチングされた第１マルチプレクサ１７４０は第１、３、４、５レジスタ１７４０−１、３、４、５からレジスタ値を検出する。なお、第ｎグループにマッチングされた第１マルチプレクサ１７６０は第２、３、５、６レジスタ１７５０−２、３、５、６からレジスタ値を検出する。検出された値はコードフォーマッタ１７７０に伝達される。  
【０１４３】
コードフォーマッタ１７７０は、複数のインストラクションマルチプレクサ１７４０、１７６０から検出された値を組み合わせてコードを生成する。
【０１４４】
一方、第２生成部１７８０は、アドレスデコーダ１７１０でデコードされたアドレスに基づいて、データアドレスを生成する。第２生成部１７８０は、生成されたデータアドレスをデータマルチプレクサ１８００に提供する。
【０１４５】
データマルチプレクサ１８００は、データアドレスに応じて複数のデータレジスタ１７９０−１〜１７９０−ｘからレジスタ値を選択的に検出する。複数のデータレジスタ１７９０−１〜１７９０−ｘには多様なデータが部分的に分けられて保存されてよい。データマルチプレクサ１８００から検出されたレジスタ値はマルチプレクサ１８１０に提供される。
【０１４６】
マルチプレクサ１８１０は、コードフォーマッタ１７７０から生成されたコード及びデータマルチプレクサ１８００から生成されたデータを組み合わせて、ソフトウェアコードを生成することができる。生成されたソフトウェアコードはＣＰＵ１３０に提供されてよく、第２メモリ１２０にコピーされてよい。
【０１４７】
ＣＰＵ１３０は、コード生成部１４００から生成されたソフトウェアコードを用いて初期化動作だけでなく、多様な制御動作を行うことができる。
【０１４８】
図１８及び図１９は、コード生成部で生成するソフトウェアコードの多様な構成例を示す図である。
【０１４９】
図１８によると、ソフトウェアコードは、複数のフィールド１９１０〜１９５０で構成されてよい。各フィールド１９１０〜１９５０は、ｃｏｎｄｉｔｉｏｎ、Ｏｐｃｏｄｅ、Ｒｅｇｉｓｔｅｒ値等のような多様なデータが記録されてよい。コード生成部１４００は、各フィールドに対応するグループのレジスタからレジスタ値をそれぞれ検出した後、これらを組み合わせて図１８のようなソフトウェアコードを生成することができる。
【０１５０】
図１９は、ソフトウェアコードの更に別の構成例を示す。図１８のソフトウェアコードは同じ大きさのフィールドで構成され得る一方で、図１９はフィールド別にサイズが相互異なるように構成される。図１９によると、ｃｏｎｄｉｔｉｏｎフィールド１９６０、Ｏｐｃｏｄｅフィールド１９７０が設けられ、残りのデータは別個のフィールド１９８０に記録されてよい。
【０１５１】
その他にも、ソフトウェアコードは、多様な形態で構成されてよい。ソフトウェアコードは、代替として命令語部分、演算者部分等に一定の区域別に分けられるようになる。これらの命令語は、区域別に似たような形態になる場合が多いため、コードを最適化し、それを考慮してハードウェア装置を作るとしてら、ハードウェア装置の大きさが軽減することができる。
【０１５２】
一方、上述の多様な実施形態で説明したように、チップシステム１００に搭載されていない外部メモリ２００には暗号化されたプログラムや暗号化されたデータが保存される。外部メモリ２００は読み取り及び書き込みが可能な非揮発性のフラッシュメモリで実現されてよい。
【０１５３】
フラッシュメモリは、インターフェース仕様及び内部構造によって多様な種類に区分される。具体的には、ＣＰＵ１３０とインターフェースされる仕様を基準に、ｓｅｒｉａｌ／ｐａｒａｌｌｅｌフラッシュに区分され、フラッシュの内部構造に応じてＮＡＮＤ及びＮＯＲフラッシュに区分されてよい。
【０１５４】
図２０は、ＮＯＲフラッシュメモリ２０００のピン構造を示す。図２０によると、ＮＯＲフラッシュメモリ２０００はＷＥ＃ピン２０１０をはじめとする多様なピンを含んでよい。ＷＥ＃ピン２０１０はコマンドインターフェースのバス書き込み（ｂｕｓ  ｗｒｉｔｅ）動作を制御するためのピンである。
【０１５５】
図２１は、ＮＡＮＤフラッシュメモリ２１００のピン構造を示す。図２１によると、ＮＡＮＤフラッシュメモリ２１００はＷＥ＃ピン２１１０をはじめとする多様なピンを含んでよい。ＷＥ＃ピン２１１０はＮＡＮＤフラッシュメモリ２１００に対する書き込み信号を受信するピンである。
【０１５６】
図２２は、ＳＰＩフラッシュメモリ２２００のピン構造を示す。図２２によると、ＳＰＩフラッシュメモリ２２００も書き込み動作のためのＷ＃ピン２２１０を含む。
【０１５７】
ＣＰＵ１３０は、各フラッシュメモリに備えられたピンを用いて書き込み動作を行うことができる。一方、上述のように、フラッシュメモリは暗号化されるが、チップシステム１００の暗号化キー値が露出される可能性もある。暗号化キー値が露出されると、フラッシュメモリに保存されたパームウェアが変更されるおそれがある。よって、フラッシュメモリの変更への危険性を未然に防止する必要がある。それにより、本発明の更に別の実施形態によると、外部メモリの書き込みピンを非活性化させることができる。
【０１５８】
図２３は、本発明の更に別の実施形態に係るチップシステム及び外部メモリの構造を示す図である。図２３は、ＮＯＲフラッシュメモリを外部メモリとして使用した場合を示す。この場合、チップシステム１００は、ＮＯＲフラッシュメモリ２０００をコントロールするためのＮＯＲフラッシュコントローラ２３１０を更に含んでよい。
【０１５９】
ＣＰＵ１３０は、ＮＯＲフラッシュコントローラ２３１０を介してＮＯＲフラッシュメモリ２０００に記録された各種データやソフトウェアをリーディングすることができる。なお、ＣＰＵ１３０は、ＮＯＲフラッシュコントローラ２３１０を介して書き込み信号をＮＯＲフラッシュメモリ２０００に出力することもできる。
【０１６０】
しかし、図２３に示すように、ＮＯＲフラッシュメモリ２０００の書き込みピン２０１０は非活性化処理されてよい。非活性化処理は、多様な方式で行われてよい。図２３においては、チップシステム１００とＮＯＲフラッシュメモリ２０００の搭載されたメインボードに設けられた非活性端子２３２０で書き込みピン２０１０がタイ（ｔｉｅ）された状態を示す。この場合、ＮＯＲフラッシュコントローラ２３１０で書き込み信号が出力されるとしても、書き込みピン２０１０に入力されることができないため、ＮＯＲフラッシュメモリ２０００のデータ変更ができなくなる。
【０１６１】
図２３においては、ＮＯＲフラッシュメモリ２０００のみを示しているが、上述のように、非揮発性メモリ、すなわち、外部メモリにＮＡＮＤフラッシュメモリ２１００やＳＰＩフラッシュメモリ２２００等のような多様な形態で構成されてよく、１つのチップシステム１００と様々な種類のフラッシュメモリが同時に接続されていてよい。このようなフラッシュメモリ２１００、２２００でも書き込みピンが非活性化処理され、データ変更を根本から封鎖することもできる。
【０１６２】
一方、本発明の更に別の実施形態によると、チップシステムの特定条件を満たしたときにのみ、外部メモリに対する書き込みができるように実現することもできる。
【０１６３】
図２４は、本発明の更に別の実施形態に係るメモリ制御方法を説明するためのフローチャートである。本実施形態によると、チップシステム１００は、外部非揮発性メモリに対するアクセスを制御するメモリコントローラを更に含んでよい。
【０１６４】
メモリコントローラは、書き込みイベントが発生すると（Ｓ２４１０）、ＣＰＵ１３０から書き込み信号及び第１キー値を受信する（Ｓ２４２０）。第１キー値はユーザが入力することもでき、ＣＰＵ１３０から自動入力されてよい。ＣＰＵ１３０は、予め保存された複数のキーのうち１つをランダムに選択し、その選択されたキー値のナンバーをメモリコントローラに入力することもでき、そのキー値そのものを入力することもできる。
【０１６５】
メモリコントローラは第１キー値が受信されると（Ｓ２４２０）、受信された第１キー値と、予め保存された第２キー値とを比較する（Ｓ２４３０）。比較の結果、両キー値が相互一致すると、メモリコントローラは外部メモリに対する書き込み動作を行う（Ｓ２４４０、Ｓ２４５０）。
【０１６６】
図２５は、図２４で説明したメモリ制御方法を実行するメモリコントローラの構成の一例を示す図である。図２５によると、メモリコントローラ２５００は、信号伝達部２５１０、キー値保存部２５２０、比較部２５３０、メモリアクセスコントローラ２５４０、信号処理部２５５０及び信号生成部２５６０を含む。
【０１６７】
信号伝達部２５１０は、ＡＰＢ（ｔｈｅ  Ａｄｖａｎｃｅｄ  Ｐｅｒｉｐｈｅｒａｌ  Ｂｕｓ）のようなバスを介して各種信号を受信して比較部２５３０または信号処理部２５５０等に伝達することができる。具体的には、ＣＰＵ１３０から第１キー値が伝送されると、信号伝達部２５１０は第１キー値を内部レジスタ２５１１に保存した後、保存された第１キー値を比較部２５３０に提供することができる。
【０１６８】
キー値保存部２５２０には、少なくとも１つの第２キー値が保存されてよい。
【０１６９】
比較部２５３０は、第１キー値が信号伝達部２５１０を介して伝達されると、キー値保存部２５２０に保存された第２キー値と、受信された第２キー値とを比較する。比較部２５３０は、比較結果に応じて、０または１のような信号を出力することができる。
【０１７０】
信号処理部２５５０は、比較部２５３０の比較結果に応じてＣＰＵ１３０から伝送された書き込み信号を外部非揮発性メモリに選択的に出力することができる。なお、信号処理部２５５０は、外部非揮発性メモリ２００からリーディングされる信号をメモリアクセスコントローラ２５４０に伝達することもできる。
【０１７１】
信号処理部２５５０は、書き込み動作を制御するための第１スイッチ２５５１−１、読み取り動作を制御するための第２スイッチ２５５１−２、送信または受信される信号を予め設定されたフォーマットのデータに変換処理する変換部２５５２、フィルタ部２５５３等を含んでよい。第１スイッチ２５５１−１や第２スイッチ２５５１−２は各種論理回路で実現されてよい。それにより、比較部２５３０から出力される比較結果値に応じてメモリアクセスコントローラ２５４０及び変換部２５５２の間を接続または遮断することができる。
【０１７２】
例えば、第１キー値及び第２キー値が不一致の場合、比較部２５３０は０を出力し、第１キー値及び第２キー値が一致する場合、比較部２５３０は１を出力することができる。第１スイッチ２５５１−１は、比較部２５３０から０が出力されると、変換部２５５２との接続を遮断することができる。それにより、何の出力を行わなくてよく、または、メモリアクセスコントローラ２５４０から如何なる値が入力されるとしても、固定された値、例えば０のみを出力することができる。一方、比較部２５３０から１が出力されると、第１スイッチ２５５１−１はメモリアクセスコントローラ２５４０から出力される信号を変換部２５５２にそのまま伝達する。
【０１７３】
変換部２５５２は、メモリアクセスコントローラ２５４０から出力される書き込み信号をメモリデータに変換し、外部の非揮発性メモリ２００に伝達する。
【０１７４】
一方、フィルタ部２５５３は、非揮発性メモリ２００からリーディングされるデータをフィルタリングし、変換部２５５２に伝達する。変換部２５５２は、伝達されたデータを第２スイッチ２５５１−２に提供する。第２スイッチ２５５１−２は、変換部２５５２から入力される値をメモリアクセスコントローラ２５４０に伝達するための構成である。第２スイッチ２５５１−２も、比較部２５３０から０が入力されると、変換部２５５２及びメモリアクセスコントローラ２５４０の間の接続を遮断し、比較部２５３０から１が入力されると変換部２５５２及びメモリアクセスコントローラ２５４０の間を接続させることができる。図２５においては、第１スイッチ２５５１−１とともに第２スイッチ２５５１−２を示しているが、本発明の更に別の実施形態によると、第２スイッチ２５５１−２が省略されて読み取り動作はいつでもできるように実現することができる。
【０１７５】
メモリアクセスコントローラ２５４０は、ＡＰＢやＡＨＢ（ｔｈｅ  Ａｄｖａｎｃｅｄ  Ｈｉｇｈ  ｐｅｒｆｏｒｍａｎｃｅ  Ｂｕｓ）を介して入力される書き込み信号や読み取り信号によって外部メモリ２００に対する書き込みまたは読み取り動作を行う。上述のように、ＣＰＵ１３０から入力される第１キー値が予め保存された第２キー値と一致すると、メモリアクセスコントローラ２５４０は非揮発性メモリ２００に各種データを書き込むこともできる。一方、不一致の場合、メモリアクセスコントローラ２５４０が書き込み信号を出力するとしても、非揮発性メモリ２００にデータを書き込むことができなくなる。
【０１７６】
以上のように、本発明の多様な実施形態によると、非揮発性メモリに保存されたプログラムやデータに対する変更の試みそのものを未然に防ぐことができる。
【０１７７】
一方、上述の実施形態において説明したように、非揮発性メモリには暗号化されたコードが保存されてよい。このようなコードは、キー値がないと復号化ができない。しかし、キー値が一旦露出されると、非揮発性メモリに保存された暗号化コードを直ちに復号化して使用することができ、または任意に修正されたパームウェアコードを生成して使用することもできる。キー値は、画像形成装置そのものから検出することができなくても、画像形成装置の製造会社内部から流出されるおそれもある。よって、キー値が露出されるとしても、ハッカーによる任意のパームウェアコード変更を防止する技術に対する必要がある。
【０１７８】
図２６は、本発明の更に別の実施形態に係る印刷制御方法を説明するためのフローチャートである。図２６によると、ホスト装置２６００は、画像形成装置１０００と通信を行い、画像形成装置１０００の動作を制御する。
【０１７９】
上述のように、画像形成装置１０００に保存されたキー値が露出されると、パームウェア変更が可能になる。それにより、ハッカーによる任意の暗号化及び復号化ができるようになるため、画像形成装置に対する正常な管理が困難になる。本実施形態においては、ホスト装置２６００が画像形成装置１０００が使用する暗号文と予め保存された暗号文とを比較し、画像形成装置１０００が正常な状態か、それともハッキングされた状態かを判断することができる。
【０１８０】
具体的には、ホスト装置２６００は暗号文（ｃｉｐｈｅｒ  ｔｅｘｔ）を保存する（Ｓ２６１０）。暗号文とは、パームウェアのようなプログラムを予め設定されたキー値に暗号化したものを意味する。パームウェアは、機能向上を目的に随時アップデートされ、新たなバージョンで生成されるため、暗号文もパームウェアバージョン別に異なる。逆に、同じバージョンのパームウェアの暗号文は常に同じである。キー値が露出されてパームウェアがハッキングされると、修正されたパームウェアも正常に動作をするようになるが、修正されたパームウェアの暗号文は正式に発行されたバージョンとは異なる形態になる。
【０１８１】
ホスト装置２６００は、正常に暗号化されたパームウェアの暗号文と、そのパームウェアのバージョン情報等をマッチングさせて保存することができる。暗号文及びバージョン情報はホスト装置２６００のプリンタドライバとともに保存されてよい。
【０１８２】
ホスト装置２６００は、任意のイベントが発生すると、暗号文及びバージョン情報を画像形成装置１０００に要請することができる（Ｓ２６１５）。ここでイベントとは、予め設定された時間周期が到来するイベント、印刷命令が入力されるイベント、プリンタドライバがインストールされるイベント、ホスト装置２６００及び画像形成装置１０００の間の通信が接続されるイベント、画像形成装置１０００がターンオンされてブートが完了するイベント等のように多様なイベントがあってよい。その他にも、イベントには、暗号文偽造有無をチェックしなければならない多様な状況が含まれてよい。
【０１８３】
画像形成装置１０００は、ブートが完了した状態で（Ｓ２６２０）、ホスト装置２６００から暗号文及びバージョン情報要請が受信されると（Ｓ２６１５）、予め保存された暗号文及びバージョン情報をホスト装置２６００に伝送する（Ｓ２６２５）。
【０１８４】
ホスト装置２６００は、多様なバージョン情報及びそのバージョン情報にマッチングされる暗号文を保存している状態で、画像形成装置１０００から暗号文及びバージョン情報を受信することができる。ホスト装置２６００は、予め保存されたバージョン情報のうち、受信されたバージョン情報にマッチングする暗号文と、受信された暗号文とを比較する（Ｓ２６３０）。
【０１８５】
比較結果、両暗号文が相互一致しなければ、暗号文が偽造された状態と判断する（Ｓ２６３５）。ホスト装置２６００は暗号文が偽造されたと判断されると、画像形成装置１０００を用いた印刷ができないように印刷遮断プリンタリストに画像形成装置１０００を登録する（Ｓ２６４５）。
【０１８６】
一方、ホスト装置２６００は、暗号文偽造ではないと判断されると、印刷待機状態になる（Ｓ２６４０）。印刷待機状態になった後、ユーザから印刷命令が入力されると、ホスト装置２６００は印刷データと印刷ジョブ実行コマンドを画像形成装置１０００に伝送し、印刷を行う。
【０１８７】
図２７は、図２６の印刷制御方法を行うためのホスト装置の構成の一例を示すブロック図である。図２７によると、ホスト装置２６００は、保存部２６１０と、制御部２６２０と、通信部２６３０とを含む。ホスト装置２６００は、パソコン、ラップトップコンピュータ、携帯電話、ＰＤＡ、タブレットパソコン、サーバ装置等のような多様な形態で実現されてよい。
【０１８８】
保存部２６１０は、暗号文を保存するための構成要素である。保存部２６１０には、多様なパームウェアバージョン別に暗号文が個別的に保存されてよい。なお、多様な装置と接続される場合、各装置のモデル名や、製造メーカ名、シリアルナンバー、パームウェア名称、パームウェアバージョン等のような識別情報に対して暗号文が個別的に保存されてよい。
【０１８９】
通信部２６３０は、予め設定されたイベントが発生すると、画像形成装置に保存された暗号文を受信する。具体的には、上述のように、暗号文偽造有無をチェックしなければならない多様なイベントが発生すると、画像形成装置に暗号文を要請して受信することができる。この場合、暗号文とともにバージョン情報または識別情報を受信することもできる。
【０１９０】
制御部２６２０は、画像形成装置１０００から受信されるバージョン情報や識別情報等を用いて、保存部２６１０に保存された暗号文のうち、画像形成装置１０００のパームウェアバージョンに対応する暗号文を検出する。そして、制御部２６２０は、検出された暗号文と、受信された暗号文とを比較する。制御部２６２０は、両暗号文が相互一致すると、暗号文が正常であると判断し、画像形成装置１０００を印刷待機状態に制御する。一方、暗号文が相互不一致である場合、画像形成装置がハッキングされたと判断し、画像形成装置１０００の使用を遮断させる。
【０１９１】
図２８及び図２９は、相互異なるバージョンに対応する平文（ｐｌａｉｎ  ｔｅｘｔ）及び暗号文（ｃｉｐｈｅｒ  ｔｅｘｔ）の例を示す図である。図２８によると、バージョン１によると、平文１（２８２０）が１つのキー値２８１０によって暗号化されると（Ｓ２８３０）、暗号文１（２８４０）が生成される。暗号文１（２８４０）は、非活性化メモリに保存されてよい。上述の多様な実施形態で説明したように、ＣＰＵ１３０はブートを行う際、または、多様な動作を行うために必要になったとき、非揮発性メモリに保存された暗号化コード、すなわち、暗号文１（２８４０）を検出する。そして、ＣＰＵ１３０は、暗号化に使用されたものと同じキー値２８１０を用いて復号化し（Ｓ２８５０）、平文１（２８２０）を生成して使用することができる。
【０１９２】
図２９は、バージョン２による平文及び暗号化の例を示す。図２９におけるキー値２８１０がバージョン１のキー値２８１０と同一と仮定しても、バージョン２による平文２９２０そのものがバージョン１の平文２８２０と異なるため、暗号化された後（Ｓ２９３０）の暗号文２９４０もバージョン１と異なるようになる。
【０１９３】
このように、各画像形成装置にはその装置のバージョンに合った暗号文が保存されて使用されるが、ホスト装置２６００には各バージョンの暗号文が保存されてよい。
【０１９４】
図３０は、キー値が漏れてコードがハッキングされた状態を示す。ハッキングされたコードの暗号文３０２０は正式に発行されたバージョンではなく、ハッカーが任意に原本を修正して新たな平文３０１０を生成した後、その平文２０１０に対して露出されたキー値２８１０を適用して作った暗号文３０２０である。このような暗号文が非揮発性メモリに保存されると、ＣＰＵ１３０はハッカーの意図通りにブートを行うしかないため、画像形成装置に対する正常な管理が困難になる。しかし、この場合、暗号文そのものはホスト装置２６００に登録されたものではないため、ホスト装置２６００は暗号文を確認して画像形成装置１０００が正常な状態か、それともハッキングされた状態かを判断することができる。
【０１９５】
具体的には、制御部２６２０は、画像形成装置１０００のバージョン情報が予め保存されたバージョン情報ではなかったり、予め保存されたバージョン情報だとしても、そのバージョン情報にマッチングする暗号文と画像形成装置１０００の暗号文とが相互不一致の場合、ハッキングされた状態と判断する。それにより、制御部２６２０は、当該画像形成装置１０００の使用を遮断する。
【０１９６】
このような実施形態によると、キー値が万が一露出されるとしても、任意にパームウェアが修正されることを防止することができるようになる。
【０１９７】
一方、チップシステム１００を含むメインコントローラは画像形成装置がブートされると、各種消耗品ユニットの動作を制御してユーザが要請したジョブを行うことができる。図１０を参照して説明したように、消耗品ユニット１６００−１〜１６００−ｎは画像形成装置１０００の種類に応じて多様に設けられてよい。なお、各消耗品ユニット１６００−１〜１６００−ｎのうち、少なくとも一部はＣＲＵＭチップ１６１０−１〜１６１０−ｎを含んでよい。
【０１９８】
ＣＲＵＭチップ１６１０−１〜１６１０−ｎは、メインコントローラ１１００との間で認証を行い、認証に成功すると、暗号化データ通信を行うことができる。認証は、多様な方式で行われてよい。
【０１９９】
認証仮定の一例を挙げると、メインコントローラは認証を行うべき状況が発生すると、ＣＲＵＭチップに認証要求を伝送することができる。この場合、メインコントローラは任意の第１値を併せて伝送することができる。第１値はメインコントローラが自らランダムに生成することもでき、予め保存された固定値に定められてよい。ＣＲＵＭチップは認証要求が受信されると、任意の第２値を生成し、第１値と第２値とを用いてセッションキーを生成した後、第１ＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）を生成することができる。ＣＲＵＭチップは、生成された第１ＭＡＣとともに第２値をメインコントローラに伝送することができる。第２値も、第１値と同様にランダム値であってよく、任意の固定値であってよい。メインコントローラは第２値が受信されると、自らが生成した第１値と第２値とを用いてセッションキーを生成し、そのセッションキーを用いて自ら第２ＭＡＣを生成する。メインコントローラは第２ＭＡＣと第１ＭＡＣとを比較し、一致する場合にＣＲＵＭチップに対する認証が完了したと判断する。この過程において、メインコントローラはＣＲＵＭチップに保存された電子署名情報を確認し、認証を行うこともできる。
【０２００】
一方、メインコントローラは第１ＭＡＣと第２ＭＡＣとが相互不一致の場合、認証に失敗したと判断し、再び認証を行うことができる。この場合、認証実行回数に対して制限を設けることもできる。
【０２０１】
図３１は、このような実施形態に係る制御方法を説明するためのフローチャートである。図３１によると、画像形成装置はＣＲＵＭチップに対する認証に失敗すると（Ｓ３１１０）、失敗の回数をカウントして保存する（Ｓ３１２０）。画像形成装置のメインコントローラまたはチップシステムは、その失敗の回数が予め設定された臨界回数以上か否かを判断する（Ｓ３１３０）。
【０２０２】
判断の結果、その臨界回数以上の場合、ペナルティ機能を行う（Ｓ３１４０）。具体的には、認証失敗状態であることを示す音響メッセージまたはビジュアルメッセージを出力することもでき、または、画像形成装置をターンオンさせたり、印刷不可能状態に切り替えることができる。または、当該ＣＲＵＭチップとメインコントローラとの間の接続を遮断させることもでき、外部のホスト装置やその他のサーバ装置等に認証失敗事実を通知することもできる。
【０２０３】
一方で、臨界回数未満と判断されると（Ｓ３１３０）、メインコントローラはユーザインタラクションを通して、認証を再トライするかをユーザに問い合わせることができる（Ｓ３１５０）。それにより、ユーザが認証再トライを要請すると、メインコントローラは上述の方式で認証を再び行う（Ｓ３１６０）。
【０２０４】
一方、認証に成功すると（Ｓ３１１０）、メインコントローラは当該ＣＲＵＭチップと暗号化通信を行う（Ｓ３１７０）。仮に、メインコントローラは各種データやコマンドを暗号化し、暗号化された通信メッセージを伝送することができ、ＣＲＵＭチップも同様に、暗号化された通信メッセージに応答することができる。暗号化された通信メッセージにも、ＭＡＣが使用されてよい。一例として、メインコントローラは、ＣＲＵＭチップに伝送する通信メッセージを生成する際、データにキーと暗号アルゴリズムを適用して第３ＭＡＣを生成する。その後、通信メッセージに第３ＭＡＣを加えてＣＲＵＭチップに伝送することができる。ＣＲＵＭチップは、伝送された通信メッセージでデータ部分を抽出し、上述のキーと暗号アルゴリズムを適用して第４ＭＡＣを生成する。ＣＲＵＭチップは、伝送された通信メッセージから検出された第３ＭＡＣと自ら生成した第４ＭＡＣとを比較する。比較の結果、相互一致すると適法な通信メッセージと見なし、そのメッセージに対応する動作を行う。一方、不一致の場合、不法な通信メッセージと見なして廃棄することができる。
【０２０５】
以上のように、本発明の多様な実施形態によると、画像形成装置のハードウェア全般に対する第三者の悪意のありハッキングを防止することができる。なお、上述の多様な例では、説明の便宜のために、画像形成装置を基準に説明したが、必ずしも画像形成装置の動作のみに限定されるものではない。すなわち、画像形成装置以外の多様な電子装置でも上述の多様な実施形態で説明した方法が適用されてよい。
【０２０６】
セキュアブート動作をはじめ、以上のような多様な実施形態で説明した各種方法は、非一時的な読み取り可能な媒体に保存されたプログラムによって行われてよい。非一時的な読み取り可能な媒体とは、レジスタやキャッシュ、メモリ等のような短い間データを保存する媒体ではなく、半永久的にデータを保存し、機器によって読み取り（ｒｅａｄｉｎｇ）が可能な媒体を意味する。具体的には、上述の多様なアプリケーションまたはプログラムは、ＣＤやＤＶＤ、ハードディスク、ブルーレイディスク、ＵＳＢ、メモリカード、ＲＯＭ等のような非一時的な読み取り可能な媒体に保存されて提供されてよい。
【０２０７】
具体的には、チップシステム内の第１メモリに保存された初期化データを用いて初期化動作を行う初期化ステップと、初期化動作が行われると、第１メモリに保存された複数の暗号化キーの中の１つを用いて、非揮発性メモリに保存された暗号化されたデータを復号化するステップと、復号化されたデータをチップシステム内の第２メモリに保存するステップと、第２メモリに保存されたデータを用いてブートを行うステップとを順次に行うことができるプログラムコードの保存された非一時的な読み取り可能な媒体が使用されてよい。
【０２０８】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明は以上の実施形態に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的趣旨の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【０２０９】
１００  チップシステム
１１０  第１メモリ
１２０  第２メモリ
１３０  ＣＰＵ
１４０  第３メモリ
１５０  バス
１５５  第１回路部
１５５−１  第１レジスタ
１６０  第２回路部
１６０−１  第２レジスタ
１６５  第３回路部
１６５−１  第３レジスタ
１６５−２  ＡＮＤゲート
１７０  第４回路部
１７５  マルチプレクサ
１８０  回路部
１８０  フラッシュブートローダー
１８５  ＤＤＲコントローラ
２００  外部非揮発性メモリ
３００  メインボード
４００  ＤＤＲメモリ
９１０  認証コード
９２０  セキュアブートローダーヘッダ
９３０  第１ブートローダー
１０００  画像形成装置
１１００  メインコントローラ
１１００  制御部
１２００  保存部
１３００  ユーザインターフェース部
１３１０  第１メモリコントローラ
１３１１  レジスタ
１３２０  第２メモリコントローラ
１３３０  スイッチング部
１３３１  第１マルチプレクサ
１３３２  第２マルチプレクサ
１３３３  第３マルチプレクサ
１４００  コード生成部
１４１０  アドレスデコーダ
１４３０  マルチプレクサ
１５００  電源供給部
１６１０  ＣＲＵＭチップ
１６１１  Ｏ／Ｓメモリ
１６１２  非揮発性メモリ
１６１３  揮発性メモリ
１６１４  ＣＰＵ
１６１５  クリプトユニット
１６１６  テンパー検出器
１６１７  インターフェース部
１７１０  アドレスデコーダ
１７２０  第１生成部
１７４０  インストラクションマルチプレクサ
１７６０  第１マルチプレクサ
１７７０  コードフォーマッタ
１７８０  第２生成部
１８００  データマルチプレクサ
１８１０  マルチプレクサ
２０００  ＮＯＲフラッシュメモリ
２０１０  ピン
２１００  ＮＡＮＤフラッシュメモリ
２１１０  ピン
２２００  ＳＰＩフラッシュメモリ
２２１０  ピン
２３１０  ＮＯＲフラッシュコントローラ
２３２０  非活性端子
２５００  メモリコントローラ
２５１０  信号伝達部
２５２０  キー値保存部
２５３０  比較部
２５４０  メモリアクセスコントローラ
２５５０  信号処理部
２５５２  変換部
２５５３  フィルタ部
２５６０  信号生成部
【図１】
2016510444.tif 000003
【図２】
2016510444.tif 000004
【図３】
2016510444.tif 000005
【図４】
2016510444.tif 000006
【図５】
2016510444.tif 000007
【図６】
2016510444.tif 000008
【図７】
2016510444.tif 000009
【図８】
2016510444.tif 000010
【図９】
2016510444.tif 000011
【図１０】
2016510444.tif 000012
【図１１】
2016510444.tif 000013
【図１２】
2016510444.tif 000014
【図１３】
2016510444.tif 000015
【図１４】
2016510444.tif 000016
【図１５】
2016510444.tif 000017
【図１６】
2016510444.tif 000018
【図１７】
2016510444.tif 000019
【図１８】
2016510444.tif 000020
【図１９】
2016510444.tif 000021
【図２０】
2016510444.tif 000022
【図２１】
2016510444.tif 000023
【図２２】
2016510444.tif 000024
【図２３】
2016510444.tif 000025
【図２４】
2016510444.tif 000026
【図２５】
2016510444.tif 000027
【図２６】
2016510444.tif 000028
【図２７】
2016510444.tif 000029
【図２８】
2016510444.tif 000030
【図２９】
2016510444.tif 000031
【図３０】
2016510444.tif 000032
【図３１】
2016510444.tif 000033
【国際調査報告】
2016510444.tif 000034
2016510444.tif 000035
2016510444.tif 000036
2016510444.tif 000037
2016510444.tif 000038
2016510444.tif 000039
2016510444.tif 000040