(57)【特許請求の範囲】
【請求項１】
ブートコードがローディングされる第１領域と、コードイメージが保存された第２領域と、前記ブートコード、前記コードイメージが変更された場合に正当変更か否かを検証するための一方向関数である第１関数、パラメータ、及び前記パラメータを前記第１関数に適用した結果が保存された第３領域とを有する保存装置でのコードイメージブーティング方法において、
第３領域に保存されたブートコードを読取って第１領域に保存する段階と、
前記第２領域に保存されたコードイメージが初期に設けられたコードイメージではない更新されたコードイメージである場合、
初期に設けられた初期コードイメージについての情報が保存された第３領域から前記第１関数、前記第１関数に第１パラメータを適用した第１結果及び前記更新されたコードイメージについての情報が保存された前記第３領域から前記第１関数に第２パラメータを適用した第２結果を抽出する段階と、
前記第２結果をパラメータとして前記第１関数に適用した結果と前記第１結果とを比べて同一である場合、前記更新されたコードイメージを実行する段階と、を含むことを特徴とするコードイメージブーティング方法。
【請求項２】
前記第３領域は、一度データが保存されれば、変更または修正が不可能なメモリ素子で構成されたことを特徴とする請求項１に記載のコードイメージブーティング方法。
【請求項３】
前記第１関数は、入力値が異なる場合、出力値が異なり、前記出力値から入力値を類推しにくい特性を有する関数であることを特徴とする請求項１に記載のコードイメージブーティング方法。
【請求項４】
ブートコードがローディングされて動作される第１領域と、
システムを動作させるコードイメージが保存されており、読み書き可能なメモリ素子で構成された第２領域及び、
前記ブートコードが保存されており、前記コードイメージが変更された場合に正当変更か否かを検証するための一方向関数である第１関数、パラメータ、及び前記パラメータを前記第１関数に適用した結果が保存された第３領域を含む保存部と、
前記保存部のブートコードを読取って第１領域にローディングし、前記コードイメージが初期に設けられたコードイメージではない更新されたコードイメージである場合、初期に設けられた初期コードイメージについての情報が保存された第３領域から前記第１関数及び前記第１関数に第１パラメータを適用した第１結果を抽出し、
前記更新されたコードイメージについての情報が保存された前記第３領域から前記第１関数に第２パラメータを適用した第２結果を抽出して、
前記第２結果をパラメータとして前記第１関数に適用した結果と前記第１結果とを比べて同一である場合、前記更新されたコードイメージを実行する制御部と、を含むことを特徴とする保存装置。
【請求項５】
前記第３領域は、一度データが保存されれば、変更または修正が不可能なメモリ素子で構成されたことを特徴とする請求項４に記載の保存装置。
【請求項６】
前記第１関数は、入力値が異なる場合、出力値が異なり、前記出力値から入力値を類推しにくい特性を有する関数であることを特徴とする請求項４に記載の保存装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムのブーティングに係り、より詳細には、コードイメージを安全に更新してブーティングする方法及び装置に関する。
【背景技術】
【０００２】
一般的に、家電機器、通信機器、セットトップボックスなどのエンベッデッド型システムでは、データを保存して処理するための記録媒体として不揮発性保存装置が多く使われている。また、エンベッデッド型システムは不揮発性保存装置に運営体制（オペレーションシステム；ＯＳ）を保存し、保存された運営体制によってブーティングされて動作を実行する。このような運営体制は主に不揮発性保存装置にイメージの形態で保存される。
【０００３】
ホストが保安性を提供しようとすれば、運営体制のブーティング時からベンダーが製品を出市する時、不揮発性保存装置に記録しておいた運営体制イメージが変更なしにブーティングされるということが保証されなければならない。例えば、携帯電話にＯＳイメージと応用プログラムが保存されている場合、携帯電話に電源がついてＯＳイメージがローディングされる時、攻撃者がＯＳイメージの一部分を変更して実行ロジッグが変更される場合、ＯＳイメージ内にあった保安モジュールは保安性が崩れることがある。したがって、このような場合、ＯＳイメージをＲＡＭでコピーした後、制御を越す前にＯＳイメージの無欠性が保存されているか確認し、無欠性が崩れない場合にのみ制御を越すことで攻撃者がＯＳイメージを変更できないように事前遮断しなければならない。
【０００４】
現在多いエンベッデッドシステムベンダーがＯＳイメージの無欠性を保存する技法を必要としており、また提供しているが、これは無欠性を検査するアルゴリズムを秘密で維持することに基盤するかＣＰＵ内にあるキーがＴＲＭ領域に保護されなければならないなど完全ではないか別途の回路を追加しなければならない。また、保存装置の特性によってこれを支援する方法が変わりうる。
【０００５】
図１は、従来の技術によってエンベッデッド型システムの安全なブーティングを可能にする保安ブーティング装置が図示された図面である。
【０００６】
運営体制及び運営体制に対応する固有のチェック値を有するアルゴリズムのチェック値を保存する運営体制保存部１０と、ブーティングの時、運営体制保存部１０に保存された運営体制がローディングされるメモリ部２０と、チェック値保存時に使われたアルゴリズムを介してローディングされた運営体制によるチェック値を算出し、保存されたチェック値と算出されたチェック値とを比べてローディングされた運営体制の無欠性を判断する制御部３０を含む。
【０００７】
このとき、運営体制保存部１０は、保存された運営体制及びチェック値が印加された電源が除去される場合にも維持されるように不揮発性保存領域からなる。
【０００８】
また、運営体制を介したブーティングがなされる場合、ブーティングプロセスについての情報を含むブーティングコードを保存するブーティングコード保存部４０と、運営体制保存部１０に保存される運営体制及びチェック値を暗号化し、暗号化された運営体制及びチェック値を復号化するキーを保存するキー保存部５０をさらに含む。このとき、ブーティングコード保存部４０は、読み取り専用に設定されているために外部からのブーティングコードの変更ができない。このとき、チェック値算出時に使われるアルゴリズムとしては運営体制が１ビットでも変更される場合、異なるチェック値を有するようになり、同じチェック値を有さない条件に当たるすべてのアルゴリズムが使われる。
【０００９】
また、キー保存部５０は、一般的に偽変造防止技術であるＴＲＭ（Ｔａｍｐｅｒ  Ｒｅｓｉｓｔａｎｃｅ  Ｍｏｄｕｌｅ）などのような領域からなり外部の接近からキー保存部５０に保存されたキーを保護する。これは、キー保存部５０に保存されたキーが外部に露出される場合、暗号化されて運営体制保存部１０に保存された運営体制及びチェック値が変更されることができるためである。また、キー保存部５０は、全般的なブーティングプロセスを制御する制御部１３０と内蔵されるか別途に構成される。
【００１０】
ところが、エンベッデッドシステムが出市された後に運営体制が持続的にアップグレードされる場合が多い。特に、携帯電話、ＭＰ３プレーヤー、ＰＭＰのような製品は、その特性の上、早い環境適応が必要である。したがって、一度設けられた運営体制が以後正当に変更されるかアップグレードされなければならない必要性がある。ところが、図１のようにキーを保存すれば、不法的な外部の接近による運営体制の変更は阻むことができるが、正当な権利を有したベンダー側で運営体制を変更する場合まで阻む問題がある。しかし、正当な権利者の変更を許可する場合、不法的な運営体制の変更までも可能になる問題点があるところ、これを解決する必要がある。
【００１１】
特許文献１には二つのフラッシュメモリを利用し相互認証過程を経てブーティングを行うようにすることによって、ハッキングなどから保護することができるようにした方法を開示しています。しかし、これはＯＳが設置された後の保安に対しては開示されていないため、ＯＳのブート時だけでなく、ＯＳのブート後にも保安機能を提供することができる発明の登場が要求されます。
【特許文献１】韓国公開特許第２００４−０６２７１８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、前記問題点を改善するために案出されたものであって、本発明は、正当なユーザーの運営体制に対する変更を保証しながら不法的なユーザーの運営体制の変更を遮断する方法及び装置を提供するところにその目的がある。
【００１３】
本発明のさらなる目的は、正当なユーザーの運営体制に対する変更を保証して保存装置を含むことである。
【００１４】
本発明は、前述した目的に制限されず、言及されなかったさらなる目的は、下記から当業者に明確に理解されるであろう。
【課題を解決するための手段】
【００１５】
本発明の一実施形態によるコードイメージ更新方法は、ブートコードがローディングされる第１領域と第１コードイメージが保存された第２領域及び前記ブートコードを保存して前記第１コードイメージを検証するための第１チェックデータが保存された第３領域からなる運営体制を保存した保存媒体でのコードイメージ更新方法において、前記第２領域に第２コードイメージを保存する段階、前記第１チェックデータから保安一方向関数についての情報を抽出する段階、及び前記抽出した保安一方向関数の情報を用いて前記第２コードイメージを検証するための第２チェックデータを生成して前記第３領域に保存する段階を含み、前記第２チェックデータを前記保安一方向関数のパラメータにする場合、前記第１チェックデータが生成される。
【００１６】
本発明の一実施形態によるコードイメージブーティング方法は、ブートコードがローディングされる第１領域とコードイメージが保存された第２領域及び前記ブートコードを保存して前記コードイメージを検証するためのチェックデータが保存された第３領域からなる運営体制を保存した保存媒体でのコードイメージブーティング方法において、第３領域に保存されたブートコードを読取って第１領域に保存する段階、前記第２領域に保存されたコードイメージが初期に設けられたコードイメージではない更新されたコードイメージである場合、初期に設けられた初期コードイメージについての情報が保存された第３領域で正当変更如何を確認する第１関数及び前記第１関数に第１パラメータを適用した第１結果、前記更新されたコードイメージについての情報が保存された前記第３領域で前記第１関数に第２パラメータを適用した第２結果を抽出する段階、及び前記第２結果をパラメータとして前記第１関数を適用した結果と前記第１結果とを比べて同一である場合、前記コードイメージを実行する段階を含む。
【００１７】
本発明の一実施形態による保存装置は、ブートコードがローディングされて動作される第１領域とシステムを動作させるコードイメージが保存されており、読み書き可能なメモリ素子で構成された第２領域及び前記ブートコードが保存されており、前記コードイメージを検証するシグネチャ情報が保存された第３領域を含む保存部、及び前記保存部のブートコードを読取って第１領域にローディングし、前記コードイメージが初期に設けられたコードイメージではない更新されたコードイメージである場合、初期に設けられた初期コードイメージについての情報が保存された第３領域で正当変更如何を確認する第１関数及び前記第１関数に第１パラメータを適用した第１結果を抽出し、前記更新されたコードイメージについての情報が保存された前記第３領域で前記第１関数に第２パラメータを適用した第２結果を抽出して、前記第２結果をパラメータとして前記第１関数を適用した結果と前記第１結果とを比べて同一である場合、前記コードイメージを実行する制御部を含む。
【００１８】
その他の実施形態の具体的な事項は、詳細な説明及び図面に含まれている。
【発明の効果】
【００１９】
本発明を具現することで一度運営体制のコードイメージを不揮発性保存領域に記録してＯＴＰ領域にこれと関連した検査情報を記録した後に正直なユーザー（例えば、開発者）がＯＳイメージを反復的に安全に更新できる。
【００２０】
本発明を具現することで一応製品化が完了して出市された製品に対して後でコードイメージを更新する必要がある時、安全に作業を実行できる。
【発明を実施するための最良の形態】
【００２１】
本発明の利点及び特徴、そしてそれらの達成方法は、添付図面と共に詳細に後述されている実施形態を参照すれば、明確になる。しかし、本発明は、以下で開示される実施形態に限定されず、相異なる多様な形態で具現でき、単に本実施形態は本発明の開示を完全にし、当業者に発明の範ちゅうを完全に知らせるために提供され、本発明は特許請求の範ちゅうにより定義されるだけである。明細書全体にわたって同一参照符号は、同一構成要素を指称する。
【００２２】
以下、本発明の実施形態によってコードイメージを安全に更新してブーティングする方法及び装置を説明するためのブロック図または処理フローチャートを参考にして、本発明について説明する。このとき、処理フローチャートの各ブロックとフローチャートとの組合わせは、コンピュータプログラムインストラクションによって行われるということを理解できるであろう。これらコンピュータプログラムインストラクションは、汎用コンピュータ、特殊用コンピュータまたはその他のプログラム可能なデータプロセッシング装備のプロセッサに搭載されることができるので、コンピュータまたはその他のプログラム可能なデータプロセッシング装備のプロセッサを通じて行われるそのインストラクションがフローチャートブロックで説明された機能を実行する手段を生成する。
【００２３】
各ブロックは、特定された論理的機能を実行するための一つ以上の実行可能なインストラクションを含むモジュール、セグメントまたはコードの一部を表すことができる。また、いくつかの代替実行例では、ブロックで言及された機能が順序を外れて発生することも可能であるということに注目しなければならない。例えば、相次いで図示されている二つのブロックは、実質的に同時に行われることも可能であり、またはそのブロックが時々該当する機能によって逆順に行われることも可能である。
【００２４】
図２は、本明細書の技術を適用するようになる保存装置で運営体制が駆動される方式を示す図面である。
【００２５】
図２の保存装置は、携帯電話、デジタルカメラ、ノートブック、ＰＤＡ、ＰＭＰ、ＭＰ３プレーヤーなどに装着されるもので前記装置を動作させる運営体制イメージが内蔵されている。
【００２６】
コードイメージを不揮発性で保存する不揮発性保存装置１００と不揮発性保存装置１００にあるコードイメージの実行に必要な揮発性保存装置２００、そして、コードを実行する中央処理装置（ＣＰＵ）４００を利用する。以下、本明細書で不揮発性でコードイメージを保存する保存装置の一実施形態でフラッシュメモリを中心に説明する。また、安全な更新を具現するために保安一方向関数（セキュアワンウェイファンクション）を利用する。
【００２７】
不揮発性保存装置１００であるフラッシュメモリは、システムに電源が供給された時、自動的にメモリアドレス空間の特定領域にマッピングされるＲＡＭ領域である１１０と、不揮発性でデータを書込み／消去を反復できるＲ／Ｗ（リード／ライト）領域である１２０、１回のみ書き込みが可能であり、１回書き込みが完了すると読み取りのみ可能なＯＴＰ（Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ）領域である１３０で構成されている。
【００２８】
１１０、１２０、１３０は、一つのメモリ装置として具現されることもでき、このような特性を有する３個のメモリ装置を組み合わせて使うこともできる。すなわち、１２０と１３０は、フラッシュメモリ素子として、１１０はＲＡＭ素子として結合できる。
【００２９】
電源が供給されれば、１３０領域の特定位置に保存されているブートコード１３１が自動的にＲＡＭ領域である１１０にコピーされて、１１０領域は読み取り及び実行のみ可能な領域に転換され、ＣＰＵ４００は１１０領域にある機械語命令を実行する。
【００３０】
ブートコード（Ｂｏｏｔ  Ｃｏｄｅ、またはＢｏｏｔ  Ｌｏａｄｅｒ）１３１は、１回のみ記録可能な領域である１３０に記録し、運営体制イメージを含むコードイメージは、読み取りと書き込みとが可能な１２０領域に記録し、コードイメージの変更如何を検討するシグネチャ１３２値を計算して１回のみ書き込みが可能であり、変更不可能な１３０領域に記録する。
【００３１】
システムに電源が印加されれば、ＯＴＰ領域１３０にあるブートコード１３１が自動的にＲＡＭ領域１１０にコピーされる。
【００３２】
システムのメモリビュー３００は、１１０をブーティング装置で使うようにマッピングされて、ブートコードが実行され、ブートコードがあまり大きくて１１０装置にすべてコピーされることができない場合、１１０にコピーされたブートコードが残りのブートコード部分を揮発性保存装置２００にコピーする。
【００３３】
ブートコードがＲ／Ｗ領域である１２０にあるコードイメージを揮発性保存装置２００にコピーする。１２０領域ですぐ実行しうる装置である場合には、揮発性保存装置２００を使わないこともある。
【００３４】
コードイメージは、Ｒ／Ｗ領域に保存されるので変更される可能性がある。したがって、コードイメージに対するシグネチャ値を計算してＯＴＰ領域１３０に保存されているシグネチャ値１３２と比べて一致する場合にのみブーティングを進行し続け、一致していない場合、ブーティングを中断することでコードイメージが変更される場合、システムが動作しないようにする。
【００３５】
シグネチャ値とは、保安一方向関数（セキュアワンウェイファンクション）であって、結果値は計算しやすいが、結果値から入力値が分かることができず、同じ結果値を有する相異なる２個の入力値を捜すことが不可能であるかほとんど不可能な関数であって、入力が少しでも異なると、結果値も異なる可能性が非常に高い関数を意味する。
【００３６】
図２の構成を通じてコードイメージを不法的なユーザーが変更することを阻んでコードイメージに対する保安を高めうる。図３と図４は、コードイメージを正当なユーザーが変更しようとする場合、保安性を向上させるための不揮発性保存装置の構成を示す。
【００３７】
説明に先立って保安一方向関数に対して簡略に見れば、ｙ＝ｈ（ｘ）形態の関数と仮定すれば、ｘ値が分かる場合、ｙ値は計算しやすいがｙ値が分かって、そこに対応するｘ値は分かりにくく、ｙ＝ｈ（ｘ）＝ｈ（ｘ’）である相異なるｘとｘ’とを捜すことも難しいと仮定する。
【００３８】
図３は、第１コードイメージが保存された不揮発性保存装置と揮発性保存装置及びＣＰＵの関係を示す例示図である。図３で不揮発性保存装置１００に第１コードイメージが保存されており、これに対するシグネチャ情報と保安と関連された情報を含む第１シグネチャ領域１３４がある。
【００３９】
不揮発性保存装置１００に初めてコードイメージとブートコードとを記録する時には、以下の内容を記録する。ユーザーまたは製造者、販売者のようなコードイメージを設けて変更する権原のある者はＳを秘密で維持する。Ｓは正当な権限を有した者のみが有することができる値であって、保安を維持するキー値になりうる。
【００４０】
保安一方向関数の条件を満たすｈ（）という関数を次のように定義できる。ｈ＿０＝ｈ（Ｓ）、ｈ＿ｎ＋１（Ｓ）＝ｈ（ｈ＿ｎ（Ｓ））とする時、ユーザーは適当に大きい値Ｎ（例えば、１００以上）に対してｈ＿Ｎを計算する。例えば、（式１）のように求められうる。
（式１）
ｈ＿３（Ｓ）＝ｈ（ｈ＿２（Ｓ））＝ｈ（ｈ（ｈ＿１（Ｓ）））
＝ｈ（ｈ（ｈ（ｈ＿０）（Ｓ）））
＝ｈ（ｈ（ｈ（ｈ（Ｓ））））
ユーザーは、第１コードイメージに対するシグネチャ値を計算するが、この値をＳｉｇ＿１と言う。Ｓｉｇ＿１値を計算するためにはｈ（）関数を使うことができ、他の保安一方向関数を使うこともできる。
【００４１】
不揮発性保存装置１００のＯＴＰ領域１３０の一番前にブートコード１３３を記録し、第１コードイメージのためのシグネチャ値であるＳｉｇ＿１を第１シグネチャ領域１３０に記録する。Ｓｉｇ＿１外にも第１シグネチャ領域１３４に入る内容では、ｈ（）関数の実行イメージ、ｈ＿Ｎ、Ｎ、Ｒ／Ｗ領域１２０にあるコードイメージの位置及び大きさ情報も記録する。
【００４２】
ｈ＿Ｎとは、ｈ＿Ｎ（Ｓ）の実行値を意味する。ｈ＿Ｎ（Ｓ）は、数１によってｈ（ｈ＿Ｎ−１（Ｓ））で求められうる。
【００４３】
このように第１コードイメージを設けて、そのためのシグネチャ及び追後正当なユーザーのコードイメージ変更を可能にする情報を第１シグネチャ領域１３４に記録した以後にコードがアップグレードされるか新しい機能が追加されれば、コードイメージを修正する過程が必要である。または新しいコードイメージに更新できる。
【００４４】
図４は、本発明の一実施形態による変更されたコードイメージを正当なユーザーが不揮発性保存装置に保存した例を示す図面である。
【００４５】
コードイメージを変更しようとすれば、まず第１シグネチャ領域１３４に保存されたＮ値を読取る。そして、図３で言及したＳ（正当なユーザーが秘密で維持するキー値）をｈ＿Ｎ−１（Ｓ）で計算する。そして、変更されたコードイメージ（第２コードイメージ）をＲ／Ｗ領域１２０に保存して第２コードイメージの有效性を検証するＳｉｇ＿２値を計算する。そして、第２シグネチャ領域１３５に前記の情報を保存する。第１シグネチャ１３４に保存されたｈ＿Ｎ（Ｓ）の結果とｈ（）関数及びＮについての情報が保存されており、正当なユーザーならＳがどんな値であるかが分かるので、ｈ＿Ｎ−１（Ｓ）を求められうる。したがって、正当なユーザーは変更されるか追加される第２コードイメージをＲ／Ｗ領域１２０に保存し、第２コードイメージの有效性を検証するＳｉｇ＿２、そして、ｈ＿Ｎ−１（Ｓ）結果とｈ（）関数、Ｎ−１の値を第２シグネチャ領域１３５に保存する。追後ブーティングの時には、ｈ＿Ｎ−１（Ｓ）の結果を通じて正当なユーザーによって追加されたコードイメージであるかを確認できる。これについての検証過程は、図５で説明する。
【００４６】
図５は、本発明の一実施形態による変更されたコードイメージを検証する過程を示す図面である。図５でＮは１００に設定した。システムをブーティングする場合、第１シグネチャ領域１３４で関数ｈ（）についての情報とｈ＿１００（Ｓ）値、そして、Ｎの値である１００を得る。そして、第２シグネチャ領域１３５からｈ＿９９（Ｓ）の値と９９、第２コードイメージについての情報及びＳｉｇ＿２値を読取る。第２コードイメージについての情報を通じて第２コードイメージが保存された位置及び大きさを読取る。そして、第２コードイメージに対してＳｉｇ＿２を通じて検証作業を実行する。第２コードイメージに所定の検証アルゴリズムを適用してＳｉｇ＿２値と比べた場合、第２コードイメージが正当なユーザーによって更新されたかを確認するためにｈ＿９９（Ｓ）値をｈ（）関数の入力値にしてｈ＿１００（Ｓ）の値を求める。ｈ＿９９（Ｓ）の値がＫとし、このＫ値が第２シグネチャ領域１３５に保存されているのでｈ（Ｋ）を求められうる。
ｈ（Ｋ）はｈ（ｈ＿９９（Ｓ））であり、これはｈ＿１００（Ｓ）なので第１シグネチャ領域１３４に保存された値と比べることができる。Ｓ値は、正当なユーザーが有しているのでｈ＿９９（Ｓ）値は正当なユーザーのみが算出できる。したがって、第２コードイメージが正当なユーザーによって更新されたことを確認できる。もし、第２シグネチャ領域に正当なユーザーではない者がＳ値ではないＤという他の値でｈ＿９９（Ｄ）を記録したら、ブーティング過程でｈ＿１００（Ｓ）値とｈ＿１００（Ｄ）値とが相異なることを確認してブーティングを中止できる。
【００４７】
図６は、本発明の一実施形態による正当なユーザーがコードイメージを修正した場合と許諾されていないユーザーがコードイメージを修正した場合とを比べる図面である。製品に初期に装着されたコードイメージは正当なユーザーによって保存されて以後正当なユーザーがコードイメージを更新する場合（ａ）と正当なユーザーではない者によってコードイメージが更新された場合（ｂ）とを示す。
【００４８】
（ａ）で正当なユーザーは、新しいコードイメージを保存する場合にコードイメージに対する検証を実行するＳｉｇ＿２、そして、Ｓ値と第１シグネチャ領域１３６の１００という数字に基づいてｈ＿９９（Ｓ）を求められうる。
【００４９】
一方、（ｂ）で不法的なユーザーは、Ｓｉｇ＿２値を求めた場合にもＳ値が分かることができないので任意の値Ｄに対してｈ＿９９（Ｄ）を求める。しかし、ブーティング過程でｈ＿９９（Ｄ）の値にｈ関数を再び適用してｈ（ｈ＿９９（Ｄ））を実行する場合にｈ＿１００（Ｄ）を求められうるが、これはｈ＿１００（Ｓ）と異なるのでブーティングが中断される。
【００５０】
したがって、不法的なユーザーがコードを変更する場合に、Ｓｉｇ＿２によって検証されてＳｉｇ＿２を生成してもｈ＿９９（Ｓ）の値を計算することができないのでウイルス、ハッキングなどによるコードイメージの不法的な変更を阻むことができる。
【００５１】
前述した過程で、ＮとＮ−１、Ｎ−２のように逆順で保安一方向関数を適用した結果を得ているが、これは一実施形態で必ずしも前記順序による必要はない。例えば、Ｎ、Ｎ−２、Ｎ−４の方式で保安一方向関数を適用することができ、以外にも保安一方向関数を多様に適用しうる。
【００５２】
本明細書では、正当なユーザーによってコードイメージの変更がなされたかを検証するために、変更されたコードに対するチェック値で変更前のコードに対するチェック値が導出可能であるかを見ることである。そして、導出可能な場合には、正当なユーザーによってコードイメージが変更されたものと見て更新されたコードイメージを実行する。
【００５３】
図７は、本発明の一実施形態による更新されたコードイメージが正当なユーザーによって更新されたかを確認して実行する過程を示す図面である。
【００５４】
ＯＴＰ領域１３０に保存されたブートコードをローディングする（Ｓ５１０）。ブートコードに羅列された命令語によるコードイメージの実行前に、コードイメージが有效であるかを検査する（Ｓ５２０）。コードイメージが変形されたか否かを調査するためにコードイメージの保存時にコードイメージに対するハッシュ関数、保安一方向関数を適用した結果値をＯＴＰ領域１３０に保存して追後コードイメージが変形されたか否かを関数を適用してチェックできる。前述したＳｉｇ＿１、Ｓｉｇ＿２値を通じてコードイメージの有效性を検査できる。コードイメージが有效でなければ（Ｓ５３０）、コードイメージを実行せずに終了する。
【００５５】
コードイメージが有效であれば（Ｓ５４０）、コードイメージが更新されたかをチェックする。コードイメージが更新されなかったら、そのコードイメージをそのまま実行する。
【００５６】
しかし、コードイメージが更新されたら、該当更新が正当なユーザーによる更新であるか確認する。そのためにＳ５５２ないしＳ５５６過程を実行する。先に初期コードイメージについての情報、例えば、第１シグネチャで保安一方向関数と関数を実行した第１結果及びパラメータ情報を抽出する（Ｓ５５２）。図６で、ｈ（）が保安一方向関数になって関数を実行した第１結果がｈ＿１００（Ｓ）、そして、パラメータ情報は１００になる。Ｓ値に対しては情報を有する必要がない。これはＳをパラメータで実行された結果が保存されているためである。次に更新されたコードイメージについての情報で関数を実行した第２結果及びパラメータ情報を抽出する（Ｓ５５４）。第２シグネチャが更新されたコードイメージについての情報になりうる。ここで、関数を実行した第２結果は、図６の（ａ）でｈ＿９９（Ｓ）の実行結果が一実施形態であり、パラメータ情報は９９になる。更新されたコードイメージに対する第２シグネチャでパラメータが９９であり、元々のコードイメージに対する第１シグネチャでパラメータは１００なので、ｈ＿９９（Ｓ）をパラメータとしてｈ（）関数をもう一度適用すれば、第１シグネチャのｈ＿１００（Ｓ）の結果が出て、これを比べて正当に更新されたか否かが分かる。すなわち、Ｓ５５６段階のように保安一方向関数に前記第２結果（ｈ＿９９（Ｓ））をパラメータとして実行した結果と第１結果（ｈ＿１００（Ｓ））とを比べる。そして、二つの結果が同一であれば（Ｓ５６０）、更新されたコードイメージが正当なユーザーによって更新されたのでコードイメージを実行する（Ｓ５７０）。同一でない場合には、更新されたコードイメージを実行せずに終了する。前記の説明例でＳ５５２、Ｓ５５４、Ｓ５５６検査をＳ５２０より先に実行することもできる。
【００５７】
当業者ならば本発明がその技術的思想や必須的な特徴を変更せず、他の具体的な形態に実施されるということを理解できるであろう。したがって、前述した実施形態は、あらゆる面で例示的なものであり、限定的ではないということを理解せねばならない。本発明の範囲は、前記詳細な説明よりは後述する特許請求の範囲によって表わされて、特許請求の範囲の意味及び範囲そしてその均等概念から導出されるすべての変更または変形された形態が本発明の範囲に含まれるものと解釈されなければならない．
【産業上の利用可能性】
【００５８】
本発明は、コードイメージを安全に更新してブーティングする方法及び装置に関連する技術分野に適用されうる。
【図面の簡単な説明】
【００５９】
【図１】従来の技術によってエンベッデッド型システムの安全なブーディングを可能にする保安ブーディング装置が図示された図である。
【図２】本明細書の技術を適用するようになる保存装置で運営体制が駆動される方式を示す図である。
【図３】第１コードイメージが保存された不揮発性保存装置と揮発性保存装置及びＣＰＵの関係を示す例示図である。
【図４】本発明の一実施形態による変更されたコードイメージを正当なユーザーが不揮発性保存装置に保存した例を示す図である。
【図５】本発明の一実施形態による変更されたコードイメージを検証する過程を示す図である。
【図６】本発明の一実施形態による正当なユーザーがコードイメージを修正した場合と許諾されていないユーザーがコードイメージを修正した場合とを比べる図である。
【図７】本発明の一実施形態による更新されたコードイメージが正当なユーザーによって更新されたかを確認して実行する過程を示す図である。
【符号の説明】
【００６０】
１００      保存部
１１０      ＲＡＭ領域
１２０      Ｒ／Ｗ領域
１３０      ＯＴＰ領域
２００      ＲＡＭ
４００      制御部
【図１】
0004503576.tif 000002
【図２】
0004503576.tif 000003
【図３】
0004503576.tif 000004
【図４】
0004503576.tif 000005
【図５】
0004503576.tif 000006
【図６】
0004503576.tif 000007
【図７】
0004503576.tif 000008