Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
GB2240202A - Copy protection for memory devices - Google Patents
[go: Go Back, main page]

GB2240202A - Copy protection for memory devices - Google Patents

Copy protection for memory devices Download PDF

Info

Publication number
GB2240202A
GB2240202A GB9101302A GB9101302A GB2240202A GB 2240202 A GB2240202 A GB 2240202A GB 9101302 A GB9101302 A GB 9101302A GB 9101302 A GB9101302 A GB 9101302A GB 2240202 A GB2240202 A GB 2240202A
Authority
GB
United Kingdom
Prior art keywords
memory device
data
programming
indeterminate
logic state
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.)
Withdrawn
Application number
GB9101302A
Other versions
GB9101302D0 (en
Inventor
Phillip Edmund Derisle Wakeman
Graham Peter Sealey
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CONS TECHNOLOGY Ltd
Original Assignee
CONS TECHNOLOGY Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CONS TECHNOLOGY Ltd filed Critical CONS TECHNOLOGY Ltd
Publication of GB9101302D0 publication Critical patent/GB9101302D0/en
Publication of GB2240202A publication Critical patent/GB2240202A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

A memory device capable of storing data, the data having at least two logic states, has at least one specially encoded data area in which the logic state of the data is indeterminate. Apparatus for and a method of programming the memory device are also included within the present invention. These provide, 7, 8, for varying the duration and voltage of programming pulses to achieve the indeterminate state, as detected by a sampling procedure (Fig 2). Computer software to be protected checks for the presence of the indeterminate data in the memory device. <IMAGE>

Description

COPY PRaI ECIION FOR MEMORY D1DVICES This invention relates to copy protection of memory devices.
The making of unauthorised copies of software contained in memory devices, usually known as pirating, is one of the largest problems presently facing the computer industry. Numerous attempts have been made to provide copy protection for memory devices.
One method of providing copy protection is to provide additional hardware that provides suitably coded responses to queries by the software as it is running. This has disadvantages as additional hardware is required which is not only expensive, but can also be impractical as the user may wish to have a number of copy protected programs resident in the computer system. Accommodation of the additional hardware can therefore be difficult.
Another copy protection device is an integrated circuit device arrangement which comprises first and second devices mounted one over the other on a substrate that provides a coupling between the devices. The first device acts as a standard memory device wherein the second device, known as a PAL (program array logic), is operable to switch the outputs of the first device only upon the application of a certain code. This has disadvantages as a new integrated circuit device arrangement is required to be made and the ensuing copy protection cannot be applied to standard memory devices.
Furthermore space in electronic devices is usually at a premium and surface mount technology is often used. The use of the second device increases the height of the integrated circuit device which can be undesirable in some situations.
Another device capable of providing copy protection for memory devices is the keyed-access EPROM or KEPROM. Two such devices are needed to effect a protected system.Before the operational code and/or data stored on a EPROM can be accessed, an authentication handshake is required to pass between the two devices to 'unlock' the storage area of the device containing the operational code and/or data. A programmable delay counter within one of the KEPROMs slows attempts to break the code of the authenticated handshake. This system requires a separate hardware component as well as specialised components and cannot be utilised with standard EPROMs.
It will be desirable if there could be provided a copy protection system which does not require additional hardware to be incorporated into the system and can be used on existing standard memory devices.
Memory devices are used in a wide variety of applications and are usually used to store pure data and/or operational code for microprocessors, microcomputers, computers or digital systems. Memory devices can be a separate or an integral part of the microcomputer or microprocessor system. In this specification, reference shall be made to memories which are programmable types that retain data without the application of power.
These include semiconductor devices, magnetic media or optical media.
It should be appreciated however that the present invention could apply to other memory devices.
Some devices that this invention is applicable to include ultra-violet erasable programmable read only memories (EPROMs), one time programmable read only memories (OTP ROMs), electrically erasable programmable read only memories (EEPROMs), non-volatile random access memories (NOV RAMs) and microprocessors and microcomputers with any of the above types of memories incorporated as an integral part.
Discussion of memory devices shall now be restricted to semiconductor devices although the principles of the present invention can apply to other memory devices existing and in the future including optical, magnetic and read/write molecular devices.
Usually memory devices are used or designed for the storage of digital data, often in binary form. Data stored in binary form is in either one of two logic states commonly designated by '1' or '0'. The user is concerned to ensure that the two states are clearly defined and distinct from each other. Data is usually stored as a quantity of charge embedded in the memory device. For instance zero charge or a charge below a particular logic threshold is designated as the '1' state and a full charge or a charge above the designated logic threshold is designated as the '0' state.
The term logic threshold is defined herein as the conditions on a memory device at which the logic state is indeterminate.
The present invention can also be applied to multi-state logic systems as well, wherein there may be more than just two logic states, each represented by a different quanta of charge.
The quantity of charge stored is controlled by the duration and magnitude of applied programming voltages. The decision threshold for the logic states (logic threshold) is subject to variability due to a number factors such as electronic noise, temperature change, humidity and device voltage supply change.
It is an object of the present invention to provide both apparatus and a method which addresses the above issues.
Further objects and advantages of the present invention will become apparent from the following description which is given by way of example.
SUMMARY OF THE INVENTION According to one aspect of the present invention there is provided a memory device capable of storing data, the data having at least two logic states, wherein the memory device has at least one specially encoded data area in which the logic state of the data is indeterminate.
BRIEF DESCRIPTION OF TIE INVENTION The logic state of a bit which is programmed in accordance with the present invention at the logic state threshold level will vary according to such external parameters included but not limited to electrical noise, temperature change, humidity or device voltage supply change. Thus, when the contents of the memory device is copied in the usual way, each copy will differ according to the external parameters present when the copying is taking place. The copies themselves will not have indeterminate logic states as these will not have been programmed by apparatus operating in accordance with the present invention. The copies will instead have defined logic states as read at the time of copying the original memory device.
The copier will not immediately be aware that he has unsuccessfully tried to copy the memory device, unless the copier is sufficiently astute to notice that the checksum (CHKSUM) is different for each copy.
Problems occur for the copier when the operational software in the memory device is running. Within the operational software there may be routines which check the addresses which were originally programmed with indeterminate logic states and act accordingly. For instance, if the data detected from the addresses where the indeterminate logic states are expected is constant, then the operational software causes appropriate action to be taken. Appropriate action may also be taken if indeterminate data is found where constant data is expected. The action may be to render the use of the system to which the memory device is attached nonfunctional. Alternatively some other indication that unauthorised copying has been detected may be given - perhaps a warning. The appropriate action may be to cause the operation of the software to gradually break down over a period of time. The program will operate as normal if the indeterminate logic states are found in the expected format.
In some cases the operational code can check the actual format of the specially coded data areas as well as just determining whether the data logic state is indeterminate.
Although it may theoretically be possible for an unauthorised copier to work through the operational code and identify the checking routine or the indeterminate logic state addresses, the interlocking of the checking routine with the rest of the software by an innovative programmer would render this task extremely difficult to achieve.
The operational code may in some embodiments not be within the memory device itself but in the computer system or in another memory device.
It becomes apparent that the present invention has an advantage over the prior art in that it uses standard memory devices and does not usually require additional hardware to be incorporated into the system.
One embodiment of the present invention provides apparatus which can program areas of a memory device at the logic threshold value. A typical EPROM programmer comprises a central processing unit (CPU), read only memory (ROM) and random access memory (RAM). The ROM and RAM are used for calculations, data manipulation and general microprocessor execution requirements. A separate block of RAM is set aside for data storage to buffer data to be programmed into the memory device. The data to be programmed into the memory device is loaded into the data buffer via either a serial or parallel data link connected to a host computer. Alternatively the data may be loaded from a preprogrammed device installed in the programmer itself. The programmer may also be controlled via a serial communications port connected to either a terminal or host computer.
One embodiment of the present invention provides an encoder which has the above features as well as the ability to only program specific data areas or address locations or even specific bits within a single address location in the memory device at a logic threshold value. These data areas may be in the operational code and/or in the normal data areas. To achieve this, the encoder may have full control over the programming time.
Alternatively the encoder may have control over the programming voltage level. In some embodiments the encoder may have control over the programming time and programming voltage level. In addition to this, the software associated with the encoder may have the ability to change the data applied to the memory device during the programming of an address location, which also effectively results in another means by which the programming duration of a location may be varied.
The programming characteristics of memory devices vary from batch to batch and between different manufacturers. Thus, the logic threshold will differ for each memory device. The threshold characteristics may be apparent from manufacturers' specifications. As an alternative to relying on the manufacturers' specifications, the applicants have devised an algorithm which can be used to ensure accurate programming of many suitable memory devices by determining their particular threshold characteristics through the variation of parameters on the memory device..
In one embodiment of the present invention the encoder tests a small specified block of memory in the memory device to determine the optimum programming characteristics to produce indeterminate bits with respect to program voltage and program time. This is achieved by incrementally programming sample address locations by using a very short effective program pulse width, up to the point where the logic state of the bits become indeterminate. In order to gain greater control, should the incremental program pulse width be deemed too coarse, the program voltage may also have to be varied because as when the programming voltage is reduced, longer pulses will be required to program locations.
The encoder then starts the test routine on another area of memory until an indeterminate state is produced. Alternatively the block of memory can be reprogrammed. Standard statistical methods are then used to obtain the optimum programming characteristics from the sample locations already programmed.
A method of programming the memory device may include adjusting the range of programming pulses in either time and/or voltage so that the specially encoded data area has sufficient span of stored charges to ensure that when the device temperature, supply voltage, or other operational parameters change or the device ages or memory cells lose charge, there will continue to be data of an indeterminate logic state when the specially encoded data area is sampled.
The addresses on the memory device which are programmed with indeterminate logic states may be scattered throughout the memory device. Single bits only within an address may also be indeterminately programmed wherein the rest of the address may be programmed in a definite logic state. The data addresses for the specially encoded data can in some instances be determined by an encryption algorithm which has a particular starting seed or key. While the algorithm may be known to the users of the memory device, the seed or key will not, thus adding a further element of copy protection.
The present invention not only provides a memory device and apparatus and method for programming the memory device but also a computer system which includes the memory device. In one embodiment the computer system may contain the operational code and include a memory device with some data in indeterminate logic states. The term computer system should be interpreted in its broadest possible sense and be seen to cover all systems that operate on logic instructions.
Aspects of the present invention will now be discussed by example only with reference to the accompanying drawings in which: BRIEF DESCRIPIION OF THE DRAWINGS: Figure 1: is a block diagram of an encoder in accordance with one embodiment of the present invention, and Figure 2: is a flow chart of one possible algorithm for use in determining logic threshold characteristics of a memory device.
DESCRIPTION OF PREFERRED EMBODIMENTS OF THIS INVENTION: With respect to Figure 1, there is illustrated the block components which form part of an encoder in accordance with one possible embodiment of the present invention.
The encoder includes a microprocessor 1, an encoder memory 2 and a data memory 3, all of which are standard components that can be found in standard EPROM programmers. The microprocessor 1 is a sixteen bit microprocessor, however it should be appreciated that a microprocessor of a different size can be used. The encoder memory 2 includes both RAM and ROM and is used for data manipulation, calculations and general microprocessor execution requirements. The data memory 3 is comprised of RAM and is merely a buffer for data to be programmed into the memory device 4. In most embodiments, it is envisaged that the memory device 4 would be a semi-conductor integrated circuit chip.
The microprocessor 1, encoder memory 2 and data memory 3 are all connected by communication linkages to an address/data and control bus 5. A communications controller 6 which has serial and/or parallel ports for interface to a host computer or terminal is also connected to the control bus 5.
Also linked to the control bus 5 is a programmable timer 7 and a programmable voltage reference 8. It is these two components 7 and 8 that enable certain addresses and bits on the memory device 4 to be programmed to a logic threshold value.
Also included in the encoder is a buffer/driver 9 and data latches/buffer 10.
Figure 2 illustrates one possible algorithm by which the encoder can be operated. First, a small specified block of memory within the memory device is sampled. Initially each bit should read as logic state '1' and is not variable. Next a small programming pulse of a particular width (time) is sent to the bits which are resampled. If the logic state is not variable and has not changed from the original logic state, then the process of incrementing the programming pulse to the specified block of memory continues until there is a change. If an indeterminate logic state is reached, then by standard statistical methods the optimum programming characteristics are determined from identifying the parameters of pulse width and program voltage that lead to the indeterminate programming. If there is a definite logic change which is non-variable, then it is apparent that the program pulse widths used were too coarse to produce the required indeterminate programming. The program voltage is then reduced which means longer pulses will be required to program the locations.
A different area of memory is tested next and the procedure of sampling and incrementing the programming time is resumed until an indeterminate logic state is detected.
Aspects of the present invention have been discussed by way of example only and it should be appreciated that modifications and additions may be made thereto without departing from the scope thereof as defined in the appended claims.

Claims (21)

WHAT WE CLAIM IS:
1. A memory device capable of storing data, the data having at least two logic states, wherein the memory device has at least one specially encoded data area in which the logic state of the data is indeterminate.
2. A memory device as claimed in claim 1 wherein at least one of the specially encoded data areas is a bit within the data located at a particular address.
3. A memory device as claimed in either claim 1 or claim 2 wherein at least one of the specially encoded data areas is scattered throughout the normal data areas.
4. A memory device as claimed in any one of claims 1 to 3 wherein at least one of the specially encoded data areas is within the operational code.
5. A memory device as claimed in any one of claims 1 to 4 wherein the memory device contains operational code which, when executed, tests the specially encoded data areas.
6. A memory device as claimed in claim 5 wherein the operational code when executed causes appropriate action to be taken if an indeterminate logic state is not detected in the data areas the operational code expects an indeterminate logic state.
7. A memory device as claimed in either claim 5 or claim 6 wherein the operational code when executed causes appropriate action to be taken if a determinate logic state is not detected in the data areas the operational code expects a determinate logic state.
8. A computer system containing a memory device as claimed in any one of claims 1 to 7.
9. A computer system as claimed in claim 8 wherein the computer system contains operational code separate from the memory device which tests for the speciaily encoded data areas.
10. A method of programming a memory device capable of storing data which has at least two logic states, wherein at least one data area within the memory device is programmed so that the logic state of the data is indeterminate.
11. A method of determining the logic threshold state of a data area within a memory device characterised by the steps of: a) sampling a data area of the memory device, and b) programming the sampled data for a short duration, and c) sampling the data area to determine whether the logic state is indeterminate, and d) if the logic state is unchanged from that of step a), then steps b) and c) are repeated until an indeterminate state is reached.
12. A method of determining the logic threshold state of a memory device as claimed in claim 11 characterised by the further steps of: e) ascertaining if the logic state has changed and is not indeterminate, and if so, then f) reducing the programming voltage, and g) selecting an unprogrammed area of memory and applying steps a) to d) of claim 12 to same.
13. Apparatus for programming a memory device including means to vary parameters on the memory device which enables the memory device to be programmed with data in an indeterminate logic state.
14. Apparatus for programming a memory device as claimed in claim 13 including means to vary the programming time.
15. Apparatus for programming a memory device as claimed in either claim 13 or claim 14 including means to vary the input programming voltage.
16. Apparatus for programming a memory device as claimed in any one of claims 13 to 15 including means to make some data already programmed into the memory device indeterminate.
17. A method of programming a memory device as claimed in claim 9 including adjusting the range of programming pulses in either time and/or voltage so that the specially encoded data area has sufficient span of stored charges to ensure that when the device temperature, supply voltage, or other operational parameters change or the device ages or memory cells lose charge, there will continue to be data of an indeterminate logic state when the specially encoded data area is sampled.
18. A memory device substantially as herein described with reference to and as illustrated by the accompanying drawings.
19. A computer system substantially as herein described with reference to and as illustrated by the accompanying drawings.
20. A method of programming a memory device substantially as herein described with reference to and as illustrated by the accompanying drawings.
21. Apparatus for programming a memory device substantially as herein described with reference to and as illustrated by the accompanying drawings.
GB9101302A 1990-01-20 1991-01-21 Copy protection for memory devices Withdrawn GB2240202A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
NZ23001590 1990-01-20

Publications (2)

Publication Number Publication Date
GB9101302D0 GB9101302D0 (en) 1991-03-06
GB2240202A true GB2240202A (en) 1991-07-24

Family

ID=19922927

Family Applications (1)

Application Number Title Priority Date Filing Date
GB9101302A Withdrawn GB2240202A (en) 1990-01-20 1991-01-21 Copy protection for memory devices

Country Status (2)

Country Link
AU (1) AU6948491A (en)
GB (1) GB2240202A (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0172439A2 (en) * 1984-08-13 1986-02-26 Verbatim Corporation Copy protected disk
GB2178574A (en) * 1985-07-27 1987-02-11 Tdk Corp Preventing copying of a magnetic recording

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0172439A2 (en) * 1984-08-13 1986-02-26 Verbatim Corporation Copy protected disk
GB2178574A (en) * 1985-07-27 1987-02-11 Tdk Corp Preventing copying of a magnetic recording

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ETI magazine, August 1983, pp 45-51, particularly pages 46-48. *
Practical Electronics magazine, October 1987, pp 48-53, particularly pages 49-51. *

Also Published As

Publication number Publication date
AU6948491A (en) 1991-07-25
GB9101302D0 (en) 1991-03-06

Similar Documents

Publication Publication Date Title
KR100734340B1 (en) Partitioned memory devices with different memory technology characteristics
US6026016A (en) Methods and apparatus for hardware block locking in a nonvolatile memory
EP0467355B1 (en) Security circuit for protecting data stored in an internal memory of a microcomputer
CN1078721C (en) Data protection circuit
US7093064B2 (en) Programming suspend status indicator for flash memory
US6209069B1 (en) Method and apparatus using volatile lock architecture for individual block locking on flash memory
US5838901A (en) Overridable data protection mechanism for PLDs
US10923203B2 (en) Semiconductor device and method of operating semiconductor device
EP0851358B1 (en) Processing system security
US6490685B1 (en) Storage device having testing function and memory testing method
JP2003519852A (en) Tamper-proof encapsulation of integrated circuits
EP1669863A2 (en) Secure booting apparatus and method
US5784577A (en) Automated control system for programming PLDs
US8607061B2 (en) Flash device security method utilizing a check register
US6711690B2 (en) Secure write blocking circuit and method for preventing unauthorized write access to nonvolatile memory
US5721877A (en) Method and apparatus for limiting access to nonvolatile memory device
US6879518B1 (en) Embedded memory with security row lock protection
US20180322278A1 (en) Secure integrated-circuit state management
US20070133280A1 (en) Semiconductor integrated circuit apparatus and electronic system
US20260023486A1 (en) Memory systems and operation methods thereof, host and operation methods thereof, and electronic apparatuses
US5642480A (en) Method and apparatus for enhanced security of a data processor
GB2240202A (en) Copy protection for memory devices
US5941987A (en) Reference cell for integrated circuit security
EP1262857B1 (en) Information processing apparatus and method of controlling an access level
US5761609A (en) Limited use circuit

Legal Events

Date Code Title Description
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)