(57)【要約】【課題】低コストにセキュリティ強度を上げる。【解決手段】コンピュータ１１０をＰＣ周辺機器１００により認証する。この際、所定のコンピュータを用いて、コンピュータ１１０を認証するためのコンピュータ１１０に固有のＰＣ環境情報１１２を取得するＰＣ環境取得プログラム１１１を作成する。この際、プログラム実行用の本処理部に冗長部を含めたエントリと、ヘッダ情報を作成し、本処理部から冗長部のエントリを削除したＰＣ環境取得プログラム１１１と、削除した冗長部のエントリに対応する冗長エントリ情報とを作成してＰＣ周辺機器１００の記憶部１０７に格納させる。ＰＣ周辺機器１００により、コンピュータ１１０への接続後、ＰＣ環境取得プログラム１１１を送信する際に、冗長エントリ情報に基づいて、本処理部のエントリに冗長エントリをランダムに挿入して送信する。【選択図】図４
2014178906.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを周辺コンピュータにより認証する認証方法において、
所定のコンピュータを用いて、前記コンピュータを認証するための前記コンピュータに固有の環境情報を取得するＰＣ環境取得プログラムの作成時に、プログラム実行用の本処理部に冗長部を含めたエントリと、ヘッダ情報を作成し、
前記本処理部から前記冗長部のエントリを削除した前記ＰＣ環境取得プログラムと、当該削除した冗長部のエントリに対応する冗長エントリ情報とを作成して前記周辺コンピュータの記憶部に格納させ、
前記周辺コンピュータにより、
前記コンピュータへの接続後、前記ＰＣ環境取得プログラムを送信する際に、前記冗長エントリ情報に基づいて、前記本処理部のエントリに冗長エントリをランダムに挿入して送信する、
処理を実行することを特徴とする認証方法。
【請求項２】
前記冗長エントリは、予め用意された無効なデータ列、あるいは各種処理命令をランダムに選択して前記本処理部のエントリに挿入することを特徴とする請求項１に記載の認証方法。
【請求項３】
前記コンピュータに対して前記ＰＣ環境取得プログラムを送信する際に、前記コンピュータへの接続毎に異なる暗号鍵を送信し、
前記コンピュータから前記暗号鍵により暗号化された前記環境情報を取得することを特徴とする請求項１または２に記載の認証方法。
【請求項４】
前記コンピュータに対する前記ＰＣ環境取得プログラムの送信後、前記コンピュータから受信した前記環境情報を正規の検証用環境情報と照合して前記コンピュータを認証し、
認証された前記コンピュータに対して、保護対象データを送信する、
ことを特徴とする請求項１〜３のいずれか一つに記載の認証方法。
【請求項５】
コンピュータを認証する周辺コンピュータに、
プログラム実行用の本処理部に冗長部を含めて作成したエントリとヘッダ情報のうち、前記本処理部から前記冗長部のエントリを削除して、当該削除した冗長部のエントリに対応する冗長エントリ情報を含み、前記コンピュータに固有の環境情報を取得するＰＣ環境取得プログラムを記憶部に格納させ、
前記コンピュータに対して前記ＰＣ環境取得プログラムを送信する際に、前記冗長エントリ情報に基づいて、前記本処理部のエントリに冗長エントリをランダムに挿入して送信させる、
処理を実行することを特徴とする認証プログラム。
【請求項６】
コンピュータを認証する認証装置において、
プログラム実行用の本処理部に冗長部を含めて作成したエントリとヘッダ情報のうち、前記本処理部から前記冗長部のエントリを削除して、当該削除した冗長部のエントリに対応する冗長エントリ情報を含み、前記コンピュータに固有の環境情報を取得するＰＣ環境取得プログラムを格納する記憶部と、
前記コンピュータに対して前記ＰＣ環境取得プログラムを送信する際に、前記冗長エントリ情報に基づいて、前記本処理部のエントリに冗長エントリをランダムに挿入するプログラム生成部と、
生成された前記ＰＣ環境取得プログラムを前記コンピュータに送信し、前記コンピュータから前記環境情報を受信する送受信部と、
受信した前記環境情報を正規の検証用環境情報と照合して前記コンピュータを認証する検証部と、
を有することを特徴とする認証装置。
【請求項７】
前記コンピュータに対して前記ＰＣ環境取得プログラムを送信する際に、前記コンピュータへの接続毎に異なる暗号鍵を生成する暗号鍵生成部と、
前記コンピュータから前記暗号鍵により暗号化された前記環境情報を復号する復号部と、
を有することを特徴とする請求項６に記載の認証装置。
【請求項８】
前記検証部により認証された前記コンピュータに対して、保護対象データを送信する保護対象データ送信部を有することを特徴とする請求項６または７に記載の認証装置。
【請求項９】
可搬可能であり、前記コンピュータに接続可能な周辺コンピュータであることを特徴とする請求項６〜８のいずれか一つに記載の認証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置の認証方法、認証プログラムおよび認証装置に関する。
【背景技術】
【０００２】
ソフトウェア保護の分野では、コスト、性能、利便性等の各技術水準を損なうことなく、ソフトウェアの不正利用を防ぎセキュリティ強度を上げることが求められており、一般に下記Ａ）〜Ｃ）の方法が用いられている。
Ａ）保護対象ソフトウェアを実行不可能な形態でユーザＰＣに保存し、ネットワーク上のライセンスサーバとの認証結果によって、保護対象ソフトウェアの実行を可能にする。
Ｂ）保護対象ソフトウェアを実行不可能な形態でユーザＰＣに保存し、ＰＣに接続可能な可搬型のＰＣ周辺機器の接続有無によって、ソフトウェアの実行を可能にする。
Ｃ）保護対象ソフトウェアをＰＣ周辺機器に格納し、ＰＣ周辺機器内でソフトウェアを実行する。ＰＣ周辺機器とは、マイコン内蔵の小型機器、例えばドングルとして流通している。
【０００３】
ここで上記Ａ）の方法では、サーバ構築のコストが高くなり、Ｂ）の方法では、ソフトウェアが攻撃しやすいＰＣ上にあるため、認証コードの書き直しなどソフトウェアが改竄されやすい。Ｃ）の方法では、ＰＣ周辺機器のマイコンの処理性能が低く、処理に時間がかかる。
【０００４】
このため、上記方法Ａ）〜Ｃ）について、ＰＣ周辺機器からＰＣへソフトウェアをロードして実行する方法が提案されている（例えば、下記特許文献１，２参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１４６７４８号公報
【特許文献２】特開２００６−１０６９９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１，２の技術を用いても、ＰＣ周辺機器が盗まれると、ソフトウェアの不正使用が可能になるとともに、ソフトウェアをロードしてソフトウェア本体の複製が可能になる、という問題があった。
【０００７】
以上のように、サーバ構築のコスト高、ソフトウェア改竄のおそれ、ＰＣ周辺機器の低処理性能のそれぞれの問題、およびＰＣ周辺機器の盗難時のソフトウェアの不正使用およびソフトウェア本体の複製の防止、をいずれも図ることができる技術の提供が求められる。
【０００８】
一つの側面では、本発明は、低コストにセキュリティ強度を上げることを目的とする。
【課題を解決するための手段】
【０００９】
一つの案では、コンピュータを周辺コンピュータにより認証するにあたり、所定のコンピュータを用いて、前記コンピュータを認証するための前記コンピュータに固有の環境情報を取得するＰＣ環境取得プログラムの作成時に、プログラム実行用の本処理部に冗長部を含めたエントリと、ヘッダ情報を作成し、前記本処理部から前記冗長部のエントリを削除した前記ＰＣ環境取得プログラムと、当該削除した冗長部のエントリに対応する冗長エントリ情報とを作成して前記周辺コンピュータの記憶部に格納させ、前記周辺コンピュータにより、前記コンピュータへの接続後、前記ＰＣ環境取得プログラムを送信する際に、前記冗長エントリ情報に基づいて、前記本処理部のエントリに冗長エントリをランダムに挿入して送信する。
【発明の効果】
【００１０】
一つの実施形態によれば、低コストにセキュリティ強度を上げることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施の形態にかかる認証装置の構成を示すブロック図である。
【図２】図２は、暗号鍵生成の各方法と鍵生成タイミングを示す図表である。
【図３】図３は、実施の形態にかかるＰＣ認証の全体処理を示す説明図である。
【図４】図４は、ＰＣ周辺機器によるＰＣ認証処理を示す動作説明図である。
【図５】図５は、ＰＣ周辺機器によるＰＣ認証処理を示すシーケンス図である。
【図６】図６は、実施の形態にかかるＰＣ周辺機器に格納するＰＣ環境取得プログラムのデータ形式を示す図である。
【図７】図７は、実施の形態にかかるＰＣ環境取得プログラムの作成手順を示すフローチャートである。
【図８】図８は、ＰＣ周辺機器からＰＣへのＰＣ環境取得プログラムの送信時のプログラム内容を示す図である。
【図９】図９は、ＰＣ周辺機器がおこなうＰＣ環境取得プログラムの送信の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
（実施の形態）
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。
【００１３】
（認証装置：ＰＣ周辺機器の構成）
図１は、実施の形態にかかる認証装置の構成を示すブロック図である。実施の形態の認証装置は、ＰＣに接続可能であり、ＣＰＵ等の演算部、および通信路１０８を介して通信をおこなう通信部、ＲＯＭやＲＡＭ等の記憶部等を備えたＰＣ周辺機器１００を用いる。このＰＣ周辺機器１００は、通信路１０８を介して接続されるコンピュータ（ＰＣ）１１０を認証し、認証後にＰＣ１１０にソフトウェア等の保護対象データ１２０を送信する。
【００１４】
図１に示すＰＣ周辺機器１００は、プログラム生成部１０１と、暗号鍵生成部１０２と、送受信部１０３と、保護対象データ送信部１０４と、取得情報復号部１０５と、ＰＣ環境検証部１０６と、記憶部１０７と、を含む。プログラム生成部１０１、暗号鍵生成部１０２、取得情報復号部１０５、ＰＣ環境検証部１０６は、ＰＣ周辺機器１００のＣＰＵがＲＯＭ等に格納された制御プログラム実行により、各機能が実行される。送受信部１０３は、通信Ｉ／Ｆ等を用いて機能実行される。記憶部１０７は、ＲＯＭ，ＲＡＭ等を用いて機能実行される。
【００１５】
プログラム生成部１０１は、ＰＣ環境取得プログラム１１１を生成する演算部である。ＰＣ１１０への接続毎に異なる形のＰＣ環境取得プログラム１１１を生成する。暗号鍵生成部１０２は、ＰＣ１１０への接続毎に異なる暗号鍵１１５を生成する演算部である。暗号鍵１１５の生成方法は、下記図２に示すように、複数の方法が可能である。
【００１６】
送受信部１０３は、ＰＣ１１０との通信Ｉ／Ｆ部である。例えば、ＰＣ１１０に対してＰＣ環境取得プログラム１１１を送信し、ＰＣ１１０からこのＰＣ１１０に固有のＰＣ環境情報１１２を受信する。
【００１７】
取得情報復号部１０５は、暗号化されたＰＣ環境情報を復号する演算部である。ＰＣ環境検証部１０６は、ＰＣ１１０から取得したＰＣ環境情報を、予め格納しておいた正規の検証用ＰＣ環境情報１１６と照合し、ＰＣ１１０を検証（認証処理）する。この検証用ＰＣ環境情報１１６は、ＰＣ周辺機器１００の出荷時等に、接続されるＰＣ１１０の情報として記憶部１０７に記憶させておく。検証用ＰＣ環境情報１１６が検証に用いる内容（パラメータ）は、ＰＣ１１０から取得するＰＣ環境情報の内容（パラメータ）と同じである。
【００１８】
保護対象データ送信部１０４は、ＰＣ環境情報の検証により認証されたＰＣ１１０に対して保護対象ソフトウェア等の保護対象データ１２０を送信する。
【００１９】
記憶部１０７は、不揮発性領域、例えば、ＲＯＭやＦｌａｓｈＲＯＭ、記憶装置（ＨＤＤ）、各演算時に用いる揮発性領域（ＲＡＭ等）を有する。不揮発領域には、検証用ＰＣ環境情報１１６、保護対象データ（保護対象ソフトウェア）１２０を保持する。
【００２０】
ＰＣ１１０は、一般的な汎用ＰＣであり、ＣＰＵ１２１やＲＯＭ、ＲＡＭ（不図示）、およびＰＣ１１０に固有の環境情報（ＰＣ環境情報１１２）を有する。このＰＣ１１０には、ＰＣ周辺機器１００からＰＣ環境取得プログラム１１１がロードされる。また、ＰＣ周辺機器１００によるＰＣ１１０の認証後に、保護対象データ（保護対象プログラム）１２０がＰＣ周辺機器１００からＰＣ１１０にロードされる。
【００２１】
ＰＣ環境取得プログラム１１１は、ＰＣ１１０に固有のＰＣ環境情報１１２を取得するプログラムである。このＰＣ環境取得プログラム１１１は、ＰＣ１１０上で実行され、ＰＣ環境情報１１２を取得する。ＰＣ環境情報１１２は、ＰＣ環境取得プログラム１１１内の暗号鍵１１５で暗号化され、ＰＣ周辺機器１００に送信（返送）される。
【００２２】
ＰＣ環境情報１１２は、ＰＣ１１０に固有の環境情報であり、その内容（パラメータ）としては、例えば下記が挙げられる。
１）ＡＴＡデバイス機器（ＨＤＤ／ＳＳＤ）等のシリアル番号。
２）ネットワーク機器のＭＡＣアドレス。
３）ＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）のプラットフォーム測定情報。ＰＣ１１０毎に一意なセキュリティチップ。ＰＣ１１０の起動時にシステムソフトウェアのプログラム領域を測定し、プラットフォーム測定情報をチップに一意な鍵を用いた署名をおこない出力する。
【００２３】
図２は、暗号鍵生成の各方法と鍵生成タイミングを示す図表である。上述した暗号鍵生成部１０２が生成する暗号鍵１１５について説明する。図２の（ａ）に示すように、例えば、暗号化方法は、１）共通鍵暗号、２）公開鍵暗号、３）ハイブリッド方式があり、各暗号化方法別のアルゴリズム、セキュリティ強度、ＰＣ１１０への接続後に新しい鍵が利用可能になるまでの時間、ＰＣ１１０での暗号化、ＰＣ周辺機器１００での復号処理時間をそれぞれ示した。セキュリティ強度は、２）公開鍵暗号、３）ハイブリッド方式が非常に高い。ＰＣ１１０への接続後に新しい鍵が利用可能になるまでの時間は、１）共通鍵暗号が非常に短く、２）公開鍵暗号、３）ハイブリッド方式については、鍵生成のタイミングに依存する。ＰＣ１１０での暗号化、ＰＣ周辺機器１００での復号処理時間は、１）共通鍵暗号が短い。
【００２４】
図２の（ｂ）に示す鍵生成タイミングは、Ａ）ＰＣ周辺機器１００をＰＣ１１０に接続後に鍵生成する場合と、Ｂ）ＰＣ１１０にＰＣ周辺機器１００を以前の接続時に鍵生成し、記憶部１０７に保存しておく場合がある。Ａ）によれば、ＰＣ周辺機器１００をＰＣ１１０に接続後に新しい鍵が利用可能になるまでの時間は長い。これに対し、Ｂ）によれば、非常に短くすることができる。
【００２５】
（実施の形態による複数段階のＰＣ認証処理について）
図３は、実施の形態にかかるＰＣ認証の全体処理を示す説明図である。この図３は、処理順序を示したものではなく、実施の形態の各処理と作用を説明するものである。
【００２６】
上述したように、実施の形態では、ＰＣ周辺機器１００からＰＣ１１０に対し保護対象データ（保護対象ソフトウェア）１２０をロードし、ＰＣ１１０にて実行する（ステップＳ３０１）。
【００２７】
これにより、ライセンスサーバ等によるＰＣ１１０の認証をおこなう必要がなく、サーバ構築にかかるコストを削減できる。また、保護対象データ（保護対象ソフトウェア）１２０がＰＣ１１０上にないため、ソフトウェア改竄を防止できる。さらに、保護対象ソフトウェアは、低い性能のＰＣ周辺機器１００が実行するのではなく、高性能なＰＣ１１０が実行するため、ソフトウェア実行にかかる性能低下は生じない。但し、ＰＣ周辺機器１００の盗難によりソフトウェアが不正使用される点、およびソフトウェア本体の複製が可能になる問題を含む。
【００２８】
この問題については、実施の形態では、ＰＣ環境取得プログラム１１１をＰＣ１１０にロードし、ＰＣ周辺機器１００内で認証済みＰＣの情報を用いて、接続したＰＣ１１０を認証した上で保護対象データ（保護対象ソフトウェア）１２０をＰＣ１１０にロードする（ステップＳ３０２）。
【００２９】
これにより、認証されていないＰＣ１１０にＰＣ周辺機器１００を接続しても、ＰＣ１１０から取得するＰＣ環境情報１１２が異なり検証失敗となるため、不正な使い方では保護対象データ（保護対象ソフトウェア）１２０の使用を防ぐことが可能となる。さらに、保護対象ソフトウェア本体の複製についても、ＰＣ１１０の認証前に保護対象データ（保護対象ソフトウェア）１２０をＰＣ１１０にロードしないため、認証されていないＰＣ１１０以外にて保護対象データ（保護対象ソフトウェア）１２０の複製を防止することが可能となる。
【００３０】
上記構成においても、さらには、ＰＣ１１０においてＰＣ周辺機器１００に返すＰＣ環境情報１１２が偽装される可能性を有している。例えば、正規のＰＣ１１０にて検証成功した際の取得情報を保存し、別のＰＣ１１０で実行する際にその取得情報を用いた偽装（リプレイ攻撃）が考えられる。
【００３１】
この問題については、実施の形態では、ＰＣ環境情報１１２を暗号化する暗号鍵１１５をＰＣ接続毎に毎回異ならせている（ステップＳ３０３）。これにより、ＰＣ１１０の検証時にＰＣ偽装等の不正を検知することが可能となる。
【００３２】
上記構成においても、さらには、ＰＣ環境取得プログラム１１１が改竄される可能性を有する。この問題については、実施の形態では、ＰＣ周辺機器１００をＰＣ１１０に接続毎に、異なるコード（プログラムコード）のＰＣ環境取得プログラム１１１を生成し、実行コードを毎回異ならせている（ステップＳ３０４）。
【００３３】
この点の詳細については後述するが、改竄にかかる情報はＰＣ周辺機器１００内で保護されており、ＰＣ周辺機器１００外から読み取ることは不可能にしている。また、ＰＣ環境情報１１２の暗号鍵１１５はＰＣ１１０への接続毎に毎回異なるため、リプレイ攻撃が無効となり、推測も困難にできる。さらに、ＰＣ環境取得プログラム１１１のプログラム部分（コード）はＰＣ１１０への接続毎に毎回異なるため、リプレイ攻撃が無効となり、推測も困難にできる。
【００３４】
上述したように、各処理（ステップＳ３０１〜ステップＳ３０４）を組み合わせることにより、性能が低いＰＣ周辺機器１００を用いてもセキュリティ強度を上げてＰＣ１１０を認証することができるようになる。
【００３５】
（ＰＣ認証処理）
図４は、ＰＣ周辺機器によるＰＣ認証処理を示す動作説明図、図５は、ＰＣ周辺機器によるＰＣ認証処理を示すシーケンス図である。これら図４に示す構成図と、図５に示すシーケンス図とには動作順の共通の符号を付してある。以下、ＰＣ認証処理を動作順に説明する。
【００３６】
１．ＰＣ１１０に通信路１０８を介してＰＣ周辺機器１００を接続する。この接続によりＰＣ周辺機器１００が起動する（ステップＳ５０１）。
２．ＰＣ周辺機器１００の暗号鍵生成部１０２は、ＰＣ１１０への接続毎に毎回異なる暗号鍵１１５を生成する（ステップＳ５０２）。
３．ＰＣ周辺機器１００のプログラム生成部１０１は、接続毎に毎回異なるプログラムコードを生成し、上記２．により生成した暗号鍵１１５と結合し、ＰＣ環境取得プログラム１１１を新規生成する（ステップＳ５０３）。
４．ＰＣ周辺機器１００の送受信部１０３は、上記３．により生成したＰＣ環境取得プログラム１１１をＰＣ１１０に送信する（ステップＳ５０４）。
【００３７】
５．ＰＣ１１０のＣＰＵ１２１は、ＰＣ環境取得プログラム１１１を実行し、ＰＣ環境情報１１２を取得する（ステップＳ５０５）。
６．ＰＣ１１０のＣＰＵ１２１は、ＰＣ環境取得プログラム１１１の実行により取得したＰＣ環境情報１１２を暗号鍵１１５を用いて暗号化する（ステップＳ５０６）。
７．ＰＣ１１０のＣＰＵ１２１は、ＰＣ環境取得プログラム１１１を実行し、暗号化されたＰＣ環境情報１１２をＰＣ周辺機器１００に通信路１０８を介して送信する（ステップＳ５０７）。
【００３８】
８．ＰＣ周辺機器１００の送受信部１０３は、ＰＣ１１０が送信した、暗号化されたＰＣ環境情報１１２を受信する（ステップＳ５０８）。
９．ＰＣ周辺機器１００の取得情報復号部１０５は、暗号鍵生成部１０２の暗号鍵１１５を用いて、暗号化されたＰＣ環境情報１１２を復号する（ステップＳ５０９）。
１０．ＰＣ周辺機器１００のＰＣ環境検証部１０６は、記憶部１０７に格納されている検証用ＰＣ環境情報１１６と、復号したＰＣ環境情報１１２とを比較検証する（ステップＳ５１０）。
１１．上記１０．の検証が成功であれば、ＰＣ周辺機器１００の保護対象データ送信部１０４は、ＰＣ１１０に保護対象データ（保護対象ソフトウェア）１２０を送信する（ステップＳ５１１）。
【００３９】
上記認証処理例において、暗号鍵１１５の生成に伴うＰＣ接続後の処理時間を短くする場合には、上記１１．以降の時期等、ＰＣ１１０にＰＣ周辺機器１００が接続されており、ＰＣ周辺機器１００により処理が特にない処理待ちの間に、暗号鍵生成部１０２が暗号鍵１１５の新規生成をおこなっておき、記憶部１０７に保存しておく。そして、ＰＣ１１０にＰＣ周辺機器１００が接続されたときには、上記処理２．において、暗号鍵生成部１０２は、記憶部１０７に格納されていた暗号鍵１１５を読み出すだけでよい。これにより、ＰＣ１１０にＰＣ周辺機器１００が接続されたときに暗号鍵１１５を生成する必要がなく、処理時間を短くすることができる。
【００４０】
（ＰＣ環境取得プログラムをＰＣ接続毎に異ならせる処理の詳細）
次に、上述したＰＣ周辺機器１００を用いながらＰＣ環境取得プログラム１１１のセキュリティ強度を上げる処理の詳細について説明する。一般に、プログラム難読化のセキュリティ強度は、解析をし難くするための難読化プログラムをサイズ増大により得ている。一方、ＰＣ周辺機器１００では使用可能なリソースが少ないという制約があり、プログラムのサイズ増大により難読化してセキュリティ強度を上げることは難しい。リソース制約について、現在のＰＣ周辺機器（汎用のドングル）１００は、ＣＰＵ＝３２ＭＨｚ，ＲＡＭ＝３２ＫＢ程度である。これに対し、ＰＣ側リソースは、ＣＰＵ＝２ＧＨｚ，メモリ＝４ＧＢを有する。
【００４１】
このため、実施の形態の難読化方法では、ＰＣ周辺機器１００のメモリリソースによらずにＰＣ１１０に出力する難読化プログラムのサイズを無制限に増大でき、出力プログラムのセキュリティ強度を大幅に上げるようにする。
【００４２】
図６は、実施の形態にかかるＰＣ周辺機器に格納するＰＣ環境取得プログラムのデータ形式を示す図である。プログラム自体は、一般的なヘッダ６０１と、複数のエントリ６０２の形式を用いている。図６の右側に示すように、プログラム作成時には、ヘッダ６０１は、複数の各エントリ６０２への相対アドレスを格納する。各エントリ（１〜ｎ）６０２は、エントリの種類（コード／データ等）と、実体を格納する。そして、図６の左側に示すように、作成したプログラムは、ＰＣ周辺機器１００に対して、「圧縮したプログラム（本処理部だけからなるエントリ）」６１０と、「冗長エントリ情報」６１１とを格納する。
【００４３】
図７は、実施の形態にかかるＰＣ環境取得プログラムの作成手順を示すフローチャートである。図６の図表と併せて作成手順を説明する。
【００４４】
１）ＰＣ環境取得プログラム１１１の作成（ビルド時）
この１）の処理は、ＰＣ周辺機器１００外部の所定のＰＣ等を用いて作成する。はじめに、大量の冗長部（冗長ソースコード）６０２ｂを含めた冗長プログラムを生成する。冗長部６０２ｂは、図６のエントリ１，３，…，ｎ−２，ｎである。作成の処理順に説明すると、
１．本処理部（ＰＣ環境取得プログラム１１１のプログラムがＰＣ１１０により実行される処理部）６０２ａのソースコードを作成する（ステップＳ７０１）。本処理部６０２ａは、図６のエントリ２，４，…，ｎ−１である。
【００４５】
２．冗長部（難読化領域を確保するための領域）６０２ｂのソースコードを作成する（ステップＳ７０２）。この際、ソースコードに冗長部６０２ｂであることを示す識別子を埋め込む。
【００４６】
３．コンパイラにて本処理部６０２ａと冗長部６０２ｂのソースコードをコンパイルし、それぞれの再配置可能なオブジェクトを生成する（ステップＳ７０３）。
４．各オブジェクトのプログラム上の位置をリンカにランダムに設定する（ステップＳ７０４）。
５．リンカを実行し、冗長部６０２ｂを含むプログラムを生成する（ステップＳ７０５）。以上のＰＣ環境取得プログラム１１１の作成時に、ＰＣ環境取得プログラム１１１は、サイズ指定により、対応して冗長部６０２ｂの挿入数および各サイズを設定し、全体を所定のサイズ（容量、例えば１０ＭＢｙｔｅ）に増大させて難読化することができる。
【００４７】
２）ＰＣ環境取得プログラム１１１のＰＣ周辺機器１００への格納
次に、プログラムから冗長部６０２ｂのエントリ領域を削除し、本処理部６０２ａのみとなりサイズ圧縮したプログラム６１０と、削除した冗長部６０２ｂの情報（相対アドレス、エントリ種別など）を記載した冗長エントリ情報６１１を生成する。具体的には、
６．プログラムを解析して冗長部６０２ｂの識別子のあるエントリを削除し、プログラムを圧縮する（ステップＳ７０６）。その際、冗長部６０２ｂの冗長エントリ情報６１１を生成する。
７．圧縮したプログラム６１０と、冗長エントリ情報６１１をＰＣ周辺機器１００に格納する（ステップＳ７０７）。
【００４８】
（ＰＣ周辺機器からＰＣへのＰＣ環境取得プログラム１１１の送信とプログラム難読化）
次に、ＰＣ周辺機器１００からＰＣ１１０に対するＰＣ環境取得プログラム１１１の送信とプログラムの難読化について説明する。
【００４９】
図８は、ＰＣ周辺機器からＰＣへのＰＣ環境取得プログラムの送信時のプログラム内容を示す図である。ＰＣ周辺機器１００は、ＰＣ１１０にＰＣ環境取得プログラム１１１を送信する際、ＰＣ１１０への接続毎に変化する（異なる）ランダムなエントリを挿入する。
【００５０】
具体的には、ＰＣ周辺機器１００のプログラム生成部１０１は、ＰＣ環境取得プログラム１１１の冗長エントリ情報６１１を参照し、次に送信するエントリの種別毎にＡ），Ｂ）の異なる処理をおこなう。
【００５１】
Ａ）次に送信するエントリが冗長エントリであれば、ランダムなエントリを生成する。このエントリの実体は、プログラムとして意味のない大きなサイズのデータ列である。このデータ列は、例えば、プログラム生成部１０１が冗長エントリとして用意（定義）した各種処理命令（例えば、コピー命令、空命令、ライト命令等）であり、プログラム生成部１０１がこれら各種命令を乱数に基づきランダムに選択して冗長エントリとする。冗長エントリに用いる各種命令は、記憶部１０７等に記憶しておく。
【００５２】
Ｂ）次に送信するエントリが冗長エントリでなければ、元々のエントリ（本処理部）とする。そして、Ａ）またはＢ）のエントリをＰＣ１１０の対応アドレスに送信する。
【００５３】
これにより、ＰＣ１１０上には、冗長エントリ情報６１１に記載された冗長エントリの数に対応する実体のないエントリ（図８のエントリ１，３，…，ｎ−２，ｎ）が配置される。これにより、ＰＣ１１０上に配置されるＰＣ環境取得プログラム１１１がサイズ増大されて難読化できる。同時に、ＰＣ周辺機器１００側では、冗長エントリ情報６１１分のサイズだけが増えるため、冗長部６０２ｂのエントリの実体データ分の容量を取らず、メモリ容量の増大を防ぐことができる。
【００５４】
そして、ＰＣ周辺機器１００は、ＰＣ環境取得プログラム１１１の送信時に、ランダムに冗長エントリ（冗長部６０２ｂ）が送信される。これにより、ＰＣ周辺機器１００をＰＣ１１０に接続する毎に、ＰＣ環境取得プログラム１１１は、異なるプログラムコードを有することになり、ＰＣ環境取得プログラム１１１の改竄を防止でき、リプレイ攻撃を無効にできる。
【００５５】
図９は、ＰＣ周辺機器がおこなうＰＣ環境取得プログラムの送信の処理手順を示すフローチャートである。図８を用いて説明したように、ＰＣ周辺機器１００のプログラム生成部１０１がおこなう処理について説明する。
【００５６】
はじめに、プログラム生成部１０１は、冗長エントリ情報６１１を参照し、次のエントリが存在するか判断する（ステップＳ９０１）。そして、エントリがあれば（ステップＳ９０１：Ｙｅｓ）、ステップＳ９０２に移行し、エントリがなければ（ステップＳ９０１：Ｎｏ）、処理を終了する。
【００５７】
ステップＳ９０２では、エントリの種類が冗長エントリであるか否かを判断する（ステップＳ９０２）。冗長エントリであれば（ステップＳ９０２：Ｙｅｓ）、ランダムなエントリを生成し、ＰＣ１１０に送信する（ステップＳ９０３）。冗長エントリでなければ（ステップＳ９０２：Ｎｏ）、元々のエントリ（本処理部）をＰＣ１１０に送信する（ステップＳ９０４）。ステップＳ９０３およびステップＳ９０４の実行後は、いずれもステップＳ９０１に戻り、処理を継続する。
【００５８】
以上説明した実施の形態によれば、ＰＣ認証のためのＰＣ認証サーバ等の設置が不要であり、ＰＣ周辺機器を用いてＰＣ認証をおこなうことができ、低コストに認証できる。また、認証されていないＰＣには、保護対象データ（保護対象ソフトウェア）に関連する情報を一切送らないため、保護対象データの改竄を防止できる。また、保護対象データは、高性能なリソースを有するＰＣ上で実行処理されるため、処理実行時の性能低下が生じない。
【００５９】
さらに、認証されていないＰＣのＰＣ周辺機器を接続しても、取得するＰＣ環境情報が正規と異なり検証失敗となるため、ＰＣ周辺機器を他のＰＣに接続して保護対象データ（保護対象ソフトウェア）を実行することを防ぐことができる。また、ＰＣからＰＣ周辺機器に送信するＰＣ環境情報は、接続毎に異なる暗号鍵を用いて暗号化されるため、改竄を無効化でき、検証時に不正を検出できるようになる。また、ＰＣ環境取得プログラムについても、ＰＣへの接続毎に変化するランダムなエントリを挿入するため、改竄やリプレイ攻撃を無効化でき、検証時に不正を検出できるようになる。
【００６０】
以上のように、ＰＣ周辺機器によるＰＣ認証をおこなうことにより、ＰＣ側では、特別な構成や処理をおこなうことなく、汎用のＰＣを用いて保護対象データ（保護対象ソフトウェア）を保護状態で受け取ることができ、安全に処理実行できるようになる。
【００６１】
上述した各実施の形態に関し、さらに以下の付記を開示する。
【００６２】
（付記１）コンピュータを周辺コンピュータにより認証する認証方法において、
所定のコンピュータを用いて、前記コンピュータを認証するための前記コンピュータに固有の環境情報を取得するＰＣ環境取得プログラムの作成時に、プログラム実行用の本処理部に冗長部を含めたエントリと、ヘッダ情報を作成し、
前記本処理部から前記冗長部のエントリを削除した前記ＰＣ環境取得プログラムと、当該削除した冗長部のエントリに対応する冗長エントリ情報とを作成して前記周辺コンピュータの記憶部に格納させ、
前記周辺コンピュータにより、
前記コンピュータへの接続後、前記ＰＣ環境取得プログラムを送信する際に、前記冗長エントリ情報に基づいて、前記本処理部のエントリに冗長エントリをランダムに挿入して送信する、
処理を実行することを特徴とする認証方法。
【００６３】
（付記２）前記冗長エントリは、予め用意された無効なデータ列、あるいは各種処理命令をランダムに選択して前記本処理部のエントリに挿入することを特徴とする付記１に記載の認証方法。
【００６４】
（付記３）前記コンピュータに対して前記ＰＣ環境取得プログラムを送信する際に、前記コンピュータへの接続毎に異なる暗号鍵を送信し、
前記コンピュータから前記暗号鍵により暗号化された前記環境情報を取得することを特徴とする付記１または２に記載の認証方法。
【００６５】
（付記４）前記コンピュータに対する前記ＰＣ環境取得プログラムの送信後、前記コンピュータから受信した前記環境情報を正規の検証用環境情報と照合して前記コンピュータを認証し、
認証された前記コンピュータに対して、保護対象データを送信する、
ことを特徴とする付記１〜３のいずれか一つに記載の認証方法。
【００６６】
（付記５）前記コンピュータに接続された後の所定期間に新たな暗号鍵を生成しておき、次回前記コンピュータに接続された際に新たな暗号鍵として用いることを特徴とする付記３に記載の認証方法。
【００６７】
（付記６）前記ＰＣ環境取得プログラムは、前記コンピュータに固有の環境情報として、前記コンピュータが有するデバイス機器番号、ネットワーク機器のアドレス、またはセキュリティチップのデジタル署名を取得することを特徴とする付記１〜５のいずれか一つに記載の認証方法。
【００６８】
（付記７）前記保護対象データは、所定のプログラムであり、前記コンピュータが当該プログラムを実行することを特徴とする付記１〜６のいずれか一つに記載の認証方法。
【００６９】
（付記８）コンピュータを認証する周辺コンピュータに、
プログラム実行用の本処理部に冗長部を含めて作成したエントリとヘッダ情報のうち、前記本処理部から前記冗長部のエントリを削除して、当該削除した冗長部のエントリに対応する冗長エントリ情報を含み、前記コンピュータに固有の環境情報を取得するＰＣ環境取得プログラムを記憶部に格納させ、
前記コンピュータに対して前記ＰＣ環境取得プログラムを送信する際に、前記冗長エントリ情報に基づいて、前記本処理部のエントリに冗長エントリをランダムに挿入して送信させる、
処理を実行することを特徴とする認証プログラム。
【００７０】
（付記９）コンピュータを認証する認証装置において、
プログラム実行用の本処理部に冗長部を含めて作成したエントリとヘッダ情報のうち、前記本処理部から前記冗長部のエントリを削除して、当該削除した冗長部のエントリに対応する冗長エントリ情報を含み、前記コンピュータに固有の環境情報を取得するＰＣ環境取得プログラムを格納する記憶部と、
前記コンピュータに対して前記ＰＣ環境取得プログラムを送信する際に、前記冗長エントリ情報に基づいて、前記本処理部のエントリに冗長エントリをランダムに挿入するプログラム生成部と、
生成された前記ＰＣ環境取得プログラムを前記コンピュータに送信し、前記コンピュータから前記環境情報を受信する送受信部と、
受信した前記環境情報を正規の検証用環境情報と照合して前記コンピュータを認証する検証部と、
を有することを特徴とする認証装置。
【００７１】
（付記１０）前記コンピュータに対して前記ＰＣ環境取得プログラムを送信する際に、前記コンピュータへの接続毎に異なる暗号鍵を生成する暗号鍵生成部と、
前記コンピュータから前記暗号鍵により暗号化された前記環境情報を復号する復号部と、
を有することを特徴とする付記９に記載の認証装置。
【００７２】
（付記１１）前記検証部により認証された前記コンピュータに対して、保護対象データを送信する保護対象データ送信部を有することを特徴とする付記９または１０に記載の認証装置。
【００７３】
（付記１２）可搬可能であり、前記コンピュータに接続可能な周辺コンピュータであることを特徴とする付記９〜１１のいずれか一つに記載の認証装置。
【符号の説明】
【００７４】
１００  ＰＣ周辺機器（認証装置）
１０１  プログラム生成部
１０２  暗号鍵生成部
１０３  送受信部
１０４  保護対象データ送信部
１０５  取得情報復号部
１０６  ＰＣ環境検証部
１０７  記憶部
１０８  通信路
１１０  ＰＣ
１１１  ＰＣ環境取得プログラム
１１２  ＰＣ環境情報
１１５  暗号鍵
１１６  検証用ＰＣ環境情報
１２０  保護対象データ（保護対象プログラム）
６０１  ヘッダ
６０２  エントリ
６０２ａ  本処理部
６０２ｂ  冗長部
６１０  プログラム
６１１  冗長エントリ情報
【図１】
2014178906.tif 000003
【図２】
2014178906.tif 000004
【図３】
2014178906.tif 000005
【図４】
2014178906.tif 000006
【図５】
2014178906.tif 000007
【図６】
2014178906.tif 000008
【図７】
2014178906.tif 000009
【図８】
2014178906.tif 000010
【図９】
2014178906.tif 000011