WO2010109560A1 - 半導体メモリ、当該半導体メモリと結合されるコンピュータマシン、及び、そのデータ処理方法 - Google Patents

半導体メモリ、当該半導体メモリと結合されるコンピュータマシン、及び、そのデータ処理方法 Download PDF

Info

Publication number
WO2010109560A1
WO2010109560A1 PCT/JP2009/006158 JP2009006158W WO2010109560A1 WO 2010109560 A1 WO2010109560 A1 WO 2010109560A1 JP 2009006158 W JP2009006158 W JP 2009006158W WO 2010109560 A1 WO2010109560 A1 WO 2010109560A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
value
semiconductor memory
key
secret
Prior art date
Application number
PCT/JP2009/006158
Other languages
English (en)
French (fr)
Inventor
ヴィオムカミーユ
桶屋勝幸
吉野雅之
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Publication of WO2010109560A1 publication Critical patent/WO2010109560A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response

Definitions

  • the present invention relates to a semiconductor memory for storing digital content and a computer machine for processing the digital content stored in the semiconductor memory. More particularly, the present invention illegally replays with a semiconductor memory.
  • the present invention relates to a computer machine that prevents processing of distributed digital content, and a processing method therefor.
  • Authentication plays an important role to crack down on piracy, unauthenticated copying, or counterfeiting.
  • Such authentication is also adopted in, for example, a secure passport in which a chip capable of wireless communication for the purpose of anti-counterfeiting is used to authenticate the owner of the passport. Authenticate the source.
  • copyright-protected digital media includes authentication tokens known as DRM (digital rights managements) to prevent unauthenticated acts such as piracy.
  • DRM digital rights managements
  • the devices that support them CDs, DVDs, memory cards, and other similar memory devices
  • authentication is useful to prevent competitors from reverse engineering the product and to mass produce the product at a low cost.
  • an authentication chip can be attached to the printer cartridge in order to prevent the use of refill kits or fake cartridges manufactured by competitors.
  • Authentication consists of a protocol in which a device to be authenticated (prover) presents evidence for identification to a verifier.
  • the authentication device sends a request (challenge) that can be solved only by the device to be authenticated. If this request depends on the common key encryption method, the device to be authenticated and the authentication device share a common secret key, whereas in the case of public-key cryptography, Only the device to be authenticated possesses the secret key, and any authentication device can confirm (check) the solution of the request provided by the device to be authenticated.
  • Public key encryption systems can be used for authentication purposes.
  • the authentication device transmits a random message to the authenticated device that signed the message using the secret key.
  • the authentication device can confirm the identity of the device to be authenticated by authenticating the signature using only the public key of the device to be authenticated, not the secret key.
  • the authentication system based on the public key encryption method has an advantage that the authentication device cannot impersonate the device to be authenticated because the authentication device does not know the secret key of the device to be authenticated.
  • the product line can be easily authenticated by using the public key infrastructure.
  • the device to be authenticated performs a digital signature on the request, and is authenticated by the certificate authority device (certificate authority) together with the public key, and includes the digital signature of the public key of the device to be authenticated.
  • the certificate authority device certificate authority
  • the authentication device can authenticate both signatures in order to confirm the identity of the device to be authenticated.
  • Such an approach must store authentication means for certification (eg, a single public key for the entire product line, which is obtained from the manufacturer), not the individual unit public key. It not only removes the storage request to the authentication device that must be, but also includes a simple revocation mechanism. If the secret key of a device to be authenticated is known and its trust is lost, the public key of the device to be authenticated may be sent to the blacklist for all authentication devices.
  • the semiconductor memory unit can include custom circuitry to improve functionality such as authentication, copy protection, and data encryption.
  • the digital signature disclosed in Patent Document 1 is useful for checking the integrity of a program, more specifically, checking that a program has been changed by a malicious person.
  • digitally signed programs including their digital signatures, can be copied and illegally redistributed by third parties. Indeed, such a third party can monitor the channel between the storage medium containing the program and the digital signature and the computer machine running the program. As a result, it is possible to retrieve the program and digital signature and illegally redistribute the copy.
  • Patent Document 2 discloses a semiconductor memory card provided with a circuit for authentication.
  • authentication does not guarantee that the program transferred after successful authentication is definitely stored in that particular storage medium.
  • a malicious party can use a legitimate storage medium for authentication purposes, and then insert a maliciously or illegally distributed program in place of the program stored in the legitimate storage medium. It is.
  • Non-Patent Document 2 discloses a semiconductor memory card and a computer machine, in which the semiconductor memory card and the computer machine mutually engage in an authentication protocol and derive a decryption key. As a result, it is ensured that the data encrypted with the decryption key originates from the semiconductor memory card.
  • computer machines and semiconductor memory cards are initially impractical and must be assigned a common master common key if many computer machines can be combined with many semiconductor memory cards.
  • the present invention has been achieved in consideration of the conventional techniques described above. Accordingly, it is an object of the present invention to establish the integrity of digital data stored in a memory unit without the memory unit or the computer first assigning a common key, and thus illegally redistributed digital data. Is to provide a machine to prevent the process from being processed. Furthermore, the above and other objects and novel features will become apparent from the subsequent description and the accompanying drawings.
  • a semiconductor memory to be coupled with a computer machine, which stores first data, a first key, and a second key,
  • the first key receives a non-volatile memory unit that is a predetermined value derived from the first data and the second key, and a challenge from a computer machine; and a computer
  • a semiconductor memory is provided that transfers second data to a machine, and wherein the second data is derived from the second key and the challenge.
  • a computer machine for coupling with a semiconductor memory comprising a CPU, a nonvolatile memory unit storing a first key, and the semiconductor memory Provided with an input / output interface for receiving data from the semiconductor memory, the data from the semiconductor memory includes a second key, first data, and second data And the computer machine further includes a signature verification unit for verifying the second key, a random number generator for generating a challenge, and a hash for processing the first and second data.
  • a function unit and a comparison unit for comparing the second key with the data processed by the hash function unit, Computer machine to establish a second data integrity is provided.
  • a data processing method the step of receiving a first key from a semiconductor memory, the step of transmitting a challenge to the semiconductor memory, and the semiconductor Receiving first data from a memory; checking integrity of the first data with the challenge and the first key; receiving second data from the semiconductor memory;
  • a data processing method comprising the steps of checking the integrity of the second data with a first key and processing the second data.
  • a data processing method the step of transmitting a first key and its certificate, and the step of transmitting a hash function of at least one data.
  • Receiving a challenge transmitting a plurality of secret values, transmitting a plurality of image values, transmitting a plurality of tree values, and transmitting the data.
  • a data processing method is provided.
  • the semiconductor storage medium includes, for example, digital data such as programs, images, music, and movies, a public key, a private key, and a circuit that operates communication with a computer machine.
  • a key is derived from at least the digital data and a private key.
  • the semiconductor storage medium transfers the public key to the computer machine.
  • the computer machine sends a challenge (random number) to the storage medium.
  • the storage medium issues a digital signature for the challenge and sends it back to the computer machine.
  • the computer machine verifies the digital signature using the public key
  • the storage medium transfers the digital data to the computer machine.
  • the computer machine verifies the digital data using the public key.
  • the computer machine Without knowing the private key (private key), the computer machine can distinguish a legitimate (legal) storage medium from counterfeit goods by using the public key or digital signature of the challenge. Furthermore, since the validity of digital data can be checked using a public key, illegal programs cannot be inserted. As a result, the present invention prevents the use of unauthorized copies of digital data.
  • 1 is a hardware diagram of a game system including a game machine and a semiconductor memory for storing a game program.
  • 2 is a block diagram of logical memory mapping in a semiconductor memory. It is a block diagram which shows the functional relationship between the physical address map of the ROM unit in a semiconductor memory, and the data stored in the ROM area.
  • 2 is a hardware diagram of a memory controller in a semiconductor memory. It is a block diagram which shows the functional details of a memory controller. It is a block diagram which shows the functional detail of the verification protocol performed with a game machine. It is a block diagram of the communication protocol between a game machine and a semiconductor memory.
  • 2 is a block diagram of logical memory mapping in a semiconductor memory.
  • 2 is a hardware diagram of a memory controller in a semiconductor memory. It is a block diagram which shows the functional details of a memory controller.
  • It is a hardware diagram of a security chip in a game machine.
  • It is a block diagram which shows the functional detail of the verification protocol performed with a game machine.
  • Integers can be described using several expressions. The most common expression is the decimal expression. In the description in the following drawings, in addition to the decimal representation, hexadecimal and binary representations are used. When written in hex, the prefix “0x” is added. When written in binary, parentheses “(%)” are appended.
  • 0xF is the hexadecimal representation of the integer 15.
  • (1111) is 15 binary expressions.
  • Digital data is a bit string, also called a bit string.
  • a sequence of bits can be expressed as a byte string, and one byte consists of 8 bits.
  • the string (100101101) has 9 bits or 2 bytes, “0x01” and “0x2D”.
  • X (+) y refers to the bitwise exclusive OR of the bit strings “x” and “y” (“(+)” represents the operation symbol of the exclusive OR).
  • X >> 1 refers to the right shift of the bit string “x”.
  • the least significant bit (LSB) of the bit string “x” is the rightmost bit of the binary representation.
  • Hash function is an algorithm that maps a bit string of an arbitrary length to a short bit string of a predetermined length.
  • the well-known hash function “MD5” maps a message of an arbitrary size to a 128-bit hash value.
  • the hash value is also considered a small “fingerprint” of a large input message.
  • Another important property of the hash function is that it is difficult to find two messages with the same hash value, and this property is called "collision-resistance".
  • hash functions include, for example, “MD5” or “SHA1”.
  • hash functions can be implemented with conventional encryption functions, including but not limited to block encryption (block ciphers).
  • block ciphers block ciphers
  • block ciphers block encryption
  • AES block encryption
  • message “x” has 256 bits
  • [[2], and a 128-bit initial vector (initial If “vector” is “IV”, the hash value “y H (x)” is calculated in the following two steps.
  • AES A (B) refers to “AES” encryption of “B” with key “A”
  • a (+) B is a bit of “A” and “B”.
  • Each exclusive OR (XOR) is referred to ("(+)” represents an exclusive OR operation symbol).
  • the digital signature scheme consists of three algorithms. The first one is the generation of a key-pair, where a private key and a public key are generated. The private key is not made public, while the public key is distributed to everyone.
  • the second algorithm is a signature generation algorithm. A digital signature is generated by inputting the message and the private key.
  • the third is a signature authentication algorithm, which authenticates the correctness of the signature using the message, signature, and public key as inputs.
  • Non-Patent Document 1 is a well-known technique for providing a digital signature. Unlike other signature schemes, the “Merkle” signature scheme simply relies on a hash function without the use of complex arithmetic operations.
  • the authentication protocol is a communication protocol between two existences called an authenticated device (prover) and an authenticated device (verifier), in which the authenticated device gives a proof of its identity.
  • the authentication protocol is composed of at least two steps, in which the authentication device sends a challenge, and the authenticated device uses the secret data to generate a response.
  • the authenticator can check the validity of the response and, as a result, verify that the identity of the authenticated device is correct.
  • Constructing an authentication protocol from a digital signature scheme is simple where the challenge is a random number and the response is the digital signature.
  • the non-patent document 2 discloses an authentication technique based on the “Merkle” signature, in which the “Merkle” signature is composed only of memory operations.
  • a digital certificate is a digital document that is useful for verifying a public key.
  • a digital certificate includes a digital signature of a public key that is trusted by a trusted third party, such as a government agency or an established company whose public key is trusted. party).
  • a trusted third party such as a government agency or an established company whose public key is trusted. party.
  • certificate hierarchies where a root certificate is used to verify the public key and, similarly, a second certificate is published. Used to verify the key. This type of hierarchy is commonly referred to as a public key infrastructure (public-key infrastructure), or “PKI” for short.
  • PKI public-key infrastructure
  • X.509 is a well-known standard for defining its structure and digital authentication format.
  • FIG. 15 is a block diagram of the manufacturing process of the game machine and the semiconductor memory unit. This process is applicable to both embodiments of the present invention.
  • this process includes three actors: game machine manufacturer 1510, game maker 1530, and memory manufacturer 1560.
  • Game machine manufacturer 1510 manufactures a game machine
  • game maker 1530 develops a software program executed by the game machine
  • a memory manufacturer stores a semiconductor memory storing the software program executed by the game machine.
  • the game machine manufacturer 1510 holds a root private key 1511, a root public key 1512, and a decryption key 1513. While not intending any particular limitation, in the present invention, the root private key and public key are “RSA” keys, and they are generated on a computer owned by the gaming machine manufacturer. And stored. Several identical game machines 1514 have been manufactured and commercialized, and all game machines store a root public key 1512 and a decryption key 1513.
  • game maker 1530 developed a video game for game machine 1514 that includes a corresponding unencrypted game header 1533 and a game program, and wanted to commercialize a thousand copies of the game. .
  • the game maker must obtain a license including a root certificate 1515 from the game machine manufacturer.
  • the game maker Like the game machine manufacturer, the game maker generates a game private key 1531 and a game public key 1532 that are generated and stored on a computer owned by the game maker. I have it. Initially, game maker 1530 sends game public key 1532 to obtain a license from game machine manufacturer 1510; the game machine manufacturer obtains a root certificate that includes a decryption key 1513 and a digital signature of game public key 1532 1515 is responded. The digital signature is generated on the computer belonging to the game machine manufacturer together with the root secret key 1511. Also, update data (data) update) 1516 is included in the game program and transmitted to update the firmware of the commercialized game machine 1514.
  • update data (data) update) 1516 is included in the game program and transmitted to update the firmware of the commercialized game machine 1514.
  • the game maker generates a game key 1535 to encrypt the game data, and encrypts the game key using the decryption key 1513.
  • the game maker encrypts the game header 1533 and the game program 1534 using the game key 1535.
  • encrypted data such as 1541, 1543, and 1545 and game certificates such as 1542, 1544, and 1546 are generated.
  • a thousand different public keys are calculated.
  • a thousand game certificates are generated, each game certificate includes one digital signature in the thousand public keys, and the signature is generated using the game private key 1531.
  • the game maker will send a thousand different encrypted data and a thousand different game certificates, a unique encrypted game key 1547 (unique version), a unique encrypted game header, and a unique Combine with the encrypted game data.
  • the result of this operation is a thousand memory images shipped to the memory manufacturer 1560, for example 1551, 1552, 1553.
  • the role of the memory manufacturer is simply to copy the received memory images of the game into a thousand semiconductor memory units, for example 1561, 1562, 1563, and commercialize them. is there.
  • the two electronic devices initiate the authentication protocol described in FIG. 7 or FIG. It becomes possible to play the game developed by 1530.
  • the encrypted data could be generated directly by the memory manufacturer.
  • the memory manufacturer holds the game secret key and the public key, and generates a root certificate from the game machine manufacturer.
  • the memory stores a program to be executed by a game machine.
  • FIG. 1 is a hardware diagram of a game system, which includes a game machine 120 and a semiconductor memory 100 for storing a game program. While not intending any particular limitation, in this embodiment, the gaming machine 120 is assumed to be a portable gaming machine that can be held by hand.
  • the semiconductor memory 100 includes an electronic component surrounded by a plastic cover 101.
  • components indicated by broken lines are arranged inside a plastic covering 101.
  • the semiconductor memory 100 has two types of memory units: a read-write non-volatile memory unit 102 that can be read and written, and a read-only non-volatile memory unit that is read-only non-volatile. memory unit) 103.
  • the readable / writable non-volatile memory unit is an “EEPROM” chip
  • the read-only memory unit is a “ROM” that is programmable only once. "It is assumed to be a chip.
  • the “ROM” chip 103 can store game programs, and the “EEPROM” chip 102 can store saved game states. The detailed contents of the memory units 102 and 103 will be described later with reference to FIG.
  • the semiconductor memory 100 includes a bus 104 for coupling the memory units 102 and 103 to the memory controller 105.
  • the memory controller 105 is a circuit that operates communication with the game machine 120 and accesses data stored in the memory units 102 and 103. The communication protocol will be described later with reference to FIG.
  • the semiconductor memory 100 can be physically coupled to the game machine 120 via pins 106.
  • the twelve pins are not particularly limited, but are as follows.
  • -Pin 106 is the input ground signal
  • -Pin 107 is an input power supply pin
  • -Pin 108 is an input clock signal
  • -Pin 109 is an input reset signal
  • the pins 110 to 117 are used for bidirectional data exchange between the game machine 120 and the semiconductor memory 100.
  • the gaming machine 120 has a plastic cover 121, for example, an input controller such as a directional pad 122 and a button 123, a liquid crystal (LCD) screen 124, a speaker 125, and an on / off switch 139. .
  • the semiconductor memory 100 can be inserted into the cavity 138, whereby a connection for physically connecting the game machine 120 and the semiconductor memory 100 is obtained.
  • the twelve contacts are not particularly limited, but are as follows. Contact 126 is an output ground signal, -Contact 127 is an output power supply pin, Contact 128 is an output clock signal, -Contact 129 has an output reset signal,
  • the contacts 130 to 137 are used for bidirectional data exchange between the game machine 120 and the semiconductor memory 100.
  • the contacts 126 to 129 are used for one-way communication from the game machine 120 to the semiconductor memory 100, while the contacts 130 to 137 can be used for two-way communication.
  • a RAM (Random Access Memory) 141 is a volatile memory unit that can be read and written quickly and stores program data as well as intermediate data processed by a CPU (Central Processing Unit) 143.
  • the flash memory unit 142 is a readable / writable nonvolatile memory unit. Data stored in flash memory includes the following: -Firmware 161, which is a program for controlling game machine hardware; -Root public key 162, A decryption key 163;
  • the input / output (I / O) interface unit 144 is a circuit that operates communication between the game machine 120 and the semiconductor memory 100.
  • the video controller 145 is a circuit attached to the screen 124, and generates and outputs an image to the screen 124.
  • the sound controller 146 converts sound or digital information representing music into an analog electrical signal, and the signal is converted into an acoustic signal by the speaker 125.
  • the input control unit 147 converts, for example, an input signal, which is a pressure applied to the directional pad 122 or the button 123, into digital information so that the CPU 143 can process it.
  • the battery 148 supplies power to the electronic components sealed in the game machine.
  • the RAM, flash memory, CPU, I / O interface, video controller, and sound controller are coupled to a bus 151 for transmitting control signals and data signals to and from the different electronic components. ing. In addition, electric power is supplied from the battery 148 to the electronic components via the bus 151. Similarly, contacts 126-137 and I / O interface 144 are coupled to I / O bus 152. Speaker 125 and sound controller 146 are coupled to cable 153. A directional pad 122, a button 123, and an input interface 147 are coupled to the cable 154. Finally, battery 148 and on / off switch 139 are coupled to cable 155.
  • the firmware 161 stored in the flash memory 142 is executed by the CPU 143.
  • the semiconductor memory 100 is inserted into the cavity 138, thereby coupling the pins 106 to 117 of the semiconductor memory 100 to the contacts 126 to 137 of the game machine 120, the game machine and the memory work together, referring to FIG. Perform the communication protocol described. After the communication protocol ends normally, the program stored in the semiconductor memory is transferred to the RAM 141 and executed by the CPU 143.
  • the program can, for example, display an image on the screen 124, play music or sound through the speaker 125, and react to the movement of the user pressing the directional pad 122 or button 123. However, if the communication protocol fails, the program is not executed.
  • FIG. 2 is a block diagram of logical memory mapping in the semiconductor memory 100.
  • the logical address of the semiconductor memory 100 is expressed as a 48-bit integer, and is expressed in hexadecimal on the left side of FIG.
  • different address spaces can be used, in which case the data can be stored in different orders at different sizes and different locations on the physical chip.
  • the game machine In order to access data stored on the semiconductor memory 100, the game machine transmits a logical address and a data length to the semiconductor memory.
  • the memory controller 105 then translates (converts) the logical address into a physical address, activates the associated memory unit, eg, the ROM unit 102 or the EEPROM 103, and the data stored on the associated memory unit. Send to game machine 100.
  • 48-bit address value can address 256,000 gigabytes of data.
  • the semiconductor memory has a smaller capacity, for example, about 1 gigabyte. In this case, only a certain part of the logical memory is actually a valid address.
  • unpermitted addresses are indicated by diagonal lines.
  • FIG. 2 shows on which memory unit or chip of the ROM unit 102, the EEPROM unit 103, or the memory controller 105 the corresponding data is physically stored.
  • data stored at a logical address can be read and sometimes written.
  • access control policy access control policy
  • User access refers to data that is directly accessed by the gaming machine 120, while administrator access refers to data that cannot be accessed directly. More specifically, only the memory controller can access administrator data.
  • the encrypted data area 200 is used during the authentication period of the semiconductor memory 100.
  • the encryption header area 210 is combined with the data transferred during the authentication period and contains public parameters that guarantee the authenticity of the semiconductor memory.
  • the game header area 220 contains general information relating to the game program stored in the semiconductor memory.
  • the saved game state area 230 contains the state of the game saved by the user.
  • the game program area 240 stores firmware updates in the first sector 241 and game programs in other sectors.
  • the encrypted data 200 includes a secret table 201, an image table 202, and a tree table 203.
  • the secret table 201 occupies address values from “0x0” to “0x3FFFFF”, that is, 4 megabytes. Physically, data from the secret table 201 is arranged in the ROM unit 102. In addition, access to the secret table 201 is restricted because it is managed by an administrator access policy (supervisor access policy).
  • the image table 202 occupies address values from “0x400000” to “0x7FFFFF” (4 megabytes), and the tree table 203 occupies from “0x800000” to “87FFEF”. Physically, they are located in the ROM unit 102 and are freely accessible.
  • a system parameter 211 is stored at the address “0x1000000”.
  • the system parameters are unambiguous about what type of algorithm is used for authentication, the size of the challenge used for authentication, the total number of times authentication can be performed, and what type of certificate is used. It is stipulated in.
  • the authentication algorithm can be based on a “Merkle” signature using an 8-bit challenge together with the hash function “MD5”, and can authenticate up to 16,384 times.
  • the certificate can be an "X.509" digital certificate.
  • the system parameters consist of strings written in "ASCII” characters such as: -MD5_WITH_MERKLE -CHALLENGE_8 -TIMES_16384 -CERTIFICATE_X509
  • the public key 214 is stored at the address “0x100900”.
  • the public key plays a role in the authentication protocol described in detail later with reference to FIG.
  • the authentication algorithm uses the “Merkle” signature together with the hash function “MD5”, the public key is composed of 16-byte binary data.
  • the game certificate is stored at the address “0x100600”.
  • the game certificate is used to validate the public key.
  • the root game certificate is stored at address "0x100300" and is used to validate the game certificate. Details of the procedure will be described later with reference to FIG.
  • the system parameter 211, the root certificate 212, the game certificate 213, and the public key 214 are physically stored in the ROM unit 102 and can be freely accessed.
  • the 2-byte signature index 215 is stored at the address “0x109400”. Physically, the signature index 215 is arranged in a 2-byte nonvolatile read / write register in the memory controller 105 described later with reference to FIG.
  • the signature index indicates the arrangement of encrypted data used in the secret table 201, the image table 202, and the tree table 203.
  • the contents of the game header area are described below. Such contents are physically stored on the ROM unit and are freely accessible.
  • the game ID 221 is stored at the address “0xFF0000000000”, and the game ID uniquely defines which game is stored on the semiconductor memory.
  • the game key 222 is stored at the address “0xFF0000000010”.
  • the game key is used to decrypt the game program 240 along with the rest of the game header data.
  • the game key 221 is encrypted using the decryption key 163 stored in the flash memory unit 142 of the game machine 120.
  • the data at the subsequent address is encrypted with the game key 222.
  • the program entry point 223 (program entry point) is stored at the address “0xFF0000000020”.
  • the entry point of this program indicates the address of the main routine of the game program. Therefore, after the authentication is successful, the game machine 120 reads the program data arranged at the address specified as the entry point of the program.
  • the first hash data 224 is stored in the address “0xFF0000000030” that occupies 16 bytes. This data is the output of the “MD5” hash function applied to the data stored in the first sector of the game program area 240. More specifically, the first hash data 224 is a result of concatenating data of 1 megabyte at the address “0xFFFF00000000”, which is processed by “MD5” to obtain a 16-byte hash value. Since there are a total of 1024 sectors in the game program area 240, there are 1024 hash values from the address “0xFF0000000030” to “0xFF000000402F”.
  • Save game state 230 is stored from address “0xFFF000000000” to “0xFFF00002FFFF”. Physically, these addresses correspond to EEPROM, so the data in the save game state area 230 can be read or written. Further, the data can be freely accessed in the saved game state area 230.
  • the state table 231 shows the state of each save game slot, that is, active or inactive.
  • the game program area extends from the address “0xFFFF00000000” to “0xFFFF3FFFFF”, and they physically correspond to the ROM unit 102.
  • the game program data is freely accessible, however, it is encrypted with the game key 222.
  • the game data is organized into 1024 sectors, and each sector includes 1024 bytes.
  • the semiconductor memory can store a game program up to 1 gigabyte.
  • Firmware updates are stored in the first sector 241 of the game program area.
  • the ROM unit 102 accommodates 1,082,709,024 bytes, which is slightly larger than 1 gigabyte, and the EEPROM accommodates 196,608 bytes.
  • FIG. 3 is a block diagram showing a functional relationship between the physical address map of the ROM unit 103 and the data stored in the ROM area.
  • the ROM unit 103 stores the encrypted data 200, a part of the encrypted header 210, the game header 220, and the game program 240.
  • the gaming machine 120 can read or write data to an available memory unit of semiconductor memory using a 48-bit address.
  • each memory unit has its own physical address map.
  • ROM unit 103 uses a 32-bit address space. It is the role of the memory controller 105 to convert the logical address sent by the game machine 120 into a physical address and to activate the corresponding memory unit of the semiconductor memory 100.
  • the encrypted data 200 includes three tables: a secret table 201, an image table 202, and a tree table.
  • the secret table 201 is filled with 262,144 16-byte random numbers, that is, “x [1]” 301 to “x [262144]” 306.
  • Secret “x [1]” is placed at physical address “0x0”
  • Secret “x [2]” is placed at "0x10”
  • Secret “262144" is placed at address "0x3FFFF0” It is the same.
  • the image table 202 is filled with 262,144 16-byte values, that is, “y [1]” 311 to “y [262144]” 316.
  • “y [i]” is an image of the secret “x [i]” via the hash function “MD5”.
  • Image “y [1]” is located at physical address “0x400000”
  • image “x [2]” is located at address “0x400010”
  • image “y [262144]” located at address “0x7FFFF0”
  • the tree table 203 includes 32767 values, each of 16 bytes, ie, “t [1]” 321 to “t [32767]” 328, where “t [1]” is an address “ The same applies to “t [32767]” arranged at “0x800000”, “t [2]” at “0x800010”, and “t [32767]” arranged at the address “0x87FFF0”. Tree data can be classified into two categories according to its functional relationship.
  • t [16384] H (y [1]
  • [y [16])” or “t [16385] H (y [17]
  • t [1] H (t [2]
  • t [3])” or “t [8192] H (t [16384]
  • the array of the tree data 203 can be viewed as a binary hash tree, where the root of the tree is the top value of the table “t [1]”.
  • the leaves are “t [16384]”, “t [16385]”... “T [32676]”.
  • the encryption header 210 starts from the address “0x87FFF0” and ends with the address “0x8893F0”. Note that the encryption header 210 is only partially stored in the ROM 103. More specifically, the system parameter 211, the root certificate 212, the game certificate 213, and the public key 214 are stored in the ROM unit 103, but the signature index 215 is stored in the memory controller 105. Yes.
  • the public key 214 is defined as the first hash value of the tree table “t [1]” 321 concatenated with the hash value of the game header 220.
  • the game header 220 is completely stored in the ROM unit 103 and starts from the address “0x8893F0” to the address “0x88D420”. Finally, the game program starts from the address “0x88D420” to the address “0x4088D420”. ⁇ Memory controller>
  • FIG. 4 is a hardware diagram of the memory controller 105.
  • the memory controller handles three types of messages: “READ”, “WRITE”, and “CHALLENGE”.
  • READ contains the address and data length and is formatted as "READ
  • the memory controller verifies that the address and length correspond to readable data, retrieves the data from the corresponding memory unit, and sends it back to the game machine 120.
  • the "WRITE” message contains a 48-bit address and an 8-bit data payload and is formatted as "WRITE
  • the memory controller 105 Upon receipt of the “WRITE” message, the memory controller 105 verifies that the address corresponds to an EEPROM writable memory and writes its data payload into the EEPROM area. -The "CHALLENGE” message contains an 8-bit data payload, i.e. a challenge, and is formatted as "CHALLENGE
  • Memory controller 105 communicates with game machine 120 via pins 106-117.
  • the pins 110 to 117 are used for bidirectional data communication, and data received from the game machine 120 or transmitted to the game machine is stored in an 8-bit I / O buffer 401.
  • the ground pin 106, power supply pin 107, clock pin 108, reset pin 109, and I / O buffer are all coupled to the control unit 410.
  • the control unit 410 includes the following.
  • a finite state machine 411 that operates, controls other units in the memory controller 105 and routes signals in response to received messages.
  • An address register 412 that stores the physical address of the data that must be read or written.
  • a length register 413 that stores the length of the data to be read.
  • An increment unit 415 that adds an integer “1” to the input data.
  • a decrement unit 416 that subtracts the integer “1” from the input data.
  • An address translation map unit 417 that translates (converts) the input logical address into a physical address.
  • the control unit When the ROM unit 103 is read directly, the input message from the game machine 120 is a “READ” message, and the logical address corresponds to a ROM area that can be directly accessed, or the ROM unit When 103 is read indirectly and the input message is a “CHALLENGE” message, the control unit performs the following steps.
  • An appropriate value is set in the address register 412.
  • the logical address is converted to a physical address by the address translation map 417, and the physical address is copied in the address register 412.
  • the length value is copied in the length register 413.
  • the value of the address register is sent to the ROM unit 103 via the bus 452, and the power supply signal from the pin 107 and the clock signal from the pin 108 are also sent via the bus 452.
  • the ROM chip select (ROM CS) is set to “1” to operate the ROM unit 103.
  • the ROM unit 103 returns 1 byte arranged at a specific address via the bus 451. This byte is sent to the game machine via the I / O buffer 401 and the data pins 110 to 117.
  • the address register 412 is incremented by the increment unit 415 and the length register is decremented by the decrement unit 416.
  • the finite state machine 411 repeats the above steps until the length register is zero (0).
  • bus 454 sets the ROM chip select (ROM CS) to “1” and the additional R / W signal is set to “0” for reading or “1” for writing. Set and the bus is bidirectional.
  • the secret address register 430 is a 32-bit register that displays a physical address in the ROM unit 103, and includes the following components.
  • the signature index 215 is connected to the control unit 410 and can be read by the game machine 120.
  • the signature index 215 includes a 14-bit signature counter 435 and two zero bits 436.
  • the challenge When the challenge is sent to the semiconductor memory 100, it is stored in the challenge register 421.
  • the challenge value is then shifted to the right by 1 bit by shift unit 422. In this process, the rightmost bit of the challenge is deleted, however, this rightmost bit is transferred to the challenge bit 432 of the secret address register 430.
  • the adder 441 increments the value of the byte counter 431 by 1.
  • the secret address register 430 has a physical address corresponding to one element of the secret table 201 in the ROM unit 103.
  • the 32-bit value of the secret address register is copied to the address register 412 and sent to the ROM unit 103 via the bus connection 452. Accordingly, 1 byte is sent from the ROM unit 103 via the bus connection 452 and then sent to the game machine 120 via the I / O buffer 401 and the data pins 110 to 117.
  • the adder 441 can handle only 4 bits, and when the result of the increment operation becomes larger than 4 bits, more specifically, when “1” is added to “0xF”, overflow occurs.
  • the 1-bit output of the adder 441 is set to “1”.
  • the 1-bit output of the adder 441 is connected to the 1-bit input of the second adder 442 and the control unit 410.
  • the control unit 410 detects an overflow in the first adder 441
  • the challenge value is shifted right by 1 by the shift unit 422, and the rightmost challenge bit is again the challenge bit in the secret address register 430. 432.
  • the overflow bit of the adder 441 is also sent to the second adder 442, which thus increments the 3-bit secret counter 433.
  • the value of the secret counter 433 is “0x7”
  • the result of the increment operation becomes larger than 3 bits, so that a second overflow occurs. This second overflow is sent to both the control unit 410 and the third adder 443.
  • the third adder increments the value of the 14-bit signature counter 435, thereby increasing the signature index by one. Also, when the control unit detects an overflow in the second adder 442, the secret data corresponding to the received challenge is completely transmitted, and the memory controller is idle and the next message from the gaming machine 120 is sent. wait. However, if the value of the signature counter 435 is “0x3FFF” and the second overflow bit is set to “1”, a third overflow occurs. This means that the available secret data is exhausted and the semiconductor memory 100 can no longer be coupled to the gaming machine 120. Therefore, when a third overflow is detected by the control unit 410, any new message from the gaming machine 120 is rejected. ⁇ Details of memory controller functions>
  • FIG. 5 is a block diagram showing details of the function of the memory controller. Although not intended to be any specific limitation, in the present embodiment, the functions described in FIG. 5 are implemented as circuits within the finite state machine 411 in the memory controller 105.
  • the memory controller 105 is in a listening state and waits for a message from the game machine 120.
  • a message arrives via data pins 110-117, the following steps are performed.
  • the message type is identified. As already explained, there are three types of messages: “READ”, “WRITE”, and “CHALLENGE”.
  • a “READ” message is detected.
  • the logical address and length payload are checked by the memory controller 105. More specifically, a logical address must correspond to data that is readable and directly accessible. For example, the address “0x880000” is not readable and is rejected. Similarly, the address “0x1009400” is readable, but if the data length is “4”, the address “0x1009402” is not readable and the message is rejected. In addition, the address “0x0” corresponds to the secret table 201 and cannot be directly accessed. If the address can be read and accessed directly, the length and address provided in the message are copied to the address register 412 and the length register 413.
  • steps 521 and 531 three cases are identified by the physical position of the read address, that is, the ROM 103, the EEPROM 102, or the memory controller 105.
  • step 523 the ROM chip selector (ROM CS) signal is set to “1” and the address is sent via the bus 452.
  • the address register 412 is incremented and the length register 413 is decremented. Accordingly, the ROM unit 103 returns the 1-byte data at the specific address sent to the game machine 120 via the bus connection. As long as the length register is greater than “0”, step 523 is repeated. When the length register reaches “0”, the data is completely transferred and the memory controller returns to the initial listening state.
  • Step 533 is executed. Step 533 is basically the same as step 523 except that the EEPROM unit 102 is activated in the read mode.
  • the signature index 215 is returned in step 541.
  • step 551 a “WRITE” message is detected.
  • step 552 the address payload of the message is verified and, if valid, the address is copied to the address register 412.
  • step 553 the EEPROM chip select and R / W are set to “1”, and the address is sent to the bus connection 454, whereby the physical address of the corresponding EEPROM is activated in the write mode.
  • the data payload of the “WRITE” message is transferred to the EEPROM chip 102 via the bus connection 453.
  • step 561 the payload data is copied to the challenge register 421.
  • step 562 the challenge unit 422 moves the challenge value 421 to the right by one bit, and the rightmost bit is copied to the challenge bit 432.
  • the secret address register 430 contains the physical address of the first byte that must be transferred to the game machine 120. This data transfer is performed in step 563, that is, in the bus connection 452, the address is set as a secret address, and the ROM chip select is set to “1”. Therefore, 1 byte is received from the ROM unit 103 and sent to the game machine. In addition, the byte counter 431 is incremented by the first adder 441.
  • step 563 is repeated.
  • the first adder operates on 4 bits, so the byte counter 431 is incremented 16 times before overflow occurs, and , 16 bytes are transferred from the ROM unit 103 to the game machine 120. For example, if the secret address initially stores the address “0x10”, all bytes in the address area “0x10” to “0x20” are transferred, ie, these 16 bytes are stored in the second secret value “ x [2] "302.
  • the secret counter 433 is incremented by the second adder 442 in step 565. If no overflow occurs during this increment operation period, the challenge 421 is shifted right by 1 bit by the shift unit 422, and in step 562, the rightmost bit is copied to the challenge bit 453, and steps 453-566 Is executed again. If a second overflow occurs, the transfer of secret data is complete. In that case, the signature counter 435 is incremented by the third adder 443 in step 567. If no overflow occurs during this increment operation period, the memory controller returns to its initial state.
  • the memory controller 105 receives the “CHALLENGE” message together with the data payload “(11010001)” expressed in binary. Furthermore, it is assumed that the secret address register 430 initially has a 32-bit value “0x00000100”. More specifically, it is assumed that the signature index is “1” and all other registers are “0”. Note that this is the physical address of the secret value “x [17]” 305.
  • the first challenge bit is “1”, so the secret address register is set to “0x110”, which is the physical address of the secret “x [18]”.
  • 16 bytes of the secret “x [18]” are transferred to the game machine 120 byte by byte by incrementing the byte counter 431 each time the clock signal is output from the clock pin 108.
  • the secret address register sequentially stores the following addresses: “0x110”, “0x111”, “0x113”... “0x11F”.
  • the secret counter 432 is incremented and the challenge bit is set to “0” after moving the challenge 421 to the right, ie, the secret address is “0x120” which is the address of the secret “x [19]”. It becomes.
  • 16 bytes of the secret “x [19]” are transferred to the game machine.
  • the third and fourth challenge bits are “0”, so the secret values to be transferred next are “x [21]” and “x [23]”. Finally, the last four challenge bits are “1”, “0”, “1”, “1”, so the secret value transferred is “x [26]”, “x [27 ] ”,“ X [30] ”,“ x [32] ”. After the eight secret values are completely transferred, the signature register is incremented, and the value stored in the secret address register is “0x00000200” which is the address of the secret “x [33]”. The memory controller returns to the initial listening state and waits for the next message.
  • FIG. 6 is a block diagram showing the details of the verification protocol function performed by the game machine 120.
  • the verification protocol is implemented as a software program stored in the flash memory 142 of the gaming machine and executed by the CPU 143. .
  • the game machine 120 stores in the RAM unit 141 the public key 214 and the signature index 215 obtained during the authentication protocol described in detail with reference to FIG. .
  • step 602 the gaming machine requests the game header 220 by sending a “READ” message with an address “0xFF0000000000” and a length “0x4030”.
  • step 603 the gaming machine obtains the game header and requests the head of the tree “t [1]” 321 by sending a “READ” message with an address “0x800000” and a length “0x10”.
  • step 604 the game machine obtains “t [1]” and performs the following calculation.
  • H1 H (t [1]
  • step 605 “H1” is compared with the public key. If the data extracted by the game machine is authentic, the calculated value “H1” should be equal to the public key 214. If not, in step 606, verification fails.
  • the game machine transmits a “CHALLENGE” message together with an 8-bit payload (random number) in step 611.
  • the response of the semiconductor memory 100 consists of eight secret values “x ′ [1]”... “X ′ [j]”... “X ′ [8]” and is received by the game machine at step 612.
  • these 8 secret values are among the 16 secret values “x [16 * index + 1]”, “x [16 * index + 2]”... “x [16 * index + 16]” are selected by the memory controller 105 and the selection of the 16 secret halves is made according to the challenge value, as shown in FIG.
  • “index” is the signature index 215.
  • steps 621 to 627 there are 8 elements from 16 images "y [16 * index + 1]", "y [16 * index + 2]” ... "y [16 * index + 16]”. "Y '[1]” ... "y'[j]” ... "y '[8]”, i.e. half of them are drawn, so the steps are repeated 8 times. More specifically, -If the secret "x '[j]" is actually “x [16 * index + 2j-1]", “y'[j]” is selected as “y [16 * index + 2j]” . -However, if the secret "x '[j]” is "x [16 * index + 2j]", "y'[j]” is selected as “y [16 * index + 2j-1]” .
  • step 622 the rightmost bit of the challenge, the least significant bit (LSB), is extracted by right shift.
  • the challenge bit is “0”, it means that “x [16 * index + 2j ⁇ 1]” has been received.
  • step 626 This is done in step 626 by adding “0x10” to the variable “A” and sending a “READ” message with address “A” and length “0x10”. Thereafter, “0x10” is added to the variable “A”.
  • step 627 the corresponding image value “y [16 * index + 2j]” is received from the semiconductor memory 100.
  • H1 H1
  • step 624 the “READ” message is transmitted to the semiconductor memory 100 together with the address “A” and the length “0x10”. Then, “0x20” is added to the variable “A”. As in the previous case, the following calculation is performed in step 625.
  • H1 should be a concatenation of 16 image values “y [16 * index + 1]” to “y [16 * index + 16]”.
  • step 631 a hash value of “H1” is calculated. Recall that the following equivalence is maintained:
  • step 632 the variable “j” is set to “0x4000 + index” or “16384 + index” in decimal.
  • steps 641 to 646 elements of the tree table 203 are selected and extracted from the semiconductor memory 100. These elements can associate the value “H1” calculated in step 631 with the head of the tree table “t [1]” 321. If this association is valid, then the verification has succeeded; however, if it becomes clear that this association is invalid, the verification fails.
  • step 641 the parity of “j” is checked.
  • a “READ” message is then sent to the semiconductor memory with address “A” and length “0x10”, and the semiconductor memory returns the associated element “t [j ⁇ 1]” of the tree table 203 in step 644. To do. This element is stored in the variable “H2”.
  • variable “j” is moved to the right in each iteration of the procedure described above. That is, “j” eventually reaches the value “1”. At this time, if all the received values are genuine, “H1” should be equal to “t [1]” 321 which is the head of the tree table 203. If so, all received values are indeed authentic, and verification is successfully completed at step 652. Otherwise, verification fails at step 653.
  • the variable “j” is initially set to “16384 + index”, which is strictly an integer smaller than “32768”. As a result, the variable “j” becomes “1” after exactly 14 iterations, thereby 14 right movements.
  • exactly 14 elements are the values calculated in Step 631, that is, “t [16384 + index]” and the tree “t [1]”. Extracted from the tree table 203 to establish an association with the root.
  • the game machine obtains 8 secret values, 8 images, and 14 tree values, and those secrets, images, and tree values are described in Non-Patent Document 2. As disclosed, it is the “Merkle” signature of the challenge.
  • the game machine generates an 8-bit challenge (random number), and the binary representation of this challenge value is “(11010001)”. Therefore, the game machine receives eight secret values “x ′ [1]”... “X ′ [8]” selected according to the challenge value by the memory controller.
  • the game machine has the following secret images: “y [17]”, “y [20]”, “y [22]”, “y [24]”, “y [25]”, “y [ 28] ",” y [29] "and” y [31] ". It also calculates the hash value of the received secret value and concatenates everything as follows:
  • the gaming machine can recalculate the beginning of the tree table t [1] and the verification is successfully completed. ⁇ Communication protocol>
  • FIG. 7 is a block diagram of a communication protocol between the game machine 120 and the semiconductor memory 100.
  • FIG. 7 is an operation executed by the semiconductor memory 100, while the right block of FIG. 7 is an operation executed by the game machine 120.
  • the central block is a message exchanged between the game machine and the semiconductor memory.
  • the gaming machine initiates the protocol by sending a request 701 to the encryption header 210.
  • This request is a “READ” message containing the address of the encryption header, ie “0x1000000”, and its size, ie, “0x9402” or “37,890” bytes in binary representation.
  • the semiconductor memory responds by sending the encryption header 210 completely.
  • the gaming machine verifies the encrypted header 210 by performing the following substeps. -Verify that system parameter 211 is supported. -Validate the root certificate 212.
  • the root certificate includes at least a game public key and a digital signature.
  • the game machine verifies the digital signature enclosed in the root certificate with the root public key stored in the flash memory unit 142, thereby determining the validity of the game public key.
  • -Validate game certificate 213 The game certificate includes at least a public key 214 and a digital signature for it. That is, the game machine verifies the digital signature enclosed in the game certificate 213 with the public key from the root certificate 212, thereby determining the validity of the public key 214. Check whether the use of the public key 214 is prohibited by the firmware. If the public key is truly compromised, it should not be used anymore, which is why it contains a list of public keys known to have been firmware updates compromised.
  • the protocol is interrupted. If all steps are successfully executed, the public key 214 is valid. From there, the gaming machine 120 holds the public key 214 and the signature index 215 in the RAM unit 141 for later use.
  • Step 711 is an authentication protocol, in which the game machine and the semiconductor memory exchange several messages.
  • the operation performed by the game machine has already been described with reference to FIG. 6, while the operation performed by the semiconductor memory uses the hardware unit described in FIG. 4 and has already been described with reference to FIG. It is stated.
  • the game machine 222 is decrypted by the game machine 120 using the decryption key 163 stored in the flash memory 142 in step 713. Using the game key 222, the program entry point 223 is also decrypted by the gaming machine.
  • step 721 the first sector 241 and its hash value 224 are decrypted with the game key 222.
  • the first sector stores a firmware update.
  • step 722 the validity of the firmware update is checked as follows.
  • the game machine 120 calculates the hash value of the first sector 241 and compares it with the hash value 224 stored in the game header. The two hash values should be equal.
  • -Firmware updates include digital signatures. Therefore, the game machine 120 verifies the digital signature with the root public key 162.
  • step 723 the gaming machine verifies that the firmware update is newer than the firmware 161 stored in the flash memory unit 142. If so, in step 724, the old firmware is replaced with a new one. Otherwise, the gaming machine will ignore the firmware update.
  • the program data can be transferred from the semiconductor memory to the game machine.
  • the entry point 223 of the decryption program stores a program start address, and this address corresponds to one of 1,024 sectors of the semiconductor memory in the game program area 240. That is, the game machine transmits a request 731 for the related sector to the semiconductor memory to which the sector data 732 is transferred.
  • the sector data is decrypted, so the gaming machine decrypts the sector using the game key 222 at step 733.
  • the game header 220 stores a hash value of the decrypted sector, and this value is decrypted by the game key 222.
  • the game machine calculates its hash value and compares it with the decrypted hash value from the game header 220. If the two hash values are equal, the sector data is valid and in step 735 the program stored in the sector is executed. If the two hash values are different, this means that the sector data may have been changed, and the program is not executed.
  • the program may be spread over several sectors. Thus, at each point when new data is requested, a new sector is transferred and steps 731-736 are again executed by the gaming machine.
  • the description focuses on a semiconductor memory further equipped with an encryption engine and a game machine further equipped with a security chip.
  • the semiconductor memory includes an encryption engine that can regenerate the secret value and the image value.
  • an encryption engine that can regenerate the secret value and the image value.
  • FIG. 8 is a hardware diagram of the game system, which includes a game machine 820 and a semiconductor memory 800 for storing a game program. In the following, the difference from the game system described with reference to FIG. 1 is emphasized.
  • Semiconductor memory 800 includes ROM unit 103, EEPROM unit 102, and memory controller 801 coupled to the bus. Unlike the memory controller described with reference to FIG. 1, this memory controller includes a programmable ROM (PROM), a 128-bit key “A” and a 128-bit plaintext “B”. An AES engine that can calculate AES encryption such as “AES A (B)”.
  • the game machine 820 further includes a security chip 821. Details of the security chip 821 will be described later with reference to FIG. Flash memory unit 142 stores firmware 161, however, it is not required to store root public key 162 or decryption key 163.
  • FIG. 9 is a block diagram of logical memory mapping in the semiconductor memory 800.
  • the semiconductor memory 800 does not store the secret table 201 or the image table 202. .
  • the tree table 203, the system parameter 211, the root certificate 212, the game certificate 213, and the public key 214 are physically arranged in the PROM unit 802 of the memory controller 801.
  • the ROM unit 103 simply stores a game header 220 and a game program 240. Since the game header 220 and the game program 240 are stored in the same manner for all semiconductor memories storing similar games, the ROM unit 103 is used only once as a mask ROM technology or as an option. It can be realized by programmable ROM technology.
  • the game program 240 may be spread over several sectors, however, the first sector 941 is reserved for data updates.
  • This data update includes the latest version of the firmware 161, the data required by the security chip 821, and its digital signature.
  • FIG. 10 is a hardware diagram of the memory controller 801 of the semiconductor memory 800.
  • the control unit 1010 further includes a shift unit 1012, a challenge register 1011 and an index register “j” 1013.
  • the memory controller 108 further includes a PROM unit 802 that stores a tree table 203 and an encryption header 210.
  • the PROM unit includes a memory controller 801, an 8-bit data bus and a 35-bit control bus including a VCC connection, a clock connection, a PROM chip select (PROM CS) connection, and a 32-bit address bus. Are combined.
  • the memory controller further includes a counter register 1021 that is an 18-bit counter.
  • the counter is padded with one hundred zero bits 1022 to extend its length to 128 bits.
  • the signature counter 1024 is composed of the 14 leftmost bits of the counter 1021, while the secret counter 1023 is composed of the four rightmost bits of the counter 1021.
  • the signature index 215 includes a signature counter 1024 that is padded with zero bits 1025 in order to extend its length to 16 bits.
  • a 16-bit signature index 215 is coupled to the control unit, an 18-bit counter 1021 is coupled to an adder 1026, and a counter padded with zero bits is coupled to a multiplexer 1033.
  • Adder 1026 has two inputs, one 8-bit input coupled to counter 1021 and to control unit 410 via its second 1-bit input.
  • the second 1-bit input is set to “1” by the control unit 1010, the counter 1021 is incremented. If an overflow occurs during this increment operation, a 1-bit overflow signal is transferred to the counter unit 1010. Since overflow occurs when the counter 1021 reaches its maximum value, ie “0x3FFFF” or “262143” in decimal notation, the control unit 1010 enters a permanent sleep state and comes after Reject the message.
  • the hash function “H” is assumed to be achieved by AES and exclusive OR operation.
  • different block ciphers may be used, or different hash functions such as “MD5” and “SHA-1” may be used.
  • the memory controller further includes an AES engine 803 and an exclusive OR unit 1032.
  • the AES engine has two 128-bit inputs, a plaintext input on the right side and a key input on the top, and a 128-bit output, which is a ciphertext output on the left side.
  • the AES engine supports two modes of operation called a mode “0” and a mode “1” by the configuration of multiplexers 1033, 1034, and 1035.
  • the AES engine has a plaintext input of initial vector “IV” 1042 and a key input of “x” as a result of the previous AES operation stored in output register 1044.
  • y AES x (IV) (+) IV ”.
  • multiplexers 1033, 1034, 1035 are appropriately configured by the control unit 1010 to select their “0” labeled inputs.
  • “IV” 1042 is coupled to the plaintext input of the AES engine.
  • output register 1042 is coupled to the AES engine key input.
  • the exclusive OR unit 1032 is combined with the “IV” 1042.
  • the output register 1044 stores the result of the operation “AES x (IV) (+) IV”.
  • the “x” value serves as the secret value
  • the “y” value serves as the image value in the authentication protocol, eliminating the requirement to store the secret and image tables in non-volatile memory. can do.
  • a secret value is extracted from the private key of this embodiment using the mode “1” of the AES engine, and becomes a seed 1041.
  • FIG. 11 is a block diagram showing details of the function of the memory controller 801.
  • the memory controller 801 processes the “READ” message and the “WRITE” message sent out by the game machine 820 by the same method as the memory controller 105 already described with reference to FIG. However, in the case of the “READ” message, since the semiconductor memory 801 further includes the PROM unit 802, the following steps are performed.
  • step 1143 the PROM unit 102 is activated via its “PROM CS” input and the physical PROM address is sent by the control unit 1010. Therefore, the PROM unit sends 1-byte data to the control unit that transmits the byte to the game machine 820 via the communication pins 110 to 117.
  • the address register 412 is incremented and the length register is decremented. Step 1143 is repeated as long as the value stored in the length register is not zero.
  • the method by which the “CHALLENGE” message is processed is also different.
  • the memory controller repeats the following procedure 8 times, and in each iteration, depending on the challenge 1011, one secret value “x ′ [j]” and one image value “y ′ [j + 1]”, or One image value “y ′ [j]” and one secret value “x ′ [j + 1]” are generated.
  • step 1164 the challenge 1011 is moved to the right by 1 bit by the shift unit 1012. In this process, the rightmost bit (LSB) of the challenge is checked.
  • LSB rightmost bit
  • the memory controller 801 receives a “CHALLENGE” message together with a data payload expressed as “(11010001)” in binary notation. Further, initially, it is assumed that the counter 1021 includes an 18-bit value “0x00010”. More specifically, the signature index is “1” and the secret counter is “0”.
  • the memory controller 801 Since the next challenge bit is “1”, “0”, “1”, “1”, the memory controller 801 stores “y ′ [9]”, “x ′ [10]”, “x ′ [ 11] “,” y '[12] “,”y' [13] “,” x '[14] “,”y' [15] “,” x '[16] "are calculated and shipped. After all the operations are completed, the counter value 1021 is “0x20”. ⁇ Security chip>
  • FIG. 12 is a hardware diagram of a security chip of the game machine 820.
  • the security chip 821 can be realized as a smart card microcontroller or a TPM chip (trusted computing module), which is generally a tamper-resistant chip.
  • the security chip includes three different memory units, namely, a ROM unit 1210, an EEPROM unit 1220, and a RAM unit 1230.
  • the ROM unit 1210 is described in detail with reference to FIG. 13, a program that may be an “OS” 1211, a high level function 1212 for interfacing low level safety functionality such as AES encryption or RSA operation, for example.
  • the authentication protocol 1213 program and the pattern matching program 1214 are stored. Since these programs may be the same for all commercial game machines, the ROM unit 1210 can be realized by mask ROM technology.
  • the EEPROM unit 1220 stores data that can be modified, customized, or updated if necessary. More specifically, a farm hash 1221, a root public key 1222, a decryption key 1223, a pattern file 1224, a black list 1225, and a patch 1226 are stored.
  • the firmware hash 1221 is a hash value of the firmware 161 stored in the flash memory unit 142 of the game machine 820.
  • the root public key 1222 is a public key used to validate the root certificate 212 when the semiconductor memory 800 is combined with the game machine 820.
  • the decryption key 1223 is a key that can be used to decrypt the game key 222 when the semiconductor memory 800 is coupled to the game machine 820.
  • the pattern file 1224 stores a list of partially malicious code and program bugs.
  • Blacklist 1225 is a list of public keys known to have been compromised.
  • patch 1226 consists of a partial code list for patching known bugs in the game.
  • the RAM unit 1230 stores temporary data and variables 1231 generated during the execution of the program.
  • the security chip 821 also includes three arithmetic units, that is, a CPU 1241, an AES engine 1242, an RSA engine 1243, and a random number generator (RNG) 1245.
  • the central processing unit (CPU) 1241 is a microprocessor, which, for example, stores what is stored in the ROM unit 1210, like a program, a RAM unit 1230 for intermediate results, and processes customized parameters. Alternatively, it is executed using an EEPROM unit for storing the results for a long time.
  • the AES engine 1242 is a hardware coprocessor specialized for encryption.
  • the coprocessor can execute the AES operation “AES A (B)”, which refers to the encryption of the bit string “B” using the bit string “A” as a key, at high speed and with low power consumption.
  • AES A (B) refers to the encryption of the bit string “B” using the bit string “A” as a key, at high speed and with low power consumption.
  • the AES engine 1243 can realize more advanced operations such as calculating data hash (hashing data).
  • the RSA engine 1243 is a hardware coprocessor specialized for RSA computation.
  • the RSA engine 1243 can verify the RSA signature enclosed in the root certificate 212, the game certificate 213, or the update data 941 using the root public key 1222 stored in the EEPROM 1220. .
  • the random number generator 1245 generates a random number that can be used as a challenge.
  • the units in the security chip 821 are coupled to the internal bus 1251, and the security chip 821 is coupled to other electronic components of the gaming machine 820 by the bus 151. Communication with other components is managed by an input / output (I / O) interface 1244. ⁇ Verification protocol>
  • FIG. 13 is a block diagram showing functional details of a verification protocol performed by the game machine 820. While not intending any particular limitation, in this embodiment, the verification protocol is implemented as a software program stored in ROM unit 1210 of security chip 821 and uses AES engine 1242 and RSA engine 1243. , And executed by the CPU 1241.
  • the verification protocol described below differs from that already described with reference to FIG. 1 in several respects.
  • One difference is how the data received after the “CHALLENGE” message is sent to the semiconductor memory 800 is processed.
  • step 1312 the game machine receives 16 values “s [1]”... “S [16]” from the semiconductor memory. Initially, the index “j” is set to “1”, and the bit string “H1” is set to an empty bit string. Next, steps 1321 to 1326 are repeated eight times.
  • bit strings “y ′ [j]” and “s [j + 1]” are added to “H1”, and the counter “j” is incremented by two.
  • the bit strings “s [j]” and “y ′ [j + 1]” are added to “H1”, and the counter “j” is incremented by two.
  • Step 1341 the bit string “H1” is “y ′ [1]
  • the hash value of “H1” is calculated using the AES engine 1242.
  • Steps 641, 642, and 1343 to 1346 are intended to extract tree data from the tree table 203 arranged in the PROM 802. Since these steps start with the logical address of the tree table 203 being “0x0”, the address “A” is “(j ⁇ 2) * 0x10” in step 1343 and “j *” in step 1343. The steps are basically the same as those already described with reference to FIG.
  • step 1344 the hash value “H (H2
  • FIG. 14 is a block diagram of a communication protocol between the game machine 120 and the semiconductor memory 100.
  • the left block in FIG. 14 is an operation executed by the semiconductor memory 800, while the right block is an operation executed by the game machine 820.
  • the central block is a message exchanged between the game machine and the semiconductor memory.
  • the communication protocol described above with reference to FIG. 7 differs from the communication protocol of this embodiment in several points. These differences are due to the fact that the semiconductor memory 800 includes the AES engine 1242 and the game machine 820 includes the security chip 821. Thanks to these units, the communication protocol can be enhanced in the following ways.
  • step 1401 a hash value of the firmware is calculated using the AES engine 1242 and the security chip 1241 CPU. This hash value is compared with the hash value of the firmware 1221 stored in the EEPROM unit 1220 of the security chip 821. If they do not match, it means that the firmware has been illegally modified and in this case the gaming machine will not start. If the firmware passes its integrity check, it is loaded into the RAM 141 and executed by the CPU 143.
  • the encrypted header 210 is obtained from the semiconductor memory 800.
  • the validity of the encrypted header is checked by the security chip as follows. -The security chip verifies that the system parameter 211 is supported. Verify the root certificate 212 with the root public key 1222 The signature encapsulated in the certificate is verified using the RSA engine 1243, thereby determining the validity of the game public key 214. Verify the game certificate 213 with the game public key enclosed in the root certificate 212; The signature enclosed in the game certificate is verified using the RSA engine 1243, thereby determining the validity of the game public key 214. Check that the use of the public key 214 does not exist in the blacklist 1225 of compromised public keys.
  • step 1411 the authentication protocol described above with reference to FIGS. 10, 11 and 12 is executed in step 1411.
  • the AES engine 1242 decrypts the game key 222 using the decryption key 1223, and the AES engine 1242 uses the decrypted game key 222 to enter the program entry point. 223 is decrypted.
  • the first sector 941 of the game program is saved for data updates.
  • the first sector 941 and its hash value 224 are decrypted by the AES engine 1242 using the game key 222.
  • the integrity of the first sector 941 is verified by the security chip 821 as follows.
  • the hash value of the first sector is calculated using the AES engine 1242 and compared with the decrypted hash value; If not, the data update has been illegally modified.
  • the first sector includes the RSA engine 1243 and the digital signature verified using the root public key 1222; The validity of the digital signature ensures the integrity of the data update 914.
  • the data stored in the firmware 161 and / or the security chip 821 may have already been updated.
  • the data update 941 is discarded.
  • the firmware is replaced with a newer version
  • its hash value 1221 is stored in the EEPROM 1220
  • the updated pattern file 1224 or updated blacklist Additional data, such as 1225 is copied into the EEPROM 1220.
  • the main program is transferred from the semiconductor memory. Since the game program is encrypted, in step 1433, the AES engine 1242 uses the game key 222 to decrypt the game program. Similarly, the hash value of the sector stored in the game header 220 is decrypted. In order to validate the data from the transferred sector, in step 1434 the following tasks are performed by the security chip 821. -The hash value of the sector is calculated by using the AES engine. If the calculated hash value is different from the hash value stored in the game header 220, the sector data has been illegally modified. The sector data includes a digital signature, which is verified using the root public key 1222 and the RSA engine 1243; If the verification is successful, sector integrity is guaranteed.
  • the decrypted sector is compared with the elements of the pattern file 1224. If they match, the sector data contains bugs or malicious programs. In this case, the security chip 821 looks for a corrected partial program in the patch 1126. If no replacement is found, program execution stops.
  • step 735 the program stored in the sector is executed by the CPU 143. If more data is needed from the semiconductor memory 800, the steps described above are repeated.
  • the computer machine can distinguish the original storage medium from the counterfeit product using the public key or digital signature of the challenge. Furthermore, since the validity of digital data can be checked using a public key, illegal programs cannot be inserted. As a result, the present invention prevents the use of unauthorized copies of digital data.
  • DESCRIPTION OF SYMBOLS 100 Semiconductor memory, non-volatile memory unit ... 102, Read-only non-volatile memory unit ... 103, 104 ... Bus, memory controller ... 105, Pin ... 106-117, 120 ... Game machine, 122 ... Directional pad, 123 ... button, 124 ... liquid crystal screen, 125 ... speaker, 138 ... cavity, 139 ... on / off switch, 126-137 ... contact, 141 ... RAM, 142 ... flash memory unit, 143 ... CPU, input / output interface unit ... 144 145 ... video controller, 146 ... sound controller, 147 ... input control unit 148 ... battery, 161 ... firmware, 162 ... root public key, 163 ... decryption key.

Abstract

 非合法に再流通されたデジタルデータが処理されることを防止するためのマシンを提供する。 半導体格納媒体は、例えば、プログラム、イメージ、音楽、映画など、デジタルデータと、公開鍵と、秘密鍵(private key)と、そして、コンピュータマシンとの通信を操作する回路とを備えており、公開鍵が少なくともデジタルデータと秘密鍵(private key)とから導き出される。第1に、半導体格納媒体は、公開鍵をコンピュータマシンへ転送する。第2に、コンピュータマシンがチャレンジ(乱数)を格納媒体へ送る。第3に、格納媒体がチャレンジのデジタル署名を発行し、そして、それをコンピュータマシンへ送り返す。第4に、コンピュータマシンが、公開鍵を使ってデジタル署名を検証する。第5に、格納媒体がデジタルデータをコンピュータマシンへ転送する。第6に、コンピュータマシンが、公開鍵を使ってデジタルデータを検証する。

Description

半導体メモリ、当該半導体メモリと結合されるコンピュータマシン、及び、そのデータ処理方法 参照による取り込み
 本出願は、平成21年(2009年)3月23日に出願された日本特許出願第69435号(特願2009-069435)の優先権を主張し、その内容を参照することにより、本出願に取り込む。
 本発明は、デジタルコンテンツを格納するための半導体メモリと、半導体メモリに格納されたデジタルコンテンツを処理するためのコンピュータマシンに関し、より詳細には、本発明は、半導体メモリと、非合法的に再流通されたデジタルコンテンツを処理することを防止するコンピュータマシンと、そして、そのための処理方法に関する。
 認証は、海賊行為、未認証のコピー、又は、偽造を取り締まるため、重要な役割を担っている。かかる認証は、例えば、パスポートの所有者を認証し、又は、反偽造を目的とした無線通信可能なチップを埋設した安全なパスポートにも採用されており、そこでは、認証用チップが製造物の出所を認証する。加えて、著作権で保護されたデジタルメディアは、海賊行為などの未認証行為を防止するため、DRM (digital right managements) として知られる認証用トークンを含んでいる。その結果、それらを支える機器(CD、DVD、メモリカード、その他の同様なメモリ装置)は、しばしば、認証メカニズムを備えている。最後に、認証は、競合者が製品をリバースエンジニアリングすることを防止し、かつ、製品を安価に大量生産するためにも有用である。例えば、競合者によって製造された再充填用(リフィル)キットや偽のカートリッジの使用を防止するため、認証用チップをプリンターカートリッジに装着することもできる。
 認証は、被認証装置(prover)がその特定のための証拠を認証装置(verifier)に提示すプロトコルから構成されている。通常、認証装置は、被認証装置だけが解決可能な要求(チャレンジ:challenge)を送付する。この要求が共通鍵暗号化法に依っている場合には、被認証装置及び認証装置は共通の秘密鍵を共有しており、それに対し、公開鍵暗号化法(public-key cryptography)の場合には、被認証装置だけが秘密鍵を所有し、そして、どの認証装置も、被認証装置によって提供される要求の解を確認(チェック)することが出来る。
 公開鍵暗号化システム、特に、デジタル署名は、認証の目的のために利用することができる。認証装置はランダムなメッセージを、その秘密鍵を利用してメッセージに署名した被認証装置に送信する。そして、認証装置は、秘密鍵ではなく、被認証装置の公開鍵だけを用いて署名を認証することによって、被認証装置の身元を確認することができる。公開鍵暗号化法に基づく認証システムでは、認証装置は被認証装置の秘密鍵を知らないことから、認証装置が被認証装置を装うことができないという利点を有している。加えて、公開鍵基盤を利用することにより、製品ラインの認証が、容易に可能となる。即ち、被認証装置は、要求に対してデジタル的な署名を行い、そして、その公開鍵と共に、認証局装置(certificate authority)によって署名され、被認証装置の公開鍵のデジタル署名を含んだ被認証装置の公開鍵のための証明書(certificate)を提供する。そして、認証装置は、被認証装置の身元を確認するために、両方の署名を認証することができる。かかるアプローチは、個別ユニットの公開鍵ではなく、証明のための認証手段(例えば、全製品ラインのための単一の公開鍵であり、この公開鍵は製造会社から得られる。)を格納しなければならないという認証装置への格納要求を取り除くだけではなく、簡単な取り消し機構をも含んでいる。ある被認証装置の秘密鍵が知られ、その信用が失われた場合には、当該被認証装置の公開鍵は、全ての認証装置に対してブラックリスト内へ送ってもよい。
 最近では、CDやDVDなどの媒体よりもよりフレキシブルであることを理由に、半導体メモリを、ゲームやコンピュータプログラムのデジタルデータのための格納手段として利用することに、再び、関心が集まっている。特に、半導体メモリユニットは、認証、コピープロテクション、データの暗号化などの機能性を向上するため、カスタム回路を含むことができる。
米国特許第6,782,477号:「プライベートコピープロテクションとオンラインセキュリティーを提供するための改ざん防止ハードウェアを使用するための方法とシステム」 米国特許第6,606,707号:「半導体メモリカード」
ラルフ C.メルクレ:「認証されたデジタル署名」CRYPTO 1989: 218-238頁 カミーユ ヴィオム、カツユキ オケヤ、エリック ダーメン、そして、ヨハネス ブックマン:メモリトークンによる公開鍵認証、WISA 2008, LNCS 5379:84-98頁
 他方、例えば上記の特許文献1に開示されたデジタル署名は、プログラムの完全性(integrity)を、より具体的には、プログラムが悪意の者により変更されたことをチェックするために有用である。しかしながら、デジタル的に署名されたプログラムは、そのデジタル署名を含め、コピーされ、そして、第三者によって非合法に再流通される可能性がある。実際、かかる第三者は、プログラムとデジタル署名とを含んだ格納媒体と、プログラムを走らせるコンピュータマシンとの間のチャンネルを監視することが出来る。その結果として、そのプログラムとデジタル署名とを引き出し、そして、そのコピーを非合法に再流通することが可能となる。
 他方、認証は、ある特定の格納媒体が、例えば、ライセンスを介して、公認の配給者によって認証されていることを保障している。特許文献2は、認証のための回路を備えている半導体メモリカードを開示している。しかしながら、認証は、認証が成功した後に転送されたプログラムがその特定の格納媒体に確かに格納されていたことを保障するものではない。例えば、悪意の者は、認証を目的として合法な格納媒体を利用し、その後、悪意の又は非合法に流通されたプログラムを、合法な格納媒体に格納されたプログラムの代わりに挿入することも可能である。
 非特許文献2は、半導体メモリカードとコンピュータマシンとを開示しており、そこでは、半導体メモリカードとコンピュータマシンとが相互に認証プロトコルに従事し、そして、解読鍵を導き出す。その結果、解読鍵によって暗号化されたデータは、半導体メモリカードに源を発するものであることが保障される。しかしながら、コンピュータマシンと半導体メモリカードは、最初に、多くのコンピュータマシンが多くの半導体メモリカードと結合され得る場合には、実用的ではなく、共通のマスター共通鍵を割り当てなければならない。
 本発明は、上記で述べた従来技術を考慮して達成されたものである。従って、本発明の一の目的は、メモリユニットや最初に共通鍵を割り当てるコンピュータなしに、メモリユニット内に格納されたデジタルデータの完全性を確立し、もって、非合法に再流通されたデジタルデータが処理されるのを防止するためのマシンを提供することである。更に、上記及び他の目的と新規な特徴が、続く記載や添付の図面から明らかとなろう。
 上記の目的を達成するため、本発明によれば、まず、コンピュータマシンと結合されるための半導体メモリであって、第1のデータ、第1の鍵、そして、第2の鍵を格納し、前記第1の鍵は、前記第1のデータと前記第2の鍵とから導き出された所定の値であるところの不揮発性メモリユニットと、そして、コンピュータマシンからのチャレンジを受信し、そして、コンピュータマシンへ第2のデータを転送し、第2のデータが、前記第2の鍵と前記チャレンジとから導き出されるところのメモリコントローラとを備えている半導体メモリが提供されている。
 また、本発明によれば、上述した目的を達成するため、半導体メモリと結合するためのコンピュータマシンであって、CPUと、第1の鍵を格納している不揮発性メモリユニットと、前記半導体メモリからのデータを受信するための入出力インターフェイスとを備えているものにおいて、前記半導体メモリからのデータは、第2の鍵と、第1のデータと、そして、第2のデータとを含んでおり、そして、前記コンピュータマシンは、更に、前記第2の鍵を検証するための署名検証ユニットと、チャレンジを発生するための乱数発生器と、前記第1と第2のデータを処理するためのハッシュ関数ユニットと、そして、前記ハッシュ関数ユニットによって処理されたデータと第2の鍵を比較するための比較ユニットを備えており、もって、第1と第2のデータの完全性を確立するコンピュータマシンが提供されている。
 更に、本発明によれば、上述した目的を達成するため、データ処理方法であって、半導体メモリからの第1の鍵を受信するステップと、前記半導体メモリへチャレンジを送信するステップと、前記半導体メモリから第1のデータを受信するステップと、前記チャレンジと前記第1の鍵により前記第1のデータの完全性をチェックするステップと、前記半導体メモリから第2のデータを受信するステップと、前記第1の鍵により前記第2のデータの完全性をチェックするステップと、そして、前記第2のデータを処理するステップを備えたデータ処理方法が提供されている。
 更には、本発明によれば、上述した目的を達成するため、データ処理方法であって、第1の鍵とその証明書を送信するステップと、少なくとも一のデータのハッシュ関数を送信するステップと、チャレンジを受信するステップと、複数の秘密値を送信するステップと、複数のイメージ値を送信するステップと、複数のツリー値を送信するステップと、そして、前記データを送信するステップを備えているデータ処理方法が提供されている。
 上記に加え、ここに開示された実施例の中の好適なものを以下に略述する。
 半導体格納媒体は、例えば、プログラム、イメージ、音楽、映画など、デジタルデータと、公開鍵と、秘密鍵(private key)と、そして、コンピュータマシンとの通信を操作する回路とを備えており、公開鍵が少なくともデジタルデータと秘密鍵(private key)とから導き出される。第1に、半導体格納媒体は、公開鍵をコンピュータマシンへ転送する。第2に、コンピュータマシンがチャレンジ(乱数)を格納媒体へ送る。第3に、格納媒体がチャレンジのデジタル署名を発行し、そして、それをコンピュータマシンへ送り返す。第4に、コンピュータマシンが、公開鍵を使ってデジタル署名を検証する、第5に、格納媒体がデジタルデータをコンピュータマシンへ転送する。第6に、コンピュータマシンが、公開鍵を使ってデジタルデータを検証する。
 秘密鍵(private key)を知らなくとも、チャレンジの公開鍵やデジタル署名を利用し、コンピュータマシンは、正当(合法)な格納媒体を偽造品から区別することができる。更に、公開鍵を利用して、デジタルデータの有効性をチェックできることから、非合法プログラムを挿入することはできない。その結果、本発明は、デジタルデータの認証されていないコピーの利用を防止する。
 これら及びその他の目的、本発明の特徴や利点は、添付された以下の図面と関連させることにより、より容易に明らかとなろう。
ゲームマシンと、ゲームプログラムを格納するための半導体メモリとを備えたゲームシステムのハードウェアダイアグラムである。 半導体メモリ内の論理メモリマッピングのブロックダイアグラムである。 半導体メモリ内のROMユニットの物理アドレスマップと、ROM領域内に格納されたデータとの機能的な関連を示すブロックダイアグラムである。 半導体メモリ内のメモリコントローラのハードウェアダイアグラムである。 メモリコントローラの機能詳細を示すブロックダイアグラムである。 ゲームマシンにより行われる検証プロトコルの機能詳細を示すブロックダイアグラムである。 ゲームマシンと半導体メモリとの間の通信プロトコルのブロックダイアグラムである。 ゲームマシンと半導体メモリとを備えたゲームシステムのハードウェアダイアグラムである。 半導体メモリ内での論理メモリマッピングのブロックダイアグラムである。 半導体メモリ内のメモリコントローラのハードウェアダイアグラムである。 メモリコントローラの機能詳細を示すブロックダイアグラムである。 ゲームマシン内のセキュリティーチップのハードウェアダイアグラムである。 ゲームマシンにより行われる検証プロトコルの機能詳細を示すブロックダイアグラムである。 ゲームマシンと半導体メモリの間の通信プロトコルのブロックダイアグラムである。 ゲームマシンと半導体メモリユニットの製造プロセスのブロックダイアグラムである。
<<定義及び表記法>>
 まず、以下に用いられる定義と表記法について述べる。
 整数は、幾つかの表現を使って記述することができる。最も一般的な表現は十進法表現である。以下の図面における記述では、十進法表現に加えて、十六進法及び二進法表現が使用される。十六進法で書かれた場合、プレフィックス“0x”が添えられる。二進法で書かれた場合には、括弧“(…)”が書き添えられる。
 例えば、「0xF」は整数15の十六進法表現である。同様に、「(1111)」は15の二進法表現である。
 デジタルデータは、ビット列であり、ビットストリングとも呼ばれる。同様に、ビットの連続は、バイト列としても表現することができ、1バイトは8ビットから成る。例えば、ストリング(100101101)は9ビットを、又は、2つのバイト、「0x01」と「0x2D」とを有している。
 「x||y」は、ビットストリング「x」と「y」の連結(concatenation)に言及している。例えば、「0x012D=0x01||0x2D」のように記述する。
 「x(+)y」は、ビットストリング「x」と「y」のビット毎の排他的ORを言及している(「(+)」は排他的ORの演算記号を表す)。「x >> 1」は、ビットストリング「x」の右への移動を言及する。
 ビットストリング「x」の最下位ビット(LSB)は、その二進表現の最右のビットである。
 ハッシュ関数は任意の長さのビットストリングを所定の長さの短いビットストリングにマッピング(map)するアルゴリズムである。例えば、周知のハッシュ関数である「MD5」は、任意のサイズのメッセージを128ビットのハッシュ値にマッピングする。この意味において、ハッシュ値は、大きな入力メッセージの小さな「指紋」とも考えられる。ハッシュ関数の他の重要な特性は、同一のハッシュ値を持った二つのメッセージを見つけ出すことは困難であるということであり、この特性は、「衝突困難性(collision-resistance)」と呼ばれる。以下の好適な実施の形態での記載においては、表記法「y=H(x)」が使われるが、ここで「x」は入力メッセージであり、「H」はハッシュ関数であり、そして「y」はハッシュ値である。幾つかの周知の基本的なハッシュ関数としては、例えば、「MD5」又は「SHA1」がある。更に、ハッシュ関数は、ブロック暗号化(block ciphers)を含め(但し、それに限定されることない)、従来の暗号化関数(encryption functions)によって実現することができることも周知のことである。例えば、周知のブロック暗号化「AES」は、以下のように使用することができる。メッセージ「x」が256ビットを有しているとすれば、かかるメッセージは二つの128ビットのブロックx=x[1]||x[2]に分けることができ、128ビットの初期ベクトル(initial vector)が「IV」であれば、ハッシュ値「y=H(x)」は、以下の二つのステップで計算される。
Figure JPOXMLDOC01-appb-M000001
 上記において、「AESA(B)」は、鍵「A」による「B」の「AES」暗号化に言及しており、「A(+)B」は、「A」と「B」のビット毎の排他的OR(XOR)に言及している(「(+)」は排他的ORの演算記号を表す)。
 デジタル署名スキームは三つのアルゴリズムからなっている。最初の一つは、鍵対(key-pair)の発生であり、ここでは秘密鍵(private key)と公開鍵とが生成される。秘密鍵(private key)は公開されず、一方、公開鍵は誰にでも配布される。第二のアルゴリズムは、署名発生アルゴリズムである。メッセージと秘密鍵とを入力として、デジタル署名を発生する。第三は、署名認証アルゴリズムであり、これはメッセージ、署名、そして、公開鍵を入力として、署名の真正(correctness)を認証する。
 公開鍵は自由に入手可能であることから、誰でも署名を認証することはできるが、他方、有効な署名は、秘密鍵(private key)の所有者だけがこれを発生することが出来ることに注目することが重要である。
 上記非特許文献1に開示されている「Merkle」の署名スキームは、デジタル署名を提供するための周知の技術である。他の署名スキームとは異なり、「Merkle」の署名スキームは、複雑な算術演算を利用することなく、ただ単に、ハッシュ関数に依存するだけである。
 認証プロトコルは、被認証装置(prover)及び認証装置(verifier)と呼ばれる二つの存在の間における通信プロトコルであり、そこでは、被認証装置がその身元(identity)の証明(proof)を与える。認証プロトコルは、少なくとも二つのステップから構成されており、認証装置がチャレンジ(challenge)を送付し、そして、被認証装置が秘密のデータを利用して応答(response)を生成する。認証装置は、応答の有効性をチェックすることができ、そして、その結果、被認証装置の身元が正しいことを立証する。デジタル署名のスキームから認証プロトコルを構成することは単純であり、そこでは、チャレンジ(challenge)は乱数であり、そして、応答(response)はそのデジタル署名である。例えば、上記非特許文献2には、「Merkle」署名を基礎とした認証技術が開示されており、そこでは、「Merkle」署名が、メモリ動作(memory operations)だけで構成されている。
 デジタル証明書(digital certificate)は、公開鍵を確認するために有用なデジタル書面(digital document)である。デジタル証明書は、公開鍵のデジタル署名を備えており、そのデジタル署名は、例えば、政府の機関や、その公開鍵が信頼されている確立された会社など、信頼された第三者(trusted third party)により構成されている。加えて、証明書の階層を利用することが一般的であり、そこでは、ルート証明書(root certificate)が、公開鍵を検証するのに利用され、そして、同様に、第二の認証が公開鍵を検証するのに利用される。この型の階層は、一般に、公開鍵基盤(公開鍵インフラストラクチャ:public-key infrastructure)、又は、短縮して「PKI」と呼ばれる。「X.509」が、その構造やデジタル認証のフォーマットを規定するための周知の基準である。
 以下、本発明の好適な実施の形態について、添付の図面を参照しながら、詳細に述べる。
<<ゲームマシンと半導体メモリユニットの製造プロセス>>
 ゲームマシンと半導体メモリの詳細を述べる前に、本発明のより良い理解のため、ゲームマシンの製造プロセスと半導体について述べる。
 図15は、ゲームマシンと半導体メモリユニットの製造プロセスのブロック図である。このプロセスは、本発明の両方の実施例に適用可能である。
 如何なる特定の限定をも意図するものではないが、このプロセスでは、ゲームマシンの製造者1510、ゲームメーカ1530、そして、メモリ製造者1560という、三人の行為者を含んでいる。ゲームマシン製造者1510は、ゲームマシンを製造し、ゲームメーカ1530は、ゲームマシンにより実行されるソフトウェアプログラムを開発し、そして、メモリ製造者は、ゲームマシンにより実行されるソフトウェアプログラムを格納する半導体メモリユニットを製造する。
 ゲームマシン製造者1510は、ルート秘密鍵(root private key)1511、ルート公開鍵(root public key)1512、そして、解読鍵(decryption key)1513を保持している。如何なる特定の限定をも意図するものではないが、本発明においては、ルート秘密鍵及び公開鍵は「RSA」鍵であり、そして、それらはゲームマシンの製造者によって所有されたコンピュータ上で発生され、かつ、格納されたものであるとする。幾つかの同一のゲームマシン1514が製造され、そして、商品化されており、全てのゲームマシンは、ルート公開鍵1512と解読鍵1513とを格納している。
 ゲームメーカ1530がゲームマシン1514のため、対応する未暗号化ゲームヘッダ1533とゲームプログラムとを含めたビデオゲームを開発し、そして、そのゲームの千個のコピーを商品化することを希望したとする。しかしながら、ゲームメーカは、ゲームマシン製造者から、ルート証明書(root certificate)1515を含んだライセンスを得なければならない。
 ゲームマシン製造者と同様に、ゲームメーカは、ゲームメーカが所有するコンピュータ上で発生され、そして、格納された、ゲーム秘密鍵(game private key)1531とゲーム公開鍵(game public key)1532とを保有している。最初に、ゲームメーカ1530は、ゲーム公開鍵1532を送信して、ゲームマシン製造者1510からライセンスを入手し;ゲームマシン製造者は、解読鍵1513とゲーム公開鍵1532のデジタル署名を含むルート証明書1515を、応答する。デジタル署名は、ルート秘密鍵1511と共に、ゲームマシン製造者に帰属するコンピュータ上で発生される。また、アップデートデータ(data update)1516が、ゲームプログラム内に含まれ、そして商品化されたゲームマシン1514のファームウェアをアップデートするために送信される。
 次に、ゲームメーカは、ゲームデータを暗号化するため、ゲーム鍵1535を発生し、そして、解読鍵1513を用いてゲーム鍵を暗号化する。また、ゲームメーカは、ゲームヘッダ1533とゲームプログラム1534とを、ゲーム鍵1535を用いて暗号化する。
 その後、ゲームメーカにより所有されるコンピュータ上では、例えば、1541、1543、1545などの暗号化データが、そして、例えば、1542、1544、1546などのゲーム証明書が発生される、各暗号化データは秘密鍵を含んでいる。より正確には、千の異なる暗号化データがランダムに発生される。また、千の異なる公開鍵が演算される。それに加え、千のゲーム証明書が発生され、各ゲーム証明書は、千の公開鍵の中の一つのデジタル署名を含み、そして、当該署名はゲーム秘密鍵1531を用いて発生される。
 最後に、ゲームメーカは、千の異なる暗号化データと千の異なるゲーム証明書とを、一意の暗号化されたゲーム鍵1547(unique version)、一意の暗号化されたゲームヘッダ、そして、一意の暗号化されたゲームデータとを用いて結合する。この演算の結果は、例えば、1551、1552、1553のような、メモリ製造者1560へ出荷される千のメモリイメージである。メモリ製造者の役割は、単純に、受信したゲームのメモリイメージを、例えば、1561、1562、1563のような千の半導体メモリユニット内にコピーすることであり、そして、それらを商品化することである。
 ユーザが原品であるゲームマシンを、そして、原品である半導体メモリを購入した場合、二つの電子装置は、図7又は図14に記載された認証プロトコルを開始し、そして、ユーザはゲームメーカ1530が開発したゲームで遊ぶことが可能となる。
 上述したプロセスに替え、暗号化されたデータは、メモリ製造者によって、直接、発生することも可能であろう。この場合、メモリ製造者は、ゲーム秘密鍵と公開鍵とを保持し、ゲームマシン製造者からルート証明書を発生する。
<<実施例1>>
 最初に、メモリコントローラを備えた半導体メモリに焦点を当てた説明を行うが、ここでは、メモリがゲームマシンによって実行されるプログラムを格納している。
<ゲームシステム>
 図1はゲームシステムのハードウェアダイアグラムであり、ゲームマシン120と、ゲームプログラムを格納するための半導体メモリ100とを備えている。如何なる特定の限定をも意図するものではないが、この実施例では、ゲームマシン120は、手で保持できるポータブルなゲームマシンであるものとする。
 半導体メモリ100は、プラスチックの覆い101の内部に取り囲まれた電子部品を含んでいる。図1では、破線により示された部品はプラスチックの覆い101の内部に配置されている。
 半導体メモリ100は二つのタイプのメモリユニット、即ち、読み書きが可能な不揮発性のメモリユニット(read-write non-volatile memory unit)102と、読み出し専用の不揮発性のメモリユニット(read-only non-volatile memory unit)103とを備えている。如何なる特定の限定をも意図するものではないが、この実施例では、読み書き可能な不揮発性のメモリユニットは「EEPROM」チップであり、他方、読み出し専用のメモリユニットは、1回だけプログラマブルな「ROM」チップであるものとする。「ROM」チップ103は、ゲームプログラムを格納することができ、「EEPROM」チップ102は、セーブされたゲーム状態を格納することができる。メモリユニット102と103の詳細な内容は、後に、図2を参照しながら述べる。
 半導体メモリ100は、メモリユニット102と103をメモリコントローラ105に結合するためのバス104を備えている。メモリコントローラ105は、ゲームマシン120との通信を操作し、そして、メモリユニット102と103内に格納されたデータにアクセスする回路である。通信プロトコルは、後に図7を参照しながら説明する。最後に、半導体メモリ100は、物理的には、ピン106を介して、ゲームマシン120に結合することができる。本実施例においては、12本のピンは、特に限定されるものではないが、以下のようになっている。
- ピン106は、入力接地信号(input ground signal)、
- ピン107は、入力電源供給ピン(input power supply pin)、
- ピン108は、入力クロック信号(input clock signal)、
- ピン109は、入力リセット信号(input reset signal)、
- ピン110~117は、ゲームマシン120と半導体メモリ100との間の双方向のデータ交換のために利用されるものである。
 ゲームマシン120は、プラスチックの覆い121、例えば方向性パッド(directional pad)122やボタン123のような入力コントローラ、液晶(LCD)スクリーン124、スピーカ125、そして、オン/オフスイッチ139を有している。半導体メモリ100が空洞部138内に挿入可能となっており、それによって、ゲームマシン120と半導体メモリ100とを物理的に結合するための連結が得られる。本実施例では、12個のコンタクトは、特に限定されるものではないが、以下の通りである。
- コンタクト126は、出力接地信号(output ground signal)、
- コンタクト127は、出力電源供給ピン(output power supply pin)、
- コンタクト128は、出力クロック信号(output clock signal)、
- コンタクト129は、出力リセット信号(output reset signal)、
- コンタクト130~137は、ゲームマシン120と半導体メモリ100との間の双方向のデータ交換のために利用されるものである。
 即ち、コンタクト126~129は、ゲームマシン120から半導体メモリ100への一方向の通信のために使用され、これに対して、コンタクト130~137は、双方向の通信に使用することができる。
 プラスチックの覆い121内には幾つかの電子部品がある。RAM(Random Access Memory)141は、アクセスの早い、読み書き可能な揮発性メモリユニットであり、プログラムデータを共に、CPU(Central Processing Unit)143によって処理された中間データをも格納する。フラッシュメモリユニット142は、読み書き可能な不揮発性メモリユニットである。フラッシュメモリ内に格納されるデータには、以下のものを含んでいる:
- ゲームマシンのハードウェアを制御するプログラムである、ファームウェア161、
- ルート公開鍵162、
- 解読鍵163。
 入出力(I/O)インターフェイスユニット144は、ゲームマシン120と半導体メモリ100との間の通信を操作する回路である。
 ビデオコントローラ145は、スクリーン124に取り付けられた回路であり、映像をスクリーン124に対して発生し、そして、出力する。サウンドコントローラ146は、音、又は、音楽を表現するデジタル情報をアナログ電気信号に変換し、そして、その信号はスピーカ125によって音響信号に変換される。入力制御ユニット147は、CPU143によって処理することが出来るように、例えば、方向性パッド122又はボタン123に加えられた圧力である入力信号を、デジタル情報に変換する。
 最後に、電池148は、ゲームマシン内に封入された電子部品に対して電力を供給する。
 RAM、フラッシュメモリ、CPU、I/Oインターフェイス、ビデオコントローラ、サウンドコントローラは、異なる電子部品への制御信号やデータ信号、そして、そこからの制御信号やデータ信号を伝達するためのバス151に結合されている。加えて、電力が電池148により、バス151を介して電子部品へ供給されている。同様に、コンタクト126~137、そして、I/Oインターフェイス144が、I/Oバス152に結合されている。スピーカ125とサウンドコントローラ146は、ケーブル153と結合されている。方向性パット122、ボタン123、そして、入力インターフェイス147が、ケーブル154と結合されている。最後に、電池148とオン/オフスイッチ139が、ケーブル155に結合されている。
 ユーザがスイッチを利用してゲームマシン120の電源をオンすると、フラッシュメモリ142に格納されたファームウェア161がCPU143により実行される。半導体メモリ100が空洞138内に挿入され、それにより半導体メモリ100のピン106~117をゲームマシン120のコンタクト126~137に結合すると、ゲームマシンとメモリとが連動し、図7を参照して後に述べる通信プロトコルを行う。通信プロトコルの普通に終了した後、半導体メモリ内に格納されていたプログラムがRAM141に転送され、そして、CPU143により実行される。プログラムは、例えば、映像をスクリーン124上に表示し、スピーカ125を介して音楽や音を鳴らし、そして、方向性パッド122又はボタン123を押しているユーザの動きに反応することができる。しかしながら、通信プロトコルが失敗した場合には、プログラムは実行されない。
 図2は、半導体メモリ100の内における論理メモリマッピングのブロックダイアグラムである。
 如何なる特定の限定をも意図するものではないが、本実施例では、半導体メモリ100の論理アドレスが48ビットの整数として表現されており、図2の左側に16進法により表記されている。これに替えて、異なるアドレススペースを使用することもでき、その場合、データは、物理的なチップ上の異なるサイズと異なるロケーションで、異なる順序で格納することができる。
 半導体メモリ100上に格納されたデータをアクセスするために、ゲームマシンは、論理アドレスとデータ長さとを半導体メモリへ送信する。次に、メモリコントローラ105が論理アドレスを物理アドレスに翻訳(変換)し、例えば、ROMユニット102又はEEPROM103など、関連するメモリユニットを作動し、そして、関連するメモリユニット上に格納されているデータをゲームマシン100へ送出する。
 48ビットのアドレス値は256,000ギガバイトのデータにアドレスすることができる。しかしながら、半導体メモリは、例えば、1ギガバイト程度の、より小さな容量を有している。この場合、論理メモリのある部分だけが、実際に有効なアドレスである。図2において、許されていないアドレスは、斜線によって表示されている。
 論理アドレスに加え、図2は、ROMユニット102、EEPROMユニット103、又は、メモリコントローラ105のうち、どのメモリユニット又はチップ上に、対応するデータが物理的に格納されているかを示している。メモリの特性(読出し専用か、又は、読み書き両方か)に対応して、ある論理アドレスに格納されたデータは読み出し可能であり、そして、時には書き込みも可能である。最後に、データへのアクセスは、アクセス制御ポリシー(access control policy)によって規定されており、図2において大文字「U」によって示されるユーザアクセスと、大文字「S」によって示される管理者アクセスとに分けられる。ユーザアクセスとは、ゲームマシン120によって直接アクセスされるデータを言い、他方、管理者アクセスとは、直接にはアクセスすることが出来なデータを意味する。より詳細には、メモリコントローラだけが管理者データにアクセスすることができる。
 論理アドレスは、以下の五つの領域に分類される。
- 暗号化データ領域200は、半導体メモリ100の認証の期間に利用される。
- 暗号化ヘッダ領域210は、認証の期間に転送されたデータと組み合わされ、半導体メモリの正真性(authenticity)を保証するパブリックパラメータを含んでいる。
- ゲームヘッダ領域220は、半導体メモリ内に格納されたゲームプログラムに関連する一般的な情報を含んでいる。
- セーブゲーム状態領域230は、ユーザによってセーブされたゲームの状態を含んでいる。
- ゲームプログラム領域240は、最初のセクタ241にファーウェアアップデートを、そして、他のセクタにゲームプログラムを格納している。
 上述した領域が、以下に詳細に述べられる。
 暗号化データ200は、秘密テーブル201、イメージテーブル202、そして、ツリーテーブル203を含んでいる。秘密テーブル201は、「0x0」から「0x3FFFFF」までのアドレス値を、即ち、4メガバイトを占有している。物理的には、秘密テーブル201からのデータは、ROMユニット102内に配置されている。加えて、秘密テーブル201へのアクセスは、管理者アクセスポリシー(supervisor access policy)によって管理さることから、制限される。
 イメージテーブル202は、「0x400000」から「0x7FFFFF」までのアドレス値を占有し(4メガバイト)、そして、ツリーテーブル203は、「0x800000」から「87FFEF」までを占有している。物理的には、それらはROMユニット102内に配置され、自由にアクセス可能である。
 それらのテーブル内に格納されたデータについては、後に、図3を参照しながら述べる。
 以下には、暗号化ヘッダ210が述べられる。アドレス「0x1000000」には、システムパラメータ211が格納されている。システムパラメータは、どのタイプのアルゴリズムを認証のために使用するのか、認証に使用するチャレンジのサイズ、認証を行うことができる総回数、そして、どのタイプの証明書が使用されるのかを、一義的に規定している。本実施例では、特に制限はないが、認証アルゴリズムは、ハッシュ関数「MD5」と共に、8ビットのチャレンジを使用する「Merkle」署名に基づくことができ、16,384回まで認証を行なうことができ、そして、証明書は「X.509」のデジタル証明書でも可能であるとしている。その場合、システムパラメータは、以下のような「ASCII」キャラクターで記述されたストリングから構成される:
- MD5_WITH_MERKLE
- CHALLENGE_8
- TIMES_16384
- CERTIFICATE_X509
 それに替えて、例えば、「SHA-1」又は「AES」のようなブロック暗号化に基づくものなど、「MD5」とは異なるハッシュ関数を使用することもでき、チャレンジのサイズや行われる認証の回数が異なっても、そして、証明書のタイプも異なってもよい。
 公開鍵214は、アドレス「0x100900」に格納される。公開鍵は、後に図7を参照しながら詳細に記載する認証プロトコルにおいて、役割を演ずる。認証アルゴリズムがハッシュ関数「MD5」と共に「Merkle」署名を使用する場合には、公開鍵は16バイトの二進データから構成される。
 ゲーム証明書は、アドレス「0x100600」に格納される。ゲーム証明書は、公開鍵を有効にするために使用される。ルートゲーム証明書は、アドレス「0x100300」に格納され、そして、ゲーム証明書を有効にするために使用される。手順の詳細は、後に、図7を参照しながら述べる。システムパラメータ211、ルート証明書212、ゲーム証明書213、そして、公開鍵214は、物理的にROMユニット102内に格納されており、そして、自由にアクセス可能である。
 2バイトの署名インデックス215は、アドレス「0x109400」に格納される。物理的には、署名インデックス215は、後に図4を参照しながら述べるメモリコントローラ105内における2バイトの不揮発性の読み書き可能なレジスタ内に配置される。署名インデックスは、秘密テーブル201、イメージテーブル202、そして、ツリーテーブル203で使用される暗号化データの配置を示している。
 ゲームヘッダ領域の内容を以下に述べる。かかる内容は、物理的には、ROMユニット上に格納されており、そして、自由にアクセス可能である。
 ゲームID221は、アドレス「0xFF0000000000」に格納されており、ゲームIDは、どのゲームが半導体メモリ上に格納されているかを一義的に規定する。ゲーム鍵222は、アドレス「0xFF0000000010」に格納される。ゲーム鍵は、ゲームヘッダデータの残りの部分と共に、ゲームプログラム240をも解読するために使用される。ゲームプログラムの権限のない解読を防止するため、ゲーム鍵221は、ゲームマシン120のフラッシュメモリユニット142内に格納された解読鍵163を使用して暗号化されている。
 その後のアドレスにおけるデータが、ゲーム鍵222により暗号化される。プログラムのエントリポイント223(program entry point)は、アドレス「0xFF0000000020」に格納されている。このプログラムのエントリポイントは、ゲームプログラムのメインルーチンのアドレスを示している。それ故、認証が成功した後には、ゲームマシン120は、プログラムのエントリポイントに特定されたアドレスに配置されているプログラムデータを読み込む。
 16バイトを占有するアドレス「0xFF0000000030」には、第1のハッシュデータ224が格納される。このデータは、ゲームプログラム領域240の第1セクタ内に格納されたデータに適用された「MD5」ハッシュ関数の出力である。より詳細には、第1のハッシュデータ224は、アドレス「0xFFFF00000000」における1メガバイトのデータを連結した結果であり、それを「MD5」により処理し、もって、16バイトのハッシュ値を得る。ゲームプログラム領域240には、合計1024セクタが存在することから、アドレス「0xFF0000000030」から「0xFF000000402F」まで、1024個のハッシュ値が存在する。
 セーブゲーム状態230は、アドレス「0xFFF000000000」から「0xFFF00002FFFF」までに格納される。物理的には、それらのアドレスはEEPROMに対応しており、それ故、セーブゲーム状態領域230内のデータは、読み出し、又は、書き込みができる。更に、データは、セーブゲーム状態領域230内において、自由にアクセス可能である。第1のセーブゲーム232から16番目233まで、16のセーブ用スロットがある。状態テーブル231は、各セーブゲームスロットの状態、即ち、アクティブか又は非アクティブかを示している。
 最後に、ゲームプログラム領域が、アドレス「0xFFFF00000000」から「0xFFFF3FFFFFFF」まで広がっており、それらは物理的にROMユニット102に対応している。ゲームプログラムデータは自由にアクセス可能であるが、しかしながら、ゲーム鍵222によって暗号化されている。ゲームデータは、1024のセクタに編成されており、各セクタは1024バイトを含んでいる。その結果、半導体メモリは、1ギガバイトまでゲームプログラムを格納することができる。ファームウェアのアップデートは、ゲームプログラム領域の最初のセクタ241内に格納されている。
 データサイズを略述すると、ROMユニット102は、1ギガバイトよりも僅かに大きい、1,082,709,024バイトを収容しており、そして、EEPROMは、196,608バイトを収容することが分かる。
 図3は、ROMユニット103の物理的アドレスマップと、そして、ROM領域内に格納されたデータとの機能的な関係を表すブロックダイアグラムである。
 以下に記載される物理的アドレスのマップに代えて、異なる順番で、又は、異なる物理的配置に格納されたデータにより、異なるアドレスの仕方を利用することもできる。
 以前にも説明したように、ROMユニット103は、暗号化データ200、暗号化ヘッダ210の一部、ゲームヘッダ220、そして、ゲームプログラム240を格納している。他方、ゲームマシン120は、48ビットのアドレスを使用して、半導体メモリの利用可能なメモリユニットに対し、データを読み出し又は書き込むことができる。他方、内部的には、各メモリユニットはそれ自身の物理的アドレスマップを有している。如何なる特定の限定をも意図するものではないが、本実施例では、ROMユニット103は、32ビットのアドレス空間を使用している。ゲームマシン120によって送られた論理アドレスを物理アドレスへ変換すること、そして、半導体メモリ100の対応するメモリユニットを作動することが、メモリコントローラ105の役割である。
 暗号化データ200は、秘密テーブル201、イメージテーブル202、そして、ツリーテーブルの、三つのテーブルを含んでいる。
 秘密テーブル201は、262,144個の16バイトの乱数、即ち、「x[1]」301~「x[262144]」306によって満たされている。秘密「x[1]」は、物理アドレス「0x0」に配置され、秘密「x[2]」は「0x10」に、そして、秘密「262144」がアドレス「0x3FFFF0」に配置されるとまで、以下同様になっている。
 イメージテーブル202は、262,144個の各16バイトの値、即ち、「y[1]」311~「y[262144]」316によって満たされている。如何なるインデックス「1<= i <= 262,144」に対しても、イメージ「y[i]」が「y[i]=H(x[i])」として規定されており、ここで「H」はハッシュ関数「MD5」である。換言すれば、「y[i]」は、ハッシュ関数「MD5」を介した秘密「x[i]」のイメージであり、例えば、「y[1]=H(x[1])」が成り立つ。イメージ「y[1]」は、物理アドレス「0x400000」に配置され、イメージ「x[2]」はアドレス「0x400010」に、そして、アドレス「0x7FFFF0」に配置されたイメージ「y[262144]」に至るまで、以下同様となっている。
 ツリーテーブル203は、各々が16バイトの、32767個の値、即ち、「t[1]」321~「t[32767]」328を含んでおり、ここでは、「t[1]」はアドレス「0x800000」に配置され、「t[2]」は「0x800010」に、そして、アドレス「0x87FFF0」に配置された「t[32767]」に至るまで、以下同様となっている。ツリーデータは、その機能的な関係に応じて、二つのカテゴリに分類することができる。
 ツリーテーブル203の上部、より正確には、「t[16384]」から「t[32767]」までにおいては、ツリーデータはイメージテーブル202からのイメージデータに依存しており、如何なるインデックス「0<=i<=16383」に対しても、ツリーデータ「t[i+16384]」は、以下のように規定される。
Figure JPOXMLDOC01-appb-M000002
 例えば、「t[16384]=H(y[1]||y[2]||…||y[16])」、又は「t[16385]= H(y[17]||y[18]||…||y[32])」である。
 ツリーテーブル203の下部においては、如何なるインデックス「1<=i<=16383」に対しても、ツリーデータ「t[i]」は、以下のように規定される。
Figure JPOXMLDOC01-appb-M000003
 例えば、「t[1]=H(t[2]||t[3])」、又は、「t[8192]=H(t[16384]||t[16385])」である。
 以上の機能的な関係から、ツリーデータ203の配列は、二分のハッシュツリーとして見ることができ、そこでは、ツリーの根(ルート:root)は、テーブル「t[1]」の先頭値であり、その葉(leaves)は、「t[16384]」、「t[16385]」…「t[32676]」である。加えて、葉を除いて、全てのノード「t[i]」は、「t[i] = H(t[2*i]||t[2*i+1])」なる機能的関係に従って、ノード「t[2*i]」と「t[2*i+1]」に接続されている。
 暗号化ヘッダ210は、アドレス「0x87FFF0」から出発し、そして、アドレス「0x8893F0」で終わる。暗号化ヘッダ210は、ROM103内には、部分的にしか格納されていないことに留意のこと。より詳細には、システムパラメータ211、ルート証明書212、ゲーム証明書213、そして、公開鍵214がROMユニット103内に格納されているが、しかし、署名インデックス215はメモリコントローラ105内に格納されている。
 公開鍵214は、ゲームヘッダ220のハッシュ値と連結されたツリーテーブル「t[1]」321の先頭のハッシュ値であると規定される。
Figure JPOXMLDOC01-appb-M000004
 ゲームヘッダ220は、ROMユニット103内に完全に格納され、アドレス「0x8893F0」から出発し、アドレス「0x88D420」までである。最後に、ゲームプログラムは、アドレス「0x88D420」から始まってアドレス「0x4088D420」までである。
<メモリコントローラ>
 図4は、メモリコントローラ105のハードウェアダイアグラムである。
 メモリコントローラは、「READ」、「WRITE」、そして、「CHALLENGE」の、三つのタイプのメッセージを取り扱う。
- 「READ」メッセージはアドレスとデータ長さとを含んでおり、「READ||Address||Length」のようにフォーマットされ、そこでは、アドレスは48ビットのアドレスデータであり、長さは16ビットである。「READ」メッセージを受信すると、メモリコントローラは、アドレスと長さが読み出し可能なデータに対応することを検証し、対応するメモリユニットからデータを取り出してそれをゲームマシン120へ送り返す。
- 「WRITE」メッセージは48ビットのアドレスと8ビットのデータペイロード(data payload)を含んでおり、「WRITE||Address||Data」のようにフォーマットされる。「WRITE」メッセージを受信すると、メモリコントローラ105は、アドレスがEEPROMの書き込み可能なメモリに対応することを検証し、そして、そのデータペイロードをEEPROM領域に書き込む。
- 「CHALLENGE」メッセージは8ビットのデータペイロード、即ち、チャレンジを含んでおり、「CHALLENGE||Data」のようにフォーマットされる。かかるデータを受信すると、メモリコントローラ105は秘密テーブル201からデータを選択し、そして、それをゲームマシン120へ送り返す。
 上述したメッセージを如何に処理するかについて、図5を参照しながら詳細に述べる。
 メモリコントローラ105は、ピン106~117を介して、ゲームマシン120と交信する。特に、ピン110~117は双方向のデータ交信のために使用されており、ゲームマシン120から受信され又はゲームマシンへ送出されるデータは、8ビットのI/Oバッファ401内に格納される。接地ピン106、電力供給ピン107、クロックピン108、リセットピン109、そして、I/Oバッファは、全て、制御ユニット410へ結合されている。
 チャレンジレジスタ421と共に、シフトユニット422、秘密アドレスレジスタ430、三つの加算器441、442、443、そして、制御ユニット410が、図5を参照して詳細に述べるメッセージの処理機能を実現している。この制御ユニット410は、以下のものを備えている。
- メモリコントローラ105内の他のユニットを作動、制御し、そして、受信したメッセージに応じて信号を発送する、有限状態マシン411。
- 読み出し、又は、書き込まなければならないデータの物理アドレスを格納するアドレスレジスタ412。
- 読み出されるデータの長さを格納する長さレジスタ413。
- 入力データに整数「1」を加算するインクリメントユニット415。
- 入力データから整数「1」を減算するデクリメントユニット416。
- 入力された論理アドレスを物理アドレスに翻訳(変換)するアドレス変換マップユニット417。
 ROMユニット103が直接的に読み出された場合で、ゲームマシン120からの入力メッセージが「READ」メッセージであり、そして、論理アドレスが、直接アクセスが可能なROM領域に対応する場合、又は、ROMユニット103が間接的に読み出された場合で、入力メッセージが「CHALLENGE」メッセージである場合、コントロールユニットは、以下のステップを行う。
 アドレスレジスタ412には適当な値が設定される。直接アクセスの場合、論理アドレスは、アドレス翻訳マップ417によって物理アドレスへ変換され、そして、物理アドレスがアドレスレジスタ412内でコピーされる。長さの値は、長さレジスタ413内でコピーされる。
 その後、アドレスレジスタの値が、バス452を介してROMユニット103へ送られ、そして、ピン107からの電力供給信号とピン108からのクロック信号も、バス452を介して送られる。最後に、ROMチップセレクト(ROM CS)が、ROMユニット103を作動するため、「1」に設定される。
 その結果、ROMユニット103は、バス451を介して、特定のアドレスに配置された1バイトを戻す。このバイトは、I/Oバッファ401とデータピン110から117を介して、ゲームマシンへ送られる。次に、アドレスレジスタ412はインクリメントユニット415によってインクリメントされ、そして、長さレジスタはデクリメントユニット416によってデクリメントされる。有限状態マシン411は上記のステップを、長さレジスタが零(0)になるまで繰り返す。
 データがEEPROMユニット102から読み出され、又は、書き込まれる場合、同様のステップが、バス454、453を用いて行われる。唯一の相違は、バス454がROMチップセレクト(ROM CS)を「1」に設定し、付加的なR/W信号が、読み出しのための「0」、又は、書き込みのための「1」に設定され、そして、バスが双方向であることである。
 次に、間接的なROMへのアクセス、即ち、「CHALLENGE」メッセージがメモリコントローラにより受信され、そして、秘密テーブル201からのデータが選択されてゲームマシンに送り返される場合に関連するユニットについて述べる。秘密アドレスレジスタ430は、物理アドレスをROMユニット103内に表示する32ビットのレジスタであり、以下の部品から構成される。
- 4ビットのバイトカウンタ431。
- シフトユニット422に接続されたチャレンジビット「m」432。
- 3ビットの秘密カウンタ433。
- 暗号化ヘッダ210の一部である、16ビットの署名インデックス215。かかる署名インデックス215は制御ユニット410に接続されており、ゲームマシン120によって読み出すことができる。署名インデックス215は14ビットの署名カウンタ435と二つの零ビット436とから成る。
 チャレンジが半導体メモリ100へ送出されると、チャレンジレジスタ421内に格納される。次に、チャレンジ値が、シフトユニット422により、右へ1ビットだけ移動される。この処理において、チャレンジの最右側のビットが削除され、しかしながら、この最右側のビットは、秘密アドレスレジスタ430のチャレンジビット432へ転送される。
 第1の加算器441の1ビット入力が、制御ユニット410によって「1」に設定されると、加算器441は、バイトカウンタ431の値を1だけインクリメントする。この時点で、秘密アドレスレジスタ430は、ROMユニット103内の秘密テーブル201の一つのエレメントに対応する物理アドレスを持っている。秘密アドレスレジスタの32ビットの値は、アドレスレジスタ412へコピーされ、そして、バス接続452を介してROMユニット103へ送られる。従って、1バイトが、バス接続452を介して、ROMユニット103から送出され、そして、I/Oバッファ401とデータピン110~117を介して、ゲームマシン120へ送られる。
 しかしながら、加算器441は、4ビットだけを取り扱うことができ、インクリメント動作の結果が4ビットよりも大きくなると、より具体的には、「1」が「0xF」に加算されると、オーバフローが起き、そして、加算器441の1ビットの出力が「1」に設定される。
 加算器441の1ビット出力は、第2の加算器442の1ビット入力と制御ユニット410に連結されている。制御ユニット410が第1の加算器441でのオーバフローを検出すると、チャレンジ値がシフトユニット422によって1ビットだけ右に移動し、そして、最右側のチャレンジビットが、再び、秘密アドレスレジスタ430のチャレンジビット432へ転送される。加えて、加算器441のオーバフロービットも第2の加算器442へ送られ、従って、それが3ビットの秘密カウンタ433をインクリメントする。しかしながら、秘密カウンタ433の値が「0x7」である場合は、インクリメント動作の結果が3ビットよりも大きくなるため、第2のオーバフローが生じる。この第2のオーバフローは、制御ユニット410と第3の加算器443の両方に送られる。
 従って、第3の加算器が14ビットの署名カウンタ435の値をインクリメントし、これによって署名インデックスを1だけ上昇する。また、制御ユニットが第2の加算器442におけるオーバフローを検知すると、受信されたチャレンジに対応する秘密データが完全に送信され、そして、メモリコントローラはアイドル状態となり、ゲームマシン120からの次のメッセージを待つ。しかしながら、署名カウンタ435の値が「0x3FFF」であり、そして、第2のオーバフロービットが「1」に設定された場合には、第3のオーバフローが生じる。これは、利用可能な秘密データが使い尽くされ、そして、半導体メモリ100がゲームマシン120とはもはや結合できないことを意味する。それ故、第3のオーバフローが制御ユニット410によって検出されると、ゲームマシン120からの如何なる新たなメッセージをも拒否する。
<メモリコントローラの機能の明細>
 図5は、メモリコントローラの機能の明細を示すブロックダイアグラムである。如何なる特定の限定をも意図するものではないが、本実施例では、図5に記載された機能は、メモリコントローラ105における有限状態マシン411内の回路として実現されている。
 最初に、メモリコントローラ105は聴取状態にあり、ゲームマシン120からのメッセージを待つ。メッセージがデータピン110~117を介して到着すると、以下のステップが行われる。最初に、メッセージのタイプが特定される。既に説明したように、「READ」、「WRITE」、そして、「CHALLENGE」の、メッセージには三つのタイプがある。
 ステップ511では、「READ」メッセージを検出する。ステップ512では、論理アドレスと長さペイロードとが、メモリコントローラ105によりチェックされる。より詳細には、論理アドレスは、読み出し可能(readable)で、かつ、直接にアクセス可能なデータに対応するものでなければならない。例えば、アドレス「0x880000」は読み出し可能ではなく、拒否される。同様に、アドレス「0x1009400」は読み出し可能ではあるが、データ長さが「4」であれば、アドレス「0x1009402」は読み出し可能ではないことから、そのメッセージは拒絶される。加えて、アドレス「0x0」は秘密テーブル201に対応しており、そして、直接にアクセスすることはできない。アドレスが読み出し可能でかつ直接アクセスが可能であれば、メッセージ内に設けた長さとアドレスとが、アドレスレジスタ412と長さレジスタ413にコピーされる。
 ステップ521と531では、読み出されるアドレスの物理的位置、即ち、ROM103、EEPROM102、又は、メモリコントローラ105によって、三つの場合を識別する。
 ROMアドレスの場合には、ステップ523において、ROMチップセレクタ(ROM CS)信号が「1」に設定され、そして、アドレスがバス452を介して送られる。加えて、アドレスレジスタ412がインクリメントされ、そして、長さレジスタ413がデクリメントされる。従って、ROMユニット103は、バス接続を介して、ゲームマシン120へ送られた特定アドレスの1バイトデータを戻す。長さレジスタが「0」よりも大きい限り、ステップ523が繰り返され、長さレジスタが「0」になると、データは完全に転送され、そして、メモリコントローラは最初の聴取状態に戻る。
 EEPROMアドレスの場合には、ステップ533が実行される。ステップ533は、EEPROMユニット102を読み出しモードで起動することを除いて、基本的に、ステップ523と同じである。
 論理アドレスがROMでもEEPROMでもない場合には、ステップ541において、署名インデックス215が戻される。
 ステップ551では、「WRITE」メッセージが検出される。ステップ552では、メッセージのアドレスペイロードが検証され、もしも有効であれば、アドレスがアドレスレジスタ412にコピーされる。次に、ステップ553では、EEPROMチップセレクトとR/Wを「1」に設定し、そして、アドレスをバス接続454へ送出することにより、対応するEEPROMの物理アドレスが書込みモードで起動される。同様にして、「WRITE」メッセージのデータペイロードが、バス接続453を介して、EEPROMチップ102へ転送される。
 メッセージが「READ」でも「WRITE」タイプでもない場合には、「CHALLENGE」である筈である。ステップ561では、ペイロードされたデータがチャレンジレジスタ421へコピーされる。
 ステップ562では、シフトユニット422により、チャレンジ値421が1ビットだけ右に移動され、そして、最右側のビットがチャレンジビット432へコピーされる。
 この時点では、秘密アドレスレジスタ430は、ゲームマシン120へ転送しなければならない第1のバイトの物理アドレスを含んでいる。このデータ転送は、ステップ563において行われ、即ち、バス接続452において、そのアドレスが秘密アドレスに設定され、そして、ROMチップセレクトが「1」に設定される。従って、1バイトがROMユニット103から受信され、そして、ゲームマシンへ送出される。加えて、バイトカウンタ431が第1の加算器441によってインクリメントされる。
 インクリメント期間にオーバフローが起こらなければ、ステップ563が繰り返される。本実施例では、如何なる特定の限定をも意図するものではないが、第1の加算器が4つのビットを操作し、それ故、オーバフローが生じる前に、バイトカウンタ431が16回インクリメントされ、そして、16バイトが、ROMユニット103からゲームマシン120へ転送される。例えば、秘密アドレスが初めにアドレス「0x10」を格納している場合、アドレス領域「0x10」~「0x20」内の全てのバイトが転送され、即ち、これらの16バイトは、第2の秘密値「x[2]」302に対応することとなる。
 最初のオーバフローが第1の加算器441で起こった場合、ステップ565において、秘密カウンタ433が第2の加算器442によってインクリメントされる。このインクリメント動作期間にオーバフローが起こらなければ、チャレンジ421が、シフトユニット422によって右に1ビットだけ移動され、そして、ステップ562において、最右側ビットがチャレンジビット453へコピーされ、そして、ステップ453~566が、再び実行される。もしも第2のオーバフローが起これば、秘密データの転送は完了する。その場合、署名カウンタ435は、ステップ567において、第3の加算器443によりインクリメントされる。このインクリメント動作期間にオーバフローが起こらなければ、メモリコントローラは、その初期状態へ戻る。もしも第3のオーバフローが生じれば、秘密テーブル201からのデータが利用し尽くされたことを意味し、そして、ステップ569において、メモリコントローラは永続的休止状態(perpetual idle state)に入り、ゲームマシン120からの如何なる新たなメッセージをも拒否する。
<「CHALLENGE」メッセージ処理の例>
 以下に、「CHALLENGE」メッセージ処理の一例を述べる。
 メモリコントローラ105は、「CHALLENGE」メッセージを、2進法により表現されたデータペイロード「(11010001)」と共に受信するものとする。更には、秘密アドレスレジスタ430は、初めは32ビット値「0x00000100」を有しているものとする。より詳細には、署名インデックスは「1」であり、他の全てのレジスタは「0」であるとする。これは、秘密値「x[17]」305の物理アドレスであることに留意されたい。
 第1のチャレンジビットは「1」であり、従って、秘密アドレスレジスタは、秘密「x[18]」の物理アドレスである「0x110」に設定される。次に、秘密「x[18]」の16バイトが、クロックピン108からのクロック信号の度に、バイトカウンタ431をインクリメントすることにより、一バイト毎、ゲームマシン120へ転送される。その結果、秘密アドレスレジスタが、順次、以下のアドレス、即ち、「0x110」、「0x111」、「0x113」…「0x11F」に格納する。
 この時点において、バイトカウンタがインクリメントされると、第1の加算器441においてオーバフローが生じ、そして、秘密アドレス430が、再び、「0x110」となる。従って、秘密カウンタ432がインクリメントされ、そして、チャレンジビットは、チャレンジ421を右に移動した後に「0」に設定され、即ち、秘密アドレスは、秘密「x[19]」のアドレスである「0x120」となる。次に、秘密「x[19]」の16バイトがゲームマシンへ転送される。
 第3と第4のチャレンジビットは「0」であり、それ故、次に転送されるべき秘密値は「x[21]」と「x[23]」である。最後に、終わりの4つのチャレンジビットは、「1」、「0」、「1」、「1」であり、それ故、転送される秘密値は、「x[26]」、「x[27]」、「x[30]」、「x[32]」である。8つの秘密値が完全に転送された後に、署名レジスタがインクリメントされ、そして、秘密アドレスレジスタに格納された値は、秘密「x[33]」のアドレスである「0x00000200」となる。メモリコントローラは、最初の聴取状態へ戻り、そして、次のメッセージを待つ。
 従って、「CHALLENGE」メッセージを処理した後、八つの秘密値「x[18]」、「x[19]」、「x[21]」、「x[23]」、「x[26]」、「x[27]」、「x[30]」、「x[32]」が転送されるが、しかし、八つの秘密値「x[17]」、「x[20]」、「x[22]」、「x[24]」、「x[25]」、「x[28]」、「x[29]」、「x[31]」は転送されない。その結果、秘密値の半分だけが明かされることとなる。
 図6は、ゲームマシン120によって行われる検証プロトコル(verification protocol)の機能の明細を示すブロックダイアグラムである。如何なる特定の限定をも意図するものではないが、この実施例では、この検証プロトコルは、ゲームマシンのフラッシュメモリ142内に格納され、そして、CPU143によって実行されるソフトウェアプログラムとして実現されるものとする。
 検証プロトコルの開始では、ゲームマシン120は、そのRAMユニット141内に、図7を参照しながら詳細に述べる認証プロトコル(authentication protocol)の期間に入手された公開鍵214と署名インデックス215とを格納する。
 ステップ602では、ゲームマシンは、アドレス「0xFF0000000000」と長さ「0x4030」と共に「READ」メッセージを送付することにより、ゲームヘッダ220を要求する。ステップ603では、ゲームマシンはゲームヘッダを入手し、そして、アドレス「0x800000」と長さ「0x10」と共に「READ」メッセージを送付することにより、ツリー「t[1]」321の先頭を要求する。ステップ604では、ゲームマシンは「t[1]」を得て、そして、以下の演算を行う。
H1 = H( t[1] || H( game header) )
 ステップ605において、「H1」が公開鍵と比較される。ゲームマシンによって引き出されたデータが本物(authentic)であれば、演算された値「H1」は公開鍵214と等しい筈である。もしそうでなければ、ステップ606において、検証(verification)は失敗となる。
 もしも「H1」が公開鍵と等しい場合、ゲームマシンは、ステップ611において、8ビットのペイロード(乱数)と共に「CHALLENGE」メッセージを送信する。半導体メモリ100の応答は8個の秘密値「x’[1]」…「x’[j]」…「x’[8]」からなり、そして、ステップ612において、ゲームマシンにより受信される。実際、これらの8つの秘密値は、16個の秘密値「x[16*index+1]」、「x[16*index+2]」…「x[16*index+16]」の中から、メモリコントローラ105により選択され、そして、それら16個の秘密の半分の選択が、図5に示すように、チャレンジ値に従って行われる。ここで、「index」は署名インデックス215である。
 加えて、変数「A」が以下のように設定される。即ち、「A = 0x00400000 + 0x100*index」であり、ここで、「index」は署名インデックス215である。即ち、「A」は、イメージテーブル202からのエレメント「y[16*index+1]」の論理アドレスである。例えば、もしも署名インデックス215が「0」であれば、「A」は「y[1]」311の論理アドレスである。署名インデックスが「1」であれば、「A」は「y[17]」315の論理アドレスであり、以下も同様である。
 ステップ621~627では、16個のイメージ「y[16*index+1]」、「y[16*index+2]」…「y[16*index+16]」から、丁度、8個のエレメント「y’[1]」…「y’[j]」…「y’[8]」が、即ち、それらの半分が引き出され、従って、それらのステップは8回、繰り返される。より詳細には、
- 秘密「x’[j]」が実際に「x[16*index+2j-1]」であれば、「y’[j]」は「y[16*index+2j]」として選択される。
- しかし、秘密「x’[j]」が「x[16*index+2j]」であれば、「y’[j]」は「y[16*index+2j-1]」として選択される。
 例えば、署名インデックスが「1」であるとして、「y’[1]」の選択を考える。「x’[1]=x[17]」が受信されれば、「y[18]」が選択される。しかしながら、「x’[1]=x[18]」であれば、「y[17]」が代わりに選択される。
 以下には、正しいイメージを選択するための手順が述べられる。ステップ622において、チャレンジの最右のビット、即ち、最小桁ビット(LSB)が、右移動によって抽出される。一方、チャレンジビットが「0」であれば、「x[16*index+2j-1]」が受信されたことを意味する。その結果として、「y[16*index+2j]」が必ず選択される。これは、ステップ626において、「0x10」を変数「A」に加算し、そして、「READ」メッセージをアドレス「A」と長さ「0x10」と共に送信することにより行われる。その後、「0x10」が変数「A」に加算される。ステップ627では、対応するイメージ値「y[16*index+2j]」が半導体メモリ100から受信される。更に、受信された秘密「x[16*index+2j-1]」のハッシュ値と、受信されたイメージ「y[16*index+2j]」とが、以下のようにして、変数「H1」に連結される。
H1 = H1 || H( x’[j] ) || y’[j]
 もしも秘密値とイメージの値とが本物であれば、この演算の結果は、以下と等しくなる筈である。
Figure JPOXMLDOC01-appb-M000005
 これは、「H(x[16*index+2j-1]) = y[16*index+2j-1]」が成り立つことによる。
 他方、チャレンジビットが「1」であれば、「x[16*index+2j]」が受信され、そして、「[16*index+2j-1]」が選択されなければならない。その結果として、ステップ624では、アドレス「A」と長さ「0x10」と共に、「READ」メッセージが半導体メモリ100へ送信される。そして、「0x20」が、変数「A」に加算される。以前の場合と同様に、以下の演算がステップ625において行われる。
Figure JPOXMLDOC01-appb-M000006
 再び、もしも受信した値が本物であれば、この演算の結果は、以下と等しくなる筈である。
Figure JPOXMLDOC01-appb-M000007
 以上の手順を8回だけ繰り返した後、もしも全ての秘密値及びイメージ値が本物であれば、「H1」は以下と等しくなる筈である。
Figure JPOXMLDOC01-appb-M000008
 換言すれば、「H1」は、16個のイメージ値「y[16*index+1]」~「y[16*index+16]」の連結である筈である。
 ステップ631において、「H1」のハッシュ値が計算される。以下の同等性が維持されることを思い出すこと。
Figure JPOXMLDOC01-appb-M000009
 結果として、もしも全ての受信された値が本物であれば、「H1」は「t[16384+index]」と等しくなる筈である。
 ステップ632では、変数「j」が「0x4000+index」に、又は、十進法で「16384+index」に設定される。
 ステップ641~646では、ツリーテーブル203のエレメントが選択され、そして、半導体メモリ100から抽出される。これらのエレメントは、ステップ631で計算された値「H1」を、ツリーテーブル「t[1]」321の先頭に関連付けることができる。この関連が有効性であれば、検証が成功したこととなるが、しかしながら、この関連が無効であることが明らかとなれば、検証は失敗となる。
 この関連は、ツリーテーブル203におけるエレメント間の関係、即ち、「t[i]=H(t[2i]||t[2i+1])」を利用している。最初に、「16384+index」は偶数の整数であるとする。それから、「t[16384+index+1]」が与えられれば、ノード「t[8192+index/2]」の値は、以下のように計算することが可能である。
Figure JPOXMLDOC01-appb-M000010
 同様に、もしも「16384+index」が奇数の整数であれば、もし「t[16384+index-1]」が与えられれば、「t[8192+(index-1)/2]」を以下のように計算することが可能である。
Figure JPOXMLDOC01-appb-M000011
 両方の場合において、ツリーにおいて1レベルだけ上に行くことが出来る。上記の手順を繰り返えすことにより、終には、全ての受信した値が本物である場合には、「H1」は、ツリーテーブル203の先頭である「t[1]」と等しい筈であり、これにより、ステップ631で計算したハッシュ値とツリーの先頭との間の関連を確立することとなる。
 以下に、ツリーデータを選択し、そして、抽出するための手順について述べる。初めに、「j」は「16384+index」に設定される。ステップ641では、「j」のパリティがチェックされる。
 もし「j」が奇数の整数である場合、ステップ643では、変数「A」が、「t[j-1]」のアドレスである「0x800000+0x10*(j-2)」に設定される。例えば、「index=1」であれば、初め、「j」は、奇数の整数「0x4001」、又は、十進法での「16385」と等しく、そして、「A」は以下と等しい。
Figure JPOXMLDOC01-appb-M000012
 これは、確かに、「t[16384]」325のアドレスである。
 それから、アドレス「A」及び長さ「0x10」と共に、「READ」メッセージが半導体メモリに送信され、半導体メモリは、ステップ644において、ツリーテーブル203の関連するエレメント「t[j-1]」を返送する。このエレメントは、変数「H2」内に格納される。
 その後、以下の演算、即ち「H1 = H(H2||H1)」が行われる。「j」は奇数の整数であることから、「H2=t[j-1]」、そして、「H1=t[j]」であり、計算の結果は、「t[(j-1)/2] = H(t[j-1]||t[j])」と等しくなる。最後に、「j」は右移動により「(j-1)/2」へアップデートされる。
 同様に、もしも「j」が偶数の整数であれば、ステップ645では、「A」が、「t[j+1]」のアドレスである「0x800000+0x10*j」に設定される。例えば、もしも「index=0」であれば、初め、「j」は偶数の整数「0x4000」、又は、十進法の「16384」と等しく、そして「A」は「0x840000」と等しい。これは、確かに、「t[16385]」326のアドレスである。
 それから、アドレス「A」と長さ「0x10」と共に、「READ」メッセージが送信され、そして、関連するエレメント「t[j+1]」が「H2」内に格納される。ステップ646では、演算「H1=H(H1||H2)」が行われる。「j」は偶数の整数であることから、「H2=t[j+1]」そして「H1=t[j]」であり、この計算の結果は、「t[j/2]=H(t[j]||t[j+1])」と等しくなる。最後に、「j」は右移動により「j/2」にアップデートされる。
 変数「j」は、上述した手順の各々の繰り返しにおいて、右に移動される。即ち、最終的には、「j」は、値「1」に到達する。この時点において、全ての受信した値が本物であれば、「H1」は、ツリーテーブル203の先頭である、「t[1]」321と等しい筈である。もしもそうであれば、全ての受信した値は、確かに、本物であり、そして、検証は、ステップ652において、成功裡に終了する。そうでない場合は、検証は、ステップ653において、失敗となる。
 本実施例においては、変数「j」は、当初は、厳密には「32768」よりも小さな整数である「16384+index」に設定される。その結果、丁度14回の繰り返し、それにより、14回の右移動の後に、変数「j」は「1」になる。換言すれば、本実施例では、ステップ642~646において、丁度14個のエレメントが、ステップ631において演算された値、即ち、「t[16384+index]」と、ツリー「t[1]」の根(ルート)との間の関連を確立するため、ツリーテーブル203から抽出される。
 上述した検証手順においては、ゲームマシンは8個の秘密値と、8個のイメージと、14個のツリー値を入手し、そして、それらの秘密、イメージ、そしてツリー値は、非特許文献2に開示されたように、チャレンジの「Merkle」署名である。
 以下には、検証手順の一例が示される。
 署名インデックス215は「1」であり、そして、ゲームヘッダ220とテーブルツリー「t[1]」321の先頭は、ゲームマシン120にとって入手可能であるものとする。
 最初に、ゲームマシンが秘密値とイメージ値とを如何に入手し、そして、それらが如何に組み合わせられるについて述べる。
 ゲームマシンは、8ビットのチャレンジ(乱数)を発生し、このチャレンジの値の二進法での表現は「(11010001)」とする。従って、ゲームマシンは、メモリコントローラにより、チャレンジ値に従って選択される8個の秘密値「x’[1]」…「x’[8]」を受信する。より詳細には、もしも秘密値が本物であれば、以下の関係、「x’[1]=x[18]」、「x’[2]=x[19]」、「x’[3]=x[21]」、「x’[4]=x[23]」、「x’[5]=x[26]」、「x’[6]=x[27]」、「x’[7]=x[30]」、そして「x’[8]=x[32]」が保持される。それ故、ゲームマシンは、以下の秘密イメージ、「y[17]」、「y[20]」、「y[22]」、「y[24]」、「y[25]」、「y[28]」、「y[29]」そして「y[31]」を選択する。また、受信した秘密値のハッシュ値を計算し、そして、全てのものを以下のように連結する:
Figure JPOXMLDOC01-appb-M000013
 「y[i]=H(x[i])」であることから、上記の表現は、以下と等しい:
Figure JPOXMLDOC01-appb-M000014
 「H1」のハッシュ値を連結し、そして、「t[16385]=H(y[17]||…||y[32])」であることから、ゲームマシンは「H(H1)=t[16385]」を得る。
 次に、「t[16385]」と「t[1]」との間の関連の計算が説明される。初め、変数「j」は「16385」に等しい。
ステップ1: j=16385
 整数「16385」は奇数であり、それ故、「t[16384]」が半導体メモリから読み出される。さて、ゲームマシンは「H(t[16384||t[16385]]=t[8192])を計算することが出来る。
ステップ2: j=8192
 「8192」は偶数であり、「t[8193]」が半導体メモリから読み出され、そして、ゲームマシンは「H(t[8192]||t[8193])=t[4096]」を計算することが出来る。
ステップ3: j=4096
 「4096」は偶数であり、「t[4097]」が半導体メモリから読み出され、そして、ゲームマシンは「H(t[4096]||t[4097])=t[2048]」を計算することが出来る。
 この手順は、「j=2048」、「1024」、「512」、「256」、「128」、「64」、「32」、「16」、「8」、「4」、そして、「2」に対して、繰り返される。
ステップ14: j=2
 「2」は偶数であり、「t[3]」が半導体メモリから読み出され、そして、ゲームマシンが「H(t[2]||t[3])=t[1]」を計算する。
 ゲームマシンは、ツリーテーブルt[1]の先頭を再計算することができ、そして、検証が首尾よく終了する。
<通信プロトコル>
 図7は、ゲームマシン120と半導体メモリ100との間の通信プロトコルのブロックダイアグラムである。
 図7の左側のブロックは、半導体メモリ100により実行される作動であり、他方、図の右側のブロックは、ゲームマシン120によって実行される作動である。中央のブロックは、ゲームマシンと半導体メモリとの間で交されるメッセージである。
 ゲームマシンは、暗号化ヘッダ210への要求701を送信することによりプロトコルを開始する。この要求は、暗号化ヘッダのアドレス、即ち、「0x1000000」と、そのサイズ、即ち、「0x9402」又は二進表現で「37,890」バイトとを含んだ「READ」メッセージである。半導体メモリは、完全に暗号化ヘッダ210を送ることによって応答する。ステップ302では、ゲームマシンが、以下のサブステップを行うことによって、暗号化ヘッダ210を検証する。
- システムパラメータ211がサポートされていることを検証する。
- ルート証明書212を検証する。ルート証明書が、少なくとも、ゲーム公開鍵とデジタル署名とを含んでいる。即ち、ゲームマシンは、フラッシュメモリユニット142内に格納されているルート公開鍵によって、ルート証明書内に封入されたデジタル署名を検証し、もって、ゲーム公開鍵の有効性を確定する。
- ゲーム証明書213を検証する。ゲーム証明書は、少なくとも、公開鍵214とそのためのデジタル署名を含んでいる。即ち、ゲームマシンは、ルート証明書212からの公開鍵により、ゲーム証明書213内に封入されたデジタル署名を検証し、もって、公開鍵214の有効性を確定する。
- 公開鍵214の使用がファームウェアによって禁止されていないかをチェックする。もしも、本当に、公開鍵が危殆化されていれば、それはもう使用されるべきではなく、これが、ファームウェアのアップデートが危殆化されたものとして知られた公開鍵のリストを含んでいる理由である。
 上記のステップの一又はそれ以上が失敗すると、プロトコルは中断される。全てのステップが成功裡に実行されると、公開鍵214は有効となる。そこから、ゲームマシン120は、公開鍵214と署名インデックス215とを、後の使用のため、RAMユニット141内に保持する。
 ステップ711は認証プロトコルであり、その中では、ゲームマシンと半導体メモリとが幾つかのメッセージを交換する。ゲームマシンにより行われる作動は、既に、図6を参照して述べられており、他方、半導体メモリにより行われる作動は、図4に記載したハードウェアユニットを利用し、既に、図5を参照して述べられている。
 一旦、認証が首尾よく終了すると、ステップ713では、フラッシュメモリ142内に格納された解読鍵163を使用して、ゲーム鍵222がゲームマシン120によって解読される。ゲーム鍵222を使用して、プログラムのエントリポイント223もまた、ゲームマシンによって解読される。
 次に、ステップ721では、第1のセクタ241とそのハッシュ値224とが、ゲーム鍵222により解読される。第1のセクタがファームウェアのアップデートを格納していることを思い出すこと。ステップ722では、ファームウェアのアップデートの有効性が、以下のようにしてチェックされる。
- ゲームマシン120が、第1のセクタ241のハッシュ値を計算し、そして、それをゲームヘッダ内に格納されているハッシュ値224と比較する。二つのハッシュ値は等しい筈である。
- ファームウェアのアップデートはデジタル署名を含んでいる。それ故、ゲームマシン120は、ルート公開鍵162によりデジタル署名を検証する。
 上述したチェックの一つが失敗すると、プロトコルは中断される。ステップ723では、ゲームマシンは、ファームウェアのアップデートがフラッシュメモリユニット142内に格納されたファームウェア161よりも新しいものであることを検証する。もしもそうであれば、ステップ724において、古いファームウェアが新しいものと交換される。そうでなければ、ゲームマシンはファームウェアのアップデートを無視する。
 そこから、プログラムデータは、半導体メモリからゲームマシンへ転送が可能となる。解読プログラムのエントリポイント223は、プログラム開始のアドレスを格納しており、このアドレスは、ゲームプログラム領域240における半導体メモリの1,024個のセクタの一つに対応している。即ち、ゲームマシンは、関連するセクタに対する要求731を、セクタデータ732を転送する半導体メモリへ送信する。セクタデータが解読され、それ故、ゲームマシンは、ステップ733において、ゲーム鍵222を使用して、セクタを解読する。加えて、ゲームヘッダ220は、解読されたセクタのハッシュ値を格納しており、この値はゲーム鍵222により解読される。
 解読されたセクタデータの有効性をチェックするため、ゲームマシンはそのハッシュ値を計算し、そして、それを、ゲームヘッダ220からの解読されたハッシュ値と比較する。もしも二つのハッシュ値が等しければ、セクタデータは有効であり、ステップ735において、セクタ内に格納されたプログラムが実行される。二つのハッシュ値が異なっていれば、これはセクタデータが変更されている可能性があることを意味しており、プログラムは実行されない。
 プログラムは、幾つかのセクタに広がっていてもよい。従って、新たなデータが要求されるそれぞれの時点で、新たなセクタが転送され、そして、ステップ731~736がゲームマシンによって、再度、実行される。
 従って、以下の効果が得られる。
 半導体メモリは、その秘密値の半分しか明かさないことから、かかる秘密値を多数集めても、悪意の者は、異なるチャレンジに対し、正しい回答を発行することは出来ない。実際、異なるチャレンジは、半導体メモリによって明かされていない少なくとも一つの秘密を知っていることを要求する。
 更に、悪意の者は、認証を成功した後は、プログラムを挿入することは出来ない。実際、そのように試みても、挿入されたプログラムのハッシュ値は、ゲームヘッダ内のセクタのハッシュ値の何れとも一致することはない。
 最後に、ゲームマシンは、認証プロトコルを実行するためのルート公開鍵を知ることをだけを必要とする。結果として、如何なるゲームマシンも、共通鍵を共有することなく、如何なる半導体メモリでも認証することができる。
<<実施例2>>
 第2に、暗号化エンジンを更に備えた半導体メモリと、そして、セキュリティーチップを更に備えたゲームマシンに焦点を当てた記述を示す。
 本発明の第1の実施例により得られるそれらの効果に加え、下記の記載による以下の効果が得られる。半導体メモリは、秘密値とイメージ値とを再生成できる暗号化エンジンを備えている。結果として、それらの値を不揮発性メモリ内に格納する必要はなく、たとえ悪意の者がメモリの内容に直接アクセスしても、その秘密値とイメージ値とは明かされることはない。更に、ゲームマシンはセキュリティーチップを備えている。それ故、認証を非作動状態にし、又は、調整するため、悪意の者がゲームマシンのファームウェアを改造しようとしても、かかる改造は、セキュリティーチップにより検出できる。
 図8は、ゲームシステムのハードウェアダイアグラムであり、ゲームマシン820と、そして、ゲームプログラムを格納するための半導体メモリ800を備えている。以下では、図1を参照して述べたゲームシステムとの違いが強調される。
 半導体メモリ800は、ROMユニット103と、EEPROMユニット102と、そして、バスに結合されたメモリコントローラ801を有している。図1を参照して述べたメモリコントローラとは異なり、このメモリコントローラは、プログラム可能な(programmable)ROM(PROM)と、128ビットの鍵「A」と128ビットの平文「B」とにより、「AESA(B)」のようなAES暗号化を計算することが出来る、AESエンジンとを備えている。
 図1を参照して上述したゲームマシンと比較して、このゲームマシン820は、更に、セキュリティーチップ821を備えている。後に、このセキュリティーチップ821の詳細については、図12を参照しながら述べる。フラッシュメモリユニット142はファームウェア161を格納しているが、しかしながら、ルート公開鍵162又は解読鍵163を格納することは要求されない。
 図9は、半導体メモリ800内における論理メモリマッピングのブロックダイアグラムである。
 図2を参照して述べた論理メモリマッピングとは異なり、本実施例では、如何なる特定の限定をも意図するものではないが、半導体メモリ800は、秘密テーブル201やイメージテーブル202を格納していない。更に、ツリーテーブル203、システムパラメータ211、ルート証明書212、ゲーム証明書213、そして、公開鍵214は、メモリコントローラ801のPROMユニット802内において物理的に配置されている。その結果、ROMユニット103は、単に、ゲームヘッダ220とゲームプログラム240とを格納している。ゲームヘッダ220とゲームプログラム240とを格納するのは、同様のゲームを格納している全て半導体メモリにとっては同様であることから、ROMユニット103は、マスクROMの技術、又は、オプションとして1回だけプログラム可能なROMの技術によって、実現することができる。
 ゲームプログラム240は幾つかのセクタに亘って広がっていてもよく、しかしながら、第1のセクタ941は、データアップデートのために取って置かれる。このデータアップデートは、ファームウェア161の最新のバージョンと、セキュリティーチップ821により要求されるデータと、そして、そのデジタル署名とを含んでいる。
<メモリコントローラ>
 図10は、半導体メモリ800のメモリコントローラ801のハードウェアダイアグラムである。
 以下、本メモリコントローラと、図4を参照して既に述べたメモリコントローラとの違いを強調して説明する。
 制御ユニット1010は、更に、シフトユニット1012、チャレンジレジスタ1011、そして、インデックスレジスタ「j」1013を備えている。
 加えて、メモリコントローラ108は、更に、ツリーテーブル203と暗号化ヘッダ210とを格納したPROMユニット802を備えている。PROMユニットは、メモリコントローラ801、8ビットデータバス、及び、VCC接続と、クロック接続と、PROMチップセレクト(PROM CS)接続と、そして、32ビットアドレスバスとを含んでいる35ビットの制御バスと、結合されている。
 メモリコントローラは、更に、18ビットカウンタであるカウンタレジスタ1021を備えている。カウンタは、その長さを128ビットまで伸ばすため、百十の零ビット1022によってパッディングされ(padded)ている。署名カウンタ1024は、カウンタ1021の14個の最左側ビットから構成されており、他方、秘密カウンタ1023は、カウンタ1021の4個の最右側ビットから構成されている。署名インデックス215は、その長さを16ビットまで伸ばすため、零ビット1025によりパッディングされた署名カウンタ1024から構成されている。16ビットの署名インデックス215は制御ユニットと結合されており、18ビットカウンタ1021は加算器1026と結合され、そして、零ビットでパッディングされたカウンタはマルチプレクサ1033に結合されている。
 加算器1026は二つの入力を有しており、一つの8ビット入力はカウンタ1021と、そして、その第2の1ビット入力を介して、制御ユニット410と結合されている。第2の1ビット入力が制御ユニット1010により「1」に設定されると、カウンタ1021がインクリメントされる。このインクリメント動作中にオーバフローが生じた場合、1ビットのオーバフロー信号がカウンタユニット1010へ転送される。オーバフローは、カウンタ1021がその最大値、即ち、「0x3FFFF」、又は、十進法で表すと「262143」に達した時に生じることから、制御ユニット1010は、永続的休止状態に入り、そして、その後に来るメッセージを拒否する。
 如何なる特定の限定をも意図するものではないが、本実施例では、ハッシュ関数「H」は、AESと排他的OR動作により達成されるものとする。これに替えて、異なるブロック暗号器とすること、又は、「MD5」や「SHA-1」など、異なるハッシュ関数とすることもできる。
 即ち、メモリコントローラは、更に、AESエンジン803と排他的ORユニット1032を備えている。AESエンジンは、右側の平文入力と、頂上の鍵入力との、二つの128ビット入力と、そして、左側の暗号文出力である、128ビットの出力とを有している。AESエンジンは、マルチプレクサ1033、1034、1035になる構成によって、モード「0」とモード「1」と呼ばれる二つのモードの動作をサポートしている。
 モード「1」では、AESエンジンは、128ビットの秘密のシード(seed)「s」を鍵入力とし、そして、平文入力をカウンタ1021の入力とする動作「x = AESs(counter)」を行う。モード「1」を起動するため、それらの「1」とラベルが貼られた入力を選択するよう、制御ユニットがマルチプレクサ1033、1034、1035を設定する。より詳細には、マルチプレクサ1033がモード「1」に設定されると、カウンタ1021が、AESエンジンの平文入力に結合される。マルチプレクサ1034がモード「1」に設定されると、シード1041が、AESエンジンの鍵入力に結合される。そして、マルチプレクサ1035がモード「1」に設定されると、排他的ORユニット1032がオール零レジスタ(all-zero register)1043に結合される。その結果、「x(+)0 =x」であることから、出力レジスタ1044が、動作「AESs(counter)」の結果を格納することとなる。
 モード「0」では、AESエンジンは、平文入力が初期ベクトル「IV」1042であり、そして、鍵入力が、出力レジスタ1044に格納された以前のAES動作の結果、「x」である、動作「y = AESx(IV)(+)IV」を行う。モード「0」を起動するため、マルチプレクサ1033、1034、1035は、制御ユニット1010によって、それらの「0」とラベルが貼られた入力を選択するよう、適切に構成される。マルチプレクサ1033がモード「0」に設定されると、「IV」1042がAESエンジンの平文入力に結合される。マルチプレクサ1034がモード「0」に設定されると、出力レジスタ1042がAESエンジンの鍵入力に結合される。そして、マルチプレクサ1035がモード「0」に設定されると、排他的ORユニット1032が「IV」1042と結合される。その結果、出力レジスタ1044は、動作「AESx(IV)(+)IV」の結果を格納することとなる。
 AESエンジン803の二つのモードにより、メモリコントローラは乱数「x」と共に、それらのイメージ「y=H(x)」を計算することが出来る。「x」値は、秘密値の役割を果たし、他方、「y」値は、認証プロトコルにおけるイメージ値の役割を果たすことから、不揮発性メモリ内に秘密テーブルとイメージテーブルを格納するという要求を排除することができる。加えて、本実施例の秘密鍵(private key)は、それからAESエンジンのモード「1」を利用して秘密値が取り出され、シード1041となっている。
<メモリコントローラの機能の詳細>
 図11は、メモリコントローラ801の機能の詳細を示すブロックダイアグラムである。
 メモリコントローラ801は、既に図5を参照して述べたメモリコントローラ105と同様の方法により、ゲームマシン820により送り出された「READ」メッセージと「WRITE」メッセージとを処理する。しかしながら、「READ」メッセージの場合、半導体メモリ801がPROMユニット802を更に備えていることから、以下のステップが行われる。ステップ1143では、PROMユニット102がその「PROM CS」入力を介して起動され、そして物理PROMアドレスが制御ユニット1010によって送出される。従って、PROMユニットは、1バイトのデータを、当該バイトを通信ピン110~117を介してゲームマシン820へ送信する制御ユニットに対し、送出する。加えて、アドレスレジスタ412がインクリメントされ、そして、長さレジスタがデクリメントされる。長さレジスタ内に格納された値が零でない限りは、ステップ1143が繰り返される。
 「CHALLENGE」メッセージが処理される方法も、また、異なっている。メモリコントローラは、以下の手順を8回繰り返し、各繰り返しでは、チャレンジ1011に応じて、一つの秘密値「x’[j]」及び一つのイメージ値「y’[j+1]」を、又は、一つのイメージ値「y’[j]」及び一つの秘密値「x’[j+1]」を発生する。
 ステップ1164では、チャレンジ1011は、シフトユニット1012により、1ビットだけ右に移動される。この処理では、チャレンジの最右側ビット(LSB)がチェックされる。
 チャレンジビットが「0」であれば、メモリコントローラは、ステップ1166において、「x’[j]」と「y’[j+1]」を計算する。より詳細には、「x’[j]=AESs(counter)」、即ち、制御ユニット1010が、AESエンジン803のモード「1」を起動するように、マルチプレクサ1033、1034、1035を設定する。AESエンジンが設定された後、出力レジスタ1044は、ゲームマシン820へ送信された「x’[j]」を格納する。次に、カウンタ1021が、加算器1026を使用することによりインクリメントされ、そして、モード「1」が再び起動される。その結果、出力レジスタが「x’[j+1]」を格納する。「y’[j+1]」を計算するため、モード「0」が起動される。AESエンジンが設定された後、出力レジスタ1044は、ゲームマシンへ送信された「y’[j+1]=AESx[j+1](IV)(+)IV」を格納する。秘密「x’[j+1]」は破棄されていることから、明らかになっていないことに留意のこと。
 同様に、チャレンジビットが「1」の場合、メモリコントローラは、モード「1」を起動することにより「y’[j]」と「x’[j+1]」を計算し、モード「0」で「y’[j]」を送信し、それから、モード「0」を起動して「x’[j+1]」を送信する。同様に、秘密「x’[j]」は破棄される。
<「CHALLENGE」メッセージの処理の一例>
 以下、「CHALLENGE」メッセージの処理の一例を述べる。
 メモリコントローラ801は、二進法表現で「(11010001)」と表現されるデータペイロードと共に「CHALLENGE」メッセージを受信するものとする。更に、初期において、カウンタ1021は18ビット値「0x00010」を含んでいるものとする。より詳細には、署名インデックスは「1」であり、そして、秘密カウンタは「0」である。
 第1のチャレンジビットは「1」であることから、AESエンジンはモード「1」で起動される。従って、出力レジスタ1044は「x’[1]=AESs(0x10)」を格納する。次に、モード「0」が起動される、そして、出力レジスタが、ゲームマシン820へ送出された「y’[1]=AESx’[1](IV)(+)IV」を格納する。その後、カウンタ1021が「0x00011」にインクリメントされ、モード「1」が起動され、よって、出力レジスタ1044は、ゲームマシン820へ送出された「x’[2]=AESs(0x11)」を格納する。
 第2のチャレンジビットは「0」であり、それ故、AESエンジンは「x’[3]=AESs(0x12)」、「x’[4]=AESs(0x13)」、そして「y’[4]= AESx’[4](IV)(+)IV」を計算する。「x’[3]」と「y’[4]」が、ゲームマシン820へ送出される。同様に、第3及び第4のチャレンジビットは「0」であり、それ故、「x’[5]」、「y’[6]」、「x’[7]」、そして、「y’[8]」が発送される。この時点で、カウンタ値1021は「0x18」である。
 次のチャレンジビットは「1」、「0」、「1」、「1」であることから、メモリコントローラ801は、「y’[9]」、「x’[10]」、「x’[11]」、「y’[12]」、「y’[13]」、「x’[14]」、「y’[15]」、「x’[16]」を計算して発送する。全ての動作が完了した後は、カウンタ値1021は「0x20」である。
<セキュリティーチップ>
 図12は、ゲームマシン820のセキュリティーチップのハードウェアダイアグラムである。
 セキュリティーチップ821は、スマートカードマイクロコントローラ(smartcard microcontroller)として、又は、TPMチップ(trusted computing module)である、一般的には、耐タンパー性を持つチップ(tamper-resistant chip)として実現することができる。本実施例では、セキュリティーチップは、三つの異なるメモリユニット、即ち、ROMユニット1210、EEPROMユニット1220、そして、RAMユニット1230を備えている。
 ROMユニット1210は、「OS」1211でもよいプログラムと、例えば、AES暗号化又はRSA動作のような低レベルの安全機能性をインターフェイス接続する高レベル機能1212と、図13を参照しながら詳細に述べられる認証プロトコル1213のプログラムと、そして、パターンマッチングプログラム1214とを格納している。これらのプログラムは、全ての商品化されたゲームマシンにとって同じであってもよいことから、ROMユニット1210はマスクROM技術によって実現することができる。
 他方、EEPROMユニット1220は、もし必要であれば修正され、カスタマイズされ、又は、アップデートが可能なデータを格納する。より詳細には、ファームハッシュ1221、ルート公開鍵1222、解読鍵1223、パターンファイル1224、ブラックリスト1225、そして、パッチ1226を格納する。ファームハッシュ1221は、ゲームマシン820のフラッシュメモリユニット142内に格納されたファームウェア161のハッシュ値である。ルート公開鍵1222は、半導体メモリ800がゲームマシン820と結合した場合に、ルート証明書212を有効にするために使用された公開鍵である。解読鍵1223は、半導体メモリ800がゲームマシン820と結合した場合に、ゲーム鍵222を解読するために使用可能な鍵である。パターンファイル1224は、部分的に悪意のあるコードやプログラムバグのリストを格納する。ブラックリスト1225は、危殆化されたことが知られた公開鍵のリストである。最後に、パッチ1226は、ゲームにおける既知のバグをパッチするための部分的なコードのリストからなる。
 RAMユニット1230は、プログラムの実行中に発生したテンポラリデータや変数1231を格納する。
 セキュリティーチップ821は、また、三つの演算ユニット、即ち、CPU1241、AESエンジン1242、RSAエンジン1243と、そして、乱数発生器(RNG)1245を含んでいる。
 中央演算ユニット(CPU)1241はマイクロプロセッサであり、例えば、プログラムのように、ROMユニット1210内に格納されたものを、中間結果のためのRAMユニット1230と、そして、カスタマイズされたパラメータを処理し又は長時間結果を格納するためのEEPROMユニットとを利用して実行する。
 AESエンジン1242は、暗号化に特化されたハードウェアコプロセッサである。コプロセッサは、ビットストリング「A」を鍵としてビットストリング「B」の暗号化を参照するAES演算「AESA(B)」を、高速かつ低電力消費で、実行することができる。CPU1241と接続して使用した場合、AESエンジン1243は、データのハッシュを計算する(hashing data)などのより高度な演算は実現可能となる。例えば、128ビットの初期ベクトル「IV」と256ビットのメッセージ「x=x[1]||x[2]」とが与えられると、128ビットのハッシュ値「y=H(x)」が、以下の二つのステップにおいて計算され、即ち、「y’=AESx[1](IV)(+)IV」と「y=AESx[2](y’)(+)y’」、ここでは、AES暗号化は、AESエンジン1242により行われ、排他的OR「(+)」は、CPU1241により行われ、そして、中間結果「y’」はRAM1230内に格納される。
 RSAエンジン1243は、RSA演算に特化したハードウェアコプロセッサである。特に、RSAエンジン1243は、EEPROM1220内に格納されたルート公開鍵1222を使って、ルート証明書212、ゲーム証明書213、又は、アップデートデータ941内に封入されているRSA署名の検証が可能である。
 乱数発生器1245は、チャレンジとして使用できる乱数を発生する。
 最後に、セキュリティーチップ821内のユニットは内部バス1251に結合されており、セキュリティーチップ821は、バス151により、ゲームマシン820の他の電子コンポーネントに結合されている。他のコンポーネントとの通信は、入/出力(I/O)インターフェイス1244により管理されている。
<検証プロトコル>
 図13は、ゲームマシン820によって行われる検証プロトコル(verification protocol)の機能詳細を表すブロックダイアグラムである。如何なる特定の限定をも意図するものではないが、この実施例では、検証プロトコルは、セキュリティーチップ821のROMユニット1210内に格納されたソフトウェアプログラムとして実現され、AESエンジン1242とRSAエンジン1243を使って、CPU1241により実行されるものとする。
 以下に述べる検証プロトコルは、既に図1を参照して述べたものとは、幾つかの点で異なっている。相違点の一つは、どのようにして、「CHALLENGE」メッセージを半導体メモリ800に送信した後に受信されたデータが処理されるかである。
 ステップ1312では、ゲームマシンが、半導体メモリからの16個の値、「s[1]」…「s[16]」を受信する。最初、インデックス「j」は「1」に、そして、ビットストリング「H1」は、空のビットストリングに設定されている。次に、ステップ1321~1326が8回繰り返される。
 ステップ1322では、セキュリティーチップ821のCPU1241によって行われる右移動動作を利用して、チャレンジの最右側のビットが抽出される。このチャレンジビット(LSB)が「0」であれば、受信された「s[j]」は「x’[j]」である筈であり、そして、「s[j+1]」は「y’[j+1]」である筈である。それ故、ステップ1326では、AESエンジン1242とCPU1241とを使って、ハッシュ値「y’[j]」が「y’[j]=AESs[j](IV)(+)IV」として計算される。本実施例で使われるハッシュ関数「H」の定義によれば、以下の等式が満足されることに留意のこと。
Figure JPOXMLDOC01-appb-M000015
 その後、ビットストリング「y’[j]」と「s[j+1]」とが「H1」に添えられ、そして、カウンタ「j」が二つインクリメントされる。
 同様にして、チャレンジビットが「1」であれば、受信された「s[j]」は「y’[j]」であり、他方、「s[j+1]」であれば「x’[j+1]」である。即ち、ステップ1236では、「y’[j+1]」が「AESs[j+1](IV)(+)IV = H(x’[j+1])」として計算される。そして、ビットストリング「s[j]」と「y’[j+1]」が「H1」に添えられ、そして、カウンタ「j」が二つインクリメントされる。
 上述のステップを8回繰り返した後、そして、受信されたデータ「s[1],…,s[16]」が本物であるとすると、ビットストリング「H1」は「y’[1]||y’[2]||」…||y’[16]」と等しい筈である。ステップ1341では、AESエンジン1242を使用して、「H1」のハッシュ値が計算される。ステップ641、642、1343~1346は、PROM802内に配置されたツリーテーブル203からツリーデータを抽出することを狙ったものである。それらのステップは、ツリーテーブル203の論理アドレスが「0x0」から開始することから、アドレス「A」がステップ1343においては「(j-2)*0x10」として、そして、ステップ1343においては「j*0x10」として、簡単に、CPU1241により計算されるということを除き、基本的には、既に図6を参照して述べたステップと同様である。ステップ1344では、ハッシュ値「H(H2||H1)」が、二つのステップにより、CPU1241とAESエンジン1242とを使って、以下のように計算される、最初に、「H1’ = AESH2(IV)(+)IV」が計算され、そして、「H1 = AESH1(H1’)(+)H1’」が計算される。
 ステップ641、642、1343、及び1346を14回繰り返した後、そして、全ての受信されたデータが本物であるとすると、セキュリティーチップは、ツリーテーブル「t[1]」321の先頭を再計算することができ、そして検証は成功となる。もしも再計算されたデータがツリーテーブルの先頭と異なっていれば、検証は失敗となる。
<通信プロトコル>
 図14は、ゲームマシン120と半導体メモリ100との間の通信プロトコルのブロックダイアグラムである。
 図14の左側のブロックは、半導体メモリ800により実行される作動であり、他方、右側のブロックは、ゲームマシン820により実行される作動である。中央のブロックは、ゲームマシンと半導体メモリとの間で交わされるメッセージである。
 先に図7を参照して述べた通信プロトコルは、本実施例の通信プロトコルとは、幾つかの点で異なっている。これらの相異は、半導体メモリ800がAESエンジン1242を備えていること、そして、ゲームマシン820がセキュリティーチップ821を備えているという事実に起因するものである。これらのユニットのおかげで、通信プロトコルは、以下のような方法により強化できる。
 ゲームマシン820がスイッチ139により給電されると、ファームウェア161がRAMユニット141にロードされ、そして、CPU143によって実行される前に、セキュリティーチップ821が、ステップ1401と1402においてその完全性を検証する。より詳細には、ステップ1401において、ファームウェアのハッシュ値が、AESエンジン1242とセキュリティーチップ1241のCPUを使って計算される。このハッシュ値は、セキュリティーチップ821のEEPROMユニット1220内に格納されたファームウェア1221のハッシュ値と比較される。もしも、それらが一致しなければ、ファームウェアは非合法に修正されていることを意味し、この場合、ゲームマシンはスタートとしない。もしもファームウェアがその完全性のチェックを通過すれば、RAM141内にロードされ、そして、CPU143によって実行される。
 次に、暗号化ヘッダ210が、半導体メモリ800から入手される。暗号化ヘッダの有効性は、セキュリティーチップにより、以下のようにしてチェックされる。
- システムパラメータ211がサポートされていることを、セキュリティーチップが検証する。
- ルート公開鍵1222により、ルート証明書212を検証する。証明書内に封入された署名がRSAエンジン1243を使用して検証され、それにより、ゲーム公開鍵214の有効性を断定する。
- ルート証明書212内に封入されたゲーム公開鍵によってゲーム証明書213を検証する。ゲーム証明書内に封入されている署名は、RSAエンジン1243を使用して検証され、これによって、ゲーム公開鍵214の有効性を断定する。
- 公開鍵214の使用が、危殆化された公開鍵のブラックリスト1225内に存在しないことをチェックする。
 暗号化ヘッダ210が有効であれば、先に図10、11、及び、12を参照して述べた認証プロトコルが、ステップ1411で実行される。成功裡の結果の後、ステップ1413では、AESエンジン1242により、解読鍵1223を使ってゲーム鍵222が解読され、そして、AESエンジン1242によって、解読されたゲーム鍵222を使って、プログラムのエントリポイント223が解読される。
 ゲームプログラムの最初のセクタ941が、データのアップデートのために保存されていることを思い出すこと。ステップ1421では、第1のセクタ941とそのハッシュ値224が、AESエンジン1242により、ゲーム鍵222を使って解読される。ステップ1422では、第1のセクタ941の完全性が、セキュリティーチップ821によって、以下のように検証される。
- 第1のセクタのハッシュ値がAESエンジン1242を使って計算され、そして、解読されたハッシュ値と比較される。等しくない場合には、データのアップデートが非合法的に修正されている。
- 第1のセクタは、RSAエンジン1243と、ルート公開鍵1222とを使って検証したデジタル署名とを含んでいる。デジタル署名の有効性が、データアップデート914の完全性を保障する。
 しかしながら、ファームウェア161及び/又はセキュリティーチップ821内に格納されたデータが、既にアップデートされていることもある。この場合、データアップデート941は廃棄される。アップデートが要求されると、ステップ1424において実行され、即ち、ファームウェアがより新たなバージョンに取り替えられ、そのハッシュ値1221がEEPROM1220内に格納され、そして、アップデートされたパターンファイル1224又はアップデートされたブラックリスト1225など、追加データがEEPROM1220内にコピーされる。
 次に、メインプログラムが半導体メモリから転送される。ゲームプログラムは暗号化されていることから、ステップ1433では、AESエンジン1242により、ゲーム鍵222を使ってゲームプログラムが解読される。同様にして、ゲームヘッダ220内に格納したセクタのハッシュ値が解読される。転送されたセクタからのデータを有効にするために、ステップ1434においては、以下のタスクが、セキュリティーチップ821によって行われる。
- セクタのハッシュ値が、AESエンジンを使用することによって計算される。計算されたハッシュ値が、ゲームヘッダ220内に格納されたハッシュ値と異なっていれば、セクタデータは非合法的に修正されている。
- セクタデータは、デジタル署名を含んでおり、このデジタル署名が、ルート公開鍵1222とRSAエンジン1243を用いて検証される。検証が成功の場合には、セクタの完全性が保障される。
- 解読されたセクタはパターンファイル1224の要素と比較される。もしも一致しているとされれば、セクタデータは、バグ又は悪意のプログラムを含んでいる。この場合、セキュリティーチップ821は、パッチ1126内の訂正された部分的なプログラムを探す。パッチ(replacement)も見つからなければ、プログラムの実行が停止される。
 もしもセクタの完全性が断定されたとすれば、ステップ735において、セクタ内に格納されたプログラムがCPU143により実行される。半導体メモリ800からもっと多くのデータが必要であれば、上述したステップが繰り返される。
 さて、好適な実施例によって得られる効果について、以下に、簡単に述べる。
 秘密鍵(private key)を知らなくとも、チャレンジの公開鍵やデジタル署名を利用し、コンピュータマシンは、原品である格納媒体を偽造品から区別することができる。更に、公開鍵を利用して、デジタルデータの有効性をチェックできることから、非合法プログラムを挿入することはできない。その結果、本発明は、デジタルデータの認証されていないコピーの利用を防止する。
 本発明になる幾つかの実施例について示しかつ述べたが、開示された実施例は、本発明の範囲から逸脱することなく変更や修正がされうるものであることが理解されよう。それ故、ここに示され、かつ、述べられた詳細によって縛られることはなく、しかしながら、添えられた請求項の範囲内に入ることとなる、かかる変更や修正の全てがカバーされる。
 100…半導体メモリ、不揮発性のメモリユニット…102、読み出し専用不揮発性のメモリユニット…103、104…バス、メモリコントローラ…105、ピン…106~117、120…ゲームマシン、122…方向性パッド、123…ボタン、124…液晶スクリーン、125…スピーカ、138…空洞部、139…オン/オフスイッチ、126~137…コンタクト、141…RAM、142…フラッシュメモリユニット、143…CPU、入出力インターフェイスユニット…144、145…ビデオコントローラ、146…サウンドコントローラ、147…入力制御ユニット148…電池、161…ファームウェア、162…ルート公開鍵、163…解読鍵。

Claims (28)

  1. コンピュータマシンと結合されるための半導体メモリであって、
     第1のデータ、第1の鍵、そして、第2の鍵を格納し、前記第1の鍵は、前記第1のデータと前記第2の鍵とから導き出された所定の値であるところの不揮発性メモリユニットと、そして、
     コンピュータマシンからのチャレンジを受信し、そして、コンピュータマシンへ第2のデータを転送し、第2のデータが、前記第2の鍵と前記チャレンジとから導き出されるところのメモリコントローラとを備えていることを特徴とする半導体メモリ。
  2. 請求項1に記載した半導体メモリにおいて、前記第2の鍵は、複数の秘密値を有しており、そして、前記第2のデータは、前記秘密値の選択を含んでいることを特徴とする半導体メモリ。
  3. 請求項2に記載した半導体メモリにおいて、前記メモリコントローラは、更に、
     秘密値の範囲を選択するための第1の選択ユニットと、
     前記範囲内の前記秘密値の半分を選択するための第2の選択ユニットとを備えており、
    前記第2のデータは、前記第2の選択ユニットにより選択された前記秘密値を含んでいることを特徴とする半導体メモリ。
  4. 請求項3に記載した半導体メモリにおいて、前記不揮発性メモリユニットは、更に、
     前記秘密値の所定のハッシュ値である複数のイメージ値と、
     第1の部分と第2の部分とを備えた複数のツリー値とを備えており、そこでは、
     前記第1の部分でのツリー値は、複数のイメージ値の連結の所定のハッシュ値であり、そして、
     前記第2の部分でのツリー値は、複数のツリー値の連結の所定のハッシュ値であることを特徴とする半導体メモリ。
  5. 請求項4に記載した半導体メモリにおいて、前記第2のデータは、更に、イメージ値の選択と、そして、ツリー値の選択とを含んでいることを特徴とする半導体メモリ。
  6. 請求項5に記載した半導体メモリにおいて、前記第1の鍵はツリー値の連結のハッシュ値であり、そして、前記第2のハッシュ値は、前記第1のデータから導き出された所定のハッシュ値であることを特徴とする半導体メモリ。
  7. 請求項1に記載した半導体メモリであって、更に、ハッシュ機能ユニットを備えていることを特徴とする半導体メモリ。
  8. 請求項7に記載した半導体メモリであって、更に、
     前記ハッシュ機能ユニットにより前記第2の鍵を処理し、もって、第1の秘密値を発生する秘密値発生ユニットと、そして、
     前記ハッシュ機能ユニットにより前記第2の鍵を処理して、第2の秘密値を発生し、前記第2の秘密値を前記ハッシュ機能ユニットにより処理してイメージ値を発生するイメージ発生ユニットとを備えたことを特徴とする半導体メモリ。
  9. 請求項8に記載した半導体メモリであって、更に、前記チャレンジの少なくとも一のビットに対応して、前記秘密値発生器か、前記イメージ発生器かの、何れか一方を作動する作動ユニットを備えていることを特徴とする半導体メモリ。
  10. 請求項9に記載した半導体メモリであって、更に、前記作動ユニットを繰り返して、一連の秘密値とイメージ値を発生するループ制御ユニットを備えており、前記第2のデータが、前記一連の秘密値とイメージ値を備えていることを特徴とする半導体メモリ。
  11. 半導体メモリと結合するためのコンピュータマシンであって、
     CPUと、
     第1の鍵を格納している不揮発性メモリユニットと、
     前記半導体メモリからのデータを受信するための入出力インターフェイスとを備えているものにおいて、前記半導体メモリからのデータは、
     第2の鍵と、
     第1のデータと、そして、
     第2のデータとを含んでおり、そして、前記コンピュータマシンは、更に、
     前記第2の鍵を検証するあめの署名検証ユニットと、
     チャレンジを発生するための乱数発生器と、
     前記第1と第2のデータを処理するためのハッシュ関数ユニットと、そして、
     前記ハッシュ関数ユニットによって処理されたデータと第2の鍵を比較するための比較ユニットを備えており、もって、第1と第2のデータの完全性を確立することを特徴とするコンピュータマシン。
  12. 請求項11に記載したコンピュータマシンにおいて、前記半導体メモリからのデータは、前記署名検証ユニットによって検証されるべき少なくとも一の証明書を含んでおり、そして、
     少なくとも一つ以上の証明書は、前記第2の鍵のデジタル署名を含んでおり、そして、
     少なくとも一つ以上の証明書は、前記第1の鍵に検証されるデジタル署名を含んでいることを特徴とするコンピュータマシン。
  13. 請求項11に記載したコンピュータマシンであって、更に、
     前記不揮発性メモリ内に格納された複数の危殆化された鍵と、そして、
     前記危殆化された複数の鍵を前記第2の鍵と比較し、もって、前記第2の鍵が危殆化されていないことを確認する比較ユニットとを備えていることを特徴とするコンピュータマシン。
  14. 請求項13に記載したコンピュータマシンにおいて、前記不揮発性メモリは、更に、
     不安全なデータの複数のパターンと、
     不安全なデータのための複数のパッチと、
     半導体メモリからのデータを前記不安全なデータのパターンと比較し、もって、当該データが安全に処理され得たことを確かめる第3の比較ユニットと、そして、
     不安全なデータをパッチで置き換える置き換えユニットとを備えていることを特徴とするコンピュータマシン。
  15. 請求項11に記載したコンピュータマシンであって、更に、セキュリティーチップを備えており、前記不揮発性メモリ、署名検証ユニット、乱数発生器、そして、ハッシュ関数ユニットが、前記セキュリティーチップのハードウェアユニットであることを特徴とするコンピュータマシン。
  16. データ処理方法であって、
     半導体メモリからの第1の鍵を受信するステップと、
     前記半導体メモリへチャレンジを送信するステップと、
     前記半導体メモリから第1のデータを受信するステップと、
     前記チャレンジと前記第1の鍵により前記第1のデータの完全性をチェックするステップと、
     前記半導体メモリから第2のデータを受信するステップと、
     前記第1の鍵により前記第2のデータの完全性をチェックするステップと、そして、
     前記第2のデータを処理するステップとを備えたことを特徴とするデータ処理方法。
  17. 請求項16に記載したデータ処理方法において、前記第1のデータを受信するステップは、
     複数の秘密値を受信するステップと、
     複数のイメージ値を受信するステップと、そして、
     複数のツリー値を受信するステップとを備えていることを特徴とするデータ処理方法。
  18. 請求項17に記載したデータ処理方法において、前記第1のデータの完全性をチェックするステップは、
     前記受信した秘密値をハッシュ関数により処理し、もって、複数のイメージ値を算出するステップと、
     前記受信したイメージ値と前記計算したイメージ値とをハッシュ関数により処理し、もって、第1のツリー値を算出するステップと、そして、
     前記第1の計算されたツリー値と前記受信されたツリー値とをハッシュ関数により処理し、もって、第2のツリー値を算出するステップとを備えていることを特徴とするデータ処理方法。
  19. 請求項18に記載したデータ処理方法において、前記第2のデータの完全性をチェックするステップは、
     前記第2のデータをハッシュ関数により処理し、もって、第1のハッシュ値を算出するステップと、
     前記第1のデータと第2の算出されたツリー値とをハッシュ関数により処理し、もって、第2のハッシュ値を算出するステップと、そして、
     前記第2のハッシュ値を前記第1の鍵と比較するステップとを備えていることを特徴とするデータ処理方法。
  20. 請求項16に記載したデータ処理方法であって、更に、
     少なくとも一の証明書を受信するステップと、そして、
     少なくとも一の証明書を第2の鍵により検証し、もって、前記第1の鍵を検証するステップとを備えていることを特徴とするデータ処理方法。
  21. 請求項20に記載したデータ処理方法であって、更に、前記第1の鍵を、危殆化された鍵のリストと比較するステップを備えていることを特徴とするデータ処理方法。
  22. 請求項20に記載したデータ処理方法において、前記第2のデータの完全性をチェックするステップは、更に、
     前記第2のデータを不安全なデジタルデータのパターンと比較するステップと、そして、
     不安全なデータをパッチで置き換えるステップを備えていることを特徴とするデータ処理方法。
  23. 請求項20に記載したデータ処理方法であって、更に、
     ファームウェアプログラムをハッシュ関数で処理し、もって、ハッシュ値を得るステップと、
     前記ハッシュ値を所定の値と比較するステップと、そして、
     前記ファームウェアプログラムを実行するステップを備えていることを特徴とするデータ処理方法。
  24. 請求項23に記載したデータ処理方法において、前記第2のデータを処理するステップは、
     ファームウェアのアップデートとそのデジタル署名とを抽出するステップと、
     前記デジタル署名を第2の鍵により検証するステップと、そして、
     前記ファームウェアプログラムを、前記ファームウェアのアップデートで取り換えるステップを備えていることを特徴とするデータ処理方法。
  25. データ処理方法であって、
     第1の鍵とその証明書を送信するステップと、
     少なくとも一のデータのハッシュ関数を送信するステップと、
     チャレンジを受信するステップと、
     複数の秘密値を送信するステップと、
     複数のイメージ値を送信するステップと、
     複数のツリー値を送信するステップと、そして、
     前記データを送信するステップを備えていることを特徴とするデータ処理方法。
  26. 請求項25に記載したデータ処理方法であって、更に、
     秘密値の範囲を選択するステップと、そして、
     前記範囲内における前記秘密値の半分を選択するステップを備えていることを特徴とするデータ処理方法。
  27. 請求項25に記載したデータ処理方法であって、更に、
     シード値をハッシュ関数により処理し、もって、第1の秘密値を得るステップと、
     前記シード値をハッシュ関数により処理し、もって、第2の秘密値を得るステップと、
     前記第1と第2の秘密値の一方を、前記チャレンジの少なくとも一のビットに従って選択するステップと、
     前記選択された秘密値をハッシュ関数によって処理し、もって、イメージ値を得るステップと、そして、
     前記選択した秘密値を廃棄するステップを備えていることを特徴とするデータ処理方法。
  28. 請求項27に記載したデータ処理方法において、前記シード値を処理する前記ステップ、秘密を選択する前記ステップ、前記選択した秘密を処理するステップ、そして、前記選択した秘密を廃棄する前記ステップが繰り返され、もって、一連の秘密値と一連のイメージ値とを得ることを特徴とするデータ処理方法。
PCT/JP2009/006158 2009-03-23 2009-11-17 半導体メモリ、当該半導体メモリと結合されるコンピュータマシン、及び、そのデータ処理方法 WO2010109560A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009069435A JP2010226276A (ja) 2009-03-23 2009-03-23 半導体メモリ、当該半導体メモリと結合されるコンピュータマシン、及び、そのデータ処理方法
JP2009-069435 2009-03-23

Publications (1)

Publication Number Publication Date
WO2010109560A1 true WO2010109560A1 (ja) 2010-09-30

Family

ID=42780270

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/006158 WO2010109560A1 (ja) 2009-03-23 2009-11-17 半導体メモリ、当該半導体メモリと結合されるコンピュータマシン、及び、そのデータ処理方法

Country Status (2)

Country Link
JP (1) JP2010226276A (ja)
WO (1) WO2010109560A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110753257A (zh) * 2019-10-14 2020-02-04 深圳创维-Rgb电子有限公司 数据显示方法、显示终端、服务器、显示系统和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6272383A (ja) * 1985-09-26 1987-04-02 コナミ工業株式会社 情報処理装置におけるロムカ−トリツジ
JP2000076063A (ja) * 1998-08-31 2000-03-14 Open Loop:Kk 認証システム、認証装置及び記録媒体

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6272383A (ja) * 1985-09-26 1987-04-02 コナミ工業株式会社 情報処理装置におけるロムカ−トリツジ
JP2000076063A (ja) * 1998-08-31 2000-03-14 Open Loop:Kk 認証システム、認証装置及び記録媒体

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"2009 Nen Symposium on Cryptography and Information Security, 20 January 2009 (20.01.2009)", 20 January 2009, article CAMILLE VUILLAUME ET AL.: "Public Key Authentication out of Memory Operations" *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110753257A (zh) * 2019-10-14 2020-02-04 深圳创维-Rgb电子有限公司 数据显示方法、显示终端、服务器、显示系统和存储介质

Also Published As

Publication number Publication date
JP2010226276A (ja) 2010-10-07

Similar Documents

Publication Publication Date Title
US8291229B2 (en) System and method for digital signatures and authentication
US9118467B2 (en) Generating keys using secure hardware
US9323950B2 (en) Generating signatures using a secure device
US9054880B2 (en) Information processing device, controller, key issuing authority, method for judging revocation list validity, and key issuing method
US8375206B2 (en) Authentication and encryption utilizing command identifiers
CA2919106C (en) Media client device authentication using hardware root of trust
US20100023777A1 (en) System and method for secure firmware update of a secure token having a flash memory controller and a smart card
JP5793709B2 (ja) 鍵実装システム
JP2013514587A (ja) 証明書失効リストを用いたコンテンツ管理方法
TW201502847A (zh) 運用一電腦處理器使用一安全非揮發儲存器之系統、方法及裝置
WO2001078298A1 (fr) Systeme et procede de traitement d&#39;informations
US9047445B2 (en) Memory device and method for updating a security module
JPWO2011152065A1 (ja) コントローラ、制御方法、コンピュータプログラム、プログラム記録媒体、記録装置及び記録装置の製造方法
JP2004266360A (ja) 認証処理装置及びセキュリティ処理方法
JP2000115154A (ja) 記憶装置および方法、復号装置および方法、提供媒体、並びに情報記憶媒体
JP2009543208A5 (ja)
WO2019142307A1 (ja) 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム
CN113326522A (zh) 一种数据处理方法、装置、设备和计算机存储介质
JP4972165B2 (ja) アイデンティティオブジェクトを使用する制御システムおよび方法
JP6246516B2 (ja) 情報処理システム
WO2010109560A1 (ja) 半導体メモリ、当該半導体メモリと結合されるコンピュータマシン、及び、そのデータ処理方法
CN113114458A (zh) 加密证书生成、解密方法及装置、加密证书系统
JP2005293504A (ja) プログラム、コンピュータおよびデータ処理方法
JP2015015542A (ja) 情報処理システム
JP7070689B2 (ja) 署名処理装置、署名処理方法、署名処理システム、及びプログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09842176

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09842176

Country of ref document: EP

Kind code of ref document: A1