WO1997004394A1 - Systeme d'authentification, de protection et de securite pour logiciel informatique - Google Patents
Systeme d'authentification, de protection et de securite pour logiciel informatique Download PDFInfo
- Publication number
- WO1997004394A1 WO1997004394A1 PCT/AU1996/000440 AU9600440W WO9704394A1 WO 1997004394 A1 WO1997004394 A1 WO 1997004394A1 AU 9600440 W AU9600440 W AU 9600440W WO 9704394 A1 WO9704394 A1 WO 9704394A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- code
- software
- executable
- wherem
- entry process
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2149—Restricted operating environment
Definitions
- the present mvention relates to a computer program havmg enhanced security features, and also to a system and method for enhancing the security features of a computer program
- the present mvention relates to such a program, and the system and method for creatmg the program, havmg mcreased security features to prevent ID-Data (as defined hereafter) eavesdroppmg and/or theft and/or to ensure authenticity
- ID-Data will be used to refer to the abovementioned identification, authentication or similar data, excluding ID-Data which is valid only for a smgle use, or which is designed to expire at regular intervals of less than two mmutes
- Viruses, Termmate-and-stay-reside ⁇ t programs (TSRs), co-resident software, multithreaded operatmg system processes, Trojan Horses, Worms, Hackers, Spoof programs, key-press password capturers, macro-recorders, sniffers, and the like can be effective at stealing ID-Data and are examples of (a) rogue software or (b) people capable of subverting secu ⁇ ty software or (c) software which can be configured for illegitimate purposes.
- the term rogue software will be used to refer to software or subversions such as the abovementioned (a) (b) and (c), used for the purpose of stealing ID-Data.
- rogue software when used herein also includes software or other means used to tamper with other software.
- tampering is defined hereafter.
- rogue software There are many ways to introduce rogue software into a computer system. Viruses spread automatically by introducing 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).
- 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.
- eavesdropping will be used to refer to the monitoring of a computer to record ID-Data.
- 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 mclude a user's password and other sensitive information which an organisation would obviously wish to protect.
- 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 techniques to alter existing computer software in order to steal ID- Data from it, or may attach itself to existmg computer software (as is the case with many con ⁇ uter viruses).
- tampering will be used to refer to die abovementioned modification of computer software. Tampering may take place either locally (within a users PC) or remotely (for example: at one ofthe points which a computer program passes through as it is being download).
- counterfeit software can be substituted for legitimate software.
- the counterfeit will appear real to a computer user, but actuaUy 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 users suspicion.
- This invention describes a process which substantially enhances the security of computer software (hereafter refe ⁇ ed to as the improved process) and 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 existmg vulnerable (to rogue software eavesdropping or attack) software or operating system code with secure equivalents which utilise anti-spy techniques (as described later in this document).
- the improved process also consists of including computer code to prevent de- compilation, reverse-engineering, and disassembly by the inclusion of obfuscating code inserts, and the use of executable encryption.
- the improved process also consists of includmg code to prevent execution-tracing and debugging by the use of code designed to detect and prevent these operations.
- 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.
- 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 apphcation code updated with the prefe ⁇ ed embodiment
- Fig.4 illustrates the known operation of a rogue eavesdropping program
- Fig.5 illustrates the interaction of the components ofthe updated application
- Fig.6 illustrates the general structure of the prefe ⁇ ed embodiment ofthe 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 ofthe new.exe executable
- Fig.12 illustrates a second stage of execution ofthe new.exe executable file
- Fig.13 illustrates a third stage of execution ofthe new.exe executable file.
- the present invention has general applicability to many different operating systems including Microsoft DOS (Trade Mark), Apple Macintosh Operating Svstem, Unix OTrade Mark) etc.
- Microsoft DOS Trade Mark
- Apple Macintosh Operating Svstem Unix OTrade Mark
- Security is provided by (a) hampering examination of software-code or operatmg system code or parts thereof through the use ofthe encryption or partial encryption of said code, (b) preventing the disassembly of said code mrough 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 scanning 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
- 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 IS.
- die executable program 16 is subjected to modification, as will be described hereinafter, to ensure its integrity and improve its security.
- Aspect 1 Preventing eavesdropping.
- replacement routines may communicate directly with the hardware ofthe 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 apphcation buffers.
- Aspect 2 Preventing disassembly and examination. As hereinbefore described, it is desirable to hamper disassembly (or de-compilation or reverse engineering) to protect software against eavesdroppmg 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 foUowing unconditional jump instructions (for example, Intel IMP or CLC/JNC combmation or CALL (without a retum 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 wiU cause subsequent op ⁇ codes to be erroneously disassembled (for example, the Intel OxEA prefix wiU cause disassembly of the subsequent 4 op-codes to be inconect, displaying them as the offset to the JMP instruction indicated by the OxEA prefix instead ofthe instructions they actuaUy represent).
- unconditional jump instructions for example, Intel IMP or CLC/JNC combmation or CALL (without a retum expected) or any flow-of-control altering instruction which is known not to return to the usual place
- wiU cause subsequent op ⁇ codes to be
- Dummy instructions may also be mcluded to hamper disassembly by deliberately misleading a disassembler into believing a particular flow of control wiU occur, when in fact it wiU 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 prevention, this makes manual disassembly nearly impossible.
- the majority ofthe executable portions ofthe software can be encrypted for extemal storage.
- the decryption taking place in-memory after the software is loaded from extemal sources, under the control of a decryption 'header" which prevents its own tampering and disassembly etc. This makes manual and automatic disassembly nearly impossible, since the decryption should be designed to fail if tampering or tracing is detected.
- 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 extemal copy of software are reflected in subtle changes to the environment in which the modified software will be executed (for example: the size ofthe code, if altered, will be reflected in the initial code-size value supplied to the executing program being inco ⁇ ect ). Additionally, certain modification to the operatmg system and environment of said software can also be monitored (for example: certain interrupt vector table pointers in Intel-processor appUcations) to detect unexpected changes by rogue software. These changes can also be detected to prevent tampering.
- the five aspects described herein may be combined to provide substantiaUy stronger security than any aspect taken on its own.
- the precalculated check- data as derived during tamper-detection described hereinbefore may actuaUy be one part ofthe decryption-key which is required to successfuUy decrypt the remaining executable software.
- prevention-of-tracing and environment characteristics are additional portions of said decryption-key, it makes tiie determination of said decryption-key by any person or computer program other than tiie secure original an extremely difficult, if not impossible, task.
- Standard Intel x86 interrupts 1 and 3 are used by debuggers to facilitate code tracing. By utilising these interrupts (which are not normally used by normal applications) in security-enhanced software, it hampers debugging, since buih-in debugging functions are now not automatically available.
- Disabling the keyboard wiU hamper debuggers, since tracing instructions are usually issued from the keyboard. Similarly, disabling other places from where tracing instructions are usuaUy issued (eg: serial ports, printer ports, and mouse) or displayed (eg: screen) wiU also hamper tracing.
- tracing instructions are usuaUy issued (eg: serial ports, printer ports, and mouse) or displayed (eg: screen) wiU also hamper tracing.
- System interrupts can be re-vectored for use witiiin tiie secure software to perform tasks not usuaUy performed by those interrupts. Debuggers usually rely upon system interrupts also, so to do this would usuaUy disable or destroy a debugger being used to trace the software. Disabling interrupts and performing timing-sensitive instructions between them will further hamper debugging.
- tracing software instructions are usuaUy executed one-at-a-time in order for the user to understand tiieir operation. Many system interrupts must occur regularly (eg: timer and memory re-fresh operations), so debuggers usuaUy 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 mbetween tiie two stages wiU fail, and usuaUy crash the computer.
- interrupts can be disabled or enabled using obscure means (with flag-altering instructions for example) to hamper tracing.
- 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 ofthe 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 tiie command line, or scanning memory for known debuggers for example wiU detect tracing. Additionally, by detecting which operating system process initiated the load ofthe software, unexpected processes (eg: debuggers) can be detected.
- Monitoring system buffers eg: the keyboard memory buffer
- hardware eg: the keyboard circuity and intemal buffers
- debuggers which usuaUy rely in part on system functions in order to operate.
- Code checksums and operating-system checks can be designed to detect debug-breakpoint instruction inserts or other modifications. Using the result ofthe checksum for some obscure purpose (eg decryption, or (much later) control-flow changes) will further hamper tracmg
- Aspect 5 Ensuring authenticity.
- a method of providing for a secure entry of ID-Data m a computer system compnsmg 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
- tiie animation m cludes feedback portions as part ofthe ID-Data entry process
- the animation is repeatable and vaned m accordance with the mformation entered
- the animation preferably compnses 2 5D or 3D animation and mcludes animation of any ID-Data mput
- the animation is designed to tax the computer resources utilised and thereby makmg any forgery thereof more difficult
- the user interface for the acquiring of ID- Data is secured whereby the duplication ofthe interface is rendered mathematically complex such that cipher-code breakmg techniques are required to produce a counterfeit look-ahke interface
- the authentication interface ie ID-Data entry screen - for example a logon screen or a screen for ente ⁇ ng credit card details
- the application program allows for a higher degree of secu ⁇ ty and authenticity even m insecure environments such as the Intemet or home software applications
- a rogue's "spoof program 22 is inserted between application software 16 and the user 23
- the apphcation 16 normaUy has a portion 24 devoted to ID-Data entry and ve ⁇ fication or the entry of commercially sensitive mformation (including passwords etc) to the application m addition to the apphcation 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 mto utilising the masquerading spoof program 22 as if it was the apphcation 16
- the user can be tricked mto divulging secret mformation to the spoof program 22
- An example may mclude 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,
- rogue attack 40 there is iUustrated a relatively new form of rogue attack 40.
- This form of attack proceeds similarity to the spoof attack of Fig.2, with tiie foUowing difference.
- a rogue program 41 is inserted which secretly eavesdrops on ID-Data entry code 24, or on appUcation code 25, or on operating system 17, or on hardware 18 or elsewhere in order to steal sensitive information directly from tiie legitimate appUcation. Smce the legitimate appUcation is stiU actuaUy executing, the users suspicion is not aroused, since rogue program 41 is generaUy invisible to the user 23.
- executable program 16 may have been tampered with (as hereinbefore described) to reduce its security, aUeviating the necessity for tiie presence of rogue program 41.
- FIG.5 there is iUustrated in detail the structure of an appUcation 50 constructed in accordance with the preferred embodiment running on computer hardware 18.
- Fig.5 is similar to Fig.4 with tiie important difference that user 23 now communicates directly with secure drivers 51 which are part ofthe secure ID-Data entry program code 31 which is utilised by the security-enhanced (eg: tamper protected) application code 52. It can be seen that the user 23 no longer communicates with the operatmg system 17 or the unprotected computer hardware 18, thus the rogue program 41 can no longer eavesdrop on ID-Data.
- secure drivers 51 which are part ofthe secure ID-Data entry program code 31 which is utilised by the security-enhanced (eg: tamper protected) application code 52.
- Fig.3 there is iUustrated, in more general terms than Fig.5, the structure of an apphcation 30 constructed in accordance with the prefe ⁇ ed embodiment wherein secure ID-Data entry program code 31 is provided which is extremely difficult to replicate, eavesdrop upon or subvert.
- the secured ID- Data entry program code 31 can be created, utilising a number of different techniques.
- the executable portion ofthe secured ID-Data entry code can be protected agamst tracing, disassembly, tampering, viewing, reverse engineering, keyboard entry theft, eavesdropping, hot patching and other attacks by transforming the secured ID-Data entry program code 31 from its normal executable form 16 (Fig.2) to a corresponding secured form of executable (as hereinbefore described - refer aspects 1 to 4).
- These techniques are preferably appUed to the appUcation code 16 in general or less preferably SpecificaUy limited to the ID-Data entry portions 24 tiiereof.
- secure ID-Data entry program code 31 is itself created.
- This code 31 preferably comprises a complex graphical user interface series of screens and animation designed to make duplication by a rogue thereof extremely difficult.
- the complex user interface should include facilities to disable any frame buffer recording devices, the disablement occurring before each frame is displayed. Also, where a multi ⁇ tasking operating system is in use, or where context switching is enabled, switching out ofthe interface screen is preferably disabled or ID-Data entry procedures encrypted or terminated when the interface screen is swapped out.
- the images presented which form part ofthe ID-Data entry screens comprise complex 3D animation sequences having a high degree of complexity and extensive use of screen colours and screen resolution in addition to visual design so as to make copying tiiereof extremely difficult.
- the complex computer graphics can be created utilising standard techniques.
- Suitable 3D animation can mclude the introduction of shadows, the lighting of pseudo-3D animated objects, transparent or translucent objects, shiny, reflective, or mi ⁇ ored objects, gravitational effects in animated objects, single-image-random-dot- stereogram bitmaps or backdrops, translucent threads, effects, such as diffraction pattems, screen masks, backdrops, colour palette "animation", complex animated objects resistant to simple hidden- surface removal techniques known to those skilled in the art and directed to hindering duplication
- Thwarting attempts at compression ofthe ID-Data entry screens This can be achieved by having animation which has low visual entropy and having many graphical elements which are altered from frame to frame in a manner which is highly discernible to the human viewer.
- animation which has low visual entropy and having many graphical elements which are altered from frame to frame in a manner which is highly discernible to the human viewer.
- complex 3D computer imagery having low entropy or redundancy wiU require large amounts of storage space for a rogue attempt at duplication based on recording the screen output and therefore be more readily discernible to the user should this form of attack be mounted.
- the animation is further preferably designed to thwart a successful replay attack which is based on providing only a subset (limited number of frames) ofthe screen animation to a viewer. This can be achieved, for example, by the inclusion of several animated spheres which "bounce" around the screen and change colours in a manner that is recognisable to the viewing user but which is not readily repeatable.
- a replay of only a subset of tiie screen animations to the viewer wiU be highly evident in this case when, upon looping, the user is alerted to a problem when the animation "skips" or "jumps" and does not operate in a previously smooth manner. This makes it difficult for a rogue spoof program to copy the animation without including aU parts of it.
- the graphics presented can be customised to the input data entered.
- the information entered by a user can be rendered and or animated by the secure ID-Data entry program code 31 (Fig.3).
- the animation can be created letter by letter.
- each letter could be rendered differently depending on those characters previously typed.
- tiie letter "I” might appear as a large "barbers-pole” which spirals and changes colour, speed, size, and or position and is slightly transparent, thereby aUowing the animated seen which is a backdrop to the character to be discerned through the character itself.
- the letter "I” would only appear as the specific animated barbers pole that is does if tiie previous letters entered were "C", "H", and "R” respectively.
- a similarly effective animation technique is to produce only one graphical object after entry of each portion of ID-Data, sudi as a computer-generated human's face, but have the features of said face be determined by a hash or cryptographic function based upon the users input. For example, after entry ofthe ID-Data "CHRIS" (in tiiis example, the individual characters may not, themselves, be based on the abovementioned generation procedure) , a teenage girl's face with long blonde hair and blue eyes may be displayed. If the "S” was instead a "D", the face would be entirely different.
- the ID-Data used for producing an object for display should not be ID-Data which is designed not to appear on-screen when entered (eg: a password), since the display of a conesponding object would give a rogue information on which to base guesses ofthe secret ID-Data.
- the rogue programming the co ⁇ esponding spoof program shall have to crack the cryptographic scheme in order to get the selection of character animation correct for any generalised attack.
- a rogue will have to determine the algorithm for producing the face, since human beings are adept at recognising faces, and will immediately notice if the face displayed on the screen is incorrect.
- Such a technique allows for a mathematically secure, visual method to guarantee the authenticity ofthe software which generates the screen feedback.
- the user of the software is instructed to note their own particular animation sequence and to immediately discontinuing utilisation ofthe appUcation 30 should that sequence ever change.
- the user may also be instructed to contact a trusted person, such as the supplier or operator of tiie appUcation to confirm tiiat tiie animation sequence they witness is the authentic sequence intended by said supplier.
- the particular animation presented for a particular appUcation 30 can be further customised for each appUcation so as to be distinct (such as by the inco ⁇ oration ofthe applications name as part ofthe animated image).
- animated scene timing can be utilised, providing anti-looping and frame removal detection is stiU catered for.
- the animated scene timing aUows for a user to detect unexpected i ⁇ egularities in a frequently presented animated interface.
- some deUberate regularity such as the rhythmic convergence of some parts ofthe animation in one particular spot
- a rogue programming a spoof program shall also have to duphcate the preferably complex timing events necessary to accomplish tins convergence.
- the regular nature ofthe scene timing should be high enough so that tiie user expects to see certain events and thereby making it difficult for a rogue spoof program to copy the animation without including aU parts of it.
- aU ID-Data is immediately encrypted which makes recovery ofthe ID-Data by a rogue through analysis ofthe computer program memory difficult.
- public- key cryptographic methods eg: Elliptic-curve, RSA or Diffie-Hellman cryptography
- ti e cryptographic code to decrypt any sensitive mformation should rt be stolen in its encrypted form. Prohibiting all or most interrupts when data is to be entered and encrypting or hashing the sensitive information immediately so that it is only stored partially, or in an encrypted form, before re-enabling interrupts is one example of achieving this objective.
- analysis of a user's personal characteristics can be mcluded as part of the interface. This can include attempts at recognition of a user's typing style (duration of keypresses, delays between subsequent keys, choice of redundant keys, mouse usage characteristics, etc) or by additional authentication techniques, including smartcards, biometric inputs such as finger prints detectors etc.
- the graphical animation routines can be "watermarked” by the secure ID-Data entry program code in that "hidden” mformation may be inco ⁇ orated into the scene (for example "salted- checksums") to aUow careful analysis ofthe ou ⁇ ut of secure ID-Data entry program code 31 to distinguish between original graphics animation and counterfeit animation.
- the hidden information may be encoded in the least-significant bit of pixel data at selected locations ofthe animation.
- the user determinable sequence of animation can also extend to tiie provided audio animation .
- audio and other feedback techniques including music and speaking tones can be played in response to particular key stroke combinations.
- the security ofthe appUcation 30 can, once again, be substantiaUy increased.
- the change in voice intonation will be readily "learnt" by a user and thereby further inhibit a rogue's ability to duplicate the same sequence of sounds or voices .
- the encoding ofthe voice system should be in an encrypted form.
- a notification message is preferably sent to a prosecuting body or the like where the appUcation 30 is currently, or later becomes connected to a network such as the Intemet, or by other means (eg: via Modem or by including coded information in pubUc or other files).
- a secure means of activation can be inco ⁇ orated into the chart appUcation 30.
- the host and cUent intercommunication can issue chaUenge and response code authentication and verification utilising cryptographic systems such as public-key encryption and/or other standard means of overcoming data replay attacks and other threats designed to trick the secure client appUcation 30 into activation.
- the standard executable 16 normally comprises a header section 71, a code section 72, and a data section 73.
- the header section 71 normaUy stores a standard set of mformation required by the computer operatmg system 17 (Fig.l) for running ofthe executable 16. This can include relocation data, code size etc.
- the code section 72 is normally provided for storing the "algorithmic" portion ofthe code.
- the data section 73 normally is utilised to store the data, such as constants, or overlays 92 utilised by the code section 72.
- Fig.6 the prefe ⁇ ed embodiment of an applicator program 60 is shown which takes as its input the executable program 16 and performs an obfuscating step 61, a ciphering step 62 and an anti-key press and authentication step 63 (described hereafter) which perform various transformations on the executable program 16 to produce a new executable program 30.
- the obfuscating step 61 modifies the header 71 (Fig. 7) ofthe executable 16 in addition to inserting loading code which wiU be described hereinafter.
- the cipher step 62 encrypts tiie existing executable 16 and calculates check data (eg: a checksum) for the encrypted executable.
- the anti-key press and authentication step 63 replaces various insecure system caUs wrth safe equivalent code and preferably inserts code to graphicaUy represent the integrity of said executable program.
- the newly formed executable 30 (new.exe) can be then stored on disk and the appUcator program 60 completed, tiie new executable 30 replacing tiie old executable program 16.
- the replaced executable 30 executes the obfuscating code, previously inserted by appUcator 60.
- the obfuscating code initiaUy decrypts the executable program and vaUdates the stored check-data before re-executing the decrypted executable.
- FIG.9 there is shown the structure 90 of an executable ".EXE" program in
- MS-DOS as normally stored on disk.
- the structure 90 mcludes a header 71, otherwise known in MS-DOS terminology as the program segment prefix (PSP).
- PSP program segment prefix
- This is normally foUowed by a relocation table 91 which contains a Ust of pointers to variables within a code area 72 which must be updated wrth an offset address when the program is loaded into a particular area of memory.
- the operation ofthe relocation table is weU known to those skiUed in the art of systems prograrnming.
- the next portion of structure 90 is tiie code area 72 which contains the machine instructions for operation on tiie x86 microprocessor.
- This is foUowed by a program data area 73 which contams the data for code area 72.
- overlays 92 which contain code which can be utihsed in a known manner.
- Fig.8 there is shown the structure of EXE file header 71 in more detail.
- the table of Fig.8 being reproduced from page 750 ofthe above mentioned Tischer reference.
- the header 71 mcludes a number of fields including, for example, a pointer 81 to the start of the code 72 (Fig. 7) and a pointer 82 to the relocation table 91 (Fig.9).
- the appUcator program 60 (Fig. 6) proceeds by means ofthe foUowing steps:
- the executable program 16 is opened for reading and a determination made of its size.
- the relocation table 91 is then read into the memory of tiie appUcator program 60.
- tiie relocation table 91 consists of a series ofthe pointers to positions within code segment 72 which are required to be updated when loading the program.exe file into memory for execution.
- the relocation table is sorted 93 by address before being written out to the new.exe executable file at position 102.
- the relocation table 91 consists of a series of pointers into code area
- code portion 95 Upon finding code portion 94, the code portion 95, also denoted part A is encrypted and copied across to form new code portion 103. Code portion 94 is then encrypted and copied to an area 105 of new.exe 30. The netsafe 1 code 104 is then inserted by appUcator 60. Code portion 96, also denoted part C is encrypted and copied across to form code portion 106. Data portion 73 and overlay portion 92 are copied into new.exe 30 as shown. A second portion of obfuscating code, denoted "netsafe 2" 107, the contents of which will be described hereinafter, is then inserted after overlays 92 and before code portion part B 105.
- netsafe 2 A second portion of obfuscating code
- header 101 is then updated to reflect the altered layout ofnew.exe executable 30. AdditionaUy, the initial address 109 of execution stored in header 101 is altered to be the start of netsafe 1 portion 104.
- code portions 103, 106 and 105 are subjected to encryption or encipherment in accordance wrth step 62 of Fig.6.
- the encryption scheme utilised can be subjected to substantial variation.
- the DES standard encryption scheme was utilised This scheme reUes on a fifty-six bit key for encryption and decryption and is weU known in tiie art.
- a number of different methods can be utilised to store the key.
- the prefe ⁇ ed method is to spread portions ofthe key to different positions within the executable 30.
- bits ofthe key can be stored within the netsafe 1 code 104 and netsafe 2 code 107.
- bits ofthe key can be stored within header portion 101.
- bits ofthe key can be stored in tiie condition codes which are a consequence of execution of various instructions within netsafe 1 area 104 and netsafe 2 area 107 and/or tiie operating system 17 (Fig.5), with the overaU requirement being that the key can be later extracted using a predetermmed algorithm.
- the next step is to patch tiie address ofthe start of code area 72 and netsafe 2 code area 107 into the required locations within netsafe 1 area 104.
- the netsafe 1 area is then written to the file containing new.exe executable 30.
- netsafe 2 area 107 is responsible for loading code portion 105 over tiie top of netsafe 1 area 104. Therefore, it is necessary to write the relevant addresses ofthe start and end of code portion 94 to the required position within netsafe 2 area 107.
- netsafe 2 area 107 is also responsible for decrypting the encrypted portions of codes 103, 104, 105, 106, and 107 and hence tiie netsafe 2 area 107 must also store this combined code size for later use on decryption .
- netsafe code areas 104 and 107 contain code to decrypt the encrypted areas ofthe new.exe 30, to repatch code portion 105 back to its original position, and to replace potentiaUy insecure routines or eas ⁇ y spoofed screens normaUy utilised by the apphcation (eg: unsafe keyboard drivers) wrth an altemative safe form of routine.
- the executable Upon execution of tiie new.exe executable 30, the executable starts at the start of netsafe 1, area 104 (Fig.11), as this address has been previously patched into position 109 (fig.10) of header 101 (Fig.10). The netsafe 1 area 104 then performs the followmg steps (Al) to (AIO):
- the first step is to disable aU the interrupts apart from those necessary for continued operation ofthe computer device 18 (Fig. 1) (for example, memory refresh cannot be disabled).
- the disabling of interrupts mcludes the disabling ofthe keyboard interrupt in order to stop amateur "code snoopers" from determinmg the operation ofthe code area 104.
- interrupt trap addresses are then altered in a two stage process.
- the first stage resets a first part ofthe SEG:OFF address format and occurs at this point with a second stage occurring at a later time as will be further described herein below.
- any code snooper will be further confused as said trap addresses wiU initiaUy be garbage.
- Fig. 11 there is shown the standard format ofthe executable new.exe 30 when executing in memory.
- an executing program under the MS-DOS system will include a stack 111 and work space 112.
- a memory allocation (MaUoc) call is then done to set aside an area 113 for the loading in of tiie netsafe 2 code 107 of Fig.10.
- the disk copy ofnew.exe 30 (having the format shown in Fig.10) is tiien opened by the netsafe 1 code 115 and an encrypted copy of netsafe 2 code 107 (Fig.10) is then loaded in from the disk file, decrypted and stored in memory area 113.
- the relocatable pointers of he code contained within the netsafe 2 code 113 are then updated to reflect tiie position ofthe executable in memory.
- the code area netsafe 2, 113 then performs the followmg steps (Bl) to (B4):
- the netsafe 2 area 113 includes a number of keyboard routines which are preferably stored in an encrypted format. Therefore, the next step is to apply the decryption to any ofthe encrypted areas of netsafe 2 code area 113. After decryption, the netsafe 2 area 113 is checksummed and the result is tested against a prestored checksum to ensure tiie integrity of netsafe 2 area 113. (B3) The disk copy ofthe new.exe is then again read in and checked agamst prestored check data to ensure that it has not been changed. Additionally, an attempt is made to read past the end of file ofthe disk copy ofnew.exe 30 (Fig.10) to ensure that no extension (eg: viral) has occu ⁇ ed.
- no extension eg: viral
- keyboard routines 51 wrth the keyboard hardware being inte ⁇ ogated directly by keyboard routines 51 to retum mformation to the calling program.
- Keyboard routines 51 m clude a copy ofthe co ⁇ ect interrupt vector addresses for each keyboard routine and each time they are called, a check is made ofthe interrupt table to ensure that it has not been altered.
- keyboard routines 51 protect the keyboard hardware by issuing controller reset or similar commands to flush the keyboard data out ofthe circuitry after said data is retrieved to prevent hardware eavesdroppmg, or routines 51 utilise the protected mechanisms ofthe central processor to protect said hardware from eavesdroppmg.
- interrupt 21h an MS-DOS standard
- This interrupt is also revectored to a co ⁇ esponding area of routines 51.
- the termination code of keyboard routine area 51 restores the correct interrupt pointers in interrupt table 131 to point to the MS-DOS operating system 17, and clears the no-longer-needed program and data from memory before returning to the DOS operatmg system by calling the real interrupt 21.
- Claims 1,2, and 3 are independent.
- the invention in claim 1 covers any high security software protecting ID-Data by utihsing anti-spy techniques, and tamper-protecting itself.
- Claim 2 is for a metiiod of producing high security software, such as, but not Umited to, that in claim 1.
- Claim 3 is for a new process of graphically representing the authenticity of high security software, such as, but not Umited to, that in claim 1 or produced by claim. 2.
- Claims 4, 5, 6, 7, 8, and 9 add prefe ⁇ ed components to the high-security enforcing functions of the software in claim 1.
- Claim 10 adds a tracing-prevention prefe ⁇ ed component to claim. 9
- counterfeiting i.e.: hampering the possibility that a fake copy of said interface can be successfully presented to a user to fool said user into entering information into the fake interface
- an interface against malicious (or otherwise) tampering, examination, emulation, and eavesdropping i.e.: hampering the possibility that a fake copy of said interface can be successfully presented to a user to fool said user into entering information into the fake interface
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
L'invention se rapporte à une méthode d'authentification graphique et à un procédé d'amélioration de la sécurité pour logiciel informatique, et à une méthode d'utilisation de l'authentification et de la sécurité. Le procédé assure une protection contre certaines intrusions sur logiciel exécutables par des personnes ou un autre logiciel sur l'ordinateur. On protège ainsi le logiciel contre les intrusions clandestines (surveillance du logiciel, des applications, du système d'exploitation, de disques, du clavier ou d'autres dispositifs visant à enregistrer (dérober) une identification, une authentification ou des données sensibles tels que les mots de passe, des identités d'utilisateurs, des numéros de cartes de crédit et des dates d'expiration, des numéros de compte en banque et des numéros d'identification personnels (PIN), de données de carte à mémoire, des informations biométriques telles que les données liées à une empreinte retiniène ou digitale, ou bien encore des clés de chiffrement). La protection est également assurée contre les tentatives locales et à distance de fraude (modification du logiciel pour éliminer, désactiver ou compromettre des fonctions de sécurité) d'examen (visite du programme exécutable généralement dans le but de porter atteinte à la sécurité du programme), d'observation (suivi pas à pas du fonctionnement d'un programme exécutable), et de perturbation délibérée (substitution de logiciel falsifié pour émuler l'interface du logiciel authentique afin de déjouer la sécurité. Ces tentatives relèvent de la filouterie informatique, qui peut revêtir différentes formes (par exemple Cheveaux de Troie, pirates, virus, programmes résidents, logiel co-resident, systèmes d'exploitation multitransactionnels, programmes écrasant les données en mémoire, programmes espions, dispositifs de capture de mots de passe par manipulation de touches, enregistreurs de macros, programmes de surveillance et autres types de logiciels ou programmes de contournement). Les moyens de protection exécutables comprennent le chiffrement, le masquage, l'anti-intrusion, l'antifraude et l'autovérification, l'autocontrôle de durée de l'exécution et l'authentification audiovisuelle (fonctions à base de mathématiques, de chiffrement et de graphiques permettant à l'utilisateur de reconnaître immédiatement l'authenticité et l'intégrité du logiciel). La figure décrit les nombreux éléments proposés et leur interaction.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AUPN4186A AUPN418695A0 (en) | 1995-07-14 | 1995-07-14 | Computer security system |
AUPN4186 | 1995-07-14 | ||
AUPN9866 | 1996-05-15 | ||
AUPN9866A AUPN986696A0 (en) | 1996-05-15 | 1996-05-15 | Interface authentication system |
Publications (1)
Publication Number | Publication Date |
---|---|
WO1997004394A1 true WO1997004394A1 (fr) | 1997-02-06 |
Family
ID=25644994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/AU1996/000440 WO1997004394A1 (fr) | 1995-07-14 | 1996-07-12 | Systeme d'authentification, de protection et de securite pour logiciel informatique |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO1997004394A1 (fr) |
Cited By (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999001815A1 (fr) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Techniques d'obscurcissement pour augmenter la securite de logiciels |
EP0949574A2 (fr) * | 1998-03-25 | 1999-10-13 | Arachnid, Incorporated | Structures de segments multimedia personnalisées |
WO1999056196A1 (fr) * | 1998-04-30 | 1999-11-04 | Bindview Development Corporation | Securite informatique |
EP1000482A1 (fr) * | 1997-08-06 | 2000-05-17 | Intel Corporation | Ensemble de cellules fournissant une memoire secrete non permanente au moyen d'un cycle de mutation |
EP1010291A1 (fr) * | 1997-09-05 | 2000-06-21 | Intel Corporation | Lecteur inviolable pour contenu crypte |
EP1018236A1 (fr) * | 1997-09-05 | 2000-07-12 | Intel Corporation | Dispositif a module inviolable et procedes |
EP1020049A1 (fr) * | 1997-09-05 | 2000-07-19 | Intel Corporation | Procedes et appareil garantissant l'inviolabilite |
WO2000065444A1 (fr) * | 1999-04-28 | 2000-11-02 | Thomas Probert | Techniques de codage d'information en code machine |
WO2000065442A1 (fr) * | 1999-04-23 | 2000-11-02 | Giesecke & Devrient Gmbh | Protection d'une unite centrale d'ordinateur contre des manipulations exterieures |
WO2000072112A2 (fr) * | 1999-05-12 | 2000-11-30 | Fraunhofer Crcg, Inc. | Dissimulation d'un code executable |
WO2000077597A1 (fr) * | 1999-06-09 | 2000-12-21 | Cloakware Corporation | Codage de logiciel infalsifiable |
US6237137B1 (en) | 1997-10-15 | 2001-05-22 | Dell Usa, L.P. | Method and system for preventing unauthorized access to a computer program |
US6256737B1 (en) | 1999-03-09 | 2001-07-03 | Bionetrix Systems Corporation | System, method and computer program product for allowing access to enterprise resources using biometric devices |
US6334189B1 (en) | 1997-12-05 | 2001-12-25 | Jamama, Llc | Use of pseudocode to protect software from unauthorized use |
WO2001099034A2 (fr) * | 2000-06-21 | 2001-12-27 | Aladdin Knowledge Systems; Ltd. | Systeme pour l'obscurcissement de code informatique lors du desassemblage |
US6480959B1 (en) | 1997-12-05 | 2002-11-12 | Jamama, Llc | Software system and associated methods for controlling the use of computer programs |
US6643775B1 (en) | 1997-12-05 | 2003-11-04 | Jamama, Llc | Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications |
GB2391341A (en) * | 2002-07-31 | 2004-02-04 | Hewlett Packard Co | A method of validating the rights of a user to participate in an interactive computer environment |
US6728219B1 (en) | 1999-11-15 | 2004-04-27 | Networks Associates Technology, Inc. | Graphical user interface system and method for visually gauging network performance |
US6779114B1 (en) | 1999-08-19 | 2004-08-17 | Cloakware Corporation | Tamper resistant software-control flow encoding |
US7140005B2 (en) * | 1998-12-21 | 2006-11-21 | Intel Corporation | Method and apparatus to test an instruction sequence |
US7240363B1 (en) * | 1999-10-06 | 2007-07-03 | Ellingson Robert E | System and method for thwarting identity theft and other identity misrepresentations |
US7260845B2 (en) * | 2001-01-09 | 2007-08-21 | Gabriel Kedma | Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems |
US7305562B1 (en) | 1999-03-09 | 2007-12-04 | Citibank, N.A. | System, method and computer program product for an authentication management infrastructure |
US7383569B1 (en) | 1998-03-02 | 2008-06-03 | Computer Associates Think, Inc. | Method and agent for the protection against the unauthorized use of computer resources |
WO2007147495A3 (fr) * | 2006-06-21 | 2008-08-28 | Wibu Systems Ag | Procédé et système pour la détection d'intrusion |
US7421586B2 (en) | 1999-05-12 | 2008-09-02 | Fraunhofer Gesselschaft | Protecting mobile code against malicious hosts |
US7430670B1 (en) | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US7441263B1 (en) | 2000-03-23 | 2008-10-21 | Citibank, N.A. | System, method and computer program product for providing unified authentication services for online applications |
US7770016B2 (en) | 1999-07-29 | 2010-08-03 | Intertrust Technologies Corporation | Systems and methods for watermarking software and other media |
US7877613B2 (en) | 2002-09-04 | 2011-01-25 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Protecting mobile code against malicious hosts |
US7950048B2 (en) * | 2000-03-29 | 2011-05-24 | Microsoft Corporation | Methods and arrangements for limiting access to computer controlled functions and devices |
US8016189B2 (en) | 1996-12-04 | 2011-09-13 | Otomaku Properties Ltd., L.L.C. | Electronic transaction systems and methods therefor |
US8136148B1 (en) | 2008-04-09 | 2012-03-13 | Bank Of America Corporation | Reusable authentication experience tool |
FR2986124A1 (fr) * | 2012-01-25 | 2013-07-26 | Ercom Engineering Reseaux Comm | Procede d'authentification d'un dispositif comprenant un processeur et une carte a puce par generation d'un motif |
EP3185194A1 (fr) * | 2015-12-24 | 2017-06-28 | Gemalto Sa | Procédé et système pour améliorer la sécurité d'une transaction |
US9843447B1 (en) | 1999-09-09 | 2017-12-12 | Secure Axcess Llc | Authenticating electronic content |
US10237073B2 (en) | 2015-01-19 | 2019-03-19 | InAuth, Inc. | Systems and methods for trusted path secure communication |
CN110162937A (zh) * | 2018-02-09 | 2019-08-23 | 黄冈职业技术学院 | 基于网络通讯实现计算机软件保护的方法 |
CN113343234A (zh) * | 2021-06-10 | 2021-09-03 | 支付宝(杭州)信息技术有限公司 | 对代码安全性进行可信检查的方法及装置 |
US11880832B2 (en) | 2015-12-24 | 2024-01-23 | Thales Dis France Sas | Method and system for enhancing the security of a transaction |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2600184A1 (fr) * | 1986-06-17 | 1987-12-18 | Vo Quang Tuyen | Procede de protection d'un logiciel informatique et cle electronique pour la mise en oeuvre de ce procede |
WO1988003287A1 (fr) * | 1986-10-24 | 1988-05-05 | Harcom Security Systems Corporation | Systeme de securite pour ordinateur |
EP0326700A2 (fr) * | 1988-02-01 | 1989-08-09 | International Business Machines Corporation | Mécanisme de voie de sécurité pour des environnements de terminal virtuel |
US4864494A (en) * | 1986-03-21 | 1989-09-05 | Computerized Data Ssytems For Mfg., Inc. | Software usage authorization system with key for decrypting/re-encrypting/re-transmitting moving target security codes from protected software |
WO1992014209A1 (fr) * | 1991-02-05 | 1992-08-20 | Toven Technologies Inc. | Appareil de chiffrement pour un ordinateur |
EP0568438A1 (fr) * | 1992-04-27 | 1993-11-03 | Gemplus Card International | Procédé de sécurisation de programmes exécutables contre l'utilisation par une personne non habilitée et système sécurisé pour la mise en oeuvre du procédé |
-
1996
- 1996-07-12 WO PCT/AU1996/000440 patent/WO1997004394A1/fr active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4864494A (en) * | 1986-03-21 | 1989-09-05 | Computerized Data Ssytems For Mfg., Inc. | Software usage authorization system with key for decrypting/re-encrypting/re-transmitting moving target security codes from protected software |
FR2600184A1 (fr) * | 1986-06-17 | 1987-12-18 | Vo Quang Tuyen | Procede de protection d'un logiciel informatique et cle electronique pour la mise en oeuvre de ce procede |
WO1988003287A1 (fr) * | 1986-10-24 | 1988-05-05 | Harcom Security Systems Corporation | Systeme de securite pour ordinateur |
EP0326700A2 (fr) * | 1988-02-01 | 1989-08-09 | International Business Machines Corporation | Mécanisme de voie de sécurité pour des environnements de terminal virtuel |
WO1992014209A1 (fr) * | 1991-02-05 | 1992-08-20 | Toven Technologies Inc. | Appareil de chiffrement pour un ordinateur |
EP0568438A1 (fr) * | 1992-04-27 | 1993-11-03 | Gemplus Card International | Procédé de sécurisation de programmes exécutables contre l'utilisation par une personne non habilitée et système sécurisé pour la mise en oeuvre du procédé |
Non-Patent Citations (2)
Title |
---|
IEEE COMPUTER, Vol. 28, No. 1, January 1995, LOMAS et al., "To Whom am I Speaking", pp. 50-54. * |
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, Vol. 21, No. 3, March 1995, ILGUN et al., "State Transition Analysis: A Rule-Based Intrusion Detection Approach", pp. 181-199. * |
Cited By (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8225089B2 (en) | 1996-12-04 | 2012-07-17 | Otomaku Properties Ltd., L.L.C. | Electronic transaction systems utilizing a PEAD and a private key |
US8016189B2 (en) | 1996-12-04 | 2011-09-13 | Otomaku Properties Ltd., L.L.C. | Electronic transaction systems and methods therefor |
US6668325B1 (en) | 1997-06-09 | 2003-12-23 | Intertrust Technologies | Obfuscation techniques for enhancing software security |
WO1999001815A1 (fr) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Techniques d'obscurcissement pour augmenter la securite de logiciels |
EP1000482A4 (fr) * | 1997-08-06 | 2001-11-14 | Intel Corp | Ensemble de cellules fournissant une memoire secrete non permanente au moyen d'un cycle de mutation |
EP1000482A1 (fr) * | 1997-08-06 | 2000-05-17 | Intel Corporation | Ensemble de cellules fournissant une memoire secrete non permanente au moyen d'un cycle de mutation |
EP2131524A2 (fr) | 1997-09-05 | 2009-12-09 | Intel Corporation | Procédés inviolables et appareil |
EP1020049A1 (fr) * | 1997-09-05 | 2000-07-19 | Intel Corporation | Procedes et appareil garantissant l'inviolabilite |
EP1020049A4 (fr) * | 1997-09-05 | 2000-10-11 | Intel Corp | Procedes et appareil garantissant l'inviolabilite |
EP1018236A4 (fr) * | 1997-09-05 | 2000-10-11 | Intel Corp | Dispositif a module inviolable et procedes |
JP2001516908A (ja) * | 1997-09-05 | 2001-10-02 | インテル・コーポレーション | 不正な侵入を防ぐ方法および装置 |
EP1018236A1 (fr) * | 1997-09-05 | 2000-07-12 | Intel Corporation | Dispositif a module inviolable et procedes |
EP1010291A1 (fr) * | 1997-09-05 | 2000-06-21 | Intel Corporation | Lecteur inviolable pour contenu crypte |
EP2131524A3 (fr) * | 1997-09-05 | 2010-02-17 | Intel Corporation | Procédés inviolables et appareil |
EP1010291A4 (fr) * | 1997-09-05 | 2002-01-02 | Intel Corp | Lecteur inviolable pour contenu crypte |
US6237137B1 (en) | 1997-10-15 | 2001-05-22 | Dell Usa, L.P. | Method and system for preventing unauthorized access to a computer program |
DE19847677C2 (de) * | 1997-10-15 | 2003-08-14 | Dell Usa Lp | Computer, Verfahren und Gerät zum Verhindern eines unautorisierten Zugriffs auf ein Computerprogramm |
US6334189B1 (en) | 1997-12-05 | 2001-12-25 | Jamama, Llc | Use of pseudocode to protect software from unauthorized use |
US6480959B1 (en) | 1997-12-05 | 2002-11-12 | Jamama, Llc | Software system and associated methods for controlling the use of computer programs |
US6643775B1 (en) | 1997-12-05 | 2003-11-04 | Jamama, Llc | Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications |
US7383569B1 (en) | 1998-03-02 | 2008-06-03 | Computer Associates Think, Inc. | Method and agent for the protection against the unauthorized use of computer resources |
US6191780B1 (en) | 1998-03-25 | 2001-02-20 | Arachnid, Inc. | Customizable multimedia segment structures |
EP0949574A3 (fr) * | 1998-03-25 | 2000-03-01 | Arachnid, Incorporated | Structures de segments multimedia personnalisées |
EP0949574A2 (fr) * | 1998-03-25 | 1999-10-13 | Arachnid, Incorporated | Structures de segments multimedia personnalisées |
WO1999056196A1 (fr) * | 1998-04-30 | 1999-11-04 | Bindview Development Corporation | Securite informatique |
US7140005B2 (en) * | 1998-12-21 | 2006-11-21 | Intel Corporation | Method and apparatus to test an instruction sequence |
US6256737B1 (en) | 1999-03-09 | 2001-07-03 | Bionetrix Systems Corporation | System, method and computer program product for allowing access to enterprise resources using biometric devices |
US9398013B2 (en) | 1999-03-09 | 2016-07-19 | Citibank, N.A. | System, method and computer program product for an authentication management infrastructure |
US7305562B1 (en) | 1999-03-09 | 2007-12-04 | Citibank, N.A. | System, method and computer program product for an authentication management infrastructure |
US6959391B1 (en) | 1999-04-23 | 2005-10-25 | Giesecke & Devrient Gmbh | Protection of the core part of computer against external manipulation |
WO2000065442A1 (fr) * | 1999-04-23 | 2000-11-02 | Giesecke & Devrient Gmbh | Protection d'une unite centrale d'ordinateur contre des manipulations exterieures |
US6782478B1 (en) | 1999-04-28 | 2004-08-24 | Thomas Probert | Techniques for encoding information in computer code |
WO2000065444A1 (fr) * | 1999-04-28 | 2000-11-02 | Thomas Probert | Techniques de codage d'information en code machine |
WO2000072112A3 (fr) * | 1999-05-12 | 2001-04-05 | Fraunhofer Crcg Inc | Dissimulation d'un code executable |
US7421586B2 (en) | 1999-05-12 | 2008-09-02 | Fraunhofer Gesselschaft | Protecting mobile code against malicious hosts |
WO2000072112A2 (fr) * | 1999-05-12 | 2000-11-30 | Fraunhofer Crcg, Inc. | Dissimulation d'un code executable |
WO2000077597A1 (fr) * | 1999-06-09 | 2000-12-21 | Cloakware Corporation | Codage de logiciel infalsifiable |
US6842862B2 (en) | 1999-06-09 | 2005-01-11 | Cloakware Corporation | Tamper resistant software encoding |
US6594761B1 (en) | 1999-06-09 | 2003-07-15 | Cloakware Corporation | Tamper resistant software encoding |
US7770016B2 (en) | 1999-07-29 | 2010-08-03 | Intertrust Technologies Corporation | Systems and methods for watermarking software and other media |
US7430670B1 (en) | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6779114B1 (en) | 1999-08-19 | 2004-08-17 | Cloakware Corporation | Tamper resistant software-control flow encoding |
US10355863B2 (en) | 1999-09-09 | 2019-07-16 | Secure Axcess Llc | System and method for authenticating electronic content |
US9843447B1 (en) | 1999-09-09 | 2017-12-12 | Secure Axcess Llc | Authenticating electronic content |
US7240363B1 (en) * | 1999-10-06 | 2007-07-03 | Ellingson Robert E | System and method for thwarting identity theft and other identity misrepresentations |
US6810017B1 (en) | 1999-11-15 | 2004-10-26 | Networks Associates Technology Inc. | Graphical user interface system and method for organized network analysis |
US6728219B1 (en) | 1999-11-15 | 2004-04-27 | Networks Associates Technology, Inc. | Graphical user interface system and method for visually gauging network performance |
US9009798B2 (en) | 2000-03-23 | 2015-04-14 | Citibank, N.A. | System, method and computer program product for providing unified authentication services for online applications |
US9438633B1 (en) | 2000-03-23 | 2016-09-06 | Citibank, N.A. | System, method and computer program product for providing unified authentication services for online applications |
US7441263B1 (en) | 2000-03-23 | 2008-10-21 | Citibank, N.A. | System, method and computer program product for providing unified authentication services for online applications |
US7950048B2 (en) * | 2000-03-29 | 2011-05-24 | Microsoft Corporation | Methods and arrangements for limiting access to computer controlled functions and devices |
WO2001099034A3 (fr) * | 2000-06-21 | 2003-05-08 | Aladdin Knowledge Systems | Systeme pour l'obscurcissement de code informatique lors du desassemblage |
WO2001099034A2 (fr) * | 2000-06-21 | 2001-12-27 | Aladdin Knowledge Systems; Ltd. | Systeme pour l'obscurcissement de code informatique lors du desassemblage |
US7065652B1 (en) | 2000-06-21 | 2006-06-20 | Aladdin Knowledge Systems, Ltd. | System for obfuscating computer code upon disassembly |
USRE43624E1 (en) * | 2001-01-09 | 2012-08-28 | Xiloprem Tre Limited Liability Company | Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems |
US7260845B2 (en) * | 2001-01-09 | 2007-08-21 | Gabriel Kedma | Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems |
GB2392276A (en) * | 2002-07-31 | 2004-02-25 | Hewlett Packard Development Co | A method of validating the rights of a user to participate in an interactive computer environment |
GB2392276B (en) * | 2002-07-31 | 2004-10-27 | Hewlett Packard Development Co | A method of validating performance of a participant in an interactive computing environment |
GB2391341A (en) * | 2002-07-31 | 2004-02-04 | Hewlett Packard Co | A method of validating the rights of a user to participate in an interactive computer environment |
US7877613B2 (en) | 2002-09-04 | 2011-01-25 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Protecting mobile code against malicious hosts |
US8490191B2 (en) | 2006-06-21 | 2013-07-16 | Wibu-Systems Ag | Method and system for intrusion detection |
WO2007147495A3 (fr) * | 2006-06-21 | 2008-08-28 | Wibu Systems Ag | Procédé et système pour la détection d'intrusion |
US8595809B2 (en) | 2008-04-09 | 2013-11-26 | Bank Of America Corporation | Reusable authentication experience tool |
US8136148B1 (en) | 2008-04-09 | 2012-03-13 | Bank Of America Corporation | Reusable authentication experience tool |
WO2013110571A1 (fr) * | 2012-01-25 | 2013-08-01 | Ercom Engineering Reseaux Communications | Procede d'authentification d'un dispositif comprenant un processeur et une carte a puce par generation d'un motif |
FR2986124A1 (fr) * | 2012-01-25 | 2013-07-26 | Ercom Engineering Reseaux Comm | Procede d'authentification d'un dispositif comprenant un processeur et une carte a puce par generation d'un motif |
US10848317B2 (en) | 2015-01-19 | 2020-11-24 | InAuth, Inc. | Systems and methods for trusted path secure communication |
US11818274B1 (en) | 2015-01-19 | 2023-11-14 | Accertify, Inc. | Systems and methods for trusted path secure communication |
US10237073B2 (en) | 2015-01-19 | 2019-03-19 | InAuth, Inc. | Systems and methods for trusted path secure communication |
US11171790B2 (en) | 2015-01-19 | 2021-11-09 | Accertify, Inc. | Systems and methods for trusted path secure communication |
WO2017108977A1 (fr) * | 2015-12-24 | 2017-06-29 | Gemalto Sa | Procédé et système pour améliorer la sécurité d'une transaction |
US11157912B2 (en) | 2015-12-24 | 2021-10-26 | Thales Dis France Sa | Method and system for enhancing the security of a transaction |
EP3185194A1 (fr) * | 2015-12-24 | 2017-06-28 | Gemalto Sa | Procédé et système pour améliorer la sécurité d'une transaction |
US11880832B2 (en) | 2015-12-24 | 2024-01-23 | Thales Dis France Sas | Method and system for enhancing the security of a transaction |
CN110162937A (zh) * | 2018-02-09 | 2019-08-23 | 黄冈职业技术学院 | 基于网络通讯实现计算机软件保护的方法 |
CN110162937B (zh) * | 2018-02-09 | 2024-02-02 | 黄冈职业技术学院 | 基于网络通讯实现计算机软件保护的方法 |
CN113343234A (zh) * | 2021-06-10 | 2021-09-03 | 支付宝(杭州)信息技术有限公司 | 对代码安全性进行可信检查的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6006328A (en) | Computer software authentication, protection, and security system | |
WO1997004394A1 (fr) | Systeme d'authentification, de protection et de securite pour logiciel informatique | |
AU2009200459B2 (en) | Systems and Methods for the Prevention Of Unauthorized Use and Manipulation of Digital Content Related Applications | |
US8261359B2 (en) | Systems and methods for preventing unauthorized use of digital content | |
Naumovich et al. | Preventing piracy, reverse engineering, and tampering | |
Nagra et al. | Surreptitious software: obfuscation, watermarking, and tamperproofing for software protection | |
CA2783822C (fr) | Systeme de messagerie steganographique utilisant des parties invariantes de code | |
EP2267626B1 (fr) | Système et procédé de gestion de droits numériques | |
CA2447451C (fr) | Procede et un systeme de securite de l'information | |
AU2002305490A1 (en) | Systems and methods for the prevention of unauthorized use and manipulation of digital content | |
US20100017615A1 (en) | Digital data authentication | |
JPH08166879A (ja) | 提供用ソフトウェアの安全性強化方法及び装置 | |
CN103856481B (zh) | 使用在线认证和经加密代码执行的代码保护方法和系统 | |
GB2404537A (en) | Controlling access to data using software wrappers | |
CN108027853B (zh) | 多用户强认证令牌 | |
US20050091516A1 (en) | Secure attention instruction central processing unit and system architecture | |
AU725098B2 (en) | Computer software authentication, protection, and security system | |
CN112905961A (zh) | 一种用于计算机软件保护的网络通讯方法 | |
Spalka et al. | Trojan horse attacks on software for electronic signatures | |
AU2002219852B2 (en) | Systems and methods for preventing unauthorized use of digital content | |
EP1637959A2 (fr) | Systèmes et procédés pour empêcher lýutilisation non autorisée de contenus numériques | |
Poddubnyi et al. | Possibilities of Using Watermarks to Protect Software Code. | |
AU2010202883B2 (en) | Systems and Methods for Preventing Unauthorized Use of Digital Content | |
AU2008200472A1 (en) | Systems and methods for preventing unauthorized use of digital content related applications | |
Oputeh et al. | Overcoming Trial Version Software Cracking Using a Hybridized Self-Modifying Technique |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): JP |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
122 | Ep: pct application non-entry in european phase |