JP2009211646A - Data concealing program, data read-out program, data concealing device, and data reader - Google Patents

Data concealing program, data read-out program, data concealing device, and data reader Download PDF

Info

Publication number
JP2009211646A
JP2009211646A JP2008056568A JP2008056568A JP2009211646A JP 2009211646 A JP2009211646 A JP 2009211646A JP 2008056568 A JP2008056568 A JP 2008056568A JP 2008056568 A JP2008056568 A JP 2008056568A JP 2009211646 A JP2009211646 A JP 2009211646A
Authority
JP
Japan
Prior art keywords
data
code
program
secret
secret data
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
JP2008056568A
Other languages
Japanese (ja)
Inventor
Mitsuhisa Kamei
光久 亀井
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 JP2008056568A priority Critical patent/JP2009211646A/en
Publication of JP2009211646A publication Critical patent/JP2009211646A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To embed confidential data in a program so that a third person cannot easily find it. <P>SOLUTION: A computer carries out processing including: a data acquisition step S10 for acquiring data to be concealed; a confidential data code generating step S14 for generating a confidential data code by embedding the data to be concealed other than at least an operation code of a program code including the operation code; and a program generating step S16 for generating a program executable in the computer including the confidential data code. <P>COPYRIGHT: (C)2009,JPO&INPIT

Description

本発明は、データ秘匿プログラム、データ読出プログラム、データ秘匿装置及びデータ読出装置に関する。   The present invention relates to a data concealment program, a data read program, a data concealment device, and a data read device.

第三者に知られたくないようなデータをプログラムの中に埋め込んで秘匿する技術が知られている。   There is known a technique for embedding data that is not desired to be known by a third party in a program.

特許文献1には、1バイトずつに分割したパスワードデータに対して、第1の連続するメモリ領域に各バイトの保存位置を示す情報を所定の先頭番地からの互いに重複しないオフセット値として記憶させ、1バイトずつに分割したパスワードデータを、その各バイトずつ、先頭番地から始まる十分な長さの第2の連続する記憶領域にオフセット値で決定されるアドレスに従って分散させて記憶させる技術が開示されている。   In Patent Document 1, for password data divided into one byte, information indicating the storage position of each byte is stored as a non-overlapping offset value from a predetermined head address in a first continuous memory area, Disclosed is a technique for storing password data divided into 1 byte at a time in such a manner that each byte is distributed and stored in a second continuous storage area having a sufficient length starting from the head address according to an address determined by an offset value. Yes.

特開2004−46640号公報JP 2004-46640 A

データを分割することなくプログラムに埋め込んだ場合、そのデータの性質を考慮してプログラムコードをスキャンすることによって、プログラムコードのどの場所にデータが埋め込まれたかを容易に調べられてしまうおそれがある。   When the data is embedded in the program without being divided, the program code is scanned in consideration of the property of the data, so that it may be easily examined where the data is embedded in the program code.

特に、暗号鍵のような乱数的な性質を有するデータを、プログラムのような秩序的な情報に埋め込んだ場合、その乱数的な性質を利用して秘匿されたデータが埋め込まれた箇所を特定されるおそれがある。   In particular, when random data such as an encryption key is embedded in orderly information such as a program, the location where the secret data is embedded is identified using the random property. There is a risk.

データ自体を暗号化した場合も同様であり、さらに、暗号化されたデータを復号するための復号用の暗号鍵を埋め込む必要も生ずる。   The same applies to the case where the data itself is encrypted, and it is also necessary to embed a decryption encryption key for decrypting the encrypted data.

また、データを分割して秘匿した場合、秘匿されたデータに暗号化が適用されているか否かを判定できないという問題がある。   Further, when the data is divided and concealed, there is a problem that it cannot be determined whether or not encryption is applied to the concealed data.

本発明の1つは、コンピュータに、秘匿対象となるデータを取得するデータ取得ステップと、オペコードを含むプログラムコードの少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成する秘匿データコード生成ステップと、前記秘匿データコードを含むコンピュータで実行可能なプログラムを生成するプログラム生成ステップと、を含む処理を実行させることを特徴とするデータ秘匿プログラムである。   One of the present invention is a data acquisition step for acquiring data to be concealed in a computer, and concealment for generating a concealed data code by embedding the data to be concealed while leaving at least the operation code of the program code including the operation code. A data concealment program for executing a process including a data code generation step and a program generation step for generating a computer-executable program including the secret data code.

また、本発明の別の1つは、秘匿対象となるデータを取得するデータ取得手段と、オペコードを含むプログラムコードの少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成する秘匿データコード生成手段と、前記秘匿データコードを含むコンピュータで実行可能なプログラムを生成するプログラム生成手段と、を備えることを特徴とするデータ秘匿装置である。   Another aspect of the present invention is a data acquisition means for acquiring data to be concealed, and generates a concealed data code by embedding the data to be concealed leaving at least the operation code of the program code including the operation code. A data concealment apparatus comprising: a secret data code generation unit; and a program generation unit that generates a computer-executable program including the secret data code.

ここで、前記秘匿データコード生成ステップ又は手段は、ランダムにプログラムコードを選択し、当該選択されたプログラムコードのフォーマットにおいて少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成するものとしてもよい。   Here, the secret data code generation step or means randomly selects a program code and generates a secret data code by embedding the data to be concealed with at least an operation code remaining in the format of the selected program code. It may be a thing.

また、前記秘匿データコード生成ステップ又は手段は、オペコードの出現確率に応じてプログラムコードを選択し、当該選択されたプログラムコードのフォーマットにおいて少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成するものとしてもよい。   Further, the secret data code generation step or means selects a program code according to the appearance probability of the operation code, and at least leaves the operation code in the format of the selected program code, and embeds the data to be concealed to provide confidential data It is also possible to generate code.

また、前記秘匿データコード生成ステップ又は手段は、複数のオペコードの並びの出現確率に応じてプログラムコードを選択し、当該選択されたプログラムコードのフォーマットにおいて少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成するものとしてもよい。   Further, the secret data code generation step or means selects a program code according to the appearance probability of a sequence of a plurality of operation codes, and at least leaves the operation code in the format of the selected program code, and the data to be concealed The secret data code may be generated by embedding.

また、前記秘匿データコード生成ステップ又は手段は、コンピュータで実行可能なプログラムテンプレートに含まれるプログラムコードのフォーマットにおいて少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成するものとしてもよい。   The secret data code generation step or means may generate a secret data code by embedding the data to be concealed, leaving at least an operation code in a program code format included in a program template executable by a computer. Good.

また、前記プログラム生成ステップ又は手段は、前記秘匿データコードに埋め込まれたデータを読み出すためのデータ抜き出しコードを含むプログラムを生成するものとしてもよい。   The program generation step or means may generate a program including a data extraction code for reading data embedded in the secret data code.

また、前記プログラム生成ステップ又は手段は、コンピュータで実行可能なプログラムコードのフォーマットを登録したコード情報データベースを含むプログラムを生成するものとしてもよい。   Further, the program generation step or means may generate a program including a code information database in which a program code format executable by a computer is registered.

また、本発明の1つは、コンピュータに、オペコードを含むプログラムコードの少なくともオペコードを残して秘匿対象となるデータを埋め込んだ秘匿データコード、を含むコンピュータで実行可能なプログラムから前記秘匿データコードを読み出す秘匿データコード読出ステップと、前記秘匿データコードに含まれるオペコードを読み飛ばして、埋め込まれているデータを抽出するデータ抽出ステップと、を含む処理を実行させることを特徴とするデータ読出プログラムである。   According to another aspect of the present invention, the secret data code is read from a computer-executable program including a secret data code in which at least the operation code of the program code including the operation code is left in the computer and the data to be concealed is embedded. A data reading program, comprising: executing a process including a secret data code reading step and a data extraction step of extracting embedded data by skipping an operation code included in the secret data code.

また、本発明の別の1つは、オペコードを含むプログラムコードの少なくともオペコードを残して秘匿対象となるデータを埋め込んだ秘匿データコード、を含むコンピュータで実行可能なプログラムから前記秘匿データコードを読み出す秘匿データコード読出手段と、前記秘匿データコードに含まれるオペコードを読み飛ばして、埋め込まれているデータを抽出するデータ抽出手段と、を備えることを特徴とするデータ読出装置である。   According to another aspect of the present invention, there is provided a concealment for reading out the concealed data code from a computer-executable program including a concealed data code in which data to be concealed is embedded, leaving at least the operation code of the program code including the operation code. A data reading device comprising: data code reading means; and data extraction means for extracting embedded data by skipping an operation code included in the secret data code.

ここで、前記データ抽出ステップ又は手段は、前記プログラムに含まれているコンピュータで実行可能なプログラムコードのフォーマットを登録したコード情報データベースを参照して、前記秘匿データコードに含まれるオペコードを読み飛ばして、埋め込まれているデータを抽出するものとしてもよい。   Here, the data extracting step or means refers to a code information database in which a program code format executable by a computer included in the program is registered and skips an operation code included in the secret data code. The embedded data may be extracted.

請求項1及び10の発明によれば、秘匿するべきデータを第三者に見付かり難い態様でプログラムに埋め込むことができる。   According to the first and tenth aspects of the present invention, it is possible to embed data to be concealed in a program in a manner that is difficult for a third party to find.

請求項2の発明によれば、秘匿するべきデータを埋め込むプログラムコードをランダムに選択することによって、簡易にデータの秘匿を行うことができる。   According to the invention of claim 2, data can be easily concealed by randomly selecting a program code for embedding data to be concealed.

請求項3の発明によれば、秘匿するべきデータを埋め込むプログラムコードをコードの使用頻度に応じて選択することによって、第三者により見付かり難い態様でプログラムに埋め込むことができる。   According to the invention of claim 3, by selecting the program code for embedding the data to be concealed according to the frequency of use of the code, it can be embedded in the program in a manner that is difficult to be found by a third party.

請求項4の発明によれば、秘匿するべきデータを埋め込むプログラムコードをオペコードの並びの確率を示すバイグラムあるいはトライグラムに応じて選択することによって、第三者により見付かり難い態様でプログラムに埋め込むことができる。   According to the invention of claim 4, by selecting the program code for embedding the data to be concealed according to the bigram or trigram indicating the probability of the operation code arrangement, the program code can be embedded in the program in a manner that is difficult to find by a third party. it can.

請求項5の発明によれば、秘匿するべきデータをプログラムテンプレートに含まれるプログラムコードに埋め込むことによって、第三者により見付かり難い態様でプログラムに埋め込むことができる。   According to the invention of claim 5, by embedding data to be concealed in the program code included in the program template, it can be embedded in the program in a manner that is difficult to be found by a third party.

請求項6の発明によれば、生成されたプログラムを実行する際に、そのプログラムから秘匿するべきデータを読み出して利用することができる。   According to the invention of claim 6, when the generated program is executed, the data to be kept secret can be read from the program and used.

請求項7の発明によれば、コンピュータで実行可能なプログラムコードのフォーマットを登録したコード情報データベースを参照して、プログラムに秘匿されたデータを読み出して利用することができる。   According to the seventh aspect of the present invention, it is possible to read out and use the data concealed in the program with reference to the code information database in which the program code format executable by the computer is registered.

請求項8及び11の発明によれば、オペコードを含むプログラムコードの少なくともオペコードを残して秘匿対象となるデータを埋め込んだ秘匿データコード、を含むコンピュータで実行可能なプログラムから秘匿されたデータを読み出して利用することができる。   According to the eighth and eleventh aspects of the present invention, the concealed data is read out from a computer-executable program including a secret data code in which at least the opcode of the program code including the opcode is left and the data to be concealed is embedded. Can be used.

請求項9の発明によれば、コンピュータで実行可能なプログラムコードのフォーマットを登録したコード情報データベースを参照して、プログラムに秘匿されたデータを読み出して利用することができる。   According to the ninth aspect of the present invention, it is possible to read out and use data concealed in a program by referring to a code information database in which a program code format executable by a computer is registered.

<装置構成>
本発明の実施の形態におけるデータ秘匿・読出装置100は、図1に例示するように、中央処理部10、記憶部12、入力部14、表示部16及びインターフェース部18を含んで構成される。これらの構成部は、バスやネットワーク等の情報伝達手段によって相互に情報伝達可能に接続される。
<Device configuration>
The data concealment / reading device 100 according to the embodiment of the present invention includes a central processing unit 10, a storage unit 12, an input unit 14, a display unit 16, and an interface unit 18, as illustrated in FIG. These components are connected to each other by information transmission means such as a bus or a network so as to be able to transmit information to each other.

中央処理部10は、CPU(中央制御装置)を含んで構成される。中央処理部10は、記憶部12、入力部14及びインターフェース部18から情報を受け取り、その情報に対してプログラムに従って演算等の処理を施し、表示部16及びインターフェース部18へ出力することによって情報処理を行う。本実施の形態では、中央処理部10は、記憶部12に予め格納されているデータ秘匿プログラムを実行することによって、秘匿対象となるデータをプログラムに埋め込む機能を実現する。また、中央処理部10は、記憶部12に予め格納されているデータ読出プログラムを実行することによって、秘匿対象としてプログラム内に埋め込まれたデータを読み出す機能を実現する。   The central processing unit 10 includes a CPU (central control device). The central processing unit 10 receives information from the storage unit 12, the input unit 14, and the interface unit 18, performs processing such as computation on the information according to a program, and outputs the information to the display unit 16 and the interface unit 18. I do. In the present embodiment, the central processing unit 10 executes a data concealment program stored in advance in the storage unit 12, thereby realizing a function of embedding data to be concealed in the program. Further, the central processing unit 10 executes a data reading program stored in advance in the storage unit 12, thereby realizing a function of reading data embedded in the program as a secret object.

記憶部12は、半導体メモリ、ハードディスク装置、光ディスク装置等の情報記憶装置を含んで構成される。記憶部12は、データ秘匿・読出装置100で実行されるデータ秘匿プログラムやデータ読出プログラム、データ秘匿・読出装置100での処理に供される秘匿対象データ、コード情報データベース等の各種情報を格納及び保持する。   The storage unit 12 includes an information storage device such as a semiconductor memory, a hard disk device, and an optical disk device. The storage unit 12 stores various information such as a data concealment program and data read program executed by the data concealment / reading device 100, data to be concealed used for processing in the data concealment / reading device 100, a code information database, and the like. Hold.

入力部14は、キーボード等の文字データ入力側装置、マウス等のポインティングデバイス等の情報入力側装置を含んで構成される。入力部14は、データ秘匿・読出装置100に対して情報を入力するユーザによって操作され、ユーザからの指示や処理のためのデータを受け付けるために用いられる。入力部14から入力されたデータは記憶部12に格納及び保持される。   The input unit 14 includes a character data input side device such as a keyboard and an information input side device such as a pointing device such as a mouse. The input unit 14 is operated by a user who inputs information to the data concealing / reading device 100, and is used to receive an instruction from the user and data for processing. Data input from the input unit 14 is stored and held in the storage unit 12.

表示部16は、ディスプレイ等の表示装置を含んで構成される。表示部16は、アプリケーションでの処理を行う際にユーザにユーザインターフェース画像や処理対象である情報を呈示するために用いられる。例えば、ユーザに対して、データ秘匿・読出装置100での処理に必要な情報の入力を促すユーザインターフェース画像を表示する。   The display unit 16 includes a display device such as a display. The display unit 16 is used for presenting a user interface image and information to be processed to a user when performing processing in an application. For example, a user interface image that prompts the user to input information necessary for processing in the data concealment / reading apparatus 100 is displayed.

インターフェース部18は、データ秘匿・読出装置100をLAN、WAN、インターネット等の通信手段を介して他の装置へ情報伝達可能に接続するための装置を含んで構成される。本実施の形態において、データ秘匿・読出装置100は、インターフェース部18を用いて外部のコンピュータにアクセス可能であり、外部のコンピュータから処理に必要な情報を入手するものとしてもよい。インターフェース部18は、例えば、TCP/IP等の既存のプロトコルに則って情報伝達を実現する装置としてもよい。   The interface unit 18 includes a device for connecting the data concealing / reading device 100 to other devices via a communication means such as a LAN, WAN, or the Internet so that information can be transmitted. In the present embodiment, the data concealment / reading apparatus 100 can access an external computer using the interface unit 18, and may obtain information necessary for processing from the external computer. The interface unit 18 may be a device that realizes information transmission according to an existing protocol such as TCP / IP.

図2は、本実施の形態におけるデータ秘匿・読出装置100を機能ブロック図として示したものである。   FIG. 2 is a functional block diagram showing the data concealing / reading device 100 according to the present embodiment.

データ秘匿・読出装置100は、図2に示すように、メインプログラム生成手段20、秘匿対象データ取得手段22、秘匿データコード生成手段24、プログラム生成手段26、秘匿データコード読出手段28、秘匿データコード解析手段30及びコード情報データベース記憶手段32を含む装置として機能する。   As shown in FIG. 2, the data concealment / reading apparatus 100 includes a main program generation unit 20, a concealment target data acquisition unit 22, a concealment data code generation unit 24, a program generation unit 26, a concealment data code reading unit 28, a concealment data code. It functions as an apparatus including the analysis unit 30 and the code information database storage unit 32.

<データ秘匿処理>
データ秘匿・読出装置100は、記憶部12に格納されているデータ秘匿プログラムを実行することによって、図3に示すフローチャートに沿ってデータ秘匿処理を実行する。
<Data confidentiality processing>
The data concealment / reading apparatus 100 executes the data concealment process according to the flowchart shown in FIG. 3 by executing the data concealment program stored in the storage unit 12.

なお、以下の説明では、コードとはプログラムを構成するコンピュータで実行可能な各命令及びそれらの組み合わせを示すものとし、プログラムとは複数のコードの組み合わせによって全体として一連の処理を行うものを示す。   In the following description, a code indicates each instruction that can be executed by a computer that constitutes a program and a combination thereof, and a program indicates that a series of processing is performed as a whole by a combination of a plurality of codes.

ステップS10では、メインプログラムが生成される。このステップは、図2におけるメインプログラム生成手段20に相当する。   In step S10, a main program is generated. This step corresponds to the main program generating means 20 in FIG.

中央処理部10は、プログラムエディタ等のプログラミングツールを実行し、入力部14からユーザによるプログラムコードの入力を受け付けて、目的とする処理を行うためのメインプログラムを生成する。例えば、表示部16にプログラムツールのエディタ画面を表示させ、入力部14によるユーザのコンパイラのソースコードの入力を受け付け、そのソースコードをコンパイリングしてメインプログラムのオブジェクトコードを生成する。   The central processing unit 10 executes a programming tool such as a program editor, receives a program code input by the user from the input unit 14, and generates a main program for performing a target process. For example, the editor screen of the program tool is displayed on the display unit 16, the input of the user's compiler source code by the input unit 14 is received, and the source code is compiled to generate the object code of the main program.

ここで、メインプログラムコードには、データ抜き出しコード及び呼び出しコードが含まれる。データ抜き出しコードとは、以下の処理で秘匿対象となるデータを秘匿データコードとして格納する秘匿データ格納部から秘匿データコードを読み出し、読み出した秘匿データコードを解析して秘匿データを抽出する処理を記述したものである。   Here, the main program code includes a data extraction code and a calling code. The data extraction code describes the process of reading the secret data code from the secret data storage unit that stores the data to be concealed as the secret data code in the following process, and analyzing the read secret data code to extract the secret data It is a thing.

また、呼び出しコードとは、メインプログラムにおいてデータ抜き出しコードを呼び出して、データ抜き出しコードを実行させる処理を記述したものである。呼び出しコードは、秘匿データコードを格納する領域である秘匿データ格納部の開始アドレス及びその大きさも含む。   The calling code describes a process for calling the data extraction code in the main program and executing the data extraction code. The calling code also includes the start address and the size of the secret data storage unit that is an area for storing the secret data code.

ステップS12では、秘匿対象となるデータが取得される。このステップは、図2における秘匿対象データ取得手段22に相当する。   In step S12, data to be concealed is acquired. This step corresponds to the confidential data acquisition unit 22 in FIG.

中央処理部10は、入力部10を介してユーザから、又は、インターフェース部18を介して外部装置から秘匿対象となるデータを取得する。ただし、データの取得方法はこれに限定されるものではない。   The central processing unit 10 acquires data to be concealed from the user via the input unit 10 or from an external device via the interface unit 18. However, the data acquisition method is not limited to this.

秘匿対象となるデータは、例えば、認証に用いられるパスワード、データの暗号化に用いられる暗号鍵、データの復号に用いられる復号鍵等のセキュアな取り扱いを必要とするものが挙げられる。   Examples of the data to be concealed include data that requires secure handling such as a password used for authentication, an encryption key used for data encryption, and a decryption key used for data decryption.

ステップS14、秘匿対象となるデータを秘匿データコードに埋め込む処理が行われる。このステップは、図2における秘匿データコード生成手段24に相当する。   Step S14, a process of embedding the data to be concealed in the concealed data code. This step corresponds to the secret data code generation means 24 in FIG.

中央処理部10は、ステップS12で取得した秘匿対象となるデータをコンピュータで実行可能なプログラムコードの一部として埋め込む処理を行う。プログラムコードは、コンパイル処理前はソースコードして記述され、図4に例示するように、オペコード部及びオペランド部から構成される。   The central processing unit 10 performs a process of embedding the data to be concealed acquired in step S12 as part of program code executable by the computer. The program code is described as source code before the compilation process, and includes an opcode part and an operand part as illustrated in FIG.

オペコード部は、通常、1バイト又は2バイトである。また、オペコード部が命令プリフィックス部を含む場合には3バイト以上となる場合もある。オペコード部は、プログラムにおける各処理(演算)命令の種類を記述する部分である。   The opcode part is usually 1 byte or 2 bytes. Further, if the opcode part includes an instruction prefix part, it may be 3 bytes or more. The opcode part is a part describing the type of each processing (arithmetic) instruction in the program.

オペランド部は、プログラムにおいて処理(演算)の対象となる値や変数を記述する部分である。オペランド部には、処理の対象となるレジスタや即値等を示すデータが含まれる場合もある。また、オペランド部は、アドレス指定部、ディスプレースメント部及び即値部に分けられる場合もある。   The operand part is a part that describes values and variables to be processed (calculated) in the program. The operand part may include data indicating a register to be processed and an immediate value. The operand part may be divided into an address specifying part, a displacement part, and an immediate part.

例えば、“eax”という識別子で特定されるレジスタに“0x1122”というデータを格納する処理のソースコードは“Mov eax 0x1122”等と記述される。また、“ebx”という識別子で特定されるレジスタに格納されているデータに“0x3344”というデータを加算する処理のソースコードは“Add ebx 0x3344”等と記述される。   For example, the source code of the process of storing data “0x1122” in the register specified by the identifier “eax” is described as “Mov eax 0x1122” or the like. The source code of the process of adding data “0x3344” to the data stored in the register specified by the identifier “ebx” is described as “Add ebx 0x3344” or the like.

このようなソースコードをコンパイラで変換処理することによってオブジェクトコードが生成される。オブジェクトコードは、コンピュータの中央処理部10(CPU)によって直接実行可能なビット列である。   An object code is generated by converting such source code by a compiler. The object code is a bit string that can be directly executed by the central processing unit 10 (CPU) of the computer.

中央処理部10は、実行可能なオペコードを含むプログラムコードに秘匿対象となるデータを埋め込む処理を行う。具体的には、図5に例示するに、実行可能なオペコード、それに対応するオペランドのデータ長を対応付けたコード情報データベースを記憶部12に予め登録しておき、コード情報データベースからランダムにオペコードを選択して、そのオペコードに対応するオペランドに秘匿対象となるデータを順次埋め込む処理を行う。   The central processing unit 10 performs processing to embed data to be concealed in a program code including an executable opcode. Specifically, as illustrated in FIG. 5, a code information database in which executable opcodes and data lengths of corresponding operands are associated with each other is registered in the storage unit 12 in advance, and operation codes are randomly selected from the code information database. The selected data is sequentially embedded in the operand corresponding to the opcode.

例えば、秘匿データとして“0x1122334455667788”を取得し、コード情報データベースからランダムに抽出されたオペコードが“Mov eax”であった場合、オペコード“Mov eax”に対応するオペランドのデータ長は4バイトであるので、秘匿データの先頭から4バイトのデータ“0x11223344”をオペランドとして“Mov eax 0x11223344”というソースコードを生成する。秘匿データには4バイトのデータ“0x55667788”が残っているので、さらにコード情報データベースからランダムにオペコードを抽出する。抽出されたオペコードが“Add”であった場合、オペコード“Add”に対応するオペランドのデータ長は4バイトであるので、既に埋め込んだデータの次のデータから4バイトのデータ“0x55667788”をオペランドとして“Add eax 0x55667788”というソースコードを生成する。これで、秘匿するべき全データをコードとして埋め込んだので処理を終了する。   For example, when “0x11223345456667788” is acquired as the secret data and the operation code randomly extracted from the code information database is “Move eax”, the data length of the operand corresponding to the operation code “Move eax” is 4 bytes. Then, the source code of “Mov eax 0x11223344” is generated using the 4-byte data “0x11223344” from the beginning of the secret data as an operand. Since the 4-byte data “0x556667788” remains in the secret data, the operation code is further extracted at random from the code information database. When the extracted opcode is “Add”, the data length of the operand corresponding to the opcode “Add” is 4 bytes. Therefore, the 4-byte data “0x556667788” is used as the operand from the data next to the already embedded data. A source code “Add eax 0x556667788” is generated. Since all the data to be kept secret is embedded as a code, the process is terminated.

また、ソースコードを生成するのではなく、後のステップS16でメインプログラムとリンクできる様なファイルフォーマットに従って、直接、B8H,44H,33H,22H,11H,88H,77H,66H,55Hというオブジェクトコードを生成してもよい。この表現は、リトルエンディアンで数値を表現した例を示したが、対なるデータ列として、B8H,44H,33H,22H,11H,88H,77H,66H,55Hとして表現することも可能である。   Also, instead of generating source code, object codes B8H, 44H, 33H, 22H, 11H, 88H, 77H, 66H, and 55H are directly used in accordance with a file format that can be linked to the main program in step S16. It may be generated. Although this representation shows an example in which numerical values are represented in little endian, it can also be represented as B8H, 44H, 33H, 22H, 11H, 88H, 77H, 66H, 55H as a pair of data strings.

このように、秘匿データの総てのデータが埋め込まれるまで、コード情報データベースからオペコードをランダムに抽出してデータを埋め込む処理を行う。   In this way, until all the confidential data is embedded, the operation code is randomly extracted from the code information database and the data is embedded.

なお、オペランド部に加えてレジスタなどの情報を含むModR/M部の記述を残して秘匿データを埋め込んでもよい。例えば、コード情報データベースからランダムに抽出されたオペコードが“Mov eax”であり、即値としてレジスタebxからのオフセットをとる命令を用いた場合、オペランドに加えて、ModR/Mを残して、データ“0x11223344”を埋め込んで“Mov eax 0x11223344[ebx]”というソースコードを生成してもよい。   In addition to the operand part, the secret data may be embedded while leaving the description of the ModR / M part including information such as a register. For example, when the operation code randomly extracted from the code information database is “Mov eax” and an instruction that takes an offset from the register ebx as an immediate value is used, in addition to the operand, ModR / M is left and the data “0x11223344” "May be embedded to generate a source code of" Mov eax 0x11223344 [ebx] ".

中央処理部10は、このようにして秘匿データを埋め込んだソースコードをコンパイルしてオブジェクトコードである秘匿データコードに変換する。コンパイラはデータ秘匿プログラムに組み込まれたものとしてもよいし、記憶部12や外部装置に予め格納されているコンパイラを読み出して適用するものとしてもよい。なお、ソースコードでなく、オプジェクトコードを直接生成した場合には、このコンパイル作業は不要となる。   The central processing unit 10 compiles the source code in which the secret data is embedded in this way and converts it into a secret data code that is an object code. The compiler may be incorporated in the data concealment program, or may be a compiler that is stored in advance in the storage unit 12 or an external device and applied. If the object code is directly generated instead of the source code, this compiling operation is unnecessary.

なお、本実施の形態ではコード情報データベースからランダムにオペコードを抽出して、それに対応するデータ長でデータを埋め込む処理としたが、プログラムに各オペコードが出現する出現確率に応じた頻度で各オペコードを選択してもよい。プログラムに各オペコードが出現する出現確率は、複数のプログラムを統計的に調査して求めればよい。各オペコードの出現確率は予め記憶部12に格納しておけばよい。   In this embodiment, the operation code is randomly extracted from the code information database and the data is embedded with the data length corresponding to the operation code. However, each operation code is stored at a frequency corresponding to the appearance probability of each operation code in the program. You may choose. The probability of appearance of each opcode in the program may be obtained by statistically examining a plurality of programs. The appearance probability of each opcode may be stored in the storage unit 12 in advance.

また、プログラムにおける複数のオペコードの並びの出現確率に応じて各オペコードを選択してもよい。すなわち、オペランドの各々の出現確率ではなく、プログラムに含まれるオペランドをN個単位で分解し、その組み合わせの出現確率に応じてオペコードを選択する。Nの値が2ならバイグラム(bi−gram)、3ならトライグラム(tri−gram)と呼ばれる。   Further, each opcode may be selected according to the appearance probability of a sequence of a plurality of opcodes in the program. That is, instead of the occurrence probability of each operand, the operands included in the program are decomposed in units of N, and an operation code is selected according to the appearance probability of the combination. If the value of N is 2, it is called a bigram (bi-gram), and if it is 3, it is called a trigram (tri-gram).

例えば、図6のトライグラムの例のように、2つ前のオペコード、1つ前のオペコードの組み合わせに応じて次に出現するオペコードの出現確率を求めておき、その出現確率に応じた頻度でオペコードが選択されるように選択処理を行う。   For example, as shown in the example of the trigram in FIG. 6, the appearance probability of the next operation code is obtained according to the combination of the two previous operation codes and the previous operation code, and the frequency according to the appearance probability is obtained. A selection process is performed so that an opcode is selected.

また、コード情報データベースを用いず、プログラムのテンプレートに含まれるオペランドに秘匿データを埋め込むものとしてもよい。プログラムのテンプレートは予め準備したものであってもよいし、ステップS10で生成されたメインプログラムの一部をテンプレートとして利用してもよい。   Further, the secret data may be embedded in the operand included in the program template without using the code information database. The program template may be prepared in advance, or a part of the main program generated in step S10 may be used as a template.

図7(a)に例示するプログラムのテンプレートを利用して、 “0x1122334455667788” という秘匿データを埋め込む場合、1行目の“Mov eax 0x00004030”というソースコードについてオペコード部“Mov eax”を残して、オペランド部に秘匿データの最初の4バイトを埋め込んで“Mov eax 0x11223344”とし、2行目の“Add ebx 0x0000008c”というソースコードについてオペコード部“Add ebx”を残して、オペランド部に秘匿データの残りの4バイトを埋め込んで“Add ebx 0x55667788”とする。これにより図7(b)に示すようなソースコードが生成される。このように生成されたソースコードをコンパイルすることによってオブジェクトコードである秘匿データコードに変換する。   When embedding secret data “0x11223334556767888” using the program template illustrated in FIG. 7A, the opcode “Move eax” is left as the operand for the source code “Move eax 0x000004030” on the first line, and the operand The first 4 bytes of the secret data are embedded in the part to make “Mov eax 0x11223344”, the opcode part “Add ebx” is left in the operand part for the source code “Add ebx 0x0000008c” in the second row, and the remaining part of the secret data in the operand part 4 bytes are embedded and “Add ebx 0x556667788” is set. As a result, a source code as shown in FIG. 7B is generated. The source code generated in this way is converted into a secret data code that is an object code by compiling.

ステップS16では、メインプログラムコード及び秘匿データコードをリンクさせてプログラムを完成させる。このステップは、図2におけるプログラム生成手段26に相当する。   In step S16, the main program code and the secret data code are linked to complete the program. This step corresponds to the program generation means 26 in FIG.

中央処理部10は、ステップS10で生成されたメインプログラムのオブジェクトコードと、ステップS14で生成された秘匿データコードのオブジェクトコードと、をリンカによりリンクさせてロードモジュールであるプログラムを生成する。   The central processing unit 10 links the object code of the main program generated in step S10 and the object code of the secret data code generated in step S14 with a linker to generate a program that is a load module.

生成されたプログラムは、図8に例示されるように、メインプログラムとともに、呼び出しコード、秘匿データコード、データ抜き出しコードがテキストセクションに含まれるものとなる。また、秘匿データコードから読み出された秘匿データを利用するプログラムコードであるデータの利用コードを含むものであってもよい。利用コードはステップS10のメインプログラムの生成ステップで生成すればよい。   As illustrated in FIG. 8, the generated program includes a call code, a secret data code, and a data extraction code in the text section together with the main program. Moreover, you may include the utilization code of the data which is a program code which utilizes the confidential data read from the confidential data code. The usage code may be generated in the main program generation step in step S10.

また、コード情報データベースの登録内容をプログラム内に含めるようにしてもよい。コード情報データベースは、プログラム内ではなく、記憶部12に記憶してもよい。これが、コード情報データベース記憶手段32に相当する。   Further, the registration contents of the code information database may be included in the program. The code information database may be stored in the storage unit 12 instead of in the program. This corresponds to the code information database storage unit 32.

なお、上記実施の形態及び変形例では、1つのプログラムコード内に1つの秘匿データを埋め込む例を示したが、1つのプログラムに複数の秘匿データを埋め込むことも可能である。その場合には、データ抜き出しコードやオペランド情報データベースは複数の秘匿データに対して共通に設けてもよい。   In the above-described embodiment and modification, an example in which one piece of secret data is embedded in one program code is shown, but a plurality of pieces of secret data can be embedded in one program. In that case, a data extraction code and an operand information database may be provided in common for a plurality of secret data.

<データ読出処理>
以下、上記データ秘匿処理によって生成されたプログラムに埋め込まれたデータを読み出すデータ読出処理について説明する。
<Data read processing>
Hereinafter, a data read process for reading data embedded in the program generated by the data concealment process will be described.

データ秘匿・読出装置100は、記憶部12に格納されているデータ読出プログラムを実行することによって、図9に示すフローチャートに沿ってデータ読出処理を実行する。本実施の形態においては、データ読出プログラムは、上記データ秘匿処理において生成されたプログラムである。   The data concealment / reading apparatus 100 executes the data reading process according to the flowchart shown in FIG. 9 by executing the data reading program stored in the storage unit 12. In the present embodiment, the data reading program is a program generated in the data concealment process.

ステップS20では、読み出した秘匿データを格納するメモリ領域を確保する。このステップが、図2における秘匿データコード読出手段28の一部に相当する。   In step S20, a memory area for storing the read secret data is secured. This step corresponds to a part of the secret data code reading means 28 in FIG.

中央処理部10は、以下の処理で読み出される秘匿データを格納するために記憶部12の空き領域を確保する。また、確保した空き領域の開始アドレスを求める。   The central processing unit 10 secures a free area in the storage unit 12 in order to store confidential data read in the following processing. Also, the start address of the secured free area is obtained.

ステップS22では、呼び出しコードをコールして、データ抜き出しコードを呼び出す。このステップが、図2における秘匿データコード読出手段28の一部に相当する。   In step S22, the calling code is called to call the data extraction code. This step corresponds to a part of the secret data code reading means 28 in FIG.

中央処理部10は、プログラムに含まれる呼び出しコードを実行する。呼び出しコードを実行すると、プログラムに含まれるデータ抜き出しコードの処理が呼び出される。このとき、呼び出しコードに含まれる秘匿データ格納部の開始アドレス及び秘匿データ格納部のサイズ、及び、ステップS20で確保されたメモリ領域の開始アドレスがデータ呼び出しコードに引き渡される。   The central processing unit 10 executes a call code included in the program. When the calling code is executed, the processing of the data extraction code included in the program is called. At this time, the start address of the secret data storage unit and the size of the secret data storage unit included in the call code, and the start address of the memory area secured in step S20 are delivered to the data call code.

ステップS24では、秘匿データが読み出される。このステップが、図2における秘匿データコード読出手段28及び秘匿データコード解析手段30の一部に相当する。   In step S24, the confidential data is read out. This step corresponds to a part of the secret data code reading means 28 and the secret data code analyzing means 30 in FIG.

中央処理部10は、ステップS22で呼び出されたデータ抜き出しコードを実行する。データ抜き出しコードは、プログラムに埋め込まれている秘匿データ格納部にアクセスし、秘匿データ格納部の開始アドレスから秘匿データコードを順次読み出す。中央処理部10は、秘匿データ格納部に格納されているデータを読み出し、コード情報データベースを参照して、どのオペコードであるかを調べる。そして、該当するオペコードのオペランド部のデータ長を求め、オペコード部とオペランド部との組み合わせからなる秘匿データコードを読み出す。本実施の形態では、秘匿データコードを1つずつ読み出し、次のステップS26における秘匿データの格納処理を行う。   The central processing unit 10 executes the data extraction code called in step S22. The data extraction code accesses the secret data storage unit embedded in the program, and sequentially reads the secret data code from the start address of the secret data storage unit. The central processing unit 10 reads out the data stored in the secret data storage unit and refers to the code information database to check which opcode it is. Then, the data length of the operand portion of the corresponding operation code is obtained, and the secret data code composed of the combination of the operation code portion and the operand portion is read out. In the present embodiment, the confidential data code is read one by one, and the confidential data is stored in the next step S26.

なお、コード情報データベースは、プログラムに組み込んであるものでもよいし、中央処理部10からアクセス可能に記憶部12等に格納されているものでもよい。   The code information database may be incorporated in the program, or may be stored in the storage unit 12 or the like so as to be accessible from the central processing unit 10.

例えば、ソースコード“Mov eax 0x11223344”に対応する秘匿データコード“B8H,44H,33H,22H,11H”が格納されている場合、図5に例示するコード情報データベースではオペコード“B8H(Mov eax)”が1バイト、それに対するオペランドのデータ長は4バイトであるので秘匿データ格納部の先頭アドレスから5バイトのデータを最初の秘匿データコードとして読み出す。   For example, when the secret data code “B8H, 44H, 33H, 22H, 11H” corresponding to the source code “Mov eax 0x11223344” is stored, the opcode “B8H (Mov eax)” in the code information database illustrated in FIG. Is 1 byte, and the data length of the operand corresponding to it is 4 bytes. Therefore, 5 bytes of data are read out as the first secret data code from the head address of the secret data storage unit.

次にステップS24に処理が戻ってきた場合、上記秘匿データコードの後に、ソースコード“Add eax 0x55667788” に対応する秘匿データコード“05H,88H,77H,66H,55H”が格納されていたとすると、図5に例示するコード情報データベースではオペコード“05H(Add eax)”が1バイト、それに対するオペランドのデータ長は4バイトであるので秘匿データ格納部の先頭アドレスから5バイトのデータを2番目の秘匿データコードとして読み出す。   Next, when the process returns to step S24, if the secret data code “05H, 88H, 77H, 66H, 55H” corresponding to the source code “Add eax 0x556667788” is stored after the secret data code, In the code information database illustrated in FIG. 5, the opcode “05H (Add eax)” is 1 byte, and the data length of the operand corresponding to it is 4 bytes. Therefore, 5 bytes of data from the start address of the secret data storage unit is the second secret. Read as data code.

ステップS26では、オペランド部からデータを読出し、確保してあるメモリ領域に格納する。このステップは、図2における秘匿データコード解析手段30の一部に相当する。   In step S26, the data is read from the operand part and stored in the reserved memory area. This step corresponds to a part of the secret data code analyzing means 30 in FIG.

中央処理部10は、ステップS24で行ったオペコード部とオペランド部との切り分けに応じて、読み出した秘匿データコードから秘匿データのみを抽出して、ステップS20で確保したメモリの空き領域の開始アドレスから順に格納していく。   The central processing unit 10 extracts only the secret data from the read secret data code according to the separation between the operation code part and the operand part performed in step S24, and starts from the start address of the free area in the memory secured in step S20. Store in order.

例えば、上記の例で秘匿データコード“B8H,44H,33H,22H,11H”が読み出された場合、先頭の1バイトはオペコード“B8H(Mov eax)”であるので、その部分を読み飛ばしてデータ長が4バイトであるオペランド部のデータ“0x11223344”を抽出し、メモリの空き領域の開始アドレスから4バイト分のメモリ領域に格納する。   For example, in the above example, when the secret data code “B8H, 44H, 33H, 22H, 11H” is read, the first one byte is the operation code “B8H (Move beam)”, so that portion is skipped. Operand data “0x11223344” having a data length of 4 bytes is extracted and stored in the memory area for 4 bytes from the start address of the free area of the memory.

次に、秘匿データコード“05H,88H,77H,66H,55H”が読み出された場合、先頭の1バイトはオペコード“05H(Add eax)”であるので、それを読み飛ばしてデータ長が4バイトであるオペランド部のデータ“0x55667788”を抽出し、データ“0x11223344”が格納領域の後のメモリ領域(先頭アドレスから5バイト目から4バイト分)に格納する。   Next, when the secret data code “05H, 88H, 77H, 66H, 55H” is read, the first byte is the operation code “05H (Add eax)”. Operand data “0x556667788”, which is a byte, is extracted, and data “0x11223344” is stored in the memory area after the storage area (four bytes from the fifth byte from the start address).

ステップS28では、総ての秘匿データを読み出したか否かが判定される。このステップは、図2における秘匿データコード解析手段30の一部に相当する。   In step S28, it is determined whether all the confidential data has been read. This step corresponds to a part of the secret data code analyzing means 30 in FIG.

中央処理部10は、秘匿データ格納部に格納されている秘匿データコードを総て読み出したか否かを判定する。具体的には、データ抜き出しコードにおいて、呼び出しコードから引き渡された秘匿データ格納部の開始アドレス及び秘匿データ格納部のサイズを用いて、秘匿データ格納部の最終端まで秘匿データコードを読み出したか否かを判定する。総ての読み出しが終了すればデータの読み出し処理を終了してメインプログラムの処理に戻り、そうでなければステップS24に処理を戻し、新たな秘匿データコードの読み出しを行う。   The central processing unit 10 determines whether or not all the secret data codes stored in the secret data storage unit have been read. Specifically, in the data extraction code, whether the secret data code has been read up to the final end of the secret data storage unit using the start address of the secret data storage unit and the size of the secret data storage unit delivered from the calling code Determine. If all the reading is completed, the data reading process is terminated and the process returns to the main program. If not, the process returns to step S24 to read a new secret data code.

<変形例>
上記実施の形態では、秘匿データコードとしてダミーのプログラムコードをプログラムに組み込むものとしたが、秘匿データコードを実行することによって秘匿データが読み出せるようにしてもよい。
<Modification>
In the above embodiment, the dummy program code is incorporated into the program as the secret data code. However, the secret data may be read by executing the secret data code.

例えば、データを確保したメモリ(レジスタ)に格納するプログラムコードと、そのメモリ(レジスタ)のアドレスを増加させるプログラムコードの組み合わせで秘匿データコードを生成し、その秘匿データコードを実行することでメモリに秘匿データを順次格納することができる。秘匿データは、確保したメモリ(レジスタ)にデータを格納するプログラムコードのデータ部分に埋め込む。   For example, a secret data code is generated by a combination of a program code stored in a memory (register) in which data is secured and a program code that increases the address of the memory (register), and the secret data code is executed in the memory by executing the secret data code. Secret data can be stored sequentially. The secret data is embedded in the data portion of the program code that stores the data in the secured memory (register).

より具体的には、レジスタeaxに格納されているアドレス値で示されるメモリ領域に即値データを格納するソースコード“Movl [eax] 即値(4バイト)”と、レジスタeaxの値を格納したデータサイズ(4バイト)だけ増加させるソースコード“Add eax 4”とを組み合わせて、図10に例示するように、秘匿データの格納に必要な数だけその組み合わせを繰り返す秘匿データコードを生成する。秘匿データは即値として埋め込む。秘匿データコードの最後には、メインルーチンに処理を戻すコードを入れる。   More specifically, the source code “Mov1 [eax] immediate value (4 bytes)” for storing immediate data in the memory area indicated by the address value stored in the register eax, and the data size storing the value of the register eax The source code “Add eax 4” that is increased by (4 bytes) is combined to generate a secret data code that repeats the combination as many times as necessary to store the secret data, as illustrated in FIG. Confidential data is embedded as an immediate value. At the end of the secret data code, a code for returning the processing to the main routine is inserted.

このように生成された秘匿データコードを、秘匿データコードの呼び出しコードを含むメインプログラムとリンクさせてプログラムを生成する。   The secret data code generated in this way is linked with the main program including the call code for the secret data code to generate a program.

秘匿データの読み出し処理は、メインプログラムの呼び出しコードにより秘匿データコードを呼び出すことによって行われる。   The secret data reading process is performed by calling the secret data code by the call code of the main program.

例えば、上記例の場合、レジスタeaxに秘匿データの格納先となるメモリ領域の開始アドレスを格納して秘匿データコードの先頭部分を呼び出すと、秘匿データコード“Movl [eax] 即値(4バイト)”が実行されて、そのコードに含まれる4バイトの即値がレジスタeaxで示されるメモリ領域に格納される。続いて、秘匿データコード“Add eax 4”が実行され、レジスタeaxの値が4バイトだけ増加される。続いて、次の“Mov”コードが実行されて、次の秘匿データが4バイト増加されたレジスタeaxで示されるメモリ領域に格納される。このような処理が組み合わされることによって確保したメモリ空間に秘匿データが順次格納される。秘匿データコードの最後にメインルーチンに処理を戻すコードを入れておくことによって、秘匿データの読み出しが終了した時点でメインルーチンに処理が戻される。   For example, in the case of the above example, if the start address of the secret data code is called by storing the start address of the memory area that is the storage destination of the secret data in the register eax, the secret data code “Movl [eax] immediate value (4 bytes)” Is executed, and the 4-byte immediate value included in the code is stored in the memory area indicated by the register eax. Subsequently, the secret data code “Add eax 4” is executed, and the value of the register eax is increased by 4 bytes. Subsequently, the next “Mov” code is executed, and the next secret data is stored in the memory area indicated by the register eax increased by 4 bytes. The secret data is sequentially stored in the memory space secured by combining such processes. By putting a code for returning the process to the main routine at the end of the secret data code, the process is returned to the main routine when the reading of the secret data is completed.

本発明の実施の形態におけるデータ秘匿・読出装置の構成を示す図である。It is a figure which shows the structure of the data concealment / reading apparatus in embodiment of this invention. 本発明の実施の形態におけるデータ秘匿・読出装置の機能ブロック図である。It is a functional block diagram of the data concealment / reading device in the embodiment of the present invention. 本発明の実施の形態におけるデータ秘匿処理のフローチャートである。It is a flowchart of the data concealment process in the embodiment of the present invention. プログラムコードの構成例を示す図である。It is a figure which shows the structural example of a program code. プログラムコードにおけるオペコードとオペランドのサイズの関係の例を示す図である。It is a figure which shows the example of the relationship between the opcode in a program code, and the size of an operand. 本発明の実施の形態におけるトライグラムの例を示す図である。It is a figure which shows the example of the trigram in embodiment of this invention. 本発明の実施の形態におけるテンプレート及びそれから生成される秘匿データコードの例を示す図である。It is a figure which shows the example in the embodiment of this invention, and the secret data code produced | generated from it. 本発明の実施の形態におけるプログラムの構成例を示す図である。It is a figure which shows the structural example of the program in embodiment of this invention. 本発明の実施の形態におけるデータ読出処理のフローチャートである。It is a flowchart of the data reading process in embodiment of this invention. 本発明の変形例における秘匿データコードの例を示す図である。It is a figure which shows the example of the secret data code in the modification of this invention.

符号の説明Explanation of symbols

10 中央処理部、12 記憶部、14 入力部、16 表示部、18 インターフェース部、20 メインプログラム生成手段、22 秘匿対象データ取得手段、24 秘匿データコード生成手段、26 プログラム生成手段、28 秘匿データコード読出手段、30 秘匿データコード解析手段、32 コード情報データベース記憶手段、100 データ秘匿・読出装置。   DESCRIPTION OF SYMBOLS 10 Central processing part, 12 Storage part, 14 Input part, 16 Display part, 18 Interface part, 20 Main program production | generation means, 22 Confidential object data acquisition means, 24 Confidential data code production | generation means, 26 Program production | generation means, 28 Confidential data code Reading means, 30 secret data code analyzing means, 32 code information database storage means, 100 data concealing / reading device.

Claims (11)

コンピュータに、
秘匿対象となるデータを取得するデータ取得ステップと、
オペコードを含むプログラムコードの少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成する秘匿データコード生成ステップと、
前記秘匿データコードを含むコンピュータで実行可能なプログラムを生成するプログラム生成ステップと、
を含む処理を実行させることを特徴とするデータ秘匿プログラム。
On the computer,
A data acquisition step for acquiring data to be concealed;
A secret data code generating step for generating a secret data code by embedding the data to be concealed leaving at least the operation code of the program code including the operation code;
A program generation step of generating a computer-executable program including the secret data code;
A data concealment program for executing a process including:
請求項1に記載のデータ秘匿プログラムにおいて、
前記秘匿データコード生成ステップは、ランダムにプログラムコードを選択し、当該選択されたプログラムコードのフォーマットにおいて少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成することを特徴とするデータ秘匿プログラム。
In the data concealment program according to claim 1,
The secret data code generation step is characterized by randomly selecting a program code and generating a secret data code by embedding the data to be concealed while leaving at least an operation code in the format of the selected program code. Data concealment program.
請求項1に記載のデータ秘匿プログラムにおいて、
前記秘匿データコード生成ステップは、オペコードの出現確率に応じてプログラムコードを選択し、当該選択されたプログラムコードのフォーマットにおいて少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成することを特徴とするデータ秘匿プログラム。
In the data concealment program according to claim 1,
The secret data code generation step selects a program code in accordance with the appearance probability of the operation code, and generates a secret data code by embedding the data to be concealed, leaving at least the operation code in the format of the selected program code. A data concealment program characterized by that.
請求項1に記載のデータ秘匿プログラムにおいて、
前記秘匿データコード生成ステップは、複数のオペコードの並びの出現確率に応じてプログラムコードを選択し、当該選択されたプログラムコードのフォーマットにおいて少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成することを特徴とするデータ秘匿プログラム。
In the data concealment program according to claim 1,
The secret data code generation step selects a program code according to the appearance probability of a sequence of a plurality of operation codes, and at least leaves the operation code in the format of the selected program code, and embeds the data to be concealed into the secret data A data concealment program characterized by generating code.
請求項1に記載のデータ秘匿プログラムにおいて、
前記秘匿データコード生成ステップは、コンピュータで実行可能なプログラムテンプレートに含まれるプログラムコードのフォーマットにおいて少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成することを特徴とするデータ秘匿プログラム。
In the data concealment program according to claim 1,
The secret data code generation step generates a secret data code by embedding the data to be concealed with at least an operation code remaining in a program code format included in a computer-executable program template. program.
請求項1〜5のいずれか1つに記載のデータ秘匿プログラムにおいて、
前記プログラム生成ステップは、前記秘匿データコードに埋め込まれたデータを読み出すためのデータ抜き出しコードを含むプログラムを生成することを特徴とするデータ秘匿プログラム。
In the data concealment program according to any one of claims 1 to 5,
In the data generation program, the program generation step generates a program including a data extraction code for reading data embedded in the confidential data code.
請求項1〜6のいずれか1つに記載のデータ秘匿プログラムにおいて、
前記プログラム生成ステップは、コンピュータで実行可能なプログラムコードのフォーマットを登録したコード情報データベースを含むプログラムを生成することを特徴とするデータ秘匿プログラム。
In the data concealment program according to any one of claims 1 to 6,
The program generating step generates a program including a code information database in which a program code format executable by a computer is registered.
コンピュータに、
オペコードを含むプログラムコードの少なくともオペコードを残して秘匿対象となるデータを埋め込んだ秘匿データコード、を含むコンピュータで実行可能なプログラムから前記秘匿データコードを読み出す秘匿データコード読出ステップと、
前記秘匿データコードに含まれるオペコードを読み飛ばして、埋め込まれているデータを抽出するデータ抽出ステップと、
を含む処理を実行させることを特徴とするデータ読出プログラム。
On the computer,
A secret data code reading step of reading out the secret data code from a computer-executable program, including a secret data code in which at least the opcode of the program code including the operation code is embedded and data to be concealed is embedded;
A data extraction step of skipping the opcode included in the secret data code and extracting the embedded data;
A data reading program for executing a process including:
請求項8に記載のデータ読出プログラムにおいて、
前記データ抽出ステップは、前記プログラムに含まれているコンピュータで実行可能なプログラムコードのフォーマットを登録したコード情報データベースを参照して、前記秘匿データコードに含まれるオペコードを読み飛ばして、埋め込まれているデータを抽出することを特徴とするデータ読出プログラム。
The data reading program according to claim 8,
The data extraction step is embedded by skipping an operation code included in the secret data code with reference to a code information database in which a program code format executable by a computer included in the program is registered. A data reading program for extracting data.
秘匿対象となるデータを取得するデータ取得手段と、
オペコードを含むプログラムコードの少なくともオペコードを残して前記秘匿対象となるデータを埋め込んで秘匿データコードを生成する秘匿データコード生成手段と、
前記秘匿データコードを含むコンピュータで実行可能なプログラムを生成するプログラム生成手段と、
を備えることを特徴とするデータ秘匿装置。
Data acquisition means for acquiring data to be concealed;
A secret data code generating means for generating a secret data code by embedding the data to be concealed leaving at least the operation code of the program code including the operation code;
Program generation means for generating a computer-executable program including the secret data code;
A data concealment device comprising:
オペコードを含むプログラムコードの少なくともオペコードを残して秘匿対象となるデータを埋め込んだ秘匿データコード、を含むコンピュータで実行可能なプログラムから前記秘匿データコードを読み出す秘匿データコード読出手段と、
前記秘匿データコードに含まれるオペコードを読み飛ばして、埋め込まれているデータを抽出するデータ抽出手段と、
を備えることを特徴とするデータ読出装置。
A secret data code reading means for reading out the secret data code from a computer-executable program including a secret data code in which at least the operation code of the program code is stored and the data to be concealed is embedded;
Data extraction means for extracting the embedded data by skipping the opcode included in the secret data code;
A data reading device comprising:
JP2008056568A 2008-03-06 2008-03-06 Data concealing program, data read-out program, data concealing device, and data reader Pending JP2009211646A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008056568A JP2009211646A (en) 2008-03-06 2008-03-06 Data concealing program, data read-out program, data concealing device, and data reader

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008056568A JP2009211646A (en) 2008-03-06 2008-03-06 Data concealing program, data read-out program, data concealing device, and data reader

Publications (1)

Publication Number Publication Date
JP2009211646A true JP2009211646A (en) 2009-09-17

Family

ID=41184694

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008056568A Pending JP2009211646A (en) 2008-03-06 2008-03-06 Data concealing program, data read-out program, data concealing device, and data reader

Country Status (1)

Country Link
JP (1) JP2009211646A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011243073A (en) * 2010-05-20 2011-12-01 Kyocera Mita Corp Authentication program, program set, authentication method, authentication device, and software expiration date change device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011243073A (en) * 2010-05-20 2011-12-01 Kyocera Mita Corp Authentication program, program set, authentication method, authentication device, and software expiration date change device
US8732843B2 (en) 2010-05-20 2014-05-20 Kyocera Document Solutions Inc. Software validity period changing apparatus, method, and installation package

Similar Documents

Publication Publication Date Title
US10409966B2 (en) Optimizing and protecting software
JP6257754B2 (en) Data protection
US6834343B1 (en) Method for watermarking computer programs
US10586026B2 (en) Simple obfuscation of text data in binary files
US9607160B2 (en) Method and apparatus for providing string encryption and decryption in program files
CN106599628A (en) Python byte code file protection method based on module hook
CN101084478B (en) Watermarking computer program code
CN108363911B (en) Python script obfuscating and watermarking method and device
JP2007148575A (en) Program, method, and device for preparing protected execution program
US8307450B2 (en) Method and system for hiding information in the instruction processing pipeline
CN109948308A (en) Code security guard method, device, electronic equipment and computer readable storage medium
US11620469B2 (en) Bar code generation scanning, and display method, apparatus, storage medium, and electronic device
Chroni et al. Encoding watermark integers as self-inverting permutations
JP2016507940A (en) Computing device configured by table network
US20150095659A1 (en) Method of executing, by a microprocessor, a polymorphic binary code of a predetermined function
CN110232021A (en) The method and device of page test
CA3150187C (en) Method and apparatus for protecting web script codes
CN112214736A (en) Code encryption method and related assembly
CN110210211A (en) A kind of method of data protection and calculate equipment
KR20080021071A (en) Translating expressions in a computing environment
CN114547558A (en) Authorization method, authorization control method and device, equipment and medium
US20030179883A1 (en) Self-restoration type program, program producing method and apparatus, information processing apparatus and program
JP2021507391A (en) Compilation device and method
US9607133B1 (en) Method and apparatus for watermarking binary computer code
JP4517636B2 (en) Execution program creation method, function program, and function program execution method