WO2020144864A1 - 乱数生成システム及び乱数生成方法 - Google Patents
乱数生成システム及び乱数生成方法 Download PDFInfo
- Publication number
- WO2020144864A1 WO2020144864A1 PCT/JP2019/000766 JP2019000766W WO2020144864A1 WO 2020144864 A1 WO2020144864 A1 WO 2020144864A1 JP 2019000766 W JP2019000766 W JP 2019000766W WO 2020144864 A1 WO2020144864 A1 WO 2020144864A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- random number
- server
- data
- user
- game
- Prior art date
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/80—Special adaptations for executing a specific game genre or game mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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
Definitions
- the present invention relates to a random number generation system and a random number generation method.
- An online game exists as an example of the above service.
- An online game of a type in which a game server takes charge of the progress of the game for example, a role-playing game
- an online game of a type in which the game server provides a field where users compete with each other for example, a board game such as chess.
- the game server may generate a random number for the purpose of enhancing the entertainment element of the game (see Patent Document 1).
- random numbers used between the server and at least one user may be generated.
- the server independently determines the random number, there is room for the server to commit fraud.
- a true random number is not a real random number for the server and the user, but a random number convenient for the server may be generated.
- Patent Document 1 In order to deal with such a problem, in Patent Document 1, each of a server and a user secretly generates a random number seed (sseed, used) used in a game. Further, the seal value of the initial random number (server random number) generated by the server (generated by a commitment protocol of some kind of commitment method) is registered in the electronic bulletin board.
- the electronic bulletin board is a highly reliable bulletin board based on blockchain technology.
- each user discloses a user random number to the server after the server writes the seal value on the electronic bulletin board.
- the server generates a random number using two types of random numbers (initial random number and user random number). As a result, the server is prevented from arbitrarily generating random numbers.
- Patent Document 1 exemplifies a case where a random hash value is used as the commitment method. In this respect, the same applies to the present disclosure, and a case where a random hash value is used as the commitment method will be described.
- Patent Document 1 The technology disclosed in Patent Document 1 has the following problems.
- Patent Document 1 since information is written on an electronic bulletin board that uses blockchain technology, a certain amount of time (for example, several minutes) is required for the written information to be approved. As a result, when the server generates a random number, the hash value is written on the electronic bulletin board, but the user cannot immediately read the written hash value. Therefore, it is possible for fraud that the server writes a value other than the hash value (seal value) of the server random number (seed of random number generation) on the electronic bulletin board on the electronic bulletin board.
- the main object of the present invention is to provide a random number generation system and a random number generation method that contribute to making it possible to verify the fairness of generated random numbers.
- the terminal includes a terminal and a random number generation server that generates at least a random number used by the terminal, and before the generation of the random number, the random number generation server and the terminal are , Transmitting and receiving data necessary for generating the random number, the random number generating server generates the random number based on at least the transmitted and received data, and after using the random number, the random number generating server sets the server verification data with a signature.
- the terminal writes user verification data with a signature on an electronic bulletin board, and the server verification data is generated at least by the random number generation server from before generation of the random number to after use of the random number.
- a random number generation system which is data capable of verifying whether necessary data is properly handled.
- a system including a terminal and a random number generation server that generates at least a random number used by the terminal, the random number generation server and the random number generation server before generation of the random number.
- the terminal transmits and receives data necessary for generating the random number, the random number generation server generates at least the random number based on the transmitted and received data, and after using the random number, the random number generation server Writing the signed server verification data on the electronic bulletin board, the terminal writing the signed user verification data on the electronic bulletin board, wherein the server verification data is the random number generation server before generating the random number.
- a random number generation method which is data capable of verifying whether or not data necessary for generating the random number is properly handled until later.
- a random number generation system and a random number generation method that contribute to making it possible to verify the fairness of generated random numbers are provided.
- FIG. 1 It is a figure for explaining the outline of one embodiment. It is a figure which shows an example of a structure of the game system which concerns on 1st Embodiment. It is a sequence diagram which shows an example of operation
- FIG. 7 is a sequence diagram showing an example of a game random number generation and acceptance operation of the random number in the game system according to the first embodiment.
- It is a flow chart which shows an example of operation of the verification machine concerning a 1st embodiment.
- It is a flow chart which shows an example of the verification operation based on the result of the consistency test by a verification machine.
- It is a block diagram which shows an example of the hardware constitutions of the verification machine which concerns on 1st Embodiment.
- the reference numerals attached to the outline are added to the respective elements for convenience as an example for facilitating understanding, and the description of the outline is not intended to limit the invention.
- the connecting lines between blocks in each figure include both bidirectional and unidirectional.
- the unidirectional arrows schematically show the flow of main signals (data), and do not exclude bidirectionality.
- an input port and an output port exist at each of the input end and the output end of each connection line. The input/output interface is similar.
- the random number generation system includes a terminal 101 and at least a random number generation server 102 that generates a random number used by the terminal 101 (see FIG. 1).
- the random number generation server 102 and the terminal 101 transmit/receive data necessary for generating the random number before generating the random number.
- the random number generation server 102 generates a random number based on at least the transmitted/received data.
- the random number generation server 102 writes the signed server verification data and the terminal 101 writes the signed user verification data on the electronic bulletin board.
- the server verification data is data capable of verifying whether or not the random number generation server 102 properly handles at least the data necessary for generating the random number from before the random number is generated until after the random number is used.
- the user verification data is data capable of verifying whether or not the terminal 101 properly handles at least the data necessary for generating the random number from before the random number is generated until after the random number is used.
- the data necessary for generating the random number includes a server random number and a user random number that are seeds used when generating the random number.
- these seeds are generated in advance before the generation of random numbers and the hash values of the server random number and the user random number are transmitted and received to each other, thereby making it possible to detect fraud (alteration, etc.) of these random numbers.
- the random number generation server 102 When a random number is needed, the random number generation server 102 generates a random number (game random number) using a seed (server random number, user random number) generated in advance, attaches a signature, and distributes it to the user. When the generation of random numbers is completed, the random number generation server 102 and the terminal 101 each register data (verification data) on the electronic bulletin board that can verify whether or not information regarding random numbers has been properly handled. As described above, in the above random number generation system, necessary data is transmitted and received between each other before the random number is generated and before the use of the random number is finished without using the electronic bulletin board.
- the situation (problem in which the server writes the hash value on the electronic bulletin board when the server generates the random number, but the user cannot immediately read the written hash value) does not occur.
- the fraudulent act by the random number generation server 102 which has been a concern in the technique of Patent Document 1
- the parties write information about the random number and data that can be verified whether or not the data is properly handled on the electronic bulletin board.
- a third party can analyze whether or not a fraudulent act regarding the “random number” is performed by analyzing the verifiable data.
- the fraudulent person can be identified by the analysis.
- FIG. 2 is a diagram showing an example of the configuration of the game system according to the first embodiment.
- the game system includes a game server 10, a plurality of terminals 20, a verification machine 30, and a data management system 40.
- the game server 10, the terminal 20, the verification machine 30, and the data management system 40 are connected to each other via a network such as the Internet.
- FIG. 2 is an exemplification, and is not intended to limit the configuration of the system.
- the system may include one or more terminals.
- the first embodiment will be described by taking a game system as an example, but it goes without saying that the fair random number generation method and the random number verification method described below can be applied to other systems.
- the method may be applied to random number generation in an electronic lottery system that performs lottery electronically. That is, the present disclosure relates to a random number generation system that generates fair random numbers as shown in FIG. 1 and/or a random number verification system that verifies the fairness of random numbers.
- at least one or more terminals 20 use random numbers.
- FIG. 2 two terminals 20 are shown, and these terminals 20 are denoted by the same reference numerals, but the terminals 20 included in the game system have the same functions except for the functions related to random numbers described later. It may have or different functions.
- the game server 10 is a device that provides online games to users. Specifically, the game server 10 performs a process of authenticating the user (login/logout process), a process relating to the game progress (game progress process), and the like.
- the online game assumed in the first embodiment is a type of game in which the game server 10 provides a field in which users compete with each other.
- a fair random number generation method and its verification method will be described by taking "backgammon" as an example of the above game. Although detailed description of the backgammon rule is omitted, it is a game in which two users alternately roll dice and move pieces according to the number of the rolled-out die.
- the game server 10 uses a game random number, which will be described later, to select the dice roll. That is, the game server 10 operates as a random number generation server (random number generation device) that generates a random number for the terminal 20.
- a random number generation server random number generation device
- the terminal 20 is a device used by a user who plays an online game.
- an information processing device such as a personal computer or a smart phone corresponds to the above terminal.
- it when there is no particular explanation and it is described as “user”, it indicates the terminal 20 operated by the user.
- the verification machine 30 is a device that verifies the validity of random numbers in the game system. More specifically, the verification machine 30 verifies whether or not the random number generation and the use of the random numbers are fair after the game by the game server 10 and the terminal 20 is finished. If the random number generation is fraudulent, the verification machine 30 identifies the subject (the game server 10, each terminal 20) that committed the fraud. A more detailed description of the verification machine 30 will be given later.
- the data management system 40 is a system operated by an organization or the like independent of the online game operating company.
- the data management system 40 is a system that provides an external (third party) electronic bulletin board on which data can be written and read.
- the data management system 40 manages various information by a so-called block chain.
- the data management system 40 can additionally write information by any subject, can read the written information, and the once written information is erased or tampered with. Provide an electronic bulletin board that never happens. More precisely, the data management system 40 is a system that provides an interface related to data input/output that can be handled as an electronic bulletin board from an external device.
- an electronic bulletin board using the blockchain technology will be described as an example, but the technology used to realize the electronic bulletin board is not limited to the blockchain. That is, in the “electronic bulletin board” disclosed in the present application, the game server 10, the terminal 20, and the verification machine 30 included in the system can freely write data and browse the data, and it is difficult to delete the written data. Any database may be used.
- the distributed management ledger system based on the block chain satisfies the above requirements and thus can be used as the “electronic bulletin board” disclosed in the present application.
- the data management system 40 is operated and managed by an organization or the like independent of the operating company of the game server 10, but the validity of the data management by the data management system 40 is ensured.
- an operating company such as the game server 10 may provide the electronic bulletin board.
- the game server 10 or the like can use the electronic bulletin board without having to pay the fee.
- the data management system 40 is composed of a plurality of management servers 50-1 to 50-4.
- the example illustrated in FIG. 2 is not intended to limit the number of management servers included in the data management system 40 to four.
- the data management system 40 may be configured to include two or more management servers.
- a plurality of management servers 50 forming the data management system 40 are directly connected to each other as shown in FIG. That is, the data management system 40 is configured to include a plurality of P2P (PeertoPeer) connected management servers 50.
- P2P PeertoPeer
- each of the plurality of P2P-connected management servers 50 has a ledger (hereinafter referred to as a data management ledger) for managing data (random number data, sales data, etc.) received from the outside.
- the data management system 40 distributes and manages the data management ledger among a plurality of management servers 50.
- writing the data on the electronic bulletin board provided by the data management system 40 by the game server 10 or the terminal 20 is simply referred to as “writing on the electronic bulletin board”.
- reading the data from the electronic bulletin board provided by the data management system 40 by the game server 10 or the terminal 20 is simply referred to as “reading from the electronic bulletin board”.
- FIG. 3 is a sequence diagram showing an example of an outline of operation of the game system according to the first embodiment.
- a user who desires to play an online game provided by the game server 10 operates the terminal 20 to access, for example, a WEB (web) page prepared by the operating company of the game server 10 to perform user registration (account registration). Perform (step S01). After completing the account registration, the user acquires the authentication information (user name, password) for logging in to the game server 10.
- a WEB web
- the authentication information user name, password
- Information regarding the user name and password is arranged so that the game server 10 can refer to the information.
- the above information is transmitted to the game server 10 and stored in the internal storage device of the game server 10.
- the information (user name, password) may be stored in a database accessible by the game server 10.
- the user provides the acquired authentication information (combination of user name and password) to the game server 10 and logs in to the game server 10 (step S02).
- the game server 10 authenticates the user using the authentication information provided by the user, and accepts the user when it is confirmed that the user is a valid user.
- the game server 10 notifies a valid user of a user identifier (ID; Identifier) for uniquely identifying each user in the game.
- ID user identifier
- the server identifier SID of the game server 10 is also predetermined and is notified to each user.
- the game server 10 and the terminal 20 execute a pre-process (game start process; step S03) for starting the game. Specifically, before generating the random number, the game server 10, the terminal 20, and the terminal 20 transmit and receive data necessary for generating the random number and verify the acquired data. Details of the game start processing will be described later.
- the online game may be provided by a general-purpose process using an HTML (HyperText Markup Language) source without installing an application dedicated to the game on the terminal 20, or the dedicated application may be installed on the terminal 20. It may be in the form.
- HTML HyperText Markup Language
- the game server 10 determines whether or not it is necessary to generate a random number during the progress of the game (step S04).
- the random number used to progress the game is referred to as "game random number”.
- step S04 When it is necessary to generate a game random number (step S04, Yes branch), the game server 10 executes a process related to the random number generation (step S05). In that case, the game server 10 produces
- the game random number is a random number common to each user who participates in the game. That is, each user participating in the same game plays the game using the same game random number. Details of the processing relating to steps S05 and S06 will be described later.
- the game server 10 determines whether or not the game has ended by checking various conditions (for example, conditions such as time-out) provided for ending the game (step S07).
- step S07, No branch While the game is continuing (step S07, No branch), it is confirmed whether or not the game random number generation is necessary (step S04), and when the game random number generation is necessary, the random number is continuously generated.
- step S07, Yes branch When the game server 10 determines that the game has ended (step S07, Yes branch), it notifies the terminal 20 to that effect (step S08).
- the game server 10 After notifying the terminal 20 that the game has ended, the game server 10 writes data with a signature that enables verification of the game random number on the electronic bulletin board (step S09).
- the data written by the game server 10 on the electronic bulletin board will be referred to as “server verification data”. Details of the server verification data will be described later.
- the user (terminal 20) having received the notification that the game has ended writes the signed data on the electronic bulletin board that enables verification of the game random number (step S10).
- the data that the terminal 20 writes on the electronic bulletin board will be referred to as “user verification data”. Details of the user verification data will be described later.
- the game server 10 After the terminal 20 uses the game random number, the game server 10 writes the signed server verification data and the terminal 20 writes the signed user verification data on the electronic bulletin board.
- the verification machine 30 which is a third party as well as the parties to the game (the game server 10 and the terminal 20), is authorized to generate and use the game random number. It can be verified. That is, the game server 10 and the terminal 20 may behave as a “verification machine”.
- the game server 10 and the terminal 20 write the verification data on the electronic bulletin board after the game ends, and the verification machine 30 verifies the game random number using the verification data (step S11). Details of the verification operation by the verification machine 30 will be described later.
- the verification machine 30 determines that there is an illegal act by the game server 10 or the terminal 20 as a result of the verification regarding the game random number, the verification machine 30 notifies (protests) the fact to the operating company of the game server 10 or the like, for example. You can take action.
- the exchange of data necessary for the progress of the game is directly transmitted/received between the game server 10 and the terminal 20.
- data transmission/reception between the game server 10 and the terminal 20 may be indirectly performed via a server other than the electronic bulletin board or the like.
- the data transmission/reception may be in any form.
- the game server 10 and the terminal 20 do not write any data on the electronic bulletin board between the start of the game and the end of the game.
- FIG. 4 is a block diagram showing an example of the processing configuration of the game server 10 according to the first embodiment.
- the game server 10 includes a communication control unit 201, a storage unit 202, and a game execution control unit 203.
- the communication control unit 201 is means for realizing communication with other devices.
- the communication control unit 201 is also a unit that distributes a message (packet) received from another device to each processing module unit or transmits a message acquired from each processing module to another device.
- the storage unit 202 stores, for example, data necessary for the processing of the game execution control unit 203 and the like.
- the game execution control unit 203 is a means for controlling and managing game progress.
- the game execution control unit 203 includes two sub-modules, a user authentication unit 211 and a random number management unit 212.
- the user authentication unit 211 is a sub-module that is activated when the user logs in to the game server 10 or logs out from the game server 10.
- any method of user authentication may be used.
- an authentication method using a password as described above may be used, or biometric authentication using biometric information (fingerprint information or the like) of the user may be used.
- the user authentication unit 211 authenticates a user who uses the terminal 20 by comparing data provided by the terminal 20 (data to be authenticated) with data stored in a database or the like (verification data).
- the game execution control unit 203 provides an online game to the user or rejects the online game play by the user according to the authentication result by the user authentication unit 211.
- the random number management unit 212 is a sub-module that manages random numbers as the game progresses. The process related to the random number by the game server 10 is executed by the random number management unit 212. The operation of the random number management unit 212 will be described later as the operation of the game server 10.
- FIG. 5 is a block diagram showing an example of the processing configuration of the terminal 20 according to the first embodiment.
- the terminal 20 is configured to include a communication control unit 301, a storage unit 302, and a game execution unit 303.
- the communication control unit 301 is means for realizing communication with other devices.
- the communication control unit 301 is also a means for distributing a message (packet) received from another device to each processing module unit or transmitting a message acquired from each processing module to another device.
- the storage unit 302 stores, for example, data necessary for the processing of the game execution unit 303 and the like.
- the game execution unit 303 is means for realizing game play by the user. More specifically, the game execution unit 303 inputs a user operation with an input unit such as a keyboard or a mouse. The game execution unit 303 transmits information according to the user's operation to the game server 10. For example, when the user logs in to the game server 10, the authentication information (for example, the combination of the user name and the password) is transmitted to the game server 10. Further, while the user is playing the game, information regarding the key operation by the user is transmitted to the game server 10.
- the authentication information for example, the combination of the user name and the password
- the game execution unit 303 is configured to include a sub module called a random number management unit 311.
- the random number management unit 311 is a sub module that manages random numbers associated with the progress of the game. The process related to the random number by the terminal 20 is executed by the random number management unit 311. The operation of the random number management unit 311 will be described later as the operation of the terminal 20.
- FIG. 6 is a block diagram showing an example of the processing configuration of the verification machine 30 according to the first embodiment.
- the verification machine 30 is configured to include a communication control unit 401, a storage unit 402, and a random number verification unit 403.
- the communication control unit 401 is means for realizing communication with other devices.
- the communication control unit 401 is also means for distributing a message (packet) received from another device to each processing module unit or transmitting a message acquired from each processing module to another device.
- the storage unit 402 stores, for example, data necessary for the processing of the random number verification unit 403.
- the random number verification unit 403 is a means for verifying the fairness of the game random number by using the verification data written on the electronic bulletin board and its signature. The process related to the validity of the random number by the verification machine 30 is executed by the random number verification unit 403.
- the random number verification unit 403 is configured to include a sub module called a consistency verification unit 411.
- the consistency verification unit 411 is a means for executing a consistency test on the verification data acquired from the electronic bulletin board and its signature. The details of the consistency verification unit 411 will be described later.
- FIG. 7 is a block diagram showing an example of the processing configuration of the management server 50 according to the first embodiment.
- the management server 50 includes a communication control unit 501, a storage unit 502, and a ledger management unit 503.
- the communication control unit 501 is means for realizing communication with other devices.
- the communication control unit 501 is also a unit that distributes a message (packet) received from another device to each processing module unit or transmits a message acquired from each processing module to another device.
- the storage unit 502 is a means for storing information necessary for processing of each processing module.
- the storage unit 502 includes a temporary storage area for temporarily storing data and an area for storing a data management ledger.
- the ledger management unit 503 is a means for processing an access request from the game server 10 or the terminal 20 to the electronic bulletin board. Specifically, for example, when a request for writing the server verification data to the electronic bulletin board is received from the game server 10, the data is added to the data management ledger stored in the storage unit 502. Further, when the ledger management unit 503 receives a request for reading the electronic bulletin board from an external device (for example, the verification machine 30), the ledger management unit 503 searches the data management ledger by using the transaction ID attached to the request as a key and attaches the ID. Extracted data (verification data). The ledger management unit 503 transmits the extracted verification data to the external device.
- an external device for example, the verification machine 30
- the ledger management unit 503 has two sub-modules, a block generation unit 511 and a block verification unit 512.
- the block generation unit 511 generates a block for sharing and managing the data management ledger with another management server 50.
- the ledger management unit 503 acquires the server verification data from the game server 10
- the ledger management unit 503 stores the acquired server verification data in the temporary storage area of the storage unit 502.
- the block generation unit 511 determines from the header of the block generated immediately before and the data stored in the temporary storage area (for example, verification data or sales data; additional data to the data management ledger) “validity guarantee”. Data”.
- the block generation unit 511 when the block generation unit 511 calculates the hash value of the additional write data, the header of the previous block, and the validity assurance data, the block generation unit 511 makes the calculated hash value conform to a predetermined rule (a so-called nonce value or (Nonce value) is generated as correctness assurance data. Further, the validity guarantee data includes the electronic signature of the management server 50 that generated the block.
- the block generation unit 511 generates a block having the header of the block generated immediately before and the header composed of the above-mentioned validity guarantee data. Specifically, a block as shown in FIG. 8 is generated.
- the block generation unit 511 When the block generation by the block generation unit 511 is completed, the block is added to the data management ledger.
- the block generation unit 511 also distributes (transmits) the generated block to another management server 50 via the communication control unit 501.
- the communication control unit 501 of the management server 50 that has received the block from another management server 50 delivers the acquired block to the block verification unit 512.
- the block verification unit 512 is means for verifying the legitimacy of a block transmitted by another management server 50, based on a data management ledger (block) stored in the storage unit 502 of its own device. Specifically, the block verification unit 512 of the management server 50 that has received the block verifies the validity of the received block with the block generated by the management server 50 that has transmitted the block and its own device (the management server 50 that has received the block. ) Is used to perform verification using the header of the block generated immediately before.
- the block verification unit 512 confirms that the validity guarantee data included in the received block is assigned with the electronic signature of the management server 50 that is the transmission source, and the “previous block” described in the received block is confirmed. "Header" is specified based on the data management ledger managed by itself. After that, the block verification unit 512 receives the additional write data in the received block and the header of the previous block as input, and determines whether or not the validity guarantee data in the header is consistent (the validity guarantee data conforms to a predetermined rule). Check whether or not).
- the block verification unit 512 determines that the block transmitted by the other management server 50 is valid if the consistency of the validity guarantee data can be confirmed. On the other hand, if the consistency of the validity guarantee data cannot be confirmed, the block verification unit 512 determines that the block transmitted by the other management server 50 is invalid.
- the ledger management unit 503 updates the data management ledger in the storage unit 502 (additional blocks including additional write data are added). To). That is, the block verification unit 512 performs a process of reflecting the additional recording of the data in the ledger of the other management server 50 in the ledger of its own device. When the block verification unit 512 determines that the block transmitted by the other management server 50 is invalid, the block verification unit 512 discards the block.
- the block verification unit 512 notifies the management server 50 that has transmitted the block of information related to the verification result (the received block is valid or invalid).
- FIG. 9 shows a case where the management server 50-1 acquires the server verification data from the game server 10 and adds the data to the data management ledger.
- the management server 50-1 acquires the server verification data from the game server 10 (step S101)
- the management server 50-1 copies the data to the temporary storage area of the storage unit 502 of its own device (step S102).
- the management server 50-1 generates the above-mentioned block based on the data stored in the temporary storage area under the condition that a predetermined amount of the copied data is accumulated in the temporary storage area (step S103).
- the management server 50-1 transmits the generated block to the other management servers 50-2 to 50-4 (step S104).
- Each of the management servers 50-2 to 50-4 that received the block individually verifies the block generated by the management server 50-1 (step S105).
- Each of the management servers 50-2 to 50-4 updates the data management ledger of its own device when the validity of the block can be confirmed (step S106).
- the block is discarded, and the management server 50 notifies the management server 50 transmitting the block to that effect.
- the ledger management unit 503 of the management server 50 restores the state of the data management ledger before the block transmission.
- step S03 shown in FIG. 3 Next, the operation of step S03 shown in FIG. 3 will be described.
- the game server 10 and the terminal 20 perform preprocessing before starting the game.
- the details of the preliminary process will be described below.
- FIG. 10 is a sequence diagram showing an example of the operation of the game start processing in the game system according to the first embodiment.
- the game server 10 generates a game ID (gid) (step S201).
- the game ID is an identifier of a game in which the user (terminal 20) participates.
- the game server 10 plays a plurality of games with various users.
- the game server 10 uses the game ID to distinguish the plurality of games. That is, the game server 10 manages the opportunity of using the game random number by the game ID (gid).
- the same game ID (gid) means the same opportunity (game) of using the game random number. That is, in the present disclosure, the game ID functions as an identifier for identifying the "random number generation session" (the game ID is the random number generation session ID).
- the game server 10 avoids duplication of the game ID by incrementing the game ID each time a new game is started. As described above, the game server 10 increments the game ID each time the game starts (see the following expression (1)). [Formula 1]
- the game server 10 generates a server random number (step S202).
- the game server 10 generates a ⁇ -bit random number as a server random number sseed (see the following equation (2)).
- the server random number sseed is one of the random numbers that are the basis (seed) of the game random numbers described below. [Formula 2]
- the game server 10 generates a hash value (seal value) of the server random number sseed (step S203).
- the game server 10 generates a hash value comsseed of the server random number by the following expression (3).
- the hash function (Hash) that can be used in the present disclosure
- a hash function such as SHA-2 (Secure Hash Algorithm 2) or Keccak (Kechak) can be used.
- SHA-2 Secure Hash Algorithm 2
- Keccak Keccak
- the function used when sealing the server random number sseed and the like is not only the hash function but also “commit data (secret )” and the function of “opening data (verifying that it has not been changed)” can be substituted.
- the game server 10 and the terminal 20 use the same hash function. Therefore, a common hash function used for each of the game server 10 and the terminal 20 is set. However, the game server 10 and the terminal 20 may use different hash functions, and in this case, information about the hash function used by itself and the hash function used by the opponent is set in the game server 10 and the terminal 20. deep. Alternatively, information about the hash function used by the game server 10 and the terminal 20 may be exchanged to notify the hash function used by each other.
- n is a positive integer, the same applies hereinafter).
- the user ID corresponding to the user i is ID i
- the user IDs of all users can be expressed as (ID 1 , ID 2 ,..., ID n ).
- the game server 10 uses the game ID (gid), the IDs (ID 1 , ID 2 ,..., ID n ) of all users who participate in the game, and the hash value comsseed of the above server random number for each user (terminal 20) (step S204).
- the user ID given to each user when each user logs in to the game server 10 is also notified from the game server 10 to other users (terminals 20).
- the terminal 20 In parallel with the operation of the game server 10, the terminal 20 generates a user random number (step S301).
- the terminal 20 generates a ⁇ -bit random number as a user random number used (see the following expression (4)).
- the user random number used is one of the random numbers that are the basis (seed) of the game random number described later.
- Each terminal 20 generates a hash value of the user random number used (step S302).
- Each terminal 20 generates a hash value comuseed of a user random number by the following equation (5). [Formula 5]
- Each terminal 20 transmits the hash value comuseed of the user random number to the game server 10 (step S303).
- the game server 10 obtains the user random number hash values comuseed i to comuseed n from all the users participating in the game, the game server 10 obtains all the hash values (the server random number hash values comsseed and the user random number hash values comuseed i to comuseed n ).
- a signature of the included information is generated (step S205). Specifically, the game server 10 generates the signature sigidcomseeds by the following equation (6). [Formula 6]
- the game server 10 uses the game ID (gid), the user identifier (ID 1 to ID n ), the server random number hash value comsseed, and the user random number hash value (comuseed i to comuseed n ). Connect and calculate the hash value of the connected data. After that, the game server 10 encrypts the calculated hash value with its own (game server 10) private key ssk to generate a signature.
- the signature generated by the equation (6) will be referred to as “all hash value signature”.
- the key private key, public key
- the key necessary for generating and verifying the signature is generated in advance, and distributed and disclosed to the game server 10 and the terminal 20.
- the game server 10 transmits the signatures sigidcomseeds of all hash values and the hash values comuseed i to comuseed n of the user random numbers acquired from each terminal 20 to each terminal 20 (step S206).
- Each terminal 20 verifies the signature sigidcomseeds of all hash values (step S304). Specifically, each terminal 20 generates a digest corresponding to the signature of all the hash values generated by the game server 10 by the following formula (7). [Formula 7]
- ids is a general term for user IDs (ID 1 ,..., ID n ) of all users (ids ⁇ (ID 1 ,..., ID n )).
- comseeds is a general term for hash values of server random numbers and user random numbers (comseeds ⁇ (comsseed, comuseded i ,..., comuseed n )).
- each terminal 20 decrypts the signature sigidcomseeds of all hash values using the public key spk of the game server 10 (generates a digest). Each terminal 20 compares the generated digest with the decrypted digest, and verifies the signature of all hash values sigidcomseeds depending on whether or not they match.
- the above verification operation is summarized as the following expression (8).
- step S305 If the signature is invalid (step S305, No branch), each terminal 20 ends (interrupts) the game.
- each terminal 20 If the signature is valid (step S305, Yes branch), each terminal 20 generates the signature of the previously generated user random number used (step S306). Specifically, each terminal 20 generates a user random number signature siguseed by the following equation (9). [Formula 9]
- usk i is the secret key of user i.
- Each terminal 20 transmits a signature corresponding to its own user random number (user random number signature siguseed) to the game server 10 (step S307).
- the user verifies the signatures sigidcomseeds of all the hash values, so that the user uses at least the hash value comsseed of the server random number and the hash value comuseed of the user's own random number to obtain all the hash values. It can be confirmed that the signature of is generated.
- the game server 10 acquires user random numbers and the like from all users (terminals 20), it performs two verifications (steps S207 and S208).
- the game server 10 verifies the signature siguseed of the acquired user random number for each user (step S207). Specifically, the game server 10 verifies the signature of the user random number by the following formula (10). [Formula 10]
- the hash value comuseed of the user random number acquired from each terminal 20 in step S303 matches the hash value (Hash(useed)) generated from the user random number used in step S307.
- the user random number is verified depending on whether or not (step S208). Specifically, the game server 10 verifies the user random number by the following formula (11). [Formula 11]
- the game server 10 determines that the user random number is “valid”. On the other hand, if the hash value comuseed of the user random number and the hash value (Hash(useed)) generated from the user random number used do not match, the game server 10 determines that the user random number is “illegal”.
- the game server 10 ends (interrupts) the game when the “valid” result cannot be obtained in both of the two verifications (step S209, No branch). That is, in the game server 10, if the signature of the user k, which is one of all users (user ID 1 to user ID n ), is invalid, and the user random number and its hash value are inconsistent, Stop the game.
- the game server 10 ends the game start processing (preliminary processing prior to the start of the game) and starts the game when the “valid” results are obtained in both of the two verifications (step S209, Yes branch).
- the game server 10 generates the server random number and transmits the sealed value of the server random number to the terminal 20 before generating the game random number.
- the terminal 20 generates a user random number and transmits the seal value of the user random number to the game server 10.
- the game server 10 transmits to the terminal 20 a signature of information (signature of all hash values) including at least the seal value of the user random number and the seal value of the server random number. If the verification of the signature is successful, the terminal 20 transmits the signed user random number to the game server 10.
- the game server 10 verifies the signature of the user random number and confirms the legitimacy of the sender of the user random number.
- the game server 10 calculates a hash value from the acquired user random number and compares it with the corresponding hash value acquired previously to generate the user random number (the random number generated in step S301 in FIG. 10). ) Has not been tampered with.
- the game server 10 generates a game random number as the game progresses.
- the game random number is used by each terminal 20.
- generation of game random numbers by the game server 10 and acceptance of game random numbers by the terminal 20 will be described.
- FIG. 11 is a sequence diagram showing an example of a game random number generation and acceptance operation of the random number in the game system according to the first embodiment.
- the game server 10 generates the j-th (j is a positive integer, the same applies hereinafter) game random number r[j] in the same game ID (gid) by the following equation (12) (step S401). [Formula 12]
- the game server 10 generates the signature of the generated game random number r[j] by the following formula (13) (step S402). [Formula 13]
- the game server 10 concatenates the game ID (gid), the ordinal number (j) of the game random number, and the game random number (r[j]), and encrypts the hash value of the concatenated data with its own secret key ssk. A signature ssigr[j] of the game random number r[j] is generated.
- the game server 10 transmits the game ID (gid), the game random number r[j], and the game random number signature ssigr[j] to each terminal 20 (step S403).
- Each terminal 20 verifies the signature of the acquired game random number (step S501). Specifically, each terminal 20 verifies the signature of the game random number r[j] by the following formula (14). [Formula 14]
- each terminal 20 ends the game. If the signature is valid (step S502, Yes branch), each terminal 20 uses the game random number r[j] (step S503).
- the game server 10 generates a game random number based on at least the transmitted user random number and server random number, and also transmits the signed game random number to the terminal.
- the terminal 20 uses the transmitted game random number when the signature of the game random number is valid.
- the terminal 20 verifies the signature of the game random number r[j] to verify that the random number has not been tampered with and that the sender of the random number is valid.
- the game server 10 generates server verification data soutput represented by the following expression (15). [Formula 15]
- the game ID (gid) the server ID (SID), the server random number sseed, the user random number used k, and the corresponding signature siguseed k (where k ⁇ 1,... N ⁇ ) are included.
- the game server 10 also generates the signature sigsoutput of the server verification data soutput by the following formula (16). [Formula 16]
- Each terminal 20 generates user verification data uoutput represented by the following formula (17). [Expression 17]
- the user verification data uoutput includes the game ID (gid), the user ID of the user (ID i ), and all user IDs (ID 1 ... ID n ) including the user ID of the user. , All hash values comseeds, signatures sigidcomseeds of all hash values, game random numbers r[j] and corresponding signatures ssigr[j] (where j ⁇ 1,...,max ⁇ ).
- “Max” described in Expression (17) is the number of game random numbers generated by the game server 10 in one game (same game ID).
- each terminal 20 generates the signature siguoutput of the user verification data uoutput by the following formula (18). [Formula 18]
- the server verification data and its signature and the user verification data and its signature are written in the data management system 40 when the game ends (steps S09 and S10 in FIG. 10).
- the verification machine 30 determines whether the random number generation in the game system has been done fairly. If the random number generation is fraudulent, the verification machine 30 identifies the subject (game server 10, each terminal 20) that committed the fraud. Specifically, as shown in FIG. 12, the verification machine 30 determines whether or not the random number generation in the game system was fair through the 5-step verification.
- the verification machine 30 When verifying the game random number, the verification machine 30 reads the verification data to be verified and its signature from the electronic bulletin board. Specifically, the verification machine 30 reads each of the server verification data having the game ID (gid) to be verified and the corresponding signature, the user verification data and the corresponding signature from the electronic bulletin board. Based on the read data, the verification machine 30 identifies the presence or absence of injustice in random number generation, and the actor (illegitimate actor) in the event of injustice.
- the game ID (gid) to be verified is input to the verification machine 30 by the system administrator, for example.
- the verification machine 30 verifies the signature corresponding to the read verification data (server verification data, user verification data) (step S11 in FIG. 12).
- the verification machine 30 By verifying the signature, the verification machine 30 eliminates the verification data written on the electronic bulletin board by a third party other than the game participants (parties). For example, the verification machine 30 verifies the signature of the verification data to eliminate illegal data such as server verification data written by a third party who impersonates the game server 10.
- the verification machine 30 performs verification based on the result of the consistency test using the verification data and its signature (step S12 in FIG. 12).
- the consistency test refers to whether the entity that generates the verification data (server verification data, user verification data) handles the data required for random number generation before the random number generation and after the random number generation. It is a test to judge. In other words, in the consistency test, the game server 10 and the terminal 20 perform consistency regarding generation and verification of the game random number and handling of necessary data (for example, user random number, server random number, signature of all hash values, etc.). This is a test for determining whether or not the product has it. That is, the data regarding the game random number is consistently handled at each stage at the time of starting the game, during the game (when generating the game random number), and at the end of the game (do not change the handling depending on the stage or intentionally replace the data). Consistency test is a test for verifying that
- FIG. 13 is a flowchart showing an example of the verification operation based on the result of the consistency test by the verification machine 30.
- the verification machine 30 determines which of the game server 10 and the terminal 20 is the fraudster based on the result of the consistency test. That is, the verification machine 30 determines that there is some injustice regarding the game random number when the consistency test fails, and identifies the injustice person.
- the verification machine 30 confirms the consistency of the user verification data (step S601). Specifically, the verification machine 30 activates the consistency verification unit 411 with each of the user verification data acquired from the electronic bulletin board and the corresponding signature as an input parameter. The consistency verification unit 411 determines the consistency of the acquired user verification data and its signature, and outputs the result (consistent or inconsistent).
- the consistency verification unit 411 determines that the user verification data to be determined is “inconsistent”.
- the signature sigidcomseeds of all hash values and the signature ssigr[j] of game random numbers are the signatures included in the user verification data uoutput for consistency verification.
- the consistency verification unit 411 determines that the two signatures (the signature of all hash values sigidcomseeds and the signature of game random number ssigr[j]) included in the user verification data uoutput whose signature has been verified. If each is valid, it is determined to be “consistent”, and if any of the signatures is invalid, it is determined to be “inconsistent”.
- the verification machine 30 determines that the user (terminal 20) who has written the user verification data on the electronic bulletin board is a fraudulent person (step S601, No branch).
- the reason is as follows.
- the signatures of all hash values, sigidcomseeds, have been verified for validity in the game start process (step S305 in FIG. 10).
- the validity of the signature ssigr[j] of the game random number has been verified during the game (step S502 in FIG. 11). If the signature is “illegal” in any of the verifications, the game is interrupted and the user verification data uoutput is not originally written on the electronic bulletin board.
- an invalid signature is included in the user verification data uoutput means that the user who created the user verification data neglected the necessary verification (step S305 in FIG. 10, step S502 in FIG. 11) or intentionally. It means that a legitimate signature has been replaced with an invalid signature. That is, if the user verification data is not consistent, the user becomes a fraudster.
- the verification machine 30 confirms the consistency of the server verification data (step S601, Yes branch; step S602).
- the verification machine 30 uses the server verification data acquired from the electronic bulletin board and the corresponding signature as input parameters to activate the consistency verification unit 411.
- the consistency verification unit 411 determines the consistency of the acquired server verification data and its signature, and outputs the result (consistent or inconsistent).
- the consistency verification unit 411 determines that the server verification data to be judged is “consistent. Is determined.
- the consistency verification unit 411 judges that the server verification data to be judged is “inconsistent” when either of the above two signatures is invalid.
- the user random number hash value signature siguseed for each user is the signature included in the server verification data soutput that is the subject of the consistency test.
- the consistency verification unit 411 determines that the signature is “consistent” if the signature siguseed of the user random number included in the server verification data soutput whose signature is verified is correct.
- the verification machine 30 determines that the game server 10 that has written the server verification data on the electronic bulletin board is a fraudulent person (step S602, No branch).
- the reason is as follows.
- the user random number signature siguseed is a signature that the game server 10 verifies the validity in the game start process (step S207 in FIG. 10). If the signature is invalid, the game is stopped (step S209, No branch). Therefore, the fact that the signature siguseed of the user random number included in the server verification data soutput generated when the game continues and the game ends is not valid means that the game server 10 fails to verify the signature, or It means that the signature at the time of generation is replaced with another signature. That is, if the server verification data is inconsistent, the game server 10 becomes a fraudster.
- the verification machine 30 determines whether or not there is a plurality of consistent server verification data (step S602, Yes branch; step S603).
- the verification machine 30 determines whether or not a plurality of server verification data soutput having the same game ID (gid) and server ID (sid) have been written on the electronic bulletin board. If a plurality of server verification data soutput having the same game ID (gid) and server ID (sid) are written on the electronic bulletin board, the verification machine 30 determines that the game server 10 is a fraudster.
- the game ID (gid) is incremented in the game start process (step S201 in FIG. 10), and different game IDs (gid) are given to different games. Further, in principle, one server verification data soutput is written on the electronic bulletin board when one game ends.
- step S603, No branch the fact that a plurality of server verification data soutput including the same game ID (gid) are written on the electronic bulletin board indicates that the game server 10 is not properly managing and using the game ID (gid). Therefore, the verification machine 30 determines that the game server 10 is a cheating person (step S603, No branch).
- the verification machine 30 determines whether or not there is a plurality of consistent user verification data for the same user (step S603, Yes branch; step S604).
- the verification machine 30 determines whether or not a plurality of user verification data uoutputs having the same game ID (gid) and user ID have been written on the electronic bulletin board. If a plurality of user verification data uoutputs having the same game ID (gid) and the same user ID are written on the electronic bulletin board, the verification machine 30 determines that the game server 10 is a cheating person (step S604, No). Branch).
- the server verification data it is a rule that one user verification data is written on the electronic bulletin board for the same user for the user verification data.
- the game server 10 determines the game ID (gid). Therefore, it is the game server 10 that creates the above situation (there is a plurality of user verification data uoutputs having the same game ID (gid) and user ID). That is, since the game server 10 manages the game ID (gid), if there is a plurality of user verification data with the same game ID (gid) for the same user, the game server 10 may be a fraudster. Becomes
- the verification machine 30 has a plurality of consistent server verification data for the same chance of using the random number (same game ID) (step S603), and a plurality of consistent users.
- the game server 10 is determined to be a cheating person.
- the verification machine 30 determines whether consistent server verification data does not exist on the electronic bulletin board and the user verification data of each user is consistent (step S605).
- the server verification data having the specified game ID (gid) cannot be acquired from the electronic bulletin board, but the user verification data having the game ID (gid) can be acquired from the electronic bulletin board. It is the target.
- the verification machine 30 determines that the game server 10 is a cheating person (step S605, No branch).
- the game server 10 is obliged to write consistent server verification data on the electronic bulletin board at the end of the game. Therefore, the fact that consistent server verification data cannot be obtained from the electronic bulletin board indicates that the game server 10 is an unjustified offender. Note that the consistent user verification data is written on the electronic bulletin board, which means that the game has ended normally (step S08 in FIG. 3).
- the verification machine 30 determines whether consistent user verification data does not exist on the electronic bulletin board and the server verification data is consistent (step S605, Yes branch; step S606).
- At least one or more user verification data among all users who participated in the game having the specified game ID (gid) cannot be acquired from the electronic bulletin board, and the server verification data having the game ID (gid).
- the above-mentioned judgment is a situation in which can be obtained from the electronic bulletin board.
- the number of users who participated in the game is obtained from the number of combinations of the user random number used i and its signature siguseed i included in the server verification data soutput.
- the verification machine 30 makes a user who has not written consistent user verification data on the electronic bulletin board a fraudulent person (step S606, No branch).
- the user is obliged to write consistent user verification data on the electronic bulletin board at the end of the game. Therefore, the fact that consistent user verification data cannot be obtained from the electronic bulletin board indicates that the user is a fraudulent offender.
- the verification machine 30 cannot acquire the verification data (server verification data, user verification data) including the specified game ID (gid) from the electronic bulletin board, but from the specified game ID (gid) Also determines whether verification data having verification data with a large value is written in the electronic bulletin board (step S606, Yes branch; step S607).
- the game server 10 becomes a fraudster.
- the game server 10 manages the game ID (gid).
- the game server 10 increments the game ID (gid) used in the immediately preceding game each time a new game is started to generate a game ID (gid) for the new game.
- the game server 10 appropriately manages the game ID (gid). There will be no. Therefore, the game server 10 is determined to be a cheating person.
- the verification machine 30 determines that the game server 10 is a cheating person.
- the verification machine 30 verifies whether or not there is a contradiction between the user verification data uoutput p written by the user p on the electronic bulletin board and the user verification data uoutput q written by the user q on the electronic bulletin board.
- Each element of the server verification data written on the electronic bulletin board by the game server 10 is described by connecting the server ID (SID) and each element with a period.
- SID server ID
- the server random number sseed of the server verification data soutput of the game server 10 is described as SID.sseed.
- the verification machine 30 verifies whether or not the user verification data uoutput written on the electronic bulletin board by each user is consistent with the following formula (19). [Formula 19]
- the verification machine 30 determines that there is no contradiction in the user verification data uoutput written by each user on the electronic bulletin board if the left side and the right side of the equation (19) match. If the left side and the right side of the above equation (19) do not match, the verification machine 30 determines that the user verification data uoutput written on the electronic bulletin board by each user is inconsistent.
- the game server 10 has an obligation to transmit the same data to all users participating in the game. Therefore, if there is a contradiction in the user verification data of each user, it means that the game server 10 is transmitting different data for each user. That is, the game server 10 is performing a so-called “Byzantine attack” on each user. That is, the verification machine 30 verifies whether or not there is a contradiction in the data included in each of the plurality of user verification data, and if there is a contradiction, determines that the game server 10 is a fraudster.
- step S14 “verification regarding verification data between the server and the user” by the verification machine 30 will be described (step S14 in FIG. 12).
- the verification machine 30 verifies whether there is a contradiction between the server verification data soutput and the user verification data uoutput of each user.
- the verification machine 30 verifies whether or not there is a contradiction between the server verification data soutput and the user verification data uoutput by the following formula (20). [Formula 20]
- the verification machine 30 determines that there is no contradiction between the server verification data and the user verification data if the left side and the right side of the above equation (20) match.
- the verification machine 30 determines that there is a contradiction between the server verification data and the user verification data if the left side and the right side of the equation (20) do not match.
- the hash value of the random number (server random number, user random number) included in each user verification data matches the hash value generated from the random number (server random number, user random number) included in the server verification data. It is determined whether or not.
- the user verification data includes signatures sigidcomseeds of all hash values, and the signature is guaranteed to be valid from the result of the consistency test of the user verification data. Therefore, if the hash value of the random number included in the user verification data does not match the hash value generated from the random number included in the server verification data, the random number used by game server 10 to generate the signature of all hash values comseeds is This means that different random numbers were written on the electronic bulletin board as server verification data. Therefore, the game server 10 becomes a cheating person.
- the verification machine 30 verifies whether or not the data included in each of the user verification data and the server verification data is inconsistent, and if there is inconsistency, determines that the game server 10 is a fraudster.
- the verification machine 30 is a game random number r[j] generated during the same game, and a game random number r[j] included in each user verification data uoutput is a random number (server random number) included in the server verification data. , User random number) to verify whether it matches the game random number.
- the verification machine 30 performs the above verification by the following formula (21). [Formula 21]
- the verification machine 30 determines that the random number generation by the game server 10 is valid if the left side and the right side of the equation (21) match.
- the verification machine 30 determines that the random number generation by the game server 10 is inappropriate if the left side and the right side of the above equation (21) do not match.
- the validity of the signature ssigr[j] of the game random number included in each user verification data and the signature siguseed of the user random number included in the server verification data is guaranteed to be correct by the consistency test of the two verification data. ing. Therefore, if the game random number r[j] provided to each user does not match the game random number r[j] generated from the random number generated at the start of the game (server random number, user random number), the game server 10 Indicates that the hash value or random number signature has not been verified, or that these data have been intentionally replaced. Therefore, the game server 10 becomes a cheating person.
- the verification machine 30 verifies the legitimacy of the random number generation by the game server 10 using the data included in the server verification data and the user verification data, and if the random number generation is improper, the verification server 30 cheats the game server. Determined to be a person.
- the verification machine 30 determines that the random number generation in the game system was fair. Even in the verification shown in FIG. 12, if all the system participants (the game server 10 and the terminal 20) collude and make an illegal act on the generation of the game random number, the illegality is detected or illegal. It is impossible to identify the actor. However, in the above situation, it is no longer meaningful to detect fraud and identify fraudsters.
- FIG. 14 is a block diagram showing an example of the hardware configuration of the verification machine 30 according to the first embodiment.
- the verification machine 30 can be configured by an information processing device (computer), and has the configuration illustrated in FIG.
- the verification machine 30 includes a CPU (Central Processing Unit) 31, a memory 32, an input/output interface 33, a NIC (Network Interface Card) 34 that is a communication unit, and the like, which are mutually connected by an internal bus.
- the configuration shown in FIG. 14 is not intended to limit the hardware configuration of the verification machine 30.
- the verification machine 30 may include hardware (not shown) or may not include the input/output interface 33 as needed.
- the number of CPUs and the like included in the verification machine 30 is not limited to the example illustrated in FIG. 14, and a plurality of CPUs may be included in the verification machine 30, for example.
- the memory 32 is a RAM (Random Access Memory), a ROM (Read Only Memory), and an auxiliary storage device (hard disk, etc.).
- RAM Random Access Memory
- ROM Read Only Memory
- auxiliary storage device hard disk, etc.
- the input/output interface 33 is a means to interface with a display device or an input device (not shown).
- the display device is, for example, a liquid crystal display or the like.
- the input device is, for example, a device such as a keyboard or a mouse that receives a user operation.
- the function of the verification machine 30 is realized by various processing modules described later.
- the processing module is realized by the CPU 31 executing a program stored in the memory 32, for example.
- the program can be downloaded via a network or updated using a storage medium storing the program.
- the processing module may be realized by a semiconductor chip. That is, it is sufficient that there is a means for executing the function performed by the processing module with some hardware and/or software.
- the game server 10, the terminal 20, and the management server 50 can also be configured by an information processing device like the verification machine 30, and the basic hardware configuration is the same as that of the verification machine 30, so description thereof will be omitted. ..
- each of the game server 10 and the terminal 20 writes the verification data (server verification data, user verification data) on the electronic bulletin board.
- the server verification data is data capable of verifying whether or not the game server 10 properly handles at least the data necessary for generating the game random number before the generation of the game random number and after the use of the random number.
- the user verification data is data capable of verifying whether or not the terminal 20 properly handles at least the data necessary for generating the game random number from before the generation of the game random number to after the use of the random number.
- the configuration, operation, and the like of the game system described in the first embodiment are examples, and are not intended to limit the system configuration or the like.
- the verification machine 30 is described as a device separate from the game server 10 and the terminal 20, but the functions of the verification machine 30 may be incorporated in these devices.
- the method for calculating the game random number and hash value described in the above embodiment is an example, and is not intended to be limited to the above description.
- the game ID (gid) may also be input to the hash function when generating the game random number in Expression (12).
- a highly reliable electronic bulletin board based on blockchain technology (an electronic bulletin board in which once written information is not erased or tampered with) is the registration destination of the verification data.
- any information holding means can be used as the registration destination of the verification data as long as it is a bulletin board or device (server) having the same properties as the electronic bulletin board.
- the computer can be made to function as the verification machine 30 by installing the computer program described above in the storage unit of the computer. Furthermore, the computer can execute the random number verification method by causing the computer to execute the computer program described above.
- the program can be recorded in a computer-readable storage medium.
- the storage medium may be a non-transient one such as a semiconductor memory, a hard disk, a magnetic recording medium, an optical recording medium, or the like.
- the present invention can also be embodied as a computer program product.
- step S607 may be executed before step S601.
- the verification machine 30 reads the verification data of the same game ID (gid) and the signature thereof for the game ID (gid) given as the verification target from the electronic bulletin board.
- the verification machine 30 verifies the signatures of the server verification data soutput and the user verification data uoutput (step S11 in FIG. 12).
- the verification machine 30 discards the data that failed the verification, leaves the correct data, and proceeds to the next step, the verification based on the consistency test (step S12).
- the verification machine 30 executes step S600 shown in FIG. To do.
- step S600 the verification machine 30 has the game ID (gid) having a larger value than the specified game ID (gid), and the server verification data or the user verification data with the correct server signature is present on the electronic bulletin board. Check whether or not. If such data exists, the verification machine 30 determines that the game server 10 is a cheating person.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Pinball Game Machines (AREA)
Abstract
生成された乱数の公正性を検証可能とする乱数生成システムを提供する。乱数生成システムは、端末と、少なくとも端末が使用する乱数を生成する、乱数生成サーバと、を含む。乱数生成サーバと端末は、乱数の生成前に、乱数の生成に必要なデータを送受信する。乱数生成サーバは、少なくとも送受信されたデータに基づいて乱数を生成する。乱数の使用後に、乱数生成サーバは署名付きのサーバ検証データを、端末は署名付きのユーザ検証データを、それぞれ電子掲示板に書き込む。サーバ検証データは、乱数生成サーバが乱数の生成前から乱数の使用後までの間で少なくとも乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータである。ユーザ検証データは、端末が乱数の生成前から乱数の使用後までの間で少なくとも乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータである。
Description
本発明は、乱数生成システム及び乱数生成方法に関する。
ネットワーク技術、情報処理技術の進展に伴い、ネットワークを介して種々のサービス(オンラインサービスとも称される)が提供されている。上記サービスの一例として、オンラインゲームが存在する。オンラインゲームには様々な形態が存在し、例えば、ゲームサーバがゲームの進行を担うタイプのオンラインゲーム(例えば、ロールプレイングゲーム)や、ユーザ同士が対戦するフィールドをゲームサーバが提供するタイプのオンラインゲーム(例えば、チェス等のボードゲーム)が存在する。
また、ゲームの娯楽的要素を高める等を目的として、ゲームサーバが乱数を生成することがある(特許文献1参照)。
なお、上記先行技術文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
上述のように、サーバ及び少なくとも一人以上のユーザ間で利用される乱数が生成されることがある。その際、サーバが当該乱数を単独で決定すると、サーバが不正行為を行う余地を残す。具体的には、サーバ及びユーザにとって真に公正は乱数ではなく、サーバにとって都合の良い乱数が生成される可能性がある。
このような問題に対処するため、特許文献1では、サーバとユーザのそれぞれが秘密裏にゲームに使用する乱数の種(sseed、useed)を生成する。また、サーバが生成した初期乱数(サーバ乱数)の封印値(何らかのコミットメント方式のコミットメントプロトコルによって生成された)が電子掲示板に登録される。当該電子掲示板は、ブロックチェーンの技術を基礎として構成されており、信頼性の高い掲示板である。特許文献1では、サーバが上記封印値を電子掲示板に書き込んだ後に、各ユーザはユーザ乱数をサーバに開示する。サーバは、2種類の乱数(初期乱数、ユーザ乱数)を利用して乱数を生成する。その結果、サーバによる恣意的な乱数生成が防止される。なお、特許文献1では、コミットメント方式として乱数のハッシュ値を用いた場合を例示している。この点、本願開示でも同様であり、コミットメント方式として乱数のハッシュ値を用いた場合を説明する。
特許文献1に開示された技術では以下のような問題がある。
第1に、特許文献1では、ブロックチェーン技術を利用した電子掲示板に情報を書き込むため、書き込まれた情報が承認されるには相応の時間(例えば、数分間)が必要となる。その結果、サーバが乱数を生成する際、ハッシュ値を電子掲示板に書き込むが、ユーザは当該書き込まれたハッシュ値を即座に読み出すことができない。そのため、サーバが電子掲示板にサーバ乱数(乱数生成の種)のハッシュ値(封印値)以外の値を電子掲示板に書き込むという不正が可能となる。
第2に、サーバが上記不正を行った場合、第3者からは本当の不正行為者を見つけ出すことができないという問題が起きる。即ち、第3者からみれば、上記サーバの不正行為が本当にサーバによる不正行為なのか、サーバは不正行為を行っていないにも関わらず、ユーザが「サーバが不正行為を行った」と事実とは異なるでたらめを主張しているのか区別がつかない。
本発明は、生成された乱数の公正性を検証可能とすることに寄与する、乱数生成システム及び乱数生成方法を提供することを主たる目的とする。
本発明乃至開示の第1の視点によれば、端末と、少なくとも前記端末が使用する乱数を生成する、乱数生成サーバと、を含み、前記乱数の生成前に、前記乱数生成サーバと前記端末は、前記乱数の生成に必要なデータを送受信し、前記乱数生成サーバは少なくとも前記送受信されたデータに基づいて前記乱数を生成し、前記乱数の使用後に、前記乱数生成サーバは署名付きのサーバ検証データを、前記端末は署名付きのユーザ検証データを、それぞれ電子掲示板に書き込み、前記サーバ検証データは、前記乱数生成サーバが前記乱数の生成前から前記乱数の使用後までの間で少なくとも前記乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータであり、前記ユーザ検証データは、前記端末が前記乱数の生成前から前記乱数の使用後までの間で少なくとも前記乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータである、乱数生成システムが提供される。
本発明乃至開示の第2の視点によれば、端末と、少なくとも前記端末が使用する乱数を生成する、乱数生成サーバと、を含むシステムにおいて、前記乱数の生成前に、前記乱数生成サーバと前記端末が、前記乱数の生成に必要なデータを送受信するステップと、前記乱数生成サーバは少なくとも前記送受信されたデータに基づいて前記乱数を生成するステップと、前記乱数の使用後に、前記乱数生成サーバは署名付きのサーバ検証データを、前記端末は署名付きのユーザ検証データを、それぞれ電子掲示板に書き込むステップと、を含み、前記サーバ検証データは、前記乱数生成サーバが前記乱数の生成前から前記乱数の使用後までの間で少なくとも前記乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータであり、前記ユーザ検証データは、前記端末が前記乱数の生成前から前記乱数の使用後までの間で少なくとも前記乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータである、乱数生成方法が提供される。
本発明乃至開示の各視点によれば、生成された乱数の公正性を検証可能とすることに寄与する、乱数生成システム及び乱数生成方法が、提供される。
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。さらに、本願開示に示す回路図、ブロック図、内部構成図、接続図などにおいて、明示は省略するが、入力ポート及び出力ポートが各接続線の入力端及び出力端のそれぞれに存在する。入出力インターフェイスも同様である。
一実施形態に係る乱数生成システムは、端末101と、少なくとも端末101が使用する乱数を生成する、乱数生成サーバ102と、を含む(図1参照)。乱数生成サーバ102と端末101は、乱数の生成前に、乱数の生成に必要なデータを送受信する。乱数生成サーバ102は、少なくとも送受信されたデータに基づいて乱数を生成する。乱数の使用後に、乱数生成サーバ102は署名付きのサーバ検証データを、端末101は署名付きのユーザ検証データを、それぞれ電子掲示板に書き込む。サーバ検証データは、乱数生成サーバ102が乱数の生成前から乱数の使用後までの間で少なくとも乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータである。ユーザ検証データは、端末101が乱数の生成前から乱数の使用後までの間で少なくとも乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータである。
上記乱数生成システムでは、乱数の使用開始前(例えば、ゲームの開始前)に端末101が使用する乱数(ゲーム乱数)の生成に必要なデータを送受信する。当該乱数の生成に必要なデータには、当該乱数の生成の際に用いられる種となるサーバ乱数、ユーザ乱数が含まれる。上記乱数生成システムでは、乱数の生成前にこれらの種を予め生成し、サーバ乱数やユーザ乱数のハッシュ値を互いに送受信することでこれらの乱数の不正(改ざん等)を検知可能とする。乱数生成サーバ102は、乱数が必要となると、予め生成された種(サーバ乱数、ユーザ乱数)を用いて乱数(ゲーム乱数)を生成し、署名を付してユーザに配布する。乱数の生成が終了すると、乱数生成サーバ102と端末101のそれぞれは、互いに乱数に関する情報を正当に扱っていたか否かを検証可能なデータ(検証データ)を電子掲示板に登録する。このように、上記乱数生成システムでは、乱数の生成前から乱数の使用終了までの間に電子掲示板を用いることなく、互いに必要なデータの送受信を行う。そのため、特許文献1にて問題となる状況(サーバが乱数を生成する際、ハッシュ値を電子掲示板に書き込むが、ユーザは当該書き込まれたハッシュ値を即座に読み出すことができない)が発生しない。その結果、特許文献1の技術で懸念された乱数生成サーバ102による不正行為が防止される。また、上記乱数生成システムでは、当事者(端末101、乱数生成サーバ102)が乱数に関する情報、データを正当に扱っていたか否かを検証可能なデータを電子掲示板に書き込む。その結果、当事者だけでなく第3者が、上記検証可能なデータを解析することで、「乱数」に関する不正行為が行われたか否かを検証できる。また、当該解析により、不正行為者を特定することもできる。
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
第1の実施形態について、図面を用いてより詳細に説明する。
[システム構成概略]
図2は、第1の実施形態に係るゲームシステムの構成の一例を示す図である。図2を参照すると、ゲームシステムは、ゲームサーバ10と、複数の端末20と、検証マシン30と、データ管理システム40と、を含んで構成される。ゲームサーバ10、端末20、検証マシン30及びデータ管理システム40のそれぞれは、インターネット等のネットワークを介して相互に接続されている。
図2は、第1の実施形態に係るゲームシステムの構成の一例を示す図である。図2を参照すると、ゲームシステムは、ゲームサーバ10と、複数の端末20と、検証マシン30と、データ管理システム40と、を含んで構成される。ゲームサーバ10、端末20、検証マシン30及びデータ管理システム40のそれぞれは、インターネット等のネットワークを介して相互に接続されている。
なお、図2に示す構成は例示であって、システムの構成を限定する趣旨ではないことは勿論である。例えば、図2には2台の端末20を図示しているが、システムには1台以上の端末が含まれていればよい。
ゲームシステムを例に取り第1の実施形態の説明を行うが、以下に説明する公正な乱数の生成手法や乱数に関する検証手法は、他のシステムに適用できることは勿論である。例えば、当該手法は、電子的に抽選を行う電子抽選システムの乱数生成に適用されてもよい。即ち、本願開示は、図1に示すような公正な乱数を生成する乱数生成システム、及び/又は、乱数の公平性を検証する乱数検証システムに関する。なお、乱数を使用するのは少なくとも1台以上の端末20である。また、図2では、2台の端末20を図示し、これらの端末20には同じ符号を付しているが、ゲームシステムに含まれる端末20は、後述する乱数に関する機能以外については同じ機能を有していても異なる機能を有していてもよい。
ゲームサーバ10は、ユーザにオンラインゲームを提供する装置である。具体的には、ゲームサーバ10は、ユーザを認証する処理(ログイン/ログアウト処理)、ゲーム進行に係る処理(ゲーム進行処理)等を行う。
第1の実施形態にて想定するオンラインゲームは、ユーザ同士が対戦するフィールドをゲームサーバ10が提供するタイプのゲームを想定する。第1の実施形態では、上記のようなゲームとして、「バックギャモン」を例に取り公正な乱数生成手法及びその検証方法を説明する。なお、バックギャモンの詳細なルールの説明は省略するが、2人のユーザが交互にサイコロを振り、出た目の数字に応じて駒を動かすゲームである。
第1の実施形態に係るゲームサーバ10は、上記サイコロの目の選択に、後述するゲーム乱数を利用する。つまり、ゲームサーバ10は、端末20用の乱数を生成する乱数生成サーバ(乱数生成装置)として動作する。
端末20は、オンラインゲームをプレイするユーザが使用する装置である。例えば、パーソナルコンピュータやスマートフォン等の情報処理装置が、上記端末に相当する。なお、本書において、特段の釈明がなく「ユーザ」と記載した場合は、ユーザが操作する端末20を示す。
検証マシン30は、ゲームシステムにおける乱数の正当性を検証する装置である。より具体的には、検証マシン30は、ゲームサーバ10及び端末20によるゲーム終了後に、上記乱数生成や乱数の使用が公正(正当)なものであったか否かを検証する。検証マシン30は、乱数生成に不正があったのであれば、当該不正を行った主体(ゲームサーバ10、各端末20)を特定する。検証マシン30のより詳細な説明は後述する。
データ管理システム40は、オンラインゲームの運営会社から独立した立場の機関等が運営するシステムである。データ管理システム40は、外部(第3者)に対し、データの書き込み及び読み出しの可能な電子掲示板を提供するシステムである。データ管理システム40は、所謂、ブロックチェーンにより各種情報を管理する。
データ管理システム40は、所定の手数料を支払うことで、どのような主体でも情報を追記できると共に、書き込まれた情報を読み出すことができ、且つ、一度書き込まれた情報は消去されたり改ざんされたりすることのない電子掲示板を提供する。より正確には、データ管理システム40は、外部装置からは電子掲示板のように扱うことのできるデータ入出力に係るインターフェイスを提供するシステムである。なお、本願開示では、ブロックチェーン技術を用いた電子掲示板を例に取り以下の説明を行うが、電子掲示板の実現に用いる技術をブロックチェーンに限定する趣旨ではない。即ち、本願開示の「電子掲示板」はシステムに含まれるゲームサーバ10、端末20、検証マシン30がデータの書き込み及びデータの閲覧を自由にでき、且つ、一度書き込んだデータを削除することが困難なデータベースであればどのようなものであってもよい。換言すれば、例えば、ブロックチェーンをベースにした分散管理台帳システムは上記要件を満たしているので本願開示の「電子掲示板」として用いる事ができる。
なお、以降の説明において、データ管理システム40はゲームサーバ10の運営会社等から独立した機関等により運営、管理されることを前提とするが、データ管理システム40によるデータ管理の正当性が確保される場合には、ゲームサーバ10等の運営会社が上記電子掲示板を提供してもよい。勿論、この場合には、ゲームサーバ10等は手数料の支払いを必要とすることなく、電子掲示板を利用できる。
データ管理システム40は、複数の管理サーバ50-1~50-4から構成されている。図2の例示は、データ管理システム40を構成する管理サーバの台数を4台に限定する趣旨ではない。データ管理システム40は2台以上の管理サーバを含んで構成されていればよい。
データ管理システム40をなす複数の管理サーバ50は、図2に示すように、相互に直接接続されている。即ち、データ管理システム40は、P2P(Peer to Peer)接続された複数の管理サーバ50を含んで構成される。
データ管理システム40では、P2P接続された複数の管理サーバ50それぞれが、外部から受信したデータ(乱数データや売上データ等)を管理するための台帳(以下、データ管理台帳と表記する)を有する。データ管理システム40は、当該データ管理台帳を複数の管理サーバ50に分散して共有し、管理する。
以降の説明において、データ管理システム40とその外部とのデータの授受は、データ管理システム40と、ゲームサーバ10及び端末20の間に限って説明する。但し、実際には、データ管理システム40は、汎用的な電子掲示板を広く第3者に提供するものであるため、ゲームサーバ10等以外との間でもデータの授受が行われる。
また、以降の説明において、ゲームサーバ10や端末20が、データ管理システム40が提供する電子掲示板にデータを書き込むことを単に「電子掲示板に書き込む」と表記する。同様に、ゲームサーバ10や端末20が、データ管理システム40が提供する電子掲示板からデータを読み出すことを単に「電子掲示板から読み出す」と表記する。
[システム動作概略]
次に、図面を参照しつつ、第1の実施形態に係るゲームシステムの動作概略を説明する。図3は、第1の実施形態に係るゲームシステムの動作概略の一例を示すシーケンス図である。
次に、図面を参照しつつ、第1の実施形態に係るゲームシステムの動作概略を説明する。図3は、第1の実施形態に係るゲームシステムの動作概略の一例を示すシーケンス図である。
ゲームサーバ10の提供するオンラインゲームのプレイを希望するユーザは、端末20を操作して、例えば、ゲームサーバ10の運営会社が用意するWEB(ウェブ)ページにアクセスし、ユーザ登録(アカウント登録)を行う(ステップS01)。アカウント登録を終えると、ユーザは、ゲームサーバ10にログインするための認証情報(ユーザ名、パスワード)を取得する。
また、上記ユーザ名やパスワードに係る情報は、ゲームサーバ10が参照可能となるように配置される。例えば、アカウント登録処理が終了すると上記情報がゲームサーバ10に送信され、ゲームサーバ10の内部記憶装置に格納される。あるいは、ゲームサーバ10がアクセス可能なデータベースに上記情報(ユーザ名、パスワード)が格納されていてもよい。
ユーザは、上記取得した認証情報(ユーザ名とパスワードの組み合わせ)をゲームサーバ10に提供して、ゲームサーバ10にログインする(ステップS02)。
ゲームサーバ10は、ユーザから提供された認証情報を用いてユーザ認証を行い、正当なユーザであることが確認できた場合に、当該ユーザを受け入れる。ゲームサーバ10は、正当なユーザに対して、ゲームのなかで各ユーザを一意に識別するためのユーザ識別子(ID;Identifier)を通知する。なお、ゲームサーバ10のサーバ識別子SIDも予め定められており、各ユーザに通知される。
ゲームの開始時に、ゲームサーバ10と端末20は、ゲームを開始するための事前処理(ゲーム開始処理;ステップS03)を実行する。具体的には、乱数の生成前に、ゲームサーバと10と端末20は、乱数の生成に必要なデータの送受信や、取得したデータの検証等を行う。ゲーム開始処理の詳細は後述する。
なお、オンラインゲームにおける、サーバ(ゲームサーバ10)とクライアント(端末20)の間の情報のやり取りには種々の形態が考えられるが、本願開示においてはどのような形態であってもよい。例えば、端末20にゲーム専用のアプリケーションをインストールすることなく、HTML(Hyper Text Markup Language)ソースでの汎用処理によりオンラインゲームを提供する形態であってもよいし、端末20に専用のアプリケーションをインストールする形態であってもよい。
ゲームサーバ10は、ゲームの進行中に乱数の生成が必要か否かを判定する(ステップS04)。なお、以降の説明において、ゲームの進行に使用される乱数を「ゲーム乱数」と表記する。
ゲーム乱数の生成が必要な場合(ステップS04、Yes分岐)、ゲームサーバ10は乱数生成に係る処理を実行する(ステップS05)。その際、ゲームサーバ10は、少なくとも上記端末20との間で送受信されたデータに基づいてゲーム乱数を生成し、当該生成したゲーム乱数に署名を付して各ユーザ(端末20)に送信する。
各ユーザは、取得したゲーム乱数の正当性を検証し、正当であればゲームの進行に使用する(ステップS06)。なお、ゲーム乱数はゲームに参加する各ユーザに共通する乱数である。即ち、同じゲームに参加している各ユーザは、同じゲーム乱数を用いてゲームを行う。ステップS05、S06に係る処理の詳細は後述する。
ゲームサーバ10は、ゲーム終了のために設けられた種々の条件(例えば、タイムオーバ等の条件)を確認することで、ゲームが終了したか否かを判定する(ステップS07)。
ゲームが続行している間(ステップS07、No分岐)は、ゲーム乱数生成の要否が確認され(ステップS04)、ゲーム乱数の生成が必要な場合には当該乱数が生成され続ける。ゲームサーバ10は、ゲームが終了したと判定した場合(ステップS07、Yes分岐)には、その旨を端末20に通知する(ステップS08)。
ゲームが終了した旨を端末20に通知した後、ゲームサーバ10は、ゲーム乱数に関する検証を可能とする署名付きのデータを電子掲示板に書き込む(ステップS09)。ゲームサーバ10が電子掲示板に書き込むデータを「サーバ検証データ」と表記する。サーバ検証データの詳細は後述する。
ゲームが終了した旨の通知を受信したユーザ(端末20)は、ゲーム乱数に関する検証を可能とする署名付きのデータを電子掲示板に書き込む(ステップS10)。端末20が電子掲示板に書き込むデータを「ユーザ検証データ」と表記する。ユーザ検証データの詳細は後述する。
このように、端末20によるゲーム乱数の使用後に、ゲームサーバ10は署名付きのサーバ検証データを、端末20は署名付きのユーザ検証データを、それぞれ電子掲示板に書き込む。2つの検証データが電子掲示板に書き込まれることで、ゲームの当事者(ゲームサーバ10、端末20)だけでなく第3者である検証マシン30が、ゲーム乱数の生成、使用が正当であったか否かを検証可能となる。つまり、ゲームサーバ10や端末20が「検証マシン」として振る舞ってもよい。
このように、ゲームサーバ10及び端末20は、ゲームの終了後に検証データを電子掲示板に書き込み、検証マシン30は、当該検証データを用いてゲーム乱数に関する検証を行う(ステップS11)。検証マシン30による検証動作の詳細は後述する。検証マシン30は、ゲーム乱数に関する検証の結果、ゲームサーバ10や端末20により不正行為が存在すると判断した場合には、例えば、その旨をゲームサーバ10の運営会社等に伝える(抗議する)等の行動を取ることができる。
図3に示すように、第1の実施形態に係るゲームシステムでは、ゲームの進行に必要なデータの授受はゲームサーバ10と端末20の間で直接、送受信される。但し、ゲームサーバ10と端末20におけるデータの送受信は、電子掲示板以外の他のサーバ等を経由して間接的に行われても良い。換言すれば、追記データの承認に時間を要するブロックチェーン技術を基礎とするような電子掲示板を経由せず、データの送受信が即座(リアルタイム)に完了するのであればゲームサーバ10と端末20の間のデータ送受信はどのような形態であってもよい。このように、第1の実施形態では、ゲームの開始からゲームの終了までの間に、ゲームサーバ10や端末20が電子掲示板に何らかのデータを書き込むことはない。
図3の説明では、端末20によるゲームサーバ10からのログアウトについて記載していないが、ユーザは、ゲームを続行する意思のない場合等に、ゲームサーバ10からログアウトする。
[ゲームサーバ]
次に、ゲームサーバ10の詳細について説明する。
次に、ゲームサーバ10の詳細について説明する。
図4は、第1の実施形態に係るゲームサーバ10の処理構成の一例を示すブロック図である。図4を参照すると、ゲームサーバ10は、通信制御部201と、記憶部202と、ゲーム実行制御部203と、を含んで構成される。
通信制御部201は、他の装置との間の通信を実現する手段である。通信制御部201は、他の装置から受信したメッセージ(パケット)を各処理モジュール部に振り分ける、又は、各処理モジュールから取得したメッセージを他の装置に送信する手段でもある。
記憶部202は、例えば、ゲーム実行制御部203の処理等に必要なデータを記憶する。
ゲーム実行制御部203は、ゲーム進行に関する制御、管理を担う手段である。ゲーム実行制御部203は、ユーザ認証部211、乱数管理部212という2つのサブモジュールを含んで構成される。
ユーザ認証部211は、ユーザがゲームサーバ10にログインする際、又は、ゲームサーバ10からログアウトする際に起動するサブモジュールである。なお、ユーザ認証の方式はどのようなものであっても良い。例えば、上述のようにパスワードを用いた認証方式でもよいし、ユーザの生体情報(指紋情報等)を用いた生体認証であってもよい。
ユーザ認証部211は、端末20から提供されるデータ(被認証データ)とデータベース等に格納されたデータ(照合データ)を比較することで、端末20を利用するユーザの認証を行う。
ゲーム実行制御部203は、ユーザ認証部211による認証結果に応じて、当該ユーザにオンラインゲームを提供する、又は、当該ユーザによるオンラインゲームのプレイを拒絶する。
乱数管理部212は、ゲームの進行に伴う乱数を管理するサブモジュールである。ゲームサーバ10による乱数に関わる処理は、乱数管理部212により実行される。乱数管理部212の動作は、ゲームサーバ10の動作として後述する。
[端末]
次に、端末20の詳細について説明する。
次に、端末20の詳細について説明する。
図5は、第1の実施形態に係る端末20の処理構成の一例を示すブロック図である。図5を参照すると、端末20は、通信制御部301と、記憶部302と、ゲーム実行部303と、を含んで構成される。
通信制御部301は、他の装置との間の通信を実現する手段である。通信制御部301は、他の装置から受信したメッセージ(パケット)を各処理モジュール部に振り分ける、又は、各処理モジュールから取得したメッセージを他の装置に送信する手段でもある。
記憶部302は、例えば、ゲーム実行部303の処理等に必要なデータを記憶する。
ゲーム実行部303は、ユーザによるゲームプレイを実現する手段である。より具体的には、ゲーム実行部303は、キーボードやマウス等の入力手段によりユーザの操作を入力する。ゲーム実行部303は、ユーザの操作に応じた情報をゲームサーバ10に送信する。例えば、ユーザがゲームサーバ10にログインする場合には、認証情報(例えば、ユーザ名とパスワードの組み合わせ)がゲームサーバ10に送信される。また、ユーザがゲームをプレイしている間は、ユーザによるキー操作等に係る情報がゲームサーバ10に送信される。
ゲーム実行部303は、乱数管理部311というサブモジュールを含んで構成される。乱数管理部311は、ゲームの進行に伴う乱数を管理するサブモジュールである。端末20による乱数に関わる処理は、乱数管理部311により実行される。乱数管理部311の動作は、端末20の動作として後述する。
[検証マシン]
次に、検証マシン30の詳細について説明する。
次に、検証マシン30の詳細について説明する。
図6は、第1の実施形態に係る検証マシン30の処理構成の一例を示すブロック図である。図6を参照すると、検証マシン30は、通信制御部401と、記憶部402と、乱数検証部403と、を含んで構成される。
通信制御部401は、他の装置との間の通信を実現する手段である。通信制御部401は、他の装置から受信したメッセージ(パケット)を各処理モジュール部に振り分ける、又は、各処理モジュールから取得したメッセージを他の装置に送信する手段でもある。
記憶部402は、例えば、乱数検証部403の処理等に必要なデータを記憶する。
乱数検証部403は、電子掲示板に書き込まれた検証データ及びその署名を用いて、ゲーム乱数の公正性を検証する手段である。検証マシン30による乱数の正当性に関わる処理は、乱数検証部403により実行される。
乱数検証部403は、一貫性検証部411というサブモジュールを含んで構成される。一貫性検証部411は、電子掲示板から取得した検証データ及びその署名に関する一貫性テストを実行する手段である。なお、一貫性検証部411の詳細は後述する。
[管理サーバ]
次に、データ管理システム40をなす管理サーバ50の詳細について説明する。
次に、データ管理システム40をなす管理サーバ50の詳細について説明する。
図7は、第1の実施形態に係る管理サーバ50の処理構成の一例を示すブロック図である。図7を参照すると、管理サーバ50は、通信制御部501と、記憶部502と、台帳管理部503と、を含んで構成される。
通信制御部501は、他の装置との間の通信を実現する手段である。通信制御部501は、他の装置から受信したメッセージ(パケット)を各処理モジュール部に振り分ける、又は、各処理モジュールから取得したメッセージを他の装置に送信する手段でもある。
記憶部502は、各処理モジュールの処理に必要な情報を記憶する手段である。記憶部502には、データを一時的に記憶する一時記憶領域とデータ管理台帳を記憶する領域が含まれる。
台帳管理部503は、電子掲示板へのゲームサーバ10や端末20からのアクセス要求を処理する手段である。具体的には、例えば、ゲームサーバ10から電子掲示板へのサーバ検証データの書き込み要求を受け付けると、記憶部502に格納されているデータ管理台帳に当該データを追記する。また、台帳管理部503は、外部装置(例えば、検証マシン30)から電子掲示板の読み出しに係る要求を受け付けると、当該要求に付随するトランザクションIDをキーとしてデータ管理台帳を検索し、当該IDが付されたデータ(検証データ)を抽出する。台帳管理部503は、抽出した検証データを外部装置に送信する。
台帳管理部503は、ブロック生成部511とブロック検証部512の2つのサブモジュールを有する。
ブロック生成部511は、データ管理台帳を他の管理サーバ50にて共有し、管理するためのブロックを生成する。
台帳管理部503は、ゲームサーバ10からサーバ検証データを取得すると、当該取得したサーバ検証データを記憶部502の一時記憶領域に保存する。その後、ブロック生成部511は、直前に生成されたブロックのヘッダと、当該一時記憶領域に保存されたデータ(例えば、検証データや売上データ;データ管理台帳への追記データ)から、「正当性保証データ」を生成する。
例えば、ブロック生成部511は、追記データ、前ブロックのヘッダ及び正当性保証データのハッシュ値を計算すると、当該計算されたハッシュ値を所定の規則に適合するものにする値(所謂、ノンス値又はナンス値)を正当性保証データとして生成する。また、正当性保証データには、ブロックを生成した管理サーバ50の電子署名が含まれる。
ブロック生成部511は、直前に生成されたブロックのヘッダと上記の正当性保証データからなるヘッダを有するブロックを生成する。具体的には、図8に示すようなブロックが生成される。
ブロック生成部511によるブロック生成が終了すると、当該ブロックはデータ管理台帳に追記される。また、ブロック生成部511は、生成したブロックを、通信制御部501を介して他の管理サーバ50に配布(送信)する。
他の管理サーバ50から上記ブロックを受信した管理サーバ50の通信制御部501は、取得したブロックをブロック検証部512に引き渡す。
ブロック検証部512は、自装置の記憶部502に格納されているデータ管理台帳(ブロック)に基づき、他の管理サーバ50が送信するブロックの正当性を検証する手段である。具体的には、ブロックを受信した管理サーバ50のブロック検証部512は、当該受信したブロックの正当性を、ブロックを送信した管理サーバ50が生成したブロックと自装置(ブロックを受信した管理サーバ50)が管理している直前に生成されたブロックのヘッダを用いて検証する。
初めに、ブロック検証部512は、受信したブロックに含まれる正当性保証データに送信元となる管理サーバ50の電子署名が付与されていることを確認し、受信したブロックに記載された「前ブロックのヘッダ」を自身が管理するデータ管理台帳に基づき特定する。その後、ブロック検証部512は、受信したブロック内の追記データと前ブロックのヘッダを入力として、ヘッダ内の正当性保証データの整合がとれているか否か(正当性保証データが所定の規則に適合するか否か)を確認する。
ブロック検証部512は、正当性保証データの整合性が確認できれば、他の管理サーバ50が送信するブロックは正当であると判定する。一方、正当性保証データの整合性が確認できなければ、ブロック検証部512は、他の管理サーバ50が送信するブロックは不当であると判定する。
ブロック検証部512が、他の管理サーバ50が送信するブロックが正当であると判定した場合には、台帳管理部503は、記憶部502のデータ管理台帳を更新する(追記データを含むブロックを追記する)。つまり、ブロック検証部512は、他の管理サーバ50の台帳へのデータの追記を、自装置の台帳に反映する処理を行う。なお、ブロック検証部512は、他の管理サーバ50が送信するブロックが不当であると判定した場合には、当該ブロックを破棄する。
また、ブロック検証部512は、検証結果(受信したブロックは正当、不当)に関する情報を、ブロックを送信してきた管理サーバ50に通知する。
管理サーバ50の動作をまとめると図9に示すシーケンス図のとおりとなる。なお、図9には、管理サーバ50-1がゲームサーバ10からサーバ検証データを取得し、当該データをデータ管理台帳に追記する場合を示す。
管理サーバ50-1は、ゲームサーバ10からサーバ検証データを取得すると(ステップS101)、当該データを自装置の記憶部502の一時記憶領域に複製する(ステップS102)。
その後、一時記憶領域に複製されたデータが所定量蓄積される等の条件により、管理サーバ50-1は、一時記憶領域に記憶されたデータに基づき、上述のブロックを生成する(ステップS103)。
その後、管理サーバ50-1は、生成したブロックを他の管理サーバ50-2~50-4に向けて送信する(ステップS104)。
ブロックを受信した管理サーバ50-2~50-4のそれぞれは、管理サーバ50-1が生成したブロックを個別に検証する(ステップS105)。
管理サーバ50-2~50-4のそれぞれは、ブロックの正当性が確認できた場合に自装置のデータ管理台帳を更新する(ステップS106)。
このように、データ管理システム40をなす複数の管理サーバ50のうちの少なくとも1つの管理サーバ50によるデータ管理台帳へのデータの追記は、他の管理サーバ50のデータ管理台帳に反映される。
なお、他の管理サーバ50から送信されたブロックの正当性が確認できない場合には、当該ブロックを破棄すると共に、管理サーバ50はその旨を、ブロックを送信する管理サーバ50に通知する。当該通知を受けた管理サーバ50の台帳管理部503は、ブロック送信前のデータ管理台帳の状態を取り戻す。
次に、図3に示すステップS03の動作について説明する。
上述のように、ゲームサーバ10と端末20は、ゲームの開始前に事前処理を行う。以下、当該事前処理(ゲーム開始処理)の詳細について説明する。
図10は、第1の実施形態に係るゲームシステムにおけるゲーム開始処理の動作の一例を示すシーケンス図である。
ゲームサーバ10は、ゲームID(gid)を生成する(ステップS201)。ゲームIDは、ユーザ(端末20)が参加するゲームの識別子である。ゲームサーバ10は、様々なユーザと複数のゲームを行う。ゲームサーバ10は、当該複数のゲームを区別するために上記ゲームIDを使用する。つまり、ゲームサーバ10は、ゲームID(gid)によりゲーム乱数の使用機会を管理する。同じゲームID(gid)はゲーム乱数の同じ使用機会(ゲーム)を意味する。即ち、本願開示において、ゲームIDは「乱数生成セッション」を識別する識別子として機能する(ゲームIDは乱数生成セッションIDである)。
ゲームサーバ10は、新たなゲームを開始するごとにゲームIDをインクリメントすることでゲームIDの重複を回避する。上述のように、ゲームサーバ10は、ゲームの開始ごとにゲームIDをインクリメントする(下記式(1)参照)。
[式1]
[式1]
ゲームサーバ10は、サーバ乱数を生成する(ステップS202)。ゲームサーバ10は、λビットの乱数をサーバ乱数sseedとして生成する(下記式(2)参照)。サーバ乱数sseedは、後述するゲーム乱数の基礎(種)となる乱数の1つである。
[式2]
[式2]
なお、本願開示にて使用可能なハッシュ関数(Hash)として、例えば、SHA-2(Secure Hash Algorithm 2)やKeccak(ケチャック)といったハッシュ関数が利用できる。また、式(3)等で使用されるハッシュ関数の性質を鑑みれば、サーバ乱数sseed等を封印する際に利用する関数は、ハッシュ関数のみならず、コミットメント関数と呼ばれる、「データを封印(秘匿)」する機能と、「データを開封(変更されていないことを検証)」する機能があるもので代用することができる。
また、以降の説明では、ゲームサーバ10と端末20で同じハッシュ関数を使用することを前提とする。そのため、ゲームサーバ10と端末20のそれぞれに使用する共通して使用するハッシュ関数を設定しておく。但し、ゲームサーバ10と端末20は、互いに異なるハッシュ関数を用いてもよく、この場合は、自身が使用するハッシュ関数と相手が使用するハッシュ関数の情報をゲームサーバ10、端末20に設定しておく。あるいは、ゲームサーバ10と端末20が使用するハッシュ関数に関する情報交換を行い互いに使用するハッシュ関数を通知してもよい。
ここで、ゲームに参加するユーザの数をn(nは正の整数、以下同じ)とする。以下の説明では、ゲームに参加するユーザのユーザIDを、サフィックスi(i=1~n)を用いて表記する。ユーザiに対応するユーザIDはIDiであり、全ユーザのユーザIDは、(ID1、ID2、・・・、IDn)と表記できる。
ゲームサーバ10は、ゲームID(gid)、ゲームに参加する全ユーザのID(ID1、ID2、・・・、IDn)、上記サーバ乱数のハッシュ値comsseedをゲームに参加する各ユーザ(端末20)に送信する(ステップS204)。各ユーザがゲームサーバ10にログインする際に各ユーザに対して付与されたユーザIDが、ゲームサーバ10から他のユーザ(端末20)にも通知される。
上記ゲームサーバ10の動作に並行して、端末20は、ユーザ乱数を生成する(ステップS301)。端末20は、λビットの乱数をユーザ乱数useedとして生成する(下記式(4)参照)。 ユーザ乱数useedは、後述するゲーム乱数の基礎(種)となる乱数の1つである。
[式4]
[式4]
各端末20は、上記ユーザ乱数のハッシュ値comuseedをゲームサーバ10に送信する(ステップS303)。
ゲームサーバ10は、ゲームに参加する全てのユーザからユーザ乱数のハッシュ値comuseedi~comuseednを取得すると、全ハッシュ値(サーバ乱数のハッシュ値comsseed、ユーザ乱数のハッシュ値comuseedi~comuseedn)を含む情報の署名を生成する(ステップS205)。具体的には、ゲームサーバ10は、下記の式(6)により当該署名sigidcomseedsを生成する。
[式6]
[式6]
なお、「Sig」は署名を生成する関数を示す(以下、同じ)。
式(6)に示すように、ゲームサーバ10は、ゲームID(gid)、ユーザ識別子(ID1~IDn)、サーバ乱数のハッシュ値comsseed、ユーザ乱数のハッシュ値(comuseedi~comuseedn)を連結し、当該連結データのハッシュ値を計算する。その後、ゲームサーバ10は、計算したハッシュ値を自身(ゲームサーバ10)の秘密鍵sskで暗号化し、署名を生成する。
なお、以降の説明おいて、式(6)により生成される署名を「全ハッシュ値の署名」と表記する。また、署名の生成や検証に必要な鍵(秘密鍵、公開鍵)は予め生成され、ゲームサーバ10や端末20に配布、公開されているものとする。
ゲームサーバ10は、全ハッシュ値の署名sigidcomseedsと、各端末20から取得したユーザ乱数のハッシュ値comuseedi~comuseednを各端末20に送信する(ステップS206)。
各端末20は、全ハッシュ値の署名sigidcomseedsの検証を行う(ステップS304)。具体的には、各端末20は、下記の式(7)によりゲームサーバ10が生成した全ハッシュ値の署名に対応するダイジェストを生成する。
[式7]
[式7]
なお、式(7)において、idsは、全ユーザのユーザID(ID1、・・・、IDn)の総称である(ids ←(ID1、・・・、IDn))。また、comseedsは、サーバ乱数のハッシュ値、ユーザ乱数のハッシュ値の総称である(comseeds ←(comsseed、comuseedi、・・・、comuseedn))。
次に、各端末20は、全ハッシュ値の署名sigidcomseedsをゲームサーバ10の公開鍵spkを用いて復号する(ダイジェストを生成する)。各端末20は、上記生成したダイジェストと復号したダイジェストを比較し、両者が一致するか否かにより全ハッシュ値sigidcomseedsの署名を検証する。上記検証の動作をまとめると、下記の式(8)のとおりとなる。
[式8]
[式8]
なお、「Ver」は署名を検証する関数を示す(以下、同じ)。
署名が不当であれば(ステップS305、No分岐)、各端末20は、ゲームを終了(中断)する。
署名が正当であれば(ステップS305、Yes分岐)、各端末20は、先に生成したユーザ乱数useedの署名を生成する(ステップS306)。具体的には、各端末20は、下記の式(9)によりユーザ乱数の署名siguseedを生成する。
[式9]
[式9]
なお、式(9)において、uskiは、ユーザiの秘密鍵である。各端末20は、自身のユーザ乱数と対応する署名(ユーザ乱数の署名siguseed)をゲームサーバ10に送信する(ステップS307)。
このように、ユーザ(端末20)が、全ハッシュ値の署名sigidcomseedsの検証を行うことで、ユーザは、少なくともサーバ乱数のハッシュ値comsseedと自身のユーザ乱数のハッシュ値comuseedが用いられて全ハッシュ値の署名が生成されていることが確認できる。
ゲームサーバ10は、全ユーザ(端末20)からユーザ乱数等を取得すると、2つの検証を行う(ステップS207、S208)。
はじめに、ゲームサーバ10は、各ユーザについて、取得したユーザ乱数の署名siguseedの検証を行う(ステップS207)。具体的には、ゲームサーバ10は、下記の式(10)によりユーザ乱数の署名を検証する。
[式10]
[式10]
式(10)において、upkkは、ユーザkの公開鍵である(k=1~n)。
次に、ゲームサーバ10は、各端末20からステップS303にて取得したユーザ乱数のハッシュ値comuseedと、ステップS307にて取得したユーザ乱数useedから生成したハッシュ値(Hash(useed))と、が一致するか否かによりユーザ乱数の検証を行う(ステップS208)。具体的には、ゲームサーバ10は、下記の式(11)によりユーザ乱数を検証する。
[式11]
[式11]
ゲームサーバ10は、ユーザ乱数のハッシュ値comuseedとユーザ乱数useedから生成したハッシュ値(Hash(useed))が一致すれば、ユーザ乱数は「正当」と判定する。対して、ゲームサーバ10は、ユーザ乱数のハッシュ値comuseedとユーザ乱数useedから生成したハッシュ値(Hash(useed))が不一致であれば、ユーザ乱数は「不当」と判定する。
ゲームサーバ10は、2つの検証において共に「正当」の結果が得られない場合(ステップS209、No分岐)、ゲームを終了(中断)する。つまり、ゲームサーバ10は、全ユーザ(ユーザID1~ユーザIDn)のうちいずれかのユーザであるユーザkの署名が不当であり、且つ、ユーザ乱数及びそのハッシュ値が不整合であれば、ゲームを停止する。
ゲームサーバ10は、2つの検証において共に「正当」の結果が得られた場合(ステップS209、Yes分岐)、ゲーム開始処理(ゲームの開始に先立つ事前処理)を終了し、ゲームを開始する。
このように、ゲームシステムでは、ゲーム乱数の生成前に、ゲームサーバ10がサーバ乱数を生成すると共に、サーバ乱数の封印値を端末20に送信する。また、端末20はユーザ乱数を生成すると共に、ユーザ乱数の封印値をゲームサーバ10に送信する。さらに、ゲームサーバ10は、少なくともユーザ乱数の封印値及びサーバ乱数の封印値を含む情報の署名(全ハッシュ値の署名)を端末20に送信する。端末20は、当該署名の検証に成功すると、署名付きのユーザ乱数をゲームサーバ10に送信する。ゲームサーバ10は、ユーザ乱数の署名を検証しユーザ乱数の送信主体の正当性を確認する。また、ゲームサーバ10は、取得したユーザ乱数からハッシュ値を計算し、先に取得した対応するハッシュ値と比較することでユーザが当初に生成したユーザ乱数(図10のステップS301で生成された乱数)が改ざんされていないことを確認する。
続いて、図3に示すステップS05、S06の動作について説明する。上述のように、ゲームサーバ10は、ゲームの進行と共にゲーム乱数を生成する。当該ゲーム乱数は、各端末20にて使用される。以下、ゲームサーバ10によるゲーム乱数の生成と端末20によるゲーム乱数の受け入れについて説明する。
図11は、第1の実施形態に係るゲームシステムにおけるゲーム乱数生成及び当該乱数の受け入れ動作の一例を示すシーケンス図である。
ゲームサーバ10は、ゲームID(gid)、ゲーム乱数の序数(j)、ゲーム乱数(r[j])を連結し、当該連結データのハッシュ値を自身の秘密鍵sskで暗号化することで、ゲーム乱数r[j]の署名ssigr[j]を生成する。
ゲームサーバ10は、ゲームID(gid)、ゲーム乱数r[j]、ゲーム乱数の署名ssigr[j]を各端末20に送信する(ステップS403)。
署名が正当でなければ(ステップS502、No分岐)、各端末20はゲームを終了する。署名が正当であれば(ステップS502、Yes分岐)、各端末20はゲーム乱数r[j]を使用する(ステップS503)。
このように、ゲームサーバ10は、少なくとも送信されたユーザ乱数とサーバ乱数に基づいてゲーム乱数を生成すると共に、署名付きのゲーム乱数を端末に送信する。端末20は、ゲーム乱数の署名が正当である場合に、送信されたゲーム乱数を使用する。端末20は、ゲーム乱数r[j]の署名を検証することで、当該乱数が改ざんされていないこと、当該乱数の送信主体が正当であること、を検証する。
続いて、図3に示すステップS09やステップS10にて電子掲示板(データ管理システム40)に書き込まれるデータについて説明する。
式(15)を参照すると、サーバ検証データsoutputには、ゲームID(gid)と、サーバID(SID)と、サーバ乱数sseedと、ユーザ乱数useedk及び対応する署名siguseedk(但し、k∈{1、・・・n})が含まれる。
式(17)を参照すると、ユーザ検証データuoutputには、ゲームID(gid)と、自身のユーザID(IDi)と、自身のユーザIDを含む全ユーザID(ID1・・・IDn)と、全ハッシュ値comseedsと、全ハッシュ値の署名sigidcomseedsと、ゲーム乱数r[j]及び対応する署名ssigr[j](但し、j∈{1、・・・、max})が含まれる。式(17)に記載した「max」は、ゲームサーバ10が一回のゲーム(同一のゲームID)で生成したゲーム乱数の数である。
サーバ検証データ及びその署名とユーザ検証データ及びその署名は、ゲームが終了するとデータ管理システム40に書き込まれる(図10のステップS09、ステップS10)。
次に、検証マシン30の動作について説明する。
検証マシン30は、ゲームシステムおける乱数生成が公正に行われたのか否かを判定する。また、検証マシン30は、乱数生成に不正があったのであれば、当該不正を行った主体(ゲームサーバ10、各端末20)を特定する。具体的には、検証マシン30は、図12に示すように、5段階の検証によりゲームシステムにおける乱数生成が公正であったか否かを判定する。
以下、図12に示す5段階の検証を中心に検証マシン30の動作についてその詳細を説明する。
[検証データの読み出し]
検証マシン30は、ゲーム乱数を検証する際、電子掲示板から検証対象となる検証データ及びその署名を読み出す。具体的には、検証マシン30は、検証の対象となるゲームID(gid)を有するサーバ検証データ及び対応する署名、ユーザ検証データ及び対応する署名のそれぞれを電子掲示板から読み出す。検証マシン30は、当該読み出したデータに基づき乱数生成における不正の有無と、不正があった場合のその行為者(不正行為者)を特定する。なお、検証対象となるゲームID(gid)は、例えば、システム管理者が検証マシン30に入力する。
検証マシン30は、ゲーム乱数を検証する際、電子掲示板から検証対象となる検証データ及びその署名を読み出す。具体的には、検証マシン30は、検証の対象となるゲームID(gid)を有するサーバ検証データ及び対応する署名、ユーザ検証データ及び対応する署名のそれぞれを電子掲示板から読み出す。検証マシン30は、当該読み出したデータに基づき乱数生成における不正の有無と、不正があった場合のその行為者(不正行為者)を特定する。なお、検証対象となるゲームID(gid)は、例えば、システム管理者が検証マシン30に入力する。
[検証データの署名の検証]
検証マシン30は、上記読み出した検証データ(サーバ検証データ、ユーザ検証データ)に対応する署名の検証を行う(図12のステップS11)。
検証マシン30は、上記読み出した検証データ(サーバ検証データ、ユーザ検証データ)に対応する署名の検証を行う(図12のステップS11)。
検証マシン30は、当該署名の検証を行うことで、ゲームの参加者(当事者)以外の第3者が電子掲示板に書き込んだ検証データを排除する。例えば、検証マシン30は、検証データの署名を検証することで、ゲームサーバ10になりすました第3者が書き込んだサーバ検証データのような不正なデータを排除する。
[一貫性テストに基づく検証]
検証マシン30は、検証データ及びその署名を用いて、一貫性テストの結果に基づく検証を行う(図12のステップS12)。
検証マシン30は、検証データ及びその署名を用いて、一貫性テストの結果に基づく検証を行う(図12のステップS12)。
一貫性テストとは、検証データ(サーバ検証データ、ユーザ検証データ)の生成主体が乱数の生成前から乱数の使用後までの間で乱数の生成に必要なデータを正当に扱っているか否かを判定するテストである。換言すれば、一貫性テストは、ゲームサーバ10や端末20が、ゲーム乱数の生成、検証に関し、必要なデータ(例えば、ユーザ乱数、サーバ乱数、全ハッシュ値の署名等)の取り扱いに関して一貫性を有しているか否かを判定するテストである。即ち、ゲーム開始時、ゲーム中(ゲーム乱数生成時)、ゲーム終了時の各ステージにおいて、ゲーム乱数に関するデータの取り扱いが一貫している(ステージによって取り扱いを変えない、又は、意図的にデータを入れ替えない)ことを検証するためのテストが一貫性テストである。
図13は、検証マシン30による一貫性テストの結果に基づく検証動作の一例を示すフローチャートである。ゲーム乱数に不正が行われた場合、検証マシン30は、一貫性テストの結果に基づき、ゲームサーバ10又は端末20のいずれが不正行為者であるか判定する。即ち、検証マシン30は、一貫性テストに失敗した場合にゲーム乱数に関して何らかの不正が存在すると判断し、不正行為者を特定する。
はじめに、検証マシン30は、ユーザ検証データの一貫性の有無を確認する(ステップS601)。具体的には、検証マシン30は、電子掲示板から取得した各ユーザ検証データ及び対応する署名のそれぞれを入力パラメータとし、一貫性検証部411を起動する。一貫性検証部411は、取得したユーザ検証データ及びその署名の一貫性を判定し、その結果(一貫性あり、一貫性なし)を出力する。
一貫性検証部411は、3つの署名(ユーザ検証データuoutputの署名siguoutput、全ハッシュ値の署名sigidcomseeds及びゲーム乱数の署名ssigr[j])が全て正当であれば、判定対象のユーザ検証データは「一貫性あり」と判定する。対して、一貫性検証部411は、上記3つの署名のうち少なくとも1つが不当であれば、判定対象のユーザ検証データは「一貫性なし」と判定する。
上記全ハッシュ値の署名sigidcomseeds及びゲーム乱数の署名ssigr[j]は、一貫性検証対象のユーザ検証データuoutputに含まれる署名である。
ここで、実際には、一貫性テストの結果に基づく検証(図12のステップS12)の前に、ユーザ検証データの署名が検証(同図のステップS11)されているので、ユーザ検証データの署名は正当であることが確認されている。従って、実質的には、一貫性検証部411は、署名の正当性が検証されたユーザ検証データuoutputに含まれる2つの署名(全ハッシュ値の署名sigidcomseeds、ゲーム乱数の署名ssigr[j])のそれぞれが正当であれば「一貫性あり」と判定し、いずれかの署名が不当であれば「一貫性なし」と判定する。
検証マシン30は、ユーザ検証データに一貫性がなければ、当該ユーザ検証データを電子掲示板に書き込んだユーザ(端末20)が不正行為者であると判定する(ステップS601、No分岐)。
その理由は、以下のとおりである。全ハッシュ値の署名sigidcomseedsは、ゲーム開始処理にてその正当性が検証されている(図10のステップS305)。また、ゲーム乱数の署名ssigr[j]は、ゲーム中にその正当性が検証されている(図11のステップS502)。いずれの検証においても署名が「不当」であれば、ゲームは中断され、本来、ユーザ検証データuoutputが電子掲示板に書き込まれることがない。
従って、不当な署名がユーザ検証データuoutputに含まれたという事実は、当該ユーザ検証データを作成したユーザが必要な検証(図10のステップS305、図11のステップS502)を怠ったか、意図的に正当な署名を不当な署名に入れ替えたことを意味する。即ち、ユーザ検証データに一貫性がなければ、ユーザが不正行為者となる。
次に、検証マシン30は、サーバ検証データの一貫性の有無を確認する(ステップS601、Yes分岐;ステップS602)。
具体的には、検証マシン30は、電子掲示板から取得したサーバ検証データ及び対応する署名のそれぞれを入力パラメータとし、一貫性検証部411を起動する。一貫性検証部411は、取得したサーバ検証データ及びその署名の一貫性を判定しその結果(一貫性あり、一貫性なし)を出力する。
一貫性検証部411は、2つの署名(サーバ検証データsoutputの署名sigsoutput、各ユーザに関するユーザ乱数のハッシュ値の署名siguseedi)が正当である場合に、判定対象のサーバ検証データは「一貫性あり」と判定する。
対して、一貫性検証部411は、上記2つの署名のいずれかが不当な場合に、判定対象のサーバ検証データは「一貫性なし」と判定する。
なお、上記各ユーザに関するユーザ乱数のハッシュ値の署名siguseedは、一貫性テストの対象となっているサーバ検証データsoutputに含まれる署名である。
ここで、実際には、一貫性テストに基づく検証(図12のステップS12)の前に、サーバ検証データの署名が検証(同図のステップS11)されているので、サーバ検証データの署名は正当であることが確認されている。従って、実質的には、一貫性検証部411は、署名の正当性が検証されたサーバ検証データsoutputに含まれるユーザ乱数の署名siguseedが正当であれば、「一貫性あり」と判定する。
検証マシン30は、サーバ検証データに一貫性がなければ、サーバ検証データを電子掲示板に書き込んだゲームサーバ10が不正行為者であると判定する(ステップS602、No分岐)。
その理由は、以下のとおりである。ユーザ乱数の署名siguseedは、ゲーム開始処理にてゲームサーバ10が正当性を検証する署名である(図10のステップS207)。当該署名が不当であれば、ゲームは中断する(ステップS209、No分岐)。従って、ゲームが続き当該ゲームが終了した際に生成されたサーバ検証データsoutputに含まれるユーザ乱数の署名siguseedが不当であることは、ゲームサーバ10が当該署名の検証を怠っているか、当該署名を生成時の署名から別の署名に入れ替えていることを意味する。即ち、サーバ検証データに一貫性がなければ、ゲームサーバ10が不正行為者となる。
次に、検証マシン30は、一貫性のあるサーバ検証データが複数存在するか否かを判定する(ステップS602、Yes分岐;ステップS603)。
具体的には、検証マシン30は、同じゲームID(gid)とサーバID(sid)を持つ複数のサーバ検証データsoutputが電子掲示板に書き込まれていたか否かを判定する。同じゲームID(gid)とサーバID(sid)を持つ複数のサーバ検証データsoutputが電子掲示板に書き込まれていれば、検証マシン30は、ゲームサーバ10が不正行為者であると判定する。
本来、ゲームID(gid)は、ゲーム開始時処理にその値がインクリメントされ(図10のステップS201)、ゲームが異なると異なるゲームID(gid)が付与される。また、一回のゲームが終了すると1個のサーバ検証データsoutputが電子掲示板に書き込まれるのが原則である。
従って、同じゲームID(gid)を含む複数のサーバ検証データsoutputが電子掲示板に書き込まれたという事実は、ゲームサーバ10が適切にゲームID(gid)を管理、使用していないことを示す。そのため、検証マシン30は、ゲームサーバ10が不正行為者であると判定する(ステップS603、No分岐)。
次に、検証マシン30は、同一のユーザに関して一貫性のあるユーザ検証データが複数存在するか否かを判定する(ステップS603、Yes分岐;ステップS604)。
具体的には、検証マシン30は、同じゲームID(gid)とユーザIDを持つ複数のユーザ検証データuoutputが電子掲示板に書き込まれていたか否かを判定する。同じゲームID(gid)と同じユーザIDを持つ複数のユーザ検証データuoutputが電子掲示板に書き込まれていれば、検証マシン30は、ゲームサーバ10が不正行為者であると判定する(ステップS604、No分岐)。
サーバ検証データと同様に、ユーザ検証データに関しても同一のユーザに関して1つのユーザ検証データが電子掲示板に書き込まれるのが原則である。ここで、ゲームID(gid)を決定しているのは、ゲームサーバ10である。従って、上記状況(同じゲームID(gid)とユーザIDを持つ複数のユーザ検証データuoutputが存在)を作り出しているのはゲームサーバ10である。即ち、ゲームID(gid)を管理しているのはゲームサーバ10であるので、同一ユーザに関する、ゲームID(gid)が重複する複数のユーザ検証データが存在すれば、ゲームサーバ10が不正行為者となる。
このように、検証マシン30は、同一の前記乱数の使用機会(同じゲームID)に関し、一貫性のある複数のサーバ検証データが存在する場合(ステップS603)、及び、一貫性のある複数のユーザ検証データが存在する場合(ステップS604)のいずれの場合においてもゲームサーバ10を不正行為者と判定する。
次に、検証マシン30は、一貫性のあるサーバ検証データが電子掲示板に不存在、且つ、各ユーザのユーザ検証データには一貫性があるか否かを判定する(ステップS605)。
具体的には、指定されたゲームID(gid)を持つサーバ検証データが電子掲示板から取得できないが、当該ゲームID(gid)を持つユーザ検証データが電子掲示板から取得できるような状況が上記判定の対象である。
この場合、検証マシン30は、ゲームサーバ10が不正行為者であると判定する(ステップS605、No分岐)。ゲームサーバ10は、ゲーム終了の際に、一貫性のあるサーバ検証データを電子掲示板に書き込む義務がある。従って、一貫性のあるサーバ検証データが電子掲示板から得られないという事実は、ゲームサーバ10が義務に反した不正行為者であることを示す。なお、一貫性のあるユーザ検証データは電子掲示板に書き込まれているので、ゲームは正常に終了していることを意味する(図3のステップS08)。
次に、検証マシン30は、一貫性のあるユーザ検証データが電子掲示板に不存在、且つ、サーバ検証データには一貫性があるか否かを判定する(ステップS605、Yes分岐;ステップS606)。
具体的には、指定されたゲームID(gid)を持つ、ゲームに参加した全ユーザのうち少なくとも1以上のユーザ検証データが電子掲示板から取得できず、当該ゲームID(gid)を持つサーバ検証データが電子掲示板から取得できるような状況が上記判定の対象である。
例えば、ゲームに参加したユーザの数が10(n=10)である場合を考える。この場合、10個の一貫性のあるユーザ検証データと1個の一貫性のあるサーバ検証データが電子掲示板に書き込まれている必要がある。しかし、サーバ検証データに問題はないが、例えば、9個の一貫性のあるユーザ検証データしか電子掲示板から得られないような状況が上記判定の対象となる。
なお、ゲームに参加したユーザの数は、サーバ検証データsoutputに含まれるユーザ乱数useedi及びその署名siguseediの組み合わせの数から得られる。
上記状況に該当すれば、検証マシン30は、一貫性のあるユーザ検証データを電子掲示板に書き込んでいないユーザを不正行為者とする(ステップS606、No分岐)。ユーザは、ゲーム終了の際に、一貫性のあるユーザ検証データを電子掲示板に書き込む義務がある。従って、一貫性のあるユーザ検証データが電子掲示板から得られないという事実は、当該ユーザが義務に反した不正行為者であることを示す。
次に、検証マシン30は、指定されたゲームID(gid)を含む検証データ(サーバ検証データ、ユーザ検証データ)を電子掲示板から取得することができないが、当該指定されたゲームID(gid)よりも値の大きい検証データを持つ検証データが電子掲示板に書き込まれているか否かを判定する(ステップS606、Yes分岐;ステップS607)。
この場合、ゲームサーバ10が不正行為者となる。上述のように、ゲームID(gid)を管理するのはゲームサーバ10である。また、ゲームサーバ10は、新たなゲームを開始する度に、直前のゲームにて使用していたゲームID(gid)をインクリメントして当該新たなゲーム用のゲームID(gid)を生成する。
従って、検証対象となるゲームID(gid)よりも値の大きいゲームID(gid)を含む検証データが電子掲示板に書き込まれていれば、ゲームサーバ10はゲームID(gid)を適切に管理していないことになる。よって、ゲームサーバ10が不正行為者と判定される。
このように、検証対象となっている、サーバ検証データ及びユーザ検証データが存在せず、且つ、検証対象となっている乱数の使用機会よりも後に生成されたサーバ検証データ、ユーザ検証データが存在する場合、検証マシン30は、ゲームサーバ10を不正行為者と判定する。
[ユーザ間の検証データに関する検証]
図12に示すように、一貫性テストに基づく検証が終了すると、検証マシン30は、各ユーザにより電子掲示板に書き込まれたユーザ検証データ間の検証を行う(ステップS13)。
図12に示すように、一貫性テストに基づく検証が終了すると、検証マシン30は、各ユーザにより電子掲示板に書き込まれたユーザ検証データ間の検証を行う(ステップS13)。
具体的には、検証マシン30は、ユーザpが電子掲示板に書き込んだユーザ検証データuoutputpとユーザqが電子掲示板に書き込んだユーザ検証データuoutputqの間に矛盾がないか否かを検証する。
なお、以降の説明において、特定のユーザが電子掲示板に書き込んだユーザ検証データの各要素を示す場合に、当該ユーザのIDにユーザを特定するサフィックスを付し、ピリオドの後に続けて要素を表記するものとする。例えば、ユーザqのユーザ検証データuoutputqの全ハッシュ値comseedsは、IDq.comseedsと表記する。
また、ゲームサーバ10が電子掲示板に書き込んだサーバ検証データの各要素は、サーバID(SID)と各要素をピリオドで連結することで表記する。例えば、ゲームサーバ10のサーバ検証データsoutputのサーバ乱数sseedは、SID.sseedと表記する。
検証マシン30は、上記式(19)の左辺と右辺が一致すれば、各ユーザが電子掲示板に書き込んだユーザ検証データuoutputに矛盾がないと判定する。検証マシン30は、上記式(19)の左辺と右辺が一致しなければ、各ユーザが電子掲示板に書き込んだユーザ検証データuoutputに矛盾があると判定する。
式(19)を参照すると、各ユーザのユーザ検証データに含まれる、ユーザID及びサーバ乱数のハッシュ値comsseedが一致するか否かが判定されている。各ユーザが電子掲示板に書き込んだユーザ検証データに矛盾があれば、検証マシン30は、ゲームサーバ10が不正行為者であると判断する。
本来、ゲームサーバ10は、ゲームに参加している全ユーザに同じデータを送信する義務がある。従って、各ユーザのユーザ検証データに矛盾が存在すれば、ゲームサーバ10がユーザごとに異なるデータを送信していることを意味する。即ち、ゲームサーバ10は、各ユーザに対して、所謂、「ビサンチン攻撃」を行っていることになる。即ち、検証マシン30は、複数のユーザ検証データそれぞれに含まれるデータに矛盾がないか否かを検証し、矛盾がある場合にはゲームサーバ10を不正行為者と判定する。
[サーバとユーザ間の検証データに関する検証]
続いて、検証マシン30による「サーバとユーザ間の検証データに関する検証」を説明する(図12のステップS14)。検証マシン30は、サーバ検証データsoutputと各ユーザのユーザ検証データuoutputの間に矛盾がないかを検証する。
続いて、検証マシン30による「サーバとユーザ間の検証データに関する検証」を説明する(図12のステップS14)。検証マシン30は、サーバ検証データsoutputと各ユーザのユーザ検証データuoutputの間に矛盾がないかを検証する。
検証マシン30は、上記式(20)の左辺と右辺が一致すれば、サーバ検証データとユーザ検証データの間の矛盾がないと判定する。検証マシン30は、上記式(20)の左辺と右辺が一致しなければ、サーバ検証データとユーザ検証データの間の矛盾があると判定する。
式(20)を参照すると、各ユーザ検証データに含まれる乱数(サーバ乱数、ユーザ乱数)のハッシュ値とサーバ検証データに含まれる乱数(サーバ乱数、ユーザ乱数)から生成されるハッシュ値が一致するか否かが判定される。
ここで、ユーザ検証データには全ハッシュ値の署名sigidcomseeds含まれ、当該署名はユーザ検証データの一貫性テストの結果から正当であることが保証されている。従って、ユーザ検証データに含まれる乱数のハッシュ値と、サーバ検証データに含まれる乱数から生成したハッシュ値が一致しないのであれば、ゲームサーバ10が全ハッシュ値comseedsの署名生成に用いた乱数とは異なる乱数をサーバ検証データとして電子掲示板に書き込んだことを意味する。よって、ゲームサーバ10が不正行為者となる。
このように、検証マシン30は、ユーザ検証データとサーバ検証データそれぞれに含まれるデータに矛盾がないか否かを検証し、矛盾がある場合にはゲームサーバ10を不正行為者と判定する。
[ゲームサーバによる乱数生成の検証]
続いて、検証マシン30による「ゲームサーバによる乱数生成の検証」を説明する(図12のステップS15)。検証マシン30は、同一のゲーム中に生成された各ゲーム乱数r[j]であって、各ユーザ検証データuoutputに含まれるゲーム乱数r[j]が、サーバ検証データに含まれる乱数(サーバ乱数、ユーザ乱数)から生成されるゲーム乱数に一致するか否かを検証する。
続いて、検証マシン30による「ゲームサーバによる乱数生成の検証」を説明する(図12のステップS15)。検証マシン30は、同一のゲーム中に生成された各ゲーム乱数r[j]であって、各ユーザ検証データuoutputに含まれるゲーム乱数r[j]が、サーバ検証データに含まれる乱数(サーバ乱数、ユーザ乱数)から生成されるゲーム乱数に一致するか否かを検証する。
検証マシン30は、上記式(21)の左辺と右辺が一致すれば、ゲームサーバ10による乱数生成は正当であると判定する。検証マシン30は、上記式(21)の左辺と右辺が一致しなければ、ゲームサーバ10による乱数生成は不当であると判定する。
ここで、各ユーザ検証データに含まれるゲーム乱数の署名ssigr[j]やサーバ検証データに含まれるユーザ乱数の署名siguseedの正当性は2つの検証データの一貫性テストにより正当であることが保証されている。従って、各ユーザに提供されたゲーム乱数r[j]が、ゲーム開始時に生成された乱数(サーバ乱数、ユーザ乱数)から生成されるゲーム乱数r[j]に一致しないのであれば、ゲームサーバ10がハッシュ値や乱数の署名を検証していないか、意図的にこれらのデータを置換していることを示す。よって、ゲームサーバ10が不正行為者となる。
このように、検証マシン30は、サーバ検証データ及びユーザ検証データに含まれるデータを用いてゲームサーバ10による乱数の生成に関する正当性を検証し、乱数の生成が不当であればゲームサーバを不正行為者と判定する。
図12に示す5段階の検証が正常に終了した場合、検証マシン30はゲームシステムにおける乱数生成は公正であったと判断する。なお、図12に示す検証であっても、システム参加者の全員(ゲームサーバ10、端末20)が結託し、ゲーム乱数の生成に対して不正を行った場合には、当該不正の検出や不正行為者の特定は不可能である。しかし、上記のような状況は、もはや不正の検出や不正行為者の特定を行う意味がない状況である。
[ハードウェア構成]
次に、第1の実施形態に係るゲームシステムを構成する各種装置のハードウェア構成を説明する。図14は、第1の実施形態に係る検証マシン30のハードウェア構成の一例を示すブロック図である。
次に、第1の実施形態に係るゲームシステムを構成する各種装置のハードウェア構成を説明する。図14は、第1の実施形態に係る検証マシン30のハードウェア構成の一例を示すブロック図である。
検証マシン30は、情報処理装置(コンピュータ)により構成可能であり、図14に例示する構成を備える。例えば、検証マシン30は、内部バスにより相互に接続される、CPU(Central Processing Unit)31、メモリ32、入出力インターフェイス33及び通信手段であるNIC(Network Interface Card)34等を備える。
但し、図14に示す構成は、検証マシン30のハードウェア構成を限定する趣旨ではない。検証マシン30は、図示しないハードウェアを含んでもよいし、必要に応じて入出力インターフェイス33を備えていなくともよい。また、検証マシン30に含まれるCPU等の数も図14の例示に限定する趣旨ではなく、例えば、複数のCPUが検証マシン30に含まれていてもよい。
メモリ32は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスク等)である。
入出力インターフェイス33は、図示しない表示装置や入力装置のインターフェイスとなる手段である。表示装置は、例えば、液晶ディスプレイ等である。入力装置は、例えば、キーボードやマウス等のユーザ操作を受け付ける装置である。
検証マシン30の機能は、後述する各種処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ32に格納されたプログラムをCPU31が実行することで実現される。また、そのプログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。即ち、上記処理モジュールが行う機能を何らかのハードウェア、及び/又は、ソフトウェアで実行する手段があればよい。
なお、ゲームサーバ10、端末20や管理サーバ50も検証マシン30と同様に情報処理装置により構成可能であり、その基本的なハードウェア構成は検証マシン30と相違する点は無いので説明を省略する。
以上のように、第1の実施形態では、ゲームサーバ10と端末20のそれぞれが、検証データ(サーバ検証データ、ユーザ検証データ)を電子掲示板に書き込む。サーバ検証データは、ゲームサーバ10がゲーム乱数の生成前から当該乱数の使用後までの間で少なくともゲーム乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータである。また、ユーザ検証データは、端末20がゲーム乱数の生成前から当該乱数の使用後までの間で少なくともゲーム乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータである。このようなデータを電子掲示板にゲーム乱数の使用後に書き込むことで、ゲームシステムの当事者(ゲームサーバ10、端末20)だけでなく第3者が、ゲーム乱数の生成が正当であったか否かを検証できる。また、検証者(例えば、検証マシン30)は、図12や図13を用いて説明した検証データの解析により不正が行われたときの不正行為者を特定することができる。
[変形例]
なお、第1の実施形態にて説明したゲームシステムの構成、動作等は例示であって、システムの構成等を限定する趣旨ではない。例えば、上記実施形態では、検証マシン30をゲームサーバ10、端末20とは別装置として説明したが、検証マシン30の機能がこれらの装置に組み込まれていてもよい。
なお、第1の実施形態にて説明したゲームシステムの構成、動作等は例示であって、システムの構成等を限定する趣旨ではない。例えば、上記実施形態では、検証マシン30をゲームサーバ10、端末20とは別装置として説明したが、検証マシン30の機能がこれらの装置に組み込まれていてもよい。
上記実施形態で説明したゲーム乱数やハッシュ値の計算方法は例示であって、上記説明した内容に限定する趣旨ではない。例えば、式(12)においてゲーム乱数を生成する際、ゲームID(gid)もハッシュ関数に入力してもよい。
上記実施形態では、ブロックチェーン技術に基づく信頼性の高い電子掲示板(一度書き込まれた情報は消去されたり改ざんされたりすることのない電子掲示板)を検証データの登録先としている。しかし、上記電子掲示板と同様の性質を持つ掲示板や装置(サーバ)であれば、任意の情報保持手段を検証データの登録先として使用することができる。
コンピュータの記憶部に、上述したコンピュータプログラムをインストールすることにより、コンピュータを検証マシン30として機能させることができる。さらにまた、上述したコンピュータプログラムをコンピュータに実行させることにより、コンピュータにより乱数検証方法を実行することができる。なお、上記プログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
また、上述の説明で用いたシーケンス図、フローチャートでは、複数の工程(処理)が順番に記載されているが、実施形態で実行される工程の実行順序は、その記載の順番に制限されない。実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。
例えば、図13に示す「一貫性テストに基づく検証」において検証マシン30による検証の順序を変更してもよい。具体的には、図15に示すように、ステップS607の動作をステップS601の前に実行してもよい。
例えば、検証マシン30は、検証対象として与えられたゲームID(gid)に対し、同じゲームID(gid)の検証データ及びその署名を電子掲示板から読み出す。検証マシン30は、サーバ検証データsoutput及びユーザ検証データuoutputそれぞれの署名を検証する(図12のステップS11)。検証マシン30は、検証に失敗したデータを廃棄し、正しいデータを残して、次のステップである一貫性テストに基づく検証に進む(ステップS12)。一方、検証対象として与えられたゲームID(gid)を持つ検証データが発見できない、又は、署名の検証の結果、正しいデータが残らない場合に、検証マシン30は、図15に示すステップS600を実行する。ステップS600では、検証マシン30は、指定されたゲームID(gid)よりも値が大きいゲームID(gid)であって、正しいサーバの署名付きのサーバ検証データあるいはユーザ検証データが電子掲示板に存在するか否かを確認する。このようなデータが存在した場合に、検証マシン30は、ゲームサーバ10が不正行為者と判定する。
なお、引用した上記の特許文献の開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
10 ゲームサーバ
20、101 端末
30 検証マシン
31 CPU(Central Processing Unit)
32 メモリ
33 入出力インターフェイス
34 NIC(Network Interface Card)
40 データ管理システム
50、50-1~50-4 管理サーバ
102 乱数生成サーバ
201、301、401、501 通信制御部
202、302、402、502 記憶部
203 ゲーム実行制御部
211 ユーザ認証部
212、311 乱数管理部
303 ゲーム実行部
403 乱数検証部
411 一貫性検証部
503 台帳管理部
511 ブロック生成部
512 ブロック検証部
20、101 端末
30 検証マシン
31 CPU(Central Processing Unit)
32 メモリ
33 入出力インターフェイス
34 NIC(Network Interface Card)
40 データ管理システム
50、50-1~50-4 管理サーバ
102 乱数生成サーバ
201、301、401、501 通信制御部
202、302、402、502 記憶部
203 ゲーム実行制御部
211 ユーザ認証部
212、311 乱数管理部
303 ゲーム実行部
403 乱数検証部
411 一貫性検証部
503 台帳管理部
511 ブロック生成部
512 ブロック検証部
Claims (16)
- 端末と、
少なくとも前記端末が使用する乱数を生成する、乱数生成サーバと、
を含み、
前記乱数の生成前に、前記乱数生成サーバと前記端末は、前記乱数の生成に必要なデータを送受信し、
前記乱数生成サーバは少なくとも前記送受信されたデータに基づいて前記乱数を生成し、
前記乱数の使用後に、前記乱数生成サーバは署名付きのサーバ検証データを、前記端末は署名付きのユーザ検証データを、それぞれ電子掲示板に書き込み、
前記サーバ検証データは、前記乱数生成サーバが前記乱数の生成前から前記乱数の使用後までの間で少なくとも前記乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータであり、
前記ユーザ検証データは、前記端末が前記乱数の生成前から前記乱数の使用後までの間で少なくとも前記乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータである、乱数生成システム。 - 前記乱数の生成前に、
前記乱数生成サーバはサーバ乱数を生成すると共に、前記サーバ乱数の封印値を前記端末に送信し、
前記端末はユーザ乱数を生成すると共に、前記ユーザ乱数の封印値を前記乱数生成サーバに送信し、
前記乱数生成サーバは、少なくとも前記ユーザ乱数の封印値及び前記サーバ乱数の封印値を含む情報の署名を前記端末に送信する、請求項1に記載の乱数生成システム。 - 前記乱数生成サーバは、少なくとも前記送信されたユーザ乱数と前記サーバ乱数に基づいて前記乱数を生成すると共に、署名付きの前記生成した乱数を前記端末に送信し、
前記端末は、前記乱数の署名が正当である場合に、前記送信された乱数を使用する、請求項2に記載の乱数生成システム。 - 前記サーバ検証データ及び前記ユーザ検証データを用いて、前記乱数の正当性を検証する、検証マシンをさらに含む、請求項1乃至3のいずれか一項に記載の乱数生成システム。
- 前記検証マシンは、前記サーバ検証データ及び前記ユーザ検証データのそれぞれを前記電子掲示板から読み出し、
前記読み出したサーバ検証データ及び前記ユーザ検証データそれぞれの署名を検証する、請求項4に記載の乱数生成システム。 - 前記検証マシンは、前記サーバ検証データ及び/又は前記ユーザ検証データに対し、データの生成主体が前記乱数の生成前から前記乱数の使用後までの間で少なくとも前記乱数の生成に必要なデータを正当に扱っているか否かを判定する一貫性テストを実施し、前記一貫性テストの結果に基づき、前記乱数生成サーバ又は前記端末のいずれが不正行為者であるか判定する、請求項5に記載の乱数生成システム。
- 前記検証マシンは、
前記サーバ検証データの署名及び前記ユーザ乱数の封印値の署名のいずれか一方が正当ではない場合に、前記サーバ検証データに一貫性がないと判定し、
前記ユーザ検証データの署名、少なくとも前記サーバ乱数の封印値及び前記ユーザ乱数の封印値を含む情報の署名及び前記乱数生成サーバにより生成された乱数の署名のうち少なくとも1つが正当ではない場合に、前記ユーザ検証データに一貫性がないと判定する、請求項6に記載の乱数生成システム。 - 前記検証マシンは、前記ユーザ検証データに一貫性がなければ前記ユーザ検証データを電子掲示板に書き込んだ端末を不正行為者と判定する、請求項7に記載の乱数生成システム。
- 前記検証マシンは、前記サーバ検証データに一貫性がなければ前記乱数生成サーバを不正行為者と判定する、請求項8に記載の乱数生成システム。
- 前記検証マシンは、同一の前記乱数の使用機会に関し、
一貫性のある複数の前記サーバ検証データが存在する場合、及び、一貫性のある複数の前記ユーザ検証データが存在する場合のいずれの場合においても前記乱数生成サーバを不正行為者と判定する、請求項9に記載の乱数生成システム。 - 前記検証マシンは、
一貫性のある前記サーバ検証データが不存在、且つ、前記ユーザ検証データに一貫性がある場合に、前記乱数生成サーバを不正行為者と判定し、
一貫性のある前記ユーザ検証データが不存在、且つ、前記サーバ検証データに一貫性がある場合に、前記端末を不正行為者と判定する、請求項10に記載の乱数生成システム。 - 前記検証マシンは、
検証対象となっている、前記サーバ検証データ及び前記ユーザ検証データが存在せず、且つ、前記検証対象となっている前記乱数の使用機会よりも後に生成された前記サーバ検証データ及び/又は前記ユーザ検証データが存在する場合に、前記乱数生成サーバを不正行為者と判定する、請求項11に記載の乱数生成システム。 - 複数の前記端末のそれぞれが前記ユーザ検証データを電子掲示板に書き込んだ場合、
前記検証マシンは、
前記複数のユーザ検証データそれぞれに含まれるデータに矛盾がないか否かを検証し、矛盾がある場合には前記乱数生成サーバを不正行為者と判定する、請求項12に記載の乱数生成システム。 - 前記検証マシンは、
前記ユーザ検証データと前記サーバ検証データそれぞれに含まれるデータに矛盾がないか否かを検証し、矛盾がある場合には前記乱数生成サーバを不正行為者と判定する、請求項13に記載の乱数生成システム。 - 前記検証マシンは、
前記サーバ検証データ及び前記ユーザ検証データに含まれるデータを用いて前記乱数生成サーバによる乱数の生成に関する正当性を検証し、乱数の生成が不当であれば前記乱数生成サーバを不正行為者と判定する、請求項14に記載の乱数生成システム。 - 端末と、
少なくとも前記端末が使用する乱数を生成する、乱数生成サーバと、
を含むシステムにおいて、
前記乱数の生成前に、前記乱数生成サーバと前記端末が、前記乱数の生成に必要なデータを送受信するステップと、
前記乱数生成サーバは少なくとも前記送受信されたデータに基づいて前記乱数を生成するステップと、
前記乱数の使用後に、前記乱数生成サーバは署名付きのサーバ検証データを、前記端末は署名付きのユーザ検証データを、それぞれ電子掲示板に書き込むステップと、
を含み、
前記サーバ検証データは、前記乱数生成サーバが前記乱数の生成前から前記乱数の使用後までの間で少なくとも前記乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータであり、
前記ユーザ検証データは、前記端末が前記乱数の生成前から前記乱数の使用後までの間で少なくとも前記乱数の生成に必要なデータを正当に扱っているか否かを検証可能なデータである、乱数生成方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020565559A JP7211437B2 (ja) | 2019-01-11 | 2019-01-11 | 乱数生成システム及び乱数生成方法 |
PCT/JP2019/000766 WO2020144864A1 (ja) | 2019-01-11 | 2019-01-11 | 乱数生成システム及び乱数生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/000766 WO2020144864A1 (ja) | 2019-01-11 | 2019-01-11 | 乱数生成システム及び乱数生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020144864A1 true WO2020144864A1 (ja) | 2020-07-16 |
Family
ID=71521089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2019/000766 WO2020144864A1 (ja) | 2019-01-11 | 2019-01-11 | 乱数生成システム及び乱数生成方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7211437B2 (ja) |
WO (1) | WO2020144864A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014527216A (ja) * | 2011-07-04 | 2014-10-09 | ツェットエフ、フリードリッヒスハーフェン、アクチエンゲゼルシャフト | 識別技術 |
US20150018061A1 (en) * | 2013-07-12 | 2015-01-15 | Joseph Y. Lee | Generating and verifying values used in games |
KR101891608B1 (ko) * | 2017-08-31 | 2018-08-24 | 주식회사 엔씨소프트 | 온라인 게임의 세션을 검증하는 방법 및 시스템 |
-
2019
- 2019-01-11 JP JP2020565559A patent/JP7211437B2/ja active Active
- 2019-01-11 WO PCT/JP2019/000766 patent/WO2020144864A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014527216A (ja) * | 2011-07-04 | 2014-10-09 | ツェットエフ、フリードリッヒスハーフェン、アクチエンゲゼルシャフト | 識別技術 |
US20150018061A1 (en) * | 2013-07-12 | 2015-01-15 | Joseph Y. Lee | Generating and verifying values used in games |
KR101891608B1 (ko) * | 2017-08-31 | 2018-08-24 | 주식회사 엔씨소프트 | 온라인 게임의 세션을 검증하는 방법 및 시스템 |
Non-Patent Citations (3)
Title |
---|
EHARA, YUTO ET AL.: "How to secure transparency for random number generation using blockchain", CSS2017 PROCEEDINGS OF COMPUTER SECURITY SYMPOSIUM 2017, vol. 2017, no. 2, 16 October 2017 (2017-10-16), pages 915 - 922 * |
OHASHI, SHIGENORI ET AL.: "A registration method for digital content management systems utilizing blockchains", IPSJ SIG TECHNICAL REPORT S, vol. 2016 -SP, no. 3, 5 May 2016 (2016-05-05), pages 1 - 6, XP009519151 * |
TERANISHI, ISAMU ET AL.: "Dice Rolls for Online Games using Blockchain with Provable Properties", PREPRINTS OF THE 2019 SYMPOSIUM ON CRYPTOGRAPHY AND INFORMATION SECURITY (SCIS2019, 15 January 2019 (2019-01-15), pages 1 - 7 * |
Also Published As
Publication number | Publication date |
---|---|
JPWO2020144864A1 (ja) | 2021-11-25 |
JP7211437B2 (ja) | 2023-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI740423B (zh) | 在基於區塊鏈的私有交易中提供隱私和安全保護的系統和方法 | |
Dimitriou | Efficient, coercion-free and universally verifiable blockchain-based voting | |
US11212081B2 (en) | Method for signing a new block in a decentralized blockchain consensus network | |
RU2652443C1 (ru) | Система и способ определения количества голосов избирателей, собираемых с помощью электронного голосования | |
CN112132560B (zh) | 链上数字资产管理方法及装置 | |
US20190253260A1 (en) | Electronic certification system | |
UA128523C2 (uk) | Спосіб генерування транзакції блокчейну і спосіб перевірки дійсності блока блокчейну | |
CN110720102A (zh) | 用于通用计算的区块链 | |
JP5464794B2 (ja) | ネットワーク管理方法およびネットワーク管理システム | |
CN112311735A (zh) | 可信认证方法,网络设备、系统及存储介质 | |
JP6742558B2 (ja) | 認証システムおよび認証プログラム | |
JP2023503607A (ja) | 自動デジタル証明書検証のための方法およびデバイス | |
CN115147975B (zh) | 一种基于区块链的加密网络投票方法 | |
Lin et al. | Blockchain-based complete self-tallying E-voting protocol | |
JP2004104750A (ja) | ディジタル署名の検証方法 | |
Li et al. | AvecVoting: Anonymous and verifiable E-voting with untrustworthy counters on blockchain | |
CN114003959A (zh) | 去中心化身份信息处理方法、装置和系统 | |
JP7209518B2 (ja) | 通信装置、通信方法、および通信プログラム | |
CN111539719A (zh) | 基于盲签名的可审计混币服务方法及系统模型 | |
JP6967211B1 (ja) | 違法な取引を防止しつつ匿名ユーザの参加も許容する暗号資産の取引のための完全分散型ブロックチェーンシステム及びコンピュータープログラム | |
WO2020144864A1 (ja) | 乱数生成システム及び乱数生成方法 | |
Buyukbaskin et al. | Requirement analysis of some blockchain-based e-voting schemes | |
CN111062833A (zh) | 一种合同数据的签名认证方法及相关装置 | |
RU2791865C2 (ru) | Способ генерирования транзакции блокчейна и способ проверки действительности блока блокчейна | |
Bruschi et al. | A protocol for anonymous and accurate e-polling |
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: 19908275 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2020565559 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 19908275 Country of ref document: EP Kind code of ref document: A1 |