(57)【要約】【課題】  配信されるオブジェクトファイルの機密性を高め、かつ受信側の端末装置の負荷を抑える。【解決手段】  暗号変換テーブル１ａは、オブジェクトファイル１ｅに含まれる定数情報を暗号に変換するためのテーブルである。暗号変換部１ｂは、暗号変換テーブル１ａを参照してオブジェクトファイル１ｅに含まれる定数情報を暗号に変換する。定数情報削除部１ｃは、暗号に変換された定数情報をオブジェクトファイル１ｅから削除する。配信部１ｄは、オブジェクトファイル１ｅを配信する。暗号復元テーブル２ａは、暗号変換テーブル１ａと同じ内容を有し、サーバ１から配信されるオブジェクトファイル２ｄの暗号を元の定数情報に復元するためのテーブルである。受信部２ｂは、サーバ１から配信されるオブジェクトファイル２ｄを受信する。定数情報復元部２ｃは、暗号復元テーブル２ａを参照してオブジェクトファイル２ｄに含まれる暗号を定数情報に復元する。【選択図】  図１
2006053406.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してオブジェクトファイルを配信するオブジェクトファイル配信方法において、
サーバの暗号変換部によって、前記オブジェクトファイルに含まれる定数情報を暗号変換テーブルを参照して暗号に変換し、
前記サーバの定数情報削除部によって、前記定数情報を前記オブジェクトファイルから削除し、
前記サーバの配信部によって、前記オブジェクトファイルを前記ネットワークを介して配信し、
端末装置の受信部によって、前記オブジェクトファイルを受信し、
前記端末装置の定数情報復元部によって、前記オブジェクトファイルに含まれる前記暗号を、前記暗号変換テーブルと同じ内容を有する暗号復元テーブルを参照して前記定数情報に復元する、
ことを特徴とするオブジェクトファイル配信方法。
【請求項２】
前記暗号復元テーブルは、前記サーバから前記オブジェクトファイルを受信する権限を有した前記端末装置に配信されることを特徴とする請求項１記載のオブジェクトファイル配信方法。
【請求項３】
前記オブジェクトファイルは、オブジェクト指向言語によって記述されたプログラムがコンパイルされたものであることを特徴とする請求項１記載のオブジェクトファイル配信方法。
【請求項４】
前記暗号変換テーブルには、数値が前記定数情報に対応付けて格納されていることを特徴とする請求項１記載のオブジェクトファイル配信方法。
【請求項５】
前記暗号を所定の関数によって暗号化することを特徴とする請求項１記載のオブジェクトファイル配信方法。
【請求項６】
前記オブジェクトファイルは、仮想マシンで実行されることを特徴とする請求項１記載のオブジェクトファイル配信方法。
【請求項７】
前記暗号変換部は、変換した前記暗号と前記定数情報とをキャッシュメモリに記憶することを特徴とする請求項１記載のオブジェクトファイル配信方法。
【請求項８】
前記定数情報復元部は、復元した前記定数情報と前記暗号とをキャッシュメモリに記憶することを特徴とする請求項１記載のオブジェクトファイル配信方法。
【請求項９】
ネットワークを介してオブジェクトファイルを配信するオブジェクトファイル配信システムにおいて、
前記オブジェクトファイルに含まれる定数情報を暗号変換テーブルを参照して暗号に変換する暗号変換部と、前記定数情報を前記オブジェクトファイルから削除する定数情報削除部と、前記オブジェクトファイルを前記ネットワークを介して配信する配信部と、を有するサーバと、
前記オブジェクトファイルを受信する受信部と、前記暗号変換テーブルと同じ内容を有する暗号復元テーブルを参照して、前記オブジェクトファイルに含まれる前記暗号を前記定数情報に復元する定数情報復元部と、を有する端末装置と、
を有することを特徴とするオブジェクトファイル配信システム。
【請求項１０】
ネットワークを介してオブジェクトファイルを送受信する電子機器において、
前記オブジェクトファイルに含まれる定数情報を暗号変換テーブルを参照して暗号に変換する暗号変換部と、
前記定数情報を前記オブジェクトファイルから削除する定数情報削除部と、
前記オブジェクトファイルを前記ネットワークを介して送信する送信部と、
前記オブジェクトファイルを受信する受信部と、
前記オブジェクトファイルに含まれる前記暗号を前記暗号変換テーブルを参照して前記定数情報に復元する定数情報復元部と、
を有することを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はオブジェクトファイル配信方法、オブジェクトファイル配信システム、および電子機器に関し、特にネットワークを介して配信するオブジェクトファイルの定数情報を暗号化し、機密性を高めて配信するオブジェクトファイル配信方法、オブジェクトファイル配信システム、および電子機器に関する。
【背景技術】
【０００２】
仮想マシンで実行される、例えば、Ｊａｖａ（登録商標）などのオブジェクト指向言語は、プラットフォームに依存せず、しかもネットワークで配信できるという特徴がある（例えば、特許文献１参照）。また、プログラムの定義体であるクラスファイル（オブジェクトファイル）は形式が同一で、スタックベースの命令体系であるため、命令長が短く、シンプルな構造をもつ特徴がある。そのため、仮想マシンで実行されるオブジェクト指向言語は、開発作業および実行環境の構築を容易にし、オブジェクトファイルのサイズが小さいことでネットワーク配信に極めて適しているといった特徴をもっている。
【０００３】
このようなオブジェクト指向言語は、オブジェクト形式が単純で、通常、オブジェクトやインタフェースの名前に意味を持たせているために、リバースエンジニアリングや処理内容を理解しやすい。そのため、機密性が重要なプログラムの配信には向かないといった短所もある。
【０００４】
従来、オブジェクトやインタフェースに定義される名前を曖昧なものに変更することにより、配信されるオブジェクトファイルの内容の理解を困難にしていた。オブジェクトやインタフェースの名前を曖昧に変更するものとして、オブファスケータ（obfuscator）と呼ばれるツールがある。
【０００５】
また、オブジェクトファイルを配信するとき、暗号化（電子署名）して機密性を高めていた。
【特許文献１】特開平１０−２０７８３８号公報（第５頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、標準化されているＡＰＩ（Application Program Interface）は、名前が規定されているため変更できず、機密性が低くなるといった問題点があった。
また、オブジェクトファイルを暗号化して配信すると、その暗号化を解読するためのリソースが、受信側の例えば端末装置で必要となり、負荷が大きくなるという問題点があった。
【０００７】
本発明はこのような点に鑑みてなされたものであり、機密性を高め、受信側の端末装置の負荷を抑えることができるオブジェクトファイル配信方法、オブジェクトファイル配信システム、および電子機器を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では上記課題を解決するために、図１に示すような、ネットワーク３を介してオブジェクトファイル１ｅを配信するオブジェクトファイル配信方法において、サーバ１の暗号変換部１ｂによって、オブジェクトファイル１ｅに含まれる定数情報を暗号変換テーブル１ａを参照して暗号に変換し、サーバ１の定数情報削除部１ｃによって、定数情報をオブジェクトファイル１ｅから削除し、サーバ１の配信部１ｄによって、オブジェクトファイル１ｅをネットワーク３を介して配信し、端末装置２の受信部２ｂによって、オブジェクトファイル２ｄを受信し、端末装置２の定数情報復元部２ｃによって、オブジェクトファイル２ｄに含まれる暗号を暗号変換テーブル１ａと同じ内容を有する暗号復元テーブル２ａを参照して定数情報に復元する、ことを特徴とするオブジェクトファイル配信方法が提供される。
【０００９】
このような、オブジェクトファイル配信方法によれば、オブジェクトファイル１ｅに含まれる定数情報を、暗号変換テーブル１ａを参照して暗号に変換し、定数情報をオブジェクトファイル１ｅから削除して配信する。そして、端末装置２によって、暗号変換テーブル１ａと同じ内容を有する暗号復元テーブル２ａを参照して、受信したオブジェクトファイル２ｄの暗号を定数情報に復元する。よって、オブジェクトファイル１ｅの配信における機密性を高めることが可能となる。また、暗号復元テーブル２ａを参照して、暗号を定数情報に復元するだけなので、端末装置２の負荷を抑えることが可能となる。
【発明の効果】
【００１０】
本発明では、サーバによって、オブジェクトファイルに含まれる定数情報を、暗号変換テーブルを参照して暗号に変換し、定数情報をオブジェクトファイルから削除して配信する。そして、端末装置によって、暗号変換テーブルと同じ内容を有する暗号復元テーブルを参照して、受信したオブジェクトファイルの暗号を定数情報に復元するようにした。
【００１１】
これにより、オブジェクトファイルの配信における機密性を高めることができる。また、暗号復元テーブルを参照して、暗号を定数情報に復元するだけなので、端末装置の負荷を抑えることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の原理を図面を参照して詳細に説明する。
図１は、オブジェクトファイル配信方法の概要を説明する図である。図に示すように、サーバ１と端末装置２は、ネットワーク３を介して接続されている。
【００１３】
サーバ１は、暗号変換テーブル１ａ、暗号変換部１ｂ、定数情報削除部１ｃ、および配信部１ｄを有している。オブジェクトファイル１ｅは、ネットワーク３を介して端末装置２に配信されるオブジェクトファイルである。
【００１４】
暗号変換テーブル１ａは、オブジェクトファイル１ｅに含まれる定数情報を暗号に変換するためのテーブルである。例えば、暗号変換テーブル１ａには、定数情報に対応して、数値が格納されている。
【００１５】
暗号変換部１ｂは、オブジェクトファイル１ｅに含まれる定数情報を、暗号変換テーブル１ａを参照して、暗号に変換する。
定数情報削除部１ｃは、オブジェクトファイル１ｅから、暗号変換部１ｂによって暗号に変換された定数情報を削除する。なお、暗号は、オブジェクトファイル１ｅに残っている。
【００１６】
配信部１ｄは、定数情報が削除されたオブジェクトファイル１ｅを、ネットワーク３を介して配信する。
端末装置２は、暗号復元テーブル２ａ、受信部２ｂ、および定数情報復元部２ｃを有している。オブジェクトファイル２ｄは、サーバ１から配信されたオブジェクトファイルである。
【００１７】
暗号復元テーブル２ａは、サーバ１から配信されたオブジェクトファイル２ｄの暗号を、元の定数情報に復元するためのテーブルである。暗号復元テーブル２ａは、サーバ１の暗号変換テーブル１ａと同じ内容を有している。
【００１８】
受信部２ｂは、サーバ１からネットワーク３を介して配信されたオブジェクトファイル２ｄを受信する。
定数情報復元部２ｃは、暗号復元テーブル２ａを参照して、オブジェクトファイル２ｄに含まれている暗号を定数情報に復元する。
【００１９】
以下、図１の動作について説明する。
サーバ１の暗号変換部１ｂは、配信しようとするオブジェクトファイル１ｅに含まれる定数情報を、暗号変換テーブル１ａを参照して暗号に変換する。
【００２０】
定数情報削除部１ｃは、オブジェクトファイル１ｅから、暗号に変換された定数情報を削除する。
配信部１ｄは、オブジェクトファイル１ｅを、ネットワーク３を介して配信する。
【００２１】
端末装置２の受信部２ｂは、サーバ１から配信されたオブジェクトファイル２ｄを受信する。定数情報復元部２ｃは、暗号復元テーブル２ａを参照して、オブジェクトファイル２ｄに含まれる暗号を元の定数情報に復元する。
【００２２】
このように、オブジェクトファイル１ｅに含まれる定数情報を、暗号変換テーブル１ａを参照して暗号に変換し、オブジェクトファイル１ｅから定数情報を削除して配信する。そして、端末装置２によって、暗号変換テーブル１ａと同じ内容を有する暗号復元テーブル２ａを参照して、受信したオブジェクトファイル２ｄの暗号を定数情報に復元するようにした。
【００２３】
これにより、オブジェクトファイル１ｅの配信における機密性を高めることができる。また、オブジェクトファイル２ｄの暗号を、暗号復元テーブル２ａを参照して定数情報に復元するだけなので、端末装置２の負荷を抑えることができる。
【００２４】
次に、本発明の第１の実施の形態を図面を参照して説明する。図２は、配信サーバと端末装置によるシステム構成例を示す図である。図に示すように、ネットワーク３０を介して、配信サーバ１０と端末装置２０とが接続されている。ネットワーク３０は、例えば、インターネットである。
【００２５】
配信サーバ１０は、仮想マシンで実行される、例えば、Ｊａｖａなどのオブジェクト指向言語のクラスファイル（コンパイラで翻訳されたオブジェクトファイル、プログラム定義体）をエンコード処理して、配信用クラスファイルを生成する。配信サーバ１０は、生成した配信用クラスファイルを、ネットワーク３０を介して配信する。
【００２６】
配信用クラスファイルは、デコード処理されることによって、実行可能な元のクラスファイルに戻るようになっている。デコード処理は、配信される配信用クラスファイルを受信し、実行できる権限を有する者（端末装置２０）のみによって、行われるようになっている。
【００２７】
端末装置２０は、ネットワーク３０を介して、配信用クラスファイルを受信し、実行できる権限を有する端末装置である。端末装置２０は、配信用クラスファイルをデコード処理し、実行可能な元のクラスファイルに戻す。
【００２８】
このように、配信サーバ１０によって、クラスファイルを配信用クラスファイルにエンコード処理して配信する。そして、配信用クラスファイルを受信して実行できる権限を有した端末装置２０によってのみ、配信用クラスファイルをクラスファイルにデコード処理することができるようにする。これによって、例えば、第三者によるクラスファイルの不正取得、解読を回避することができる。
【００２９】
次に、配信サーバ１０のハードウェア構成について説明する。図３は、配信サーバのハードウェア構成を示すブロック図である。図に示すように、配信サーバ１０は、ＣＰＵ(Central Processing Unit)１０ａによって装置全体が制御されている。ＣＰＵ１０ａには、バス１０ｈを介してＲＡＭ(Random Access Memory)１０ｂ、ハードディスクドライブ(ＨＤＤ:Hard Disk Drive)１０ｃ、グラフィック処理装置１０ｄ、入力インタフェース１０ｅ、通信インタフェース１０ｆ、およびキャッシュメモリ１０ｇが接続されている。
【００３０】
ＲＡＭ１０ｂには、ＣＰＵ１０ａに実行させるＯＳ(Operating System)のプログラムや、クラスファイルをエンコード処理するためのアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０ｂには、ＣＰＵ１０ａによる処理に必要な各種データが保存される。ＨＤＤ１０ｃには、ＯＳやクラスファイルをエンコード処理するためのアプリケーションプログラム、各種データなどが格納される。
【００３１】
キャッシュメモリ１０ｇには、ＣＰＵ１０ａによって頻繁にアクセスされるデータが格納される。ＣＰＵ１０ａは、キャッシュヒットした場合、キャッシュメモリ１０ｇからデータを取得し、キャッシュミスした場合、ＲＡＭ１０ｂ、ＨＤＤ１０ｃからデータを取得する。
【００３２】
グラフィック処理装置１０ｄには、モニタ１０ｉが接続されている。グラフィック処理装置１０ｄは、ＣＰＵ１０ａからの命令に従って、画像をモニタ１０ｉの表示画面に表示させる。入力インタフェース１０ｅには、キーボード１０ｊと、マウス１０ｋとが接続されている。入力インタフェース１０ｅは、キーボード１０ｊやマウス１０ｋから送られてくる信号を、バス１０ｈを介してＣＰＵ１０ａに送信する。
【００３３】
通信インタフェース１０ｆは、ネットワーク３０に接続されている。通信インタフェース１０ｆは、ネットワーク３０を介して、端末装置２０と通信を行う。
なお、端末装置２０も図３と同様のハードウェア構成で実現することができる。ただし、端末装置２０のＨＤＤには、配信用クラスファイルのデコード処理が可能なプログラムおよびデータが格納される。
【００３４】
以上のようなハードウェア構成によって、オブジェクトファイルの配信の処理機能を実現することができる。
次に、配信サーバ１０、端末装置２０の機能について説明する。図４は、配信サーバの機能ブロック図である。図に示すように、配信サーバ１０は、エンコード処理部１１、ヘッダ情報変換部１２、定数情報解析・変換部１３、名前インデックス検索部１４、および名前管理テーブル１５を有している。
【００３５】
名前管理テーブル１５は、クラスファイルに文字列として格納される、プログラムに記述されたクラス名、フィールド（変数）名、フィールドの型名、メソッド名、メソッドの型名を、所定の数値に変換するためのテーブルである。すなわち、名前管理テーブル１５に格納されているクラス名等を所定の数値に変換し、端末装置２０に送信することによって、第三者に不正に取得、解読されることが防止される。名前管理テーブル１５は、例えば、図３で示したＨＤＤ１０ｃやＲＡＭ１０ｂの記憶装置に構築される。
【００３６】
図５は、名前管理テーブルの構成例を示した図である。図に示すように、名前管理テーブル１５の名前の欄には、クラス名、フィールド名、フィールドの型名、メソッド名、メソッドの型名が格納される。インデックスの欄には、名前を数値変換するための数値が格納される。図５の例において、“Ｈｅｌｌｏ”は、数値１０に変換される。“ｇｅｔＯｂｊｅｃｔ”は、数値１２３に変換される。なお、上記の名前以外の、例えば、付加情報の名前と、それに対応する数値も格納してもよい。
【００３７】
エンコード処理部１１は、配信するよう指定されたクラスファイルを読み込む。エンコード処理部１１は、クラスファイルの先頭にあるヘッダ情報によって、読み込んだクラスファイルが適切なものであるか否かを判断する。例えば、Ｊａｖａコンパイラで翻訳されたＪａｖａのクラスファイルの場合、先頭にあるヘッダ情報の４バイトの値は、０ｘｃａｆｅｂａｂｅである。従って、エンコード処理部１１は、先頭にあるヘッダ情報の４バイトの値が０ｘｃａｆｅｂａｂｅであるか否かによって、Ｊａｖａのクラスファイルであるか否かを判断する。また、エンコード処理部１１は、定数情報解析・変換部１３より生成される配信用クラスファイルを、ネットワーク３０を介して、端末装置２０に配信する。
【００３８】
ヘッダ情報変換部１２は、エンコード処理部１１によって、適正と判断されたクラスファイルのヘッダ情報を、配信用クラスファイルのヘッダ情報に変換する。これにより、クラスファイルと配信用クラスファイルを区別することができる。
【００３９】
定数情報解析・変換部１３は、クラスファイルを配信用クラスファイルに変換、生成する。定数情報解析・変換部１３は、クラスファイルのコンスタントプール（定数情報）を読み込む。定数情報解析・変換部１３は、コンスタントプールからプログラムのクラス名、フィールド名、フィールドの型名、メソッド名、メソッドの型名を抽出する。定数情報解析・変換部１３は、抽出した名前が名前管理テーブル１５に存在し、その名前に対応した数値が名前インデックス検索部１４によって検索された場合、検索された数値を配信用クラスファイルに書き込む。定数情報解析・変換部１３は、抽出した名前が名前管理テーブル１５に存在せず、数値が検索されなかった場合、クラスファイルのその名前をそのまま配信用クラスファイルに書き込む。
【００４０】
名前インデックス検索部１４は、定数情報解析・変換部１３によって抽出されたクラス名等に対応する数値を、名前管理テーブル１５から検索する。そして、定数情報解析・変換部１３に引き渡す。また、名前インデックス検索部１４は、抽出されたクラス名等と検索した数値を、キャッシュメモリ１０ｇに格納する。一度抽出されたクラス名等と検索した数値は、再度抽出、検索する可能性が高いからである。これによって、頻繁に抽出、検索が行われるクラス名等と数値は、キャッシュメモリ１０ｇに格納され、検索時間が短縮される。なお、キャッシュメモリ１０ｇの容量がいっぱいになると、アクセス頻度の低いクラス名等と数値から破棄していく。また、このキャッシュ機能は、仮想マシン上の命令によってサポートされる。また、図４の機能をＪａｖａプロセッサによって実現する場合は、Ｊａｖａプロセッサの命令によってキャッシュ機能がサポートされる。
【００４１】
ここで、クラスファイル、配信用クラスファイルの構成例について説明する。
図６は、クラスファイルの構成例を示した図である。図に示すように、クラスファイル４０は、領域４１〜４６に分かれている。
【００４２】
領域４１には、クラスファイルであることを示すヘッダ情報が格納される。ヘッダ情報は、例えば、Ｊａｖａクラスファイルであれば、０ｘｃａｆｅｂａｂｅが格納される。
領域４２には、名前の位置情報、名前の文字列、およびそれ以外の定数情報が格納される。領域４２は、図に示すように、さらに領域４２ａ〜領域４２ｃに分かれている。
【００４３】
領域４２ａには、名前の位置情報が格納される。名前の位置情報は、領域４２ｂに格納される名前の文字列の位置を数値で示している。例えば、図６の例では、名前の位置情報の２２は、名前の文字列の“Ｈｅｌｌｏ”の位置を示している。名前の位置情報の２８は、名前の文字列の“ｄａｔａ”の位置を示している。
【００４４】
領域４２ｂには、プログラムのクラス名、フィールド名、フィールドの型名、メソッド名、メソッドの型名の文字列が格納される。
領域４２ｃには、名前の位置情報、名前の文字列以外のプログラムに関する定数情報が格納される。
【００４５】
領域４３には、クラスの実体とそのクラス名の格納場所を指し示す数値のクラス情報が格納される。クラス名の格納場所を指し示す数値は、領域４２ａの名前の位置情報の、数値の位置を指し示している。図６の例では、領域４３のクラス情報の２は、領域４２ａの名前の位置情報の２２を指し示している。
【００４６】
領域４４には、フィールドの実体とそのフィールド名の格納場所を指し示す数値のフィールド情報が格納される。フィールド名の格納場所を指し示す数値は、領域４２ａの名前の位置情報の、数値の位置を指し示している。図６の例では、領域４４のフィールド情報の５は、領域４２ａの名前の位置情報の２８を指し示している。
【００４７】
領域４５には、メソッドの実体とそのメソッド名の格納場所を指し示す数値のメソッド情報が格納される。メソッド名の格納場所を指し示す数値は、領域４２ａの名前の位置情報の、数値の位置を指し示している。図６の例では、領域４５のメソッド情報の７は、領域４２ａの名前の位置情報の３１を指し示している。
【００４８】
図７は、配信用クラスファイルの構成例を示した図である。図に示すように、配信用クラスファイル５０は、図６のクラスファイル４０と同様に領域が分けられている。図７において、図６と同じものには同じ符号を付し、その説明は省略する。
【００４９】
配信用クラスファイル５０の名前の位置情報が格納される領域５１は、クラスファイル４０の領域４２ａを２分割した状態となっており、名前の文字列の位置を示す数値と、名前管理テーブル１５を参照して変換された名前の文字列の数値が格納される。なお、名前管理テーブル１５に名前の文字列がなかった場合は、０が格納される。
【００５０】
例えば、図７の例において、領域５１には、“Ｈｅｌｌｏ”の位置を示す数値２２と、名前管理テーブル１５を参照して変換された“Ｈｅｌｌｏ”の数値の１０が組になって格納されている。また、上記で説明したように、“Ｈｅｌｌｏ”は、数値に変換できたので、名前の文字列には書き込まれていない。
【００５１】
配信用クラスファイル５０の名前の文字列が格納される領域５２には、名前管理テーブル１５を参照して数値に変換されなかった名前の文字列が書き込まれる。すなわち、数値に変換されたクラス名、フィールド名、フィールドの型名、メソッド名、メソッドの型名の文字列は、配信用クラスファイルから削除された形となる。
【００５２】
なお、クラス名、フィールド名、フィールドの型名、メソッド名、メソッドの型名の変換された定数情報を所定の関数によって暗号化し、配信用クラスファイルに書き込むようにしてもよい。以下に、暗号化に用いられる関数の例を式（１）に示す。
暗号化された数値＝ｆ（Ｘ，Ｙ，Ｚ）                  ……（１）
ここで、関数ｆは、例えば、Ｘ＋ｍｏｄ（Ｙ，Ｚ）の演算を行う。変数Ｘは、クラス名、フィールド名、フィールドの型名、メソッド名、メソッドの型名の変換された数値である。変数Ｙは、配信用クラスファイルの属性値で、例えば、配信用クラスファイルのサイズ、またはチェックサム値である。変数Ｚは、変換された数値の属性値で、例えば、その数値の個数、サイズ、またはチェックサム値である。
【００５３】
これにより、配信用クラスファイルの機密性をより高くすることができる。なお、クラス名、フィールド名、フィールドの型名、メソッド名、メソッドの型名の変換された数値のみを暗号化することにより、配信用クラスファイル全部を暗号化して配信するより、端末装置２０の負荷は大きくならない。
【００５４】
なお、領域４１のヘッダ情報には、ヘッダ情報変換部１２によって配信用クラスファイルのヘッダ情報が格納される。
次に、端末装置２０の機能について説明する。図８は、端末装置の機能ブロック図である。図に示すように端末装置２０は、デコード処理部２１、ヘッダ情報変換部２２、定数情報解析・変換部２３、名前インデックス検索部２４、および名前管理テーブル２５を有している。
【００５５】
名前管理テーブル２５は、図４で示した名前管理テーブル１５と同じデータが格納されたテーブルである。名前管理テーブル１５のデータは、例えば、暗号化されて、配信サーバ１０から、ネットワーク３０を介して送られてくる。そして、名前管理テーブル１５のデータを名前管理テーブル２５にコピーする。または、名前管理テーブル１５のデータを、例えば、記憶媒体に記憶して郵送することにより、名前管理テーブル２５のデータを名前管理テーブル１５と同じデータにする。名前管理テーブル２５は、例えば、ＨＤＤやＲＡＭの記憶装置に構築される。
【００５６】
デコード処理部２１は、ネットワーク３０を介して送られてくる配信用クラスファイルを受信する。デコード処理部２１は、配信用クラスファイルの先頭にあるヘッダ情報によって、受信した配信用クラスファイルが適正なものか否かを判断する。デコード処理部２１は、定数情報解析・変換部２３により変換されたクラスファイルを、例えば、プログラムを実行する処理部に出力する。
【００５７】
ヘッダ情報変換部２２は、デコード処理部２１によって、適正と判断された配信用クラスファイルのヘッダ情報を、クラスファイルのヘッダ情報に変換する。例えば、Ｊａｖａコンパイラで翻訳されたＪａｖａクラスファイルの場合、先頭にあるヘッダ情報の４バイトの値は、０ｘｃａｆｅｂａｂｅである。従って、デコード処理部２１は、先頭にあるヘッダ情報の４バイトの値を０ｘｃａｆｅｂａｂｅに変更する。
【００５８】
定数情報解析・変換部２３は、ネットワーク３０より受信された配信用クラスファイルをクラスファイルに変換、生成する。定数情報解析・変換部２３は、受信された配信用クラスファイルのコンスタントプール（定数情報）を読み込む。定数情報解析・変換部２３は、コンスタントプールからクラス名、フィールド名、フィールドの型名、メソッド名、メソッドの型名の変換された数値を抽出する。定数情報解析・変換部２３は、抽出した数値が名前管理テーブル２５に存在し、その数値に対応するクラス名等が名前インデックス検索部２４によって検索された場合、そのクラス名等をクラスファイルに書き込む。定数情報解析・変換部２３は、抽出した数値が名前管理テーブル２５に存在せず、名前インデックス検索部２４によって検索されなかった場合、配信用クラスファイルにあるクラス名等をそのままクラスファイルに書き込む。
【００５９】
例えば、図７に示す配信用クラスファイル５０がデコード処理部２１に受信されたとする。定数情報解析・変換部２３は、領域５１から順に、名前の文字列の変換された数値を取得する。定数情報解析・変換部２３は、数値が０でなければ、名前管理テーブル２５を参照して、その数値に対応する名前を取得し、図６に示すクラスファイル４０の領域４２ｂに示すように、名前の文字列を復元していく。
【００６０】
名前インデックス検索部２４は、定数情報解析・変換部２３によって抽出された数値に対応するクラス名等を、名前管理テーブル２５から検索する。そして、定数情報解析・変換部２３に引き渡す。また、名前インデックス検索部２４は、抽出された数値と検索したクラス名等を、キャッシュメモリ１０ｇに格納する。一度抽出された数値と検索したクラス名等は、再度抽出、検索する可能性が高いからである。これによって、頻繁に抽出、検索が行われる数値とクラス名等は、キャッシュメモリ１０ｇに格納され、検索時間が短縮される。なお、キャッシュメモリ１０ｇの容量がいっぱいになると、アクセス頻度の低い数値とクラス名等から破棄していく。また、このキャッシュ機能は、仮想マシン上の命令によってサポートされる。また、図８の機能をＪａｖａプロセッサによって実現する場合は、Ｊａｖａプロセッサの命令によってキャッシュ機能がサポートされる。
【００６１】
なお、上記のデコード処理の機能をクラスローダなどの実行環境に組み込んでもよい。この場合、受信した配信用クラスファイルを独立して復元する必要はなく、クラスローダの実行中において上記のデコード処理を行うようにしてもよい。
【００６２】
次に、フローチャートを用いて、配信サーバ１０、端末装置２０の動作について説明する。
図９、１０は、配信サーバが実行する処理手順を示したフローチャートである。配信サーバ１０は、以下のステップに従って処理を実行する。
【００６３】
［ステップＳ１］配信サーバ１０のエンコード処理部１１は、クラスファイルを読み込む。
［ステップＳ２］エンコード処理部１１は、クラスファイルのヘッダから、適切なクラスファイルか否かを判断する。エンコード処理部１１が、適正なクラスファイルと判断した場合、ステップＳ３へ進む。エンコード処理部１１が、適正なクラスファイルでないと判断した場合、処理を終了する。
【００６４】
［ステップＳ３］ヘッダ情報変換部１２は、クラスファイルのヘッダ情報を配信用クラスファイルのヘッダ情報に書き換える。
［ステップＳ４］定数情報解析・変換部１３は、クラスファイルのデータを先頭から順次読み込む。定数情報解析・変換部１３は、データの読み込みが、クラスファイルの最後に達したか否かを判断する。定数情報解析・変換部１３が、クラスファイルの最後までデータの読み込みが達したと判断した場合は、ステップＳ１５へ進む。定数情報解析・変換部１３が、クラスファイルの最後までデータの読み込みが達していないと判断した場合は、ステップＳ５へ進む。
【００６５】
［ステップＳ５］定数情報解析・変換部１３は、クラスファイルから読み込んだデータが、名前の位置情報（図６に示した領域４２ａの名前の位置情報）であるか否かを判断する。定数情報解析・変換部１３が、名前の位置情報と判断した場合は、ステップＳ６へ進む。定数情報解析・変換部１３が、名前の位置情報と判断しなかった場合は、ステップＳ１０へ進む。なお、定数情報解析・変換部１３は、読み込んだデータを名前の位置情報と判断した場合、名前の位置情報を基に、クラスファイルに格納されているクラス名、フィールド名、フィールドの型名、メソッド名、メソッドの型名を抽出する。
【００６６】
［ステップＳ６］名前インデックス検索部１４は、定数情報解析・変換部１３が抽出したクラス名、フィールド名、フィールドの型名、メソッド名、メソッドの型名に対応する数値（インデックス）を、名前管理テーブル１５から検索する。
【００６７】
［ステップＳ７］名前インデックス検索部１４は、数値（インデックス）が名前管理テーブル１５に存在したか否かを判断する。数値が、名前管理テーブル１５に存在した場合は、ステップＳ８へ進む。数値が、名前管理テーブル１５に存在しなかった場合は、ステップＳ９へ進む。
【００６８】
［ステップＳ８］定数情報解析・変換部１３は、抽出したクラス名等に対応する数値を配信用クラスファイルに書き込む。
［ステップＳ９］定数情報解析・変換部１３は、抽出したクラス名等に対応する数値を０として配信用クラスファイルに書き込む。
【００６９】
［ステップＳ１０］定数情報解析・変換部１３は、クラスファイルから読み込んだデータが、クラス名等の名前の文字列（図６に示した領域４２ｂの名前の文字列）であるか否かを判断する。定数情報解析・変換部１３が、名前の文字列と判断した場合は、ステップＳ１１へ進む。定数情報解析・変換部１３が、名前の文字列と判断しなかった場合は、ステップＳ１３へ進む。
【００７０】
［ステップＳ１１］名前インデックス検索部１４は、ステップＳ１０より読み込んだデータ（名前の文字列）に対応する数値が名前管理テーブル１５に存在するか否かを判断する。名前インデックス検索部１４が、名前管理テーブル１５に、名前の文字列に対応する数値が存在すると判断した場合、ステップＳ１２へ進む。名前インデックス検索部１４が、名前管理テーブル１５に、名前の文字列に対応する数値が存在しないと判断した場合、ステップＳ１４へ進む。
【００７１】
［ステップＳ１２］定数情報解析・変換部１３は、配信用クラスファイル（図７に示した領域５２の名前の文字列）にクラス名等の名前の文字列を書き込まない。
［ステップＳ１３］定数情報解析・変換部１３は、読み込んだデータをそのまま配信用クラスファイルに書き込む。
【００７２】
［ステップＳ１４］定数情報解析・変換部１３は、配信用クラスファイル（図７に示した領域５２）にクラス名等の名前の文字列を書き込む。
［ステップＳ１５］エンコード処理部１１は、ネットワーク３０を介して配信用クラスファイルを配信する。
【００７３】
図１１、１２は、端末装置が実行する処理手順を示したフローチャートである。端末装置２０は、以下のステップに従って処理を実行する。
［ステップＳ２１］端末装置２０のデコード処理部２１は、ネットワーク３０から配信用クラスファイルを受信する。
【００７４】
［ステップＳ２２］デコード処理部２１は、受信した配信用クラスファイルのヘッダから、適正な配信用クラスファイルか否かを判断する。デコード処理部２１が、適正なクラスファイルと判断した場合、ステップＳ２３へ進む。デコード処理部２１が、適正なクラスファイルでないと判断した場合、処理を終了する。
【００７５】
［ステップＳ２３］ヘッダ情報変換部２２は、配信用クラスファイルのヘッダ情報をクラスファイルのヘッダ情報に書き換える。
［ステップＳ２４］定数情報解析・変換部２３は、受信した配信用クラスファイルのデータを先頭から順次読み込む。定数情報解析・変換部２３は、データの読み込みが、配信用クラスファイルの最後に達したか否かを判断する。定数情報解析・変換部２３が、データの読み込みがクラスファイルの最後まで達したと判断した場合は、ステップＳ３４へ進む。定数情報解析・変換部２３が、データの読み込みがクラスファイルの最後まで達してないと判断した場合は、ステップＳ２５へ進む。
【００７６】
［ステップＳ２５］定数情報解析・変換部２３は、配信用クラスファイルから読み込んだデータが、名前の位置情報（図７に示した領域５１の名前の位置情報）であるか否かを判断する。定数情報解析・変換部２３が、名前の位置情報と判断した場合は、ステップＳ２６へ進む。定数情報解析・変換部２３が、名前の位置情報と判断しなかった場合は、ステップＳ２９へ進む。なお、定数情報解析・変換部２３は、読み込んだデータを名前の位置情報と判断した場合、名前の位置情報と共に格納されているクラス名、フィールド名、フィールドの型名、メソッド名、メソッドの型名の変換された数値を抽出する。
【００７７】
［ステップＳ２６］名前インデックス検索部２４は、定数情報解析・変換部２３が抽出した数値（インデックス）に対応するフィールド名、フィールドの型名、メソッド名、メソッドの型名を名前管理テーブル２５から検索する。
【００７８】
［ステップＳ２７］名前インデックス検索部２４は、クラス名等の変換された数値が名前管理テーブル２５に存在したか否かを判断する。数値が、名前管理テーブル２５に存在した場合は、ステップＳ２８へ進む。数値が、名前管理テーブル２５に存在しなかった場合は、ステップＳ２４へ進む。
【００７９】
［ステップＳ２８］定数情報解析・変換部２３は、数値に対応する名前を、数値と共にメモリ（例えば、図３に示したＲＡＭ１０ｂ）に保存する。
［ステップＳ２９］定数情報解析・変換部２３は、配信用クラスファイルから読み込んだデータが、名前の文字列（図７に示した領域５２の名前の文字列）であるか否かを判断する。定数情報解析・変換部２３が、名前の文字列と判断した場合は、ステップＳ３０へ進む。定数情報解析・変換部２３が、名前の文字列と判断しなかった場合は、ステップＳ３２へ進む。
【００８０】
［ステップＳ３０］名前インデックス検索部２４は、ステップＳ２８によってメモリに保存された名前に対応する数値、ステップＳ２９により読み込んだデータ（名前の文字列）に対応する数値が、名前管理テーブル２５に存在するか否かを判断する。名前インデックス検索部２４が、名前管理テーブル２５に、メモリに保存されている名前に対応する数値、読み込んだ名前の文字列に対応する数値が存在すると判断した場合、ステップＳ３１へ進む。名前インデックス検索部２４が、名前管理テーブル２５に、メモリに保存されている名前に対応する数値、読み込んだ名前の文字列に対応する数値が存在しないと判断した場合、ステップＳ３３へ進む。
【００８１】
［ステップＳ３１］定数情報解析・変換部２３は、メモリに保存していたクラス名等の名前をクラスファイルに書き込む。
［ステップＳ３２］定数情報解析・変換部２３は、配信用クラスファイルから読み込んだデータをそのままクラスファイルに書き込む。
【００８２】
［ステップＳ３３］定数情報解析・変換部２３は、ステップＳ２９により読み込んだクラス名等の名前の文字列をクラスファイルに書き込む。
［ステップＳ３４］デコード処理部２１は、クラスファイルを、例えば、プログラムを実行する処理部に出力する。
【００８３】
このように、配信サーバ１０によって、クラスファイルの定数情報を、名前管理テーブル１５によって数値にエンコードして配信用クラスファイルを生成し、配信する。そして、端末装置２０によって、受信した配信用クラスファイルの数値を、名前管理テーブル２５によって定数情報にデコードしてクラスファイルに復元するようにした。
【００８４】
これにより、クラスファイルの配信における機密性を高くすることができ、例えば、第三者からの不正取得、解読を回避することができる。また、テーブルを参照して、配信用クラスファイルの数値を定数情報にデコードするようにしたので、端末装置２０が行う処理の負荷を抑えることができる。
【００８５】
次に、本発明の第２の実施の形態を図面を参照して説明する。ネットワークに接続された複数の電子機器において、各機器間の相互制御やエージェント技術を利用した自律システムおよび分散システムが考えられる。Ｊａｖａは、ネットワークでの配信が可能という特徴を有し、それによって大規模な処理を複数の機器に分散させ、負荷を軽減することが可能となる。また、センターから電子機器へのプログラムの自動更新も可能となる。よって、電子機器間でプログラムおよびモジュール（プログラム部品）の送受信を行う場合、プログラムの機密を高める必要がある。そこで、第２の実施の形態では、電子機器間のプログラムの送受信について説明する。
【００８６】
図１３は、電子機器によるシステム構成例を示す図である。図に示すように、ネットワーク７０を介して、電子機器６１〜６３が接続されている。ネットワーク７０は、例えば、ＬＡＮ（Local Area Network）である。
【００８７】
電子機器６１〜６３は、図４、図８で示した機能ブロックを有し、クラスファイルを送受信する。なお、名前管理テーブル１５，２５は、同じ内容を有しているので、１つだけ具備されている。そして、名前インデックス検索部１４，２４は、１つの名前管理テーブルにアクセスする。また、電子機器６１〜６３は、同じ内容の名前管理テーブルを具備している。
【００８８】
電子機器６１は、例えば、パーソナルコンピュータである。電子機器６２は、例えば、電子レンジである。電子機器６３は、例えば、テレビである。電子機器６１は、例えば、電子機器６２，６３にクラスファイルを送信し、制御、監視を行う。電子機器６２，６３は、例えば、互いにクラスファイルを送受信して相互制御を行う。具体的には、互いに電力監視を行い、一方が使用状態であれば、他方に対し低電力制御を行う。
【００８９】
このように、電子機器において、図４、図８で示した機能ブロックを有することにより、オブジェクトファイルの送受信における機密性を高めることができる。また、暗号復元テーブルを参照して、暗号を定数情報に復元するだけなので、電子機器の負荷を抑えることができる。特に、プロセッサの処理性能や資源の制約がある家電などの電子機器において有効である。
【図面の簡単な説明】
【００９０】
【図１】オブジェクトファイル配信方法の概要を説明する図である。
【図２】配信サーバと端末装置によるシステム構成例を示す図である。
【図３】配信サーバのハードウェア構成を示すブロック図である。
【図４】配信サーバの機能ブロック図である。
【図５】名前管理テーブルの構成例を示した図である。
【図６】クラスファイルの構成例を示した図である。
【図７】配信用クラスファイルの構成例を示した図である。
【図８】端末装置の機能ブロック図である。
【図９】配信サーバが実行する処理手順を示したフローチャートである。
【図１０】配信サーバが実行する処理手順を示したフローチャートである。
【図１１】端末装置が実行する処理手順を示したフローチャートである。
【図１２】端末装置が実行する処理手順を示したフローチャートである。
【図１３】電子機器によるシステム構成例を示す図である。
【符号の説明】
【００９１】
１  サーバ
１ａ  暗号変換テーブル
１ｂ  暗号変換部
１ｃ  定数情報削除部
１ｄ  配信部
１ｅ，２ｄ  オブジェクトファイル
２  端末装置
２ａ  暗号復元テーブル
２ｂ  受信部
２ｃ  定数情報復元部
３  ネットワーク
【図１】
2006053406.tif 000003
【図２】
2006053406.tif 000004
【図３】
2006053406.tif 000005
【図４】
2006053406.tif 000006
【図５】
2006053406.tif 000007
【図６】
2006053406.tif 000008
【図７】
2006053406.tif 000009
【図８】
2006053406.tif 000010
【図９】
2006053406.tif 000011
【図１０】
2006053406.tif 000012
【図１１】
2006053406.tif 000013
【図１２】
2006053406.tif 000014
【図１３】
2006053406.tif 000015