(57)【要約】【課題】関数の引数から秘匿すべき情報が漏洩する危険性を低減する様にプログラムを変換する変換装置を提供する。【解決手段】プログラムである関数の変換装置は、プログラムである関数の変換装置であって、対象関数の変換対象の引数と、前記変換対象の引数の数より多い数の符号化引数の関係式を定義する定義手段と、前記関係式に従い、前記対象関数を呼び出す呼び出し関数に、前記変換対象の引数を前記符号化引数に変換するコードを追加し、前記対象関数に、前記符号化引数を前記変換対象の引数に変換するコードを追加する引数変換処理追加手段と、を備えている。【選択図】図１
2014109641.tif 000002
【特許請求の範囲】
【請求項１】
プログラムである関数の変換装置であって、
対象関数の変換対象の引数と、前記変換対象の引数の数より多い数の符号化引数の関係式を定義する定義手段と、
前記関係式に従い、前記対象関数を呼び出す呼び出し関数に、前記変換対象の引数を前記符号化引数に変換するコードを追加し、前記対象関数に、前記符号化引数を前記変換対象の引数に変換するコードを追加する引数変換処理追加手段と、
を備えていることを特徴とする変換装置。
【請求項２】
前記関係式は、排他的論理和と、ローテート演算で定義されることを特徴とする請求項１に記載の変換装置。
【請求項３】
前記関係式に従い、前記符号化引数の数と、前記変換対象の引数の数との差に等しい数の、前記符号化引数についての非自明な関係式を求め、前記対象関数に、前記符号化引数が前記非自明な関係式を満たすことを検証するコードを追加する検証式追加手段をさらに備えていることを特徴とする請求項１又は２に記載の変換装置。
【請求項４】
前記対象関数の変換対象の引数と、前記符号化引数の数を入力する入力手段をさらに備えていることを特徴とする請求項１から３のいずれか１項に記載の変換装置。
【請求項５】
請求項１から４のいずれか１項に記載の変換装置としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアでの処理を安全に行う様にプログラムを変換する変換装置に関する。
【背景技術】
【０００２】
特許文献１から３は、情報の秘匿のための様々な暗号化装置を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１３０３４０号公報
【特許文献１】特開２０１１−１３０３１２号公報
【特許文献１】特開２０１１−１３００１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ソフトウェア処理においては関数が多用されるが、関数を呼び出す際には、その引数をスタックに格納する。したがって、ソフトウェアで暗号化処理を行う場合、例えば、暗号鍵又は暗号鍵を格納しているアドレスを引数として渡す必要がある。この場合、関数の呼び出しを解析することで秘匿すべき情報が露呈する場合がある。
【０００５】
本発明は、関数の引数から秘匿すべき情報が漏洩する危険性を低減する様にプログラムを変換する変換装置及び当該変換装置としてコンピュータを機能させるプログラムを提供するものである。
【課題を解決するための手段】
【０００６】
本発明の一側面によると、プログラムである関数の変換装置であって、対象関数の変換対象の引数と、前記変換対象の引数の数より多い数の符号化引数の関係式を定義する定義手段と、前記関係式に従い、前記対象関数を呼び出す呼び出し関数に、前記変換対象の引数を前記符号化引数に変換するコードを追加し、前記対象関数に、前記符号化引数を前記変換対象の引数に変換するコードを追加する引数変換処理追加手段と、を備えていることを特徴とする。
【発明の効果】
【０００７】
引数を変換することで引数から秘匿すべき情報が漏洩する危険性を低減することができる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態による変換装置の概略的な構成図。
【図２】一実施形態による変換装置の処理の説明図。
【図３】一実施形態による変換装置の処理の説明図。
【発明を実施するための形態】
【０００９】
以下、本発明の例示的な実施形態について図面を参照して説明する。なお、以下の各図においては、実施形態の説明に必要ではない構成要素については図から省略する。
【００１０】
まず、本実施形態による変換装置が行う処理について図２の関数を例にして説明する。図２においては、関数ｇにおいて、引数が（ｘ１，ｘ２）である関数ｆを呼び出している。本実施形態では、実際の引数（ｘ１，ｘ２）ではなく、この引数を変換した符号化引数を使用して関数を呼び出す。ここで、符号化引数の数は、関数ｆの本来の引数の数ｎ＝２より大きい任意の数字とする。以下では、符号化引数の数ｍを３とし、この３つの引数を（ｙ１，ｙ２，ｙ３）と表現する。
【００１１】
変換装置は、まず、以下の式により（ｙ１，ｙ２，ｙ３）と（ｘ１，ｘ２）の関係を定義する。
【００１２】
【数１】
2014109641.tif 000003
ここで、演算子"ｋ＜＜＜ｌ"は、数ｋの各ビットを、数ｌだけ左側にローテートさせることを示している。また、行列Ａは、ｍ行ｎ列の任意のブール行列であり、そのランクは関数ｆの本来の引数の数ｎ＝２に等しい。また、ｂ１、ｂ２及びｂ３は任意の定数である。例えば、
【００１３】
【数２】
2014109641.tif 000004
とし、ｔ１＝−１３、ｔ２＝−１１、ｔ３＝−３、ｓ１＝６、ｓ２＝１３とする。この場合、ｙ１、ｙ２及びｙ３を、ｘ１及びｘ２で表すと以下の通りとなる。
【００１４】
【数３】
2014109641.tif 000005
逆に、ｘ１及びｘ２を、ｙ１〜ｙ３で表すと以下の通りとなる。
【００１５】
【数４】
2014109641.tif 000006
さらに、ランク数がｎの行列Ａを使用したことにより、以下の非自明な関係式を得る。
【００１６】
【数５】
2014109641.tif 000007
【００１７】
変換装置は、関数ｆを呼び出す前に、引数を符号化引数に変換するため、図３に示す様に、関数ｇ内の関数ｆの呼び出し前に式（１）の処理を追加する。また、関数ｆにおいては、符号化引数を本来の引数に変換するために、図３に示す様に、式（２）の処理を関数ｆの本来の処理を実行する前に追加する。さらに、符号化引数が操作されたことを検出するために、式（３）の非自明な関係式を満たすか否かの検証式を、関数ｆの実行直後に追加する。なお、式（３）の非自明な関係式を満たさない場合には、符号化引数に何らかの人為的な処理が加えられた可能性が高いため関数ｆはその処理を中断する。
【００１８】
続いて、上記処理をより一般化して説明する。以下では、引数の変換対象の関数を対象関数と呼び、対象関数を呼び出す関数を呼び出し関数と呼ぶものとする。上記例においては、関数ｆが対象関数であり、関数ｇが呼び出し関数である。例えば、対象関数の引数の数をＮとする。この総ての引数を符号化引数に変換しても良いが、秘匿対象の引数のみを選択して、符号化引数に変換する形態とすることもできる。この構成により変換処理を削減できる。ここでは、対象関数の引数の数がＮの場合に、ｎ個の引数（ｘ１，ｘ２，・・・，ｘｎ）を符号化対象として選択するものとする。なお、ｎはＮ以下の整数である。この場合、ｎより大きいｍを選択し、符号化引数（ｙ１，ｙ２，・・・，ｙｍ）と本来の引数（ｘ１，ｘ２，・・・，ｘｎ）との関係を、ｍ行ｎ列のブール行列Ａと、ローテート演算と、固定値を使用して決定する。なお、この際、ブール行列Ａのランク数はｎとする。
【００１９】
【数６】
2014109641.tif 000008
【００２０】
変換装置は、上記関係式を、それぞれ、ｙ１〜ｙｍについて解き、呼び出し関数においては、対象関数を呼び出す前に、本来の引数を符号化引数に変換するコードを追加する。また、上記関係式をｘ１〜ｘｎについて解き、対象関数においては、符号化引数を元の引数の変換するコードを、対象関数本来の処理を実行する前に追加する。また、上記関係式からは、以下に示す、ｍ−ｎ個の非自明な関係式が得られるので、対象関数には、このｍ−ｎ個の非自明な関係式により、符号化引数の正当性を検査するコードを、対象関数の本来の処理を実行する前に追加する。
【００２１】
ｒ１（ｙ１，ｙ２，・・・ｙｍ）＝０
ｒ２（ｙ１，ｙ２，・・・ｙｍ）＝０
・・・
ｒｍ−ｎ（ｙ１，ｙ２，・・・ｙｍ）＝０
【００２２】
図１は、本実施形態による変換装置１の概略的な構成図である。入力部１１には、対象関数及び呼び出し関数を含む一連の関数と、対象関数について、符号化引数に変換する引数を指定する情報と、符号化引数の数が入力される。なお、総ての引数を符号化する場合には、引数の選択は不要である。また、符号化引数の数は、上述した様に符号化引数に変換する引数の数より多い値である。関係式定義部１２は、符号化引数と、変換する引数の関係を、ブール行列と、ローテート演算と、固定値により定義する。定義方法は任意である。引数変換処理追加部１３は、呼び出し関数においては、対象関数を呼び出す前に、本来の引数を符号化引数に変換するコードを追加し、対象関数においては、本来の処理を実行する前に、符号化引数を本来の引数に戻すコードを追加する。なお、当然、関数を呼び出す際の引数も変更する。また、検証式追加部１４は、非自明な関係式が成り立つかを検証するコードを、対象関数において本来の処理を実行する前に追加する。
【００２３】
なお、本発明による変換装置１は、コンピュータを上記変換装置１として動作させるプログラムにより実現することができる。これらコンピュータプログラムは、コンピュータが読み取り可能な記憶媒体に記憶されて、又は、ネットワーク経由で配布が可能なものである。
【図１】
2014109641.tif 000009
【図２】
2014109641.tif 000010
【図３】
2014109641.tif 000011