IP Library Granted Patent US 8,958,546
Granted Patent B2
US 8,958,546 · App. 12/965,067 · Granted Feb 17, 2015

Steganographic messaging system using code invariants

Inventor: Thomas H. Probert (Holden, MA)
Assignee: Stegosytems, Inc.
H04L9/3244G06F21/125
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 8,958,546
App. No.
12/965,067
Granted
Feb 17, 2015
Kind
B2
Abstract

A steganographic method to prevent the execution of malicious code and mitigate software piracy. The method uses invariant portions of machine instructions to create an executable watermark within unmodified code. This watermark can be verified at any stage of the software lifecycle, including dynamically and continuously during execution, to detect foreign code by verifying the integrity of the watermark prior to execution. In addition, the watermark may serve as a steganographic covert channel concealing additional information. Code invariants are not altered by binding operations such as loading and linking on different machines, and thus may be employed to consistently and repeatedly identify an unmodified instantiation of a particular program. The use of opcodes and register references as invariants avoids trivial register substitution as a means of program differentiation that eludes detection. The split key structure of the resulting cipher implies that knowledge of only the code (first key) or the cipher table (second key) alone is insufficient to derive the message.

Claims (20)

1. A method for encoding steganographic messages comprising:

parsing, from a code segment, a sequence of invariants, the invariants corresponding to fixed values in a microprocessor instruction sequence, each invariant defined by an invariant symbol;

selecting a message from a sequence of message symbols from an alphabet; and

defining a translation alphabet by mapping each message symbol in the selected message to a successive invariant in the sequence of invariants, the mapping associating each of the invariant symbols to a subset of the message symbols from which the message is composed, the mapping defining the message in the unmodified sequence of invariants from the code segments that leaves the instruction sequence unchanged, each occurrence of an invariant symbol associated with a plurality of message symbols in the subset of symbols.

2. The method of claim 1 further comprising

binding each invariant symbol from the sequence of invariants to a message symbol from the sequence of message symbols, the binding defining the translation alphabet from a non-injective mapping of the invariant symbols to the message symbols.

3. The method of claim 1 wherein each message symbol of the message has a corresponding invariant defined by a corresponding position in each respective sequence such that the invariant symbol has maps to multiple message symbols, the set of parsed invariants defining a translation alphabet having multiple translations in the message symbols resulting from the same invariant symbol.

4. The method of claim 3 further comprising authenticating the code segment by validating each symbol in the message against the set of symbols associated with the corresponding invariant symbol from the sequence of invariants.

5. The method of claim 3 further comprising mapping each invariant to a symbol in the message, the message configured for subsequent validation of the code segment by mapping each symbol of the message to the corresponding invariant, each occurrence of a particular invariant independent of the mapping applied to other occurrences of the same invariant.

6. The method of claim 1 further comprising authenticating the code segment by:

retrieving the message;

parsing each invariant from the code segment;

identifying the set of symbols to which each parsed invariant corresponds;

comparing, in an iterative manner, each successive symbol of the message to the set of symbols corresponding to each successively parsed invariant; and

confirming if each successive symbol is in the set of symbols corresponds to the respective parsed invariant.

7. A computer program product having computer program code encoded as a set of instructions on a non-transitory computer readable storage medium that, when executed by a processor, cause the computer to perform a method for encoding steganographic messages by invariant recognition, the method comprising

parsing, from a code segment, a sequence of invariants, the invariants corresponding to fixed values in an instruction sequence, each invariant defined by an invariant symbol;

selecting a message from a sequence of message symbols from an alphabet; and

defining a translation alphabet by mapping each message symbol in the selected message to a successive invariant in the sequence of invariants, the mapping associating each of the invariant symbols to a subset of the message symbols from which the message is composed, each occurrence of an invariant symbol associated with a plurality of message symbols in the subset of symbols the mapping defining the message in the unmodified sequence of invariants from the code segment that leaves the instruction sequence unchanged.

8. The method of claim 1 wherein each invariant symbol maps to multiple message symbols, the set of parsed invariants defining a translation alphabet having multiple translations in the message symbols resulting from the same invariant symbol.

Assignments (4)
CHANGE OF NAME Recorded Aug 3, 2015
From: CYBERSEC LLC
To: DIGITAL IMMUNITY LLC
Reel/Frame 036254/0238 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2015
From: STEGOSYSTEMS, INC.; SYNIAD LLC
To: CYBERSEC LLC
Reel/Frame 035357/0661 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2013
From: PROBERT, THOMAS H.
To: SYNIAD, LLC
Reel/Frame 030904/0973 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2013
From: SYNIAD, LLC
To: STEGOSYSTEMS, INC.
Reel/Frame 030905/0069 →
Continuity (2)
Provisional Application 61285653 · Dec 11, 2009
Related Publication 20140108803A1 · Apr 17, 2014