(57)【要約】【課題】特権ユーザを含めた他のユーザに対して、スクリプトプログラムが扱う秘密情報の漏洩を防ぐことができるスクリプト起動プログラム、スクリプト起動プログラムの生成プログラム、およびプログラムセットを提供する。【解決手段】スクリプト起動プログラム１０は、自身が有する秘密情報を主記憶装置２または二時記憶装置３に書き込み、スクリプトプログラム１１を起動する。スクリプト起動プログラム１０は、秘密情報が書き込まれた主記憶装置２または二時記憶装置３の位置を、起動したスクリプトプログラム１１に通知する。【選択図】図１
2011204105.tif 000002
【特許請求の範囲】
【請求項１】
秘密情報を有し、機械語プログラムとして構成されるスクリプト起動プログラムであって、
前記秘密情報を記憶部に書き込む処理と、
前記秘密情報を処理するスクリプトプログラムを起動する処理と、
前記秘密情報が書き込まれた前記記憶部の位置を、起動した前記スクリプトプログラムに通知する処理と、
をコンピュータに実行させるためのスクリプト起動プログラム。
【請求項２】
前記秘密情報を記憶部に書き込む処理では、前記記憶部のランダムな位置に前記秘密情報を書き込む請求項１に記載のスクリプト起動プログラム。
【請求項３】
前記秘密情報は暗号化されており、前記秘密情報を復号するための復号鍵をさらに有し、前記秘密情報を記憶部に書き込む処理の前に前記復号鍵により前記秘密情報を復号する処理をコンピュータに実行させるための請求項１に記載のスクリプト起動プログラム。
【請求項４】
秘密情報を記憶部に書き込む処理と、
前記秘密情報を処理するスクリプトプログラムを起動する処理と、
前記秘密情報が書き込まれた前記記憶部の位置を、起動した前記スクリプトプログラムに通知する処理と、
をコンピュータに実行させるためのスクリプト起動プログラムの命令列と前記秘密情報とを含むソースコードを生成する処理と、
コンパイラを起動して前記ソースコードをコンパイルして前記スクリプト起動プログラムの機械語プログラムを生成する処理と、
をコンピュータに実行させるためのスクリプト起動プログラムの生成プログラム。
【請求項５】
秘密情報を有し、機械語プログラムとして構成されるスクリプト起動プログラムであって、
前記秘密情報を記憶部に書き込む処理と、
前記秘密情報を処理するスクリプトプログラムを起動する処理と、
前記秘密情報が書き込まれた前記記憶部の位置を、起動した前記スクリプトプログラムに通知する処理と、
をコンピュータに実行させるためのスクリプト起動プログラムと、
テキストファイルとして構成され、実行時にインタプリタによって命令列が解釈され、命令が実行されるスクリプトプログラムであって、
起動後に前記スクリプト起動プログラムから通知された前記記憶部の位置から前記秘密情報を読み込む処理と、
読み込んだ前記秘密情報を前記記憶部の位置から消去する処理と、
読み込んだ前記秘密情報に基づく処理と、
をコンピュータに実行させるためのスクリプトプログラムと、
を有するプログラムセット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スクリプトプログラムを起動するスクリプト起動プログラムおよびその生成プログラムに関する。また、本発明は、スクリプト起動プログラムとその生成プログラムを組としたプログラムセットに関する。
【背景技術】
【０００２】
計算機システムで実行されるプログラムは、機械語プログラムとスクリプトプログラムに大別される。機械語プログラムは、コンパイラ言語で記述されたソースコードを、コンパイラと呼ばれるプログラムにより、CPUが直接実行可能な機械語に翻訳したものである。スクリプトプログラムは、スクリプト言語で記述されたソースコードそのものであり、インタプリタと呼ばれるプログラムがソースコードを逐次解釈することにより、実行される。
【０００３】
ソースコードは通常、テキストファイルとして計算機内に保存される。機械語プログラムはバイナリファイル（二進数値列からなるファイル）として保存される。機械語プログラムには、ソースコードの記述が比較的低水準である、プログラムの生産性が低い、翻訳後の機械語プログラムがあればソースコードなしに実行できる、実行速度が高速、等の特徴がある。スクリプトプログラムには、ソースコードの記述が高水準である、プログラムの生産性が高い、実行時にソースコードが必要である、実行速度が低速、等の特徴がある。
【０００４】
図７は、一般的な計算機システムの構成を示している。図７に示す計算機システムは、CPU（中央処理装置）１、主記憶装置（メモリ）２、二次記憶装置（ディスク装置）３を有し、これらがシステムバス４を介して接続されている。機械語プログラムは、バイナリファイル４０としてディスク装置３に格納されている。プログラムを起動する場合、オペレーティングシステム（OS）３２が主記憶装置２内に領域を確保し、プログラムを読み込んで、CPU１の実行制御をプログラムに渡す。
【０００５】
主記憶装置２内の機械語プログラム３０は、命令列と初期化データ、および一時的な記憶領域であるスタック領域とヒープ領域から構成される。二次記憶装置３内のバイナリファイル４０には、この命令列と初期化データが保存されている。
【０００６】
主記憶装置２内のスクリプトプログラム３１は機械語プログラムの特別な形態であり、機械語命令列としてインタプリタ４１を与えられ、初期化データとしてテキストファイルであるスクリプトプログラムのソースコード４２を与えられる。実行を開始したインタプリタは、ソースコード４２を逐次解釈し、実行する。
【０００７】
尚、オペレーティングシステム自体も特別な機械語プログラムである。オペレーティングシステムの機械語プログラムであるバイナリファイル４３がシステム起動時に特別な手段によって主記憶装置２に転送されると、オペレーティングシステム３２は実行を開始する。
【０００８】
スクリプトプログラムの実行にはテキストファイルの形態のソースコードが必要で、その可読性は高い。従って、スクリプトプログラムに秘密情報が含まれている場合、この秘密情報を読み出すことは極めて容易である。計算機システムでは、通常、安定的な運用のために、システム上のすべてのファイルの読み書きを行う権限が与えられた、スーパーユーザあるいは特権ユーザが存在する。このため、スクリプトプログラムに秘密情報が含まれると、容易に特権ユーザに漏洩してしまう。
【０００９】
従来、スクリプトプログラムで秘密情報を保護したい場合、プログラムの開始時にユーザが端末から秘密情報を手入力するなどの方法しかなく、例えばシステム起動時などにプログラムを自動的に実行できないという問題があった。逆に、プログラムの自動的な実行を可能とするためには、ソースコード内に秘密情報を格納することが必要であり、特権ユーザによる秘密情報の参照を防ぐことができないという問題があった。秘密情報を暗号化したとしても、プログラムがこれを復号可能とするためには、復号鍵をやはりソースコード内に格納する必要があり、問題は解決されない。
【００１０】
上記のような問題に対して、特許文献１では、スクリプトプログラムの遅延評価と即時実行処理の非同期化とにより、デバッガによるブレークポイントの挿入や、ステップ実行、データ更新の監視を困難とすることで、スクリプトプログラムの解析や秘密情報の漏洩を防いでいる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００９−２９４９２９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかし、特許文献１の手法は、HTTPプロトコルに依拠したものであるため、本発明が対象としているような、計算機システムにおいて単体で実行されるスクリプトプログラムに適用することができない。
【００１３】
データセンタやホスティングサービスなどでは、計算機システムの運用者（特権ユーザ）とアプリケーションの運用者とが異なる状況がある。近年、ブログやSNS (Social Network Service) 等のWebアプリケーションが広く普及しており、Webアプリケーションの構築基盤として、スクリプト言語に基づくフレームワークが多く利用されている。このようなフレームワークでは、一般的に、バックエンドのRDBMS (Relational Data Base Management System) に接続するためのパスワード情報が保護されてなく、計算機システムの運用者がSNSの会員情報等に容易にアクセスできる状況となっている。
【００１４】
本発明は、上述した課題に鑑みてなされたものであって、特権ユーザを含めた他のユーザに対して、スクリプトプログラムが扱う秘密情報の漏洩を防ぐことができるスクリプト起動プログラム、スクリプト起動プログラムの生成プログラム、およびプログラムセットを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明は、上記の課題を解決するためになされたもので、秘密情報を有し、機械語プログラムとして構成されるスクリプト起動プログラムであって、前記秘密情報を記憶部に書き込む処理と、前記秘密情報を処理するスクリプトプログラムを起動する処理と、前記秘密情報が書き込まれた前記記憶部の位置を、起動した前記スクリプトプログラムに通知する処理と、をコンピュータに実行させるためのスクリプト起動プログラムである。
【００１６】
また、本発明のスクリプト起動プログラムにおいて、前記秘密情報を記憶部に書き込む処理では、前記記憶部のランダムな位置に前記秘密情報を書き込む。
【００１７】
また、本発明のスクリプト起動プログラムにおいて、前記秘密情報は暗号化されており、前記秘密情報を復号するための復号鍵をさらに有し、前記秘密情報を記憶部に書き込む処理の前に前記復号鍵により前記秘密情報を復号する処理をコンピュータに実行させる。
【００１８】
また、本発明は、秘密情報を記憶部に書き込む処理と、前記秘密情報を処理するスクリプトプログラムを起動する処理と、前記秘密情報が書き込まれた前記記憶部の位置を、起動した前記スクリプトプログラムに通知する処理と、をコンピュータに実行させるためのスクリプト起動プログラムの命令列と前記秘密情報とを含むソースコードを生成する処理と、コンパイラを起動して前記ソースコードをコンパイルして前記スクリプト起動プログラムの機械語プログラムを生成する処理と、をコンピュータに実行させるためのスクリプト起動プログラムの生成プログラムである。
【００１９】
また、本発明は、秘密情報を有し、機械語プログラムとして構成されるスクリプト起動プログラムであって、前記秘密情報を記憶部に書き込む処理と、前記秘密情報を処理するスクリプトプログラムを起動する処理と、前記秘密情報が書き込まれた前記記憶部の位置を、起動した前記スクリプトプログラムに通知する処理と、をコンピュータに実行させるためのスクリプト起動プログラムと、テキストファイルとして構成され、実行時にインタプリタによって命令列が解釈され、命令が実行されるスクリプトプログラムであって、起動後に前記スクリプト起動プログラムから通知された前記記憶部の位置から前記秘密情報を読み込む処理と、読み込んだ前記秘密情報を前記記憶部の位置から消去する処理と、読み込んだ前記秘密情報に基づく処理と、をコンピュータに実行させるためのスクリプトプログラムと、を有するプログラムセットである。
【発明の効果】
【００２０】
本発明によれば、機械語プログラムとして構成されるスクリプト起動プログラムが秘密情報を有しており、その秘密情報を記憶部に書き込んで、秘密情報が書き込まれた記憶部の位置をスクリプトプログラムに通知することによって、秘密情報をスクリプトプログラムのソースコードに格納しなくてよいので、特権ユーザを含めた他のユーザに対して、スクリプトプログラムが扱う秘密情報の漏洩を防ぐことができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の一実施形態による計算機システムの構成を示すブロック図である。
【図２】本発明の一実施形態におけるスクリプトプログラムに係る処理の手順を示すシーケンス図である。
【図３】本発明の一実施形態による計算機システムの構成を示すブロック図である。
【図４】本発明の一実施形態におけるスクリプト起動プログラムの生成手順を示すシーケンス図である。
【図５】本発明の一実施形態におけるスクリプトプログラムに係る処理の手順を示すシーケンス図である。
【図６】本発明の一実施形態におけるスクリプトプログラムに係る処理の手順を示すシーケンス図である。
【図７】一般的な計算機システムの構成を示すブロック図である。
【発明を実施するための形態】
【００２２】
以下、図面を参照し、本発明の実施形態を説明する。本発明の対象となるスクリプト言語とは、前述したように、プログラム実行時に、インタプリタと呼ばれる処理プログラムがテキストファイル形式のソースコードを読み込み逐次解釈実行することを前提としたプログラミング言語であり、代表的なものとして、BasicやLisp、Perl、PHP、Python、Ruby等が挙げられる。尚、本発明は、中間言語に翻訳されバイトコードインタプリタで解釈実行されるPascalやJava（登録商標）にも適用可能である。
【００２３】
本実施形態は、スクリプトプログラムとは別に、機械語に翻訳されたスクリプト起動プログラムを準備し、スクリプト起動プログラムに秘密情報を格納して、スクリプト起動プログラムがスクリプトプログラムを起動する際にスクリプトプログラムに対して秘密情報を通知するというものである。このために、計算機システムにはスクリプトプログラムの実行環境と共にファイルシステムあるいはプロセス間通信機能が必要である。これらの機能は殆どあらゆる計算機システムで提供されている。
【００２４】
図１は、本発明の一実施形態による計算機システムの構成を示しており、特にスクリプトプログラムに係る処理を実行するための構成を示している。図１に示す計算機システムは、CPU（中央処理装置）１、主記憶装置（メモリ）２、二次記憶装置（ディスク装置）３を有し、これらがシステムバス４を介して接続されている。
【００２５】
二次記憶装置３は、スクリプトプログラムを起動するスクリプト起動プログラムの機械語プログラム２０（バイナリファイル）と、スクリプトプログラムの処理を記述したソースコード２１（テキストファイル）と、インタプリタ２２とを有する。スクリプト起動プログラムの機械語プログラム２０は、スクリプトプログラムによって処理される秘密情報を含んでいる。スクリプト起動プログラムの機械語プログラム２０はバイナリファイルであるため、例えばデータベースにアクセスするためのパスワードなどの秘密情報がスクリプト起動プログラムのソースコードに含まれていても、翻訳後の機械語プログラム２０を参照して秘密情報を知ることは容易ではない。難読性をより高めるため、秘密情報は、暗号化された状態でスクリプト起動プログラムのソースコードに記述される。秘密情報を復号するための復号鍵もスクリプト起動プログラムの機械語プログラム２０に含まれている。
【００２６】
スクリプト起動プログラムの機械語プログラム２０が主記憶装置２に読み込まれると、スクリプト起動プログラム１０が起動される。起動されたスクリプト起動プログラム１０は、スクリプトプログラムを起動するスクリプトプログラム起動部として動作する。
【００２７】
スクリプト起動プログラム１０によって、スクリプトプログラムのソースコード２１とインタプリタ２２とが主記憶装置２に読み込まれると、スクリプトプログラム１１が起動される。起動されたスクリプトプログラム１１は、スクリプトプログラムのソースコード２１に記述された命令列に基づく処理を実行するスクリプト処理部として動作する。前述したように、主記憶装置２に読み込まれたインタプリタがスクリプトプログラムのソースコード２１を逐次解釈し、実行することによって、所望の処理が実行される。
【００２８】
次に、スクリプトプログラムに係る処理を実行する際の動作を説明する。本実施形態では、３通りの動作を説明する。
【００２９】
＜第１の動作例＞
第１の動作例では、秘密情報の通知に一時ファイルを使用する。図２は、第１の動作例におけるスクリプトプログラムに係る処理の手順を示している。
【００３０】
（ステップＳ１００）
スクリプト起動プログラム１０は、起動されると、復号鍵を用いて秘密情報を復号する。スクリプト起動プログラム１０は、図７に示した初期化データに秘密情報および復号鍵を保持している。続いて、スクリプト起動プログラム１０は、二次記憶装置３に一時ファイルを作成し、復号した秘密情報を一時ファイルに書き込む。
【００３１】
（ステップＳ１１０）
スクリプト起動プログラム１０は、スクリプトプログラムのソースコード２１とインタプリタ２２を二次記憶装置３から主記憶装置２に読み込むことによってスクリプトプログラム１１を起動し、一時ファイルのパス名（ファイルシステム上の位置とファイル名）をスクリプトプログラム１１に通知する。パス名の通知方法としては、プログラム引数や環境変数等を利用すればよい。プログラム引数や環境変数は、他のユーザからも参照可能であるため、スクリプト起動プログラム１０が一時ファイルのパス名を実行時にランダムに生成することが望ましい。これによって、スクリプト起動プログラム１０は主記憶装置２上のランダムな位置に秘密情報を書き込むことになるので、秘密情報の漏洩をより確実に防ぐことができる。
【００３２】
（ステップＳ１２０）
スクリプトプログラム１１は、起動されると、スクリプト起動プログラム１０によって通知された二次記憶装置３上の位置から主記憶装置２に秘密情報を読み込む。スクリプトプログラム１１は、図７に示したヒープ領域に、読み込んだ秘密情報を保持する。さらに、スクリプトプログラム１１は、一時ファイル上の秘密情報に対して乱数で上書きを行い、一時ファイルを消去する。秘密情報が一時ファイル上に平文で存在する時間を短くし、さらにパス名をランダムに選ぶことにより、秘密情報の不正な取得を困難にすることができる。
【００３３】
（ステップＳ１３０）
スクリプトプログラム１１は、保持している秘密情報を用いて処理を行う。秘密情報を用いた処理として例えば、RDBMSとの接続処理が挙げられる。RDBMSは、正しいパスワード情報を持つデータベースユーザにのみ接続を許可する。一旦接続されると、この接続された通信路を経由して問合せの発行や検索結果の読み出しを行うことができるようになる。
【００３４】
上記では、スクリプトプログラム１１が一時ファイル上の秘密情報を主記憶装置２に読み込んだ後、一時ファイル上の秘密情報に対して乱数で上書きを行っているが、０等の定数で上書きを行ってもよい。ただし、乱数で上書きを行ったほうが、秘密情報の不正な取得をより困難にすることができる。
【００３５】
図３は、スクリプト起動プログラムの生成に係る処理を実行するための構成を示している。図３に示すハードウェア構成は、図１に示したハードウェア構成と同様である。スクリプト起動プログラム生成プログラムの機械語プログラム２３は、スクリプト起動プログラムを生成するプログラムであり、二次記憶装置３に格納されている。スクリプト起動プログラム生成プログラムの機械語プログラム２３が主記憶装置２に読み込まれると、スクリプト起動プログラム生成プログラム１２が起動される。起動されたスクリプト起動プログラム生成プログラム１２は、スクリプト起動プログラムを生成するスクリプト起動プログラム生成部として動作する。
【００３６】
起動されたスクリプト起動プログラム生成プログラム１２は、二次記憶装置３に格納されている秘密情報２５を主記憶装置２に読み込み、スクリプト起動プログラムの命令列と秘密情報とを含むスクリプト起動プログラムのソースコード２６を生成する。生成されたスクリプト起動プログラムのソースコード２６は二次記憶装置３に格納される。
【００３７】
また、スクリプト起動プログラム生成プログラム１２は、二次記憶装置３に格納されているコンパイラの機械語プログラム２７を主記憶装置２に読み込んでコンパイラ１３を起動し、コンパイラ１３によってスクリプト起動プログラムのソースコード２６をコンパイルしてスクリプト起動プログラムの機械語プログラム２０を生成する。生成されたスクリプト起動プログラムの機械語プログラム２０は二次記憶装置３に格納される。
【００３８】
必須ではないが、スクリプト起動プログラムの生成時に、テキストファイルであるスクリプトプログラムのソースコード２４のハッシュ値を計算し、秘密情報２５に付加しておくことで、スクリプトプログラムの検証機能を持たせることもできる。スクリプト起動プログラムの実行時に、起動すべきスクリプトプログラムのハッシュ値を計算し、秘密情報内に保持した値と比較することにより、スクリプトプログラムの改変の検知と秘密情報の漏洩防止が可能となる。
【００３９】
図３では、スクリプト起動プログラム生成プログラムを機械語プログラムとして実装しているが、スクリプトプログラムとして実装してもよい。スクリプト起動プログラムの機械語プログラム２０の生成後、スクリプト起動プログラム生成プログラム１２は二次記憶装置３上の秘密情報２５とスクリプト起動プログラムのソースコード２６を消去する。スクリプトプログラムの実行時、二次記憶装置３上には、秘密情報を含まないスクリプトプログラムのソースコード２４と、人間による解析が難しいスクリプト起動プログラムの機械語プログラム２０が保存されていればよい。
【００４０】
図４は、スクリプト起動プログラムの生成手順を示している。スクリプト起動プログラム生成プログラム１２は、起動されると、秘密情報を格納可能な整数配列を準備し、その整数配列に乱数データを書き込む。続いて、スクリプト起動プログラム生成プログラム１２は、整数配列中のランダムに選んだ位置に秘密情報を配置し（秘密情報の埋め込み）、秘密情報を含む整数配列全体を暗号化する。この暗号化は必須ではないが、暗号化することで、秘密情報の不正な取得をより困難にすることができる。
【００４１】
続いて、スクリプト起動プログラム生成プログラム１２は、暗号化したデータを初期化済み整数配列の宣言文として記述したコンパイラ言語のソースコードを生成する。このソースコードがスクリプト起動プログラムのソースコード２６である。図４には、暗号化したデータを含む整数配列（sec_data[]）の宣言文がソースコードに記述されている様子が示されている。秘密情報の復号に必要となる復号情報（秘密情報の開始位置や長さ、スクリプトプログラムのパス名、復号鍵等）もこのソースコードに含まれている。復号情報は、定数定義としてもよいし、配列の宣言としてもよい。
【００４２】
続いて、スクリプト起動プログラム生成プログラム１２は、スクリプトプログラムに依存しない処理を記述した定型処理部を上記のソースコードと結合する。秘密情報の復号処理や、スクリプトプログラムの起動処理、秘密情報の通知処理は、スクリプトプログラムによらず共通に作成可能であるため、これらの処理を定型処理部としてソースファイルの形式で予め準備しておくことができる。これによって、プログラミングに係る人的なコストを削減することができる。
【００４３】
続いて、スクリプト起動プログラム生成プログラム１２は、コンパイラ１３を起動し、上記のように結合した定型処理部とソースコードをコンパイラ１３によってコンパイルし、スクリプト起動プログラムの機械語プログラム２０を生成する。上記の生成手順は完全に機械的であるため、秘密情報とスクリプトプログラムのパス名が与えられるとスクリプト起動プログラムを自動的に生成するようなプログラムも容易に開発することができる。
【００４４】
＜第２の動作例＞
第２の動作例では、主記憶装置２に設定される共有メモリを秘密情報の通知に使用する。図５は、第２の動作例におけるスクリプトプログラムに係る処理の手順を示している。
【００４５】
（ステップＳ２００）
スクリプト起動プログラム１０は、起動されると、復号鍵を用いて秘密情報を復号する。続いて、スクリプト起動プログラム１０は、オペレーティングシステムに共有メモリの割り当てをリクエストし、その結果として割り当てられた共有メモリに、復号した秘密情報を書き込む。
【００４６】
（ステップＳ２１０）
スクリプト起動プログラム１０は、スクリプトプログラムのソースコード２１とインタプリタ２２を二次記憶装置３から主記憶装置２に読み込むことによってスクリプトプログラム１１を起動し、共有メモリの識別子をスクリプトプログラム１１に通知する。共有メモリの識別子の通知方法としては、プログラム引数や環境変数等を利用すればよい。共有メモリの識別子は、オペレーティングシステムにより動的に設定されるため、他のユーザが推測することは困難である。
【００４７】
（ステップＳ１２０）
スクリプトプログラム１１は、起動されると、スクリプト起動プログラム１０によって通知された識別子を有する共有メモリから秘密情報を読み込む。さらに、スクリプトプログラム１１は、一時ファイル上の秘密情報に対して０等のデータで上書きを行い、共有メモリを開放する。秘密情報が共有メモリ上に平文で存在する時間を短くすることにより、秘密情報の不正な取得を困難にすることができる。
【００４８】
（ステップＳ２３０）
スクリプトプログラム１１は、保持している秘密情報を用いて処理を行う。
【００４９】
＜第３の動作例＞
第３の動作例では、主記憶装置２に設定されるFIFO（First In First Out: 先入れ先出しキュー、名前付パイプ）を秘密情報の通知に使用する。図６は、第３の動作例におけるスクリプトプログラムに係る処理の手順を示している。
【００５０】
（ステップＳ３００）
スクリプト起動プログラム１０は、起動されると、FIFOを生成する。
【００５１】
（ステップＳ３１０）
スクリプト起動プログラム１０は、スクリプトプログラムのソースコード２１とインタプリタ２２を二次記憶装置３から主記憶装置２に読み込むことによってスクリプトプログラム１１を起動し、FIFOのパス名をスクリプトプログラム１１に通知する。FIFOのパス名の通知方法としては、プログラム引数や環境変数等を利用すればよい。プログラム引数や環境変数は、他のユーザからも参照可能であるため、スクリプト起動プログラム１０が一時ファイルのパス名を実行時にランダムに生成することが望ましい。これによって、スクリプト起動プログラム１０は主記憶装置２上のランダムな位置に秘密情報を書き込むことになるので、秘密情報の漏洩をより確実に防ぐことができる。
【００５２】
（ステップＳ３２０）
続いて、スクリプト起動プログラム１０は、復号鍵を用いて秘密情報を復号する。さらに、スクリプト起動プログラム１０は、FIFOをオープンし、FIFOに秘密情報を書き込んだ後、FIFOをクローズする。
【００５３】
（ステップＳ３３０）
スクリプトプログラム１１は、起動されると、スクリプト起動プログラム１０によって通知されたパス名のFIFOをオープンし、FIFOから秘密情報を読み込んだ後、FIFOをクローズする。FIFO内の情報は、スクリプトプログラム１１によって読み込まれると同時にオペレーティングシステムによって消去されるので、秘密情報の不正な取得を困難にすることができる。FIFOの代わりにストリーム型のソケットの機能を利用しても同様の手順で実行することができる。
【００５４】
（ステップＳ３４０）
スクリプトプログラム１１は、保持している秘密情報を用いて処理を行う。
【００５５】
上述したように、本実施形態によれば、秘密情報をスクリプトプログラムのソースコードに格納する必要がない。秘密情報は、機械語プログラムであるスクリプト起動プログラムに保持されるため、機械語プログラムと同等の秘匿性を容易に達成することができる。さらに、人手を介すことなくスクリプトプログラムの自動実行を行うことができる。これらにより、可読性、生産性が高いというスクリプト言語の特長を有したまま、秘密情報の漏洩を防ぐことができる。
【００５６】
また、スクリプト起動プログラムが一時ファイルやFIFOのパス名をランダムに選択することによって、二次記憶装置３あるいは主記憶装置２上のランダムな位置に秘密情報が書き込まれるので、秘密情報の漏洩をより確実に防ぐことができる。さらに、秘密情報を暗号化してスクリプト起動プログラムに埋め込むことによっても、秘密情報の漏洩をより確実に防ぐことができる。
【００５７】
また、スクリプト起動プログラムにスクリプトプログラムの検証機能を付与することが可能であり、スクリプトプログラムが改竄された場合にも、秘密情報の漏洩を防止することができる。スクリプト起動プログラムは、計算機システム上でのスクリプトプログラムの位置（パス名）と秘密情報とを与えることにより自動的に作成可能であるため、秘匿性確保のための開発コストが発生しない。さらに、スクリプト起動プログラムに一般の手段による難読化を施すことにより、秘密情報を一層堅固に守ることができる。
【００５８】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【００５９】
１・・・CPU、２・・・主記憶装置（記憶部）、３・・・二次記憶装置（記憶部）、１０・・・スクリプト起動プログラム、１１・・・スクリプトプログラム、１２・・・スクリプト起動プログラム生成プログラム、１３・・・コンパイラ、２０・・・スクリプト起動プログラムの機械語プログラム、２１・・・スクリプトプログラムのソースコード、２２・・・インタプリタ、２３・・・スクリプト起動プログラム生成プログラムの機械語プログラム、２４・・・スクリプトプログラムのソースコード、２５・・・秘密情報、２６・・・スクリプト起動プログラムのソースコード、２７・・・コンパイラの機械語プログラム
【図１】
2011204105.tif 000003
【図２】
2011204105.tif 000004
【図３】
2011204105.tif 000005
【図４】
2011204105.tif 000006
【図５】
2011204105.tif 000007
【図６】
2011204105.tif 000008
【図７】
2011204105.tif 000009