JP2009271884A - Information processor and information processing program - Google Patents
Information processor and information processing program Download PDFInfo
- Publication number
- JP2009271884A JP2009271884A JP2008124245A JP2008124245A JP2009271884A JP 2009271884 A JP2009271884 A JP 2009271884A JP 2008124245 A JP2008124245 A JP 2008124245A JP 2008124245 A JP2008124245 A JP 2008124245A JP 2009271884 A JP2009271884 A JP 2009271884A
- Authority
- JP
- Japan
- Prior art keywords
- program
- code
- turing machine
- subprogram
- machine code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000010365 information processing Effects 0.000 title claims description 23
- 238000006243 chemical reaction Methods 0.000 claims abstract description 33
- 230000002194 synthesizing effect Effects 0.000 claims description 4
- 230000015572 biosynthetic process Effects 0.000 claims description 3
- 238000003786 synthesis reaction Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 description 30
- 230000006870 function Effects 0.000 description 29
- 238000000034 method Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
Images
Abstract
Description
本発明は、情報処理装置及び情報処理プログラムに関する。 The present invention relates to an information processing apparatus and an information processing program.
プログラムを不正なリバースエンジニアリングから保護するために、多くのソフトウェア難読化技術が提案されている。難読化とは、プログラムを複雑に変換することで、プログラムの解析コストを大きくする技術である。 Many software obfuscation techniques have been proposed to protect programs from unauthorized reverse engineering. Obfuscation is a technique that increases the cost of analyzing a program by converting the program in a complex manner.
これに関連する技術として、例えば、特許文献1には、ソフトウェア難読化技術の従来手法として、物理的に保護され、内部に一方向性関数の実行部を保有する特殊なCPUを利用し、このCPUとメモリの間の通信に現れるインストラクション列に無関心性(oblibious)を持たせた上で暗号化処理を施すことによって難読化処理を施すプログラム難読化手法が開示されている。
As a technology related to this, for example, in
また、例えば、特許文献2には、保護対象プログラムに対しそれに関連付けられたセキュリティ・プログラム及びエミュレーション・プログラムを用いて難読化処理を施すプログラム難読化手法が開示されている。この難読化手法では、セキュリティ・プログラムが前記保護対象プログラムのアクセスを管理し、前記保護対象プログラムの所定の関数又はルーチンを前記エミュレーション・プログラムによって提供される仮想プロセッサ上で実行可能な簡略化命令セット形式に変換し、難読化されたプログラムを実行する際にはこの簡略化命令セット形式に変換された命令を実行することで保護を実現する。
ところで、特許文献1に開示された技術は、物理的に保護されたCPUを実現するための特殊なデバイスを必要とし、難読化処理を施すプログラムのサイズに関する指数関数オーダーの記憶容量を必要とする。このため、極めて小規模なプログラムのみに適用可能であり、また特殊なデバイスを使用できない場合には難読化プログラムを実行することができない。また、特許文献2に開示された技術では、セキュリティ・プログラムを改竄することで難読化を実質的に解除できてしまう。このため、セキュリティ・プログラムの改竄を行うことで、保護対象プログラムへのアクセスを許されていない不正な利用者でも保護対象プログラムを利用することが可能である。
本発明は、パスワード等の保護対象プログラムに関連した秘密情報を保持しない不正な利用者によるプログラムの解読を困難とする場合にあって、難読化したプログラムの挙動の推定を困難にした情報処理装置及び情報処理プログラムを提供することを目的としている。
By the way, the technique disclosed in
The present invention relates to an information processing apparatus that makes it difficult to estimate the behavior of an obfuscated program when it is difficult for an unauthorized user who does not hold secret information related to the protection target program such as a password to decrypt the program. And an information processing program.
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項1の発明は、プログラムを受け付けるプログラム受付手段と、前記プログラム受付手段によって受け付けられたプログラム又は該プログラムの一部をチューリングマシーンコードに変換する変換手段と、前記変換手段によって変換されたチューリングマシーンコードに基づいて、ダミーコードを生成するダミーコード生成手段と、前記ダミーコード生成手段によって生成されたダミーコードを前記変換手段によって変換されたチューリングマシーンコードに合成する合成手段を具備することを特徴とする情報処理装置である。
The gist of the present invention for achieving the object lies in the inventions of the following items.
The invention of
請求項2の発明は、前記プログラム受付手段によって受け付けられるプログラムは、該プログラムを動作させるための符号を変換するサブプログラムを含み、前記変換手段によってチューリングマシーンコードに変換されるプログラムの一部は、前記符号を変換するサブプログラムであることを特徴とする請求項1に記載の情報処理装置である。
According to a second aspect of the present invention, the program received by the program receiving means includes a subprogram for converting a code for operating the program, and a part of the program converted into a Turing machine code by the converting means is The information processing apparatus according to
請求項3の発明は、前記チューリングマシーンコードをエミュレート実行させるためのサブプログラムを生成するエミュレート生成手段をさらに具備することを特徴とする請求項1又は2に記載の情報処理装置である。 According to a third aspect of the present invention, there is provided the information processing apparatus according to the first or second aspect, further comprising emulation generation means for generating a subprogram for performing emulation execution of the Turing machine code.
請求項4の発明は、前記請求項1から3のいずれか一項に記載の情報処理装置によってダミーコードが合成されたプログラムを受け付けるプログラム受付手段と、前記プログラム受付手段によって受け付けられたプログラムを実行する実行手段を具備することを特徴とする情報処理装置である。 According to a fourth aspect of the present invention, there is provided a program receiving means for receiving a program in which a dummy code is synthesized by the information processing apparatus according to any one of the first to third aspects, and a program received by the program receiving means. An information processing apparatus comprising an execution means for performing the processing.
請求項5の発明は、コンピュータを、プログラムを受け付けるプログラム受付手段と、前記プログラム受付手段によって受け付けられたプログラム又は該プログラムの一部をチューリングマシーンコードに変換する変換手段と、前記変換手段によって変換されたチューリングマシーンコードに基づいて、ダミーコードを生成するダミーコード生成手段と、前記ダミーコード生成手段によって生成されたダミーコードを前記変換手段によって変換されたチューリングマシーンコードに合成する合成手段として機能させることを特徴とする情報処理プログラムである。 According to a fifth aspect of the present invention, a computer is converted by a program receiving means for receiving a program, a converting means for converting a program received by the program receiving means or a part of the program into a Turing machine code, and the converting means. A dummy code generating means for generating a dummy code based on the Turing machine code, and a synthesizing means for combining the dummy code generated by the dummy code generating means with the Turing machine code converted by the converting means. Is an information processing program characterized by
請求項1記載の情報処理装置によれば、パスワード等の保護対象プログラムに関連した秘密情報を保持しない不正な利用者によるプログラムの解読を困難とする場合にあって、本構成を有していない場合に比較して、難読化したプログラムの挙動の推定を困難にする。 According to the information processing apparatus of the first aspect, it is difficult to decipher the program by an unauthorized user who does not hold the confidential information related to the protection target program such as a password, and does not have this configuration. Compared to cases, it is difficult to estimate the behavior of obfuscated programs.
請求項2記載の情報処理装置によれば、セキュリティ強化に必要な部分に対して、本発明による難読化を施すことができる。 According to the information processing apparatus of the second aspect, the obfuscation according to the present invention can be performed on the part necessary for security enhancement.
請求項3記載の情報処理装置によれば、難読化後のプログラムを特殊なデバイスを利用することなく実行させることができるように難読化することができる。 According to the information processing apparatus of the third aspect, the obfuscated program can be obfuscated so that it can be executed without using a special device.
請求項4記載の情報処理装置によれば、難読化したプログラムを特殊なデバイスを利用することなく実行することができる。 According to the information processing apparatus of the fourth aspect, the obfuscated program can be executed without using a special device.
請求項5記載の情報処理プログラムによれば、パスワード等の保護対象プログラムに関連した秘密情報を保持しない不正な利用者によるプログラムの解読を困難とする場合にあって、本構成を有していない場合に比較して、難読化したプログラムの挙動の推定を困難にする。 According to the information processing program of the fifth aspect, it is difficult to decipher the program by an unauthorized user who does not hold secret information related to the protection target program such as a password, and does not have this configuration. Compared to cases, it is difficult to estimate the behavior of obfuscated programs.
まず、本実施の形態の概要を説明する。
本実施の形態では、プログラムのコードの一部又は全部をチューリングマシーンコードの形式に変換し、チューリングマシーンコードのダミーコードを付与することによって難読化を実現する。これにより、任意のプログラムに難読化処理が適用可能となる。チューリングマシーンコードの形式に変換されたプログラムは、C言語等の高級言語で記述されたものとは異なり、一般にプログラムの挙動を推定することが難しい。
さらに、本実施の形態では、難読化前のプログラムに相当するチューリングマシーンコードにダミーコードの4項系列を挿入することを行う。後述するダミーコードの4項系列の生成法を利用することで、チューリングマシーンの動作及び出力に影響を与えないダミーコードの4項系列を任意の個数作成することが可能である。チューリングマシーンコードの形式への変換及びチューリングマシーンの動作及び出力に影響を与えないダミーコードの4項系列の挿入により、難読化前のプログラム内の重要なアルゴリズム、データ等を難読化する。
First, an outline of the present embodiment will be described.
In the present embodiment, obfuscation is realized by converting part or all of the program code into a Turing machine code format and adding a dummy code of the Turing machine code. As a result, the obfuscation process can be applied to an arbitrary program. Unlike a program written in a high-level language such as C language, a program converted into a Turing machine code format is generally difficult to estimate the program behavior.
Furthermore, in this embodiment, a four-term sequence of dummy codes is inserted into the Turing machine code corresponding to the program before obfuscation. By using a method for generating a 4-term sequence of dummy codes, which will be described later, it is possible to create an arbitrary number of 4-term sequences of dummy codes that do not affect the operation and output of the Turing machine. By converting the Turing machine code into a format and inserting a 4-term sequence of dummy code that does not affect the operation and output of the Turing machine, important algorithms, data, etc. in the program before obfuscation are obfuscated.
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図1は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、コンピュータ・プログラム、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能にほぼ一対一に対応しているが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって1モジュールが複数コンピュータで実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)の場合にも用いる。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。「所定」という用語は、予め定められたの意の他に、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じての意を含めて用いる。
Hereinafter, an example of a preferred embodiment for realizing the present invention will be described with reference to the drawings.
FIG. 1 shows a conceptual module configuration diagram of a configuration example of the present embodiment.
The module generally refers to components such as software (computer program) and hardware that can be logically separated. Therefore, the module in the present embodiment indicates not only a module in a computer program but also a module in a hardware configuration. Therefore, the present embodiment also serves as an explanation of a computer program, a system, and a method. However, for the sake of explanation, the words “store”, “store”, and equivalents thereof are used. However, when the embodiment is a computer program, these words are stored in a storage device or stored in memory. It is the control to be stored in the device. In addition, the modules correspond almost one-to-one with the functions. However, in mounting, one module may be composed of one program, or a plurality of modules may be composed of one program. A plurality of programs may be used. The plurality of modules may be executed by one computer, or one module may be executed by a plurality of computers in a distributed or parallel environment. Note that one module may include other modules. Further, hereinafter, “connection” is used not only for physical connection but also for logical connection (data exchange, instruction, reference relationship between data, etc.).
In addition, the system or device is configured by connecting a plurality of computers, hardware, devices, and the like by communication means such as a network (including one-to-one correspondence communication connection), etc., and one computer, hardware, device. The case where it implement | achieves by etc. is also included. “Apparatus” and “system” are used as synonymous terms. The term “predetermined” is used in addition to a predetermined meaning, including the meaning according to the situation / state at that time or the situation / state until then.
本実施の形態は、図1に示すように、プログラム受付モジュール100、チューリングマシーンコード変換モジュール110、ダミーコード生成モジュール120、難読化プログラム生成モジュール130、プログラム出力モジュール140を有している。
プログラム受付モジュール100は、チューリングマシーンコード変換モジュール110と接続されており、難読化対象のプログラムを受け付ける。そして、そのプログラムをチューリングマシーンコード変換モジュール110に渡す。プログラムを受け付けるとは、例えば、記録媒体(コンピュータに内蔵されているハードディスクの他に、リムーバブルメディアであってもよい)に記録されているプログラムを読み出すこと、通信回線を介してプログラムを受信すること、キーボード等で打ち込まれたプログラムを受け付けること等がある。また、チューリングマシーンコード変換モジュール110が受け付けるプログラムには、そのプログラムを動作させるための符号(例えば、パスワード等)を変換するサブプログラム等を含んでいてもよい。
As shown in FIG. 1, the present embodiment includes a
The
チューリングマシーンコード変換モジュール110は、プログラム受付モジュール100、ダミーコード生成モジュール120と接続されており、プログラム受付モジュール100によって受け付けられたプログラム又はそのプログラムの一部をチューリングマシーンコードに変換する。そして、全部又は一部をチューリングマシーンコードに変換したプログラムをダミーコード生成モジュール120に渡す。また、チューリングマシーンコード変換モジュール110がチューリングマシーンコードに変換するプログラムの一部は、そのプログラムを動作させるための符号(例えば、パスワード又はそのパスワードに関連するデータ)を変換するサブプログラムであってもよい。
ダミーコード生成モジュール120は、チューリングマシーンコード変換モジュール110、難読化プログラム生成モジュール130と接続されており、チューリングマシーンコード変換モジュール110によって変換されたチューリングマシーンコードに基づいて、チューリングマシーンコードであるダミーコードを生成する。そして、チューリングマシーンコード変換モジュール110によって変換されたチューリングマシーンコードとダミーコードを難読化プログラム生成モジュール130に渡す。
なお、ダミーコードとは、そのプログラムの機能及び出力に変化を及ぼさないコードをいう。
The Turing machine
The dummy
The dummy code means a code that does not change the function and output of the program.
難読化プログラム生成モジュール130は、ダミーコード生成モジュール120、プログラム出力モジュール140と接続されており、ダミーコード生成モジュール120によって生成されたダミーコードをチューリングマシーンコード変換モジュール110によって変換されたチューリングマシーンコードに合成する。合成としては、具体例として、そのチューリングマシーンコードにダミーコードを挿入することである。
また、難読化プログラム生成モジュール130は、プログラムの一部をチューリングマシーンコードに変換している場合は、さらにダミーコードが合成されたチューリングマシーンコードとチューリングマシーンコードに変換していない部分のプログラムを合成する。
また、難読化プログラム生成モジュール130は、チューリングマシーンコードをエミュレート実行させるためのサブプログラムを生成するようにしてもよい。その生成したサブプログラムを、前述のプログラムの全部又は一部をチューリングマシーンコードに変換したプログラムに合成する。
そして、難読化プログラム生成モジュール130は、難読化処理を施したプログラム(ダミーコードを合成したプログラム)をプログラム出力モジュール140に渡す。
プログラム出力モジュール140は、難読化プログラム生成モジュール130と接続されており、難読化プログラム生成モジュール130によって合成されたプログラム(難読化プログラム)を出力する。プログラムを出力するとは、例えば、記録媒体にプログラムを記録すること、通信回線を介してプログラムを送信すること等が含まれる。
The obfuscation
Further, when a part of the program is converted to the Turing machine code, the obfuscated
Further, the obfuscated
Then, the obfuscated
The
図2を用いて、本実施の形態による難読化装置22の利用形態を説明する。
本実施の形態では、有償ソフトウェアの販売に際し、対価を支払わない不正なユーザによるソフトウェアの不当な利用を防止する目的で、この有償ソフトウェアに難読化を施す場合を例にして説明する。
図2において、配布者21はプログラムの配布者であり、ユーザ23はそのプログラムのユーザであり、ユーザ24はそのプログラムに対する不正なユーザである。なお、配布者21、ユーザ23、ユーザ24は、プログラムの作成、配布、受信、実行を行うためのPC(パーソナルコンピュータ)を所有しており、以下に説明するそれらの処理は、配布者21又はユーザ23等の所有しているPCによって実行されるものである。
A usage pattern of the
In the present embodiment, a case where obfuscation is performed on paid software will be described as an example in order to prevent unauthorized use of the software by an unauthorized user who does not pay the consideration when selling paid software.
In FIG. 2, a
また、矢印はデータ又はプログラムの受け渡しを表す。つまり、矢印の起点から終点の方に、矢印に付記されたデータ又はプログラムが渡されることを示す。例えば、難読化装置22は、プログラムの配布者21によって利用されることを想定している。
配布者21は、ユーザの利用に供されるソフトウェアのプログラムPと後述するパスワードを難読化装置22に入力として与える(S201)。ここで、このプログラムPは、C言語などの高級言語を用いてテキスト形式で記述されており、正規のパスワードを受け付けると所定の動作を実施し、ユーザに対して予め規定されている機能を提供する。
Moreover, the arrow represents delivery of data or a program. That is, the data or program attached to the arrow is passed from the starting point to the ending point of the arrow. For example, the
The
難読化装置22は、受け取ったプログラムPに対し難読化を施し、難読化プログラムを出力する(S202)。難読化装置22は、受け取ったプログラムPと難読化プログラムの機能及び出力が変化しないように受け取ったプログラムPを変換する。なお、難読化プログラムのコードには、難読化装置22によって難読化処理が施されているので、これを解析してプログラムの秘密情報等を得ることは困難である。
配布者21は、プログラムの販売目的で、遠隔地に居住する正規のユーザ23に対し難読化プログラムをインターネット経由で配布する(S203)。配布者21とユーザ23は、第三者には秘密のパスワードとしてプログラムの起動に必要となる例えば32ビットの正の整数を共有している。そして、正規のユーザ23から前記秘密のパスワードを受け付け、難読化プログラムが実行される。また、ユーザ24は、難読化プログラムの不正利用を試みるため、配布者21から正規のユーザ23にプログラムが配布される経路上で不正なハッキングを行うなどしてこのプログラムを詐取する(S204)。
The
The
前記有償ソフトウェアを記述するプログラムPには、パスワードを用いたプロテクションが施されている。プログラムの不正利用や改竄が成功しないように、プログラムの主要部分のコードCpには暗号化が施される。
図3の例に示すように、難読化装置22による難読化処理が施される前のプログラム300(プログラムP)は、パスワード入出力サブプログラム310、パスワード変換サブプログラム320、ハッシュ関数計算サブプログラム330、復号処理計算サブプログラム340、エミュレーション実行サブプログラム350を有している。
The program P describing the paid software is protected using a password. The code Cp of the main part of the program is encrypted so that unauthorized use or alteration of the program will not succeed.
As shown in the example of FIG. 3, the program 300 (program P) before being obfuscated by the
パスワード入出力サブプログラム310は、パスワード変換サブプログラム320と接続されており、ユーザによって入力されたパスワード301をプログラム300内のパスワード変換サブプログラム320に出力する。
パスワード変換サブプログラム320は、パスワード入出力サブプログラム310、ハッシュ関数計算サブプログラム330と接続され、データB321を保持しており、データB321との排他的論理和を用いてパスワード入出力サブプログラム310から渡されたパスワード301を変換する。変換された値wrをハッシュ関数計算サブプログラム330へ出力する。
ハッシュ関数計算サブプログラム330は、パスワード変換サブプログラム320、復号処理計算サブプログラム340と接続されており、パスワード変換サブプログラム320からの出力であるwrに対してハッシュ関数を計算する。計算結果のw’を復号処理計算サブプログラム340に出力する。
復号処理計算サブプログラム340は、ハッシュ関数計算サブプログラム330、エミュレーション実行サブプログラム350と接続され、データX341を保持しており、暗号化された状態で復号処理計算サブプログラム340内にストアされているデータX341をハッシュ関数計算サブプログラム330の出力値w’を用いて復号する。復号された結果のコードCpをエミュレーション実行サブプログラム350に出力する。
エミュレーション実行サブプログラム350は、復号処理計算サブプログラム340と接続されており、復号処理計算サブプログラム340の出力であるコードCpをエミュレーション実行する。これによって、プログラム300の本来の処理(配布者21がプログラム300によって提供しようとした機能)が行われる。
The password input /
The
The hash
The decryption
The
次に、パスワード変換サブプログラム320について、より詳細に説明する。パスワード変換サブプログラム320の内部には、予めランダムに生成された32ビットの二進数であるデータB321がハード・コーディングされている。このデータB321は、配布者21とユーザ23との間で共有されるパスワードに乱数性が期待できない場合でも、ハッシュ関数計算サブプログラム330の出力に十分な乱数性を付与するためのものである。しかしながら、データB321の統計的な偏りが攻撃者(ユーザ24)に露呈すると、プログラム300に付与されたセキュリティ強度は著しく低減する。このため、データB321の具体的な値は可能な限り漏洩しないことが望ましい。このため、データB321を含むパスワード変換サブプログラム320は、後述する難読化手法によってプロテクションが施される。
パスワード変換サブプログラム320は、このデータB321と32ビットのパスワード301とのビット毎の排他的論理和を計算し、計算結果wrをハッシュ関数計算サブプログラム330に出力する。
Next, the
The
次に、復号処理計算サブプログラム340について、より詳細に説明する。復号処理計算サブプログラム340の内部には、データX341がハード・コーディングされている。データX341は、配布者21とユーザ23との間で共有されるパスワード301を受け付けたときのハッシュ関数計算サブプログラム330の出力値w’を鍵として、コードCpを暗号化することで生成される。この暗号化には、AES等の対称鍵暗号方式が使用される。
復号処理計算サブプログラム340は、ハッシュ関数計算サブプログラム330の出力値w’を鍵として、データX341に復号処理を施すことで、プログラム300の主要部分のコードCpを算出する。
Next, the decryption
The decryption
次に、プログラム300の起動後の処理について説明する。
プログラム300がユーザ23の計算機環境において起動されると、プログラム300のパスワード入出力サブプログラム310はパスワード301の入力をユーザに対して要求する。パスワード301が入力されると、パスワード変換サブプログラム320は、このパスワード301とデータB321とのビット毎の排他的論理和を行う。ハッシュ関数計算サブプログラム330は、その排他的論理和の結果wrを受け付けて、ハッシュ関数の出力値w’を計算する。復号処理計算サブプログラム340は、w’を鍵としてデータX341に復号処理を施す。さらに、エミュレーション実行サブプログラム350は、この復号処理の結果Cpを受け付けて、エミュレータを実行する。
ユーザが入力したパスワード301が配布者21と正規のユーザ23との間で共有される正規のパスワードと一致する場合、データX341に施されている暗号化処理は正しく解除され、コードCpが算出される。これにより、プログラムの主要部分のコードCpがエミュレータによって実行されることになる。この場合は、プログラム300は所定の動作を実施し、ユーザはこのプログラムが提供する機能を正しく利用することができる。
Next, processing after the
When the
When the
次に、難読化装置22が実施する難読化の手順を説明する。
本実施の形態では、難読化装置22が受け付ける難読化前のプログラムPはC言語を用いて記述されているとする。難読化装置22は、前記プログラムP及び配布者21とユーザ23との間で共有するパスワードを入力として受け取り、このプログラムPに対応する難読化プログラムPobを出力する。
本実施の形態では、難読化装置22は難読化前のプログラムP(プログラム300)内にあるパスワード変換サブプログラム320をチューリングマシーンコード(Turing machine code)の形式に変換し、これにダミーコードを付加することで難読化を行う。
Next, the obfuscation procedure performed by the
In the present embodiment, it is assumed that the program P before obfuscation accepted by the
In the present embodiment, the
以下では、前記32ビットのパスワードを
001......10
とする。また、難読化前のプログラムPに保持されている32ビットの二進数であるデータB321を
101......11
とする。
図4に、前記パスワード変換サブプログラム320をC言語の関数PassChangeとして記述した場合のプログラムを示す。本実施の形態では、チューリングマシーンは一つのヘッドと一つのテープで構成されるものとする。また、前記テープは記号を書き込むためのセルを連結したものとして構成される。初期状態において、チューリングマシーンのテープには、そのチューリングマシーンに与えられる初期値として0番アドレスから順に記号列が書き込まれており、チューリングマシーンのヘッドは、そのテープの0番アドレスにセットされる。
In the following, the 32-bit password is changed to 001. . . . . . 10
And In addition, data B321 which is a 32-bit binary number held in the program P before obfuscation is stored in 101. . . . . . 11
And
FIG. 4 shows a program in the case where the
図5に、前記の関数PassChangeをチューリングマシーンコードの形式に変換することで得られるチューリングマシーンコード500を示す。さらに図6に、チューリングマシーンコード500にダミーコードを付加することで作成されるチューリングマシーンコード600を示す。
FIG. 5 shows a
図5及び図6において、
qiSjSkql
は、チューリングマシーンの内部状態がqiで、チューリングマシーンのヘッドが見ているセルに書かれている記号がSjのとき、内部状態をqlに、前記セルに書かれた記号をSkに変更することを意味する。
また、
qiSjRql
は、チューリングマシーンの内部状態がqiで、チューリングマシーンのヘッドが見ているセルに書かれている記号がSjのとき、内部状態をqlに、ヘッドを右隣のセルの上に移動することを意味する。
さらに、
qiSjLql
は、チューリングマシーンの内部状態がqiで、チューリングマシーンのヘッドが見ているセルに書かれている記号がSjのとき、内部状態をqlに、ヘッドを左隣のセルの上に移動することを意味する。
5 and 6,
q i S j S k q l
, When the Turing machine internal state is q i and the symbol written in the cell viewed by the head of the Turing machine is S j , the internal state is q l and the symbol written in the cell is S k Means to change.
Also,
q i S j Rq l
When the internal state of the Turing machine is q i and the symbol written in the cell that the head of the Turing machine is looking at is S j , the internal state is moved to q l and the head is moved over the cell to the right It means to do.
further,
q i S j Lq l
When the internal state of the Turing machine is q i and the symbol written in the cell that the head of the Turing machine is looking at is S j , the internal state is moved to q l and the head is moved over the next cell to the left It means to do.
以下において前記のqiSjSkqlは4項系列と呼ばれ、特定のチューリングマシーンは4項系列の集合として定義される。記号S0及びS1は、特別な記号で、S0は‘0’、S1は‘1’にそれぞれ対応する。
チューリングマシーンコード500は、チューリングマシーンのテープ上に初期値として書き込まれた記号列と前記データB321とのビット毎の排他的論理和を0番アドレスから順にテープに上書きする。チューリングマシーンコード600は、チューリングマシーンコード500(行501から行599)とダミーコード(行601から行699)の4項系列をその内部に含んでいるが、チューリングマシーンコード600のテープに初期値として32ビットの二進数がS0及びS1を用いて書き込まれる場合にはチューリングマシーンコード500と同等の動作を実行する。
In the following, q i S j S k q l is called a 4-term sequence, and a specific Turing machine is defined as a set of 4-term sequences. Symbols S 0 and S 1 are special symbols, S 0 corresponds to “0”, and S 1 corresponds to “1”.
The
前記ダミーコードの4項系列は、以下のように生成される。
まず、チューリングマシーンコード500に含まれないテープ記号の集合Gs又はチューリングマシーンコード500に含まれない内部状態の集合Gqを生成する。次に、集合Gqからランダムに状態を表す記号を2個選択し、これらを4項系列の1番目及び4番目のシンボルとする。さらに、集合Gsの中からランダムに記号を選択し、これを4項系列の2番目のシンボルとする。同様に、集合Gs、R及びLの中からランダムに記号を選択し、これを4項系列の3番目のシンボルとする。
前記手順に従い、ダミーコードの4項系列を一つ又は複数個生成する。これらダミーコードの4項系列は、難読化前のプログラムに相当するチューリングマシーンコード500には含まれない。よって、S0及びS1を用いて記述される記号列がチューリングマシーンコード600の初期値として設定される場合、これらダミーコードの4項系列がチューリングマシーンコード600の動作中に利用されることはない。このため、ダミーコードの4項系列が付加されたチューリングマシーンコード600の動作は、二進数で記述される初期値に対しチューリングマシーンコード500の動作と同等になる。
なお、前述のダミーコードの生成では、集合Gqと集合Gsの両方からランダムに選択しているが、いずれか片方の集合からランダムに選択するようにしてもよい。つまり、難読化前のプログラムに相当するチューリングマシーンコード500に含まれない4項系列を生成すればよい。
The four-term sequence of the dummy code is generated as follows.
First, a set Gs of tape symbols not included in the
According to the above procedure, one or a plurality of four-term sequences of dummy codes are generated. These four-term sequences of dummy codes are not included in the
In the above-described generation of the dummy code, the set is randomly selected from both the set Gq and the set Gs, but may be selected randomly from one of the sets. That is, a four-term sequence that is not included in the
難読化装置22が生成する難読化プログラムPob(難読化プログラム700)の構成は、図7のようになる。
難読化装置22は、以下の手順に従って元のプログラムP(プログラム300)から難読化プログラムPobを生成する。
まず、難読化装置22は、入力として与えられたプログラムPを解析し、以下に述べるチューリングマシーンエミュレーション実行サブプログラム720を作成する。チューリングマシーンエミュレーション実行サブプログラム720は、前記チューリングマシーンコード600に対応するコードを内部データ(TM2 721)として保持し、TM2 721をエミュレーション実行するためのプログラムである。チューリングマシーンエミュレーション実行サブプログラム720は、パスワード入出力サブプログラム710の出力値を受け取り、これをチューリングマシーンコード600のテープに初期値として書き込み、チューリングマシーンコード600を動作させた上で、チューリングマシーンコード600が停止したときのテープの内容をwrとして出力する。
難読化装置22は、プログラムPからパスワード変換サブプログラム320を削除し、代わりにチューリングマシーンエミュレーション実行サブプログラム720を埋め込むことで難読化プログラムPobを生成する。つまり、難読化プログラム700は、パスワード入出力サブプログラム710、チューリングマシーンエミュレーション実行サブプログラム720、ハッシュ関数計算サブプログラム730、復号処理計算サブプログラム740、エミュレーション実行サブプログラム750を有しているが、パスワード入出力サブプログラム710はパスワード入出力サブプログラム310に、ハッシュ関数計算サブプログラム730はハッシュ関数計算サブプログラム330に、復号処理計算サブプログラム740は復号処理計算サブプログラム340、エミュレーション実行サブプログラム750はエミュレーション実行サブプログラム350にそれぞれ対応する。
The configuration of the obfuscation program Pob (obfuscation program 700) generated by the
The
First, the
The
配布者21は、難読化装置22の出力した難読化プログラムPobをインターネット経由でユーザ23に配布する。ユーザ23は、受け取った難読化プログラムPobをユーザ23の所有するPC上にダウンロードし、これを実行する。つまり、ユーザ23の所有するPCは、難読化装置22によって難読化が施された難読化プログラム700を受信して実行する。
先に述べたように、実行された難読化プログラムPobはユーザにパスワードの入力を求める。入力されたパスワードが配布者21とユーザ23との間で共有されるものに合致すれば、難読化プログラムPobは正常に動作を行い、ユーザに所定の機能を提供する。
また、ユーザ24が配布経路上から不正なハッキング等を用いてこの難読化プログラムPobを詐取したとしても、正しいパスワードを保有していないユーザ24はプログラムPobを正常に稼動させることができない。また、プログラムPobの内部データB(データB321)に関する脆弱性は、データBを含むコードが前記により難読化されることで著しく低減する。このため、正しいパスワードを保有していないユーザ24が、難読化プログラムPob内にあるチューリングマシーンエミュレーション実行サブプログラム720を解析したとしても、データBに関する脆弱性を利用して難読化プログラムPobを不正に利用することは困難である。
The
As described above, the executed obfuscation program Pob prompts the user for a password. If the entered password matches that shared between the
Further, even if the
なお、本実施の形態としてのプログラムが実行されるコンピュータのハードウェア構成は、図8に例示するように、一般的なコンピュータであり、具体的にはパーソナルコンピュータ、サーバーとなり得るコンピュータ等である。チューリングマシーンコード変換モジュール110、ダミーコード生成モジュール120、難読化プログラム生成モジュール130等のプログラムを実行するCPU801(この例では演算部としてCPUを用いた)と、そのプログラムやデータを記憶するRAM802と、本コンピュータを起動するためのプログラム等が格納されているROM803と、補助記憶装置であるHD804(例えばハードディスクを用いることができる)と、キーボード、マウス等のデータを入力する入力装置806と、CRTや液晶ディスプレイ等の出力装置805と、通信ネットワークと接続するための通信回線インタフェース807(例えばネットワークインタフェースカードを用いることができる)、そして、それらをつないでデータのやりとりをするためのバス808により構成されている。これらのコンピュータが複数台互いにネットワークによって接続されていてもよい。
The hardware configuration of the computer on which the program according to the present embodiment is executed is a general computer as illustrated in FIG. 8, specifically a personal computer, a computer that can be a server, or the like. A
前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、図8に示すハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、図8に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えばASIC等)で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図8に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、情報家電、複写機、ファックス、スキャナ、プリンタ、複合機(スキャナ、プリンタ、複写機、ファックス等のいずれか2つ以上の機能を有している画像処理装置)などに組み込まれていてもよい。
Among the above-described embodiments, the computer program is a computer program that reads the computer program, which is software, in the hardware configuration system, and the software and hardware resources cooperate with each other. Is realized.
Note that the hardware configuration shown in FIG. 8 shows one configuration example, and the present embodiment is not limited to the configuration shown in FIG. 8, and is a configuration that can execute the modules described in the present embodiment. I just need it. For example, some modules may be configured by dedicated hardware (for example, ASIC), and some modules may be in an external system and connected via a communication line. A plurality of systems shown in FIG. 5 may be connected to each other via communication lines so as to cooperate with each other. In particular, in addition to personal computers, information appliances, copiers, fax machines, scanners, printers, and multifunction machines (image processing apparatuses having two or more functions of scanners, printers, copiers, fax machines, etc.) Etc. may be incorporated.
前記実施の形態においては、ダミーコードを含むチューリングマシーンコード600は交互にダミーコードを挿入したチューリングマシーンコード600を示したが、本来のチューリングマシーンコード500のランダムな位置に挿入してもよい。また、2つ以上のダミーコードを連続して挿入してもよい。
In the above embodiment, the Turing machine code 600 including the dummy code is the Turing machine code 600 in which the dummy code is alternately inserted. However, the Turing machine code 600 may be inserted at a random position of the original
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD−R、DVD−RW、DVD−RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)等、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読出し専用メモリ(ROM)、電気的消去及び書換可能な読出し専用メモリ(EEPROM)、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、あるいは無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して
記録されていてもよい。また、圧縮や暗号化など、復元可能であればどのような態様で記録されていてもよい。
The program described above may be provided by being stored in a recording medium, or the program may be provided by communication means. In that case, for example, the above-described program may be regarded as an invention of a “computer-readable recording medium recording the program”.
The “computer-readable recording medium on which a program is recorded” refers to a computer-readable recording medium on which a program is recorded, which is used for program installation, execution, program distribution, and the like.
The recording medium is, for example, a digital versatile disc (DVD), which is a standard established by the DVD Forum, such as “DVD-R, DVD-RW, DVD-RAM,” and DVD + RW. Standards such as “DVD + R, DVD + RW, etc.”, compact discs (CDs), read-only memory (CD-ROM), CD recordable (CD-R), CD rewritable (CD-RW), etc. MO), flexible disk (FD), magnetic tape, hard disk, read only memory (ROM), electrically erasable and rewritable read only memory (EEPROM), flash memory, random access memory (RAM), etc. It is.
The program or a part of the program may be recorded on the recording medium for storage or distribution. Also, by communication, for example, a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a wired network used for the Internet, an intranet, an extranet, etc., or wireless communication It may be transmitted using a transmission medium such as a network or a combination of these, or may be carried on a carrier wave.
Furthermore, the program may be a part of another program, or may be recorded on a recording medium together with a separate program. Moreover, it may be divided and recorded on a plurality of recording media. Further, it may be recorded in any manner as long as it can be restored, such as compression or encryption.
22…難読化装置
100…プログラム受付モジュール
110…チューリングマシーンコード変換モジュール
120…ダミーコード生成モジュール
130…難読化プログラム生成モジュール
140…プログラム出力モジュール
22 ...
Claims (5)
前記プログラム受付手段によって受け付けられたプログラム又は該プログラムの一部をチューリングマシーンコードに変換する変換手段と、
前記変換手段によって変換されたチューリングマシーンコードに基づいて、ダミーコードを生成するダミーコード生成手段と、
前記ダミーコード生成手段によって生成されたダミーコードを前記変換手段によって変換されたチューリングマシーンコードに合成する合成手段
を具備することを特徴とする情報処理装置。 A program receiving means for receiving the program;
A converting means for converting the program received by the program receiving means or a part of the program into a Turing machine code;
Dummy code generating means for generating a dummy code based on the Turing machine code converted by the converting means;
An information processing apparatus comprising: synthesis means for synthesizing the dummy code generated by the dummy code generation means with the Turing machine code converted by the conversion means.
前記変換手段によってチューリングマシーンコードに変換されるプログラムの一部は、前記符号を変換するサブプログラムである
ことを特徴とする請求項1に記載の情報処理装置。 The program received by the program receiving means includes a subprogram that converts a code for operating the program,
The information processing apparatus according to claim 1, wherein a part of the program converted into the Turing machine code by the conversion unit is a subprogram that converts the code.
をさらに具備することを特徴とする請求項1又は2に記載の情報処理装置。 The information processing apparatus according to claim 1, further comprising: an emulation generation unit configured to generate a subprogram for performing emulation of the Turing machine code.
前記プログラム受付手段によって受け付けられたプログラムを実行する実行手段
を具備することを特徴とする情報処理装置。 Program receiving means for receiving a program in which a dummy code is synthesized by the information processing apparatus according to any one of claims 1 to 3,
An information processing apparatus comprising: an execution unit that executes a program received by the program reception unit.
プログラムを受け付けるプログラム受付手段と、
前記プログラム受付手段によって受け付けられたプログラム又は該プログラムの一部をチューリングマシーンコードに変換する変換手段と、
前記変換手段によって変換されたチューリングマシーンコードに基づいて、ダミーコードを生成するダミーコード生成手段と、
前記ダミーコード生成手段によって生成されたダミーコードを前記変換手段によって変換されたチューリングマシーンコードに合成する合成手段
として機能させることを特徴とする情報処理プログラム。 Computer
A program receiving means for receiving the program;
A converting means for converting the program received by the program receiving means or a part of the program into a Turing machine code;
Dummy code generating means for generating a dummy code based on the Turing machine code converted by the converting means;
An information processing program that causes a dummy code generated by the dummy code generation means to function as a synthesis means for synthesizing the dummy code with the Turing machine code converted by the conversion means.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008124245A JP2009271884A (en) | 2008-05-12 | 2008-05-12 | Information processor and information processing program |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008124245A JP2009271884A (en) | 2008-05-12 | 2008-05-12 | Information processor and information processing program |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2009271884A true JP2009271884A (en) | 2009-11-19 |
Family
ID=41438348
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008124245A Pending JP2009271884A (en) | 2008-05-12 | 2008-05-12 | Information processor and information processing program |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2009271884A (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2011065529A1 (en) | 2009-11-30 | 2011-06-03 | 日本化薬株式会社 | Process for production of catalyst for use in production of methacrylic acid, and process for production of methacrylic acid |
| JP2014160383A (en) * | 2013-02-20 | 2014-09-04 | Toppan Printing Co Ltd | Portable terminal equipment and decryption processing program |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6476236A (en) * | 1987-09-18 | 1989-03-22 | Fujitsu Ltd | Simulator device with pseudo-operating function of input/ output device |
| JPH04319379A (en) * | 1991-04-18 | 1992-11-10 | Sophia Co Ltd | Game device |
| JP2002132364A (en) * | 2000-10-19 | 2002-05-10 | Yutaka Iizuka | Method for protecting program from internal analysis, computer readable recording medium and program distribution method |
| WO2006090800A1 (en) * | 2005-02-25 | 2006-08-31 | Matsushita Electric Industrial Co., Ltd. | Secure processing device and secure processing system |
-
2008
- 2008-05-12 JP JP2008124245A patent/JP2009271884A/en active Pending
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6476236A (en) * | 1987-09-18 | 1989-03-22 | Fujitsu Ltd | Simulator device with pseudo-operating function of input/ output device |
| JPH04319379A (en) * | 1991-04-18 | 1992-11-10 | Sophia Co Ltd | Game device |
| JP2002132364A (en) * | 2000-10-19 | 2002-05-10 | Yutaka Iizuka | Method for protecting program from internal analysis, computer readable recording medium and program distribution method |
| WO2006090800A1 (en) * | 2005-02-25 | 2006-08-31 | Matsushita Electric Industrial Co., Ltd. | Secure processing device and secure processing system |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2011065529A1 (en) | 2009-11-30 | 2011-06-03 | 日本化薬株式会社 | Process for production of catalyst for use in production of methacrylic acid, and process for production of methacrylic acid |
| JP2014160383A (en) * | 2013-02-20 | 2014-09-04 | Toppan Printing Co Ltd | Portable terminal equipment and decryption processing program |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11929995B2 (en) | Method and apparatus for protecting confidential data in an open software stack | |
| JP4470982B2 (en) | Information processing apparatus and information processing program | |
| KR101255395B1 (en) | Transcryption of digital content between content protection systems | |
| US8504826B2 (en) | Client and host validation based on hash of key and validation of encrypted data | |
| JP5167348B2 (en) | Software encryption method, software decryption method, software encryption device, and software decryption device | |
| US8681975B2 (en) | Encryption method and apparatus using composition of ciphers | |
| CN105468940B (en) | Method for protecting software and device | |
| CN111656345B (en) | Enable encrypted software modules in container files | |
| EP2629223A1 (en) | System, devices and methods for collaborative execution of a software application comprising at least one encrypted instruction | |
| JP7024666B2 (en) | ID-based hash certification system configuration device, ID-based cryptographic device and program | |
| CN102460456B (en) | Memory device and method for adaptive protection of content | |
| JPH1131105A (en) | Device and method for producing data capsule | |
| CN113591098B (en) | SGX-based remote secure heterogeneous computing method and system | |
| US7975141B2 (en) | Method of sharing bus key and apparatus therefor | |
| JP2007515723A (en) | Software execution protection using active entities | |
| US10387653B2 (en) | Secure provisioning of semiconductor chips in untrusted manufacturing factories | |
| JP2009271884A (en) | Information processor and information processing program | |
| JP2005303370A (en) | Semiconductor chip, boot program, semiconductor chip program, storage medium, terminal device, and information processing method | |
| US20060064584A1 (en) | Data encryption systems and methods | |
| CN115982739A (en) | A method and system for data protection of a low-code development platform | |
| JP2008310678A (en) | Storage device, information device, and content conversion method | |
| KR20030039347A (en) | Apparatus and Method for Protecting Copyrighted Contents | |
| JP2015022460A (en) | Information storage system, information storage device, method thereof, and program | |
| JP5268413B2 (en) | Disclosure restriction processing apparatus, data processing system, and program | |
| TWI474704B (en) | A scorm-compliant digital rights management system and random encryption method thereof |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090825 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111115 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111116 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120327 |