(57)【要約】      （修正有）【課題】プログラムの改ざんの検知機能を有し、改ざんの防止のため解析を困難とし、かつ復号化処理の時間を短縮する。【解決手段】ＥＬＦ形式でコンパイルされたＯＳローダ及びカーネルのＥＬＦヘッダ部を暗号化し、暗号化ヘッダを追加した形式でＲＯＭに記録する。起動時には、この暗号化ヘッダ部を読み出し、暗号化ヘッダとして有効かを判断し、有効であれば暗号化部分をＲＡＭに復号化し展開する。非暗号化部分はそのままＲＡＭにコピーする。【選択図】図３
2007328541.tif 000002
【特許請求の範囲】
【請求項１】
起動するとブートプログラムを実行し、前記ブートプログラムが、第１の記憶部に記録されたＯＳローダプログラムを実行し、前記ＯＳローダプログラムがカーネルプログラムを実行し、その後各アプリケーションを順次実行していく起動手段と、
ＯＳローダ及びカーネルはＥＬＦ形式でコンパイルされ、ＥＬＦ形式のＥＬＦヘッダ部が暗号化され、暗号化ヘッダを追加した形式で、第２の記憶部に記録されており、それぞれの暗号化ヘッダ部分を読み出し、暗号化ヘッダとして有効か判定し、暗号化部分をＲＡＭに復号化し展開し、非暗号化部分をそのまま前記ＲＡＭにコピーする復号化手段と、
前記復号化されたＯＳローダ及びカーネルのＥＬＦヘッダ部を解析し、有効なデータか判断し、前記ＯＳローダ及びカーネルを起動させるＯＳローダ・カーネル起動手段と、
を有することを特徴とする電子機器。
【請求項２】
前記ＯＳローダ及び前記カーネルが、ＥＬＦ形式以外のもので、関数情報が格納されている領域が暗号化されることを特徴とする請求項１に記載の電子機器。
【請求項３】
ブートローダと前記ＯＳローダとが一体となったことを特徴とする請求項１又は２に記載の電子機器。
【請求項４】
前記ＯＳローダと前記カーネルとが一体となったことを特徴とする請求項１又は２に記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムをＲＯＭやＨＤＤ等の記憶部から読み出して実行する電子機器に関する。
【背景技術】
【０００２】
電子機器において、ＣＰＵの高機能化、高速化、ＲＯＭやＲＡＭといった記憶部の大容量化に伴い、プログラムの多機能化が進んできている。このような状況下でオープンソースを利用し、ソフトを再利用することで開発効率を上げる試みがなされている。しかしながら、このようなオープンソースの利用は、安定した機能を簡単に利用できる反面、ソースコードの公開が義務付けられていることに伴う不具合がある。例えば、悪意を持った第三者が、公開されたソースコードを改造し作成したプログラムコードを利用して、簡単に電子機器を不正に利用することが可能となってしまう。こうした問題に対して、プログラムコード全体を暗号化することで、改ざんされたコードを検知し、不正に改造されたプログラムの起動を阻止するといった対策等がなされてきた。
【０００３】
これらは、プログラム全体を暗号化しているため、復号に時間がかかってしまうというという問題点がある。
【０００４】
【特許文献１】特開平１０−３３３９０２号公報
【特許文献２】特開２００４−２８０２８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、プログラム領域の関数のエントリを含む一部を暗号化することで、プログラム自体の解析を困難にし、プログラム改ざんを検知可能とし、さらに従来よりも復号化処理にかかる時間が短くなる電子装置を提供することにある。
【課題を解決するための手段】
【０００６】
前記課題を解決するために本発明は、起動するとブートプログラムを実行し、前記ブートプログラムが、ＲＯＭやＨＤＤ等の第１の記憶部に記録されたＯＳローダプログラムを実行し、前記ＯＳローダプログラムがカーネルプログラムを実行し、その後各アプリケーションを順次実行していく起動手段と、ＯＳローダとカーネルはＥＬＦ形式でコンパイルされ、ＥＬＦ形式のＥＬＦヘッダ部が暗号化され、暗号化ヘッダを追加した形式で、ＲＯＭやＨＤＤ等の第２の記憶部に記録されており、それぞれの暗号化ヘッダ部分を読み出し、暗号化ヘッダとして有効か判定し、暗号化部分をＲＡＭに復号化し展開し、非暗号化部分をそのまま前記ＲＡＭにコピーする復号化手段と、前記復号化されたＯＳローダ及びカーネルのＥＬＦヘッダ部を解析し、有効なデータか判断し、前記ＯＳローダ及びカーネルを起動させるＯＳローダ・カーネル起動手段を持つことを特徴とする電子機器等、を提供する。
【発明の効果】
【０００７】
本発明によれば、プログラム領域の関数のエントリを含む一部を暗号化することで、プログラム自体の解析を困難にし、プログラム改ざんを検知可能とし、更に従来よりも復号化処理にかかる時間が短くなる電子機器を提供することが可能になる。
【発明を実施するための最良の形態】
【０００８】
（第１の実施形態）
本発明の実施の形態について以下に図面を用いて説明する。
本発明の実施形態に係る電子機器のプログラムには、大きくブートローダ、ＯＳローダ、カーネルが含まれている。ＯＳローダ、カーネルは、コンパイル後、ＥＬＦヘッダ部分を暗号化し、先頭にサイズが記された暗号化ヘッダが追加されたものである。これらのブートローダ、ＯＳローダ、カーネルはＲＯＭやＨＤＤといった記憶部に記憶されている。ここでは、記憶部としてＲＯＭに記憶されている場合の実施形態について述べる。
【０００９】
図１に本発明の電子機器のブロック図を示す。図中の１０１は起動手段を示し、１０２は復号化手段を示し、１０３はＯＳローダ・カーネル起動手段を示す。起動手段１０１のフローチャートを図４に示し、復号化手段１０２のフローチャートを図５に示し、ＯＳローダ・カーネル起動手段１０３のフローチャートを図６に示す。
【００１０】
図２に本発明の電子機器のシステム構成図を示す。図中の２０１はＣＰＵであり、２０２はＲＡＭであり、２０３は記憶部である。記憶部２０３の中には、ＨＤＤ等の外部記憶装置２０４やＲＯＭ２０５等が含まれている。予め、ブートローダ、ＯＳローダ、カーネルは、記憶部２０３に記憶されているものとする。ＲＡＭ２０２は、例えば、ブートローダが、ＯＳローダ、カーネルを復号化しコピーする際に利用する。
【００１１】
図３に、復号化処理の概念図を示す。図中の３１０はＲＯＭを示し、３２０はＲＡＭを示す。ＲＯＭ３１０には、ブートローダ３１１、ＯＳローダ用暗号化ヘッダ３１２、ＯＳローダ３１３、カーネル用暗号化ヘッダ３１５及びカーネル３１６が記憶されている。ＯＳローダ３１３の一部であるＥＬＦヘッダ部３１４は、予め暗号化されて記憶されている。また、カーネル３１６の一部であるＥＬＦヘッダ部３１７も、予め暗号化されて記憶されている。
【００１２】
ＯＳローダ３１３の暗号化ヘッダ３１２は、図３に示すように、ＯＳローダ３１３の暗号化されているＥＬＦヘッダ３１４の開始アドレス及びサイズを情報３３１として持っている。また、カーネル３１６の暗号化ヘッダ３１５は、図３に示すように、カーネル３１６の暗号化されているＥＬＦヘッダ３１６の開始アドレス及びサイズを情報３３２として持っている。
【００１３】
ＲＡＭ３２０には、起動後、復号化手段１０２により、暗号化ヘッダ３１２の情報３３１から、ＯＳローダ３１３がＯＳローダ３２１としてコピーされ、ＯＳローダ３１３のＥＬＦヘッダ３１４が復号化された上で、ＥＬＦヘッダ３２２としてコピーされる。また、カーネル部についても同様に、暗号化ヘッダ３１５の情報３３２から、カーネル３１６がカーネル３２３としてコピーされ、カーネル３１６のＥＬＦヘッダ３１７が復号化された上で、ＥＬＦヘッダ３２４としてコピーされる。
【００１４】
次に、図４を参照しながら、本発明の実施形態に係る電子機器の起動手段１０１の動作について説明する。
【００１５】
電源投入後、ステップＳ４０１にて、ブートローダが実行される。ブートローダは、ＲＯＭやＨＤＤといった記憶部に記憶されているＯＳローダとカーネルを、復号化手段１０２を用いて実行できる形式に復号してＲＡＭ３２０（２０２）にコピーする。そして、ブートローダはＯＳローダ・カーネル起動手段１０３を用いて、有効なプログラムかを判断する。有効なプログラムと判断された場合は、ブートローダは、ステップＳ４０２にて、ＲＡＭ３２０にコピーしたＯＳローダ３２１を実行する。ＯＳローダは、ブートローダによってＲＡＭ３２０にコピーしたカーネル３２３をロードし、ＣＰＵレジスタの初期化、各デバイスの初期化等を行った後、ステップＳ４０３にて、カーネル３２３を実行する。ステップＳ４０３にて、カーネルは、デバイスの検出やコンフィグレーション等のＯＳの起動処理を行い、ステップＳ４０４の各アプリケーションの実行を順次行う。
【００１６】
次に、図５を参照しながら、復号化手段１０２の動作について説明する。
【００１７】
ステップＳ５０１からステップＳ５０５の処理を、先ず、ＯＳローダに対して行い、続いてカーネルに対して同様に行う。ステップＳ５０１にて、ＲＯＭ等の記憶部に記録されている暗号化ヘッダを読み出し、ステップＳ５０２にて、暗号化ヘッダとして有効であるか判定を行う。有効と判断された場合は、ステップＳ５０３へ進み、無効と判断された場合は、エラーとしてステップＳ５０４へ進み、その後の処理をすべて停止する。
【００１８】
ステップＳ５０３では、ステップＳ５０１で読み出した暗号化ヘッダから、暗号化されている領域についての開始アドレス及びサイズを取得し、暗号化部を復号化しながらＲＡＭ３２０にコピーする。また、ステップＳ５０５では、残りの非暗号化部をそのままＲＡＭ３２０にコピーする。これを、ＯＳローダ３１３及びカーネル３１６の夫々に対して実行する。
【００１９】
次に、図６を参照しながら、ＯＳローダ・カーネル起動手段１０３の動作について説明する。
【００２０】
ステップＳ６０１では、ＲＡＭ３２０にコピーされた復号化復号済みのＯＳローダ３２１のＥＬＦヘッダ３２２を読み出す。ステップＳ６０２の判定処理で、ＥＬＦヘッダ３２２が有効かを、例えば、ＥＬＦの認識コードがあるかどうか等に基づいて判断し、有効であればステップＳ６０３へ進み、処理を継続する。無効であればステップＳ６０４へ進み、エラーとしてその後の処理をすべて停止する。
【００２１】
その後、ステップＳ６０３では、ＲＡＭ３２０にコピーされた復号化復号済みのカーネル３２３のＥＬＦヘッダ３２４を読み出す。ステップＳ６０５の判定処理で、ＥＬＦヘッダ３２４が有効かを、例えば、ＥＬＦの認識コードがあるかどうか等に基づいて判断し、有効であればステップＳ６０６へ進み、処理を継続する。無効であればステップＳ６０７へ進み、エラーとしてその後の処理をすべて停止する。以上の処理で、ＯＳローダ３２１及びカーネル３２３のＥＬＦヘッダ３２２及び３２４が有効であると判断された時は、ステップＳ６０６へ進み、ＯＳローダ３２１を起動し、ステップＳ６０８でカーネル３２３を起動する。
【００２２】
（第２の実施形態）
次に、第２の実施形態について説明する。図７は、ＯＳローダ及びカーネルが、ＥＬＦ形式以外のもので、関数情報が格納されている領域が暗号化される場合における復号化処理を示す概念図である。
【００２３】
図中の７１０はＲＯＭを示し、７２０はＲＡＭを示す。ＲＯＭ７１０には、ブートローダ７１１、ＯＳローダ用暗号化ヘッダ７１２、ＯＳローダ７１３、カーネル用暗号化ヘッダ７１５及びカーネル７１６が記憶されている。ＯＳローダ７１３の一部である関数情報部７１４は、予め暗号化されて記憶されている。また、カーネル７１６の一部である関数情報部７１７も、予め暗号化されて記憶されている。
【００２４】
ＯＳローダ７１３の暗号化ヘッダ７１２は、図７に示すように、ＯＳローダ７１３の暗号化されている関数情報部７１４の開始アドレス及びサイズを情報７３１として持っている。また、カーネル７１６の暗号化ヘッダ７１５は、図７に示すように、カーネル７１６の暗号化されている関数情報部７１７の開始アドレス及びサイズを情報７３２として持っている。
【００２５】
ＲＡＭ７２０には、起動後、復号化手段１０２により、暗号化ヘッダ７１２の情報７３１から、ＯＳローダ７１３がＯＳローダ７２１としてコピーされ、ＯＳローダ７１３の関数情報部７１４が復号化された上で、関数情報部７２２としてコピーされる。また、カーネル部についても同様に、暗号化ヘッダ７１５の情報７３２から、カーネル７１６がカーネル７２３としてコピーされ、カーネル７１６の関数情報部７１７が復号化された上で、関数情報部７２４としてコピーされる。
【００２６】
（第３の実施形態）
次に、第３の実施形態について説明する。図８は、ブートローダとＯＳローダとが一体となった場合における復号化処理を示す概念図である。
【００２７】
図中の８１０はＲＯＭを示し、８２０はＲＡＭを示す。ＲＯＭ８１０には、ブートローダ８１１、ＯＳローダ８１２、カーネル用暗号化ヘッダ８１３及びカーネル８１４が記憶されている。なお、ブートローダ８１１及びＯＳローダ８１２は一体化されて記憶されている。一方、カーネル８１４の一部であるＥＬＦヘッダ又は関数情報部８１５は、予め暗号化されて記憶されている。
【００２８】
カーネルの暗号化ヘッダ８１３は、図８に示すように、カーネル８１４の暗号化されているＥＬＦヘッダ又は関数情報部８１５の開始アドレス及びサイズを情報８３１として持っている。
【００２９】
ＲＡＭ８２０には、起動後、復号化手段１０２により、暗号化ヘッダ８１３の情報８３１から、カーネル８１４がカーネル８２１としてコピーされる。また、カーネル８１４のＥＬＦヘッダ又は関数情報部８１５が復号化された上で、ＥＬＦヘッダ又は関数情報部８２２としてコピーされる。
【００３０】
（第４の実施形態）
次に、第４の実施形態について説明する。図９は、ＯＳローダとカーネルとが一体となった場合における復号化処理を示す概念図である。
【００３１】
図中の９１０はＲＯＭを、９２０はＲＡＭを示す。ＲＯＭ９１０には、ブートローダ９１１、ＯＳローダ及びカーネル用の暗号化ヘッダ９１２、並びに一体化されたＯＳローダ及びカーネル９１３が記憶されている。また、ＯＳローダ及びカーネル９１３の一部であるＥＬＦヘッダ又は関数情報部９１４は、予め暗号化されて記憶されている。
【００３２】
暗号化ヘッダ９１２は、図９に示すように、暗号化されているＥＬＦヘッダ又は関数情報部９１４の開始アドレス及びサイズを情報９３１として持っている。
【００３３】
ＲＡＭ９２０には、起動後、復号化手段１０２により、暗号化ヘッダ９１２の情報９３１から、ＯＳローダ及びカーネル９１３がＯＳローダ及びカーネル９２１としてコピーされる。また、ＥＬＦヘッダ又は関数情報部９１４が復号化された上で、ＥＬＦヘッダ又は関数情報部９２２としてコピーされる。
【００３４】
なお、本発明の実施形態は、例えばコンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びプログラムプロダクトは、本発明の範疇に含まれる。
【図面の簡単な説明】
【００３５】
【図１】電子機器のブロック図である。
【図２】電子機器のシステム構成図である。
【図３】復号化処理の概念図である。
【図４】起動手段のフローチャートを示す図である。
【図５】復号化手段のフローチャートを示す図である。
【図６】ＯＳローダ・カーネル起動手段のフローチャートを示す図である。
【図７】ＯＳローダとカーネルが、ＥＬＦ形式以外のもので、関数情報が格納されている領域が暗号化される場合における復号化処理の概念図である。
【図８】ブートローダとＯＳローダが一体となった場合における復号化処理の概念図である。
【図９】ＯＳローダとカーネルが一体となった場合における復号化処理の概念図である。
【符号の説明】
【００３６】
３１０：ＲＯＭ
３１１：ブートローダ
３１２：暗号化ヘッダ
３１３：ＯＳローダ
３１４：ＥＬＦヘッダ
３１５：暗号化ヘッダ
３１６：カーネル
３１７：ＥＬＦヘッダ
３２０：ＲＡＭ
３２１：ＯＳローダ
３２２：ＥＬＦヘッダ
３２３：カーネル
３２４：ＥＬＦヘッダ
３３１：暗号化ヘッダ
３３２：暗号化ヘッダ
【図１】
2007328541.tif 000003
【図２】
2007328541.tif 000004
【図３】
2007328541.tif 000005
【図４】
2007328541.tif 000006
【図５】
2007328541.tif 000007
【図６】
2007328541.tif 000008
【図７】
2007328541.tif 000009
【図８】
2007328541.tif 000010
【図９】
2007328541.tif 000011