-
Diese
Erfindung betrifft eine Servercomputervorrichtung im Allgemeinen,
die eine Bedingung überprüft, die
auf einer Clientcomputervorrichtung existiert, und betrifft ausdrücklicher
eine Servercomputervorrichtung, die eine Abfrage (challenge) an eine
Clientcomputervorrichtung ausgibt und eine von der Clientcomputervorrichtung
erhaltene Antwort mit einer erwarteten Antwort vergleicht.
-
Hintergrund
der Erfindung
-
Das
Spielen von elektronischen Spielen über das Internet mit mehreren
Spielern ist ein zunehmend beliebter Zeitvertreib geworden. Obwohl
Spiele, die dafür
entworfen wurden, um auf Personalcomputern (PCs) und auf geeigneten
elektronischen Spielesystemen wie dem XBOXTM Spielesystem
der Microsoft-Corporation zu laufen, auch dafür entworfen sind, mehreren
Spielern zu ermöglichen,
in einer lokalen Sitzung zu spielen, bieten über das Internet gespielte
Spiele den Benutzern die Gelegenheit, ihre Fertigkeiten mit einem
viel breiteren Spektrum von Spielern zu vergleichen und jederzeit
zu spielen. Mehrpersonenspiele über
ein Netzwerk werden normalerweise dadurch durchgeführt, dass
jedem aus einer Vielzahl von Clientcomputervorrichtungen ermöglicht wird,
sich an eine Servercomputervorrichtung über das Netzwerk anzuschließen, so
dass die Servercomputervorrichtung Spiel-Interaktion zwischen den
Spielern einer Vielzahl von verschiedenen Spielen erleichtert. Um
die folgende Diskussion zu vereinfachen, wird der Ausdruck "Client" statt Clientcomputervorrichtung
verwendet, und der Ausdruck "Server" wird statt Servercomputervorrichtung
verwendet, wobei aber das umfassendere Konzept dieser Begriffe zur
Anwendung kommen soll.
-
Idealerweise
sollte nur die Fertigkeit von Spielern, die an Online-Spielen teilnehmen,
bestimmen, wer ein Spiel gewinnt. Jedoch sind Online-Spieler berüchtigt,
kreative Wege zu entwickeln, während des
Online-Spiels zu betrügen,
so dass das Geschick eines Spielers beim Spielen eines Spiels nicht
unbedingt bestimmt, wer das Spiel gewinnt. Zum Beispiel kann Spielesoftware
modifiziert werden (indem man zum Beispiel ein Haifischprogramm
(Game Shark program) verwendet), um einem Spieler mehrere Leben,
mehr Energie, mehr Schutz und andere Attribute zu liefern, so dass
der Spieler einen wesentlichen Vorteil Spielern gegenüber hat,
die eine unveränderte
Version des Spielprogramms verwenden. Gegen eine andere Person zu
spielen, die auf diese Weise betrügt, kann sehr frustrierend
sein und wird nicht unterhaltsam sein, da das Spiel oft nicht mehr
vom kunstfertigeren Spieler gewonnen wird, sondern stattdessen von
dem Spieler gewonnen wird, der durch das Verwenden eines modifizierten
Spielprogramms betrügt.
Folglich wäre
es für
einen Server einer Spiele-Seite wünschenswert, in der Lage zu
sein, herauszufinden, ob ein Spieler ein modifiziertes Spielprogramm
verwendet, so dass der Server Vorkehrungen, um die Verwendung eines
solchen modifizierten Programms im Online-Spiel durch einen Spieler,
der mit dem Server verbunden ist, zu verhindern, treffen kann.
-
Geeignete
elektronische Spielsysteme können
auch modifiziert werden, um einem Spieler zu ermöglichen zu betrügen, wenn
er Online-Spiele spielt. Es ist für einen Spieler zum Beispiel
möglich,
ein Austausch-Speichermodul, das ein modifiziertes Basic Input Output
System (BIOS) enthält,
in eine Spielekonsole einzubauen, mit der das originale BIOS ersetzt
wird, womit dem System Funktionsweisen und Änderungen möglich sind, die nicht gestattet wären, wenn
das System mit dem originalen BIOS betrieben würde. Das modifizierte BIOS
kann erlauben, dass unautorisierte Kopien oder Raubkopien von Spielen
gespielt werden, und kann einem Benutzer erlauben, Zonenbeschränkungen
zu umgehen, die Spiele betreffen, die auf der Spielekonsole gespielt
werden können.
Noch wesentlicher kann die Verwendung eines modifizierten Chips
in einer Spielekonsole andere Arten an Betrugsverhalten während des
Spiels ermöglichen.
-
US-2002/144138
A1 bezieht sich auf eine Methode für die sichere Verteilung von
elektronischen Medien über
ein Netzwerk, das das Risiko der Piraterie reduziert. Bei einer
Ausführungsform
kann eine Methode vom Server durchgeführt werden, die prüft, ob eine
Client Anmelde-Komponente und/oder eine den Client repräsentierende
Komponente, die beide im Speicher des Client gespeichert sind, manipuliert
wurden. Dazu sendet der Server ein Prüfprogramm zum Client, das vom
Client ausgeführt
werden muss. Das Prüfprogramm
erzeugt ein Hash der Client Anmelde-Komponente und der den Client
repräsentierenden
Komponente und gibt den Hash an den Server zurück. Anschließend wertet
der Server den vom Client erhaltenen Hash vor dem Verteilen von
angeforderten elektronischen Medien aus.
-
WO
02/065258 A2 bezieht sich auf eine Methode, einen Apparat und ein
Computerprogrammprodukt zur Authentisierung eingebetteter Software im
Speicher eines Antworters (responder) über einen ungesicherten Kanal.
Die Methode umfasst die Schritte:
Übertragen der Überprüfungsanfrage
vom Abfrager (challenger) zum Antworter, dann Verarbeiten der im Antworter
eingebetteten Software unter Benutzung einer Hash-Funktion um einen
Hashwert (hash digest) zu produzieren. Anschließend wird der Hashwert (hash
digest) zurück
an den Abfrager gesendet und mit einem Prüfungs-Hashwert (hash digest)
im Abfrager verglichen.
-
Es
wäre daher
wünschenswert, Änderungen herauszufinden,
die an einem elektronischen Spielesystem gemacht worden sind, wenn
das Spielesystem sich bei einer Spiele-Seite anmeldet um ein Mehrpersonenspiel
zu spielen, und/oder während
ein solches Spiel gespielt wird, um einem Server der Seite zu ermöglichen
eine entsprechende Maßnahme
zu ergreifen. Jedoch kann jede Abfrage, wenn ausreichend Zeit und
Ressourcen gegeben sind, vereitelt werden.
-
Nach
einer allgemeineren Überlegung
wäre es
darüberhinaus
wünschenswert,
einen Server zu befähigen,
ein Client-Gerät
in Hinsicht jeder gewünschten
Bedingung auf dem Client abzufragen (to challenge), wenn der Benutzer
des Client-Geräts
versucht, sich in einen auf dem Server angebotenen Dienst anzumelden
oder anzuschließen,
und den Server zu befähigen,
zu entscheiden, ob eine Charakteristik oder Bedingung des Clients
anders ist, als erwartet. Es wird offensichtlich sein, dass dieses
Verfahren sich nicht auf eine vom Server gelieferte Spiele-Funktion
oder auf Spiel-Clients beschränkt.
Wenn die von einem Client zurückgegebene
Antwort nicht wie erwartet ist, dann sollte der Server in der Lage sein,
automatisch entsprechende Maßnahmen
zu ergreifen. Zum Beispiel könnte
der Server die gegenwärtige
Sitzung mit dem Client einfach beenden und könnte eine Kennzeichnung des
Client in einer Datenbank aufzeichnen, um den Client daran zu hindern,
den erbrachten Dienst jemals wieder auf dem Server zu nutzen, selbst
wenn die vom Client zum Server in einer zukünftigen Sitzung zurückgegebene Antwort
wie erwartet ist.
-
Dieses
Ziel wird vom Gegenstand der unabhängigen Ansprüche erreicht.
Bevorzugte Ausführungsformen
sind der Gegenstand der abhängigen Ansprüche.
-
Ein
Schlüsselaspekt
der vorliegenden Erfindung ist, dass ein Benutzer eines Client sich
mit einem Server verbinden will, der einen vom Benutzer gewünschten
Dienst erbringt. In einer ersten Anwendung der Erfindung wird der
Server für
eine Spiele-Seite (site) verwendet, um den Dienst zu erbringen,
Spielern zu ermöglichen,
an Mehrpersonenspielen über
das Internet teilzunehmen, aber es sollte klar sein, dass die vorliegende
Erfindung nicht auf diese Anwendung beschränkt ist. Mit Hilfe eines Client
versucht der Benutzer, sich beim vom Server erbrachten Dienst anzumelden.
Im Einklang mit der Methode der vorliegenden Erfindung sendet der
Server während des
Anmeldeprozesses, und/oder später
während des
Spiels, eine "Abfrage" an den Client in
der Form eines oder mehrerer Codesegmente, die einen oder mehrere
Parameter enthalten. Die Abfrage enthält normalerweise auch Maschinenanweisungen,
die den Client veranlassen, einem bestimmten Verfahren zu folgen,
um eine für
eine Bedingung auf dem Client bezeichnende Antwort zu bestimmen.
Zum Beispiel kann es in der Spiele-Anwendung dieser Erfindung sein,
dass der Server ermittelt, ob der Client mit einem modifizierten
BIOS läuft
oder modifizierte Spielesoftware verwendet oder eine Raubkopie eines Spiels.
Die Antwort, die vom Client bestimmt wird, wird somit auf die auf
dem Client ermittelte Bedingung bezogen. Diese Antwort wird dann
dem Server zurückgeschickt
und wird mit einer erwarteten Antwort verglichen.
-
Wenn
die Antwort zur erwarteten Antwort passt, wird der gewünschte Dienst
dem Client vom Server erbracht. Wenn jedoch die Antwort nicht zur erwarteten
Antwort passt oder überhaupt
keine Antwort zurückgegeben
wird, kann eine entsprechende vordefinierte Aktion automatisch vom
Server ausgeführt
werden. Zum Beispiel kann der Server die Antwort einfach aufzeichnen,
um zukünftig
darauf Bezug zu nehmen, oder er kann die laufende Sitzung automatisch
beenden, und/oder er kann den Client oder den Benutzer für immer
daran hindern, jemals wieder an den Diensten, die vom Server angeboten
werden, teilzuhaben, z.B. daran, jemals wieder Online-Spiele unter
Benutzung der Spiele-Dienste des Servers zu spielen.
-
Die
vom Client um die Antwort zu bestimmen realisierten Maschinenanweisungen
können
den Client veranlassen, einen Ein-Weg Hash Algorithmus auf einen
bestimmten Teil des Speichers auf dem Client, wie einen Teil des
mit dem BIOS geladenen Speichers oder einen Teil des Speichers,
der Code für
eine Anwendung wie ein Spiel speichert, anzuwenden. Alternativ können die
Maschinenanweisungen den Client veranlassen, den Ein-Weg Hash Algorithmus
auf einen Teil eines dem Client zugänglichen nichtflüchtigen
Speichers anzuwenden. Da eine Raubkopie eines Spiel-Programms normalerweise nur
Teile des ursprünglichen
nichtflüchtigen
Mediums enthält,
worauf das Programm gespeichert war, können die Maschinenanweisungen
den Client veranlassen, den Ein-Weg Hash auf Teile des nichtflüchtigen Mediums,
worauf Zufalls-Daten gespeichert wurden (aber nicht das Spiel-Programm)
anzuwenden, um zu bestimmen, ob auf eine berechtigte Kopie der Spielesoftware
vom Client zugegriffen wird.
-
Die
genannten Teile des Speichers (oder des nichtflüchtigen Mediums) können geändert werden, wenn
der Client anschließend
wieder versucht, sich beim Server anzumelden. Durch das Ändern sowohl der
dabei verwendeten Parameter, um die Antwort zu bestimmen, und/oder
der genannten Teile des Speichers (oder des nichtflüchtigen
Mediums), und/oder der Details des Ein-Weg Hash Algorithmus, der
verwendet wird, um die Antwort zu produzieren, wird es für einen
Benutzer des Client sehr schwierig sein, eine falsche Antwort zu
liefern, die zu einer erwarteten Antwort passt.
-
Um
eine Bit für
Bit Raubkopie eines nichtflüchtigen
Speichers, mit dem ein Spiel verbreitet ist, zu ermitteln, können die
dem Client gelieferten Maschinenanweisungen bewirken, dass er versucht,
einen Teil des nichtflüchtigen
Speichermediums zu lesen, das auf allen berechtigten Kopien unlesbar
gemacht worden ist. Wenn die Antwort nicht anzeigt, dass der Versuch,
den Teil zu lesen, erfolglos war, dann passt die Antwort nicht zur
erwarteten Antwort, und es ist offensichtlich, dass der Client auf
eine Raubkopie der Spielesoftware zugreift.
-
Andere
Aspekte der vorliegenden Erfindung beziehen sich auf einen Server
oder eine Gruppe von Servern, die verwendet werden, um einen Dienst
für eine
Vielzahl von Clients zu erbringen, die über ein Netzwerk an den Server
angeschlossen sind, so dass der Server eine Bedingung auf einem
Client wahrnehmen kann. Der Server umfasst einen Speicher, in welchen
eine Vielzahl von Maschinenanweisungen gespeichert sind, eine Netzwerkschnittstelle für die Verbindung
zur Vielzahl von Clients und einen Prozessor, der an den Speicher
und die Netzwerkschnittstelle gekoppelt ist. Der Prozessor führt die Maschinenanweisungen
aus und führt
eine Vielzahl von Funktionen aus, die generell mit den Schritten der
oben beschriebenen Methode übereinstimmen. Ein
anderer Aspekt der vorliegenden Erfindung bezieht sich auf ein Speichermedium,
worauf Maschinenanweisungen, um die vom Server gemachten Schritte
auszuführen,
gespeichert sind.
-
Es
ist beabsichtigt, dass sich der überall
in dieser Offenlegung und in den folgenden Ansprüchen verwendete Ausdruck "Server" auf eine einzelne
Server-Computervorrichtung oder auf eine Vielzahl von Computervorrichtungen
bezieht. Somit wird vom Ausdruck "Server" auch angenommen, sich auf eine Gruppe
von Computervorrichtungen zu beziehen, die in Tandemanordnung arbeiten,
um den Dienst zu erbringen, den der Client wünscht. Die bestimmte Server-Computervorrichtung,
die die Abfrage sendet und die vom Client erhaltene Antwort beurteilt,
muss nicht unbedingt dieselbe Computervorrichtung sein, die den
Dienst tatsächlich
liefert. Eine Störung
beim Passieren des Abfrage-Antwort Prozesses kann jedoch verursachen,
dass dem Client der weitere Zugang zu irgendeinem der Server-Computervorrichtungen
in der Gruppe versagt wird (nicht nur zu dem, der die Abfrage sendet
und/oder die Antwort beurteilt). Weiterhin wird angenommen, dass
der Ausdruck "Server", wie hier verwendet,
sich auch allgemeiner auf Netzwerk Computervorrichtungen beziehen
kann, wie Router oder Switches. Ein Router oder Switch würde die
Abfrage ausgeben und nur Pakete von diesem Client an andere Server
hinter dem Router/Switch weiterleiten, wenn die richtige (d.h. erwartete)
Antwort vom Client zurückgegeben
wurde.
-
Kurze Beschreibung
der Zeichnungen
-
Die
vorhergehenden Aspekte und viele der zugehörigen Vorteile dieser Erfindung
werden leichter eingeschätzt
werden, wenn diese unter Bezug auf die folgende detaillierte Beschreibung
besser verstanden werden und wenn sie in Verbindung mit den begleitenden
Zeichnungen gesehen werden, wobei:
-
1 ein
funktionelles Blockdiagramm einer Computervorrichtung für allgemeine Zwecke
in der Form eines konventionellen Personalcomputers (PC) ist zum
Gebrauch in einem exemplarischen System, worin die vorliegende Erfindung
realisiert ist;
-
2A ein
schematisches Diagramm einer grundlegenden Netzwerkumgebung ist,
in welcher viele Clients an einen Server angeschlossen sind;
-
2B schematisch
erläutert,
wie eine Vielzahl von Servern normalerweise ein Serverrechnersystem
einschließt;
-
2C schematisch
verschiedene Arten von Clients erläutert, mit denen die vorliegende
Erfindung verwendet werden kann;
-
3 eine
isometrische Sicht auf eine exemplarisches Client elektronisches
Spielesystem ist, das eine Spielekonsole und Unterstützung für bis zu vier
Benutzereingabegeräte
umfasst;
-
4 ein
funktionelles Blockdiagramm ist, das funktionelle Bauteile des Client
Spielesystems der 3 zeigt;
-
5 ein
schematisches Diagramm einer exemplarischen Spiele Netzwerkumgebung
ist, in welchem viele Client Spielekonsolen an einen Spieleserver
angeschlossen sind, wobei eine Client Spielekonsole davon ausgeschlossen
ist, sich an den Spieleserver anzuschließen;
-
6 ein
Flussdiagramm ist, das die in der vorliegenden Erfindung realisierten
allgemeinen logischen Schritte erläutert;
-
7 ein
Flussdiagramm ist, das auf dem Flussdiagramm der 6 basiert
und potentielle Serverantworten auf fehlgeschlagene Abfragen und die
Verwendung von fakultativen anschließenden Abfragen erläutert; und
-
8 ein
Flussdiagramm ist, das die bevorzugte Logik erläutert, die verwendet wird,
um die vorliegende Erfindung in der Spiele Netzwerkumgebung der 5 zu
realisieren.
-
Beschreibung
der bevorzugten Ausführungsform
-
Eine
bevorzugte Ausführungsform
der vorliegenden Erfindung in Hinsicht auf das Kontrollieren des
Zugangs zu einem Server durch einen Client ist nachfolgend beschrieben.
-
Wie
oben bemerkt, kann der Client zum Beispiel ein allgemein üblicher
Personalcomputer (PC), ein Mobiltelefon, ein persönlicher
Datenassistent (PDA), oder nahezu jede andere Form einer Computervorrichtung
sein, die sich über
ein verdrahtetes oder drahtloses Netzwerk mit einem Server verbinden
kann. Somit wird vom Ausdruck Client angenommen, sowohl existierende
Computervorrichtungen oder -systeme zu umfassen, die verwendet werden, um
sich an einen Server über
ein Netzwerk anzuschließen,
als auch Computervorrichtungen zu umfassen, die zukünftig entwickelt
werden, um auf einen Server über
eine Netzwerkverbindung zuzugreifen. In einer ersten bevorzugten
Form der Erfindung ist der Client eine Spielekonsole, und der Server
wird in einem Online Spiele System verwendet, das Multiplayer-Spiele über das
Internet erleichtert. Jene, die in diesen Fertigkeiten geschult
sind, erkennen jedoch, dass die vorliegende Erfindung auch in vielen
anderen Umgebungen realisiert werden kann, in denen ein Client versucht,
Zugang zu einem Server zu gewinnen. Der Client und der Server können über das Internet
oder über
einen anderen Typ von Netzwerk, wie ein lokales Netz (LAN), ein
Intranet oder ein Weitverkehrsnetz (WAN) verbunden werden.
-
Von
einem Server wird gegenwärtig
angenommen, ein oder mehrere Computervorrichtungen zu umfassen,
die Serverfunktionen ausführen.
Aber es wird angenommen, dass der Ausdruck "Server" so gemeint ist, nahezu jede(s) Computervorrichtung oder
-system zu umfassen, die Serverfunktionen ausführt, einschließlich Computervorrichtungen,
die zukünftig
entwickelt werden, um Serverfunktionen auszuführen. Der "Server" könnte
sogar einer der Clients sein, der eine Anforderung zur Verbindung
in einer Peer-to-Peer-Sitzung, die er von einem anderen Client erhalten
hat, behandelt. Der Client, der eine Abfrage sendet, könnte das
dem anderen Client zugesandte Codesegment selbst generieren oder
er könnte
mit einer entsprechenden Abfrage und erwarteten Antwort von einem
anderen Server beliefert werden oder der Peer-to-Peer-Client, der als Server auftritt,
könnte
die Abfrage selbst ausführen,
um die von dem anderen Client erwartete Antwort zu bestimmen.
-
Exemplarische Computervorrichtung
-
1 und
die folgende Diskussion sollen eine kurze, allgemeine Beschreibung
einer geeigneten EDV-Umgebung liefern, in welcher Software, die die
Methode der vorliegenden Erfindung realisiert, realisiert werden
kann. Die vorliegende Erfindung kann auf einem einzelnen Server
ausgeübt
werden, aber kann auch auf vielen Computervorrichtungen ausgeübt werden,
die als Server dienen. Sowohl der Client als auch der Server können je
die in 1 gezeigten funktionellen Bauteile enthalten.
Indem die vorliegende Erfindung eindeutig auf einem Client realisiert
werden kann, der ein Universal-PC ist, stellt der Client in einer
ersten Anwendung der vorliegenden Erfindung eine Spielekonsole dar,
wie unten beschrieben. Dennoch wird die folgende Diskussion eines
Universal-PCs mit Rücksicht
auf die Verwendung des PCs als einem Server oder als einem Client
geführt.
-
Obwohl
nicht erforderlich, wird die vorliegende Erfindung im allgemeinen
Kontext von Computer-ausführbaren
Anweisungen beschrieben, wie Programmmodulen, die von einem PC und/oder
einer Spielekonsole ausgeführt
werden. Im Allgemeinen enthalten Programmmodule Anwendungsprogramme
wie Computersimulationen, Routinen, Objekte, Komponenten, Funktionen,
Datenstrukturen usw. die besondere Aufgaben ausführen oder bestimmte abstrakte
Datentypen realisieren. Außerdem werden
jene, die in entsprechenden Fertigkeiten geschult sind, anerkennen,
dass diese Erfindung mit anderen Rechnersystemkonfigurationen umgesetzt werden
kann, besonders in dezentralen EDV-Umgebungen, wo Aufgaben von entfernten
Verarbeitungseinheiten ausgeführt
werden, die über
ein Datenübertragungsnetz
verbunden sind. In einer dezentralen EDV-Umgebung können Programmmodule
sich entweder in einer der lokalen oder in entfernten Speichervorrichtungen
befinden oder in beiden.
-
Unter
Bezug auf 1 enthält ein exemplarisches System
zum Gebrauch als Servercomputer eine Universal-Computervorrichtung
in der Form eines konventionellen PCs 20. PC 20 wird
gezeigt mit einer Verarbeitungseinheit 21, einem Systemspeicher 22 und
einem Systembus 23. Der Systembus verbindet verschiedene
Systemkomponenten einschließlich
des Systemspeichers mit Verarbeitungseinheit 21 und er
kann von irgend einer von verschiedenen Arten von Busstrukturen
sein, einschließlich eines
Speicherbus oder einer Speichersteuerung, Steuerung eines peripheren
Bus und eines lokalen Bus unter Benutzung irgendeiner Busarchitektur
aus einer Vielfalt von Busarchitekturen. Der Systemspeicher enthält Lesespeicher
(ROM) 24 und Random Access Memory (RAM) 25. Ein
Basis-Eingabe-Ausgabe-System 26 (BIOS) ist in ROM 24 gespeichert, das
die Grundroutinen enthält,
die helfen, Information zwischen Elementen innerhalb des PCs 20 zu übertragen,
wie z.B. während
des Hochfahrens. PC 20 enthält weiterhin ein Festplattenlaufwerk 27 für das Lesen
von und das Schreiben auf eine (nicht gezeigte) Festplatte und kann
ein magnetisches Laufwerk 28 für das Lesen von oder das Schreiben
auf eine entfernbare magnetische Platte 29 und ein optisches Laufwerk 30 für das Lesen
von oder das Schreiben auf eine entfernbare optische Platte 31,
wie eine CD-ROM oder andere optische Medien, enthalten. Festplattenlaufwerk 27,
magnetisches Laufwerk 28 und optisches Laufwerk 30 werden
mit Systembus 23 durch eine Festplattenlaufwerkschnittstelle 32,
eine magnetische Laufwerksschnittstelle 33 beziehungsweise
eine optische Laufwerksschnittstelle 34 verbunden. Die
Laufwerke und ihre zugehörigen
computerlesbaren Medien bieten für
PC 20 nichtflüchtiges Speichern
von computerlesbaren Maschinenanweisungen, Datenstrukturen, Programmmodulen
und andere Daten. Auch wenn die hier beschriebene exemplarische
Umgebung eine Festplatte, eine entfernbare magnetische Platte 29 und
eine entfernbare optische Platte 31 enthält, wird
es von jemandem, der in der Technik geschult ist, verstanden werden,
dass in der exemplarischen Funktionsumgebung auch andere Typen von
computerlesbaren Medien, die Daten, auf die ein Computer zugreifen
kann, speichern können,
verwendet werden können,
wie Magnetkassetten, Flash Speicherkarten, Digital Versatile Discs (DVDs),
Bernoulli Einsätze,
RAMs, ROMs, und dergleichen.
-
Eine
Anzahl von Programmmodulen können auf
der Festplatte, auf der magnetischen Platte 29, auf der
optischen Platte 31, in ROM 24 oder in RAM 25 gespeichert
werden, einschließlich
eines Betriebssystems 35, eines oder mehrerer Anwendungsprogramme 36,
anderer Programmmodule 37 und Programmdaten 38.
Ein Benutzer kann Befehle und Information in PC 20 durch
Eingabevorrichtungen wie eine Tastatur 40 und eine Zeigevorrichtung 42 eingeben.
Zeigevorrichtung 42 kann eine Maus, einen Stift, eine drahtlose
Fernbedienung oder einen anderen Zeiger umfassen. (Nicht gezeigte)
andere Eingabevorrichtungen können
Joystick, Gamepad, Rad, Pedal, Mikrophon, Satellitenschüssel, Scanner, digitale
Kamera, digitaler Videorekorder umfassen oder dergleichen. Diese
und andere Eingabe/Ausgabe (E/A) Vorrichtungen werden meist mit
der Verarbeitungseinheit 21 durch eine Ein/Ausgabe-Schnittstelle 46 verbunden,
die an den Systembus 23 gekoppelt ist. Der Ausdruck Ein/Ausgabe-Schnittstelle soll
jede Schnittstelle umfassen, die spezifisch für einen seriellen Port, einen
parallelen Port, einen Spiele-Port, einen Tastaturport verwendet
wird, und/oder einen seriellen Universalbus (USB). Ein Monitor 47 oder
ein anderer Typ von Anzeigeeinheit wird auch mit dem Systembus 23 durch
eine entsprechende Schnittstelle wie einen Videoadapter 48 verbunden und
kann verwendet werden, um Anwendungsprogramme, Webseiten, eine simulierte
Umgebung, und/oder andere Information anzuzeigen. Zusätzlich zum
Monitor sind PCs häufig
an (nicht gezeigte) andere periphere Ausgabegeräte wie Lautsprecher (durch
eine Soundkarte oder andere Audioschnittstelle (nicht gezeigt))
und Drucker gekoppelt.
-
Wie
oben aufgezeigt, ist die Erfindung in einer vernetzten Umgebung
realisiert, in welcher PC 20 mit einem oder mehreren Clients,
wie einem entfernten Computer 49, logisch verbunden ist.
Der entfernte Computer 49 kann ein anderer PC, ein Router,
ein Netzwerk-PC,
ein Peer-Gerät,
ein Satellit oder ein anderer gewöhnlicher Netzwerkknoten sein,
der einen Client umfasst. Der entfernte Computer 49 ist
in einer bevorzugten Anwendung der vorliegenden Erfindung eine Spielekonsole,
wie unten detaillierter beschrieben wird. Der entfernte Computer 49 kann viele
oder alle Elemente enthalten, die oben in Verbindung mit PC 20 beschrieben
wurden, kann die unten in Verbindung mit einer Spielekonsole beschriebenen
Elemente enthalten oder kann typische Elemente von anderen elektronischen
Geräten
enthalten, die als Client dienen können. Um 1 nicht unnötigerweise
komplex zu machen, wird der entfernte Computer 49 mit nur
einer externen Speichervorrichtung 50 gezeigt. Die in 1 gezeigten
logischen Verbindungen enthalten ein lokales Netz (LAN) 51 und
ein Weitverkehrsnetz (WAN) 52, das das Internet umfassen
kann. Solche Netzwerkumgebungen sind gebräuchlich in Büros, in
firmenweiten Computernetzen, in Intranetzen, und im Hinblick auf mit
dem Internet verbundene Computervorrichtungen.
-
Wenn
PC 20 in einer LAN Netzwerkumgebung verwendet wird, wird
er mit LAN 51 durch eine Netzwerkschnittstelle oder -adapter 53 verbunden. Wenn
PC 20 in einer WAN Netzwerkumgebung verwendet wird, enthält er normalerweise
ein Modem 54, oder andere Mittel wie ein Kabelmodem, eine
Digital Subscriber Line (DSL) Schnittstelle, oder eine Integrated
Service Digital Network (ISDN) Schnittstelle, um Datenübertragung über WAN 52 herzustellen.
Ein Typ eines gewöhnlich
für Kommunikation
zwischen entfernten Computervorrichtungen verwendeten WAN ist das
Internet. Das Modem 54, das intern oder extern sein kann,
ist an den Systembus 23 angeschlossen oder an den Bus über die
Ein/Ausgabe-Geräteschnittstelle 46 gekoppelt,
d.h. durch einen seriellen Port. In einer vernetzten Umgebung können die
in Bezug auf PC 20 gezeigten Programmmodule oder Teile
davon in der entfernten Speichervorrichtung gespeichert werden.
Man wird verstehen, dass die gezeigten Netzwerkverbindungen exemplarisch sind
und andere Mittel, eine Datenübertragungsverbindung
zwischen den Computern herzustellen, verwendet werden können, wie
drahtlose Kommunikation und Breitbandnetzwerkverbindungen.
-
Mindestens
erforderliche vernetzte Umgebung
-
Wie
oben bemerkt, ist ein Schlüsselaspekt der
vorliegenden Erfindung, dass ein Benutzer eines Client sich über ein
Netzwerk wie das Internet mit einem Server verbinden will, der einen
Dienst oder Daten zur Verfügung
stellt, die vom Benutzer gewünscht werden.
Somit ist, um die vorliegende Erfindung zu realisieren, eine Netzwerkumgebung
einschließlich eines
Client und eines Servers erforderlich. 2A erläutert schematisch
ein Grundnetzwerk 280, einschließlich eines Servers 282a,
und mehrere Clients 284a bis 284h. Während zwar
eine Netzwerkumgebung zwischen einem Server und einem einzelnen Client
existieren kann, enthalten die meisten Netzwerkumgebungen mehrere
Clients und oft auch mehrere Server. Es ist beabsichtigt, dass das
Netzwerk 280 ein beliebiges aus einer großen Vielfalt
von Datendatenübertragungsnetzen
darstellen soll und sowohl öffentliche
Teile (z.B. das Internet), wie auch private Teile (z.B. ein privates
LAN und/oder WAN) enthalten können
soll. Es ist auch beabsichtigt, dass das Netzwerk 280 unter
Verwendung von beliebigen oder mehreren aus einer großen Vielfalt
von konventionellen Datenübertragungskonfigurationen
einschließlich sowohl
verdrahteter als auch drahtloser Typen realisiert werden können soll.
Irgendeines aus einer großen
Vielfalt von Datenübertragungsprotokollen
kann verwendet werden, um Daten über
das Netzwerk 280 zu übermitteln,
einschließlich
sowohl öffentlicher
als auch privater Protokolle. Beispiele für solche Protokolle sind TCP/IP,
IPX/SPX, NetBEUI usw.
-
2B erläutert schematisch
einen exemplarischen Server 282b. Wie oben bemerkt, enthalten Server
im Allgemeinen viele der Bauteile des PCs 20, der im Detail
oben beschrieben wurde. Es ist gemeint, dass Server, die im Einklang
mit der vorliegenden Erfindung verwendet werden als ein Serverrechnersystem 282c realisiert
werden können,
das mehrere einzelne Server enthält,
die sich die Aufgabe teilen, verbundenen Clients einen Dienst zu
erbringen. Jemand, der in der Technik in üblicher Weise geschult ist,
wird erkennen, dass einzelne Server in einem Serverrechnersystem
Aufgaben gleichmäßig verteilen
(wie in einem System mit ausbalancierter Last), oder das Serverrechnersystem
kann bestimmten Servern bestimmte Aufgaben zuteilen.
-
Da
eine bevorzugte Ausführungsform
der vorliegenden Erfindung mit einem Client gebraucht wird, der
eine mit einem Netzwerk verbundene Spielekonsole ist und mit einem
Server, der ein Online Spieleserver ist, wird noch einmal ausdrücklich betont,
dass die vorliegende Erfindung mit anderen Arten von Clients auch
sinnvoll eingesetzt werden kann. 2C zeigt
schematisch mehrere verschiedene Arten von Clients, die benutzt
werden können, um
auf einen Server zuzugreifen, beinhaltend, ohne darauf beschränkt zu sein,
einen Laptopcomputer 284i, einen Arbeitsplatzrechner 284J,
einen PC 284k, einen PDA 284l, eine Spielekonsole 284m,
ein internetfähiges
Funk-Telefon 284n, und einen internetfähigen Pager 284o. 2C zeigt
auch, dass auch Server 282b oder Serverrechnersystem 282c als
Client betrachtet werden können,
wenn der Server von einem Benutzer verwendet wird, der wünscht, auf
einen von einem anderen Server erbrachten Dienst zuzugreifen.
-
Da
es ausdrücklich
so gemeint ist, dass die gegenwärtige
Erfindung realisiert werden kann, um den Zugriff auf einen Server
durch eine Anzahl verschiedener Typen von Clients zu kontrollieren,
wird eine bevorzugte Ausführungsform
der gegenwärtigen
Erfindung realisiert, um den Zugriff zu kontrollieren von mit einem
Netzwerk verbundenen Spielekonsolen auf einen Server, der Spielen
ermöglicht.
Die gegenwärtige
Erfindung ist aber nicht auf Clients, die Spielekonsolen sind, beschränkt und
ist nicht auf einen Server beschränkt, der Spielen ermöglicht.
Andere Arten von Clients und Server, die verschiedene Funktionen
ausführen,
sind in der vorliegenden Erfindung einbezogen.
-
Exemplarischer Client
-
3 erläutert ein
exemplarisches elektronisches Spielesystem 100, das eine
Spielekonsole 102 und Unterstützung für bis zu vier Benutzereingabevorrichtungen
umfasst, wie die Steuerungen 104a und 104b. Natürlich können auch
Spielekonsolen verwendet werden, die nur eine einzelne Benutzereingabevorrichtung
oder zusätzliche
Benutzereingabevorrichtungen unterstützen. Spielekonsole 102 ist mit
einem (in dieser Abbildung nicht gezeigten) internen Festplattenlaufwerk
bestückt
und enthält
ein Laufwerk für
tragbare Medien 106, das verschiedene Formen von tragbaren
optischen Speichermedien unterstützt,
repräsentiert
durch eine optischen Speicherplatte 108. Beispiele für geeignete
tragbare Speichermedien sind DVD Platten und Compact Disk-Read-Only Memory
(CD-ROM) Platten. In diesem Spielesystem werden Spielprogramme für den Gebrauch
mit der Spielekonsole bevorzugt auf DVD verteilt, aber es ist auch
daran gedacht, dass stattdessen andere Speichermedien auf diesem
oder anderen Typen von Clients in Verbindung mit der vorliegenden
Erfindung verwendet werden können.
-
Auf
der Vorderseite der Spielekonsole 102 sind vier Ports 110 für die Verbindung
zu unterstützten
Steuerungen, obwohl die Anzahl und Anordnung der Ports modifiziert
werden kann. Eine Einschalttaste 112 und eine Auswurftaste 114 sind
auch auf der Vorderseite der Spielekonsole 102 angeordnet.
Eine Einschalttaste 112 kontrolliert die Zufuhr des elektrischen
Stroms zur Spielekonsole und eine Auswurftaste 114 öffnet und
schließt
abwechselnd eine Ablage (nicht gezeigt) des Laufwerks für tragbare
Medien 106, um das Einlegen und Entnehmen von Speicherplatte 108 zu
ermöglichen,
so dass die digitalen Daten auf der Platte gelesen werden können, um
von der Spielekonsole verwendet werden zu können.
-
Die
Spielekonsole 102 ist mit einem Fernseher oder einem anderen
Anzeigemonitor oder- schirm
(nicht gezeigt) durch audio/visuelle (A/V)-Schnittstellen Kabel
verbunden. Ein Netzkabelstecker 122 übermittelt elektrischen Strom
an die Spielekonsole, wenn er mit einer konventionellen Wechselstromnetzquelle
(nicht gezeigt) verbunden ist. Die Spielekonsole 102 enthält einen
Ethernet-Datenverbindungsanschluss 124, um Daten über ein Netzwerk
zu übertragen
und zu erhalten (z.B. durch eine Peer-to-Peer-Verbindung zu einer
anderen Spielekonsole oder durch eine Verbindung zu einem Hub oder
einem Switch (nicht gezeigt)) oder über das Internet zum Beispiel
durch eine Verbindung zu einer xDSL-Schnittstelle, zu einem Kabelmodem
oder zu einer anderen Breitbandschnittstelle (nicht gezeigt). Andere
Arten von Spielekonsolen können
miteinander kommunizierend mit Hilfe eines konventionellen Telefonmodems
verbunden werden.
-
Jede
Steuerung 104a und 104b ist mit der Spielekonsole 102 über eine
Leitung (oder alternativ durch eine drahtlose Schnittstelle) gekoppelt.
In der dargestellten Realisierung sind die Steuerungen mit seriellem
Universalport (USB) kompatibel und sind mit der Spielekonsole 102 durch
USB-Kabel 130 verbunden. Die Spielekonsole 102 kann
mit irgendeiner aus einer großen
Vielfalt von Vorrichtungen ausgerüstet sein, mit denen der Benutzer
mit der Spielsoftware interagiert und sie steuert. Wie in 3 gezeigt,
ist jede Steuerung 104a und 104b mit zwei Daumentasten 132a und 132b bestückt, mit
einem D-Feld 134, mit Tasten 136 und mit zwei
Auslösertasten 138.
Diese Steuerungen sind lediglich typisch, und andere Spieleingabe-
und Steuervorrichtungen können
zum Gebrauch mit Spielekonsole 102 jene ersetzen oder zu
denen hinzugefügt
werden, die in 3 gezeigt werden.
-
Eine
entfernbare Funktionseinheit 140 kann wahlweise in Steuerung 104 eingesetzt
werden, um Zusatzmerkmale und -funktionen zu liefern. Zum Beispiel
ermöglicht
eine tragbare Speichereinheit (MU) Benutzern, Spiele Parameter zu
speichern und sie für das
Spiel auf anderen Spielekonsolen zu transportieren, indem sie die
tragbare MU in eine an die andere Spielekonsole angeschlossene Steuerung
einsetzt. Eine andere entfernbare Funktionseinheit umfasst eine
Stimmenkommunikationseinheit, die einem Benutzer ermöglicht,
verbal mit anderen Benutzern lokal und/oder über ein Netzwerk zu kommunizieren. Mit
der Stimmenkommunikationseinheit ist ein Kopfhörer 142 verbunden,
der ein Galgenmikrophon 144 enthält. In der beschriebenen Realisierung
ist jede Steuerung so konfiguriert, dass sie zwei entfernbare Funktionseinheiten
aufnehmen kann, obwohl auch mehrere oder weniger als zwei entfernbare
Funktionseinheiten oder -module stattdessen verwendet werden können.
-
Das
Spielesystem 100 ist fähig,
zum Beispiel Spiele, Musik und Videos abzuspielen. Es ist daran gedacht,
dass andere Funktionen realisiert werden können, unter Verwendung digitaler
Daten, die auf dem Festplattenlaufwerk gespeichert sind oder von einer
optischen Speicherplatte 108 in Laufwerk 106 gelesen
werden, oder unter Verwendung digitaler Daten, die aus einer Online-Quelle
oder aus einer MU erhalten wurden. Zum Beispiel ist das Spielesystem 100 dazu
fähig,
abzuspielen:
- • Spieletitel, die auf CD- und
DVD-Platten oder auf dem Festplattenlaufwerk gespeichert sind oder von
einer Online-Quelle heruntergeladen wurden;
- • Digitale
Musik, die auf einer CD im Laufwerk für tragbare Medien 106 oder
in einer Datei auf dem Festplattenlaufwerk (z.B. WINDOWS MEDIA AUDIOTM (WMA) Format) gespeichert ist oder aus Online-Streaming
Quellen im Internet oder in anderen Netzwerken stammt; und
- • Digitale
AV-Daten wie Filme, die auf einer DVD im Laufwerk für tragbare
Medien 106 oder in einer Datei auf dem Festplattenlaufwerk
(z.B. in einem Active Streaming Format) gespeichert sind oder aus
Online-Streaming Quellen im Internet oder in anderen Netzwerken.
-
4 zeigt
funktionale Komponenten des Spielesystems 100 detaillierter.
Die Spielekonsole 102 enthält eine zentrale Verarbeitungseinheit
(CPU) 200 und eine Speichersteuerung 202, die
den Prozessorzugriff auf einen Read-Only Memory (ROM) 204,
einen Random Access Memory (RAM) 206, ein Festplattenlaufwerk 208 und
ein Laufwerk für
tragbare Medien 106 erleichtert. CPU 200 ist mit
einem Level 1 Cache 210 und einem Level 2 Cache 212 ausgerüstet, zwischenzeitlich
Daten zu speichern, um die Anzahl von erforderlichen Speicherzugriffszyklen zu
reduzieren und dadurch Verarbeitungsgeschwindigkeit und Durchsatz
zu verbessern. CPU 200, Speichersteuerung 202 und
verschiedene Speichervorrichtungen werden über einen oder mehrere Busse zusammengeschaltet,
einschließlich
serielle und parallele Busse, einen Speicherbus, einen peripheren Bus
und einen Prozessor- oder lokalen Bus mit Hilfe von irgendeiner
aus einer Vielfalt von Busarchitekturen. Diese Architekturen können beispielsweise
ein Industry Standard Architecture (ISA) Bus, ein Micro Channel
Architecture (MCA) Bus, ein Enhanced ISA (EISA) Bus, ein Video Electronics
Standards Association (VESA) lokaler Bus, und ein Peripheral Component
Interconnect (PCI) Bus sein.
-
Als
Beispiel für
eine geeignete Realisierung der Spielekonsole, sind CPU 200,
Speichersteuerung 202, ROM 204 und RAM 206 integriert
in ein gemeinsames Modul 214. In dieser Realisierung ist ROM 204 als
ein Flash-ROM ausgeführt,
das mit Speichersteuerung 202 durch einen PCI-Bus und einen
ROM Bus verbunden ist (keiner von beiden wird gezeigt). RAM 206 ist
als mehrfache Double Data Rate Synchronous Dynamic RAMs (DDR SDRAMs) ausgeführt, die
von der Speichersteuerung 202 über separate (nicht gezeigte)
Busse unabhängig
kontrolliert werden. Festplattenlaufwerk 208 und Laufwerk für tragbare
Medien 106 sind mit der Speichersteuerung durch den PCI-Bus
und einen Advanced Technology Attachment (ATA) Bus 216 verbunden.
-
Eine
Einheit für
die Verarbeitung dreidimensionaler (3D) Graphik (GPU) 220 und
ein Videoencoder 222 bilden eine Vieoverarbeitungsleitung
für Hochgeschwindigkeits-
und hochauflösende
Graphikverarbeitung. Die Daten werden von Graphikverarbeitungseinheit 220 zu
Videoencoder 222 über
einen (nicht gezeigten) digitalen Videobus übertragen. Eine Audioverarbeitungseinheit 224 und
ein Audio Encoder/Decoder (CODEC) 226 bilden eine entsprechende
Audioverarbeitungsleitung für
HIFI- und Stereoaudiodatenverarbeitung. Audiodaten werden zwischen
Audioverarbeitungseinheit 224 und AudioCODEC 226 über eine
(nicht gezeigte) Kommunikationsverbindung übertragen. Die Video- und Audioverarbeitungsleitung,
gibt Daten an einen A/V Port 228 zur Übertragung auf den Fernseher
oder anderen Anzeigemonitor aus. In der gezeigten Realisierung sind
Video- und Audioverarbeitungskomponenten 220–228 auf
Modul 214 montiert.
-
Von
Modul 214 wird auch eine USB Hoststeuerung 230 und
eine Netzwerkschnittstelle 232 realisiert. USB Hoststeuerung 230 ist
gekoppelt mit CPU 200 und Speichersteuerung 202 über einen
Bus (z.B. den PCI-Bus) und dient als ein Host für periphere Steuerungen 104a bis 104d.
Netzwerkschnittstelle 232 liefert Zugang zu einem Netzwerk
(z.B. dem Internet, Heimnetzwerk usw.) und kann irgendeine aus einer
großen
Vielfalt von verschiedenen drahtgebundenen oder drahtlosen Schnittstellenkomponenten sein,
einschließlich
einer Ethernet-Karte, einer Telefonmodemschnittstelle, eines Bluetooth-Moduls,
einer Kabelmodemschnittstelle, einer xDSL-Schnittstelle und dergleichen.
-
Die
Spielekonsole 102 hat zwei Doppelsteuerungsunterstützungsuntereinheiten 240a und 240b, wobei
jede Untereinheit zwei Spielsteuerungen 104a bis 104d unterstützt. Eine
Frontplatten Ein/Ausgabe-Untereinheit 242 unterstützt die
Funktion von Einschalttaste 112 und Auswurftaste 114 wie
auch die irgendwelcher Leuchtdioden (LEDs) oder anderer Indikatoren,
die auf der äußeren Oberfläche der
Spielekonsole angeordnet sind.
-
Untereinheiten 240a, 240b und 242 sind
an Modul 214 über
eine oder mehrere Kabelverbände 244 gekoppelt.
-
Acht
Funktionseinheiten 140a–140h sind dargestellt,
als wären
sie mit vier Steuerungen 104a–104d verbindbar,
d.h. zwei Funktionseinheiten für
jede Steuerung. Jede Funktionseinheit 140 bietet zusätzliche
Funktionen oder Speicher an, auf dem Spiele, Spiele Parameter und
andere Daten gespeichert werden können. Wenn eine MU in eine
Steuerung eingeführt
wird, kann auf die MU von der Speichersteuerung 202 zugegriffen
werden. Ein Modul für die
Stromversorgung des Systems 250 liefert den Bauteilen des
Spielesystems 100 die erforderlichen Spannungen und Ströme. Ein
Lüfter 252 kühlt die Bauteile
und Schaltkreise innerhalb der Spielekonsole 102.
-
Um
die bevorzugte Ausführungsform
der vorliegenden Erfindung zu realisieren, wird für die Ausführung durch
CPU 200 eine Spielsoftwareanwendung 260, die Maschinenanweisungen
enthält und
auf einer DVD oder anderen Speichermedien gespeichert ist (oder über das
Netzwerk heruntergeladen wurde), in RAM 206 und/oder Cache 210, 212 geladen.
Teile der Softwareanwendung 260 können nur wenn nötig in den
RAM geladen werden, oder die ganze Softwareanwendung kann (je nach
ihrer Größe) in den
RAM 206 geladen werden. Die Softwareanwendung 260 wird
unten detaillierter beschrieben.
-
Das
Spielesystem 100 kann als ein selbständiges System durch das einfache
Verbinden des Systems mit einem Fernseher oder einem anderem Anzeigemonitor
bedient werden. In diesem selbständigen
Modus ermöglicht
das Spielesystem 100 einem oder mehreren Benutzern, Spiele
zu spielen, Filme zu sehen oder Musik zu hören. Das Spielesystem 100 kann
jedoch, durch die Möglichkeit
der Verbindung mit dem Internet oder anderen Netzwerken, was durch
die Netzwerkschnittstelle 232 erreicht wird, mit einem
anderen Spielesystem verbunden oder als Bestandteil einer größeren Netzwerkspielgemeinschaft
bedient werden, um Online-Mehrpersoneninteraktion in Spielen zu
ermöglichen,
die über das
Internet oder andere Netzwerke gespielt werden, mit Spielern, die
andere Spielesysteme verwenden.
-
Wenn
ein Benutzer wünscht,
sich an einen Server anzuschließen,
um vernetzt zu spielen, eine Tätigkeit,
die sich zunehmender Beliebtheit erfreut, versucht das Spielesystem 100 auf einen
(nicht in dieser Abbildung gezeigten) Server durch die oben beschriebene
Netzwerkverbindung zuzugreifen. Wie unten detaillierter beschrieben
wird, fragt der Server jedes Spielesystem ab, das versucht, Zugang
zum Server zu gewinnen. Auf Grundlage einer Antwort auf die vom
Server empfangene Abfrage an das Client Spielesystem, führt der
Server eine entsprechende vorher festgelegte Aktion aus.
-
Exemplarisches
Spiele-Netzwerk-Svs
-
Eine
bevorzugte Ausführungsform
der vorliegenden Erfindung wird in Verbindung mit dem XBOX LIVETM Online-Spiele-Netzwerk der Microsoft Corporation
realisiert. 5 zeigt ein exemplarisches Spiele-Netzwerk 300,
das mehrere Spielesysteme 100a bis 100s enthält, von
denen jedes logisch mit einem serverbasierten Online-Spiele-Dienst 302 verbunden
ist, im Folgenden einfach als Spieleserver 302 bezeichnet.
Es ist beabsichtigt, dass jedes Spielesystem einen Client darstellen
soll. Wie oben in Verbindung mit 2B beschrieben,
kann Spieleserver 302 ein einzelner Server sein oder, was
wahrscheinlicher ist, aus einer Vielzahl von in einem Serverrechnersystem
gruppierten Servern bestehen. Das Netzwerk 300 ist ähnlich dem
Netzwerk 280 und kann unter Verwendung irgendeiner oder
mehrerer aus einer großen
Vielfalt von üblichen
Datenübertragungskonfigurationen,
einschließlich
sowohl drahtgebundener als auch drahtloser Typen, realisiert werden.
Ein beliebiges aus der großen
Vielfalt von Datenübertragungsprotokollen
kann verwendet werden, um Daten über
das Netzwerk 300 zu übermitteln
und es kann sowohl öffentliche
als auch private Protokolle enthalten. Beispiele für solche
Protokolle sind TCP/IP, IPX/SPX, NetBEUI usw.
-
Im
allgemeinen liefert der Spieleserver 302 spielbezogene
Dienste an die mit ihm verbundenen Clients (z.B. den Benutzern jedes
Spielesystems 100), wie die kommunikative Verbindung der
Clients miteinander um das Spielen zwischen den Spielern zu ermöglichen,
die Unterstützung
durch einen Server und/oder das Hosting von Online-Spielen, die
Unterstützung
durch einen Server von herunterladbaren spielbezogenen Dateien,
das Hosting von Spiel-Wettbewerben, die Unterstützung durch einen Server von
spielbezogenen AN Streaming-Dateien, das Ermöglichen des Austauschs von
textbasierten oder Sprachnachrichten zwischen den Teilnehmern während des
Spiels und dergleichen. Es wird jedoch ausdrücklich betont, dass die vorliegende
Erfindung nicht auf die Anwendung mit nur diesen oder anderen spielbezogenen
Serverfunktionen beschränkt
ist, da viele andere Arten von Diensten vom Server geliefert werden
können.
-
Es
wird darauf hingewiesen, dass das Netzwerk 300 das Spielesystem 100t enthält, das
noch nicht mit dem Spieleserver 302 verbunden ist. Beim Beschreiben
einer bevorzugten Ausführungsform
der vorliegenden Erfindung, wird das Einrichten einer Netzwerkverbindung
zwischen dem Spielesystem 100t und dem Spieleserver 302 unten
detaillierter beschrieben. 5 zeigt
auch das universell verstandene Symbol für "Nein",
das über
einem Spielesystem 100u liegt, wo sich eine unterbrochene
Linie zwischen dem Spielesystem 100u und dem Spieleserver 302 befindet,
die anzeigt, dass die Netzwerkverbindung zwischen dem Spielesystem 100u und
dem Spieleserver 302 beendet worden ist. Wie unten detaillierter
beschrieben wird, besonders, wenn die vorliegende Erfindung in einer
Spiele-Netzwerkumgebung
realisiert wird, ist eine vorgegebene Aktion eines Servers, wenn
die Abfrage an einen Client scheitert, sowohl sofort eine gegenwärtige Netzwerkverbindung
zwischen diesem Client und dem Server zu beenden, und/oder anschließend weitere
Versuche dieses speziellen Clients abzulehnen, eine Netzwerkverbindung
mit dem Server herzustellen. Auf diese Weise scheiterte im Beispiel
von 5 das Spielesystem 100u daran, richtig
auf eine von dem Spieleserver 302 ausgegebene Abfrage zu
antworten, und die logische Netzwerkverbindung zwischen dem Spielesystem 100u und
dem Spieleserver 302 ist durch den Spieleserver 302 beendet
worden. Weiterhin wird in diesem Beispiel der Spieleserver 302 ein
identifizierendes Kennzeichen (z.B. eine Seriennummer) für das Spielesystem 100u intern
vermerken und wird zukünftige
Versuche des Spielesystems 100u, eine logische Netzwerkverbindung
zu dem Spieleserver 302 herzustellen, ablehnen, wenn er das
identifizierende Kennzeichen bei dem nächsten Versuch von dem Spielesystem 100u eine
Verbindung zum Spieleserver aufzubauen erkennt.
-
Überblick über den logischen Prozess
-
In 6 erläutert ein
Flussdiagramm 320 die logischen Schritte, die in der vorliegenden
Erfindung verwendet werden, um einen Client abzufragen, bevor man
dem Client ermöglicht,
auf einen Server zuzugreifen. In Block 322 sendet ein Client
eine Anforderung zu einem Server. Die vorliegende Erfindung ermöglicht dem
Server, eine Bedingung auf einem Client zu überprüfen, bevor er dem Client erlaubt,
auf einen Dienst oder Daten zuzugreifen, die vom Server zur Verfügung gestellt
werden. In einem konventionellen Netz kann ein Server die Eingabe von
einem Benutzernamen und einem Kennwort fordern, aber er wird nicht
versuchen, eine Bedingung auf einem Client zu überprüfen, bevor er dem Client Zugang
zu einem vom Server erbrachten Dienst erlaubt. Die vorliegende Erfindung
ermöglicht
jedoch einem Server, zuerst eine Bedingung in Hinsicht auf eine
Hardware und/oder Softwarekonfiguration auf dem Client zu überprüfen. Dementsprechend
ist die vorliegende Erfindung nur in jenen Situationen nützlich,
in denen der Benutzer eines Client einen Dienst oder eine Information,
die vom Server zur Verfügung gestellt
wird, wünscht
und versucht, eine logische Verbindung mit oder durch den Server
herzustellen. Wenn der Benutzer den Dienst, der vom Server erbracht
wird, nicht will, und nie versucht, sich an den Server anzuschließen, hat
der Server nicht die Gelegenheit, die Bedingung auf dem Client zu überprüfen.
-
Es
wird angenommen, dass Block 322 meistens den Versuch eines
Client darstellt, sich bei einem Server anzumelden. Es ist jedoch
beabsichtigt, dass Block 322 jede anschließende Anforderung
eines Client (nach einem erfolgreichen Anmelden) darstellt auf einen
Dienst oder eine Information zuzugreifen, oder weiterhin darauf
zuzugreifen, der/die vom Server verwaltet wird. In jeder einzelnen
Sitzung, die eine logische Netzwerkverbindung zwischen einem Client
und einem Server einschließt,
kann das bedeuten, dass Block 322 unmittelbar auf die Einrichtung
solch einer logischen Verbindung oder jederzeit im Anschluss an
die Einrichtung solch einer logischen Verbindung zum Tragen kommt.
Unter gewissen Umständen
kann es sinnvoll sein, wie mit zusätzlichen Details nachfolgend
beschrieben, sowohl bei einem ersten Anmeldeversuch als auch ein-
oder mehrmals während
einer Übertragungssitzung
zwischen einem Client und einem Server, einen Client abzufragen.
-
In
Block 324 sendet der Server eine Abfrage an den Client.
Während
Details der bevorzugten Formen von Abfragen, die von Servern Clients
zugesendet werden, unten detaillierter erörtert werden, bedeutet die
Abfrage nicht einfach, dass ein Server einen Client auffordert,
Kenntnis von einem Kennwort zu liefern oder von irgendeiner anderen
Zugangsberechtigungsinformation, die er benötigt, um in der Lage zu sein,
Zugang zum System zu erhalten. Die Abfrage ist auf das Überprüfen eines
Merkmals oder einer Bedingung des Client ausgerichtet, um zu bestimmen,
ob die Bedingung auf dem Client so ist, wie vom Server erwartet.
Es wird in Betracht gezogen, eine Vielzahl von verschiedenen Abfragen
vorzugenerieren und für
einen Server verfügbar
zu machen, wobei jede Abfrage mit einer entsprechenden erwarteten
Antwort verbunden ist. Verschiedene Abfragen können dieselbe Bedingung auf
dem Client testen. Der Server kann dann eine der vielen vorgenerierten Abfragen
wählen,
um sie dem Client zuzusenden. Für
jede dieser vorgenerierten Abfragen wird der Server eine erwartete
Antwort auf Grundlage von bekannten Merkmalen einer Bedingung, von
der erwartet wird, dass sie auf dem Client erfüllt ist, berechnet haben. Bedingungen,
die durch solche Abfragen überprüft werden
können,
sind zum Beispiel das BIOS, das der Client verwendet, die Hardwarekonfiguration
des Client und die Software, die der Client verwendet.
-
In
Block 326 verarbeitet der Client die vom Server erhaltene
Abfrage. Wie oben bemerkt, ist die Abfrage keine Anforderung der
Kenntnis eines Kennworts oder irgendeiner anderen Zugangsberechtigungsinformation,
die eingegeben werden muss, und erfordert keine Aktion von einem
Benutzer des Client. Vorzugsweise hat die Abfrage die Form eines
ausführbaren
Codesegments, das vom Server dem Client zugesendet wird. Der Client
führt das
vom Server erhaltene Codesegment aus und sendet dann die durch das
Ausführen
des Codes generierte Antwort zur Auswertung zurück zum Server. In mindestens
einer bevorzugten Ausführungsform
enthält
die Abfrage den Code, der geeignet ist, um einen Ein-Weg Hash Algorithmus,
wie SHA-1 oder MD5 von einem bestimmten Teil des Speichers auf dem
Client oder von einem bestimmten Teil einer DVD oder eines anderen
nichtflüchtigen
Speichers, zu dem der Client Zugriff hat, zu realisieren. Die Abfrage
enthält
vorzugsweise auch einen oder mehrere Parameter, die das erwartete
Ergebnis beeinflussen.
-
In
Block 328 wird die vom Client berechnete Antwort an den
Server gesendet. In Block 330 überprüft der Server die vom Client
berechnete Antwort. An dieser Stelle kann der Server, basiert auf
der vom Client erhaltenen Antwort, eine aus einer Anzahl von vordefinierten
Aktionen, basierend auf der Antwort, die vom Client erhalten wird,
ausführen,
wie in Block 331 angezeigt ist. Wenn ein Client daran scheitert, die
erwartete Antwort auf eine Abfrage an den Server zu senden, oder
wenn vom Client keine Antwort empfangen wurde, kann der Server auf
viele verschiedene Weisen reagieren. Zum Beispiel kann der Server lediglich
den Vorfall zum Zweck der Nachverfolgung protokollieren. Unter anderen
Umständen
kann der Server die Anforderung vom Client ablehnen und die logische
Netzwerkverbindung zwischen dem Client und dem Server beenden. Eine
andere Option wäre für den Server,
die logische Verbindung mit dem Client zu beenden. Außerdem kann
der Server zukünftige
Versuche vom Clientgerät
oder Benutzer ablehnen, eine logische Netzwerkverbindung mit dem
Server herzustellen.
-
Um
die Client- oder Benutzeridentität
genau zu bestimmen, um zukünftige
Serververbindungen mit dem Client oder Benutzer abzulehnen, kann
der hier beschriebene Abfrage- und Antwortprozess ausgeführt werden,
nachdem ein Authentisierungsprozess (einschließlich Zugangsberechtigungsinformationen,
wie ein Kennwort, Smartcard, usw.) schon verwendet wurde, um das
Client Gerät
und/oder den Benutzer zu identifizieren. Durch das Durchführen des Abfrage/Antwortprozesses
nach dem Authentisierungsprozess, kann die Identität des Clientgeräts und/oder
Benutzers genau bestimmt werden, und so kann der Server gezielt
die genau authentisierte Identität
als Clientidentität
(sei es ein Clientgerät
oder ein Benutzer) dauerhaft sperren.
-
7 zeigt
veränderte
Schritte gegenüber 6 im
Flussdiagramm 320a, das die Schritte 330 und 331 weglässt, aber
die Schritte 322, 324, 326 und 328 hinzufügt. Der
Client sendet eine Anforderung zu einem Server, der Server sendet
eine Abfrage an den Client, der Client verarbeitet die Abfrage, und
der Client sendet die berechnete Antwort an den Server. Im Flussdiagramm 320a wird
die Antwort des Client in einem Entscheidungsblock 332 analysiert, um
zu bestimmen, ob der Server die Antwort akzeptiert. Wenn der Server
in Entscheidungsblock 332 bestimmt, dass der Client eine
falsche Antwort zurückgegeben
hat (die nicht zur erwarteten Antwort passt), lehnt der Server die
Anforderung des Client in einem Block 336 ab. Vorzugsweise
wird die logische Netzwerkverbindung zwischen dem Client und dem
Server in dieser Ausführungsform
an diesem Punkt beendet. Es ist möglich, dass eine Bedingung,
die auf dem Client existiert, modifiziert (z.B. korrigiert) werden
kann, so dass eine anschließende
Abfrage des Servers vom Client verarbeitet werden kann, so dass der
Client dann eine Antwort liefert, die zur erwarteten Antwort passt.
Oder, es kann besser sein, einem Client jede zukünftige Verbindung mit dem Server
zu verbieten, wenn die Antwort des Client nicht zur erwarteten Antwort
in einem einzelnen Fall passt. Dann werden, wie in einem fakultativen
Block 338 aufgezeigt, wenn der Server die Anforderung des
Client in Block 336 abgelehnt hat, alle zukünftigen
Anforderungen von dieser Clientgeräte- oder Benutzeridentität in einem
Block 338 ignoriert.
-
Gehen
wir noch einmal zu Entscheidungsblock 332: wenn die Antwort
des Client vom Server akzeptiert wird, dann wird die Anforderung
des Client in einem Block 334 verarbeitet. Als eine weitere
Alternative kann der Abfrageprozess zu einer anschließenden Zeit
während
der gegenwärtigen
Sitzung wiederholt werden, wenn der Client eine Anforderung zum
Server sendet. Da es wahrscheinlich nicht möglich sein wird, eine Abfrage
als Antwort auf jede Anforderung eines Client an einen Server zu
senden, ist es möglich,
wieder eine Abfrage an einen Client, der eine anschließende Anforderung
stellt, zu senden, was mit den gestrichelten Linien, die die Blöcke 334 und 322 verbinden,
angezeigt wird.
-
Abfragen
können
auch anschließend
zu zufälligen
Zeiten vom Server an den Client ausgegeben werden, um zu bestimmen,
ob der Client nach dem Durchlaufen der Anfangsabfrage eine Bedingung
geändert
hat. Zum Beispiel, wenn die geprüfte
Bedingung eine Bestimmung ist, ob der Client modifizierte Software
verwendet, könnte
es dem Client gelingen, eine Anfangsabfrage zu überstehen, aber er könnte anschließend beginnen,
modifizierte Software zu verwenden. Durch Ausgabe einer oder mehrerer
anschließender
Abfragen während
der Sitzung, kann solch eine Änderung
an der verwendeten Software erkannt werden. Flussdiagramm 320a zeigt
somit diese fakultative anschließende Abfrage mit der gestrichelten
Linie, die die Blöcke 334 und 324 verbindet.
-
Bevorzugter Prozess für das Realisieren
von Abfragen in einem Spiele-Netzwerk
-
8 gibt
ein Flussdiagramm 340 wieder, das die logische Abfolge
der sowohl von dem Client als auch von dem Server ausgeführten Schritte
im Spiele-Netzwerk der 5 zeigt. In der folgenden Diskussion
wird angenommen, dass das Spielesystem 100t versucht, auf
den Spieleserver 302 zuzugreifen (beide in 5 gezeigt).
Es wird jedoch darauf hingewiesen, dass der unten beschriebene logische
Prozess auch mit anderen netzwerkfähigen Spielesystemen verwendet
werden kann, und dass die vorliegende Erfindung nicht auf die Verwendung mit
dem Spielesystem 100 eingegrenzt ist.
-
In
Hinsicht auf 8 sind die von der Spielekonsole
ausgeführten
logischen Schritte in einem mit einer gestrichelten Linie gezeichneten
Kasten 342 gruppiert, während
die vom Spieleserver ausgeführten
logischen Schritte in einem mit einer gestrichelten Linie gezeichneten
Kasten 344 gruppiert sind. Bevor eine Spielekonsole versucht,
sich beim Spieleserver anzumelden, müssen mehrere Schritte ausgeführt werden.
Gemäß Kasten 342 muss
ein Benutzer einer Spielekonsole ein kompatibles Spiel erhalten,
wie im Block 352 aufgezeigt. Das Spiel muss das Netzwerkspiel
unterstützen.
Entweder die Spielekonsole oder das Spiel enthalten auch einen öffentlichen
Schlüssel
zum Gebrauch dafür,
der Spielekonsole zu ermöglichen,
vom Spieleserver erhaltene Abfragen hinsichtlich ihrer Herkunft
von einer vertrauenswürdigen
Quelle zu authentisieren. Alle XBOXTM-Spielekonsolen enthalten
einen öffentlichen Schlüssel entsprechend
dem privaten Schlüssel,
der von den XBOX LIVETM Spieleservern für das digitale Signieren
der an die Spielekonsole gesendeten Abfragen verwendet wird. In
einem Block 354 wählt
ein Benutzer ein netzwerkfähiges
Spiel aus und führt
die Spiele-Disk (eine einseitige Double Layer-DVD-Platte für netzwerkfähige XBOXTM-Spiele) ein in die Spielekonsole. Vom
Spiel-Startmenü wählt ein
Benutzer eine Netzwerkspieloption in einem Block 356, der
bewirkt, dass die Spielekonsole versucht, sich beim Spieleserver
anzumelden, wie im Block 358 gezeigt.
-
Wenn
wir jetzt zu den logischen Schritte kommen, die vom Server ausgeführt werden,
wie in mit einer gestrichelten Linie gezeichneten Kasten 344 gezeigt,
werden bevorzugt auch mehrere logische Prozesse ausgeführt vor
dem Ausgeben einer Abfrage hinsichtlich einer Anmelde-Anforderung
einer Spielekonsole bei der gegenwärtigen Erfindung. Im Block 346 wird
mindestens eine Abfrage bevorzugt auf Grundlage von erwarteten Konsolenmerkmalen
erstellt. Es wird darauf hingewiesen, dass Abfragen aus dem Stegreif
(„on
the fly") erstellt
werden könnten,
was aber die Echtzeitleistung des Spieleservers wahrscheinlich unerwünscht reduzieren
würde.
Vorzugsweise wird eine Vielzahl von Abfragen vorab erstellt, so
dass der Spieleserver verschiedene Abfragen wählen kann, um sie zu verschiedenen
Zeiten auszugeben.
-
Mehrere
verschiedene Arten von Abfragen sind in dieser bevorzugten Ausführungsform
realisiert. Die erste Art der Abfrage wird eine Codeabfrage genannt.
Eine Codeabfrage ist ein Segment ausführbaren Codes, das vom Spieleserver
an die Spielekonsole gesendet wird. Die Spielekonsole führt das Codesegment
aus, das aus vielen Maschinenanweisungen besteht und bewirkt, dass
die Spielekonsole eine Antwort berechnet, die an den Spieleserver
für den
Vergleich mit einer erwarteten Antwort zurückgegeben wird. Abfragen sind
so erstellt, dass der Spieleserver festlegt, was die richtige oder
erwartete Antwort sein soll. In Bezug auf das Spielesysteme 100, wie
oben beschrieben, sind die Merkmale von solchen Spielesystemen sehr
genau definiert. Jede Änderung
an der Konfiguration des Spielesystems 100, wie das Hinzufügen eines
modifizierten Chips (d.h. eines "mod
Chip"), die vorgenommen
wird, um eine Änderung
am Original-BIOS zu erzielen, kann leicht mit einer entsprechenden
Abfrage wahrgenommen werden.
-
Besonders
in Bezug auf Spielekonsolen kann eine Abfrage wahrnehmen, ob das
ROM/Kernel Image der Spielekonsole modifiziert worden ist. Solche Änderungen
werden gemacht, um Client Codeänderungen
zu ermöglichen,
und können
einem Benutzer auch ermöglichen,
modifizierte Spiele-Software zu verwenden um während des Spiels zu betrügen. Wenn
ausreichend Zeit und Ressourcen gegeben sind, kann fast jede Abfrage
vereitelt werden, wenn sie wiederholt ohne jede Änderung verwendet wird. Durch
die Verwendung vieler verschiedener Abfragen, wobei entweder Parameter,
die mit der Abfrage gesendet werden, und/oder der Inhalt des Codesegments
und/oder der Teil des Speichers, der vom Codesegment untersucht
wird, geändert
werden, wird es jedoch sehr schwierig, eine modifizierte Spielekonsole
zu verwenden, die nicht erkannt wird. Auch wenn ein Schalter verwendet
wird, um den Original-BIOS-Chip in den Stromkreis der Spielekonsole wiedereinzuschalten,
kann es, wenn man ein einziges Mal vergisst, den Originalchip wiedereinzuschalten,
dazu führen,
dass der Spielekonsole danach für immer
verboten wird, sich an den Spieleserver für Online-Spiele anzuschließen. Durch
das Verwenden mehrerer verschiedener Abfragen und das Erstellen von
neuen Abfragen als Antwort auf die Abhilfen (work-arounds), die
ausgegeben werden, um alte Abfragen zu umgehen, kann der Spieleserver
wirksam Spielekonsolebenutzern, die durch das Modifizieren ihrer
Spielekonsolen betrügen
wollen, einen Schritt voraus bleiben.
-
Viele
verschiedene Codeabfragen können vorab
erstellt werden, und der Administrator des Spieleservers kann die
allmähliche
Freigabe dieser vorab erstellten Codeabfragen so kontrollieren,
dass wahrscheinlich jeder organisierte Versuch, die Abfragen zu
umgehen, vereitelt wird. Vorzugsweise wird die bestimmte zu irgendeiner
gegebenen Zeit verwendete Abfrage zufällig aus einem Pool von verfügbaren Abfragen
gewählt.
Auf diese Weise werden zuvor gebrauchte Abfragen zufällig wieder
verwendet, was es sehr schwierig macht, die erwartete Antwort vorwegzunehmen,
die an den Spieleserver gesendet werden muss. Zum Beispiel kann
eine neue Abfrage für
jeden Tag des Jahres freigegeben werden. An dem Tag, an dem eine
neue Abfrage zuerst gebraucht wird, ist es für eine Spielekonsole, die versucht,
auf den Spieleserver zuzugreifen, wahrscheinlicher, auf die neue
Abfrage zu stoßen,
obwohl zuvor ausgegebene Abfragen auch an diesem Tag vom Spieleserver
ausgegeben werden können,
aber mit einer geringeren Häufigkeit.
Eine solche zeitlich geplante, aber zufallsverteilte Freigabe von
neuen und alten Abfragen führt
zu unvorhersagbaren neuen Abfragen, auf die man so häufig stoßen wird,
dass es sehr schwierig wird, eine Abfrage, die vom Spieleserver
ausgegeben wurde, auf die man noch nicht gestoßen ist, oder die man nicht
kennt, zu vermeiden.
-
Zusätzlich zu
dem Erstellen einer Vielzahl von verschiedenen Codeabfragen kann
jede Codeabfrage mit mehreren verschiedenen Parametern ausgegeben
werden, die die Antwort verändern,
je nachdem wie die Spielekonsole rechnet. Zum Beispiel wird eine
bevorzugte Codeabfrage sein, einen Ein-Weg Hash vom Inhalt des Speichers
auszuführen,
der das BIOS der Spielekonsole enthält. Wie oben bemerkt, sind
der SHA-1 Hash Algorithmus oder der MD5 Hash Algorithmus Beispiele
für Ein-Weg
Hash Algorithmen, die vorteilhaft verwendet werden können. Weil
das BIOS der Spielekonsole bekannt ist und der Spiel-Code für jedes
Spiel bekannt ist, hat der Spieleserver das erforderliche Wissen,
was das Ergebnis der Anwendung eines Ein-Weg Hash Algorithmus auf
einen bestimmten Teil des Speichers der Spielekonsole oder auf einen
bestimmten Teil des Datenabschnitts des Speichers oder auf einen
bestimmten Teil einer DVD sein muss, wenn die Spielekonsole versucht,
sich beim Spieleserver anzumelden. Wenn dies die einzige Form der Codeabfrage
wäre, die
jemals vom Spieleserver ausgegeben würde, könnte ein entschlossener Benutzer erfolgreich
den verwendeten Ein-Weg Hash Algorithmus bestimmen, und könnte bestimmen,
was die erwartete Antwort, erzeugt von einer unveränderten Spielekonsole,
wäre. Um
diese Codeabfrage zu vereiteln, würde eine modifizierte Spielekonsole angewiesen,
auf jede Abfrage mit der vorherbestimmten Antwort zu antworten.
-
Jedoch
kann der Spieleserver durch das Modifizieren der mit der Codeabfrage
von Zeit zu Zeit gesendeten Parameter die Schwierigkeiten bedeutend
steigern, zu bestimmen, was die erwartete Antwort sein soll. Zum
Beispiel ändert
sich die erwartete Antwort, wenn die Spielekonsole angewiesen wird, den
Hash Algorithmus über
einen anderen Teil des Speichers auszuführen. Durch das einfache Ändern des
Beginn- und Endbereichs im Speicher der Spielekonsole, worauf ein
Hash ausgeführt
werden soll, wie in der vom Spieleserver ausgegebenen Abfrage vorgegeben
ist, wird die erwartete Antwort erheblich verändert. Sogar das Ändern eines
einzigen Bit im Teil des Speichers der Spielekonsole, worauf ein Hash
ausgeführt
wird, verursacht eine wesentliche Änderung im Ergebnis des Ein-Weg
Hash Algorithmus.
-
Ein
anderer Parameter, der verwendet werden kann, um die Schwierigkeit
zu steigern, eine Codeabfrage basierend auf einem Ein-Weg Hash des Speichers
der Spielekonsole zu überwinden,
sollte verschiedene Startwert-Initialisierungsvektoren enthalten,
um den Ein-Weg Hash
eingangs zu speisen. Die verschiedenen Abfragen können auf
diese Weise verschiedene initialisierende Vektoren enthalten, die in
einem Teil des Speichers enthalten sind, auf den ein Hash ausgeführt werden
soll, um das erwartete Ergebnis zu ändern. Auch kann der Hash-Code
in verschiedenen Abfragen modifiziert werden. Zum Beispiel könnte der
Code fordern, dass eine XOR Operation auf einen Teil des Speichers
ausgeführt wird,
bevor ein Hash durchgeführt
wird.
-
Es
wird darauf hingewiesen, dass der Speicherbereichsparameter, der
Startwert-/Initialisierungsparameter
und die Änderungen
am Code, die realisiert sind, wie oben diskutiert, lediglich exemplarisch
für die
verschiedenen Parameter sind, die in den vom Spieleserver gesendeten
Abfragen verwendet werden können
und es ist nicht beabsichtigt, dass sie die Erfindung einschränken. Durch
das Einfügen von
Parametern in eine Codeabfrage kann der Spieleserver deutlich das
Ziel erreichen, die Anzahl von an eine Spielekonsole gesendeten
verschiedenen Codeabfragen zu steigern.
-
Andere
Teile des Speichers der Spielekonsolen können auch bei Codeabfragen
verwendet werden, die verlangen, dass eine Spielekonsole einen Ein-Weg
Hash berechnet. Der Hash kann auf dem RAM Speicher, dem ROM Speicher,
der Festplatte, oder dem DVD-Platten Speicher der Spielekonsole, oder
auf Kombinationen von allen basieren, oder auf ausgewählten Teilen
eines jeden solchen Speichers. Eine Spielekonsole, die unveränderten
Inhalt im Speicher enthält,
gibt eine berechnete Antwort zurück,
die zur vom Spieleserver erwarteten Antwort passt, weil der Spieleserver
weiß,
was im RAM Speicher, im ROM Speicher, auf der Festplatte oder auf dem
DVD-Platten Speicher einer Spielekonsole sein sollte. Im Kontext
von Spielekonsolen und der Spielesoftware ist solches Wissen leicht
bestimmbar. Eine falsche Antwort von einer Spielekonsole enthüllt, dass
eine Änderung
an einem oder mehreren der RAM Speicher, ROM Speicher, Festplatte
oder DVD-Platten Speicher der Spielekonsole (je nachdem welcher
Speicher im Einklang mit der Abfrage einem Hash unterzogen wurde)
vorgenommen wurde. Einen Ein-Weg Hash zu verwenden, macht es unmöglich, nur
ein einziges Bit des erwarteten Inhalts zu ändern, ohne dass es wahrgenommen
würde.
-
Die
Teile der Spielekonsolen, die von solchen Codeabfragen geprüft werden
können,
sind praktisch unbegrenzt. Bevorzugt werden Codeabfragen erstellt,
um ausdrücklich
Codesegmente des Spiels zu überprüfen, die
modifiziert worden sein könnten.
Segmente des Spiel-Codes können
auch überprüft werden,
um sich zu vergewissern, dass keine Vorrichtungen des Haifisch-Typs
verwendet werden, um Werte wie "die
Anzahl von Leben, die Sie übrig
haben" oder "die verfügbare Größe einer
Energie-Säule" zu modifizieren.
Die Festplatte der Spielekonsole kann auch überprüft werden, um wahrzunehmen,
ob eine Änderung
an ausgewählten
Dateien gemacht worden ist, wie Änderungen
an einem Videotreiber, die dem Spieler der Spielekonsole erlauben, durch
Wände zu
sehen. Eine an die Hardware der Spielekonsole gerichtete Codeabfrage
kann bestimmen, ob die Hardware der Spielekonsole modifiziert worden
ist, etwa durch hinzuzufügen
einer zusätzlichen
oder einer größeren Festplatte.
-
Eine
andere Form der Abfrage wird eine DVD-Abfrage genannt. Eine DVD-Abfrage
prüft,
dass Zufalls-Regionen der originalen, berechtigten Kopie des Softwaremediums,
worauf das Spiel verteilt wurde, vorhanden sind und sich nicht von
dem unterscheiden, was der Spieleserver erwartet. Das Ziel dieser
Abfrage ist nicht so sehr, Spielekonsolebenutzer zu erkennen, die
ihre Spielekonsole modifiziert haben, um zu betrügen, sondern vielmehr das Vorhandensein
von Raub-Software zu überprüfen. Raub-Software
ist von einer berechtigten DVD auf Compact Disc kopiert, wobei nur
die wesentlichen Teile des Spiel-Programms, das auf der ursprünglichen
berechtigten DVD war, gespeichert werden. Es ist viel billiger,
Daten einer DVD auf eine CD-ROM zu kopieren, und die Ausrüstung, um
Daten auf CD-ROM zu kopieren, ist viel weiter verbreitet und breiter
verfügbar.
Da Dual Layer DVDs im Vergleich zu CDs bedeutend mehr Daten aufnehmen
können (9
Gigabyte gegen etwa 700 Megabyte), sind viele Spiele nicht ausreichend
groß,
eine DVD völlig
zu füllen.
Der Freiraum solch einer DVD ist mit Zufalls-Bytes gefüllt. Raubkopien
von auf CD-ROM kopierten Spiele-DVDs enthalten diese zusätzlichen Zufalls-Bytes
nicht.
-
Eine
DVD-Abfrage fordert die Spielekonsole auf, einen Ein-Weg Hash von
einem Segment auf der DVD zu berechnen (wobei dieses Segment wenigstens
einen Anteil der auf der DVD enthaltenen Zufalls-Bytes enthält). Wenn
eine Spielekonsole eine unberechtigte, auf eine CD-ROM gebrannte
Kopie statt der Original-DVD verwendet, wird die von der Spielekonsole
berechnete Antwort falsch sein, und die Abfrage erkennt die Gegenwart
der Raub-Kopie anstatt der originalen, berechtigten Kopie des Spiel auf
DVD.
-
Eine
Möglichkeit,
um diese Abfrage zu umgehen, wäre,
eine genaue Kopie der DVD auf einer Festplatte in der Spielekonsole
abzulegen. Jedoch kann eine entsprechende Codeabfrage verwendet werden,
um Hardwareänderungen
wahrzunehmen, wie das Hinzufügen
einer großen
Festplatte und eines modifizierten BIOS, was es einem Online-Spiel erlauben würde, online
gespielt zu werden. Dementsprechend ist es besser, eine Code-Abfrage,
um eine modifizierte Spielekonsole zu erkennen, mit einer DVD-Abfrage,
um Raub-Software zu erkennen, zu verbinden.
-
Es
wird darauf hingewiesen, dass dieser Mechanismus nicht verwendbar
ist, um raubkopierte DVD-Platten zu ermitteln, die eine Bit-für-Bit Kopie
eines vollständigen
Original-DVD-Image darstellen. Die hierzu benötigte Ausrüstung jedoch, um eine einseitige
Dual Layer DVD mit 9 Gigabyte Volumen herzustellen, ist so kostspielig,
dass damit die meisten Menschen davon abgehalten werden, solche
Kopien anzufertigen. Sollten die Kosten der benötigten Ausrüstung zu einem gewissen Zeitpunkt
so stark fallen, dass das Duplizieren von DVDs einfach wird, kann eine
andere DVD-Abfrage eingesetzt werden, auf Basis von absichtlich
während
des Herstellungsprozesses von Spiele-DVDs in berechtigte DVDs eingebauten
Fehlern. Solche Originalplatten können mit absichtlichen Fehlern
in bestimmten nicht-kritischen Bereichen der Platte hergestellt
werden. Jene Fehler liefern einen Speicherlese-Fehler, wenn ein
Versuch gemacht wird, diesen Teil der Platte zu lesen. Eine Abfrage
könnte
absichtlich nach dem Vorhandensein von Lese-Fehlern suchen, die
erwartet würden,
wenn das originale, berechtigte Medium gelesen wird, und wenn keine
Lese-Fehler in den Bereichen auftreten, von denen bekannt ist, dass
sie Fehler enthalten, dann würde
das erwartete Ergebnis nicht erzielt und der Spieleserver würde entsprechende
Maßnahmen ergreifen.
-
Wenn
eine Abfrage ausgeführt
wird, sollte die bestimmte zu verwendende Byte-Region, auf die der
Ein-Weg Hash ausgeführt
werden soll, Teil der vom Spieleserver in der Abfrage erhaltenen
Parameter sein. Der Code (d.h. der Ein-Weg Hash Algorithmus), um
die Antwort tatsächlich
zu berechnen, kann im ROM auf der Spielekonsole gespeichert werden (oder
könnte
auf den Spiele-Medien d.h. auf der Spiele-DVD gespeichert werden),
statt in der vom Spieleserver gesendete Abfrage enthalten zu sein. Während dieser
Ansatz die Größe jeder
vom Spieleserver ausgegebenen Abfrage reduzieren würde, zeigt
er ein Problem, da der Code, um den Ein-Weg Hash Algorithmus zu
realisieren, jetzt relativ leicht von einem Hacker entdeckt werden
kann. Dennoch wäre
es durch das Wechseln von in der Abfrage gesendeten anderen Parametern
immer noch für
eine Spielekonsole schwierig, ein gefälschtes erwartetes Ergebnis
zurückzuschicken
anstelle eines unmittelbar berechneten Ergebnisses, das nicht zum
erwarteten Ergebnis passt.
-
DVD-Abfragen
können
in Verbindung mit Codeabfragen innerhalb derselben Abfrage-Antwort-Folge verwendet
werden, um sowohl Änderungen
an der Spielekonsole als auch Piraterie in einer einzelnen Abfrage-
und Antwort-Folge wahrzunehmen. Die DVD-Abfrage und die Codeabfrage
können zusammen
verwendet werden, um zu ermitteln, ob irgendwelche Veränderungen
an dem Code, der die Spielekonsole kontrolliert, gemacht wurden,
was dazu führen
könnte,
die DVD-Abfrage zu umgehen, indem auf Daten eines anderen Mediums
als DVD ein Hash ausgeführt
wird, wie z.B. auf eine Bit-für-Bit Kopie
des Spieleprogramms, die auf der Festplatte gespeichert ist. Während die
Daten von der Festplatte verwendet werden könnten, um die DVD-Abfrage erfolgreich
zu vereiteln, nimmt die Codeabfrage die Änderung an dem BIOS wahr, die
es der Spielekonsole ermöglicht,
ein Spiel von auf der Festplatte gespeicherter statt auf der DVD
gespeicherter Software zu spielen. Damit wird verhindert, dass die
veränderte
Spielekonsole die kombinierte Abfrage überwindet.
-
Die
oben beschriebene DVD-Abfrage ist ausdrücklich dafür entworfen, unberechtigte
Kopien von Software zu ermitteln, und ist eindeutig auf Nicht-Spieleumgebungen
anwendbar, wo die Entdeckung von Software-Piraterie gewünscht ist.
Jedoch tritt die Entdeckung unbefugter Software mit dieser Methode
nicht zutage, es sei denn, der Benutzer der Software wünscht Zugang
zu einem Server, der die vorliegende Erfindung realisiert. Obwohl
die Codeabfragen und die DVD-Abfragen, die oben beschrieben wurden,
Ein-Weg Hash Algorithmen verwenden, können Abfragen auf anderen Verfahren
basieren, durchgeführt
von ausführbarem
Code, der vom Server an den Client gesendet wurde, und sind somit nicht
auf Hash Algorithmen beschränkt.
Die Verwendung von Ein-Weg Hash Algorithmen ist lediglich beispielhaft
und schränkt
die gegenwärtige
Erfindung nicht ein.
-
Beziehen
wir uns noch einmal auf Flussdiagramm 340: in einem Block 348 wird
jede vorab erstellte Abfrage mit einem privaten Schlüssel signiert. Die
Verwendung des privaten Schlüssels
wird, obwohl nicht erforderlich, bevorzugt. In der vorliegenden
Erfindung wird ein Codesegment vom Server an den Client gesendet.
Im Allgemeinen, wenn irgendeine Computervorrichtung ausführbaren
Code von einer Außenquelle
erhält,
will der Benutzer dieser Computervorrichtung sicher sein, dass die
Außenquelle
vertrauenswürdig
ist. Da jede Abfrage mit einem privaten Schlüssel signiert wird, der ausschließlich nur
dem Spieleserver zugänglich
ist, und jedes Spiel, das zur Benutzung in Verbindung mit dem Spieleserver
(oder der Spielekonsole) freigegeben ist, den entsprechenden öffentlichen
Schlüssel
enthält,
kann der Benutzer der Spielekonsole sicher sein, dass der ausführbare Code,
den er vom Spieleserver empfangen hat, von einer vertrauenswürdigen Quelle
stammt. Im Block 350 können
Parameter für jede
Abfrage gesetzt werden, um zusätzliche
Abfragen zu generieren und Antworten für jede Abfrage und jede Abfrage,
die von solchen Parametern modifiziert ist, ist definiert.
-
Beziehen
wir uns noch einmal auf Block 358: die Spielekonsole versucht,
sich beim Spieleserver anzumelden. Als Reaktion wählt der
Spieleserver eine der vorerstellten Abfragen und eine Gruppe von Parametern
in einem Block 360. In einem Block 362 sendet
der Spieleserver die signierte Abfrage an die Spielekonsole. In
einem Block 364, verwendet die Spielekonsole den öffentlichen
Schlüssel,
der im Speicher der Spielekonsole enthalten ist, um sicherzustellen,
dass die Unterschrift des Spieleserver authentisiert ist, bevor
sie die vom Spieleserver an die Spielekonsole gesandte Abfrage ausführt. Wenn
die Signatur nicht mit dem öffentlichen
Schlüssel
authentisch ist, wird der Abfrage-Code vorzugsweise nicht ausgeführt. Jedoch
wird die Tatsache, dass die Signaturüberprüfung fehlschlug, dem Server
stillschweigend als Teil der Antwort zurückgeschickt. Der Grund dafür, dies
zu tun, ist, dass ein Scheitern der richtigen Authentisierung der
Signatur des Abfrage-Codes normalerweise ein Hinweis auf die Anwesenheit
eines veränderten
BIOS (d.h. dass der öffentliche Schlüssel verändert wurde)
ist, und dieses Ergebnis sollte als eine falsche Antwort betrachtet
werden, so wie jede andere Antwort, die mit der erwarteten Antwort
nicht übereinstimmt.
Im Block 366 führt
die Spielekonsole den Code mit den in die Abfrage einbezogenen Parametern
aus, um eine Antwort zu berechnen. Im Block 368 sendet
die Spielekonsole die berechnete Antwort auf den Spieleserver.
-
Im
Entscheidungsblock 370 beurteilt der Spieleserver die Antwort
der Spielekonsole und bestimmt, ob die Antwort zu einer erwarteten
Antwort passt. Die erwartete Antwort wird von der jeweiligen Abfrage
bestimmt, die in Block 360 gewählt wurde. Daher muss der Server
die jeweilige Abfrage aufzeichnen, die zwischen Block 360 und
Block 370 gewählt
wurde. Wenn keine Antwort vom Client empfangen wird, behandelt der
Server das Ausbleiben einer Antwort, als ob er eine falsche Antwort
vom Client erhalten hätte.
Jedoch ist es aufgrund der Möglichkeit,
dass der Client ungewollt genau zu diesem Zeitpunkt vom Server getrennt
werden könnte,
besser, zugunsten des Client weitere Möglichkeiten einzuräumen, bis
mehrmals keine Antwort aufgetreten ist. Obwohl nicht im Flussdiagramm
aufgezeigt, kann der Server alle aufeinander folgenden Versäumnisse
eines bestimmten Client, auf eine Abfrage zu antworten, aufzeichnen,
so dass, wenn der Client in einer vordefinierten Anzahl von Fällen zu
antworten versäumt
hat, eine vordefinierte Aktion vom Server ergriffen wird. In einem
Block 374 hat der Spieleserver bestimmt, dass die Spielekonsole
die erwartete Antwort geliefert hat, und die Spielekonsole wird
beim Spieleserver angemeldet, was dem Benutzer der Spielekonsole
ermöglicht,
Netzwerkspiel zu erfahren.
-
Ein
fakultativer logischer Schritt ist mit Entscheidungsblock 376 gekennzeichnet,
worin der Spieleserver an irgendeinem Punkt während des Spiels bestimmt,
ob eine neue Abfrage an die Spielekonsole ausgegeben werden soll.
Wenn keine neue Abfrage ausgegeben werden soll, endet der logische Prozess.
Wenn es bestimmt worden ist, dass eine neue Abfrage ausgegeben werden
soll, kehrt die Logik zurück
zum Block 360, und eine neue Abfrage wird vom Spieleserver
an die Spielekonsole gesendet. Derzeit ist es nicht vorstellbar,
dass ein Benutzer von einer Konfiguration auf eine Alternativkonfiguration
während
des Spiels umschalten kann, ohne das System neu zu starten. Jedoch
wenn eine Abhilfe entwickelt sein sollte, um einen Wechsel der Konfigurationen
während
des Spiels („hot
swap") zu ermöglichen,
könnte
eine solche Abhilfe dadurch vereitelt werden, dass Abfragen während einer
Spielsitzung zufällig
gesendet werden, um jede Änderung
an der Spiel- oder Spielekonsolenkonfiguration zu erkennen. Beziehen
wir uns noch einmal auf den Entscheidungsblock 370: wenn
der Spieleserver bestimmt, dass die Spielekonsole eine falsche Antwort
zurückgegeben
hat, dann führt
der Spieleserver eine vordefinierte Aktion im Block 372 aus.
Sobald die vordefinierte Aktion ausgeführt ist, ist der logische Prozess vorbei.
-
In
einer bevorzugten Ausführungsform
soll die vordefinierte Aktion die logische Verbindung zwischen der
Spielekonsole und dem Spieleserver sofort sperren. Weiterhin zeichnet
der Spieleserver bevorzugt die Kennzeichnung der Spielekonsole auf, der
der Zugang versagt worden ist, und verweigert, irgendwelche zukünftigen
Anmeldeversuche von dieser bestimmten Spielekonsole zu akzeptieren.
Es ist davon auszugehen, dass dieser Ansatz besonders wirkungsvoll
ist, Benutzer davon abzuhalten, ihre Spielekonsole zu modifizieren,
selbst wenn die Änderung
einen Schalter enthält,
der ihnen ermöglicht, ihre
Spielekonsole selektiv entweder in eine Originalkonfiguration zu überführen, die
eine Abfrage überstehen
würde,
oder in eine andere modifizierte Konfiguration zu überführen. Es
wird erwartet, dass ein häufiger
Benutzer des Spieleservers irgendwann vergisst, solch einen Schalter
richtig in die Originalkonfigurations-Position zu schalten. Irgend
ein solcher Fehler würde
zum dauerhaften Verbot für
diese Spielekonsole führen,
auf den Spieleserver zuzugreifen. Es wird darauf hingewiesen, dass
jedoch auch andere vordefinierte Aktionen ausgeführt werden können. Zum
Beispiel kann der Spieleserver lediglich das Aufkommen von modifizierten
Spielekonsolen protokollieren, die über einen Zeitraum versuchen,
Zugang zum Spieleserver zu erhalten, um das Ausmaß von modifizierten
Konsolen zu bestimmen, die im Netzwerk verwendet werden. Der Spieleserver
kann dem Benutzer der Spielekonsole eine oder mehrere Warnungen
erteilen, dass der Zugang von modifizierten Konsolen nicht erlaubt
ist, bevor die Spielekonsole vom Spieleserver dauerhaft ausgeschlossen
wird. Nach dem Erhalten solch einer Warnung kann der Spielekonsolebenutzer
der Spielekonsole dauerhaft ihre Originalkonfiguration zurückgeben
und danach auf den Spieleserver zugreifen.
-
Obwohl
die gegenwärtige
Erfindung beschrieben worden ist, sie in Verbindung mit den bevorzugten
Ausführungsformen
praktisch umzusetzen und den Modifikationen hierzu, verstehen jene,
die in diesen Fertigkeiten im üblichen
Maße geschult
sind, dass viele andere Modifikationen an der Erfindung gemacht
werden können.