throbber
000001
`
`Symantec 1020
`IPR of U.S. Pat. No. 7,757,298
`
`

`
`U.S. Patent
`
`Dec. 21, 1999
`
`Sheet 1 of6
`
`6,006,328
`
`EXEGUTABLE PROGRAM
`
`COMPUTER OPERATING SYSTEM
`
`F/62 /.
`
`PRIOR ART
`
`. _ _ _ _ _. _
`I APPLICATION cons
`
`
`
`L______J
`
`23\
`USERS
`
`
`
`FIG? 3.
`
`000002
`
`000002
`
`

`
`U.S. Patent
`
`Dec. 21, 1999
`
`Sheet 2 of6
`
`6,006,328
`
`
`
`
` {To-WTETIEYT
`PROGRAM coma:
`
`
`SYSTEM BUFFERS
`
`OTHER DRIVERS AND
`
`
`
`OTHER HARDWARE
`
`COMPUTER HARDWARE
`
`FIG: 4.
`
`PRIOR ART
`
`'8
`
`\4o
`
` APPLICATOR
`
`
`
`
`
`6|
`
`I6
`
`EXECUTABLE PROGRAM
`
`I
`
`(PROGRAM. CXC)
`
`
`
`I OBFUSCATOR
`
`
`/62
`T
`T
`
`
`CIPHER
`
`T
`63
`
`
`ID-DATA PROTECTION
`
`FIG 6.
`
`000003
`
`000003
`
`

`
`U.S. Patent
`
`Dec. 21, 1999
`
`Sheet 3 of6
`
`6,006,328
`
`ROGUE PROGRAM
`
`KEYBOARD
`DRIVER
`
`OTHER DRIVERS a
`svsrm BUFFERS
`
`.
`:
`
`I I :
`
`REPLACEMENT
`
`:\
`ID-DATA cum I
`
`:
`
`PROGRAM come;
`APPUCATION coofi
`
`I‘: Z.‘_.'‘_''‘..'_-_’‘
`
`OPERATMG SYSTEM
`
`KEYBOARD
`
`HARDWARE
`
`COMPUTER HARDWARE
`
`FIG 5.
`
`m 7'
`cons
`72
`
`'5”
`
`7‘
`
`FIG. 2 PRIOR ART
`
`000004
`
`000004
`
`

`
`U.S. Patent
`
`Dec. 21, 1999
`
`Sheet 4 of6
`
`6,006,328
`
`EXE FILE HEADER
`
`
`
`
` ADDRESS CONTENTS TYPE
`OOH
`EXE PROGRAM IDENTIFIER
`A4DH
`1 WORD
`
`02H FILE LEN TH MOD 512
`
`1 WORD
`
`
`
`06H N MBER OF SEGMENT ADDRESS FOR PASSING
`
`l WORD
`
`08H HEADER SIZE IN PARAGRAPHS
`
`OAH MINIMUM NUMBER OF PARAGRAPHS NEEDED
`
`I WORD
`
`1 WORD
`
`
`
`
`
`
`CH MINIMUM NUMBER OF PARAGRAPH
`
`NEEDED
`
`1 WORD
`
`0 O
`
`
` H
`
`STACK SEGMENT DI PLACEMENT
`EH
`
`10H SP REGISTER ONTENTS WHEN PROGRAM START
`
`
`
`
`12H
`
`14H
`IP RE I TER CONTENT WHEN PROGRAM TART
`
`HE K
`
`M BA ED ON EXE FILE H Al“;
`
`
`
`16H START OF CODE SEGMENT IN EXE FILE
`
`18H RELOCATION TABLE ADDRESS IN EXE FILE
`
`1 WORD m
`
`1 WORD 33
`
`OVERLAY NUMBER
`1AH
`
`_ H
`
`B FFER MEMO’,
`
` xxH
`
`ADDRESS OF PASSING SEGMENT ADDRESSES
`
`RELOCATION TABLE
`
`XXH
`
`
`PROGRAM CODE
`
`DATA
`
`
`AND STACK SEGMENT
`
`FIG 8.
`
`PRIOR ART
`
`000005
`
`000005
`
`

`
`U.S. Patent
`
`Dec. 21, 1999
`
`Sheets 0f6
`
`6,006,328
`
`PROGRAM EXE (I6)
`
`NEW EXE (30)
`
` RELOCATION
`CODE (PART A)
`
`
`
`DATA
`
`
`
`OVERLAYS
`
`NETSAFE 2
`
`CODE (PART B)
`
`
`
`inane.
`
`CODE (PART 0)
`
` RELOCATION
`
`CODE (PART A)
`
`(PART B)
`
`(PART C)
`
`DATA
`
`
`
`
`
`OVERLAYS
`
`F/6 .9. PRIOR ART
`
`
`
`
`FIG.
`
`/0.
`
`NEW EXE 50 (IN MEMORY)
`
`NEW EXE 50 (IN MEMORY)
`
`
`
`NETSAFE 2
`
`I23
`
`FIG /2.
`
`I03
`
`CODE (PART A)
`(ENCRYPTED)
`
`PSP
`
`0 "5
`CODE (PART (I)
`'06
`(ENCRYPTED)
`
`
`
`DATA
`
`STACK
`
`
`WORKSPACE
`
`NETSAF E 2
`(PARTIALLY ENCRYPTE
`
`F/62 //.
`
`7.’)
`
`III
`
`II2
`
`"5
`
`000006
`
`000006
`
`

`
`U.S. Patent
`
`Dec. 21, 1999
`
`Sheet 6 of6
`
`6,006,328
`
`I3! \ mrgnaupr {ABLE
`NUMBER POINTER
`
`-
`
`
`
`_ _ _
`
`FIG /3.
`
`000007
`
`NEW EXE 30(|N MEMORY)
`
`
`
`
`
`cons
`
`DATA
`
`STACK
`
`WORKSPACE
`
`
`
`
`
`
`NETSAFE 2
`
`SECURE HARDWARE
`
`ID-DATA ENTRY CODE
`
`us
`
`5|
`
`000007
`
`

`
`@006328
`
`1
`COMPUTER SOFTWARE
`
`AUTHENTICATION, PROTECTION, AND
`SECURITY SYSTEM
`
`This is a continuation of application Ser. No. 08/679,077,
`filed Jul. 12, 1996.
`
`BACKGROUND OF THE INVENTION
`
`invention relates to a computer program
`The present
`having enhanced security features, and also to a system and
`method for enhancing the security features of a computer
`program. In particular, the present invention relates to such
`a program, and the system and method for creating the
`program, having increased security features to prevent ID
`data (as defined) eavesdropping and/or theft and/or ensure
`authenticity.
`
`Description of the Prior Art
`
`Computers are becoming widely interconnected and
`heavily relied upon to process and store sensitive informa-
`tion. The risk of unauthorised access to computers and
`information has increased with this increased interconnec-
`
`tivity.
`Many security advances exist in the areas of identification
`& authentication of users, cryptography, virus prevention,
`and the like, however—almost all of these advances ulti-
`mately rely upon computer software. Most computer sys-
`tems are, or are accessed by, small personal computers, and
`most software used on these personal computers is suscep-
`tible to “local attacks”—attacks which are mounted from
`
`inside said personal computers against said software by
`other software or people.
`Passwords, User-ID’s, credit-card numbers and expiry
`dates, bank account and PIN numbers, smart-card data,
`biometric information (for example: the data comprising a
`retina or fingerprint scan), cryptographic keys, and the like,
`are all examples of identification, authentication or similar
`data which is either sensitive in itself, or may allow access
`to sensitive, restricted or other information or services.
`Hereafter,
`the term ID-Date will be used to refer to the
`abovementioned identification, authentication or similar
`data, excluding ID-Data which is valid only for a single use,
`or which is designed to expire at regular intervals of short
`periods of time, say less than two minutes.
`Illegal access to computer system information can be
`obtained by exploiting various security flaws found in
`computer software products. A common flaw is the suscep-
`tibility of said software to the theft of ID-Data either directly
`from said software as it executes, or, from the operating
`system or hardware on which said software is executing.
`Another common flaw is the susceptibility of said software
`to (illegal) modification. Such modifications may remove,
`disable, or compromise the security features of said soft-
`ware.
`
`Viruses, Terminate-and stay-resident programs (TSRs),
`co-resident software, multi-threaded operating system
`processes, Trojan Horses, Worms, Hackers, Spoof programs,
`keypress password capturers, macro-recorders, sniffers, and
`the like can be effective at stealing ID-Data and are
`examples of (a)
`rogue software,
`(b) people capable of
`subverting security software, or, (c) software which can be
`configured for illegimate purposes. Hereafter, the term rogue
`software will be used to refer to software or subversions
`
`such as the above mentioned (a) (b) and (c), used for the
`purpose of stealing ID-Data. The definition of our term
`“rogue software” when used herein also includes software or
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`other means used to tamper with other software. The term
`tampering is defined hereafter.
`There are many ways to introduce rogue software into a
`computer system. Viruses spread automatically by introduc-
`ing themselves. Trojan-Horses are usually introduced by
`tricking users into allowing them to execute (such as by
`masquerading as a new or well-known computer game or
`other product). Existing security problems may be utilised to
`introduce rogue software, some well known problems
`include lava bugs, errors, or oversights, ineffective physical
`security (for example: permitting rogue software to be
`introduced directly on floppy disk by an intruder); electronic
`mail attachments which automatically execute or execute
`after a simple mouse-click, incorrect security settings on
`internet, world-wide-web, TCP/IP or modems, and tamper-
`ing (see definition hereafter) with legitimate software
`in-transit as it flows from remote internet sites into a users
`
`computer, to name a few.
`Rogue software, once introduced, can steal ID-Data as
`mentioned hereinbefore.
`It may monitor keyboard (for
`example: by recording every key, as the user presses each
`one, in order to steal a password as it is being typed in),
`serial-port, mouse, screen, or other devices to steal ID-Data
`directly from them.
`It may monitor other software,
`applications, the operating system, or disks to steal ID-Data
`from there also. Once stolen, this ID-Data may be stored
`locally (for example: in memory or on-disk) or transmitted
`to remote locations (for example: by modem or network) or
`used immediately to perform illegal operations. Hereafter,
`the term eavesdropping will be used to refer to the moni-
`toring of a computer to record ID-Data.
`For example, a key press recorder could secretly, and
`unbeknown to the computer user, record all the keys pressed
`by the user into a hidden systems file. The information
`recorded could include a user’s password and other sensitive
`information which an organisation would obviously wish to
`protect.
`Additionally, rogue software may remove, disable, or
`compromise existing computer software security features by
`modifying the memory, disk or other image of said computer
`software. Rogue software may also utilise tampering tech-
`niques to alter existing computer software in order to steal
`ID-Data from it, or may attach itself to existing computer
`software (as is the case with many computer viruses).
`Hereafter, the term tampering will be used to refer to the
`abovementioned modification of computer software. Tam-
`pering may take place either locally (within a users PC) or
`remotely (for example: at one of the points which a com-
`puter program passes through as it is being download).
`Further, counterfeit software can be substituted for legiti-
`mate software. The counterfeit will appear real to a com-
`puter user, but actually acts to subvert security, such as by
`stealing ID-Data. Sometimes called “Spoof” programs or
`Trojan Horses, counterfeit software of this type may invoke
`the original legitimate software after having stolen ID-Data,
`so as not to arouse a user’s suspicion.
`Another potential security flaw found in computer soft-
`ware products is susceptibility to examination and reverse-
`engineering. Known (but generally secret) and other security
`problems or mistakes can be discovered by hackers and the
`like from the examination of existing computer software and
`by tracing its operation.
`Additionally, Computer software piracy is a growing
`problem, and the existing simple means which prevent this
`problem (such as registration or serial numbers and
`customer-names being encoded within the product) are
`becoming less effective.
`
`000008
`
`000008
`
`

`
`@006328
`
`3
`There is necessity within the try-before-you-buy software
`market for vendors to employ effective features which allow
`old software to expire without fear of hackers or the like
`removing said expiry features and for secure registration of
`software to be provided through the use of software unlock-
`codes.
`
`There is also need for software to be able to prevent
`security attacks upon itself (ie: tampering) and upon its own
`attack-detection code. There may also be a future need for
`software to identify the attacker for subsequent prosecution.
`There also exists cases where untamperable software
`usage metering may be desirable, and where effective
`password-protection of software execution may also be
`desirable.
`
`Known advances in certain areas of computer security
`have been successful and documented. There have been
`
`some advances in anti-virus technology which help detect
`and prevent certain security problems. There have been
`numerous advances in hardware-assisted computer security
`add-ons and devices, such as smartcards and biometric input
`devices. There have been advances in cryptographic tech-
`niques. Generally, all of these advances require authentic,
`un-tampered-with computer software in order to work.
`There have been relatively few advances in software based
`integrity self-checking (eg: tamper protection), and no prior
`software-based advances in preventing eavesdropping or the
`electronic theft of ID-Data, and no prior software-based
`advances in self-authentication.
`
`SUMMARY OF THE INVENTION
`
`This invention seeks to provide computer software having
`enhanced security features, to a process which substantially
`enhances the security of computer software (hereafter
`referred to as the improved process) and to a method by
`which to apply said improved process (hereafter referred to
`as the applicator).
`The improved process consists of including computer
`code to automatically detect tampering of said computer
`software, and computer code to prevent the theft of ID-Data
`by replacing existing vulnerable (to rogue software eaves-
`dropping or attack) software or operating system code with
`secure equivalents which utilise anti-spy techniques (as
`described later in this document).
`Preferably, the improved process also consists of includ-
`ing computer code to prevent decompilation, reverse-
`engineering, and disassembly by the inclusion of obfuscat-
`ing code inserts, and the use of executable encryption.
`Preferably, the improved process also consists of includ-
`ing code to prevent execution-tracing and debugging by the
`use of code designed to detect and prevent these operations.
`Preferably,
`the improved process consists of, or also
`includes, human-recognisable audio-visual components
`which permit the authenticity of said computer software to
`be easily verified by the user on each invocation using
`techniques described later in this document.
`The idea which lead to the creation of this invention can
`
`be summarised as follows: If a piece of computer software
`that is executing can be shown to be the genuine article, and
`this software can protect itself against eavesdropping, and
`this software can prevent tampering of itself,
`then is it
`possible for this software to function in a secure manner,
`even within an insecure operating system. This invention
`permits the creation of such a piece of computer software—
`having a tangible, useful security advantage and hence
`improving its value.
`
`4
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`The present invention will become more fully understood
`from the following detailed description of preferred but
`non-limiting embodiments thereof, described in connection
`with the accompanying drawings, wherein:
`FIG. 1 illustrates the standard operation of a computer
`system known in the prior art;
`FIG. 2 illustrates the known operation of a rogue or
`“spoof” program;
`FIG. 3 illustrates application code updated with the pre-
`ferred embodiment;
`FIG. 4 illustrates the known operation of a rogue eaves-
`dropping program;
`FIG. 5 illustrates the interaction of the components of the
`updated application;
`FIG. 6 illustrates the general structure of the preferred
`embodiment of the applicator;
`FIG. 7 illustrates a standard layout for a program to be
`executed on a computer system;
`FIG. 8 illustrates the standard layout of an EXE header
`under the MS-DOS operating system.
`FIG. 9 illustrates a standard layout of an EXE program
`under MS-DOS;
`FIG. 10 illustrates an altered executable form constructed
`
`in accordance with the specific embodiment;
`FIG. 11 illustrates a first stage of execution of the new.exe
`executable;
`FIG. 12 illustrates a second stage of execution of the
`new.exe executable file; and,
`FIG. 13 illustrates a third stage of execution of the
`new.exe executable file.
`
`DETAILED DESCRIPTION OF PREFERRED
`EMBODIMENTS
`
`40
`
`Throughout the drawings, like numerals will be used to
`identify similar features, except where expressly otherwise
`indicated.
`
`As will be described hereinafter, the present invention has
`general applicability to many different operating systems
`including MICROSOFT DOSTM (Microsoft Disk Operating
`System) APPLE MACINTOSH OPERATING SYSTEM,
`UNIXTM, etc.
`Detailed hereafter are several security-enhancing tech-
`niques to combat eavesdropping. Security is provided by (a)
`hampering examination of software-code operating system
`code or or parts thereof through the use of the encryption or
`partial encryption of said code, (b) preventing the disassem-
`bly of said code through the inclusion of dummy instructions
`and prefixes and additional code to mislead and hamper
`disassembly (ie: obfuscating inserts), (c) preventing the
`computerised tracing of the execution of said code (for
`example: with code debugging tools) through the use of
`instructions to detect, mislead, and hamper tracing,
`(d)
`preventing tampering of said code through the use of scan-
`ning to locate alterations, either or both on-disk and in
`memory either once at the start of execution, or continuously
`upon certain events, or (e) preventing ID-Data theft through
`the inclusion of secure input/output routines (for example:
`routines to bypass the standard operating system keyboard
`calls and use custom-written higher-security routines as a
`replacement) to replace insecure computer-system routines.
`Hereafter, the term anti-spy will be used to refer to any
`combination of one or more of the abovementioned tech-
`
`45
`
`50
`
`55
`
`60
`
`65
`
`000009
`
`000009
`
`

`
`@006328
`
`5
`
`niques [(a) through (e) or parts thereof] used to prevent
`eavesdropping.
`Referring now to FIG. 1 there is illustrated the standard
`scenario for “running” a given executable program 16, under
`the control of a computer operating system 17 on a computer
`18. In the preferred embodiment of the present invention, the
`executable program 16 is subjected to modification, as will
`be described hereinafter, to ensure its integrity and improve
`its security. There are five aspects of this inventions
`improved process, although said provess is still substantially
`improved even if not all of them are present. These aspects
`are: (1) Preventing eavesdropping (2) preventing disassem-
`bly and examination (3) detecting tampering (4) preventing
`execution-tracing and (5) ensuring authenticity.
`Preferred embodiments illustrates each of these aspects of
`the present invention will now be described.
`
`Aspect 1. Preventing Eavesdropping
`
`As hereinbefore described, it is desirable to prevent rogue
`software from eavesdropping on ID-Date. By replacing
`software which is vulnerable to eavesdropping with equiva-
`lent software which is far more secure,
`this purpose is
`achieved. To remove the vulnerability from the secure
`equivalent software, replacement routines may communi-
`cate directly with the hardware of the computer (for
`example, they may communicate with the keyboard circuitry
`instead of using the system-supplied (and hence possibly
`insecure) application interface keyboard-entry function-
`calls.) while disabling system interrupts which would permit
`rogue software to eavesdrop. Said replacement routines are
`coded to store ID-Data retrieved in a secure manner. ID-Data
`
`is not stored in full in plaintext (ie: unencrypted) in system
`or application buffers.
`
`Aspect 2. Preventing Disassembly and Examination
`
`is desirable to hamper
`it
`As hereinbefore described,
`disassembly (or de-compilation or reverse engineering) to
`protect software against eavesdropping and tampering, and
`to hinder examination of said software which might lead to
`secret security problems or mistakes being disclosed.
`Obfuscating inserts can successfully prevent automatic
`disassembly. Obfuscation is achieved by following uncon-
`ditional jump instructions (for example, Intel JMP or CLC/
`JNC combination or CALL (without a return expected) or
`any flow-of-control altering instruction (which is known not
`to return to the usual place) with one or more dummy
`op-code bytes which will cause subsequent op-codes to be
`erroneously disassembled (for example,
`the Intel 0xEA
`prefix will cause disassembly of the subsequent 4 op-codes
`to be incorrect, displaying them as the offset to the JMP
`instruction indicated by the 0xEA prefix instead of the
`instructions they actually represent).
`Dummy instructions may also be included to hamper
`disassembly by deliberately misleading a disassembler into
`believing a particular flow of control will occur, when in fact
`it will not.
`
`Flow of control can be designed to occur based upon CPU
`flag values determined from instructions executed a long
`time ago. Together with tracing preventing,
`this makes
`manual disassembly nearly impossible.
`The majority of the executable portions of the software
`can be encrypted for external storage. The decryption taking
`place in-memory after the software is loaded from external
`sources, under the control of a decryption “header” which
`prevents its own tampering and disassembly etc. This makes
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`manual and automatic disassembly nearly impossible, since
`the decryption should be designed to fail if tampering or
`tracing is detected.
`
`Aspect 3. Detecting Tampering
`
`is desirable to detect
`it
`As hereinbefore described,
`tampering, since this may lead to the reduction of software
`security.
`This can be achieved with the use of code which is
`
`protected from disassembly and examination through obfus-
`cation and encryption, which re-reads its own external-
`image and compares it with its known memory image or
`precalculated check-data to detect hot-patching (ie.
`the
`modification of software sometime after it has been loaded
`
`from disk, but (usually) before execution of the modified
`section has commenced).
`Additionally, the software can scan the memory image of
`itself one or more times, or continuously, to ensure that
`unexpected alterations do not occur.
`Certain modifications to the external copy of software are
`reflected in subtle changes to the environment in which the
`modified software will be executed (for example: the size of
`the code, if altered, will be reflected in the initial code size
`value supplied to the executing program being incorrect.).
`Additionally, certain modification to the operating system
`and environment of said software can also be monitored (for
`example: certain interrupt vector table pointers in Intel-
`processor applications) to detect unexpected changes by
`rogue software. These changes can also be detected to
`prevent tampering.
`Once tampering is detected, program flow-of-control
`needs to be changed so that
`the potential compromise
`associated with ID-Data theft is avoided. This may be the
`security-enhanced program terminating with a message indi-
`cating that its integrity has been compromised before all of
`the ID Data is entered. Alternatively, the fact that tampering
`has been detected may be kept secret and the ID-Data
`retrieved, however, immediately upon retrieval, the ID-Data
`entered can be invalidated thus preventing access to that
`which the now potentially compromised ID-Data would
`have otherwise allowed. This latter method allows for the
`
`possibility of security-enhanced software informing remote
`or other authorities that tampering was detected and possibly
`other information, such as what specifically was altered and
`by whom. Care must be taken to ensure the integrity of the
`“remote-informing” code before ID-Data entry is permitted.
`
`Aspect 4 Preventing Execution-Tracing
`
`Apart from “spoofing” (described in aspect 5 hereafter)
`the last resort of a rogue who is prevented from disassembly,
`tampering, and eavesdropping on software is to trace the
`execution of said software in order to facilitate the compro-
`mise of its security. Hampering tracing (tracing, is some-
`times called debugging) prevents this.
`There are numerous methods of detecting a debug-
`environment (ie: when tracing is taking place). When com-
`bined with decryption and tamper-protection as hereinbefore
`described, it makes the rogues task of detecting and bypass-
`ing debug-detection extremely difficult. Reference and
`examples to Intel and MS-DOS environments follow
`hereafter, although it will be apparent to one skilled in the art
`that
`these and similar methods are applicable on other
`platforms.
`Standard Intel x86 interrupts 1 and 3 are used by debug-
`gers to facilitate code tracing. By utilising these interrupts
`
`000010
`
`000010
`
`

`
`6,006,328
`
`7
`
`(which are not normally used by normal applications) in
`security-enhanced software,
`it hampers debugging, since
`built-in debugging functions are now not automatically
`available.
`
`Monitoring the system timer to determine if software
`execution has spent too long accomplishing certain tasks can
`detect a situation where code tracing has been in effect and
`a breakpoint was reached.
`Disabling the keyboard will hamper debuggers, since
`tracing instructions are usually issued from the keyboard.
`Similarly, disabling other places from where tracing instruc-
`tions are usually issued (eg: serial ports, printer ports, and
`mouse) or displayed (eg: screen) will also hamper tracing.
`System interrupts can be re-vectored for use within the
`secure software to perform tasks not usually performed by
`those interrupts. Debuggers usually rely upon system inter-
`rupts also, so to do this would usually disable or destroy a
`debugger being used to trace the software. Disabling inter-
`rupts and performing timing-sensitive instructions between
`them will further hamper debugging. When tracing software,
`instructions are usually executed one-at-a-time in order for
`the user to understand their operation. Many system inter-
`rupts must occur regularly (eg: timer and memory re-fresh
`operations), so debuggers usually do not disable interrupts
`even when they encounter an interrupt-disabling instruction.
`If timers and the like are re-vectored in two separate stages,
`any timer (etc) interrupt occurring in between the two stages
`will fail, and usually crash the computer. Further, interrupts
`can be disabled or enabled using obscure means (with
`flag-altering instructions for example) to hamper tracing.
`Discretely testing the status of disabled or enabled system
`facilities (eg. interrupts, keyboard, vector-pointers) to ensure
`that a debug environment has not altered or by-passed them
`will seriously hamper tracing also.
`Certain computer processors have instruction caches. In
`some circumstances, it is possible to alter the instructions
`immediately before the CPU encounters them, but
`the
`altered instruction will not be executed normally because the
`cache copy has the “old” one still. In debug environments,
`the cache is usually flushed, so any altered instructions will
`actually be executed. This again hampers tracing.
`Using strong cryptographic schemes such as DES “(Data
`Encryption Standard)”, or RSA “(RIVEST, SHAMIR,
`ADELMAN, Algorithm) ” or
`the like will present
`the
`examination of any decryption routines from revealing a
`simple patch to disable said routines. When tracing software,
`the program stack is usually used by the debugger either
`during the tracing operations or at other times. This is easily
`detected, and by using the area of the stack which will be
`destroyed by unexpected stack-use for code or critical data,
`software can be designed to self-destruct in this situation.
`Scanning the command environment and the execution
`instruction can detect the execution of software by unusual
`means. Searching for “DEBUG” in the command line, or
`scanning memory for known debuggers for example will
`detect
`tracing. Additional, by detecting which operating
`system process initiated the load of the software, unexpected
`processes (eg: debuggers) can be detected.
`Monitoring system buffers (eg:
`the key board memory
`buffer) or hardware (eg: the keyboard circuitry and internal
`buffers) for unexpected use (eg: keyboard input and pro-
`cessing is occurring when the software is not requesting it)
`will also detect debuggers, which usually rely in part on
`system functions in order to operate.
`Building a process or multiple processes which are tra-
`ditionally difficult to trace, such as a resident or child process
`
`8
`which executes during system interrupts or after the parent
`process has terminated will again hamper tracing.
`Bypassing system routines (eg:
`in DOS, using direct
`memory writes instead of DOS system calls to revector
`interrupts) will further hamper debugging and rogue soft-
`ware monitoring, as will unravelling loop constructs (which
`will make tracing long and cumbersome). Code checksums
`and operating-system checks (eg: interrupt table pointers)
`can be designed to detect debug-breakpoint
`instruction
`inserts or other modifications. Using the result of the check-
`sum for some obscure purpose (eg: decryption, or (much
`later) control-flow changes) will further hamper tracing.
`It will be apparent to one skilled in the art of low-level
`software programming that a combination of techniques to
`detect, prevent, and mislead tracing will provide a mecha-
`nism making tracing very difficult, if not impossible. At the
`very least, it will require an expert with very expensive tools
`and perhaps some understanding of the original software
`design a very long time to make any debugging progress—a
`situation which is recognised in military software security
`accrediation worldwide as highly desirable.
`
`Aspect 5 Ensuring Authenticity
`In accordance with an aspect of the present invention
`there is provided a method of providing for a secure entry of
`ID-Data in a computer system comprising activating a visual
`display or animation and/or audio feedback (hereinafter
`called an audio/visual component) as part of said secure
`entry of ID-Data so as to hamper emulation of said secure
`entry process. Preferably, the animation includes feedback
`portions as part of the ID-Data entry process. Preferably, the
`animation is repeatable and varied in accordance with the
`information entered. The animation preferably comprises
`2.5D or 3D animation and includes animation of any
`ID-Data input.
`Preferably, the animation is designed to tax the computer
`resources utilised and thereby making any forgery thereof
`more difficult.
`
`It will be apparent to one skilled in the art of low-level
`software programming that the five aspects described herein
`may be combined to provide substantially stronger security
`than any aspect taken on its own. For instance, to combine
`tamper-detection with encryption, the precalculated check-
`data as derived during tamper-detection described herein-
`before may actually be one part of the decryption-key which
`is required to successfully decrypt the remaining executable
`software. If prevention-of-tracing and environment charac-
`teristics (including debugger detection as described
`hereafter) are additional portions of said decryption-key, it
`makes the determination of said decryption-key by any
`person or computer program other than the secure original
`an extremely difficult, if not impossible, task.
`Further, it will also be apparent to one skilled in the art of
`low-level software programming that a simple construct
`such as a JNE to alter program flow-of-control after tam-
`pering has been detected is insufficient, since the JNE
`construct
`itself is subject
`to tampering. The decryption
`process described hereinbefore is preferable since there is no
`single point of alternation that can possibly yield a tampered
`executable that would execute. Indeed, the executable pro-
`tected with encryption will not even be transformed into its
`intended form if tampering is detected.
`GENERAL DESCRIPTION OF PREFERRED
`
`EMBODIMENT(S)
`Notwithstanding any other forms which may fall within
`the scope of the present invention, preferred forms of the
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`00001 1
`
`000011
`
`

`
`@006328
`
`9
`invention will now be described, by way of example only,
`with references to the accompanying drawings.
`In the preferred embodiment of the present invention the
`user interface for
`the acquiring of ID-Data is secured
`whereby the duplication of the interface is rendered math-
`ematically complex such that cipher-code breaking tech-
`niques are required to produce a counterfeit
`look-alike
`interface. By making the authentication interface (ie:
`ID-Data entry screen—for example: a logon screen or a
`screen for entering credit card details) unable to be
`emulated, tampered with, or reversed engineered, the appli-
`cation program allows for a higher degree of security and
`authenticity even in insecure environments such as the
`Internet or home software applications. Referring now to
`FIG. 2, there is illustrated a classic form of rogue attack on
`a computer system. In this form of rogue attack, a rogue’s
`“spoof” program 22 is inserted between application software
`16 and the user 23. The application 16 normally has a
`portion 24 devoted to ID-Data entry and verification or the
`entry of commercially sensitive information (including pass-
`words etc) to the application in addition to the application
`code 25. The spoof program 22 is designed to exactly reflect
`the presented user interface of ID-Data entry code 24 to the
`user. The user 23 is then fooled into utilising the masquer-
`ading spoof program 22 as if it was the application 16.
`Hence the user can be tricked into divulging secret infor-
`mation to the spoof program 22. An example may include a
`classic “login spoof” wherein the spoof program 22 prints
`the login prompt (ie: ID-Data entry) message on the screen
`and the user mistakes the login prompt for a legitimate one,
`supplying a user name and password to this program 22
`which records this information as well as passing it on to the
`login code 24 of application 15 so as not to arouse the
`suspicion of user 23—or by issuing a message, such as
`“incorrect password, please try again” and then passing
`control to the login code 24 of application 16.
`Referring now to FIG. 4, there is illustrated a relatively
`new form of rogue attack 40. This form of attach proceeds
`similarity to the spoof attack of FIG. 2, with the following
`difference. Instead of a spoof program 22, a rogue program
`41 is inserted which secretly eavesdrops on ID-Data entry
`code 24, or on application code 25, or on operating system
`17, or on h

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket