(57)【要約】  実行中の命令を再結合する方法は、以下を含む。命令実行環境がバッファリングされる。スケジューリングされる機械命令セグメントが取得される。アドレスＡ”を有する再結合命令セグメントを生成するために、命令再結合プラットフォームの入口アドレスを指定する第２ジャンプ命令が、取得された上記機械命令セグメントの最終命令の前に挿入される。バッファリングされた上記命令実行環境のアドレスレジスタの値Ａが、上記アドレスＡ”に変更される。上記命令実行環境がリカバリされる。実行中の命令を再結合する装置は、命令実行環境のバッファリングおよびリカバリングを行うための、命令実行環境バッファリングおよびリカバリングユニットと、スケジューリングされた上記機械命令セグメントを取得するための、命令取得ユニットと、上記アドレスＡ”を持つ再結合命令セグメントを生成するための、命令再結合ユニットと、バッファリングされた上記命令実行環境のアドレスレジスタの値を、上記再結合命令セグメントのアドレスに変更するための、命令置換ユニットとを備えている。コンピューティングデバイスの実行中の命令に対する監視および制御が完了する。
2014515858.tif 000002
【特許請求の範囲】
【請求項１】
命令実行コンテクストを保存するステップと、
スケジューリングされる機械命令セグメントを取得し、再結合命令セグメントを生成する第２制御転送命令であって、命令再結合プラットフォームの入口アドレスを指定する第２制御転送命令を、上記スケジューリングされる機械命令セグメントの最終命令の前に挿入し、上記命令実行コンテクストにおけるアドレスレジスタの値を、上記再結合命令セグメントのアドレスに変更する、ステップと、
上記アドレスレジスタの値が更新された上記命令実行コンテクストを復元するステップとを含む、実行中の命令を再結合する方法。
【請求項２】
スケジューリングされる機械命令セグメントを取得する上記ステップは、
スケジューリングされる機械命令のアドレスをＣＰＵアドレスレジスタから読み出すステップと、
スケジューリングされる機械命令の上記アドレスにしたがって、最終命令が制御転送命令である機械命令セグメントを読み出すステップとを含む、請求項１に記載の、実行中の命令を再結合する方法。
【請求項３】
スケジューリングされる機械命令の上記アドレスにしたがって、機械命令セグメントを読み出す上記ステップは、
スケジューリングされる上記機械命令の上記アドレスに対応する機械命令を、第１の制御転送命令が検出されるまで検索するステップを含み、
上記制御転送命令は、ＪＭＰ命令およびＣＡＬＬ命令を含む、請求項２に記載の、実行中の命令を再結合する方法。
【請求項４】
上記方法は、さらに、命令実行コンテクストを保存後、かつ、スケジューリングされる機械命令セグメントの取得前に、
再結合される機械命令セグメントが保存された再結合命令セグメントを有しているか否かを示すために用いられるアドレス対応テーブルを、上記アドレスレジスタの値にしたがって検索するステップと、
上記アドレス対応テーブルにおいてレコードが検出された場合に、上記アドレスレジスタの値を上記レコードの値に変更し、上記アドレスレジスタの値が更新された上記命令実行コンテクストを復元するステップとを含む、請求項１に記載の、実行中の命令を再結合する方法。
【請求項５】
上記再結合命令セグメントのアドレスおよび更新前のアドレスレジスタの値を用いて、アドレス対応テーブルにレコードを生成するステップをさらに含む、請求項４に記載の、実行中の命令を再結合する方法。
【請求項６】
上記方法は、さらに、
処理対象の機械命令を取得するために、第２制御転送命令の挿入前に、上記機械命令セグメントを特定するための命令セットを用いて、上記機械命令セグメントを分析するステップと、
上記対象の機械命令を事前に定められた方式で変更するステップとを含む、請求項１に記載の、実行中の命令を再結合する方法。
【請求項７】
上記対象の機械命令は保存命令または読み出し命令であり、上記対象の機械命令を事前に定められた方式で変更するステップは、
保存命令または読み出し命令の保存アドレスまたは読み出しアドレスを、安全な装置の対応するアドレスに変更するステップを含む、請求項６に記載の、実行中の命令を再結合する方法。
【請求項８】
上記対象の機械命令はＩ／Ｏ命令であり、上記対象の機械命令を事前に定められた方式で変更するステップは、
上記Ｉ／Ｏ命令における入力命令をブロックするステップを含む、請求項６に記載の、実行中の命令を再結合する方法。
【請求項９】
上記対象の機械命令はネットワーク転送命令であり、上記対象の機械命令を事前に定められた方式で変更するステップは、
リモートコンピューティングデバイスに対応する、上記ネットワーク転送命令の宛先アドレスが、許可されたアドレスであるか否かを判断するステップと、
上記宛先アドレスが許可されたアドレスでない場合に上記ネットワーク転送命令をブロックするステップとを含む、請求項６に記載の、実行中の命令を再結合する方法。
【請求項１０】
命令実行コンテクストを保存するステップと、
スケジューリングされる機械命令セグメントを取得するステップと、
上記機械命令セグメントをアセンブリ命令セグメントに分解するステップと、
再結合アセンブリ命令セグメントを生成する第２制御転送命令であって、命令再結合プラットフォームの入口アドレスを指定する第２制御転送命令を、上記アセンブリ命令セグメントの最終命令の前に挿入するステップと、
再結合機械命令セグメントを取得するために、上記再結合アセンブリ命令セグメントを組み立てて、上記命令実行コンテクストのアドレスレジスタの値を、上記再結合アセンブリ命令セグメントのアドレスに変更するステップと、
上記アドレスレジスタの値が更新された上記命令実行コンテクストを復元するステップとを含む、実行中の命令を再結合する方法。
【請求項１１】
コンピュータに、請求項１に記載の上記方法にしたがって命令を実行させるためのコンピュータプログラムを記憶する、非一時的なコンピュータ読み取り可能な記録媒体。
【請求項１２】
命令実行コンテクストを保存および復元する、命令実行コンテクスト保存および復元ユニットと、
上記命令実行コンテクスト保存および復元ユニットが上記命令実行コンテクストを保存した後で、スケジューリングされる機械命令セグメントを取得する、命令取得ユニットと、
再結合命令セグメントを生成するために、上記スケジューリングされる機械命令セグメントを分析して変更する、命令再結合ユニットと、
上記命令実行コンテクストにおけるアドレスレジスタの値を、上記再結合命令セグメントのアドレスに変更する、命令置換ユニットとを備えている、実行中の命令を再結合する装置。
【請求項１３】
上記命令取得ユニットは、スケジューリングされる機械命令のアドレスをＣＰＵアドレスレジスタから読み出し、該機械命令のアドレスにしたがって、機械命令セグメントの最終命令が制御転送命令であるスケジューリングされる当該機械命令セグメントを読み出す、請求項１２に記載の、実行中の命令を再結合する装置。
【請求項１４】
さらに、上記命令実行コンテクストにおけるアドレスレジスタの値にしたがって、アドレス対応テーブルを検索する、命令検索ユニットを備え、上記アドレス対応テーブルは、再結合される上記機械命令セグメントが、保存され再結合された命令セグメントを有しているか否かを示すために用いられ、
上記アドレス対応テーブルにおいてレコードが検出された場合、上記命令検索ユニットは、上記アドレスレジスタの値を上記レコードの値に変更するために、上記命令置換ユニットを呼び出し、
上記アドレス対応テーブルにおいてレコードが検出されなかった場合、上記命令検索ユニットは、上記再結合命令セグメントのアドレスおよび上記アドレスレジスタの値を用いて、更新前に、上記アドレス対応テーブルにレコードを生成する、請求項１２に記載の、実行中の命令を再結合する装置。
【請求項１５】
上記命令再結合ユニットは、
命令セットを用いて上記機械命令セグメントを特定し、処理対象の機械命令を取得する、命令分析ユニットと、
上記対象の機械命令を事前に定められた方式で変更する、命令変更ユニットとを含む、請求項１２に記載の、実行中の命令を再結合する装置。
【請求項１６】
上記対象の機械命令が、保存命令または読み出し命令である場合、上記命令変更ユニットは、上記保存命令または上記読み出し命令の保存アドレスまたは読み出しアドレスを、安全な装置における対応するアドレスに変更する、請求項１５に記載の、実行中の命令を再結合する装置。
【請求項１７】
上記対象の機械命令が、Ｉ／Ｏ命令である場合、上記命令変更ユニットは、上記Ｉ／Ｏ命令における入力命令をブロックする、請求項１５に記載の、実行中の命令を再結合する装置。
【請求項１８】
上記対象の機械命令が、ネットワーク転送命令である場合、上記命令変更ユニットは、リモートコンピューティングデバイスに対応する、上記ネットワーク転送命令の宛先アドレスが許可されたアドレスであるか否かを判断し、上記宛先アドレスが許可されたアドレスでない場合、上記命令変更ユニットは、上記ネットワーク転送命令をブロックする、請求項１５に記載の、実行中の命令を再結合する装置。
【請求項１９】
上記機械命令セグメントを分析および変更する前に、スケジューリングされる上記機械命令セグメントを分解し、スケジューリングされるアセンブリ命令セグメントを生成する、分解ユニットと、
命令セグメントを分析および変更した後に、再結合アセンブリ命令セグメントを組み立てて、再結合機械命令セグメントを生成する、組み立てユニットとをさらに含む、請求項１２に記載の、実行中の命令を再結合する装置。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
〔技術分野〕
本発明は、コンピューティングデバイスにおける命令処理に関し、とりわけ、実行中の命令を再結合する方法および装置に関する。
【０００２】
〔背景技術〕
コンピュータを実行するとは、ソフトウェアがハードウェアに対して、結果を出力するように命令し、制御する処理である。しかしながら、コンピュータ実行時における、プログラムのバグ、システムの抜け穴、システムの脆弱性、悪意あるコードなどによって、ユーザの予期しない結果が、部分的にあるいは全体的にもたらされる可能性がある。
【０００３】
近年、この問題を解決するために、静的コード分析、脆弱性検出、悪質コードリストのセットアップ（例えば、ウイルス対策ソフトウェア）など、さまざまな方法が提供されている。しかし、静的コード分析は、ロジックの正確さおよびパラメータの定義を判断するのみであり、構文上の分析を行うにすぎない。また、脆弱性検出は、論理的な脆弱性を見つけるためのさまざまな論理的想定を試すもので、これも、静的分析に基づいている。また、悪質コードリストのセットアップは、すでに知られている限られた問題を解決できるにすぎない。
【０００４】
上述の各方法では現存する問題を完全に解決することはできず、これらの方法は、実行中の命令を分析するためのものではない。
【０００５】
したがって、コンピューティングデバイスにおいて実行中の命令を監視できる方法が必要となる。
【０００６】
〔発明の概要〕
本発明の各実施形態では、コンピューティングデバイスにおいて実行中の命令を監視および制御するために、実行中の命令を再結合する方法および装置が開示される。
【０００７】
本発明の一態様によれば、実行中の命令を再結合する方法は、
命令実行コンテクストを保存するステップと、
スケジューリングされる機械命令セグメントを取得し、アドレスＡ”を有する再結合命令セグメントを生成する第２制御転送命令であって、命令再結合プラットフォームの入口アドレスを指定する第２制御転送命令を、取得された上記スケジューリングされる機械命令セグメントの最終命令の前に挿入し、保存された上記命令実行コンテクストにおけるアドレスレジスタの値Ａを、上記再結合命令セグメントのアドレスＡ”に変更するステップと、
アドレスレジスタの値が更新された上記命令実行コンテクストを復元するステップとを含む。
【０００８】
あるいは、スケジューリングされる機械命令セグメントを取得するステップは、スケジューリングされる機械命令のアドレスをＣＰＵアドレスレジスタから読み出すステップと、該スケジューリングされる機械命令のアドレスにしたがって、機械命令セグメントの最終命令が制御転送命令である該機械命令セグメントを読み出すステップとを含んでいてもよい。
【０００９】
あるいは、上記スケジューリングされる機械命令のアドレスにしたがって、機械命令セグメントを読み出すステップは、ＪＭＰ命令またはＣＡＬＬ命令を含む第１制御転送命令が見つかるまで、上記スケジューリングされる機械命令のアドレスに対応する機械命令を検索するステップを含んでいてもよい。
【００１０】
あるいは、上記方法は、命令実行コンテクストを保存するステップよりも後、かつ、スケジューリングされる機械命令セグメントを取得するステップよりも前に、以下のステップを含んでいてもよい。すなわち、
再結合される上記機械命令セグメントが、アドレスＡ’を含む、保存され再結合された命令セグメントを、有しているか否かを示すために用いられるアドレス対応テーブルを、上記アドレスレジスタの値Ａにしたがって検索するステップと、
上記アドレス対応テーブルにおいてレコードが検出された場合に、上記アドレスレジスタの値Ａを上記レコードの値Ａ’に更新するステップと、上記アドレスレジスタの値が更新された上記命令実行コンテクストを復元するステップとを含んでいてもよい。
【００１１】
あるいは、上記実行中の命令を再結合する方法は、さらに、上記再結合された命令セグメントの上記アドレスＡ”および上記アドレスレジスタの値Ａを用いて、上記アドレス対応テーブルにレコードを生成するステップを含んでいてもよい。
【００１２】
あるいは、上記方法は、第２制御転送命令を挿入する前に、処理対象の機械命令を取得するために、上記機械命令セグメントを特定するための命令セットを用いて、上記機械命令セグメントを分析するステップと、上記対象の機械命令を事前に定められた方式で変更するステップとを含んでいてもよい。上記命令セットは、例えば、Ｘ８６命令セット、ＭＩＰＳ命令セット、ＡＲＭ命令セットなどである。
【００１３】
あるいは、上記対象の機械命令は、保存命令または読み出し命令であってもよい。そして、上記対象の機械命令を事前に定められた方式で変更するステップは、上記保存命令または上記読み出し命令の保存アドレスまたは読み出しアドレスを安全な装置における対応するアドレスに変更するステップを含んでいてもよい。
【００１４】
あるいは、上記対象の機械命令は、Ｉ／Ｏ命令であってもよい。そして、上記対象の機械命令を事前に定められた方式で変更するステップは、上記Ｉ／Ｏ命令のすべての入力命令をブロックするステップを含んでいてもよい。
【００１５】
あるいは、上記対象の機械命令は、ネットワーク転送命令であってもよい。そして、上記対象の機械命令を事前に定められた方式で変更するステップは、リモートコンピューティングデバイスに対応する、上記ネットワーク転送命令の宛先アドレスが、許可されたアドレスであるか否かを判断するステップと、上記宛先アドレスが許可されたアドレスでない場合に上記ネットワーク転送命令をブロックするステップとを含んでいてもよい。
【００１６】
本発明の他の態様によれば、実行中の命令を再結合する方法は、
命令実行コンテクストを保存するステップと、
スケジューリングされる機械命令セグメントを取得するステップと、
上記機械命令セグメントを、アセンブリ命令セグメントに分解するステップと、
アドレスＡ”を有する再結合アセンブリ命令セグメントを生成する第２制御転送命令であって、命令再結合プラットフォームの入口アドレスを指定する第２制御転送命令を、上記アセンブリ命令セグメントの最終命令の前に挿入するステップと、
再結合された機械命令セグメントを取得するために、上記再結合アセンブリ命令セグメントを組み立てて、上記保存された命令実行コンテクストにおけるアドレスレジスタの値を、上記再結合アセンブリ命令セグメントのアドレスに変更するステップと、
上記アドレスレジスタが更新された上記命令実行コンテクストを復元するステップとを含む。
【００１７】
さらに、本発明のさらに他の態様によれば、コンピュータ読み取り可能な非一時的記録媒体は、上述の方法のうちの一つに基づく命令をコンピュータに実行させるためのコンピュータプログラムを記憶している。
【００１８】
さらに、本発明のさらに他の態様によれば、実行中の命令を再結合する装置は、命令実行コンテクストを保存および復元する、命令実行コンテクスト保存および復元ユニットと、上記命令実行コンテクスト保存および復元ユニットが上記命令実行コンテクストを保存した後で、スケジューリングされる機械命令セグメントを取得する命令取得ユニットと、アドレスＡ”を有する再結合命令セグメントを生成するために、上記スケジューリングされる機械命令セグメントを分析して変更する命令再結合ユニットと、保存された上記命令実行コンテクストにおけるアドレスレジスタの値を、上記再結合命令セグメントのアドレスに変更する命令置換ユニットとを備えている。
【００１９】
あるいは、上記命令取得ユニットは、スケジューリングされる機械命令のアドレスをＣＰＵアドレスレジスタから読み出し、該機械命令のアドレスにしたがって、機械命令セグメントの最終命令が制御転送命令である該機械命令セグメントを読み出してもよい。
【００２０】
あるいは、上記実行中の命令を再結合する装置は、さらに、保存された上記命令実行コンテクストにおけるアドレスレジスタの値Ａを用いて、アドレス対応テーブルを検索する命令検索ユニットを備えていてもよい。上記アドレス対応テーブルは、再結合される上記機械命令セグメントが、アドレスＡ’を含む、保存され再結合された命令セグメントを、有しているか否かを示すために用いられる。上記アドレス対応テーブルにおいてレコードが検出された場合、上記命令検索ユニットは、上記アドレスレジスタの値Ａを上記レコードの値Ａ’に更新するために、上記命令置換ユニットを呼び出す。上記アドレス対応テーブルにおいてレコードが検出されなかった場合、上記命令検索ユニットは、上記再結合命令セグメントのアドレスＡ”および上記アドレスレジスタの値Ａを用いて、上記アドレス対応テーブルにレコードを生成する。
【００２１】
あるいは、上記命令再結合ユニットは、命令セットを用いて機械命令セグメントを特定し、処理対象の機械命令を取得する命令分析ユニットと、上記対象の機械命令を事前に定められた方式で変更する命令変更ユニットとを含んでいてもよい。上記命令セットは、例えば、Ｘ８６命令セット、ＭＩＰＳ命令セット、ＡＲＭ命令セットなどである。
【００２２】
あるいは、上記対象の機械命令が、保存命令または読み出し命令である場合、上記命令変更ユニットは、上記保存命令または上記読み出し命令の保存アドレスまたは読み出しアドレスを安全な装置における対応するアドレスに変更してもよい。
【００２３】
あるいは、上記対象の機械命令が、Ｉ／Ｏ命令である場合、上記命令変更ユニットは、上記Ｉ／Ｏ命令のすべての入力命令をブロックしてもよい。
【００２４】
あるいは、上記対象の機械命令が、ネットワーク転送命令である場合、上記命令変更ユニットは、リモートコンピューティングデバイスに対応する、上記ネットワーク転送命令の宛先アドレスが許可されたアドレスであるか否かを判断してもよく、上記宛先アドレスが許可されたアドレスでない場合、上記命令変更ユニットは、上記ネットワーク転送命令をブロックしてもよい。
【００２５】
あるいは、上記命令再結合ユニットは、さらに、上記機械命令セグメントを分析および変更する前に、スケジューリングされる機械命令セグメントを分解し、スケジューリングされるアセンブリ命令セグメントを生成する分解ユニットと、上記命令セグメントを分析および変更した後に、再結合された上記アセンブリ命令セグメントを組み立てて、再結合された機械命令セグメントを生成する組み立てユニットとを含んでいてもよい。
【００２６】
本発明による実施形態における上述の方法および装置は、従来技術と比較して以下の利点を有している。
（１）上記実行中の命令を再結合する方法により、コンピューティングデバイスの命令を実行時に監視することができる。
（２）命令の再結合効率が向上し、コンピューティングデバイスのコンピュータ資源（例えば、ＣＰＵ）が、アドレス対応テーブルを用いることにより確保される。
（３）保存命令および読み出し命令に関しては、保存命令および読み出し命令における宛先アドレスおよびソースアドレスを変更することにより、データセキュリティが保証された安全な装置にデータを保管するデータ集積場を実現することができる。
（４）Ｉ／Ｏ命令に関しては、Ｉ／Ｏ命令のすべての入力命令をブロックし、ローカルハードウェアに対する書き込み命令を防止することが可能となる。また、保存命令を除くすべての入力命令をブロックすることができるので、コンピューティングデバイスにおけるデータの安全性が向上する。
（５）ネットワーク転送命令に関しては、リモートコンピューティングデバイスに対応する、上記ネットワーク転送命令の宛先アドレスが許可されたアドレスであるか否かを判断して、該宛先アドレスが許可されていない場合に上記ネットワーク転送命令をブロックすることによって、転送時のデータの安全性を実現することができる。
【図面の簡単な説明】
【００２７】
【図１】図１は、本発明の第１実施形態における、実行中の命令を再結合する方法のフローチャートである。
【図２】図２は、本発明の第１の実施形態における、命令再結合処理および再結合された命令セグメントを示す概略図である。
【図３】図３は、本発明の第２実施形態における、実行中の命令を再結合する方法のフローチャートである。
【図４】図４は、本発明の第３実施形態における、実行中の命令を再結合する方法のフローチャートである。
【図５】図５は、本発明の第７の実施形態における、実行中の命令を再結合する装置を示す概略図である。
【図６】図６は、本発明の第８の実施形態における、実行中の命令を再結合する装置を示す概略図である。
【図７】図７は、本発明の第９の実施形態における、実行中の命令を再結合する装置の命令再結合ユニットを示す概略図である。
【図８】図８は、本発明の第１０の実施形態における、コンピュータ端末システムのアーキテクトまたはレイヤーを示す概略図である。
【図９】図９は、本発明の第１０の実施形態における、データ集積の処理全体を示すフローチャートである。
【図１０】図１０は、図９における、初期化処理Ｓ１０００のフローチャートである。
【図１１】図１１は、本発明の第１０の実施形態における、ビットマップを示す概略図である。
【図１２】図１２は、本発明の第１０の実施形態における、データを安全に保存する方法のフローチャートである。
【図１３】図１３は、本発明の第１０の実施形態における、データを安全に読み出す方法のフローチャートである。
【図１４】図１４は、本発明の第１１の実施形態における、データを安全に転送する方法のフローチャートである。
【図１５】図１５は、本発明の第１１の実施形態における、ネットワーク構造を示す概略図である。
【図１６】図１６は、本発明の第１２の実施形態における、データを安全に保存する装置を示す概略図である。
【図１７】図１７は、本発明の第１３の実施形態における、データを安全に読み出す装置を示す概略図である。
【００２８】
〔発明の詳細な説明〕
本発明の精神を当業者がよりよく理解するために、本発明に係る実施形態を図に基づいて、以下により詳細に説明する。
【００２９】
以下の各実施形態は、当業者が本発明の精神をよりよく理解するために用いられた本発明の一具体例にすぎない。しかし、本発明の保護範囲は、上述の具体例における具体的記述に限定されるべきではなく、本発明の具体例に対しては、本発明の精神の範囲を逸脱しない限りにおいて、さまざまな変形が当業者によって施され得る。
【００３０】
コンピュータが実行しているとき、ＣＰＵアドレスレジスタは、次に実行すべき機械命令のアドレスを保存している。本発明のいくつかの実施形態において、機械命令の実行中に監視を行うために、上記レジスタのデータが取得され、該レジスタのデータのしたがって、１または複数の実行すべき機械命令が読み出され、１または複数の機械命令からなるスケジューリングされる命令セグメントは変更され、そうして、制御権限が機械命令の各々が実行されるより前に取得され、以下の各命令の分析が続けて実行される。さらに、本発明のいくつかの実施形態において、スケジューリングされる上記機械命令セグメントを取得するステップの後、スケジューリングされる上記機械命令セグメントにおける対象の命令を処理するステップが実行される。したがって、実行中の命令が再結合および監視されるだけでなく、対象の命令も監視および更新される。
【００３１】
本発明の第１の実施形態によれば、実行中の命令を再結合する方法が提供される。図１に示すとおり、本方法は、以下の各ステップを含む。
Ｓ１０１、命令実行コンテクストを保存する。
Ｓ１０２、スケジューリングされる機械命令セグメントを取得して、上記取得された機械命令セグメントの最終命令の前に、アドレスＡ”を有する再結合命令セグメントを生成する、命令再結合プラットフォームの入口アドレスを指定する第２制御転送命令を挿入して、保存された上記命令実行コンテクストのアドレスレジスタの値ＡをＡ”に変更する。
Ｓ１０３、上記命令実行コンテクストを復元する。
【００３２】
具体的には、上記方法は、Ｓ１０１が実行される前に、さらに、ＣＰＵ上で動作する制御権限を取得するステップを含んでいる。ＣＰＵが上記方法を実行するとき、該方法は、まず、上記命令実行コンテクストを保存する（つまり、ステップＳ１０１）。すなわち、まさに実行されたばかりの監視されている命令の結果を保存する。本実施形態で用いられるＣＰＵは、Ｘ８６アーキテクチャの中央演算処理装置であってもよいし、本発明の他の実施形態によれば、ＭＩＰＳプロセッサであってもよいし、ＡＲＭアーキテクチャのプロセッサであってもよい。そして、当業者であれば、他のどのようなタイプのコンピューティングデバイスにおいても、上記ＣＰＵが命令処理ユニットであることを正しく理解できる。
【００３３】
ステップＳ１０１では、上記命令実行コンテクストを保存するステップは、ＣＰＵアドレスレジスタなどのレジスタのデータを有するスタック上の、命令実行に関連があるレジスタデータをプッシュするステップを含む。本発明の他の実施形態によれば、上記命令実行コンテクストは、他のデフォルトの場所あるいは特定の場所、もしくは、他のデフォルトのデータ構造あるいは特定のデータ構造に保存されてもよい。
【００３４】
ステップＳ１０２では、スケジューリングされる機械命令セグメントを取得するステップは、以下の各ステップを含む。
Ｓ１０２１、ＣＰＵアドレスレジスタからスケジューリングされる機械命令のアドレスを読み出す。
Ｓ１０２２、ＪＭＰ命令およびＣＡＬＬ命令を含む、検索対象としての制御転送命令を用いて、第１制御転送命令が見つかるまで、上記機械命令のアドレスに対応する機械命令を検索する。
Ｓ１０２３、スケジューリングされる機械命令セグメントとしての上記第１制御転送命令の前に、上記第１制御転送命令および機械命令を定義して、上記機械命令セグメントを、命令再結合プラットフォームまたは該命令再結合プラットフォームがアクセス可能な他の保存場所に保存する。
【００３５】
本発明の他の実施形態によれば、スケジューリングされる機械命令セグメントを取得するステップは、機械命令を機械命令セグメントに分割するために、検索対象としての書き込み命令または読み出し命令などのような非制御転送命令を用いてもよい。そして、機械命令セグメントの制御転送命令が実行された後に、命令再結合プラットフォームがＣＰＵの制御権限（つまり、ＣＰＵ上で動作する制御権限）を獲得することを保証する必要があるので、制御転送命令は、補足的または第２の検索対象として用いられる必要があり、したがって、結果としてより小さいサイズの機械命令セグメントとなる。
【００３６】
なお、ステップＳ１０２において、本実施形態に係る上記方法は、さらに、第２制御転送命令ＪＰ２を挿入する前に、以下の各ステップを含んでいてもよい。
Ｓ１０２５、処理対象の機械命令を取得するために、機械命令セグメントを特定するための命令セットを用いて上記機械命令セグメントを分析する。上記命令セットは、Ｘ８６の命令セットであってもよいし、ＭＩＰＳの命令セットであってもよいし、ＡＲＭの命令セットであってもよい。
Ｓ１０２６、上記対象の機械命令を事前に定められた方式で変更する。
【００３７】
上述の各ステップによって、実行中の命令の監視を実現することが可能となる。そして、以下の実施形態でさらに述べられるような他の処理も実行され得る。
【００３８】
本実施形態の目的は、実行中の命令の再結合を実現することであるため、ステップＳ１０２５およびＳ１０２６は実施されず、以下の各ステップが直接実施される。取得された機械命令セグメントの最終命令（制御転送命令ＪＰ１）より前に、アドレスＡ”を有する再結合命令セグメントを生成する、命令再結合プラットフォームの入口アドレスを指定する第２制御転送命令ＪＰ２を挿入するステップ、および、保存された上記命令実行コンテクストのアドレスレジスタ（つまり、ＣＰＵアドレスレジスタ）の値ＡをＡ”に変更するステップである。上記命令再結合プラットフォームは、本実施形態における命令再結合方法の実行プラットフォームである。
【００３９】
ＪＰ２を挿入するステップは、ＣＰＵが上記スケジューリングされる機械命令セグメントを実行する場合、ＪＰ１よりも前に上記命令再結合プラットフォームに戻ることである。したがって、上記命令再結合プラットフォームは、次のスケジューリングされる機械命令セグメントの分析を継続し、上述の全ての命令の再結合を終了させる方法における各ステップを繰り返す。詳細は、ステップＳ１０３の以下の分析に記載されているとおりである。
【００４０】
ステップＳ１０３において、上記命令実行コンテクストを復元するステップは、スタックから、命令実行に関するレジスタデータを取り出すステップを含み、アドレスレジスタに保存されている制御転送命令の宛先アドレスは、すでに、新しい機械命令セグメントの入口アドレスＡ”に変更されている。上記命令実行コンテクストを復元するステップの後、上記命令再結合プラットフォームは、このときの演算を終了する。上記ＣＰＵは、前の機械命令セグメントの最終命令（制御転送命令）を実行し続ける。ここで上記機械命令セグメントの宛先アドレスは、上述したとおり、Ａ”に変更されている。上記ＣＰＵは、入口アドレスＡ”を持つ新しい機械命令セグメントを実行する。入口アドレスＡ”を持つ上記機械命令セグメントの最後から２番目の命令（第２制御転送命令ＪＰ２）が実行されると、上記命令再結合プラットフォームは、ＣＰＵを動作させる制御権限を再度取得し、該命令再結合プラットフォームは、ステップＳ１０１からＳ１０３までの処理を繰り返す。
【００４１】
図２を参照すると、上記命令再結合処理および再結合された命令セグメントの生成について詳細が記載されている。スケジューリングされる機械命令セット４０１は、図２に示されている。ここで、上記第１制御転送命令は、第１制御転送命令４０１２である。命令４０１２に先行する命令が実行される前では、命令４０１２の宛先アドレスが有効であるか否かは分からない。そこで、第１制御転送命令４０１２が機械命令４０１３を指しているとみなす。第１制御転送命令４０１２を含む機械命令、および、該命令４０１２に先行する命令は、機械命令セグメント４０１１を構成する。
【００４２】
さらに図２を参照すると、命令再結合プラットフォーム４１１が動作すると、まず、命令実行コンテクストが保存される。そして、機械命令セグメント４０１１が取得される。上記命令再結合プラットフォームは、第１制御転送命令４０１２より前に第２制御転送命令４１１３を挿入する。上記第２制御転送命令４１１３は、命令再結合プラットフォーム４１１自体を指しており、アドレスＡ”を有する再結合命令セグメント４１１１を生成する。そして、保存された上記命令実行コンテクストにおけるアドレスレジスタの値Ａは、Ａ”に変更され、該命令実行コンテクストが復元される。
【００４３】
命令再結合プラットフォーム４１１が動作を終了した後、ＣＰＵは、アドレスレジスタの値がＡ”となっている前の再結合命令セグメントの最後の制御転送命令を実行し続ける。アドレスがＡ”の上記再結合命令セグメントが開始した後に、第２制御転送命令４１１３が動作した場合、命令再結合プラットフォーム４１１は、ＣＰＵの制御権限を再度取得し、スケジューリングされる機械命令の分析を継続する。こうして、実行中の命令を再結合する方法が終了する。
【００４４】
さらに、実行されたプログラムの機械命令は、高い再現性を有している。本発明の第２の実施形態によれば、命令再結合効率を向上させるため、および、コンピューティングデバイスのコンピュータ資源（例えば、ＣＰＵ）を節約するために、図３に示すとおり、実行中の命令を再結合する方法が提供される。上記実行中の命令を再結合する方法は、以下の各ステップを含む。
Ｓ２０１、命令実行コンテクストを保存する。
Ｓ２０２、保存された命令実行コンテクストにおけるアドレスレジスタの値Ａに基づいて、アドレス対応テーブルを検索する。上記アドレス対応テーブルは、アドレスＡに対応する再結合対象の機械命令セグメントが、アドレスＡ’を持つ保存された再結合命令セグメントを有しているか否かを示すのに用いられる。
Ｓ２０３、レコードが検出された場合、アドレスレジスタの値Ａをレコードの値Ａ’に変更し、命令実行コンテクストを復元する。このとき上記方法は終了する。
Ｓ２０４、レコードが検出されなかった場合、スケジューリングされる機械命令セグメントを取得し、取得された上記機械命令セグメントの最終命令の前に第２制御転送命令を挿入する。ここで、命令再結合プラットフォームの入口アドレスを指定する上記第２制御転送命令は、アドレスＡ”を持つ再結合命令セグメントを生成する。そして、保存された命令実行コンテクストにおけるアドレスレジスタの値ＡをアドレスＡ”に変更する。
Ｓ２０５、命令実行コンテクストを復元する。
【００４５】
また、Ｓ２０４は、さらに、以下のステップを含む。アドレスＡ”およびアドレスＡを用いて、アドレス対応テーブルにおいてレコードを生成する。そして、アドレスＡ”を持つ再結合された命令セグメントは、命令再結合プラットフォームに再利用のために保存される。
【００４６】
アドレス対応テーブルを用いることにより、上記方法は、コンピュータ資源を節約して命令再結合の実行時間の効率を上げる。
【００４７】
上述の実施形態では、機械命令、つまり、バイナリ機械コードは、直接操作されるかまたは取り扱われる。本発明の他の実施形態では、命令変更のようなさらなる演算があるかもしれないので、スケジューリングされる機械命令セグメントは、後で使えるように、まず、アセンブリコードセグメントに分解されてもよい。上記アセンブリコードセグメントは、命令実行コンテクストの復元の前に、バイナリ機械コードへと組み立てられる。
【００４８】
本発明の第３の実施形態によれば、実行中の命令を再結合する方法が提供される。該方法は、以下の各ステップを含む。
Ｓ３０１、現在の命令実行コンテクストを保存する。
Ｓ３０２、保存された命令実行コンテクストにおけるアドレスレジスタの値Ａに基づいて、アドレス対応テーブルを検索する。
Ｓ３０３、対応するレコードが検出された場合、アドレスレジスタの値Ａを上記レコードの値Ａ’に変更し、命令実行コンテクストを復元する。
Ｓ３０４、レコードが検出されなかった場合、再結合命令生成方法が図４に示され、該方法は、以下のステップを含む。
Ｓ３０４１、スケジューリングされる機械命令セグメントを取得する。
Ｓ３０４２、機械命令セグメントをアセンブリ命令セグメントに分解する。
Ｓ３０４３、アセンブリ命令セグメントを特定するための命令セットを用いてアセンブリ命令セグメントを分析し、処理対象のアセンブリ命令を取得する。
Ｓ３０４４、アセンブリ命令セグメントの最終命令の前に、第２制御転送命令ＪＰ２を挿入する。命令再結合プラットフォームの入口アドレスを指定する上記第２制御転送命令ＪＰ２は、アドレスＡ”を持つ再結合命令セグメントを生成する。
Ｓ３０４５、再結合機械命令セグメントを取得するために、変更されたアセンブリ命令セグメントを組み立てる。
Ｓ３０４６、アドレスＡ”およびアドレスＡを用いて、アドレス対応テーブルにレコードを生成する。
Ｓ３０４７、保存された命令実行コンテクストにおけるアドレスレジスタの値ＡをアドレスＡ”に変更する。
Ｓ３０５、上記命令実行コンテクストを復元する。
【００４９】
Ｓ３０４２およびＳ３０４５のステップは、分解ステップおよび組み立てステップに対応している。機械命令セグメントがアセンブリ命令セグメントに分解された後、さらに、分析および変更のステップを実施することは容易である。上述の実施形態において、類似のその他のステップについては説明を繰り返さない。
【００５０】
上述の、実行中の命令を再結合する方法は、さらなる応用のための基礎を提供する。以下の実施形態では、さまざまな、実行中の命令を再結合する方法が提供される。該方法は、保存／読み出し命令、Ｉ／Ｏ命令、および、ネットワーク転送命令を含む機械命令上のさまざまな処理を実施する。
【００５１】
本発明の第４の実施形態によれば、保存／読み出し命令に関し、以下の各ステップを含む、実行中の命令を再結合する方法が提供される。
Ｓ４０１、現在の命令実行コンテクストを保存する。
Ｓ４０２、保存された命令実行コンテクストにおけるアドレスレジスタの値Ａに基づいて、アドレス対応テーブルを検索する。
Ｓ４０３、対応するレコードが検出された場合、アドレスレジスタの値Ａを上記レコードの値Ａ’に変更し、命令実行コンテクストに復元する。
Ｓ４０４、レコードが検出されなかった場合、再結合命令生成方法は、以下のステップを含む。
Ｓ４０４１、スケジューリングされる機械命令セグメントを取得する。
Ｓ４０４２、上記機械命令セグメントをアセンブリ命令セグメントに分解する。
Ｓ４０４３、アセンブリ命令セグメントを特定するための命令セットを用いて、上記アセンブリ命令セグメントを分析し、処理対象のアセンブリ命令を取得する。上記対象のアセンブリ命令は、保存／読み出し命令である。
Ｓ４０４４、アセンブリ命令セグメントが、保存／読み出し命令を含む場合、保存／読み出し命令の保存アドレスまたは読み出しアドレスを、安全な装置における対応するアドレスに変更する。
Ｓ４０４５、アセンブリ命令セグメントの最終命令の前に、第２制御転送命令ＪＰ２を挿入する。命令再結合プラットフォームの入口アドレスを指定する上記第２制御転送命令ＪＰ２は、アドレスＡ”を持つ再結合命令セグメントを生成する。
Ｓ４０４６、再結合機械命令セグメントを得るために、変更されたアセンブリ命令セグメントを組み立てる。
Ｓ４０４７、アドレスＡ”およびアドレスＡを用いて、アドレス対応テーブルにおいてレコードを生成する。
Ｓ４０４８、保存された命令実行コンテクストにおけるアドレスレジスタの値ＡをアドレスＡ”に変更する。
Ｓ４０５、命令実行コンテクストを復元する。
【００５２】
本実施形態では、対象の命令は、分解するステップの後に処理される。他の実施形態では、対象の命令は、組み立てるステップおよび分解するステップを省略して直接処理されてもよい。
【００５３】
ステップＳ４０４４では、命令を保存および読み出すために、保存命令または読み出し命令における対象アドレスまたはソースアドレスは、データ集積場を実現するために変更される。該データ集積場は、データの安全性のために、データを安全な装置に保管する。より詳細には、本発明の以下の実施形態にて説明される。
【００５４】
Ｉ／Ｏ命令に関して、本発明の第５の実施形態によれば、以下の各ステップを含む、実行中の命令を再結合する方法が提供される。
Ｓ５０１、現在の命令実行コンテクストを保存する。
Ｓ５０２、保存された命令実行コンテクストにおけるアドレスレジスタの値Ａに基づいて、アドレス対応テーブルを検索する。
Ｓ５０３、対応するレコードが検出された場合、アドレスレジスタの値Ａを、レコードの値Ａ’に変更し、命令実行コンテクストを復元する。
Ｓ５０４、レコードが検出されなかった場合、以下の各ステップを含む再結合命令の方法を生成する。
Ｓ５０４１、スケジューリングされる機械命令セグメントを取得する。
Ｓ５０４２、上記機械命令セグメントを、アセンブリ命令セグメントに分解する。
Ｓ５０４３、アセンブリ命令セグメントを特定するための命令セットを用いて、上記アセンブリ命令セグメントを分析し、処理対象のアセンブリ命令を取得する。上記対象のアセンブリ命令は、Ｉ／Ｏ命令である。
Ｓ５０４４、上記アセンブリ命令セグメントがＩ／Ｏ命令を含む場合、Ｉ／Ｏ命令における全ての入力命令をブロックする。
Ｓ５０４５、アセンブリ命令セグメントの最終命令の前に、第２制御転送命令ＪＰ２を挿入する。命令再結合プラットフォームの入口アドレスを指定する上記第２制御転送命令ＪＰ２は、アドレスＡ”を持つ再結合命令セグメントを生成する。
Ｓ５０４６、再結合機械命令セグメントを得るために、変更されたアセンブリ命令セグメントを組み立てる。
Ｓ５０４７、アドレスＡ”およびアドレスＡを用いて、アドレス対応テーブルにおいてレコードを生成する。
Ｓ５０４８、保存された命令実行コンテクストにおけるアドレスレジスタの値ＡをアドレスＡ”に変更する。
Ｓ５０５、命令実行コンテクストを復元する。
【００５５】
本実施形態では、対象の命令は、分解するステップの後に処理される。他の実施形態では、対象の命令は、組み立てるステップおよび分解するステップを省略して直接処理されてもよい。
【００５６】
ステップＳ５０４４では、ローカルハードウェアに対する書き込み動作を防止するために、Ｉ／Ｏ命令における全ての入力命令がブロックされる。最終の実施形態における保存命令の処理とともに、保存命令以外の全ての命令がブロックされてもよく、これにより、コンピューティングデバイスにおけるデータの安全性を向上させることが可能となる。
【００５７】
ネットワーク転送命令に関して、本発明の第６の実施形態によれば、以下の各ステップを含む、実行中の命令を再結合する方法が提供される。
Ｓ６０１、現在の命令実行コンテクストを保存する。
Ｓ６０２、保存された命令実行コンテクストにおけるアドレスレジスタの値Ａに基づいて、アドレス対応テーブルを検索する。
Ｓ６０３、対応するレコードが検出された場合、アドレスレジスタの値Ａを、レコードの値Ａ’に変更し、命令実行コンテクストを復元する。
Ｓ６０４、レコードが検出されなかった場合、以下の各ステップを含む再結合命令の方法を生成する。
Ｓ６０４１、スケジューリングされる機械命令セグメントを取得する。
Ｓ６０４２、上記機械命令セグメントを、アセンブリ命令セグメントに分解する。
Ｓ６０４３、アセンブリ命令セグメントを特定するための命令セットを用いて、上記アセンブリ命令セグメントを分析し、処理対象のアセンブリ命令を取得する。上記対象のアセンブリ命令は、ネットワーク転送命令である。
Ｓ６０４４、上記アセンブリ命令セグメントがネットワーク転送命令を含む場合、リモートコンピューティングデバイスに対応する、上記ネットワーク転送命令の宛先アドレスが、許可されたアドレスであるか否かを判断し、上記宛先アドレスが許可されたアドレスでない場合に上記ネットワーク転送命令をブロックする。
Ｓ６０４５、アセンブリ命令セグメントの最終命令の前に、第２制御転送命令ＪＰ２を挿入する。命令再結合プラットフォームの入口アドレスを指定する上記第２制御転送命令ＪＰ２は、アドレスＡ”を持つ再結合命令セグメントを生成する。
Ｓ６０４６、再結合機械命令セグメントを得るために、変更されたアセンブリ命令セグメントを組み立てる。
Ｓ６０４７、アドレスＡ”およびアドレスＡを用いて、アドレス対応テーブルにおいてレコードを生成する。
Ｓ６０４８、保存された命令実行コンテクストにおけるアドレスレジスタの値ＡをアドレスＡ”に変更する。
Ｓ６０５、命令実行コンテクストを復元する。
【００５８】
本実施形態では、対象の命令は、分解するステップの後に処理される。他の実施形態では、対象の命令は、組み立てるステップおよび分解するステップを省略して直接処理されてもよい。
【００５９】
ステップＳ６０４４では、ネットワーク転送命令は、リモートコンピューティングデバイスに対応する、上記ネットワーク転送命令の宛先アドレスが、許可されたアドレスであるか否かをチェックするために処理される。許可されたアドレスでなかった場合、上記ネットワーク転送命令は、データ転送の安全性を実現するためにブロックされる。
【００６０】
上述の各実施形態におけるアドレス対応テーブルは、命令再結合プラットフォームによって生成され、管理される。該命令再結合プラットフォームは、固定長の配列構造を有していてもよいし、可変長の連結されたリスト構造を有していてもよいし、データ組を維持するのに適切な他のデータ構造を有していてもよい。あるいは、長さは調節可能であって、データ構造のスペースが解放されてもよい。アドレス対応テーブルが占めるスペースを解放する動作は、周期的に実行されてもよいし、あるいは、ランダムに実行されてもよい。いくつかの実施形態では、アドレス対応テーブルは、さらに、レコード生成時刻を格納するデータフィールドを含んでいてもよい。このデータフィールドは、現存時刻にしたがってレコードを削除するための解放動作のために用いられる。いくつかの実施形態では、アドレス対応テーブルは、さらに、利用カウンタとして使用されるデータフィールドを含んでいてもよい。アドレス対応テーブルを検索するステップでは、レコードが検出された場合、上記フィールドが更新または変更される。そして、上記解放動作によって、利用カウンタにしたがってレコードを削除するのに用いられる。
【００６１】
さらに、システムが開始してから実行中の命令の監視を実施するために、および、コンピューティングデバイスの動作段階の間に実行中の命令を完全に監視することを達成するために、本発明の他の実施形態によれば、システムの開始時に用いられるロード命令が変更され、本発明の命令再結合プラットフォームは、ロード命令が実行される前に、実行中の命令を再結合する方法を実施するために呼び出される。ロード命令のジャンプアドレスは固定された既知のアドレスであるので、命令再結合プラットフォームは、第１のレコードでアドレス対応テーブルを生成してもよいし、あらかじめ、第１の再結合命令セグメントを生成してもよい。
【００６２】
さらに、本発明によれば、上述の実施形態によって提供された、実行中の命令を再結合する方法にしたがって、命令をコンピュータに実行させるための、コンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体も提供される。
【００６３】
他の態様によれば、上述の実行中の命令を再結合する方法に対応して、本発明の第７の実施形態において、実行中の命令を再結合する装置が提供される。
【００６４】
図５に示すとおり、命令再結合装置５００は、
命令実行コンテクストを保存および復元する、命令実行コンテクスト保存および復元ユニット５０１と、
上記命令実行コンテクスト保存および復元ユニット５０１が、上記命令実行コンテクストを保存した後に、スケジューリングされる機械命令セグメントを取得する、命令取得ユニット５０２と、
上記スケジューリングされる機械命令セグメントを分析および変更し、アドレスＡ”を持つ再結合命令セグメントを生成する、命令再結合ユニット５０３と、
保存された上記命令実行コンテクストにおけるアドレスレジスタの値を、上記再結合命令セグメントのアドレスに変更する、命令置換ユニット５０４と、を含む。
【００６５】
命令実行コンテクスト保存および復元ユニット５０１は、命令取得ユニット５０２および命令置換ユニット５０４に連結されている。命令取得ユニット５０２、命令再結合ユニット５０３および命令置換ユニット５０４は、順に、連結されている。つまり、命令取得ユニット５０２は、命令再結合ユニット５０３に連結されており、命令再結合ユニット５０３は、命令置換ユニット５０４に連結されている。
【００６６】
命令再結合装置５００は、実行中の命令を再結合する方法を以下のとおり実施する。
まず、命令実行コンテクスト保存および復元ユニット５０１は、命令実行コンテクストを保存する。該命令実行コンテクストは、命令−実行−関連のレジスタデータをスタック（例えば、メモリにあるスタック）に入れるためのものである。
次に、命令取得ユニット５０２は、ＣＰＵアドレスレジスタから、スケジューリングされる機械命令のアドレスを読み出し、該アドレスにしたがって、機械命令セグメントを読み出す。該機械命令セグメントの最終命令は、制御転送命令である。具体的には、命令取得ユニット５０２は、ＣＰＵアドレスレジスタ５１１から、スケジューリングされる機械命令のアドレスを読み出し、該アドレスに対応する機械命令を、検索対象としての制御転送命令を用いて、第１制御転送命令（例えば、制御転送命令がＪＭＰ命令およびＣＡＬＬ命令を含んでいる）が検出されるまで検索する。そして、命令取得ユニット５０２は、機械命令セグメントとしてスケジューリングされる前に、第１制御転送命令および全ての機械命令を定義し、上記機械命令セグメントを、命令再結合装置５００または命令再結合装置５００がアクセス可能なその他の格納場所に保存する。
次に、命令再結合ユニット５０３は、取得された上記機械命令セグメントの最終命令の前に、第２制御転送命令を挿入する。命令再結合装置の入口アドレスを指定する上記第２制御転送命令は、アドレスＡ”を持つ再結合命令セグメントを生成する。
次に、命令置換ユニット５０４は、保存された上記命令実行コンテクストにおけるアドレスレジスタの値ＡをアドレスＡ”に変更する。
最後に、命令実行コンテクスト保存および復元ユニット５０１は、上記命令実行コンテクストを復元する。該命令実行コンテクストは、命令−実行−関連のレジスタデータを上記スタックから取り出すためのものである。
【００６７】
さらに、本発明の第８の実施形態によれば、実行時の命令の再現性を活用して、再結合効率を高め、コンピューティングデバイスのコンピュータ資源を節約する、実行中の命令を再結合する装置が提供される。
【００６８】
図６に示すとおり、命令再結合装置６００は、
命令実行コンテクストを保存および復元する、命令実行コンテクスト保存および復元ユニット６０１と、
上記命令実行コンテクスト保存および復元ユニット６０１が、上記命令実行コンテクストを保存した後に、スケジューリングされる機械命令セグメントを取得する、命令取得ユニット６０２と、
上記スケジューリングされる機械命令セグメントを分析および変更し、アドレスＡ”を持つ再結合命令セグメントを生成する、命令再結合ユニット６０３と、
保存された上記命令実行コンテクストにおけるアドレスレジスタの値を、上記再結合命令セグメントのアドレスに変更する、命令置換ユニット６０４と、
検索対象としての、保存された上記命令実行コンテクストにおけるアドレスレジスタの値Ａを用いて、アドレス対応テーブルを検索する、命令検索ユニット６０５であって、上記アドレス対応テーブルは、再結合されようとするアドレスＡに対応する機械命令セグメントがアドレスＡ’を持つ保存された再結合命令セグメントを有しているか否かを示すのに用いられ、対応するレコードが検出された場合、該命令検索ユニットが、命令置換ユニットを呼び出して、アドレスレジスタの値Ａをレコードの値Ａ’に変更させ、レコードが検出されなかった場合、該命令検索ユニットが、再結合結果のアドレスＡおよびアドレスＡ”を用いてアドレス対応テーブルにレコードを生成する、命令検索ユニット６０５と、を含む。
【００６９】
命令実行コンテクスト保存および復元ユニット６０１は、命令検索ユニット６０５および命令置換ユニット６０４に連結されている。命令検索ユニット６０５は、命令取得ユニット６０２、命令再結合ユニット６０３、および、命令置換ユニット６０４に連結されている。命令取得ユニット６０２、命令再結合ユニット６０３、および、命令置換ユニット６０４は、順に連結されている。
【００７０】
命令再結合装置６００は、実行中の命令を再結合する方法を以下のとおり実施する。
まず、命令実行コンテクスト保存および復元ユニット６０１は、命令実行コンテクストを保存する。該命令実行コンテクストは、命令−実行−関連のレジスタデータをスタックに入れるためのものである。
次に、命令検索ユニット６０５は、検索対象としての、保存された上記命令実行コンテクストにおけるアドレスレジスタの値Ａを用いて、アドレス対応テーブルを検索する。
ここで、アドレス対応テーブルにおいてレコードが検出された場合、命令検索ユニット６０５は、命令置換ユニット６０４を呼び出す。命令置換ユニット６０４は、アドレスレジスタの値Ａをレコードの値Ａ’に変更する。そして、命令置換ユニット６０４は、命令実行コンテクスト保存および復元ユニット６０２を呼び出し、上記命令実行コンテクストを復元させる。つまり、命令−実行−関連のレジスタデータを上記スタックから取り出させて、再結合処理を終了する。
アドレス対応テーブルにおいてレコードが検出されなかった場合、命令取得ユニット６０２は、ＣＰＵアドレスレジスタから、スケジューリングされる機械命令のアドレスを読み出し、該アドレスにしたがって、機械命令セグメントを読み出す。該機械命令セグメントの最終命令は、制御転送命令である。具体的には、命令取得ユニット６０２は、ＣＰＵアドレスレジスタ６１１から、スケジューリングされる機械命令のアドレスを読み出し、該アドレスに対応する機械命令を、検索対象としての制御転送命令を用いて、第１制御転送命令（例えば、制御転送命令がＪＭＰ命令およびＣＡＬＬ命令を含んでいる）が検出されるまで検索する。そして、命令取得ユニット６０２は、機械命令セグメントとしてスケジューリングされる前に、第１制御転送命令および全ての機械命令を定義し、上記機械命令セグメントを、命令再結合装置６００または命令再結合装置６００がアクセス可能なその他の格納場所に保存する。
次に、命令再結合ユニット６０３は、取得された上記機械命令セグメントの最終命令の前に、第２制御転送命令を挿入する。命令再結合装置の入口アドレスを指定する上記第２制御転送命令は、アドレスＡ”を持つ再結合命令セグメントを生成する。
次に、命令再結合ユニット６０３は、上記アドレスＡ”を命令検索ユニット６０５に送信する。命令検索ユニット６０５は、アドレスＡ”およびアドレスＡを用いて、アドレス対応テーブルにレコードを生成する。このレコードは、後に、再利用される。
次に、命令置換ユニット６０４は、保存された上記命令実行コンテクストにおけるアドレスレジスタの値ＡをアドレスＡ”に変更する。
最後に、命令実行コンテクスト保存および復元ユニット６０１は、上記命令実行コンテクストを復元する。該命令実行コンテクストは、命令−実行−関連のレジスタデータを上記スタックから取り出すためのものである。
【００７１】
本実施形態では、命令再結合ユニット６０３は、さらに、
処理対象の機械命令を取得するために、機械命令セグメントを特定するための、Ｘ８６、ＭＩＰＳ、ＡＲＭ命令セットを含む命令セットを用いる命令分析ユニット６０３１と、
上記対象の機械命令を、事前に定められた方式で変更または交換する命令変更ユニット６０３２と、を含む。
【００７２】
上記対象の命令が、保存または保管／読み出し命令である場合、命令分析ユニット６０３１は、スケジューリングされる機械命令セグメントから保存／読み出し命令を取得するのに利用され、命令変更ユニット６０３２は、上記保存／読み出し命令における保存アドレスまたは読み出しアドレスを、安全な装置の対応するアドレスに変更するのに利用される。効果は、上述の対応する方法の実施形態と同様である。
【００７３】
上記対象の命令が、Ｉ／Ｏ命令である場合、命令分析ユニット６０３１は、スケジューリングされる機械命令セグメントからＩ／Ｏ命令を取得するのに利用され、命令変更ユニット６０３２は、Ｉ／Ｏ命令の全ての入力命令をブロックするのに利用される。効果は、上述の対応する方法の実施形態と同様である。
【００７４】
上記対象の命令が、ネットワーク転送命令である場合、命令分析ユニット６０３１は、スケジューリングされる機械命令セグメントからネットワーク転送命令を取得するのに利用され、命令変更ユニット６０３２は、リモートコンピューティングデバイスに対応する、上記ネットワーク転送命令の宛先アドレスが、許可されたアドレスであるか否かをチェックするのに利用される。上記宛先アドレスが許可されたアドレスでない場合に、上記命令変更ユニットは、上記ネットワーク転送命令をブロックするのにも利用される。効果は、上述の対応する方法の実施形態と同様である。
【００７５】
本発明の第９の実施形態によれば、図７に示すとおり、命令再結合ユニット７０３は、さらに、分解ユニット７０３１と、組み立てユニット７０３４とを含む。分解ユニット７０３１、命令分析ユニット７０３２、命令変更ユニット７０３３、および、組み立てユニット７０３４は、順に連結されている。本実施形態において、その他のユニットは、本発明の第８の実施形態のユニットと同様である。
【００７６】
分解ユニット７０３１は、命令セグメントの分析および変更の前に、スケジューリングされる機械命令セグメントを分解して、スケジューリングされるアセンブリ命令セグメントを生成するものである。また、分解ユニット７０３１は、上記アセンブリ命令セグメントを、命令分析ユニット７０３２に送信するものである。
【００７７】
組み立てユニット７０３４は、命令セグメントの分析および変更の後に、再結合アセンブリ命令セグメントを組み立てて、再結合命令セグメントを生成するものである。また、組み立てユニット７０３４は、機械コードの再結合命令セグメントを命令置換ユニットに送信するものである。
【００７８】
本実施形態では、命令分析ユニット７０３２および命令変更ユニット７０３３は、スケジューリングされるアセンブリ命令セグメントを、先に記述された実施形態と同様の方法で、取り扱うものである。
【００７９】
上述の実施形態では、本発明の実施形態において提供された実行中の命令を再結合する方法および装置は、先行技術と比較して、詳細に説明される。有利な点は、以下のとおりである。
（１）コンピューティングデバイスにおける命令の実行が、命令再結合方法によって監視される。
（２）命令再結合の効率が向上し、コンピュータ資源がアドレス対応テーブルによって節約される。
（３）保存および読み出し命令に関して、保存および読み出し命令における宛先およびソースアドレスを変更することにより、データが安全であることを保証する安全な装置にデータを保管するデータ集積場が実現される。
（４）Ｉ／Ｏ命令に関して、Ｉ／Ｏ命令における全ての入力命令をブロックすることできる。これにより、ローカルハードウェアに対する書き込み命令を防止することが可能となる。また、保存命令以外の全ての入力命令をブロックすることができる。これにより、コンピューティングデバイスにおけるデータの安全性を高めることが可能となる。
（５）ネットワーク転送命令に関して、リモートコンピューティングデバイスに対応する、上記ネットワーク転送命令の宛先アドレスが、許可されたアドレスであるか否かを判断することにより、また、宛先アドレスが許可されていない場合に上記ネットワーク転送命令をブロックすることにより、データ転送時の安全性を実現することが可能となる。
【００８０】
保存／読み出し命令である対象の命令に関して、さらに、以下の各実施形態がある。これらの実施形態では、データを安全に記憶し読み出す方法、および、データを安全に記憶し読み出す装置が提供される。
【００８１】
背景技術に記載したとおり、コンピュータやスマートフォンなどのコンピューティングデバイスが、悪意あるコードに侵されると、悪意あるコードは、そのコンピューティングデバイスからデータを手に入れることができてしまう。データを入手した後、悪意あるコードの一般的な振る舞いは、以下のとおりである。（１）保存動作：とある格納場所に対象のデータを保存する。（２）転送動作：インターネットを介して、盗んだデータを直接指定された宛先アドレスに転送する。加えて、上述のコンピューティングデバイスを使った人によって行われる機密情報の漏えいについての一般的な振る舞いは以下のとおりである。（１）意図的に秘密を漏えいする：秘密に関与する人は、意図的な複製、安全なシステムに侵入するための悪意あるツール、または、トロイの木馬によって機密情報を取得する。（２）意図せず秘密を漏えいする：秘密に関与する人によって使用されたコンピューティングデバイスまたは記憶装置が、紛失されたり、あるいは、秘密を漏えいするインターネットに秘密に関与する装置を直接接続してしまうなどのように、誤用されたりする。
【００８２】
上述の課題を解決するために、本発明の各実施形態は、以下の付属の図面を参照して、詳細を開示する。図８は、本発明の第１０の実施形態における、コンピュータ端末システムの階層構造を示す概略図である。コンピュータ端末システム２００は、ユーザインターフェース層２０１、アプリケーション層２０２、オペレーティングシステムカーネル層２０３、ハードウェアマッピング層２０４、セキュリティ層２０５、および、ハードウェア層２０６を含む。そして、コンピュータ端末システム２００は、記憶装置１００（すなわち、安全な装置）に接続されている。ハードウェア層２０６は、ＣＰＵ２０６１、ハードディスク２０６２（すなわち、ローカル記憶装置）、および、ネットワークカード２０６３を含む。本実施形態では、記憶装置１００は、ハードウェア層２０６のネットワークカード２０６３に接続することによって、コンピュータ端末システム２００とデータを交換する、リモートディスクアレイである。本発明の他の実施形態では、記憶装置１００は、その他のタイプの記憶のための設備であってもよい。
【００８３】
上記階層構造を参照し、また、図９を参照して、本実施形態によって提供されるデータ集積処理は、以下の各ステップを含む。
Ｓ１０００、初期化
Ｓ２０００、データ書き込み処理、および、
Ｓ３０００、データ読み出し処理である。
【００８４】
他の実施形態では、初期化、データ書き込み処理、および、データ読み出し処理は、要求に応じて、選択的に実行され得る。
【００８５】
さらに、図１０を参照して、初期化処理Ｓ１０００は、以下の各ステップを含む。
Ｓ１０１０、コンピュータ端末システム２００と、記憶装置１００（すなわち、安全な装置）との間の通信を確立する。
Ｓ１０２０、記憶装置１００にあるビットマップを、現在のコンピュータ端末システム２００に同期させて、該ビットマップをコンピュータ端末システム２００のメモリに保存する。上記ビットマップは、ローカル保存アドレスのデータが安全な装置に保存されているか否かを表すのに利用される。
【００８６】
コンピュータ端末システム２００のビットマップを、記憶装置１００のビットマップと区別するために、以下では、コンピュータ端末システム２００のビットマップを、特にことわりがなければ第１のビットマップまたはビットマップと称し、記憶装置１００のビットマップを第２のビットマップと称する。
【００８７】
記憶装置１００の第２のビットマップを現在のコンピュータ端末システム２００に同期させることに失敗した場合、それは、記憶装置１００およびコンピュータ端末システム２００が最初に接続されていることを意味する。あるいは、最終接続の間、コンピュータ端末システム２００における保存動作が存在しないことを意味する。初期化処理Ｓ１０００は、さらに以下のステップを含む。
Ｓ１０３０、記憶装置１００およびコンピュータ端末システム２００において、それぞれ、ビットマップを生成する。
【００８８】
具体的には、第１に、コンピュータ端末システムのローカル保存スペースが、記憶装置１００にマッピングされ、ビットマップが生成される。ここで、マッピング関係は、単位としてのセクタ（またはその他の基本的な記録単位）ごとの１対１のマッピングである。本発明の他の実施形態では、その他の基本的な記録単位が、単位として、ローカル保存スペースのビットマップを記憶装置１００に確保するために用いられてもよい。
【００８９】
図１１は、本実施形態におけるビットマップの概略を示す図である。図１１は、ローカル記憶装置（すなわち、ハードディスク２０６２）の記録媒体３０００と、該ローカル記憶装置にネットワークを介して接続されている記憶装置１００の記録媒体４０００とを含む。記録媒体３０００と同じ容量を持つ保存スペース４０１０が、記録媒体４０００において確保されている。該保存スペース４０１０は、１対１のマッピングスペースとして利用される。また、保存スペース４０１０には、ビットマップ４０２０が１つだけ存在する。ビットマップ４０２０においては、１ビットが１セクタを表し、１ビットのデータ（０または１）は、記録媒体４０００の保存スペース４０１０上に記録媒体３０００における対応するセクタが保存されているのか否かを表す。本実施形態では、記録媒体４０００の保存スペース４０１０にデータが保存されているセクタを１で示し、データが保存されていないセクタを０で示す。ビットマップ４０２０が生成された後、ビットマップ４０２０は、コンピュータ端末システム２００に同期させられる。アプリケーションまたはオペレーティングシステムが、データ、例えば、ファイルをセーブする場合、オペレーティングシステムのファイルシステムは、ローカル記憶装置の記録媒体３０００上のある量の保存スペース、例えば、セクタ３０４０およびセクタ３０５０を配置して、上記ファイルのために上記保存スペースを割り当て、そして、ローカルファイル配置テーブルを更新する。上記ファイルが、記録媒体４０００の保存スペース４０１０に保存されると（すなわち、上記ファイルのデータが集積されると）、セクタ３０４０およびセクタ３０５０に対応するビットマップのビットデータが、１に変更される。この間、上記ファイルを保存するために、セクタ４０４０およびセクタ４０５０が、記録媒体４０００の対応する位置に配置される。
【００９０】
本実施形態において上記初期化処理が終了した後、コンピュータ端末システム２００および記憶装置１００は、同一のデータについて２つのビットマップを保存する。
【００９１】
さらに、データ書き込み処理Ｓ２０００は、以下の各ステップを含む。
Ｓ２０１０、アプリケーション層２０２は、オペレーティングシステムカーネル層２０３のファイルシステムを介してファイルを書き込む処理要求を作成する。あるいは、オペレーティングシステムカーネル層２０３は、直接ファイルを書き込む処理要求を作成する。あるいは、アプリケーション層２０２は、ハードウェアマッピング層２０４に直接データを書き込む処理要求を作成する。あるいは、オペレーティングシステムカーネル層２０３は、ハードウェアマッピング層２０４に直接データを書き込む処理要求を作成する。
Ｓ２０２０、オペレーティングシステムカーネル層２０３は、ファイルを書き込む処理要求を、ハードウェアポート命令（すなわち、ハードウェア命令）に翻訳し、上記ハードウェアポート命令を、ハードウェアマッピング層２０４に送信する。上記ハードウェアポート命令は、書き込みを行うべき保存位置（すなわち、セクタ）を含み、データを書き込む処理要求が、ハードウェアマッピング層２０４に対して直接作成された場合、上記要求は、すでに、ハードウェアポート命令である。
Ｓ２０３０、セキュリティ層２０５は、上記ポート命令における書き込み位置（すなわち、セクタ）を、記憶装置１００における保存アドレスに変更し、上記セクタに対応するビットデータを、データが当該セクタに集積されていることを表す１に変更することにより、第１のビットマップを更新する。そして、セキュリティ層２０５は、変更されたポート命令をハードウェア層２０６に送信する。
【００９２】
上述の各処理の後、書き込み処理Ｓ２０００は、さらに、以下のステップを含んでいてもよい。
Ｓ２０４０、上記第１のビットマップが、記憶装置１００に同期させられ、第２のビットマップとして保存される。これにより、コンピュータ端末システム２００の第１のビットマップと、記憶装置の第２のビットマップとが同一であることが保証される。本発明の他の実施形態では、上記同期処理は、最後に、例えば、コンピュータ端末システム２００の電源が落とされる前に実施されてもよい。
【００９３】
書き込み処理が実施された後、コンピュータ端末システム２００は、書き込みデータを保存しない。なぜなら、書き込みデータは、記憶装置１００に集積され、保存されているからである。
【００９４】
さらに、データ読み出し処理Ｓ３０００は、以下の各ステップを含む。
Ｓ３０１０、記憶装置１００の第２のビットマップが、コンピュータ端末システム２００に同期させられ、第１のビットマップとして保存される。
Ｓ３０２０、アプリケーション層２０２は、オペレーティングシステムカーネル層２０３のファイルシステムを介してファイルを読み出す処理要求を作成する。あるいは、オペレーティングシステムカーネル層２０３は、直接ファイルを読み出す処理要求を作成する。あるいは、アプリケーション層２０２は、ハードウェアマッピング層２０４に対して直接データを読み出す処理要求を作成する。あるいは、オペレーティングシステムカーネル層２０３は、ハードウェアマッピング層２０４に対して直接データを読み出す処理要求を作成する。
Ｓ３０３０、セキュリティ層２０５は、データ読み出し命令をハードウェアマッピング層２０４から受信し、該データ読み出し命令の読み出しアドレス（またはソースアドレス）を取得する。該アドレスが記憶装置１００のアドレスでない場合、上記セキュリティ層は、第１のビットマップを検索する。そして、第１のビットマップにおける上記読み出しアドレスに対応するビットデータが、当該読み出しアドレスのデータが集積されていることを表している場合、セキュリティ層２０５は、ポート命令の読み出しアドレスを、記憶装置１００の対応する読み出しアドレスに変更する。そして、セキュリティ層２０５は、変更された上記ポート命令をハードウェア層２０６に送信する。
【００９５】
ステップＳ３０１０において、記憶装置１００の第２のビットマップをコンピュータ端末システム２００に同期させるのは、コンピュータ端末システム２００をリブートした後も、ローカルデータと安全な装置のデータとの間の整合性を維持するためである。
【００９６】
上述の読み出し処理は、ユーザの現在の処理モードに影響せず、また、安全な装置（すなわち、記憶装置１００）に集積されたデータのデータ読み出し処理を実現する。
【００９７】
さらに、上述のデータ書き込み処理に基づいて、および、図１２を参照して、本実施形態において提供される、データを安全に保存する方法は、以下の各ステップを含む。
Ｓ４０１０、ハードウェア命令を受信する。
Ｓ４０２０、上記ハードウェア命令を分析する。
Ｓ４０３０、上記ハードウェア命令が保存命令であるか否かを判断する。
Ｓ４０４０、上記ハードウェア命令が保存命令である場合、上記保存命令における宛先アドレスを、記憶装置１００（すなわち、安全な装置）における対応する保存アドレスに変更する。
Ｓ４０５０、変更された保存命令をハードウェア層に送信する。
【００９８】
具体的には、本実施形態では、コンピュータ端末システムにおいて実行されるオペレーティングシステムは、ウィンドウズ（登録商標）オペレーティングシステムである。ウィンドウズ（登録商標）では、ハードウェアマッピング層は、ハードウェア抽出層（ＨＡＬ；Hardware Abstract Layer）である。他の実施形態では、コンピュータ端末システムにおいて実行されるオペレーティングシステムは、Ｌｉｎｕｘ（登録商標）、ＵＮＩＸ（登録商標）、または、組み込み型オペレーティングシステムであってもよく、ハードウェアマッピング層は、ウィンドウズ（登録商標）のＨＡＬに対応する層である。
【００９９】
ステップＳ４０１０では、上記ハードウェア命令は、ハードウェアマッピング層からのハードウェア命令である。ハードウェアマッピング層からハードウェア命令を受信すると、ＣＰＵなどのプロセッサに送信された上記ハードウェア命令（すなわち、ポート命令）を完全に選別することができる。これにより、データセキュリティをさらに向上させる。本発明の他の実施形態によれば、上記ハードウェア命令は、オペレーティングシステムカーネル層から送信されてもよいし、あるいは、他のコンピュータ層に対応するユニットから送信されてもよい。
【０１００】
さらに、上述した、実行中の命令を再結合する方法とともに、ハードウェア命令を受信する処理は、上記実行中の命令を再結合する方法を用いてハードウェア命令を取得するステップを含んでいてもよい。
【０１０１】
ステップＳ４０２０では、Ｘ８６命令セット、ＡＲＭ命令セット、ＭＩＰＳ命令セットなどのさまざまなタイプのＣＰＵ命令を取り扱うため、セキュリティ層２０５内には、さまざまな命令を分析する機構が存在する。
【０１０２】
ステップＳ４０４０では、保存命令における宛先アドレスを、記憶装置１００の対応する保存アドレスに変更した後、上記方法は、さらに、第１のビットマップにおける、上記宛先アドレス（セクタ）に対応する「ビット」に、１を設定することによって、該第１のビットマップを更新するステップを含んでいてもよい。
【０１０３】
さらに、ステップＳ４０４０では、上記方法は、更新された上記ビットマップを、第２のビットマップとして保存する安全な装置に同期させるステップをさらに含んでいてもよい。
【０１０４】
ステップＳ４０５０では、セキュリティ層２０５は、変更された、あるいは、変更されていないハードウェア命令を、ハードウェア層２０６に伝送する。本実施形態では、セキュリティ層２０５のデータ集積処理（ローカルデータを安全な装置に保存すること）は、完全に上位層またはユーザには見えず、該データ集積処理は、現在のコンピュータまたはアプリケーションのワークフローに影響を及ぼさない。
【０１０５】
本実施形態において提供された上記方法は、コンピュータ端末システムにおいてのみ利用されるのではなく、ハードウェア層が命令を実行する前に、命令レベルのデータ集積（すなわち、ハードウェア保存命令に基づくデータ集積）を実現するような、アプリケーション層、オペレーティングシステムカーネル層、および、ハードウェア層を含む、どのようなコンピューティングデバイスまたは高機能端末においても、利用可能である。
【０１０６】
図１３を参照して、上述のデータ読み出し処理によれば、本発明の実施形態で提供される、データを安全に読み出す方法は、以下の各ステップを含む。
Ｓ５０１０、ハードウェア命令を受信する。
Ｓ５０２０、ハードウェア命令を分析する。
Ｓ５０３０、上記ハードウェア命令が読み出し命令であるか否か判断する。
Ｓ５０４０、上記ハードウェア命令が読み出し命令である場合、該読み出し命令のソースアドレスを取得して、該ソースアドレスが記憶装置１００のアドレスであるか否かを判断する。
Ｓ５０５０、上記ソースアドレスが記憶装置１００のアドレスではない場合、第１のビットマップを検索し、読み出し命令の読み出しアドレスを、ビットマップのデータにしたがって変更する。
Ｓ５０６０、変更されたハードウェア命令をハードウェア層に送信する。
【０１０７】
ステップＳ５０１０の前に、上記方法は、さらに、Ｓ５０００、すなわち、記憶装置１００の第２のビットマップを、第１のビットマップとして保存しているコンピュータ端末システム２００に同期させるステップを含んでいてもよい。本実施形態におけるステップＳ５０１０では、ハードウェア命令は、ハードウェアマッピング層から送信される。
【０１０８】
さらに、上述の実行中の命令を再結合する方法とともに、ハードウェア命令を受信するステップは、上記実行中の命令を再結合する方法を用いて、ハードウェア命令を取得するステップを含んでいてもよい。
【０１０９】
ステップＳ５０３０では、上記ハードウェア命令が読み出し命令ではない場合、セキュリティ層２０５は、上記ハードウェア命令を実行のためのハードウェア層に直接送信する。
【０１１０】
ステップＳ５０４０では、上記ソースアドレスが、すでに、記憶装置１００のアドレスである場合、セキュリティ層２０５は、第１のビットマップを検索しなくてよく、上記ハードウェア命令を実行のためのハードウェア層に送信する。
【０１１１】
さらに、本発明のいくつかの実施形態では、ネットワーク資源を節約するために、記憶装置１００は、複数の端末システムの間で共有されてもよい。
【０１１２】
さらに、上述のデータを安全に保存する方法およびデータを安全に読み出す方法に基づいて、本発明の第１１の実施形態によれば、データを安全に転送する方法が提供される。図１４に示すとおり、データを安全に転送する方法は、以下の各ステップを含む。
Ｓ７０１０、ハードウェアマッピング層からハードウェア命令を受信する。
Ｓ７０２０、ハードウェア命令を分析する。
Ｓ７０３０、上記ハードウェア命令がネットワーク転送命令であるか否か判断する。
Ｓ７０４０、上記ハードウェア命令がネットワーク転送命令である場合、宛先アドレスを読み出す。
Ｓ７０５０、上記宛先アドレスが許可されたアドレスであるか否かを判断する。
Ｓ７０６０、上記宛先アドレスが許可されたアドレスである場合、ハードウェア層にハードウェア命令を送信し、上記宛先アドレスが許可されていないアドレスである場合、ハードウェア命令をブロックし、上記方法を終了する。
Ｓ７０７０、ハードウェア層が、ネットワーク転送命令およびデータを、宛先アドレスの端末システムに送信する。
Ｓ７０８０、宛先アドレスの端末システムが、上記データを受信し、データを安全に保存する方法を用いて、該データを保存する。
【０１１３】
ステップＳ７０６０では、上記宛先アドレスが許可されていないアドレスである場合、それは、上記宛先アドレスの端末システムが、本発明において提供される、データを安全に保存する方法およびデータを安全に読み出す方法に適合していないことを意味し、ネットワーク転送処理のための宛先アドレスとして許可されないことを意味する。
【０１１４】
ステップＳ７０５０では、上記宛先アドレスが許可されたアドレスであるか否かを判断するステップは、図１５に示すとおり、セキュリティサーバ８２０は、端末システム８００および８１０に、インターネットを介して接続されている。本発明の実施形態において提供される、データを安全に転送する方法は、端末システム８００および８１０に適用されている。端末システム８００および８１０は、セキュリティサーバ８２０への登録処理を自動的に実行する。許可アドレステーブルは、セキュリティサーバ８２０において管理されており、セキュリティサーバ８２０は、登録されたすべての端末システムを記録している。許可アドレステーブルが更新されると、セキュリティサーバ８２０は、自動的に、その新しい許可アドレステーブルをそれぞれの端末に送信する。端末システム８００のアーキテクチャは、アプリケーション層８０１、オペレーティングシステムカーネル層８０２、セキュリティ層８０３、および、ハードウェア層８０４を含む。ここでは、セキュリティ層８０３が、許可アドレステーブルの管理を担っている。セキュリティ層８０３は、許可アドレステーブルに宛先アドレスがあるか否かを判断することによって、宛先アドレスが許可されたアドレスであるか否かを判断する。つまり、ステップＳ７０５０では、宛先アドレスが許可アドレステーブルにリストアップされている場合、該宛先アドレスは、許可されたアドレスである。
【０１１５】
上述の、データを安全に転送する方法によれば、たとえトロイの木馬または悪意あるツールが機密情報を取得したとしても、その盗んだ情報を転送することができない。
【０１１６】
本発明に係る各方法は、コンピュータ端末システム内で説明されているが、携帯機器および高機能端末などの、ファイルまたはデータを編集、保存または転送する処理を実行可能ないずれの電子機器でも、本発明において提供される、データを安全に保存および転送する方法が適用された端末システムになり得る。
【０１１７】
さらに、当業者であれば、上述の、データを安全に保存する方法、データを安全に読み出す方法、および、データを安全に転送する方法は、ソフトウェアまたはハードウェアによって実現できるということを理解できる。ソフトウェアの場合、上述の方法の各ステップは、コンピュータコードによって表現され、該コードは、コンピュータ読み取り可能な記録媒体に記憶される。記録媒体もまたソフトウェア製品である。
【０１１８】
上述の、データを安全に保存する方法に対応して、本発明の第１２の実施形態によれば、データを安全に保存する装置が提供される。図１６を参照して、データを安全に保存する装置７１００は、受信ユニット７１１０、命令分析ユニット７１２０、命令変更ユニット７１３０、および、転送ユニット７１４０を含む。受信ユニット７１１０は、命令分析ユニット７１２０に連結されており、命令分析ユニット７１２０は、命令変更ユニット７１３０、および、転送ユニット７１４０に連結されており、転送ユニット７１４０は、命令変更ユニット７１３０、および、ハードウェア層７２００に連結されている。
【０１１９】
受信ユニット７１１０は、ハードウェア命令を受信するものである。本実施形態では、上記ハードウェア命令は、ハードウェアマッピング層から送信される。命令分析ユニット７１２０は、上記ハードウェア命令を分析するものであり、該ハードウェア命令が、保存命令であるか否かを判断するものである。ハードウェア命令が保存命令である場合、命令変更ユニット７１３０は、上記保存命令の宛先アドレスを、安全な装置の対応する保存アドレスに変更し、その変更された保存命令を転送ユニット７１４０に送信する。ハードウェア命令が保存命令でない場合、命令分析ユニット７１２０は、該ハードウェア命令を転送ユニット７１４０に直接送信する。転送ユニット７１４０は、受信した命令をハードウェア層７２００に送信するものである。
【０１２０】
さらに、データを安全に保存する装置は、更新ユニット７１５０および同期ユニット７１６０を含んでいてもよい。該装置において、更新ユニット７１５０は、命令変更ユニット７１３０に連結されており、同期ユニット７１６０は、更新ユニット７１５０に連結されている。
【０１２１】
更新ユニット７１５０は、命令変更ユニット７１３０が保存命令を変更した後、ビットマップにおける宛先アドレスに対応するビットを更新するものである。本実施形態では、保存命令の宛先アドレスにおいてセクタに対応する‘ビット’データには、該セクタにデータが集積されていることを示す‘１’がセットされる。
【０１２２】
同期ユニット７１６０は、コンピュータ端末システムと安全な装置との間の通信を確立するものであり、コンピュータ端末システムと安全な装置との間で、ビットマップの同期処理を実行するものである。具体的には、コンピュータ端末システムが起動したとき、同期ユニット７１６０は、コンピュータ端末システムと安全な装置との間の通信を確立し、安全な装置の第２のビットマップを、第１のビットマップとして保存するコンピュータ端末システムに同期させる。
【０１２３】
安全な装置の第２のビットマップをコンピュータ端末システムに同期させることができなかった場合、これが、コンピュータ端末システムと安全な装置との間の初めての通信であることを意味する。したがって、同期ユニット７１６０は、コンピュータ端末システムのローカル保存スペースを、安全な装置にマッピングして、第１のビットマップと第２のビットマップとを生成する。本実施形態では、安全な装置の第２のビットマップが、最初に形成されて、それから、第１のビットマップとして保存するコンピュータ端末システムに同期させられる。
【０１２４】
更新ユニット７１５０が、第１のビットマップにおける宛先アドレスに対応するビットを更新したとき、同期ユニット７１６０は、更新された第１のビットマップを安全な装置に送信する。そして、該第１のビットマップは、第２のビットマップとして保存される。
【０１２５】
本実施形態では、安全な装置は、リモート記憶装置であり、複数のコンピュータ端末システムの間で共有されてもよい。ハードウェア命令は、ハードウェアポートＩ／Ｏ命令である。
【０１２６】
さらに、上述の、データを安全に読み出す方法に対応する、本発明の第１３の実施形態によれば、データを安全に読み出す装置が提供される。図１７を参照して、データを安全に読み出す装置８１００は、受信ユニット８１１０、命令分析ユニット８１２０、命令変更ユニット８１３０、および、転送ユニット８１４０を含む。受信ユニット８１１０は、命令分析ユニット８１２０に連結され、命令分析ユニット８１２０は、命令変更ユニット８１３０、および、転送ユニット８１４０にそれぞれ連結され、命令変更ユニット８１３０は、転送ユニット８１４０に連結されている。転送ユニット８１４０は、ハードウェア層８２００に連結されている。
【０１２７】
受信ユニット８１１０は、ハードウェア命令を受信するものである。該ハードウェア命令は、本実施形態では、ハードウェアマッピング層から送信されるものである。命令分析ユニット８１２０は、ハードウェア命令を分析するものであり、該ハードウェア命令が読み出し命令であるか否かを判断するものである。また、上記ハードウェア命令が読み出し命令である場合に、命令分析ユニット８１２０は、該読み出し命令のソースアドレスを取得し、該ソースアドレスが安全な装置上のアドレスであるか否か判断するものである。上記ハードウェア命令が読み出し命令ではない場合、あるいは、上記ソースアドレスが安全な装置のアドレスである場合、命令分析ユニット８１２０は、該ハードウェア命令を転送ユニット８１４０に送信する。上記ソースアドレスが安全な装置のアドレスでない場合には、命令変更ユニット８１３０がビットマップを検索し、そのビットマップのデータにしたがって、読み出し命令の読み出しアドレスを変更する。上述のビットマップと同様に、本実施形態のビットマップも、ローカル保存アドレスのデータが安全な装置に保存または集積されているか否かを表すのに利用される。具体的には、命令変更ユニット８１３０は、第１のビットマップにおけるソースアドレスのセクタに対応するビットを検索する。その‘ビット’データが１を示す場合、データ集積が実施されたことを意味する。その‘ビット’データが０を示す場合、データ集積が実施されていないことを意味する。データ集積が実施されると、命令変更ユニット８１３０は、ソースアドレス（または読み出しアドレス）を対応するデータ集積アドレスに変更し、変更されたハードウェア命令を転送ユニット８１４０に送信する。
【０１２８】
さらに、データを安全に読み出す装置は、同期ユニット８１５０を含んでいてもよい。同期ユニット８１５０は、命令変更ユニット８１３０に連結されている。同期ユニット８１５０は、コンピュータ端末システムと安全な装置との間の通信を確立するものであり、コンピュータ端末システムと安全な装置との間でビットマップを同期させるものである。具体的には、コンピュータ端末システムが起動すると、同期ユニット８１５０は、コンピュータ端末システムと安全な装置との間の通信を確立し、安全な装置の第２のビットマップをコンピュータ端末システムと同期させる。該第２のビットマップは、第１のビットマップとして保存され、命令変更ユニット８１３０によって使用される。
【０１２９】
本実施形態では、安全な装置は、リモート記憶装置であり、複数のコンピュータ端末システムの間で共有されてもよい。本発明の他の実施形態では、安全な装置は、ローカル記憶装置であってもよい。
【０１３０】
当業者であれば、セキュリティ層において用いられる上述の方法は、オペレーティングシステムカーネル層からハードウェア層までのさまざまな層において利用可能であることを理解するであろう。本発明の精神の範囲を逸脱しない限りにおいて、本発明によって提供される上述の方法または装置を実施するにあたり、異なる層を用いて、さまざまな変形が施され得る。
【０１３１】
本発明によって提供される、データを安全に保存する方法および装置が、上述の各実施形態において、詳細に説明された。従来技術と比較して、上記方法および装置は、以下の有利な点を有している。１．データを安全に保存する方法は、完全なデータ集積となる命令レベルのデータ集積を実現し、完全なデータ集積に基づいて、コンピュータ端末システムが作動する全期間において、データの安全な保存を実現する。一方、たとえトロイの木馬または悪意あるツールが機密情報を取得したとしても、これらは、その盗んだデータを保存することができないようになっており、これにより、制御されたセキュリティゾーンにデータがあることが保証される。反対に、機密でない情報またはデータはローカルに保存され、これにより、秘密に関与した人が、能動的にまたは受動的に秘密を漏えいすることを防ぐ。２．ハードウェアマッピング層からハードウェア命令を受信することにより、命令を１００％選別することができる。これにより、さらに、データセキュリティを強化する。
【０１３２】
本発明によって提供される、データを安全に読み出す方法および装置が、上述の各実施形態において、詳細に説明された。従来技術と比較して、上記方法および装置は、以下の有利な点を有している。１．データを安全に保存する方法とともに、データを安全に読み出す方法は、すべてのデータが制御されたセキュリティゾーンにあること、および、集積されたデータはアクセスまたは読み出し可能であることを保証する。そして、機密でない情報またはデータはローカルに保存されるので、秘密に関与した人が、能動的にまたは受動的に秘密を漏えいすることを防ぐ。２．安全な装置がリモート記憶装置である場合、複数の端末によって共有されてもよい。これにより、安全な装置のスペース利用効率を高める。
【０１３３】
本発明の他の実施形態では、セキュリティ層で利用される上述の方法は、オペレーティングシステムの底層からハードウェア層の上位層まで、さまざまな層において実施されてもよい。当業者であれば、本発明の精神の範囲を逸脱しない限りにおいて、本発明の実施形態によって提供される上述の方法または装置を実施するにあたり、異なる層を用いて、さまざまな変形が施され得ることを理解するであろう。
【０１３４】
上述の内容は、当業者に本発明の精神をよりよく理解してもらうために使用した、本発明の具体的な実施形態にすぎない。しかしながら、本発明の保護範囲は、上記具体的な実施形態の具体的な記載に限定されるべきではない。本発明の具体的な実施形態は、本発明の精神の範囲を逸脱しない限りにおいて、当業者によってさまざまに変更され得る。
【図１】
2014515858.tif 000003
【図２】
2014515858.tif 000004
【図３】
2014515858.tif 000005
【図４】
2014515858.tif 000006
【図５】
2014515858.tif 000007
【図６】
2014515858.tif 000008
【図７】
2014515858.tif 000009
【図８】
2014515858.tif 000010
【図９】
2014515858.tif 000011
【図１０】
2014515858.tif 000012
【図１１】
2014515858.tif 000013
【図１２】
2014515858.tif 000014
【図１３】
2014515858.tif 000015
【図１４】
2014515858.tif 000016
【図１５】
2014515858.tif 000017
【図１６】
2014515858.tif 000018
【図１７】
2014515858.tif 000019
【国際調査報告】
2014515858.tif 000020
2014515858.tif 000021
2014515858.tif 000022
2014515858.tif 000023