[go: up one dir, main page]

JP2009271884A - Information processor and information processing program - Google Patents

Information processor and information processing program Download PDF

Info

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
Application number
JP2008124245A
Other languages
Japanese (ja)
Inventor
Koji Suzuki
耕二 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP2008124245A priority Critical patent/JP2009271884A/en
Publication of JP2009271884A publication Critical patent/JP2009271884A/en
Pending legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide an information processor in which the behavior of an obfuscated program is made hard to estimate, when making the program difficult to be read by an unauthorized user not holding confidential information relating to a protection-objective program such as a password. <P>SOLUTION: A program reception means of the information processor receives the program, a conversion means converts the program received by the information reception means, or one part of the program, into a Turing machine code, a dummy code generation means generates a dummy code, based on the Turing machine code converted by the conversion means, and a composition means composes the dummy code generated by the dummy code generation means with the Turing machine code converted by the conversion means. <P>COPYRIGHT: (C)2010,JPO&INPIT

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 Patent Document 1, as a conventional technique of software obfuscation technology, a special CPU that is physically protected and has an execution unit for a one-way function inside is used. A program obfuscation technique is disclosed in which an obfuscation process is performed by applying an encryption process to an instruction string that appears in communication between a CPU and a memory.

また、例えば、特許文献2には、保護対象プログラムに対しそれに関連付けられたセキュリティ・プログラム及びエミュレーション・プログラムを用いて難読化処理を施すプログラム難読化手法が開示されている。この難読化手法では、セキュリティ・プログラムが前記保護対象プログラムのアクセスを管理し、前記保護対象プログラムの所定の関数又はルーチンを前記エミュレーション・プログラムによって提供される仮想プロセッサ上で実行可能な簡略化命令セット形式に変換し、難読化されたプログラムを実行する際にはこの簡略化命令セット形式に変換された命令を実行することで保護を実現する。
米国特許第5123045号明細書 特表2007−503038号公報
Further, for example, Patent Document 2 discloses a program obfuscation technique for performing obfuscation processing on a protection target program using a security program and an emulation program associated therewith. In this obfuscation technique, a simplified instruction set that allows a security program to manage access to the protected program and execute a predetermined function or routine of the protected program on a virtual processor provided by the emulation program When the program is converted into a format and obfuscated, the protection is realized by executing the command converted into the simplified command set format.
US Pat. No. 5,123,045 Special table 2007-503038 gazette

ところで、特許文献1に開示された技術は、物理的に保護されたCPUを実現するための特殊なデバイスを必要とし、難読化処理を施すプログラムのサイズに関する指数関数オーダーの記憶容量を必要とする。このため、極めて小規模なプログラムのみに適用可能であり、また特殊なデバイスを使用できない場合には難読化プログラムを実行することができない。また、特許文献2に開示された技術では、セキュリティ・プログラムを改竄することで難読化を実質的に解除できてしまう。このため、セキュリティ・プログラムの改竄を行うことで、保護対象プログラムへのアクセスを許されていない不正な利用者でも保護対象プログラムを利用することが可能である。
本発明は、パスワード等の保護対象プログラムに関連した秘密情報を保持しない不正な利用者によるプログラムの解読を困難とする場合にあって、難読化したプログラムの挙動の推定を困難にした情報処理装置及び情報処理プログラムを提供することを目的としている。
By the way, the technique disclosed in Patent Document 1 requires a special device for realizing a physically protected CPU, and requires a storage capacity in the order of an exponential function related to the size of a program to be obfuscated. . For this reason, it can be applied only to a very small program, and the obfuscated program cannot be executed when a special device cannot be used. Also, with the technique disclosed in Patent Document 2, obfuscation can be substantially canceled by falsifying the security program. For this reason, by falsifying the security program, an unauthorized user who is not permitted to access the protection target program can use the protection target program.
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 claim 1 includes 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 a Turing machine converted by the converting means. A dummy code generating means for generating a dummy code based on the code; and a combining means for combining the dummy code generated by the dummy code generating means with the Turing machine code converted by the converting means. Information processing apparatus.

請求項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 claim 1, wherein the information processing apparatus is a subprogram that converts the code.

請求項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 program reception module 100, a Turing machine code conversion module 110, a dummy code generation module 120, an obfuscation program generation module 130, and a program output module 140.
The program reception module 100 is connected to the Turing machine code conversion module 110 and receives a program to be obfuscated. Then, the program is passed to the Turing machine code conversion module 110. Accepting a program means, for example, reading a program recorded on a recording medium (which may be a removable medium in addition to a hard disk built in the computer) or receiving a program via a communication line. Or accepting a program typed in with a keyboard or the like. Further, the program received by the Turing machine code conversion module 110 may include a subprogram for converting a code (for example, a password) for operating the program.

チューリングマシーンコード変換モジュール110は、プログラム受付モジュール100、ダミーコード生成モジュール120と接続されており、プログラム受付モジュール100によって受け付けられたプログラム又はそのプログラムの一部をチューリングマシーンコードに変換する。そして、全部又は一部をチューリングマシーンコードに変換したプログラムをダミーコード生成モジュール120に渡す。また、チューリングマシーンコード変換モジュール110がチューリングマシーンコードに変換するプログラムの一部は、そのプログラムを動作させるための符号(例えば、パスワード又はそのパスワードに関連するデータ)を変換するサブプログラムであってもよい。
ダミーコード生成モジュール120は、チューリングマシーンコード変換モジュール110、難読化プログラム生成モジュール130と接続されており、チューリングマシーンコード変換モジュール110によって変換されたチューリングマシーンコードに基づいて、チューリングマシーンコードであるダミーコードを生成する。そして、チューリングマシーンコード変換モジュール110によって変換されたチューリングマシーンコードとダミーコードを難読化プログラム生成モジュール130に渡す。
なお、ダミーコードとは、そのプログラムの機能及び出力に変化を及ぼさないコードをいう。
The Turing machine code conversion module 110 is connected to the program reception module 100 and the dummy code generation module 120, and converts the program received by the program reception module 100 or a part of the program into a Turing machine code. Then, a program in which all or part of the program is converted into a Turing machine code is passed to the dummy code generation module 120. Further, a part of the program that the Turing machine code conversion module 110 converts into a Turing machine code may be a subprogram that converts a code for operating the program (for example, a password or data related to the password). Good.
The dummy code generation module 120 is connected to the Turing machine code conversion module 110 and the obfuscation program generation module 130. Based on the Turing machine code converted by the Turing machine code conversion module 110, the dummy code generation module 120 is a dummy code that is a Turing machine code. Is generated. Then, the Turing machine code converted by the Turing machine code conversion module 110 and the dummy code are passed to the obfuscation program generation module 130.
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 program generation module 130 is connected to the dummy code generation module 120 and the program output module 140, and the dummy code generated by the dummy code generation module 120 is converted into a Turing machine code converted by the Turing machine code conversion module 110. Synthesize. The synthesis is, as a specific example, inserting a dummy code into the Turing machine code.
Further, when a part of the program is converted to the Turing machine code, the obfuscated program generation module 130 further synthesizes the Turing machine code in which the dummy code is synthesized and the part of the program not converted to the Turing machine code. To do.
Further, the obfuscated program generation module 130 may generate a subprogram for emulating the Turing machine code. The generated subprogram is synthesized into a program obtained by converting all or part of the above-described program into a Turing machine code.
Then, the obfuscated program generation module 130 passes the obfuscated program (a program obtained by synthesizing the dummy code) to the program output module 140.
The program output module 140 is connected to the obfuscation program generation module 130 and outputs a program (obfuscation program) synthesized by the obfuscation program generation module 130. Outputting a program includes, for example, recording the program on a recording medium, transmitting the program via a communication line, and the like.

図2を用いて、本実施の形態による難読化装置22の利用形態を説明する。
本実施の形態では、有償ソフトウェアの販売に際し、対価を支払わない不正なユーザによるソフトウェアの不当な利用を防止する目的で、この有償ソフトウェアに難読化を施す場合を例にして説明する。
図2において、配布者21はプログラムの配布者であり、ユーザ23はそのプログラムのユーザであり、ユーザ24はそのプログラムに対する不正なユーザである。なお、配布者21、ユーザ23、ユーザ24は、プログラムの作成、配布、受信、実行を行うためのPC(パーソナルコンピュータ)を所有しており、以下に説明するそれらの処理は、配布者21又はユーザ23等の所有しているPCによって実行されるものである。
A usage pattern of the obfuscation apparatus 22 according to the present embodiment will be described with reference to FIG.
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 distributor 21 is a program distributor, a user 23 is a user of the program, and a user 24 is an unauthorized user for the program. The distributor 21, the user 23, and the user 24 own a PC (personal computer) for creating, distributing, receiving, and executing the program. The processes described below are performed by the distributor 21 or It is executed by a PC owned by the user 23 or the like.

また、矢印はデータ又はプログラムの受け渡しを表す。つまり、矢印の起点から終点の方に、矢印に付記されたデータ又はプログラムが渡されることを示す。例えば、難読化装置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 obfuscation device 22 is assumed to be used by the program distributor 21.
The distributor 21 gives the software program P to be used by the user and a password, which will be described later, to the obfuscation apparatus 22 as input (S201). Here, the program P is described in a text format using a high-level language such as C language, and when a regular password is received, a predetermined operation is performed, and a predetermined function is provided to the user. To do.

難読化装置22は、受け取ったプログラムPに対し難読化を施し、難読化プログラムを出力する(S202)。難読化装置22は、受け取ったプログラムPと難読化プログラムの機能及び出力が変化しないように受け取ったプログラムPを変換する。なお、難読化プログラムのコードには、難読化装置22によって難読化処理が施されているので、これを解析してプログラムの秘密情報等を得ることは困難である。
配布者21は、プログラムの販売目的で、遠隔地に居住する正規のユーザ23に対し難読化プログラムをインターネット経由で配布する(S203)。配布者21とユーザ23は、第三者には秘密のパスワードとしてプログラムの起動に必要となる例えば32ビットの正の整数を共有している。そして、正規のユーザ23から前記秘密のパスワードを受け付け、難読化プログラムが実行される。また、ユーザ24は、難読化プログラムの不正利用を試みるため、配布者21から正規のユーザ23にプログラムが配布される経路上で不正なハッキングを行うなどしてこのプログラムを詐取する(S204)。
The obfuscation apparatus 22 obfuscates the received program P and outputs an obfuscation program (S202). The obfuscation device 22 converts the received program P and the received program P so that the function and output of the obfuscated program do not change. Note that the obfuscation program code has been obfuscated by the obfuscation device 22, so it is difficult to analyze the obfuscation program 22 to obtain program secret information.
The distributor 21 distributes the obfuscation program to the authorized user 23 residing in a remote place via the Internet for the purpose of selling the program (S203). The distributor 21 and the user 23 share, for example, a 32-bit positive integer necessary for starting the program as a secret password with a third party. Then, the secret password is received from the authorized user 23 and the obfuscation program is executed. Further, the user 24 attempts to illegally use the obfuscated program, and fraudulently scams this program by, for example, performing illegal hacking on the route from which the program 21 is distributed to the authorized user 23 (S204).

前記有償ソフトウェアを記述するプログラム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 obfuscation apparatus 22 is a password input / output subprogram 310, a password conversion subprogram 320, and a hash function calculation subprogram 330. , A decoding processing calculation subprogram 340 and an emulation execution subprogram 350.

パスワード入出力サブプログラム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 / output subprogram 310 is connected to the password conversion subprogram 320, and outputs the password 301 input by the user to the password conversion subprogram 320 in the program 300.
The password conversion subprogram 320 is connected to the password input / output subprogram 310 and the hash function calculation subprogram 330, holds the data B321, and uses the exclusive OR with the data B321 to start from the password input / output subprogram 310. The passed password 301 is converted. The converted value wr is output to the hash function calculation subprogram 330.
The hash function calculation subprogram 330 is connected to the password conversion subprogram 320 and the decryption processing calculation subprogram 340, and calculates a hash function for wr that is an output from the password conversion subprogram 320. The calculation result w ′ is output to the decryption processing calculation subprogram 340.
The decryption processing calculation subprogram 340 is connected to the hash function calculation subprogram 330 and the emulation execution subprogram 350, holds the data X341, and is stored in the decryption processing calculation subprogram 340 in an encrypted state. The data X341 is decrypted using the output value w ′ of the hash function calculation subprogram 330. The decoded code Cp is output to the emulation execution subprogram 350.
The emulation execution subprogram 350 is connected to the decryption process calculation subprogram 340, and executes emulation of the code Cp that is the output of the decryption process calculation subprogram 340. As a result, the original processing of the program 300 (the function that the distributor 21 intended to provide with the program 300) is performed.

次に、パスワード変換サブプログラム320について、より詳細に説明する。パスワード変換サブプログラム320の内部には、予めランダムに生成された32ビットの二進数であるデータB321がハード・コーディングされている。このデータB321は、配布者21とユーザ23との間で共有されるパスワードに乱数性が期待できない場合でも、ハッシュ関数計算サブプログラム330の出力に十分な乱数性を付与するためのものである。しかしながら、データB321の統計的な偏りが攻撃者(ユーザ24)に露呈すると、プログラム300に付与されたセキュリティ強度は著しく低減する。このため、データB321の具体的な値は可能な限り漏洩しないことが望ましい。このため、データB321を含むパスワード変換サブプログラム320は、後述する難読化手法によってプロテクションが施される。
パスワード変換サブプログラム320は、このデータB321と32ビットのパスワード301とのビット毎の排他的論理和を計算し、計算結果wrをハッシュ関数計算サブプログラム330に出力する。
Next, the password conversion subprogram 320 will be described in more detail. In the password conversion subprogram 320, data B321, which is a 32-bit binary number generated at random in advance, is hard-coded. This data B321 is for giving sufficient randomness to the output of the hash function calculation subprogram 330 even when the password shared between the distributor 21 and the user 23 cannot be expected to be random. However, when the statistical bias of the data B321 is exposed to the attacker (user 24), the security strength given to the program 300 is significantly reduced. For this reason, it is desirable that specific values of the data B321 do not leak as much as possible. For this reason, the password conversion subprogram 320 including the data B321 is protected by an obfuscation method described later.
The password conversion subprogram 320 calculates the bitwise exclusive OR of the data B321 and the 32-bit password 301, and outputs the calculation result wr to the hash function calculation subprogram 330.

次に、復号処理計算サブプログラム340について、より詳細に説明する。復号処理計算サブプログラム340の内部には、データX341がハード・コーディングされている。データX341は、配布者21とユーザ23との間で共有されるパスワード301を受け付けたときのハッシュ関数計算サブプログラム330の出力値w’を鍵として、コードCpを暗号化することで生成される。この暗号化には、AES等の対称鍵暗号方式が使用される。
復号処理計算サブプログラム340は、ハッシュ関数計算サブプログラム330の出力値w’を鍵として、データX341に復号処理を施すことで、プログラム300の主要部分のコードCpを算出する。
Next, the decryption processing calculation subprogram 340 will be described in more detail. Data X341 is hard-coded in the decoding processing calculation subprogram 340. The data X341 is generated by encrypting the code Cp using the output value w ′ of the hash function calculation subprogram 330 when the password 301 shared between the distributor 21 and the user 23 is received as a key. . For this encryption, a symmetric key cryptosystem such as AES is used.
The decryption processing calculation subprogram 340 calculates the code Cp of the main part of the program 300 by performing decryption processing on the data X341 using the output value w ′ of the hash function calculation subprogram 330 as a key.

次に、プログラム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 program 300 is started will be described.
When the program 300 is activated in the computer environment of the user 23, the password input / output subprogram 310 of the program 300 requests the user to input the password 301. When the password 301 is input, the password conversion subprogram 320 performs exclusive OR for each bit of the password 301 and the data B321. The hash function calculation subprogram 330 receives the result wr of the exclusive OR, and calculates the output value w ′ of the hash function. The decryption process calculation subprogram 340 decrypts the data X341 using w ′ as a key. Further, the emulation execution subprogram 350 receives the result Cp of the decoding process and executes the emulator.
When the password 301 entered by the user matches the regular password shared between the distributor 21 and the regular user 23, the encryption processing applied to the data X341 is correctly canceled and the code Cp is calculated. The As a result, the code Cp of the main part of the program is executed by the emulator. In this case, the program 300 performs a predetermined operation, and the user can correctly use the function provided by this program.

次に、難読化装置22が実施する難読化の手順を説明する。
本実施の形態では、難読化装置22が受け付ける難読化前のプログラムPはC言語を用いて記述されているとする。難読化装置22は、前記プログラムP及び配布者21とユーザ23との間で共有するパスワードを入力として受け取り、このプログラムPに対応する難読化プログラムPobを出力する。
本実施の形態では、難読化装置22は難読化前のプログラムP(プログラム300)内にあるパスワード変換サブプログラム320をチューリングマシーンコード(Turing machine code)の形式に変換し、これにダミーコードを付加することで難読化を行う。
Next, the obfuscation procedure performed by the obfuscation apparatus 22 will be described.
In the present embodiment, it is assumed that the program P before obfuscation accepted by the obfuscation apparatus 22 is described using C language. The obfuscation apparatus 22 receives the program P and a password shared between the distributor 21 and the user 23 as input, and outputs an obfuscation program Pob corresponding to the program P.
In the present embodiment, the obfuscation device 22 converts the password conversion subprogram 320 in the program P (program 300) before obfuscation into a Turing machine code format and adds a dummy code thereto. To obfuscate.

以下では、前記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 password conversion subprogram 320 is described as a C language function PassChange. In this embodiment, the Turing machine is composed of one head and one tape. The tape is configured as a concatenation of cells for writing symbols. In the initial state, on the tape of the Turing machine, symbol strings are sequentially written from the 0th address as an initial value given to the Turing machine, and the head of the Turing machine is set at the 0th address of the tape.

図5に、前記の関数PassChangeをチューリングマシーンコードの形式に変換することで得られるチューリングマシーンコード500を示す。さらに図6に、チューリングマシーンコード500にダミーコードを付加することで作成されるチューリングマシーンコード600を示す。   FIG. 5 shows a Turing machine code 500 obtained by converting the function PassChange to the Turing machine code format. Further, FIG. 6 shows a Turing machine code 600 created by adding a dummy code to the Turing machine code 500.

図5及び図6において、

は、チューリングマシーンの内部状態がqで、チューリングマシーンのヘッドが見ているセルに書かれている記号がSのとき、内部状態をqに、前記セルに書かれた記号をSに変更することを意味する。
また、
Rq
は、チューリングマシーンの内部状態がqで、チューリングマシーンのヘッドが見ているセルに書かれている記号がSのとき、内部状態をqに、ヘッドを右隣のセルの上に移動することを意味する。
さらに、
Lq
は、チューリングマシーンの内部状態がqで、チューリングマシーンのヘッドが見ているセルに書かれている記号がSのとき、内部状態をqに、ヘッドを左隣のセルの上に移動することを意味する。
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.

以下において前記のqは4項系列と呼ばれ、特定のチューリングマシーンは4項系列の集合として定義される。記号S及びSは、特別な記号で、Sは‘0’、Sは‘1’にそれぞれ対応する。
チューリングマシーンコード500は、チューリングマシーンのテープ上に初期値として書き込まれた記号列と前記データB321とのビット毎の排他的論理和を0番アドレスから順にテープに上書きする。チューリングマシーンコード600は、チューリングマシーンコード500(行501から行599)とダミーコード(行601から行699)の4項系列をその内部に含んでいるが、チューリングマシーンコード600のテープに初期値として32ビットの二進数がS及びSを用いて書き込まれる場合にはチューリングマシーンコード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 Turing machine code 500 overwrites the tape with the exclusive OR for each bit of the symbol string written as an initial value on the tape of the Turing machine and the data B321 in order from the 0th address. The Turing machine code 600 includes a four-term series of a Turing machine code 500 (line 501 to line 599) and a dummy code (line 601 to line 699) as an initial value on the tape of the Turing machine code 600. When a 32-bit binary number is written using S 0 and S 1 , an operation equivalent to the Turing machine code 500 is executed.

前記ダミーコードの4項系列は、以下のように生成される。
まず、チューリングマシーンコード500に含まれないテープ記号の集合Gs又はチューリングマシーンコード500に含まれない内部状態の集合Gqを生成する。次に、集合Gqからランダムに状態を表す記号を2個選択し、これらを4項系列の1番目及び4番目のシンボルとする。さらに、集合Gsの中からランダムに記号を選択し、これを4項系列の2番目のシンボルとする。同様に、集合Gs、R及びLの中からランダムに記号を選択し、これを4項系列の3番目のシンボルとする。
前記手順に従い、ダミーコードの4項系列を一つ又は複数個生成する。これらダミーコードの4項系列は、難読化前のプログラムに相当するチューリングマシーンコード500には含まれない。よって、S及びSを用いて記述される記号列がチューリングマシーンコード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 Turing machine code 500 or a set Gq of internal states not included in the Turing machine code 500 is generated. Next, two symbols representing the state are randomly selected from the set Gq, and these are used as the first and fourth symbols of the 4-term series. Further, a symbol is randomly selected from the set Gs, and this is set as the second symbol in the 4-term series. Similarly, a symbol is randomly selected from the sets Gs, R, and L, and this is set as the third symbol of the 4-term series.
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 Turing machine code 500 corresponding to the program before obfuscation. Therefore, when a symbol string described using S 0 and S 1 is set as an initial value of the Turing machine code 600, the four-term sequence of these dummy codes is used during the operation of the Turing machine code 600. Absent. Therefore, the operation of the Turing machine code 600 to which the four-term sequence of dummy codes is added is equivalent to the operation of the Turing machine code 500 with respect to the initial value described in binary.
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 Turing machine code 500 corresponding to the program before obfuscation may be generated.

難読化装置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 obfuscation apparatus 22 is as shown in FIG.
The obfuscation apparatus 22 generates the obfuscation program Pob from the original program P (program 300) according to the following procedure.
First, the obfuscation apparatus 22 analyzes the program P given as input, and creates a Turing machine emulation execution subprogram 720 described below. The Turing machine emulation execution subprogram 720 is a program for holding the code corresponding to the Turing machine code 600 as internal data (TM2 721) and executing TM2 721 by emulation. The Turing machine emulation execution subprogram 720 receives the output value of the password input / output subprogram 710, writes it as an initial value on the tape of the Turing machine code 600, operates the Turing machine code 600, and then operates the Turing machine code 600. Is output as wr when the tape stops.
The obfuscation apparatus 22 deletes the password conversion subprogram 320 from the program P, and generates the obfuscation program Pob by embedding the Turing machine emulation execution subprogram 720 instead. That is, the obfuscation program 700 includes a password input / output subprogram 710, a Turing machine emulation execution subprogram 720, a hash function calculation subprogram 730, a decryption processing calculation subprogram 740, and an emulation execution subprogram 750. The input / output subprogram 710 is the password input / output subprogram 310, the hash function calculation subprogram 730 is the hash function calculation subprogram 330, the decryption process calculation subprogram 740 is the decryption process calculation subprogram 340, and the emulation execution subprogram 750 is emulation. Each corresponds to the execution subprogram 350.

配布者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 distributor 21 distributes the obfuscation program Pob output from the obfuscation apparatus 22 to the user 23 via the Internet. The user 23 downloads the received obfuscation program Pob onto the PC owned by the user 23 and executes it. That is, the PC owned by the user 23 receives and executes the obfuscation program 700 that has been obfuscated by the obfuscation device 22.
As described above, the executed obfuscation program Pob prompts the user for a password. If the entered password matches that shared between the distributor 21 and the user 23, the obfuscation program Pob operates normally and provides the user with a predetermined function.
Further, even if the user 24 frauds this obfuscated program Pob using illegal hacking or the like on the distribution route, the user 24 who does not have the correct password cannot operate the program Pob normally. Moreover, the vulnerability regarding the internal data B (data B321) of the program Pob is remarkably reduced by obfuscating the code including the data B as described above. For this reason, even if the user 24 who does not have the correct password analyzes the Turing machine emulation execution subprogram 720 in the obfuscation program Pob, the obfuscation program Pob is illegally used by utilizing the vulnerability relating to the data B It is difficult to use.

なお、本実施の形態としてのプログラムが実行されるコンピュータのハードウェア構成は、図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 CPU 801 for executing programs such as the Turing machine code conversion module 110, the dummy code generation module 120, the obfuscation program generation module 130, etc. ROM 803 storing a program for starting the computer, an auxiliary storage device HD 804 (for example, a hard disk can be used), an input device 806 for inputting data such as a keyboard and a mouse, a CRT, An output device 805 such as a liquid crystal display, a communication line interface 807 (for example, a network interface card can be used) for connecting to a communication network, and connecting them to exchange data And a bus 808 for. A plurality of these computers may be connected to each other via a network.

前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、図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 Turing machine code 500. Two or more dummy codes may be inserted continuously.

なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(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.

本実施の形態の構成例についての概念的なモジュール構成図である。It is a conceptual module block diagram about the structural example of this Embodiment. 本実施の形態における難読化装置の利用形態例を示す説明図である。It is explanatory drawing which shows the example of a utilization form of the obfuscation apparatus in this Embodiment. 難読化処理の対象となるプログラムの構成例を示す説明図である。It is explanatory drawing which shows the structural example of the program used as the object of obfuscation processing. パスワード変換サブプログラムの例を示す説明図である。It is explanatory drawing which shows the example of a password conversion subprogram. チューリングマシーンコードによるプログラム例を示す説明図である。It is explanatory drawing which shows the example of a program by a Turing machine code. チューリングマシーンコードのプログラムにダミーコードを挿入した例を示す説明図である。It is explanatory drawing which shows the example which inserted the dummy code in the program of the Turing machine code. 難読化処理が施されたプログラムの構成例を示す説明図である。It is explanatory drawing which shows the structural example of the program in which the obfuscation process was performed. 本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。It is a block diagram which shows the hardware structural example of the computer which implement | achieves this Embodiment.

符号の説明Explanation of symbols

22…難読化装置
100…プログラム受付モジュール
110…チューリングマシーンコード変換モジュール
120…ダミーコード生成モジュール
130…難読化プログラム生成モジュール
140…プログラム出力モジュール
22 ... Obfuscation device 100 ... Program acceptance module 110 ... Turing machine code conversion module 120 ... Dummy code generation module 130 ... Obfuscation program generation module 140 ... Program output module

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.
前記請求項1から3のいずれか一項に記載の情報処理装置によってダミーコードが合成されたプログラムを受け付けるプログラム受付手段と、
前記プログラム受付手段によって受け付けられたプログラムを実行する実行手段
を具備することを特徴とする情報処理装置。
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.
JP2008124245A 2008-05-12 2008-05-12 Information processor and information processing program Pending JP2009271884A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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