(57)【要約】【課題】  第三者に漏洩させたくない情報を暗号化してバッチファイルやスクリプトに記述でき、たとえバッチファイルやスクリプトが閲覧されても情報が漏洩することを阻止できるコマンドインタプリタ・プログラム、情報処理装置及び方法を提供する。【解決手段】  入力された文字列（１００）の少なくとも一部（１０３，１０４）を暗号化し（１１０）、暗号化された部分（１２３，１２４）を復号化（１３３）することで前記文字列（１００）を復元し、復元された前記文字列（１００）に応じたプログラムの実行を指示する（１３５）。【選択図】  図１
2005208752.tif 000002
【特許請求の範囲】
【請求項１】
入力された文字列を解釈して、それに応じたプログラムをコンピュータに実行させるためのコマンドインタプリタ・プログラムであって、
文字列を入力する入力ステップのコードと、
前記入力ステップにより入力された前記文字列の少なくとも一部を暗号化する暗号化ステップのコードと、
前記暗号化ステップにより暗号化された前記文字列の少なくとも一部を復号化することで前記文字列を復元する復元ステップのコードと、
前記復元ステップにより復元された前記文字列に応じたプログラムを実行を指示する指示ステップのコードと、
を含むことを特徴とするコマンドインタプリタ・プログラム。
【請求項２】
前記復元ステップのコードは、
前記暗号化ステップにより暗号化された前記文字列の少なくとも一部を抽出する抽出ステップのコードと、
前記抽出ステップにより抽出された前記文字列の少なくとも一部を復号化する復号化ステップのコードと、
前記暗号化ステップにより暗号化された前記文字列の少なくとも一部を、前記復号化ステップでの復号化結果で置換する置換ステップのコードと、
を含むことを特徴とする請求項１に記載のコマンドインタプリタ・プログラム。
【請求項３】
入力された文字列を解釈して、それに応じたプログラムをコンピュータに実行させるためのコマンドインタプリタ・プログラムであって、
特定の置換指示文字列を含む第１のコマンド文字列が暗号化された暗号化文字列と、前記置換指示文字列に対応する置換文字列とを入力する入力ステップのコードと、
前記入力ステップにより入力された前記暗号化文字列を復号化する復号化ステップのコードと、
前記復号化ステップにより復号化された前記第１のコマンド文字列に含まれる前記置換指示文字列を、前記置換文字列で置換することで第２のコマンド文字列を生成する生成ステップのコードと、
前記生成ステップにより生成された前記第２のコマンド文字列に応じたプログラムの実行を指示する指示ステップのコードと、
を含むことを特徴とするコマンドインタプリタ・プログラム。
【請求項４】
請求項１から３までのいずれかに記載のコマンドインタプリタ・プログラムを格納したコンピュータ読み取り可能な記憶媒体。
【請求項５】
コンピュータにプログラムを実行させるための方法であって、
文字列を入力する入力ステップと、
前記入力ステップにより入力された前記文字列の少なくとも一部を暗号化する暗号化ステップと、
前記暗号化ステップにより暗号化された前記文字列の少なくとも一部を復号化することで前記文字列を復元する復元ステップと、
前記復元ステップにより復元された前記文字列に応じたプログラムの実行を指示する指示ステップと、
を有することを特徴とする方法。
【請求項６】
複数のプログラムを格納した記憶デバイスと、
前記記憶デバイスに接続され、前記複数のプログラムを選択的に実行するプロセッサと、
を有し、
前記プロセッサは、
入力した文字列の少なくとも一部を暗号化し、
暗号化した前記文字列の少なくとも一部を復号化することで前記文字列を復元し、
復元した前記文字列に応じたプログラムを実行する
ことを特徴とする情報処理装置。
【請求項７】
コンピュータにプログラムを実行させるための方法であって、
特定の置換指示文字列を含む第１のコマンド文字列が暗号化された暗号化文字列と、前記置換指示文字列に対応する置換文字列とを入力する入力ステップと、
前記入力ステップにより入力された前記暗号化文字列を復号化する復号化ステップと、
前記復号化ステップにより復号化された前記第１のコマンド文字列に含まれる前記置換指示文字列を、前記置換文字列で置換することで第２のコマンド文字列を生成する生成ステップと、
前記生成ステップにより生成された前記第２のコマンド文字列に応じたプログラムの実行を指示する指示ステップと、
を含むことを特徴とする方法。
【請求項８】
複数のプログラムを格納した記憶デバイスと、
前記記憶デバイスに接続され、前記複数のプログラムを選択的に実行するプロセッサと、
を有し、
前記プロセッサは、
特定の置換指示文字列を含む第１のコマンド文字列が暗号化された暗号化文字列と、前記置換指示文字列に対応する置換文字列とを入力し、
入力した前記暗号化文字列を復号化し、
復号化した前記第１のコマンド文字列に含まれる前記置換指示文字列を、前記置換文字列で置換することで第２のコマンド文字列を生成し、
生成した前記第２のコマンド文字列に応じたプログラムを実行する
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コマンドインタプリタ・プログラム、情報処理装置及び方法に関し、特に、セキュリティ機能を有するコマンドインタプリタ・プログラム、情報処理装置及び方法に関する。
【背景技術】
【０００２】
計算機上で目的プログラム名や実行に必要なコマンドを入力し所望のプログラムを実行する方法はCUI（Command User Interface）として一般的である。このようなCUI環境のために、OSがUnix（登録商標）の場合は、非特許文献１にあるように、“sh”や“csh”のようなシェルと呼ばれるコマンドインタプリタ・プログラムがコマンドを解釈して所望のプログラムを実行させている。また、MS-Windows（登録商標）ではコマンドプロンプトと呼ばれるプログラムにコマンドを解釈させ所望のプログラムを実行させることができる。
【０００３】
このようなコマンドを複数、バッチファイルに記述し連続して実行させることもできる。ここで言うバッチファイルはUnix（登録商標）ではシェルファイルとも言われ、MS-Windows（登録商標）ではBATファイルとも言われるファイルである。通常、バッチファイルには変数や処理の制御も記述でき、簡単なプログラムとして使用することができる。例えば非特許文献２には、Unix（登録商標）のシェルスクリプトでの変数の使い方や制御文の記述方法が説明されている。通常のバッチファイルはテキストファイルであり、テキストエディタなどを用いることで簡単に作成や変更が可能である。このため、複数のプログラムを連続実行させる場合や、操作者がその場にいない夜間などに処理を自動実行させる場合に広く使われている技術である。
【０００４】
さらには、“Perl”や“Tk”のように、より機能の高いスクリプト処理プログラムでも、非特許文献３や非特許文献４にあるように、スクリプト内から所望のプログラムを実行させることが可能である。さらには、MS-Windows（登録商標）においては、コマンドを少なくとも１個以上をBATファイルに記述しておき、そのBATファイルアイコンをマウスで指定しダブルクリックなどの方法で実行させることも可能である。
【０００５】
【非特許文献１】坂本文著，「続・楽しいUNIX」，株式会社アスキー，1993年（2.1 シェルってなんだろう）
【非特許文献２】坂本文著，「UNIXツールガイドブック」，共立出版株式会社，1986年（第7章 C-SHELLプログラミング）
【非特許文献３】Larry Wall、Tom Christiansen、Randal L. Schwarts著，近藤嘉雪訳，「プログラミングPerl改訂版」，株式会社オライリー・ジャパン，1997年（P.264-P.265）
【非特許文献４】Brent B. Welc著，橋口陽一、中込知之、棚橋直美訳，「Tcl/Tk入門」，株式会社トッパン，1997年（P.85-P.87）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
計算機上で上記のようなバッチファイルやスクリプトを利用して所望のプログラムを実行させる場合、プログラムによっては他の計算機の機能を利用したり資源にアクセスするためのログイン名やパスワードが必要なものがある。また、データベースシステムを利用するプログラムでは、データベースシステムに対するログイン名やパスワードが必要なものもある。このようなプログラムをバッチファイルやスクリプトから自動で実行させるためには、バッチファイルやスクリプトにログイン名やパスワードをプログラムの引数で与えるよう記述する必要がある。
【０００７】
しかし、バッチファイルやスクリプトは簡単に閲覧できることが多く、そのためにログイン名やパスワードのように第三者に漏洩させたくない情報が容易に漏洩してしまうというセキュリティ上の問題が生じる場合があった。
【０００８】
そこで、本発明は、第三者に漏洩させたくない情報を暗号化してバッチファイルやスクリプトに記述でき、たとえバッチファイルやスクリプトが閲覧されても情報が漏洩することを阻止できるコマンドインタプリタ・プログラム、情報処理装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面は、入力された文字列を解釈して、それに応じたプログラムをコンピュータに実行させるためのコマンドインタプリタ・プログラムに係り、文字列を入力する入力ステップのコードと、前記入力ステップにより入力された前記文字列の少なくとも一部を暗号化する暗号化ステップのコードと、前記暗号化ステップにより暗号化された前記文字列の少なくとも一部を復号化することで前記文字列を復元する復元ステップのコードと、前記復元ステップにより復元された前記文字列に応じたプログラムを実行を指示する指示ステップのコードとを含むことを特徴とする。
【００１０】
本発明の別の側面は、入力された文字列を解釈して、それに応じたプログラムをコンピュータに実行させるためのコマンドインタプリタ・プログラムに係り、特定の置換指示文字列を含む第１のコマンド文字列が暗号化された暗号化文字列と、前記置換指示文字列に対応する置換文字列とを入力する入力ステップのコードと、前記入力ステップにより入力された前記暗号化文字列を復号化する復号化ステップのコードと、前記復号化ステップにより復号化された前記第１のコマンド文字列に含まれる前記置換指示文字列を、前記置換文字列で置換することで第２のコマンド文字列を生成する生成ステップのコードと、前記生成ステップにより生成された前記第２のコマンド文字列に応じたプログラムの実行を指示する指示ステップのコードとを含むことを特徴とする。
【００１１】
本発明の更に別の側面は、コンピュータにプログラムを実行させるための方法に係り、文字列を入力する入力ステップと、前記入力ステップにより入力された前記文字列の少なくとも一部を暗号化する暗号化ステップと、前記暗号化ステップにより暗号化された前記文字列の少なくとも一部を復号化することで前記文字列を復元する復元ステップと、前記復元ステップにより復元された前記文字列に応じたプログラムの実行を指示する指示ステップとを有することを特徴とする。
【００１２】
また、本発明の更に別の側面は、複数のプログラムを格納した記憶デバイスと、前記記憶デバイスに接続され、前記複数のプログラムを選択的に実行するプロセッサとを有する情報処理装置に係る。前記プロセッサは、入力した文字列の少なくとも一部を暗号化し、暗号化した前記文字列の少なくとも一部を復号化することで前記文字列を復元し、復元した前記文字列に応じたプログラムを実行する。
【００１３】
本発明の更に別の側面は、コンピュータにプログラムを実行させるための方法に係り、特定の置換指示文字列を含む第１のコマンド文字列が暗号化された暗号化文字列と、前記置換指示文字列に対応する置換文字列とを入力する入力ステップと、前記入力ステップにより入力された前記暗号化文字列を復号化する復号化ステップと、前記復号化ステップにより復号化された前記第１のコマンド文字列に含まれる前記置換指示文字列を、前記置換文字列で置換することで第２のコマンド文字列を生成する生成ステップと、前記生成ステップにより生成された前記第２のコマンド文字列に応じたプログラムの実行を指示する指示ステップとを含むことを特徴とする。
【００１４】
また、本発明の更に別の側面は、複数のプログラムを格納した記憶デバイスと、前記記憶デバイスに接続され、前記複数のプログラムを選択的に実行するプロセッサとを有する情報処理装置に係る。前記プロセッサは、特定の置換指示文字列を含む第１のコマンド文字列が暗号化された暗号化文字列と、前記置換指示文字列に対応する置換文字列とを入力し、入力した前記暗号化文字列を復号化し、復号化した前記第１のコマンド文字列に含まれる前記置換指示文字列を、前記置換文字列で置換することで第２のコマンド文字列を生成し、生成した前記第２のコマンド文字列に応じたプログラムを実行する。
【発明の効果】
【００１５】
本発明によれば、第三者に漏洩させたくない情報を暗号化してバッチファイルやスクリプトに記述でき、たとえバッチファイルやスクリプトが閲覧されても情報が漏洩することを阻止できるコマンドインタプリタ・プログラム、情報処理装置及び方法が提供される。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。
【００１７】
図３は、本発明の実施に好適な計算機３００の構成例を示すブロック図である。
【００１８】
３０１はプログラムを解釈して演算などを実行するＣＰＵ、３０２はＣＰＵ３０１の実行に必要なメモリ、３０３は外部装置との入出力を制御する入出力インタフェース、３０４はＣＲＴや液晶のような出力を表示する表示装置、３０５はキーボードやマウスなどの入力装置、３１０はプログラムやデータを格納するハードディスクである。
【００１９】
ハードディスク３１０には少なくとも、Ｕｎｉｘ（登録商標）のようなＯＳ（オペレーティングシステム）３１１が搭載されており、計算機３００はメモリ３０２にロードされたＯＳ３１１をＣＰＵ３０１が実行することでハードディスク３１０や入出力インタフェース３０３などを管理している。また、ハードディスク３１０にはＯＳ３１１の他に、文字列暗号化プログラム３１４と暗号化コマンド実行プログラム３１５が搭載され、後述する文字列暗号化機能および暗号化コマンド機能をこの計算機３００によって実現させることができる。さらに、このハードディスク３１０には、バッチファイル３１６、スクリプト３１７、バッチファイル３１６を解釈し実行するためのシェルプログラム３１２、スクリプト３１７を解釈し実行するためのスクリプト処理プログラム３１３、バッチファイル３１６やスクリプト３１７からの呼び出しに応じて実行される処理プログラム３１８なども搭載されている。その他、プログラムの実行に必要なデータやプログラムが出力するデータもハードディスク３１０に格納される。
【００２０】
ＣＰＵ３０１は、ＯＳ３１１による管理の下、実行するプログラムをハードディスク３１０からメモリ３０２にロードして、そのプログラムを実行する。プログラムが出力をする場合は入出力インタフェース３０３を介して表示装置３０４に文字や画像を表示する。また、プログラムが入力を必要とする場合は入出力インタフェース３０３に要求を出し、入力装置３０５を介して情報が入力されるまで待機する。
【００２１】
暗号化文字列を生成する場合は、ユーザは、シェルプログラム３１２を実行させて、入力装置３０５を介して文字列暗号化プログラム３１４を実行するためのコマンドを入力する。これにより文字列暗号化プログラム３１４が起動することになる。シェルに対して入力する文字列暗号化プログラム３１４を実行するためのコマンドには、暗号化対象文字列を引数として含めることができる。文字列暗号化プログラム３１４が実行されると、指定された暗号化対象文字に対応する列暗号化文字列が表示装置３０４に表示される。ユーザは、表示装置３０４に表示されたその暗号化文字列を用いた暗号化コマンドを引数とする、暗号化コマンド実行プログラム３１５を起動するためのバッチファイルやスクリプトを、バッチファイル３１６やスクリプト３１７として記述することができる。
【００２２】
シェルプログラム３１２やスクリプト処理プログラム３１３から起動された暗号化コマンド実行プログラム３１５は、引数から暗号化コマンドを得、暗号の復号化や文字列の置換を行い、所望の処理を行う処理プログラム３１８の起動を行う。
【００２３】
以下、本実施形態における文字列暗号化プログラム３１４および暗号化コマンド実行プログラム３１５による処理例を、図１を参照して説明する。以下の説明では、バッチファイル３１６やスクリプト３１７に第三者に漏洩させたくない文字列を含むコマンドを記述する必要があると仮定する。
【００２４】
図１において、１００がバッチファイル３１６またはスクリプト３１７に記述しなければならないコマンドの例を示している。このうち、１０１がターゲット・プログラム名で、１０２〜１０５がコマンド・オプションの引数を示している。ここで、１０３はログイン名、１０４はパスワードであり、第三者に漏洩させたくない文字列である。これら１０３と１０４を除く文字列はそれぞれ、運用中に変更があり、第三者に漏洩しても問題のない文字列である。
【００２５】
まず、暗号化対象である１０３を文字列暗号化プログラムの引数として実行することで暗号化文字列１２３を得る。同様に１０４から暗号化文字列１２４を得る。そして、元のコマンドの暗号化対象文字を暗号化文字に置き換えることで暗号化コマンド１２０を作成することができる。ここで、暗号化文字は他の文字列と区別がつくよう“＃”で囲まれたものとし、暗号化文字列の中には“＃”は現れないようになっている。
【００２６】
バッチファイルやスクリプトには、この暗号化コマンド全体を暗号化コマンド実行プログラムの引数となるよう記述する。この記述では、ログイン名やパスワードは暗号化されており、この記述のあるバッチファイルやスクリプトを閲覧しただけで元の文字列が漏洩することはない。また、運用中に変更のある文字列はそのまま記述されており、変更が必要な場合は容易に変更することが可能である。
【００２７】
暗号化コマンド実行プログラム３１５は、図１に示すような暗号化コマンド実行機能１３０を実現する。まず、暗号化コマンド全体（１２０）を引数として受け取り（１３１）、暗号化コマンド内にある暗号化文字列である１２３と１２４を抽出する（１３２）。抽出された暗号化文字列は復号化されて、元の文字列である１０３と１０４が得られる（１３３）。そして、暗号化コマンドの暗号化文字列１２３と１２４を、復号化により得られた元の文字列１０３と１０４に置き換えることで実際に実行する元のコマンド１００を得て（１３４）、これを実行する（１３５）。
【００２８】
次に、本実施形態における文字列暗号化プログラム３１４および暗号化コマンド実行プログラム３１５による別の処理例を、図２を参照して説明する。
【００２９】
図２において、２００がバッチファイル３１６またはスクリプト３１７に記述しなければならないコマンドの例を示しており、図１に示した例と同様に、２０１がターゲット・プログラム名で、２０２〜２０５がコマンド・オプションの引数を示している。ここで、２０３はログイン名、２０４はパスワードであり、第三者に漏洩させたくない文字列である。その他の文字列は、運用中に変更があり、第三者に漏洩しても問題のない文字列である。
【００３０】
暗号化コマンド生成者は、運用中に変更のある文字列である２０２と２０５を置換指示文字列である２１１と２１２に置き換えた仮コマンド２１０を作成する。そして、仮コマンド２１０を文字列暗号化プログラムの引数として実行することで暗号化仮コマンド２３１を得る。そして、この暗号化仮コマンド２３１に置換指示文字列に対応した置換文字列である２３２と２３３を追加することで暗号化コマンド２３０を作成する。
【００３１】
バッチファイルやスクリプトには、この暗号化仮コマンド２３１と置換文字列２３２，２３３を暗号化コマンド実行プログラム３１５の引数となるよう記述する。この記述では、ログイン名やパスワードは暗号化されており、この記述のあるバッチファイルやスクリプトを閲覧しただけで元の文字列が漏洩することはない。また、運用中に変更のある文字列はそのまま記述されており、変更が必要な場合は容易に変更することが可能である。
【００３２】
暗号化コマンド実行プログラム３１５は、図２に示すような暗号化コマンド実行機能２４０を実現する。まず、暗号化仮コマンド２３１を第１引数として受け取り（２４１）、これを復号化して（２４２）、元の仮コマンド２１０を得る。また、第２引数以後を置換文字列２３２，２３３として受け取り（２４３）、仮コマンド中の置換指示文字列２１１と２１２を、置換文字列２３２と２３３に置き換えることで実際に実行する元のコマンド２００を得て（２４４）、これを実行する（２４５）。
【００３３】
以上のような処理によれば、第三者に漏洩させたくない情報をバッチファイルやスクリプトに暗号化して記述でき、バッチファイルが閲覧されても情報が漏洩することを阻止できる。また、運用中に変更になる情報は暗号化せずそのままの記述ができるため、簡単に変更できることで、運用に対して柔軟な対応が可能である。
【００３４】
また、本発明をラッパーとして使用することで、どのようなプログラムに対しても適応が可能であり、かつバッチファイルやスクリプトを実行するシェルやスクリプト処理プログラムにも依存しない。
【００３５】
なお、本発明は上記に例で示した説明に限定されるわけではなく、本発明の趣旨の範囲内において、適宜変形、組み合わせが可能なことは言うまでもない。
【００３６】
また、暗号化の方法も本発明を達成することができれば限定されるものではない。
【００３７】
（実施例１）
上述した暗号化コマンド実行プログラムについて、より詳細に説明する。
【００３８】
本実施例では、暗号化処理として同一の暗号化キーを使用する共通鍵暗号化方式を利用し、UNIX（登録商標）で動作する“CryptExe1”というプログラムで説明する。このプログラムは、文字列暗号化機能と暗号化コマンド実行機能の両方を持っているプログラムである。このプログラム内にはあらかじめ暗号化キー“encrypkey”を埋め込んでいる。
【００３９】
ある処理を行うためにＣシェル用のシェルスクリプトに以下のようなコマンドを記述する必要がある場合を例を説明する。
【００４０】
：    ：    ：
set FILE = /usr/buf/snd030832
：    ：    ：
sendfile $FILE -l login -p passwd -s svr01 -d /usr/tmp03
：    ：    ：
【００４１】
ここで、“set FILE = /usr/buf/snd030832”は変数への文字列の代入であり、“FILE”という変数に文字列“/usr/buf/snd030832”を代入している。この例では単に文字列が代入されているが、Cシェルのプログラムにより条件で異なる文字列を代入させることも可能である。
【００４２】
“sendfile”は実行するプログラム名で、他の計算機にファイルを転送する機能のプログラムである。“$FILE”は転送したいファイルのパス名が入った変数名で、ここでは“/usr/buf/snd030832”という転送元のファイルのパス名が変数に代入されている。“login”と“passwd”は転送先の計算機にログインするためのログイン名とパスワード、“svr01”は転送先の計算機を識別するサーバ名、“/usr/tmp03”は転送するファイルを格納するディレクトリのパス名である。ここで、“login”と“passwd”は送信先の計算機にログインするための情報であり、第三者に漏洩すると、その第三者が送信先の計算機にログインができるようになりセキュリティ上問題がある。また、“svr01”と“/usr/tmp03”は定期的に変更することがあるサーバ名とディレクトリ名である。
【００４３】
このコマンドをそのままバッチファイルに記述すれば、バッチファイルが閲覧されることにより“login”と“passwd”は簡単に漏洩してしまう。これを防ぐために以下のようにログイン名とパスワードを暗号化する。
【００４４】
＞ CryptExe1 -key encrypkey login
#bnD5g#
＞ CryptExe1 -key encrypkey passwd
#df8klG#
【００４５】
ここで“-key”は“CryptExe1”の文字列暗号化機能を実行させるオプションであり、“encrypkey”は暗号化キーである。この暗号化キーが一致していなければ正しい暗号化は行われないため、正しい暗号化キーを知っている人でなければ正しい暗号化文字列を生成することができない。これによって、“login”と“passwd”に対応する暗号化文字列“#bnD5g#”と“#df8klG#”を得ることができる。暗号化文字列は暗号化してある部分とそうでない部分を区別しやすいよう“#”で囲まれた文字列として生成し、暗号化文字列の先頭と最後以外には“#”が入らないようになっている。そして、この暗号化文字を使ってバッチファイルには以下のように記述する。
【００４６】
：    ：    ：
set FILE = /usr/buf/snd030832
：    ：    ：
CryptExe1 sendfile $FILE -l #bnD5g# -p #df8klG# -s svr01 -d /usr/tmp03
：    ：    ：
【００４７】
ここで“CryptExe1”は暗号化コマンド実行機能を実行する。Ｃシェルは変数“$FILE”を“/usr/buf/snd030832”に置換して、“CryptExe1”を実行する。“CryptExe1”は以下のように処理を実行する。
【００４８】
（１）引数を連結して一つの文字列として暗号化コマンド“sendfile $FILE -l #bnD5g# -p #df8klG# -s svr01 -d /usr/tmp03”を受け取る。
（２）“#”で囲まれた暗号化文字列である“#bnD5g#”と“#df8klG#”を抽出する。
（３）内部に埋め込まれた暗号化キーである“encrypkey”を使い暗号化文字列を復号化し、元の文字列である“login”と“passwd”を得る。
（４）暗号化文字の“#bnD5g#”と“#df8klG#”をそれぞれ、復号化した文字“login”と“passwd”に置き換えた実行コマンド“sendfile /usr/buf/snd030832 -l login -p passwd -s svr01 -d /usr/tmp03”を生成する。
（５）子プロセスを生成するシステムコール“fork”を発行する。
（６）新しく生成された子プロセスはシステムコール“exec”を発行し、実行コマンドを実行するプロセスとなる。子プロセスを生成した親プロセスではシステムコール“wait”を発行し子プロセスの終了を待機する。
（７）子プロセスが処理を終了すると、待機している親プロセスにそのことが通知され、親プロセスも処理を中止する。
【００４９】
以上の実施例によれば第三者に漏洩させたくないログイン名とパスワードを暗号化してバッチファイルに記述でき、情報の漏洩を防ぐことができる。また、運用中に変更になるサーバ名と転送ファイルを格納するディレクトリは暗号化せずに記述されており、容易に変更が可能である。
【００５０】
なお、上記の例はＣシェルで使用するシェルスクリプトであったが、スクリプト処理プログラムであるPerlでは以下のように暗号化コマンドの実行を記述することができる。
【００５１】
：    ：    ：
$FILE = "/usr/buf/snd030832" ;
：    ：    ：
system
"CryptExe1 sendfile $FILE -l #bnD5g# -p #df8klG# -s svr01 -d /usr/tmp03";
：    ：    ：
【００５２】
また、スクリプト処理プログラムであるTclでは以下のように暗号化コマンドの実行を記述することができる。
【００５３】
：    ：    ：
set file "/usr/buf/snd030832"
：    ：    ：
[exec CryptExe1  
"sendfile $file -l #bnD5g# -p #df8klG# -s svr01 -d /usr/tmp03"]
：    ：    ：
【００５４】
（実施例２）
上述した実施例１の方法では、シェルスクリプトと“CryptExe1”が盗用され、引数をそのまま出力するようなプログラムを使うことで暗号化文字列から復号化した文字列を得ることができてしまう。例えば、引数を順番に出力する“prtArg”というプログラムは以下のように動作するとする。
【００５５】
＞ prtArg abc def
ARG1 = abc
ARG2 = def
【００５６】
“prtArg”のようなプログラムを作成することは容易である。実施例１のシェルスクリプトから暗号化文字に対して以下のように“CryptExe1”を使用することで、容易に元の文字列を得ることができる。
【００５７】
＞ cryptExe1 prtArg #bnD5g# #df8klG#
ARG1 = login
ARG2 = passwd
【００５８】
このような実施例１で想定される問題を解決した実施例を“CryptExe2”というプログラムで説明する。“CryptExe2”が文字列暗号化機能を実行する場合は実施例１の“CryptExe1”と同様であるが、暗号化文字を示す前後の“#”を付加しない。暗号化は以下のようにコマンド全体に対して行う。
【００５９】
＞ cryptExe2 -key encrypkey
"sendfile /usr/buf/snd030832 -l login -p passwd -s svr01 -d /usr/tmp03”
anjAR$jfak;l@uy8FG5FasgKTJR+$SGHgreRGRWrrgesfTHR
【００６０】
そして得られた暗号化文字を使って、シェルスクリプトに以下のように記述する。
【００６１】
：    ：    ：
CryptExe2 "anjAR$jfak;l@uy8FG5FasgKTJR+$SGHgreRGRWrrgesfTHR"
：    ：    ：
【００６２】
“CryptExe2”が暗号化コマンド実行機能を実行する場合は、引数を１個しか取らない。複数の引数を指定した場合はエラーを出力しターゲット・プログラムの実行は行わない。２個の引数を指定し、エラーを出力した例を以下に示す。
【００６３】
＞ CryptExe2 prtArg "anjAR$jfak;l@uy8FG5FasgKTJR+$SGHgreRGRWrrgesfTHR"
Error : Too meny argument (CryptExe2)
【００６４】
本実施例の“CryptExe2”では第一引数全体が暗号化されているため、暗号化文字列の範囲を指定する“#”は不要である。
【００６５】
これにより、シェルスクリプトや“CryptExe2”が盗用されても、暗号化したログイン名やパスワードを復号化することはできない。なぜなら、“CryptExe2”は暗号化コマンドとして引数を１個しか取らないため、引数を表示する“prtArg”のようなプログラムを実行させる記述が挿入できなくなっているためである。
【００６６】
（実施例３）
上述の実施例２ではコマンド全体を暗号化するため、運用中に設定を変更させたい場合もコマンド全体を再度暗号化する手順が必要となり手間が多い。また、暗号化コマンドの提供者とシェルスクリプトの運用者が異なる場合は暗号化コマンドの提供者に暗号化を依頼する必要があり、緊急の設定変更が必要な場合の対応が遅れることもある。さらに、Ｃシェルなどの変数を使うこともできないので、シェルスクリプトの記述の柔軟性が欠けるといった問題がある。
【００６７】
このような実施例２で想定される問題を解決した実施例を“cryptExe3”というプログラムで説明する。“cryptExe3”を使用する場合は、運用で変更がある文字列や変数で置換したい文字列を置換指示文字列で置き換えた仮コマンドを暗号化する。例えば、実施例１で説明したコマンドでは、以下のように仮コマンドを暗号化する。
【００６８】
＞ cryptExe3 -key encrypkey "sendfile $1$ -l login -p passwd -s $2$ -d $3$"
qoSfHhdtrhTRH5(GDsddffFREHTnhshO&Fshfd
【００６９】
ここで、置換指示文字列は“$1$”、“$2$”、“$3$”であり、それぞれ元のコマンドの“$FILE”、“svr01”、“/usr/tmp03”を置き換えている。そして得られた暗号化仮コマンドを使って、シェルスクリプトには以下のように記述する。
【００７０】
：    ：    ：
set FILE = /usr/buf/snd030832
：    ：    ：
CryptExe1 "qoSfHhdtrhTRH5(GDsddffFREHTnhshO&Fshfd" $FILE svr01 /usr/tmp03
：    ：    ：
【００７１】
ここで“CryptExe3”は暗号化コマンド実行機能を実行する。“$FILE”はこの暗号化コマンドを実行する際にＣシェルによって“/usr/buf/snd030832”に置換される。“CryptExe3”は以下のように処理を実行する。
【００７２】
（１）“CryptExe3”は第１引数を暗号化仮コマンドとして受け取る。
（２）内部に埋め込まれた暗号化キーである“encrypkey”を使い暗号化仮コマンドを復号化し、元の仮コマンドである“sendfile $1$ -l login -p passwd -s $2$ -d $3$”を得る。
（３）置換文字列として第２引数以後の“/usr/buf/snd030832”、“svr01”、“/usr/tmp03”を受け取る。
（４）仮コマンド中の置換指示文字列“$1$”、“$2$”、“$3$”を、それぞれ置換文字列の“/usr/buf/snd030832”、“svr01”、“/usr/tmp03”と置き換えた実行コマンド“sendfile /usr/buf/snd030832 -l login -p passwd -s svr01 -d /usr/tmp03”を生成する。
（５）子プロセスを生成するシステムコール“fork”を発行する。
（６）新しく生成した子プロセスはシステムコール“exec”を発行し、実行コマンドを実行するプロセスとなる。子プロセスを生成した親プロセスではシステムコール“wait”を発行し子プロセスの終了を待機する。
（７）子プロセスが処理を終了すると、待機している親プロセスにそのことが通知され、親プロセスも処理を中止する。
【００７３】
以上説明した実施例によれば、第三者に漏洩させたくないログイン名とパスワードは暗号化仮コマンドとしてバッチファイルに記述でき、情報の漏洩を防ぐことができる。また、運用中に変更になるサーバ名と転送ファイルを格納するディレクトリは暗号化せずに置換文字列として記述されており、容易に変更が可能である。さらに、暗号化仮コマンドは第１引数のみに与えるよう規定しているため、引数を表示する“prtArg”のようなプログラムを実行させる記述が挿入できなくなっており、バッチファイルと“CryptExe3”が盗用されてもログイン名とパスワードを復号化することはできない。
【００７４】
以上、本発明の実施形態を詳述したが、本発明は、前述の実施形態の機能を実現するソフトウェアのプログラムを、コンピュータに直接あるいは遠隔から供給し、そのコンピュータがその供給されたプログラムコードを読み出して実行することによって達成される。
【００７５】
したがって、本発明の機能処理をコンピュータで実現するために、そのコンピュータにインストールされるプログラムコード自体およびそのプログラムを格納した記憶媒体も本発明を構成することになる。つまり、本発明の特許請求の範囲には、本発明の機能処理を実現するためのコンピュータプログラム自体、およびそのプログラムを格納した記憶媒体も含まれる。
【００７６】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００７７】
プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【００７８】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、そのホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明のクレームに含まれるものである。
【００７９】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００８０】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００８１】
さらに、記憶媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００８２】
【図１】実施形態における計算機の処理例を説明する図である。
【図２】実施形態における計算機の別の処理例を説明する図である。
【図３】本発明の実施に好適な計算機の構成例を示すブロック図である。
【図１】
2005208752.tif 000003
【図２】
2005208752.tif 000004
【図３】
2005208752.tif 000005