IP Library › Granted Patent US 11,403,388
Granted Patent B2
US 11,403,388 · App. 16/484,827 · Granted Aug 2, 2022

Assignment device, assignment method, and assignment program

Inventors: Fumihiro Kanei (Musashino, JP); Mitsuaki Akiyama (Musashino, JP); Yuta Takata (Musashino, JP); Takeshi Yagi (Musashino, JP)
Assignee: NIPPON TELEGRAPH AND TELEPHONE CORPORATION
G06F21/51G06F21/125G06F21/14G06F21/54G06F21/64
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,403,388
App. No.
16/484,827
Granted
Aug 2, 2022
Kind
B2
Abstract

An extracting unit randomly extracts a block from among the blocks of instruction strings constituting the byte code of a first program and, at the time of execution of the first program, extracts the blocks which are invariably executed before the randomly-extracted block. A dividing unit randomly divides, into a plurality of blocks, the instruction strings constituting the byte code of a second program which enables detection of tampering of the first program. An inserting unit inserts the plurality of blocks, which are obtained by division by the dividing unit, at different positions in the block extracted by the extracting unit, while maintaining the execution sequence written in the second program.

Claims (33)

1. An assignment device that assigns, to a first program to be protected, a function enabling detection of tampering of the first program, the assignment device comprising:

a memory; and

a processor coupled to the memory and programmed to execute a process comprising:

randomly extracting a block from among blocks of instruction strings constituting byte code of the first program and, at time of execution of the first program, extracting blocks which are invariably executed before the randomly-extracted block;

dividing, into a plurality of blocks, instruction strings constituting byte code of a second program which enables the detection of tampering of the first program; and

inserting the plurality of blocks, which are obtained by division at the dividing, at different positions in the randomly extracted block and the extracted blocks, while maintaining execution sequence written in the second program, wherein

the inserting inserts a self-tampering detection code, as the second program, in units of byte code instructions having a finer granularity than units of source code lines,

the dividing performs the division to have a plurality of successive instruction strings, from among the instruction strings constituting the byte code of the second program, included in a same block,

the plurality of successive instruction strings needs to be executed in succession,

from control flow graph of each function included in the first program, the randomly extracting randomly extracts source node, and the extracting the blocks extracts dominators representing nodes present in path from start of execution of the each function till the source node,

regarding each control flow graph, the inserting inserts the plurality of blocks, which are obtained by the division by the dividing, at different positions in byte code of the extracted source node and at different positions in byte code of each of the extracted dominators, and

blocks of instruction strings constituting the byte code of the extracted source node and the byte code of each of the extracted dominators represent insertion candidate locations for inserting the self-tampering detection code.

2. The assignment device according to claim 1 , wherein, at time of inserting the plurality of blocks obtained by the division by the dividing, the inserting at least either adds exception handling or secures a variable storage area.

3. An assignment method implemented in an assignment device that assigns, to a first program to be protected, a function enabling detection of tampering of the first program, the assignment method comprising:

randomly extracting a block from among blocks of instruction strings constituting byte code of the first program and, at time of execution of the first program, extracting blocks which are invariably executed before the randomly-extracted block;

dividing, into a plurality of blocks, instruction strings constituting byte code of a second program which enables the detection of tampering of the first program; and

inserting the plurality of blocks, which are obtained by division at the dividing, at different positions in the randomly extracted block and the extracted blocks, while maintaining execution sequence written in the second program, wherein

the inserting inserts a self-tampering detection code, as the second program, in units of byte code instructions having a finer granularity than units of source code lines,

the dividing performs the division to have a plurality of successive instruction strings, from among the instruction strings constituting the byte code of the second program, included in a same block,

the plurality of successive instruction strings need to be executed in succession,

from control flow graph of each function included in the first program, the randomly extracting randomly extracts source node, and the extracting the blocks extracts dominators representing nodes present in path from start of execution of the each function till the source node,

regarding each control flow graph, the inserting inserts the plurality of blocks, which are obtained by the division by the dividing, at different positions in byte code of the extracted source node and at different positions in byte code of each of the extracted dominators, and

blocks of instruction strings constituting the byte code of the extracted source node and the byte code of each of the extracted dominators represent insertion candidate locations for inserting the self-tampering detection code.

4. A non-transitory computer-readable recording medium having stored therein a program, for assigning, to a first program to be protected, a function enabling detection of tampering of the first program, that causes a computer to execute a process, comprising:

randomly extracting a block from among blocks of instruction strings constituting byte code of the first program and, at time of execution of the first program, extracting blocks which are invariably executed before the randomly-extracted block;

dividing, into a plurality of blocks, instruction strings constituting byte code of a second program which enables the detection of tampering of the first program; and

inserting the plurality of blocks, which are obtained by division at the dividing, at different positions in the randomly extracted block and the extracted blocks, while maintaining execution sequence written in the second program, wherein

the inserting inserts a self-tampering detection code, as the second program, in units of byte code instructions having a finer granularity than units of source code lines,

the dividing performs the division to have a plurality of successive instruction strings, from among the instruction strings constituting the byte code of the second program, included in a same block,

the plurality of successive instruction strings need to be executed in succession,

from control flow graph of each function included in the first program, the randomly extracting randomly extracts source node, and the extracting the blocks extracts dominators representing nodes present in path from start of execution of the each function till the source node,

regarding each control flow graph, the inserting inserts the plurality of blocks, which are obtained by the division by the dividing, at different positions in byte code of the extracted source node and at different positions in byte code of each of the extracted dominators, and

the blocks of instruction strings constituting the byte code of the extracted source node and the byte code of each of the extracted dominators represent insertion candidate locations for inserting the self-tampering detection code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2019
From: KANEI, FUMIHIRO; AKIYAMA, MITSUAKI; TAKATA, YUTA; YAGI, TAKESHI
To: NIPPON TELEGRAPH AND TELEPHONE CORPORATION
Reel/Frame 050007/0489 →
Priority Claims (1)
JP JP2017-024901 · Feb 14, 2017 · national
Continuity (1)
Related Publication 20200042695A1 · Feb 6, 2020
Cited By (1)
US 12,293,172