US4646234A - Anti-piracy system using separate storage and alternate execution of selected proprietary and public portions of computer programs - Google Patents
Anti-piracy system using separate storage and alternate execution of selected proprietary and public portions of computer programs Download PDFInfo
- Publication number
- US4646234A US4646234A US06/584,713 US58471384A US4646234A US 4646234 A US4646234 A US 4646234A US 58471384 A US58471384 A US 58471384A US 4646234 A US4646234 A US 4646234A
- Authority
- US
- United States
- Prior art keywords
- program
- memory means
- portions
- software
- roms
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000003860 storage Methods 0.000 title claims abstract description 29
- 238000004590 computer program Methods 0.000 title claims 2
- 230000015654 memory Effects 0.000 claims abstract description 61
- 238000009826 distribution Methods 0.000 claims abstract description 12
- 238000000034 method Methods 0.000 claims description 26
- 238000010586 diagram Methods 0.000 description 8
- 230000006872 improvement Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
Definitions
- This invention relates to computer software protection systems and methods and, more particularly, to a novel system and method for preventing the unauthorized duplication and use of computer software.
- computer software includes operating systems, application programs, or any combination of these which are in machine-readable form and which are required to enable a desired operation of a computer system.
- computer software was, perhaps, once thought to have only a secondary position in the marketplace relative to computer hardware, computer software development and distribution has now become a large, profitable business in and of itself.
- thousands of computer software development and/or distribution firms are now in existence and are actively developing and/or marketing software packages for use on various types of computer systems.
- even the unsophisticated computer user is now able to perform relatively complex tasks on a computer by using one of the many software packages which are commercially available.
- a developer When developing computer software, a developer will typically have a relatively large initial investment of time and other resources. For example, a software developer must first identify and define the requirements which must be met by the particular software to be developed and must then try to integrate all of these requirements into a workable software package. This generally entails preparing numerous flow charts and other materials which define how the software system will operate in response to various inputs and outputs. Once the software package is thus defined, the software is then written in some form, typically in one of the standard computer languages, such as BASIC, FORTRAN or COBOL. Finally, the software is coded in machine-readable form and stored on some type of storage medium, such as, for example, on magnetic tapes or diskettes. The computer software is then ready to be loaded into and used on the intended computer system. Significantly, the entire development process can take several months to complete, depending upon the complexity of the software package being developed.
- the software developer will then usually license or otherwise distribute to computer users copies of the software on some storage media (such as, on magnetic tapes or diskettes). If the software package has been developed for a single, specific computer user, the software developer may be able to recover all of the costs of software development from such single user. More commonly, however, the software developer hopes to be able to market the software package to numerous computer users and to have each of such users bear only a portion of the development costs.
- a marketing of the software package helps make the software less expensive such that it may be purchased by a larger number of users; and such marketing may also increase the profits which are ultimately obtained by the software developer.
- Such copies of the software may also be shared or distributed to others more informally through computer clubs and/or various software libraries.
- Such copying and distribution of the software package may significantly decrease the market share available to the original software developer.
- the software developer may not be able to make any profit on the software package, while others are able to distribute the software package at a very low price and make a relatively large profit. Even more unfortunately, the software developer may not even be able to completely recover its software development costs.
- One of the most common types of prior art software protection methods consists of writing the software such that it will not permit copies to be made unless a certain "key" is provided. Such a method may comprise requiring that a password or code be given by the user before the software can be copied or, alternatively, permitting the software to be copied only on a particular machine which is in the possession of an authorized individual. Hence, if an unauthorized individual should try to make a copy of software which is thus protected, the computer software would simply fail to execute the copy command.
- An alternate form of the above-described type of software protection method additionally comprises providing that the software will disassemble or scramble itself if an unauthorized copy is attempted to be made. Thus, if an unauthorized individual attempts to make a copy of the protected software, the software will be rendered either entirely or partially useless.
- Prior art methods of software protection have also included the licensing of each authorized copy of the software to a particular machine or device. Then, the software is written so as to first execute a subroutine during normal operation which identifies the machine on which the software is being run and checks to be sure that the software is licensed on that machine. If it is determined that the machine which is being used is not an authorized machine, the software will not operate. Typically, the software then causes a message to be displayed on the terminal screen or printer which instructs the user to contact the software developer. This type of a protection device may also provide for the disassembling or scrambling of the software as set forth above.
- the present invention is directed to a novel system and method for computer software protection.
- the system comprises a random access memory device (RAM) and one or more read-only memory devices (ROMs).
- the memory locations of each of the ROMs are identified using the same set of addresses; and such a set of addresses may also correspond to a portion of the memory locations of the RAM.
- the system futher comprises a memory control circuit, which determines whether the RAM or one of the ROMs is to be accessed, and a ROM select circuit, which determines which one of the ROMs is to be accessed.
- selected portions or subroutines of the computer software are first stored in the ROMs.
- the remaining portions of the computer software are coded so as to call for such selected portions or subroutines in proper sequence; and such remaining portions of the software are then stored on a suitable, external storage medium.
- the computer software is to be used, such remaining portions of the software are loaded into the RAM from the external storage medium in conventional fashion; and the computer software stored in the RAM is then read and executed in the usual manner.
- an instruction is received which indicates that a particular ROM is to be accessed next in order to access one of the selected software portions or subroutines.
- the software then accesses a specific memory address corresponding to a memory location of the ROMs; and, depending upon which ROM was previously indicated to be accessed, the software portion or subroutine in the appropriate ROM at the specified address is thereafter accessed and used.
- FIG. 1 is a general block diagram illustrating one presently preferred embodiment of the computer software protection system of the present invention.
- FIG. 2 is a functional flow chart illustrating the operation of the computer software protection system of FIG. 1.
- FIG. 3 is a schematic diagram illustrating one specific way in which the software protection system of the present invention can be configured.
- the software protection system comprises a random access memory device (RAM) 10 with a corresponding bus driver 20.
- the system comprises one or more read-only memory devices (ROMs). While virtually any numer of ROMs may be employed in this system, the software protection system of the present invention is illustrated herein as comprising four ROMs 30, 32, 34, and 36, with a corresponding bus driver 22.
- the software protection system of the present invention comprises a memory control circuit 40 and a ROM select circuit 50.
- an address bus 60 is connected to RAM 10, to ROMs 30, 32, 34, and 36, and to memory control circuit 40.
- the memory locations of each of ROMs 30, 32, 34, and 36 are identified by the same set of addresses, and this set of addresses may also advantageously correspond to a portion of RAM 10. The reason for this addressing scheme will become more readily apparent from the discussion which follows.
- a data bus 62 is connected both to bus drivers 20 and 22 and to ROM select circuit 50. As set forth more fully below, data bus 62 is used to transmit data and control signals to ROM select circuit 50. In addition, data bus 62 is used to transmit data from bus drivers 20 and 22 to the external circuitry (not shown). Also, as shown in FIG. 1, control lines 64 are provided to ROM select circuit 50, RAM 10, and memory control circuit 40. The function of control lines 64 will be described in more detail below.
- ROMs 30, 32, 34 and 36 are stored in ROMs 30, 32, 34 and 36. This may be accomplished by any one of a number of techniques which are well known in the art, such as, for example, by using electronically programmable ROMs and by storing such portions or subroutines of the software in the ROMs using suitable electronic signals.
- ROMs 30, 32, 34 and 36 are identified by the same set of memory addresses, two or more of the software portions or subroutines may be located at exactly the same memory address, although such portions or subroutines are actually stored in different ROMs.
- such selected portions or subroutines of the software which are stored in the ROMs thus become stored internally within the computer system and effectively become a permanent part of the computer system's internal memory. That is, such portions or subroutines of the software need not be loaded into the computer system each time the software is used; and such portions or subroutines, thus, need not be stored or distributed to computer users on any external storage medium.
- the remaining portions of the software are then coded so as to call for the subroutines or portions of the software stored in ROMs 30, 32, 34 and 36 in appropriate sequence. This may be done, for example, by including suitable commands in the software which (1) select a particular ROM on which the needed subroutine is stored and which (2) call the appropriate ROM address at which the subroutine is located.
- the remaining portions of the software which have been thus coded are then stored on some type of external storage medium, that is, on a storage medium which is external to the computer system.
- Such external storage medium may comprise virtually any storage medium which is suitable for storing computer software, such as, for example, magnetic tapes, discs or diskettes, or computer punch cards.
- the computer software is coded and stored as set forth above, it is ready to be distributed to computer users.
- a computer user is first provided with the hardware configuration which is illustrated in FIG. 1 and which includes the selected portions or subroutines of the software stored on ROMs 30, 32, 24 and 36.
- This hardware configuration may be provided either by supplying the computer user with a complete computer system which has the required hardware configuration or by appropriately modifying a computer system already owned by such computer user.
- the computer user is also provided with a copy of the remaining portions of the computer software on some external storage medium.
- RAM 10 the portions of the software which are stored on the external storage medium are first loaded into RAM 10 in a conventional manner. Thereafter, software operation commences and the software instructions in RAM 10 are accessed and executed in a normal fashion. During processing, signals are sent along control lines 64 to indicate whether RAM 10 or, alternatively, the ROMs are to be accessed in order to obtain the next software instruction. If RAM 10 is to be the source of the next instruction, memory control circuit 40 sends a signal along line 42 to enable bus driver 20, such that software instructions from RAM 10 can be driven onto data bus 62, as needed.
- ROM select circuit 50 transmits a ROM enable signal along line 52 to memory control circuit 40.
- data is transmitted along data bus 62 to ROM select circuit 50 to indicate which of the four ROMs is to be accessed. If ROM 30 is selected to be accessed, for example, a signal would then be sent by ROM select circuit 50 to ROM 30 along line 54, thereby enabling ROM 30 to be accessed.
- ROMs 32, 34 and 36 may be similarly selected and enabled by transmitting appropriate signals from ROM select circuit 50 along lines 55, 56 and 57, respectively.
- a memory address is sent along address bus 60 to RAM 10, to ROMs 30, 32, 34 and 36, and to memory control circuit 40.
- each of ROMs 30, 32, 34 and 36 have the identical set of addresses associated with their memory locations, and this set of addresses may also correspond to a block of memory in RAM 10.
- each of the bytes of memory in ROMs 30, 32, 34 and 36 could be identified by the hexidecimal addresses F800 through FFFF; and RAM 10 could also have a block of memory which is identified by addresses F800 to FFFF.
- memory control circuit 40 With the memory address having been transmitted along address bus 60, data is ready to be read onto data bus 62. Signals are then sent along control lines 64 to memory control circuit 40 to activate the appropriate bus driver. If, for example, the next software instruction is to be accessed from RAM 10 and the address received was F800, memory control circuit 40 would send an appropriate signal along line 42 to bus driver 20 such that the appropriate instructions may be driven from RAM 10 onto data bus 62.
- the same address (e.g., F800) could have been transmitted along address 60 but ROM 30 could have been selected as the source of the instruction.
- memory control circuit 40 would first check to be sure that a valid ROM address has been received and, if so, memory control circuit 40 would transmit a signal along line 44 to bus driver 22 and the ROMs so as to allow data from ROM 30 to be driven onto data bus 62. It will be readily appreciated that data could also be accessed from any of ROMs 32, 34 or 36 in a similar manner.
- the system first begins operation and undertakes normal processing at step 70 by obtaining successive instructions to be executed from RAM 10. Then, an instruction is reached in RAM 10 which designates that the next programming instruction is stored in a particular ROM memory device or in the RAM 10. The particular ROM or RAM is then selected and enabled at step 71. The system next calls a particular memory address, as illustrated at step 72. However, the actual location of the instruction depends upon which device has been previously selected and enabled.
- RAM 10 has been selected and enabled
- the system then reads that address from RAM 10 as illustrated at step 74 and then returns to normal processing at 70.
- ROM 30 was selected and enabled
- ROM 30 is then read at the indicated address as illustrated at step 75 and the system returns to normal processing.
- ROMs 32, 34 or 36 could have been selected and enabled and these devices would then be read as illustrated at steps 76, 77 or 78, respectively, after which the system would return to normal processing.
- the various software instructions are obtained first from RAM 10 and then from one of the ROMs such that the software instructions are read and executed in proper sequence.
- the software instructions which are thereafter to be executed are read in proper sequence by reading from RAM 10 and the ROMs 30, 32, 34 and 36 in an alternating fashion.
- the computer software protection system of the present invention has the unique advantage that all of the software is not readily available to an individual who may wish to copy the software. As set forth above, only portions of the software are ever stored on an external storage medium. Importantly, key subroutines or other significant portions of the software are stored internally in a number of ROMs. Thus, if an individual was to try to copy the computer software, he would normally obtain only that portion of the software which is stored on the external storage medium. Significantly, such individual would not obtain copies of the portions of the software which are internally stored on the various ROMs.
- the software when an individual thereafter tried to execute the copied software on another computer system which did not have the required ROMs, the software would at times direct the computer system to a particular address which may not have the needed software instruction.
- the computer system may erroneously read a specified address of the RAM, when the correct software instruction was actually to be obtained at the same address of one of the ROMs.
- FIG. 3 illustrates in detail one preferred embodiment for a schematic diagram derived from the block diagram of FIG. 1.
- FIG. 3 illustrates in detail one preferred embodiment for a schematic diagram derived from the block diagram of FIG. 1.
- RAM 10 comprises eight 4164A integrated circuits (ICs); and ROMs 30, 32, 34 and 36 each comprise a 2716 IC.
- bus drivers 20 and 22 each comprise a 74LS244 IC driver; memory control circuit 40 comprises a PAL12L6 IC; and ROM select circuit 50 comprises a 74LS273 IC, together with the indicated 74LS04 IC inverters.
- control lines 64 of FIG. 1 are illustrated in FIG.
- each of the control bits mentioned above are standard control bits used in the computer industry.
- the "ROM select port” control bit is a bit generated by conventional port decode circuitry to indicate that one of the 2716 ROMs is to be selected and read.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Remote Sensing (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Radar, Positioning & Navigation (AREA)
- Storage Device Security (AREA)
Abstract
A system for computer software protection includes a random access memory (RAM) device and one or more read-only memory (ROM) devices. The RAM and ROMs are connected in parallel to a data transfer bus, and to an address bus. Selected proprietary portions of a program are pre-stored in the ROMs prior to distribution to system users, and the remaining portions of the program are stored on an external storage medium such as a diskette which is made available for access and use by system users. When using the program, the portion of the program stored on the external storage medium is loaded into the RAM. In executing the program, the system commences executing, in turn, each program instruction contained in the RAM until it is instructed to transfer to one of the ROMs for execution of the proprietary portions of the program stored in the ROMs. If a system user makes an unauthorized copy of the portion of the program stored on the external storage medium, since the proprietary portions of the program are stored in the ROMs, the unauthorized copy will be incomplete and will not be able to run without the proprietary portions of the program which are maintained in the ROMs.
Description
1. The Field of the Invention
This invention relates to computer software protection systems and methods and, more particularly, to a novel system and method for preventing the unauthorized duplication and use of computer software.
2. The Prior Art
During recent years, the number of computers in use throughout the world has grown dramatically. For example, an increasing number of businesses, even small to medium size businesses, are automating various portions of their operations, such as, for example, their accounting and inventory management operations. In addition, many families and individuals are now using various types of home computers for a wide variety of purposes, including education, financial management, and entertainment.
As a result of this significant and continuing increase in computer usage, there has been a corresponding increase in the need for computer software for various applications. As used herein, computer software includes operating systems, application programs, or any combination of these which are in machine-readable form and which are required to enable a desired operation of a computer system. While computer software was, perhaps, once thought to have only a secondary position in the marketplace relative to computer hardware, computer software development and distribution has now become a large, profitable business in and of itself. Thus, it is not surprising that thousands of computer software development and/or distribution firms are now in existence and are actively developing and/or marketing software packages for use on various types of computer systems. As a result, even the unsophisticated computer user is now able to perform relatively complex tasks on a computer by using one of the many software packages which are commercially available.
When developing computer software, a developer will typically have a relatively large initial investment of time and other resources. For example, a software developer must first identify and define the requirements which must be met by the particular software to be developed and must then try to integrate all of these requirements into a workable software package. This generally entails preparing numerous flow charts and other materials which define how the software system will operate in response to various inputs and outputs. Once the software package is thus defined, the software is then written in some form, typically in one of the standard computer languages, such as BASIC, FORTRAN or COBOL. Finally, the software is coded in machine-readable form and stored on some type of storage medium, such as, for example, on magnetic tapes or diskettes. The computer software is then ready to be loaded into and used on the intended computer system. Significantly, the entire development process can take several months to complete, depending upon the complexity of the software package being developed.
Once a software package is fully developed as set forth above, the software developer will then usually license or otherwise distribute to computer users copies of the software on some storage media (such as, on magnetic tapes or diskettes). If the software package has been developed for a single, specific computer user, the software developer may be able to recover all of the costs of software development from such single user. More commonly, however, the software developer hopes to be able to market the software package to numerous computer users and to have each of such users bear only a portion of the development costs. Advantageously, such a marketing of the software package helps make the software less expensive such that it may be purchased by a larger number of users; and such marketing may also increase the profits which are ultimately obtained by the software developer.
Unfortunately, however, after a copy of a software package has been distributed to a computer user, such user sometimes makes additional copies the software and distributes them to others for use on other computer systems. This is typically done by copying the software from the storage medium provided by the software developer onto a second, similar storage medium. Thus, for example, if the software developer provided the software to a user on a magnetic diskette, such user might copy of the software onto a second magnetic diskette. This second diskette could then be used by others both to load the software into and to run the software on other computer systems.
Occasionally, such additional copies of the software package are then actually sold by a competing software distributor who, of course, keeps the profits from such sales. Such copies of the software may also be shared or distributed to others more informally through computer clubs and/or various software libraries. Importantly, such copying and distribution of the software package may significantly decrease the market share available to the original software developer. As a result, the software developer may not be able to make any profit on the software package, while others are able to distribute the software package at a very low price and make a relatively large profit. Even more unfortunately, the software developer may not even be able to completely recover its software development costs.
Although various types of legal protection are available to prevent the unauthorized copying, distribution, and use of computer software, it is often quite difficult to even find out that the computer software is being copies. This is particularly the case when the copies of the software are not being sold on the open market but are, rather, being distributed or shared informally among many computer users. As a result of this difficulty, therefore, various systems and methods for technologically protecting computer software have been developed and are currently being used in the software industry.
One of the most common types of prior art software protection methods consists of writing the software such that it will not permit copies to be made unless a certain "key" is provided. Such a method may comprise requiring that a password or code be given by the user before the software can be copied or, alternatively, permitting the software to be copied only on a particular machine which is in the possession of an authorized individual. Hence, if an unauthorized individual should try to make a copy of software which is thus protected, the computer software would simply fail to execute the copy command.
An alternate form of the above-described type of software protection method additionally comprises providing that the software will disassemble or scramble itself if an unauthorized copy is attempted to be made. Thus, if an unauthorized individual attempts to make a copy of the protected software, the software will be rendered either entirely or partially useless.
Prior art methods of software protection have also included the licensing of each authorized copy of the software to a particular machine or device. Then, the software is written so as to first execute a subroutine during normal operation which identifies the machine on which the software is being run and checks to be sure that the software is licensed on that machine. If it is determined that the machine which is being used is not an authorized machine, the software will not operate. Typically, the software then causes a message to be displayed on the terminal screen or printer which instructs the user to contact the software developer. This type of a protection device may also provide for the disassembling or scrambling of the software as set forth above.
While the foregoing prior art software protection methods have helped reduce the amount of unauthorized copying and distribution of computer software, these protection methods have proven inadequate in a number of ways. First, many programmers have become quite good at breaking through these prior art protection schemes in order to secure copies of the software. For example, an experienced programmer may be able to manipulate the software so as to override or remove the protection code or subroutine and thereby permit the software to be copied. In addition, once the prior art software protection methods have been disabled, the software can be copied in its entirety from the storage medium and is, thus, immediately available for distribution to and use by others.
Accordingly, it would be an improvement in the art to provide a system and method for protecting computer software which does not allow a complete copy of the software to be readily obtained. It would also be an improvement in the art to provide a system and method for computer software protection wherein copied software could not be readily used on another computer system. Such a system and method is disclosed and claimed herein.
The present invention is directed to a novel system and method for computer software protection. The system comprises a random access memory device (RAM) and one or more read-only memory devices (ROMs). The memory locations of each of the ROMs are identified using the same set of addresses; and such a set of addresses may also correspond to a portion of the memory locations of the RAM. The system futher comprises a memory control circuit, which determines whether the RAM or one of the ROMs is to be accessed, and a ROM select circuit, which determines which one of the ROMs is to be accessed.
In use, selected portions or subroutines of the computer software are first stored in the ROMs. The remaining portions of the computer software are coded so as to call for such selected portions or subroutines in proper sequence; and such remaining portions of the software are then stored on a suitable, external storage medium. Then, when the computer software is to be used, such remaining portions of the software are loaded into the RAM from the external storage medium in conventional fashion; and the computer software stored in the RAM is then read and executed in the usual manner. At some point in the processing, an instruction is received which indicates that a particular ROM is to be accessed next in order to access one of the selected software portions or subroutines. The software then accesses a specific memory address corresponding to a memory location of the ROMs; and, depending upon which ROM was previously indicated to be accessed, the software portion or subroutine in the appropriate ROM at the specified address is thereafter accessed and used.
It is, therefore, a primary object of the present invention to provide a system and method for protecting computer software.
It is also an object of the present invention to provide a computer software protection system and method which does not permit a complete copy of the software to be readily obtained.
In addition, it is an object of the present invention to provide a computer software protection system and method which makes it difficult to use copied computer software on a computer system which has a different hardware configuration.
These and other objects and featues of the present invention will become more fully apparent from the following description and appended claims, taken in conjunction with the accompanying drawings.
FIG. 1 is a general block diagram illustrating one presently preferred embodiment of the computer software protection system of the present invention.
FIG. 2 is a functional flow chart illustrating the operation of the computer software protection system of FIG. 1. FIG. 3 is a schematic diagram illustrating one specific way in which the software protection system of the present invention can be configured.
It will be readily appreciated that the components of the present invention, as generally described and illustrated in the figures herein, could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of the embodiment of the system and method of the present invention, as represented in FIGS. 1 through 3, is not intended to limit the scope of the invention, as claimed, but it is merely representative of one presently preferred embodiment of the invention.
One presently preferred embodiment of the computer software protection system of the present invention is illustrated in FIG. 1. As shown, the software protection system comprises a random access memory device (RAM) 10 with a corresponding bus driver 20. In addition, the system comprises one or more read-only memory devices (ROMs). While virtually any numer of ROMs may be employed in this system, the software protection system of the present invention is illustrated herein as comprising four ROMs 30, 32, 34, and 36, with a corresponding bus driver 22. In addition, the software protection system of the present invention comprises a memory control circuit 40 and a ROM select circuit 50.
As illustrated in FIG. 1, an address bus 60 is connected to RAM 10, to ROMs 30, 32, 34, and 36, and to memory control circuit 40. Significantly, the memory locations of each of ROMs 30, 32, 34, and 36 are identified by the same set of addresses, and this set of addresses may also advantageously correspond to a portion of RAM 10. The reason for this addressing scheme will become more readily apparent from the discussion which follows.
A data bus 62 is connected both to bus drivers 20 and 22 and to ROM select circuit 50. As set forth more fully below, data bus 62 is used to transmit data and control signals to ROM select circuit 50. In addition, data bus 62 is used to transmit data from bus drivers 20 and 22 to the external circuitry (not shown). Also, as shown in FIG. 1, control lines 64 are provided to ROM select circuit 50, RAM 10, and memory control circuit 40. The function of control lines 64 will be described in more detail below.
During the manufacture of the software protection system of the present invention, selected portions or subroutines (advantageously, some of the more important portions or subroutines) of a computer software to be protected are stored in ROMs 30, 32, 34 and 36. This may be accomplished by any one of a number of techniques which are well known in the art, such as, for example, by using electronically programmable ROMs and by storing such portions or subroutines of the software in the ROMs using suitable electronic signals. Notably, since the memory locations of each of the ROMs are identified by the same set of memory addresses, two or more of the software portions or subroutines may be located at exactly the same memory address, although such portions or subroutines are actually stored in different ROMs. Importantly, such selected portions or subroutines of the software which are stored in the ROMs thus become stored internally within the computer system and effectively become a permanent part of the computer system's internal memory. That is, such portions or subroutines of the software need not be loaded into the computer system each time the software is used; and such portions or subroutines, thus, need not be stored or distributed to computer users on any external storage medium.
The remaining portions of the software are then coded so as to call for the subroutines or portions of the software stored in ROMs 30, 32, 34 and 36 in appropriate sequence. This may be done, for example, by including suitable commands in the software which (1) select a particular ROM on which the needed subroutine is stored and which (2) call the appropriate ROM address at which the subroutine is located. The remaining portions of the software which have been thus coded are then stored on some type of external storage medium, that is, on a storage medium which is external to the computer system. Such external storage medium may comprise virtually any storage medium which is suitable for storing computer software, such as, for example, magnetic tapes, discs or diskettes, or computer punch cards.
After the computer software is coded and stored as set forth above, it is ready to be distributed to computer users. Upon distribution of the software, a computer user is first provided with the hardware configuration which is illustrated in FIG. 1 and which includes the selected portions or subroutines of the software stored on ROMs 30, 32, 24 and 36. This hardware configuration may be provided either by supplying the computer user with a complete computer system which has the required hardware configuration or by appropriately modifying a computer system already owned by such computer user. In addition, the computer user is also provided with a copy of the remaining portions of the computer software on some external storage medium.
To operate the software, the portions of the software which are stored on the external storage medium are first loaded into RAM 10 in a conventional manner. Thereafter, software operation commences and the software instructions in RAM 10 are accessed and executed in a normal fashion. During processing, signals are sent along control lines 64 to indicate whether RAM 10 or, alternatively, the ROMs are to be accessed in order to obtain the next software instruction. If RAM 10 is to be the source of the next instruction, memory control circuit 40 sends a signal along line 42 to enable bus driver 20, such that software instructions from RAM 10 can be driven onto data bus 62, as needed.
If, on the other hand, one of the ROMs is to be accessed in order to receive a next software instruction, ROM select circuit 50 transmits a ROM enable signal along line 52 to memory control circuit 40. In addition, data is transmitted along data bus 62 to ROM select circuit 50 to indicate which of the four ROMs is to be accessed. If ROM 30 is selected to be accessed, for example, a signal would then be sent by ROM select circuit 50 to ROM 30 along line 54, thereby enabling ROM 30 to be accessed. ROMs 32, 34 and 36 may be similarly selected and enabled by transmitting appropriate signals from ROM select circuit 50 along lines 55, 56 and 57, respectively.
Once the RAM or ROMs have been selected as the source of a next instruction as set forth above, a memory address is sent along address bus 60 to RAM 10, to ROMs 30, 32, 34 and 36, and to memory control circuit 40. As set forth above, each of ROMs 30, 32, 34 and 36 have the identical set of addresses associated with their memory locations, and this set of addresses may also correspond to a block of memory in RAM 10. For example, each of the bytes of memory in ROMs 30, 32, 34 and 36 could be identified by the hexidecimal addresses F800 through FFFF; and RAM 10 could also have a block of memory which is identified by addresses F800 to FFFF.
With the memory address having been transmitted along address bus 60, data is ready to be read onto data bus 62. Signals are then sent along control lines 64 to memory control circuit 40 to activate the appropriate bus driver. If, for example, the next software instruction is to be accessed from RAM 10 and the address received was F800, memory control circuit 40 would send an appropriate signal along line 42 to bus driver 20 such that the appropriate instructions may be driven from RAM 10 onto data bus 62.
Alternatively, the same address (e.g., F800) could have been transmitted along address 60 but ROM 30 could have been selected as the source of the instruction. In such case, memory control circuit 40 would first check to be sure that a valid ROM address has been received and, if so, memory control circuit 40 would transmit a signal along line 44 to bus driver 22 and the ROMs so as to allow data from ROM 30 to be driven onto data bus 62. It will be readily appreciated that data could also be accessed from any of ROMs 32, 34 or 36 in a similar manner.
Thus, while the software stored in RAM 10 will at times indicate that the next instruction step is to be found at a particular address, such as, for example, at address F800, the actual content of the instruction may actually come from a numer of different locations. This is illustrated graphically in FIG. 2. As shown, the system first begins operation and undertakes normal processing at step 70 by obtaining successive instructions to be executed from RAM 10. Then, an instruction is reached in RAM 10 which designates that the next programming instruction is stored in a particular ROM memory device or in the RAM 10. The particular ROM or RAM is then selected and enabled at step 71. The system next calls a particular memory address, as illustrated at step 72. However, the actual location of the instruction depends upon which device has been previously selected and enabled. Thus, if RAM 10 has been selected and enabled, the system then reads that address from RAM 10 as illustrated at step 74 and then returns to normal processing at 70. However, if ROM 30 was selected and enabled, ROM 30 is then read at the indicated address as illustrated at step 75 and the system returns to normal processing. Similarly, ROMs 32, 34 or 36 could have been selected and enabled and these devices would then be read as illustrated at steps 76, 77 or 78, respectively, after which the system would return to normal processing.
Hence, in the software protection system of the present invention, the various software instructions are obtained first from RAM 10 and then from one of the ROMs such that the software instructions are read and executed in proper sequence. Thus, once the computer system has been initialized by the operating system, instead of reading all of the software instructions from a single memory device, the software instructions which are thereafter to be executed are read in proper sequence by reading from RAM 10 and the ROMs 30, 32, 34 and 36 in an alternating fashion.
It will be appreciated, therefore, that the computer software protection system of the present invention has the unique advantage that all of the software is not readily available to an individual who may wish to copy the software. As set forth above, only portions of the software are ever stored on an external storage medium. Importantly, key subroutines or other significant portions of the software are stored internally in a number of ROMs. Thus, if an individual was to try to copy the computer software, he would normally obtain only that portion of the software which is stored on the external storage medium. Significantly, such individual would not obtain copies of the portions of the software which are internally stored on the various ROMs. Hence, when an individual thereafter tried to execute the copied software on another computer system which did not have the required ROMs, the software would at times direct the computer system to a particular address which may not have the needed software instruction. For example, the computer system may erroneously read a specified address of the RAM, when the correct software instruction was actually to be obtained at the same address of one of the ROMs.
Reference is next made to FIG. 3, which illustrates in detail one preferred embodiment for a schematic diagram derived from the block diagram of FIG. 1. Those of ordinary skill in the art will, of course, appreciate that various modifications of the detailed schematic diagram of FIG. 3 may be easily made without departing from the essential characteristics of the invention, as described in connection with the block diagram of FIG. 1 above. Thus, the detailed schematic diagram of FIG. 3 is intended only as an example, and simply illustrates one presently preferred embodiment of a schematic diagram that is consistent with the foregoing description of FIG. 1 and the invention as claimed herein.
In FIG. 3, the various circuit components generally correspond to one of the functional blocks of FIG. 1. In particular, RAM 10 comprises eight 4164A integrated circuits (ICs); and ROMs 30, 32, 34 and 36 each comprise a 2716 IC. Further, bus drivers 20 and 22 each comprise a 74LS244 IC driver; memory control circuit 40 comprises a PAL12L6 IC; and ROM select circuit 50 comprises a 74LS273 IC, together with the indicated 74LS04 IC inverters. Finally, control lines 64 of FIG. 1 are illustrated in FIG. 3 as six separate control bits: "RAS" (row address select); "CAS" (column address select); "WE" (write enable); "IO/M" (input-output/memory); "RD" (read); and "ROM select port." With the exception of the "ROM select port" control bit, each of the control bits mentioned above are standard control bits used in the computer industry. The "ROM select port" control bit is a bit generated by conventional port decode circuitry to indicate that one of the 2716 ROMs is to be selected and read.
The equations which are used by the PAL12L6 IC of FIG. 3 are as follows: ##EQU1##
The invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims, rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Claims (10)
1. In a computer system having first and second electronic memory means which together are used to store a program comprising executable instructions, a method of protecting against unauthorized duplication of selected proprietary portions of said program, the method comprising the steps of:
pre-storing in said first memory means prior to distribution to a system user said selected proprietary portions of said executable program, whereby said selected proprietary portions of said program are not readily susceptible to access and duplication by a system user;
pre-storing prior to distribution to a system user the remaining portion of said executable program on an external storage medium, said external storage medium being available for access and use by system users; and
when running said executable program in its entirety on said computer system, said computer system automatically performing the steps of:
(a) loading said remaining portion of the executable program from said external storage medium to said second memory means;
(b) commencing with execution, in turn, of each instruction contained in said second storage means until instructed to transfer to said first storage means;
(c) thereafter executing, in turn, the selected proprietary portions of said program stored in said first memory means;
(d) thereafter returning to said second memory means and continuing with execution of said remaining portions of the program; and
(e) repeating steps (a)-(d) until said program is completely executed.
2. A method as defined in claim 1 wherein said step (c) of executing said selected proprietary portions of said program stored in said first memory means comprises the step of commencing execution at an address in said first memory means that also corresponds to an address in said second memory means, and identifying said address as pertaining to said first memory means rather than said second memory means when commencing execution of said selected proprietary portions of said program.
3. A method as defined in claim 1 wherein said first memory means comprises a plurality of read-only memories (ROMs) and wherein said step of pre-storing said selected proprietary portions of said program comprises the step of storing separate parts of said selected portions in each of said ROMs.
4. A method as defined in claim 3 wherein said second memory means comprises a random access memory (RAM) and wherein said step (a) of loading the remaining portion of said program from said external storage medium comprises the step of loading said remaining portion of said program into said RAM.
5. A method as defined in claim 4 wherein said step (c) of executing said selected proprietary portions of said program comprises the steps of:
identifying at least one program instruction stored in each ROM with an address that also corresponds to at least one program instruction stored in said RAM;
identifying said address as pertaining to one of said ROMs when commencing execution of a part of said selected proprietary portions of said program; and
commencing execution of said proprietary part of said program at said address identified for said ROM.
6. A computer system for protecting against unauthorized duplication of selected proprietary portions of a computer program adapted for execution on said computer system, said computer system comprising:
a data transfer bus;
a first memory means connected to said data transfer bus for accessing selected proprietary portions of said program which have been pre-stored on said first memory means prior to distribution to system users, whereby said proprietary portions are not readily susceptible to access and duplication by a system user;
an external storage medium on which the remaining portion of said program is pre-stored prior to distribution to system users, said external storage medium being available for access and use by system users;
a second memory means into which said remaining portion of said program is loaded from said external storage medium when it is desired to run said program on said computer system, said second memory means being connected to said data transfer bus in parallel with said first memory means; and
means for controlling and selecting said first and second memory means so as to commence executing, in turn, each program instruction stored in said second memory means until instructed to transfer to said first memory means, and thereafter transferring to said first memory means and executing said selected proprietary portions of said program and then returning to said second memory means to complete the execution of said remaining portions of said program.
7. A system as defined in claim 6 wherein said first memory means comprises a plurality of read-only memories (ROMs) and wherein each said ROM is adapted for separately storing separate parts of said proprietary portions of said program.
8. A computer system as defined in claim 7 wherein said second memory means comprises a random access memory (RAM).
9. A computer system as defined in claim 8 wherein said means for controlling said first and second memory means comprises:
an address bus;
a first bus driver for interfacing said RAM to said data transfer bus;
a second bus driver for interfacing said ROMs to said data transfer bus; and
said memory control circuit electronically connected to said address bus and electronically connected to said first and second bus drivers, said memory control circuit enabling one of said bus drivers to permit transfer from said RAM to one of said ROMs when executing a part of said proprietary program.
10. A computer system as defined in claim 9 wherein said means for controlling and selecting said first and second memory means comprises a ROM select circuit electronically connected to each said ROM and to said memory control circuit, said ROM select circuit enabling and selecting one of said ROMs so as to permit part of said proprietary program to be transferred to said data transfer bus for execution by said computer system.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/584,713 US4646234A (en) | 1984-02-29 | 1984-02-29 | Anti-piracy system using separate storage and alternate execution of selected proprietary and public portions of computer programs |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/584,713 US4646234A (en) | 1984-02-29 | 1984-02-29 | Anti-piracy system using separate storage and alternate execution of selected proprietary and public portions of computer programs |
Publications (1)
Publication Number | Publication Date |
---|---|
US4646234A true US4646234A (en) | 1987-02-24 |
Family
ID=24338499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US06/584,713 Expired - Fee Related US4646234A (en) | 1984-02-29 | 1984-02-29 | Anti-piracy system using separate storage and alternate execution of selected proprietary and public portions of computer programs |
Country Status (1)
Country | Link |
---|---|
US (1) | US4646234A (en) |
Cited By (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1988009971A1 (en) * | 1987-06-03 | 1988-12-15 | Personal Cad Systems, Inc. | Security system having selective software program locks utilizing removable pla keys to allow hardware security lock updates |
US4868736A (en) * | 1986-08-16 | 1989-09-19 | Runtime Innovations Limited | Code operated access control system for electronic data store |
FR2634917A1 (en) * | 1988-08-01 | 1990-02-02 | Pionchon Philippe | METHOD AND DEVICE FOR PROTECTING SOFTWARE, ESPECIALLY AGAINST UNAUTHORIZED COPIES |
US4977594A (en) * | 1986-10-14 | 1990-12-11 | Electronic Publishing Resources, Inc. | Database usage metering and protection system and method |
US4987595A (en) * | 1989-09-11 | 1991-01-22 | Motorola, Inc. | Secure cryptographic processor arrangement |
US5050213A (en) * | 1986-10-14 | 1991-09-17 | Electronic Publishing Resources, Inc. | Database usage metering and protection system and method |
US5099516A (en) * | 1989-06-12 | 1992-03-24 | Dell Corporate Services Corporation | Digital computer code word identification system |
US5109413A (en) * | 1986-11-05 | 1992-04-28 | International Business Machines Corporation | Manipulating rights-to-execute in connection with a software copy protection mechanism |
WO1992009160A1 (en) | 1990-11-07 | 1992-05-29 | Tau Systems Corporation | A secure system for activating personal computer software at remote locations |
US5155829A (en) * | 1986-01-21 | 1992-10-13 | Harry M. Weiss | Memory system and method for protecting the contents of a ROM type memory |
US5341429A (en) * | 1992-12-04 | 1994-08-23 | Testdrive Corporation | Transformation of ephemeral material |
US5500949A (en) * | 1990-03-27 | 1996-03-19 | Kabushiki Kaisha Toshiba | Microprocessor system for inhibiting access to memory by checking specific address and specific codes |
US5533124A (en) * | 1994-12-07 | 1996-07-02 | Smith; Jeannette K. | Electronic trading card system |
US5559884A (en) * | 1994-06-30 | 1996-09-24 | Microsoft Corporation | Method and system for generating and auditing a signature for a computer program |
WO1997025798A1 (en) * | 1996-01-11 | 1997-07-17 | Mrj, Inc. | System for controlling access and distribution of digital property |
US5680453A (en) * | 1994-08-10 | 1997-10-21 | Fujitsu Limited | Software delivery system, center device, relaying device and user terminal device |
US5687354A (en) * | 1990-02-09 | 1997-11-11 | Harry M. Weiss | Memory system and method for protecting the contents of a ROM type memory |
US5737415A (en) * | 1994-08-10 | 1998-04-07 | Fujitsu Limited | Data management module, data reproduction management device and data reproduction management system |
US5758068A (en) * | 1995-09-19 | 1998-05-26 | International Business Machines Corporation | Method and apparatus for software license management |
US5761651A (en) * | 1994-08-10 | 1998-06-02 | Fujitsu Limited | Software charging system and software data utilization permitting device |
US5768387A (en) * | 1994-08-10 | 1998-06-16 | Fujitsu Limited | Key authentication method and key authentication apparatus |
US5784464A (en) * | 1995-05-02 | 1998-07-21 | Fujitsu Limited | System for and method of authenticating a client |
US5809298A (en) * | 1994-09-09 | 1998-09-15 | Fujitsu Limited | File server |
US5812661A (en) * | 1994-08-10 | 1998-09-22 | Fujitsu Limited | Software reproduction apparatus |
US5822291A (en) * | 1995-03-23 | 1998-10-13 | Zoom Television, Inc. | Mass storage element and drive unit therefor |
US5832083A (en) * | 1994-09-09 | 1998-11-03 | Fujitsu Limited | Method and device for utilizing data content |
US5835589A (en) * | 1995-04-12 | 1998-11-10 | Fujitsu Limited | Optical recording medium to store and access large volumes of data |
US5838791A (en) * | 1994-08-10 | 1998-11-17 | Fujitsu Limited | Encoder and decoder |
US5848154A (en) * | 1994-08-10 | 1998-12-08 | Fujitsu Limited | Apparatus for managing software using quantity |
US5875247A (en) * | 1994-09-09 | 1999-02-23 | Fujitsu Limited | System for decrypting encrypted software |
US5887192A (en) * | 1994-08-10 | 1999-03-23 | Fujitsu Limited | Software usage measurement apparatus for imposing a proper charge in accordance with number of times multimedia unit data of a software is being processed |
US5892900A (en) * | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US5910987A (en) * | 1995-02-13 | 1999-06-08 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US5920861A (en) * | 1997-02-25 | 1999-07-06 | Intertrust Technologies Corp. | Techniques for defining using and manipulating rights management data structures |
US5943422A (en) * | 1996-08-12 | 1999-08-24 | Intertrust Technologies Corp. | Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels |
US6000030A (en) * | 1996-06-20 | 1999-12-07 | Emc Corporation | Software fingerprinting and branding |
US6088452A (en) * | 1996-03-07 | 2000-07-11 | Northern Telecom Limited | Encoding technique for software and hardware |
US6101587A (en) * | 1997-09-30 | 2000-08-08 | Lg Semicon Co., Ltd. | Data protection circuit for semiconductor memory device |
US6112181A (en) * | 1997-11-06 | 2000-08-29 | Intertrust Technologies Corporation | Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information |
US6157721A (en) * | 1996-08-12 | 2000-12-05 | Intertrust Technologies Corp. | Systems and methods using cryptography to protect secure computing environments |
US6278984B1 (en) | 1994-09-09 | 2001-08-21 | Fujitsu Limited | Software processing apparatus writing software to a medium only if identification information in the software corresponds to identification information in the medium |
US6381740B1 (en) | 1997-09-16 | 2002-04-30 | Microsoft Corporation | Method and system for incrementally improving a program layout |
US20030046244A1 (en) * | 1997-11-06 | 2003-03-06 | Intertrust Technologies Corp. | Methods for matching, selecting, and/or classifying based on rights management and/or other information |
US6636970B2 (en) | 1995-02-14 | 2003-10-21 | Fujitsu Limited | Software encoding using a combination of two types of encoding and encoding type identification information |
US20030208680A1 (en) * | 1996-06-28 | 2003-11-06 | Shannon Byrne | System for dynamically encrypting content for secure internet commerce and providing embedded fulfillment software |
US6658568B1 (en) | 1995-02-13 | 2003-12-02 | Intertrust Technologies Corporation | Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management |
US20050177716A1 (en) * | 1995-02-13 | 2005-08-11 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US20050182956A1 (en) * | 1995-02-13 | 2005-08-18 | Intertrust Technologies Corporation | Trusted and secure techniques, systems and methods for item delivery and execution |
US20050251490A1 (en) * | 1996-02-26 | 2005-11-10 | Coley Christopher D | Method for determining whether a client software application is licensed |
US20060206397A1 (en) * | 1995-02-13 | 2006-09-14 | Intertrust Technologies Corp. | Cryptographic methods, apparatus and systems for storage media electronic right management in closed and connected appliances |
US20060224517A1 (en) * | 2005-04-04 | 2006-10-05 | Anirudha Shimpi | Systems and methods for delivering digital content to remote locations |
US20060242075A1 (en) * | 1995-02-13 | 2006-10-26 | Intertrust Technologies Corp. | Trusted infrastructure support systems, methods and techniques for secure electronic commerce, electronic transactions, commerce process control and automation, distributed computing and rights management |
US20060249576A1 (en) * | 2005-04-04 | 2006-11-09 | Mark Nakada | Systems and methods for providing near real-time collection and reporting of data to third parties at remote locations |
US20060265337A1 (en) * | 1996-02-26 | 2006-11-23 | Graphon Corporation | Automated system for management of licensed digital assets |
US20060265280A1 (en) * | 2005-04-04 | 2006-11-23 | Mark Nakada | Systems and methods for advertising on remote locations |
US20070061594A1 (en) * | 1995-02-13 | 2007-03-15 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US20070064943A1 (en) * | 1995-02-13 | 2007-03-22 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US7233948B1 (en) | 1998-03-16 | 2007-06-19 | Intertrust Technologies Corp. | Methods and apparatus for persistent control and protection of content |
US7243236B1 (en) | 1999-07-29 | 2007-07-10 | Intertrust Technologies Corp. | Systems and methods for using cryptography to protect secure and insecure computing environments |
US20090138975A1 (en) * | 2007-11-17 | 2009-05-28 | Uniloc Usa | System and Method for Adjustable Licensing of Digital Products |
CN100495339C (en) * | 2006-02-16 | 2009-06-03 | 联发科技股份有限公司 | Processing system capable of performing download and execution processes concurrently and related method thereof |
US20090287917A1 (en) * | 2008-05-19 | 2009-11-19 | Microsoft Corporation | Secure software distribution |
US7770230B2 (en) | 2002-04-22 | 2010-08-03 | Arvato Digital Services Canada, Inc. | System for dynamically encrypting content for secure internet commerce and providing embedded fulfillment software |
US7844835B2 (en) | 1995-02-13 | 2010-11-30 | Intertrust Technologies Corporation | Systems and methods for secure transaction management and electronic rights protection |
US20100324983A1 (en) * | 2009-06-22 | 2010-12-23 | Etchegoyen Craig S | System and Method for Media Distribution |
US20100325734A1 (en) * | 2009-06-19 | 2010-12-23 | Etchegoyen Craig S | Modular Software Protection |
US20100323790A1 (en) * | 2009-06-19 | 2010-12-23 | Etchegoyen Craig S | Devices and Methods for Auditing and Enforcing Computer Game Licenses |
CN105245949A (en) * | 2014-07-01 | 2016-01-13 | 三星电子株式会社 | Image processing apparatus and control method thereof |
US10223858B2 (en) | 2007-07-05 | 2019-03-05 | Mediaport Entertainment, Inc. | Systems and methods monitoring devices, systems, users and user activity at remote locations |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4246638A (en) * | 1978-09-14 | 1981-01-20 | Thomas William J | Method and apparatus for controlling usage of a programmable computing machine |
US4446519A (en) * | 1981-05-26 | 1984-05-01 | Corban International, Ltd. | Method and apparatus for providing security for computer software |
US4458315A (en) * | 1982-02-25 | 1984-07-03 | Penta, Inc. | Apparatus and method for preventing unauthorized use of computer programs |
US4471163A (en) * | 1981-10-05 | 1984-09-11 | Donald Thomas C | Software protection system |
US4513174A (en) * | 1981-03-19 | 1985-04-23 | Standard Microsystems Corporation | Software security method using partial fabrication of proprietary control word decoders and microinstruction memories |
US4525599A (en) * | 1982-05-21 | 1985-06-25 | General Computer Corporation | Software protection methods and apparatus |
US4550350A (en) * | 1983-07-19 | 1985-10-29 | Software Distribution Newtork, Inc. | Secure copy method and device for stored programs |
US4558176A (en) * | 1982-09-20 | 1985-12-10 | Arnold Mark G | Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software |
US4573119A (en) * | 1983-07-11 | 1986-02-25 | Westheimer Thomas O | Computer software protection system |
US4583196A (en) * | 1983-10-28 | 1986-04-15 | Honeywell Inc. | Secure read only memory |
US4584665A (en) * | 1982-05-06 | 1986-04-22 | U.S. Philips Corporation | Arrangement for protecting against the unauthorized reading of program words stored in a memory |
US4584641A (en) * | 1983-08-29 | 1986-04-22 | Paul Guglielmino | Copyprotecting system for software protection |
US4590557A (en) * | 1983-09-12 | 1986-05-20 | Pitney Bowes Inc. | Method and apparatus for controlling software configurations in data processing systems |
US4593353A (en) * | 1981-10-26 | 1986-06-03 | Telecommunications Associates, Inc. | Software protection method and apparatus |
-
1984
- 1984-02-29 US US06/584,713 patent/US4646234A/en not_active Expired - Fee Related
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4246638A (en) * | 1978-09-14 | 1981-01-20 | Thomas William J | Method and apparatus for controlling usage of a programmable computing machine |
US4513174A (en) * | 1981-03-19 | 1985-04-23 | Standard Microsystems Corporation | Software security method using partial fabrication of proprietary control word decoders and microinstruction memories |
US4446519A (en) * | 1981-05-26 | 1984-05-01 | Corban International, Ltd. | Method and apparatus for providing security for computer software |
US4471163A (en) * | 1981-10-05 | 1984-09-11 | Donald Thomas C | Software protection system |
US4593353A (en) * | 1981-10-26 | 1986-06-03 | Telecommunications Associates, Inc. | Software protection method and apparatus |
US4458315A (en) * | 1982-02-25 | 1984-07-03 | Penta, Inc. | Apparatus and method for preventing unauthorized use of computer programs |
US4584665A (en) * | 1982-05-06 | 1986-04-22 | U.S. Philips Corporation | Arrangement for protecting against the unauthorized reading of program words stored in a memory |
US4525599A (en) * | 1982-05-21 | 1985-06-25 | General Computer Corporation | Software protection methods and apparatus |
US4558176A (en) * | 1982-09-20 | 1985-12-10 | Arnold Mark G | Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software |
US4573119A (en) * | 1983-07-11 | 1986-02-25 | Westheimer Thomas O | Computer software protection system |
US4550350A (en) * | 1983-07-19 | 1985-10-29 | Software Distribution Newtork, Inc. | Secure copy method and device for stored programs |
US4584641A (en) * | 1983-08-29 | 1986-04-22 | Paul Guglielmino | Copyprotecting system for software protection |
US4590557A (en) * | 1983-09-12 | 1986-05-20 | Pitney Bowes Inc. | Method and apparatus for controlling software configurations in data processing systems |
US4583196A (en) * | 1983-10-28 | 1986-04-15 | Honeywell Inc. | Secure read only memory |
Cited By (130)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5155829A (en) * | 1986-01-21 | 1992-10-13 | Harry M. Weiss | Memory system and method for protecting the contents of a ROM type memory |
US4868736A (en) * | 1986-08-16 | 1989-09-19 | Runtime Innovations Limited | Code operated access control system for electronic data store |
US5410598A (en) * | 1986-10-14 | 1995-04-25 | Electronic Publishing Resources, Inc. | Database usage metering and protection system and method |
US5050213A (en) * | 1986-10-14 | 1991-09-17 | Electronic Publishing Resources, Inc. | Database usage metering and protection system and method |
US4977594A (en) * | 1986-10-14 | 1990-12-11 | Electronic Publishing Resources, Inc. | Database usage metering and protection system and method |
US5109413A (en) * | 1986-11-05 | 1992-04-28 | International Business Machines Corporation | Manipulating rights-to-execute in connection with a software copy protection mechanism |
WO1988009971A1 (en) * | 1987-06-03 | 1988-12-15 | Personal Cad Systems, Inc. | Security system having selective software program locks utilizing removable pla keys to allow hardware security lock updates |
WO1990001736A1 (en) * | 1988-08-01 | 1990-02-22 | Philippe Pionchon | Method and device for the protection and universalization of a software |
FR2634917A1 (en) * | 1988-08-01 | 1990-02-02 | Pionchon Philippe | METHOD AND DEVICE FOR PROTECTING SOFTWARE, ESPECIALLY AGAINST UNAUTHORIZED COPIES |
US5099516A (en) * | 1989-06-12 | 1992-03-24 | Dell Corporate Services Corporation | Digital computer code word identification system |
US4987595A (en) * | 1989-09-11 | 1991-01-22 | Motorola, Inc. | Secure cryptographic processor arrangement |
US5687354A (en) * | 1990-02-09 | 1997-11-11 | Harry M. Weiss | Memory system and method for protecting the contents of a ROM type memory |
US5500949A (en) * | 1990-03-27 | 1996-03-19 | Kabushiki Kaisha Toshiba | Microprocessor system for inhibiting access to memory by checking specific address and specific codes |
WO1992009160A1 (en) | 1990-11-07 | 1992-05-29 | Tau Systems Corporation | A secure system for activating personal computer software at remote locations |
US5341429A (en) * | 1992-12-04 | 1994-08-23 | Testdrive Corporation | Transformation of ephemeral material |
US5559884A (en) * | 1994-06-30 | 1996-09-24 | Microsoft Corporation | Method and system for generating and auditing a signature for a computer program |
US5812661A (en) * | 1994-08-10 | 1998-09-22 | Fujitsu Limited | Software reproduction apparatus |
US5680453A (en) * | 1994-08-10 | 1997-10-21 | Fujitsu Limited | Software delivery system, center device, relaying device and user terminal device |
USRE40547E1 (en) | 1994-08-10 | 2008-10-21 | Fujitsu Limited | Software reproduction apparatus |
US5737415A (en) * | 1994-08-10 | 1998-04-07 | Fujitsu Limited | Data management module, data reproduction management device and data reproduction management system |
US5887192A (en) * | 1994-08-10 | 1999-03-23 | Fujitsu Limited | Software usage measurement apparatus for imposing a proper charge in accordance with number of times multimedia unit data of a software is being processed |
US5761651A (en) * | 1994-08-10 | 1998-06-02 | Fujitsu Limited | Software charging system and software data utilization permitting device |
US5768387A (en) * | 1994-08-10 | 1998-06-16 | Fujitsu Limited | Key authentication method and key authentication apparatus |
US5848154A (en) * | 1994-08-10 | 1998-12-08 | Fujitsu Limited | Apparatus for managing software using quantity |
US5838791A (en) * | 1994-08-10 | 1998-11-17 | Fujitsu Limited | Encoder and decoder |
US5875247A (en) * | 1994-09-09 | 1999-02-23 | Fujitsu Limited | System for decrypting encrypted software |
US6278984B1 (en) | 1994-09-09 | 2001-08-21 | Fujitsu Limited | Software processing apparatus writing software to a medium only if identification information in the software corresponds to identification information in the medium |
US5832083A (en) * | 1994-09-09 | 1998-11-03 | Fujitsu Limited | Method and device for utilizing data content |
US5809298A (en) * | 1994-09-09 | 1998-09-15 | Fujitsu Limited | File server |
US5533124A (en) * | 1994-12-07 | 1996-07-02 | Smith; Jeannette K. | Electronic trading card system |
US7844835B2 (en) | 1995-02-13 | 2010-11-30 | Intertrust Technologies Corporation | Systems and methods for secure transaction management and electronic rights protection |
US6427140B1 (en) | 1995-02-13 | 2002-07-30 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US6237786B1 (en) | 1995-02-13 | 2001-05-29 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US20050182956A1 (en) * | 1995-02-13 | 2005-08-18 | Intertrust Technologies Corporation | Trusted and secure techniques, systems and methods for item delivery and execution |
US5910987A (en) * | 1995-02-13 | 1999-06-08 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US5915019A (en) * | 1995-02-13 | 1999-06-22 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US5917912A (en) * | 1995-02-13 | 1999-06-29 | Intertrust Technologies Corporation | System and methods for secure transaction management and electronic rights protection |
US8543842B2 (en) | 1995-02-13 | 2013-09-24 | Intertrust Technologies Corporation | System and methods for secure transaction management and electronics rights protection |
US20060212370A1 (en) * | 1995-02-13 | 2006-09-21 | Intertrust Technologies Corp. | Cryptographic methods, apparatus and systems for storage media electronic rights management in closed and connected appliances |
US20060206397A1 (en) * | 1995-02-13 | 2006-09-14 | Intertrust Technologies Corp. | Cryptographic methods, apparatus and systems for storage media electronic right management in closed and connected appliances |
US5982891A (en) * | 1995-02-13 | 1999-11-09 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US20060200392A1 (en) * | 1995-02-13 | 2006-09-07 | Intertrust Technologies Corp. | Cryptographic methods, apparatus and systems for storage media electronic rights management in closed and connected appliances |
US7051212B2 (en) | 1995-02-13 | 2006-05-23 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US8185473B2 (en) | 1995-02-13 | 2012-05-22 | Intertrust Technologies Corporation | Trusted infrastructure support systems, methods and techniques for secure electronic commerce, electronic transactions, commerce process control and automation, distributed computing, and rights management |
US7917749B2 (en) | 1995-02-13 | 2011-03-29 | Intertrust Technologies Corporation | Systems and methods for secure transaction management and electronic rights protection |
US20050246541A1 (en) * | 1995-02-13 | 2005-11-03 | Intertrust Technologies Corporation | Trusted and secure techniques, systems and methods for item delivery and execution |
US20060242075A1 (en) * | 1995-02-13 | 2006-10-26 | Intertrust Technologies Corp. | Trusted infrastructure support systems, methods and techniques for secure electronic commerce, electronic transactions, commerce process control and automation, distributed computing and rights management |
US6185683B1 (en) | 1995-02-13 | 2001-02-06 | Intertrust Technologies Corp. | Trusted and secure techniques, systems and methods for item delivery and execution |
US8751793B2 (en) | 1995-02-13 | 2014-06-10 | Intertrust Technologies Corp. | Trusted infrastructure support systems, methods and techniques for secure electronic commerce transaction and rights management |
US20060224903A1 (en) * | 1995-02-13 | 2006-10-05 | Ginter Karl L | System and methods for secure transaction management and electronics rights protection |
US20040103305A1 (en) * | 1995-02-13 | 2004-05-27 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US6253193B1 (en) | 1995-02-13 | 2001-06-26 | Intertrust Technologies Corporation | Systems and methods for the secure transaction management and electronic rights protection |
US20060212722A1 (en) * | 1995-02-13 | 2006-09-21 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US20050177716A1 (en) * | 1995-02-13 | 2005-08-11 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US20040123129A1 (en) * | 1995-02-13 | 2004-06-24 | Intertrust Technologies Corp. | Trusted infrastructure support systems, methods and techniques for secure electronic commerce transaction and rights management |
US6363488B1 (en) | 1995-02-13 | 2002-03-26 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US20070192252A1 (en) * | 1995-02-13 | 2007-08-16 | Intertrust Technologies | Cryptographic methods, apparatus and systems for storage media electronic rights management in closed and connected appliances |
US6389402B1 (en) | 1995-02-13 | 2002-05-14 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US6658568B1 (en) | 1995-02-13 | 2003-12-02 | Intertrust Technologies Corporation | Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management |
US20070185813A1 (en) * | 1995-02-13 | 2007-08-09 | Intertrust Technologies Corp. | Cryptographic methods, apparatus and systems for storage media electronic rights management in closed and connected appliances |
US20070064943A1 (en) * | 1995-02-13 | 2007-03-22 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US20070061594A1 (en) * | 1995-02-13 | 2007-03-15 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US6636970B2 (en) | 1995-02-14 | 2003-10-21 | Fujitsu Limited | Software encoding using a combination of two types of encoding and encoding type identification information |
US5822291A (en) * | 1995-03-23 | 1998-10-13 | Zoom Television, Inc. | Mass storage element and drive unit therefor |
US5835589A (en) * | 1995-04-12 | 1998-11-10 | Fujitsu Limited | Optical recording medium to store and access large volumes of data |
US5784464A (en) * | 1995-05-02 | 1998-07-21 | Fujitsu Limited | System for and method of authenticating a client |
US5758068A (en) * | 1995-09-19 | 1998-05-26 | International Business Machines Corporation | Method and apparatus for software license management |
US20030163428A1 (en) * | 1996-01-11 | 2003-08-28 | Veridian Information Solutions, Inc. | System for controlling access and distribution of digital property |
US20090222673A1 (en) * | 1996-01-11 | 2009-09-03 | Verifides Technology Corporation | System for controlling access and distribution of digital property |
WO1997025798A1 (en) * | 1996-01-11 | 1997-07-17 | Mrj, Inc. | System for controlling access and distribution of digital property |
US5933498A (en) * | 1996-01-11 | 1999-08-03 | Mrj, Inc. | System for controlling access and distribution of digital property |
US6314409B2 (en) | 1996-01-11 | 2001-11-06 | Veridian Information Solutions | System for controlling access and distribution of digital property |
US20050273436A1 (en) * | 1996-02-26 | 2005-12-08 | Coley Christopher D | Method for determining by a license server whether a client software application is licensed |
US8510226B2 (en) | 1996-02-26 | 2013-08-13 | Graphon Corporation | Method for synchronous encryption between a client and a licensing agent |
US20050251490A1 (en) * | 1996-02-26 | 2005-11-10 | Coley Christopher D | Method for determining whether a client software application is licensed |
US20050251489A1 (en) * | 1996-02-26 | 2005-11-10 | Coley Christopher D | Method for evaluating software freely distributed over the internet |
US20060265337A1 (en) * | 1996-02-26 | 2006-11-23 | Graphon Corporation | Automated system for management of licensed digital assets |
US20050273437A1 (en) * | 1996-02-26 | 2005-12-08 | Coley Christopher D | Method for synchronous encryption between a client and a licensing agent |
US20050289074A1 (en) * | 1996-02-26 | 2005-12-29 | Coley Christopher D | System for updating a licensing cache memory |
US20060085356A1 (en) * | 1996-02-26 | 2006-04-20 | Graphon Corporation | Method for purchasing a software license over a public network |
US20060106730A1 (en) * | 1996-02-26 | 2006-05-18 | Graphon Corporation | Retro-fitted network licensing system |
US20060106732A1 (en) * | 1996-02-26 | 2006-05-18 | Graphon Corporation | Network licensing system for portable computers |
US6088452A (en) * | 1996-03-07 | 2000-07-11 | Northern Telecom Limited | Encoding technique for software and hardware |
US6000030A (en) * | 1996-06-20 | 1999-12-07 | Emc Corporation | Software fingerprinting and branding |
US20110010299A1 (en) * | 1996-06-28 | 2011-01-13 | Shannon Lee Byrne | System for dynamically encrypting content for secure internet commerce and providing embedded fulfillment software |
US7356847B2 (en) * | 1996-06-28 | 2008-04-08 | Protexis, Inc. | System for dynamically encrypting content for secure internet commerce and providing embedded fulfillment software |
US20030208680A1 (en) * | 1996-06-28 | 2003-11-06 | Shannon Byrne | System for dynamically encrypting content for secure internet commerce and providing embedded fulfillment software |
US6618484B2 (en) | 1996-08-12 | 2003-09-09 | Intertrust Technologies Corporation | Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels |
US5943422A (en) * | 1996-08-12 | 1999-08-24 | Intertrust Technologies Corp. | Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels |
US8307212B2 (en) | 1996-08-12 | 2012-11-06 | Intertrust Technologies Corp. | Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels |
US20060248353A1 (en) * | 1996-08-12 | 2006-11-02 | Shear Victor H | Systems and methods using cryptography to protect secure computing environments |
US7925898B2 (en) | 1996-08-12 | 2011-04-12 | Intertrust Technologies Corp. | Systems and methods using cryptography to protect secure computing environments |
US6157721A (en) * | 1996-08-12 | 2000-12-05 | Intertrust Technologies Corp. | Systems and methods using cryptography to protect secure computing environments |
US6240185B1 (en) | 1996-08-12 | 2001-05-29 | Intertrust Technologies Corporation | Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels |
US6292569B1 (en) | 1996-08-12 | 2001-09-18 | Intertrust Technologies Corp. | Systems and methods using cryptography to protect secure computing environments |
US20030041239A1 (en) * | 1996-08-12 | 2003-02-27 | Intertrust Technologies Corp. | Systems and methods using cryptography to protect secure computing environments |
US20020023214A1 (en) * | 1996-08-12 | 2002-02-21 | Intertrust Technologies Corp. | Systems and methods using cryptography to protect secure computing environments |
US6449367B2 (en) | 1996-08-12 | 2002-09-10 | Intertrust Technologies Corp. | Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels |
US20070226807A1 (en) * | 1996-08-30 | 2007-09-27 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US5892900A (en) * | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US8533851B2 (en) | 1996-08-30 | 2013-09-10 | Intertrust Technologies Corporation | Systems and methods for secure transaction management and electronic rights protection |
US20030163431A1 (en) * | 1996-08-30 | 2003-08-28 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US6138119A (en) * | 1997-02-25 | 2000-10-24 | Intertrust Technologies Corp. | Techniques for defining, using and manipulating rights management data structures |
US5920861A (en) * | 1997-02-25 | 1999-07-06 | Intertrust Technologies Corp. | Techniques for defining using and manipulating rights management data structures |
US6381740B1 (en) | 1997-09-16 | 2002-04-30 | Microsoft Corporation | Method and system for incrementally improving a program layout |
US6101587A (en) * | 1997-09-30 | 2000-08-08 | Lg Semicon Co., Ltd. | Data protection circuit for semiconductor memory device |
US6112181A (en) * | 1997-11-06 | 2000-08-29 | Intertrust Technologies Corporation | Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information |
US20030069749A1 (en) * | 1997-11-06 | 2003-04-10 | Intertrust Technologies Corp. | Methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information |
US20030046244A1 (en) * | 1997-11-06 | 2003-03-06 | Intertrust Technologies Corp. | Methods for matching, selecting, and/or classifying based on rights management and/or other information |
US7233948B1 (en) | 1998-03-16 | 2007-06-19 | Intertrust Technologies Corp. | Methods and apparatus for persistent control and protection of content |
US20100115283A1 (en) * | 1999-07-29 | 2010-05-06 | Intertrust Technologies Corp. | Systems and methods for using cryptography to protect secure and insecure computing environments |
US7243236B1 (en) | 1999-07-29 | 2007-07-10 | Intertrust Technologies Corp. | Systems and methods for using cryptography to protect secure and insecure computing environments |
US7770230B2 (en) | 2002-04-22 | 2010-08-03 | Arvato Digital Services Canada, Inc. | System for dynamically encrypting content for secure internet commerce and providing embedded fulfillment software |
US10210529B2 (en) | 2005-04-04 | 2019-02-19 | Mediaport Entertainment, Inc. | Systems and methods for advertising on remote locations |
US20060224517A1 (en) * | 2005-04-04 | 2006-10-05 | Anirudha Shimpi | Systems and methods for delivering digital content to remote locations |
US20060249576A1 (en) * | 2005-04-04 | 2006-11-09 | Mark Nakada | Systems and methods for providing near real-time collection and reporting of data to third parties at remote locations |
US20060265280A1 (en) * | 2005-04-04 | 2006-11-23 | Mark Nakada | Systems and methods for advertising on remote locations |
CN100495339C (en) * | 2006-02-16 | 2009-06-03 | 联发科技股份有限公司 | Processing system capable of performing download and execution processes concurrently and related method thereof |
US10223858B2 (en) | 2007-07-05 | 2019-03-05 | Mediaport Entertainment, Inc. | Systems and methods monitoring devices, systems, users and user activity at remote locations |
US20090138975A1 (en) * | 2007-11-17 | 2009-05-28 | Uniloc Usa | System and Method for Adjustable Licensing of Digital Products |
US8566960B2 (en) | 2007-11-17 | 2013-10-22 | Uniloc Luxembourg S.A. | System and method for adjustable licensing of digital products |
US20090287917A1 (en) * | 2008-05-19 | 2009-11-19 | Microsoft Corporation | Secure software distribution |
US20100323790A1 (en) * | 2009-06-19 | 2010-12-23 | Etchegoyen Craig S | Devices and Methods for Auditing and Enforcing Computer Game Licenses |
US20100325734A1 (en) * | 2009-06-19 | 2010-12-23 | Etchegoyen Craig S | Modular Software Protection |
US9633183B2 (en) | 2009-06-19 | 2017-04-25 | Uniloc Luxembourg S.A. | Modular software protection |
US10489562B2 (en) | 2009-06-19 | 2019-11-26 | Uniloc 2017 Llc | Modular software protection |
US20100324983A1 (en) * | 2009-06-22 | 2010-12-23 | Etchegoyen Craig S | System and Method for Media Distribution |
CN105245949A (en) * | 2014-07-01 | 2016-01-13 | 三星电子株式会社 | Image processing apparatus and control method thereof |
CN105245949B (en) * | 2014-07-01 | 2019-02-15 | 三星电子株式会社 | Image processing equipment and its control method |
US10395051B2 (en) | 2014-07-01 | 2019-08-27 | Samsung Electronics Co., Ltd. | Image processing apparatus and control method thereof |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4646234A (en) | Anti-piracy system using separate storage and alternate execution of selected proprietary and public portions of computer programs | |
US4959861A (en) | Security system for computer software | |
US5291598A (en) | Method and system for decentralized manufacture of copy-controlled software | |
US5056009A (en) | IC memory card incorporating software copy protection | |
US5963980A (en) | Microprocessor-based memory card that limits memory accesses by application programs and method of operation | |
US5047928A (en) | Billing system for computer software | |
EP0723226B1 (en) | Powerfail durable flash EEPROM upgrade apparatus and method | |
US6298443B1 (en) | Method and system for supplying a custom software image to a computer system | |
US5146575A (en) | Implementing privilege on microprocessor systems for use in software asset protection | |
JPS58101349A (en) | Program memory identification and data processing system | |
US4796181A (en) | Billing system for computer software | |
US4446519A (en) | Method and apparatus for providing security for computer software | |
US4937861A (en) | Computer software encryption apparatus | |
JPH05334072A (en) | Device and method for managing use of software | |
US7363507B2 (en) | Device and method of preventing pirated copies of computer programs | |
SG48001A1 (en) | A secure memory card | |
EP0817014A2 (en) | Software distribution medium and method of producing the medium | |
US5946497A (en) | System and method for providing microprocessor serialization using programmable fuses | |
EP0109504A2 (en) | Protection system for storage and input/output facilities and the like | |
US6725345B2 (en) | Object-oriented program with a memory accessing function | |
US7054121B2 (en) | Protection circuit for preventing unauthorized access to the memory device of a processor | |
JPH0896106A (en) | Ic card and ic card system | |
JPH07325712A (en) | Illicit copy preventing device for program | |
US20020129270A1 (en) | Electronic device for providing software protection | |
US6018712A (en) | Method and apparatus for remote program execution to use in computer software protection without the use of encryption |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: BRIGHAM YOUNG UNIVERSITY PROVO UT A UT CORP Free format text: ASSIGNMENT OF ASSIGNORS INTEREST.;ASSIGNORS:TOLMAN, J. LEONARD;EKSTROM, JOSEPH J.;REEL/FRAME:004249/0947 Effective date: 19840229 |
|
CC | Certificate of correction | ||
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
REMI | Maintenance fee reminder mailed | ||
LAPS | Lapse for failure to pay maintenance fees | ||
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 19910224 |