it-swarm.com.de

Verschlüsselte Inhalte in Spielen

Ich hatte die Idee, Verschlüsselung zu verwenden, um zu verhindern, dass Benutzer Inhalte in meinem Programm außerhalb des Programms selbst herausfinden. So wie Benutzer möglicherweise Texturen finden, die nie im Spiel verwendet wurden, um Teil einer Art Osterei zu sein, während sie die Spieldaten durchgehen. Dies kann z.B. ruiniere es für alle, wenn es online gepostet wird.

Stellen Sie sich einen geheimen Raum vor, in dem der Spieler die richtigen Zahlen an einer Sicherheitstür im Spiel drücken muss. Wenn dies korrekt ist, sollte der richtige Entschlüsselungsschlüssel generiert und dann dieser Teil des Levels entschlüsselt und die Tür geöffnet werden. Dadurch ist das Osterei auch beim Durchsuchen der Spieldaten nicht zugänglich, da der Schlüssel nicht tatsächlich gespeichert ist. Er wird basierend auf Benutzereingaben generiert.

Hier ist ein weiteres Beispiel für das, was ich mir vorgestellt habe. Ich habe ein Puzzlespiel mit beispielsweise 20 Levels, die jeweils mit einem anderen Schlüssel verschlüsselt sind. Anstatt den Entschlüsselungsschlüssel mit dem Programm direkt zu speichern, damit jemand das Programm dekompilieren und finden kann, generiere ich stattdessen den Verschlüsselungs-/Entschlüsselungsschlüssel basierend auf der Lösung des vorherigen Puzzles. Auf diese Weise müsste der Spieler das Rätsel tatsächlich lösen, bevor er Informationen über das nächste Level erhält, selbst wenn er die Spieldaten durchschaut.

Der Spieler könnte, wenn er sich auskennt, es "leicht" brutal erzwingen, da die Anzahl der Rätsellösungen wahrscheinlich geringer ist als die Anzahl der Entschlüsselungsschlüssel. Es ist wirklich eine Frage der Komplexität des Puzzles und ist hier nicht sehr wichtig. Obwohl ich eine Antwort dazu gepostet habe hier drüben

Gibt es heute Programme/Spiele, die so etwas getan haben? Verschlüsselte Inhalte in ihren Spielen speichern? Und wenn nicht warum? Gibt es viele Regeln und Vorschriften, entweder auf Laden- oder Länderebene? Hat jemand offensichtliche Fallstricke gesehen, die mir fehlen? Wenn ich Dinge wie User Experience ignoriere, scheint mir die Idee richtig zu sein und macht mich neugierig, warum ich das noch nie gesehen habe.

Bearbeiten: Es ist möglicherweise nicht klar, was ich sage, daher hier ein konkreteres Beispiel.

Angenommen, ich habe eine Funktion, die eine Zeichenfolge von 20 Zeichen aufnimmt und einen symmetrischen Schlüssel generiert, mit dem ich einige Inhalte im Spiel verschlüsseln/entschlüsseln kann. Der einzige Weg, wie der Benutzer zu diesem Inhalt gelangen kann, besteht darin, diese 20 Zeichen zu kennen und denselben Schlüssel zu generieren. Dieser Schlüssel wird niemals direkt gespeichert und basierend auf Benutzereingaben im laufenden Betrieb generiert. Diese Charaktere würden im Spiel in Büchern versteckt sein, im Dialog mit NPCs, vielleicht sogar außerhalb des Spiels auf der Rückseite der Box.

Mit 2 * 10 ^ 28 möglichen Kombinationen zum Ausprobieren wäre es wahrscheinlich wahrscheinlicher, dass die Leute den Inhalt auf die beabsichtigte Weise finden, anstatt durch Durchsuchen der Spieldaten.

Edit 2: Der betreffende Inhalt wird mit einem beliebigen und geheimen Schlüssel verschlüsselt vorher wird an den Verbraucher versendet. Dieser Schlüssel wird offensichtlich nicht mit dem Spiel geliefert. Er oder sie müsste den Schlüssel irgendwie wieder zusammen rätseln, wenn eine Reihe von Hinweisen auf der Grundlage des Schlüssels gegeben wäre, die während des Spiels oder anderswo versteckt sind. Dieses System wäre jedoch für den Benutzer transparent, da Sie nicht wissen würden, dass der Inhalt verschlüsselt ist, es sei denn, Sie haben die Spieldaten tatsächlich durchgesehen.

Wie viele erwähnt haben, hat dies einen offensichtlichen Nachteil, da sein Anwendungsfall begrenzt ist. Sobald eine einzelne Person es herausgefunden hat, kann sie es mit allen anderen teilen, wenn nicht der Schlüssel/die Lösung, dann der Inhalt selbst. Wenn Sie jedoch beabsichtigen, etwas so geheim zu halten, dass eine einzelne Person es nicht lösen kann und die Menschen zusammenarbeiten müssen, um es zu lösen, oder wenn Sie befürchten, dass Ihr Osterei (beabsichtigt) so gut versteckt ist, dass es es löst Es ist wahrscheinlicher, dass jemand es im Code findet, eher durch das Spielen. Dann denke ich, dass das großartig funktionieren könnte.

Ich würde persönlich empfehlen, es nur einmal pro Spiel zu verwenden und nur für Dinge, die das Kernspiel nicht beeinflussen, z. Ostereier, ein geheimes Ende. Jedes Puzzle müsste so kompliziert oder gut versteckt sein, dass es die Leute so verlangsamt, dass sich die Verschlüsselung des Inhalts lohnt. Wenn dieses Puzzle den Fortschritten der Leute im Wege steht, hat wahrscheinlich niemand Spaß.

45
Christer

Bei dieser Frage wird gefragt, ob es möglich ist (nicht nur kommerziell realisierbar oder eine andere Interpretation), mindestens 1 Benutzer zu zwingen, ein Rätsel zu lösen, anstatt zu hacken schalte bestimmte Spielinhalte frei.

Meines Wissens ist dies definitiv möglich. Tatsächlich ist es für mich bizarr, dass andere Antworten sagen, dass es absolut nicht möglich ist, selbst wenn ausdrücklich angegeben wurde, dass der Schlüssel weder generiert noch gespeichert wird, sondern lediglich aus dem Spielstatus (der möglicherweise mögliche Googleplexe enthält) eingelesen wird Werte). Das Argument, dass "das Spiel weiß, wie man es entschlüsselt", damit es nicht funktioniert, würde dann bedeuten, dass jede Open-Source-Verschlüsselungs-/Entschlüsselungssoftware (z. B. TrueCrypt) von Natur aus unsicher ist, weil Sie wissen, wie man Container entschlüsselt (geben Sie einfach ein Eine Zeichenfolge, die auf Tastatureingaben basiert, ist einfach, oder?).

Stellen Sie sich im einfachsten Fall vor, dass das Spiel selbst ein Tastatursimulator ist und die Frage "Wie lautet das Passwort für meine verschlüsselten Dateien?" Stellt. Wir sind uns alle einig, dass der Quellcode für das Spiel nicht helfen würde. Stellen Sie sich nun vor, das Spiel stellt die Fragen: "Wie heißt das größte Tier der Erde, das mit dem Namen des kleinsten Tieres verknüpft ist?". Ist es nicht klar, dass selbst der Quellcode des Spiels nicht helfen würde und Sie das Rätsel noch lösen müssen ?

In Bezug darauf, ob dies möglich ist, lautet die Antwort absolut JA, dies ist möglich.

90
mk12

Es wurde versucht. Viele, viele Male. Es gibt eine ganze Unterbranche, die versucht, mithilfe von Verschlüsselung zu verhindern, dass Benutzer nach eigenem Ermessen auf ein Programm zugreifen. Und es funktioniert nie. Die besten Schutzmaßnahmen dauern in der Regel etwa einen Monat, bevor sie geknackt werden, und das Internet ist, dass es, sobald es einmal geknackt wurde, für immer überall geknackt wird, sobald jemand es veröffentlicht. Die offensichtliche Gefahr, die Sie vermissen, besteht darin, dass Ihr Programm, um die Daten verwenden zu können, alle Informationen enthalten muss, die zum Entschlüsseln erforderlich sind. Wenn der Computer dies kann, kann dies eine Person mit Zugriff auf den Computer tun Das.

Es wurde "das grundlegende Problem der Kryptographie" genannt: Alice möchte eine Nachricht an Bob senden, ohne dass Charlie sie lesen kann, selbst wenn er sie in den Griff bekommt. Das Problem mit dem Ansatz, den Sie verfolgen vorschlagen ist, dass Bob und Charlie sind die gleiche Person in diesem Fall.

Ich kann den Wunsch verstehen, Ihre Benutzer nicht zu verwöhnen, aber wenn Leute Spoiler wollen, werden sie sie finden, und wenn sie dies nicht tun, neigen sie dazu, Spoiler aktiv zu vermeiden. Aber wenn Sie wirklich ein großartiges Spiel machen wollen, gehen Sie den umgekehrten Weg: radikale Offenheit. Schauen Sie sich Dinge wie Neverwinter Nights, Starcraft oder die Elder Scrolls Serie an, Spiele, die jahrelang nach der Veröffentlichung beliebt bleiben. Sie tun dies, weil sie mit dem Spiel leistungsstarke Designtools ausliefern, mit denen Benutzer sich in alles vertiefen, herausfinden können, wie es funktioniert, und ihre eigenen Inhalte erstellen und teilen können. Ein Spiel ist nur ein Spiel, bis es zu einem Community wird und Communities Bestand haben.

57
Mason Wheeler

Ich bin schon lange genug da, um zu wissen, dass jemand den Inhalt finden wird, wenn er da ist. Wenn Sie es schwieriger machen, werden Sie entschlossenere Menschen anziehen. Je beliebter Ihr Produkt ist, desto interessanter wird es. Teilweise, weil es eine Herausforderung ist, teilweise, weil es so viele Orte gibt, an denen Sie durch das Posten dieser Art von Informationen "Glaubwürdigkeit" erlangen können.

Wenn der Schlüssel lokal vom Spiel generiert wird, können Sie einen Weg finden, um durch das Spiel zu schummeln, bis der Schlüssel generiert wird, oder einfach den richtigen Code ausgraben. Wenn der Schlüssel nach Abschluss bestimmter Schritte im Spiel von einem Server an Sie gesendet wird, wird jemand Ihren Server dazu verleiten, zu glauben, dass er weit genug gekommen ist.

Am Ende wird Ihr Spiel viel mehr von der Zeit profitieren, die Sie damit verbringen, es unterhaltsam und ansprechend zu gestalten, als es schwierig zu machen, herauszufinden, welche Farbe das nächste Level hat.

10
axl

Der Hauptgrund, warum dies auf gamedev.SE sein sollte, ist, dass diese Verschlüsselung Konsequenzen für das Gameplay hat.

Sie möchten, dass die Lösung für ein Rätsel der Verschlüsselungsschlüssel für das nächste ist. Das heißt, die tatsächlichen Daten dieser Lösung müssen das nächste Rätsel entschlüsseln. Dies bedeutet, dass der Entschlüsselungsschlüssel nirgendwo Teil der Daten Ihres Spiels ist. es wird vom Spieler generiert.

Und hier ist die Konsequenz. Die Entschlüsselung erfolgt normalerweise binär. Entweder haben Sie den genauen Entschlüsselungsschlüssel, der zum Entschlüsseln der Daten erforderlich ist, oder Sie haben keinen.

Die Folge hier ist, dass jedes Spiel, das Sie entwerfen, so eng fokussiert sein muss, dass es nur eine mögliche Lösung für jedes Level gibt. Daher muss Ihre Puzzlemechanik sehr sorgfältig gestaltet sein, damit der Spieler das Puzzle nicht anders als beabsichtigt lösen kann.

Nehmen Sie zum Beispiel Portal, Testkammer 10. Du sollst nach links gehen, ein paar Sachen machen, dann nach rechts gehen und ein paar Sachen machen, um eine Plattform abzusenken.

Oder Sie geben sich einfach etwas Geschwindigkeit und werfen sich auf die Plattform, wenn Sie direkt hineingehen.

GLaDOS: Also hast du ein Puzzlespiel gemacht. Ein Puzzlespiel, das die Leute bestraft, die Puzzlespiele am meisten mögen. Gut gemacht. Aber zumindest werden diese Hacker nicht auf Ihre wertvollen Daten zugreifen. Denn Menschen, die gerne Puzzlespiele lösen, sind genau die Leute, die online nach Lösungen für Puzzlespiele suchen.

Das ist es also absolut wert.

Puzzlespiele wie Adventures of Lolo, SpaceCHEM und Portal (unter Millionen von anderen) sind also genau richtig. Stattdessen müssen Sie Ihr Spiel so gestalten, dass es nmöglich ist, ein Puzzle mit mehr als einer Lösung zu erstellen. Das erfordert sehr viel Sorgfalt und erfordert normalerweise eine erhebliche Einschränkung des Gameplays.

GLaDOS: Also hast du ein Puzzlespiel gemacht. Ein Spiel, das von Leuten gespielt werden soll, die gerne kreative Lösungen für Rätsel finden. Und Sie haben ein Spiel entwickelt, das keine kreativen Lösungen für Rätsel bietet. *langsam klatschen*

Ich sage nicht, dass Sie ein solches Spiel nicht erstellen können. Oder dass so ein Spiel nicht gut sein kann. Nur dass ein solches Spiel auf eine bestimmte Art und Weise gestaltet werden müsste.

Oh, und Sie müssen dieses Gameplay so gestalten, dass es unmöglich (oder sehr schwierig) ist, mechanisch eine Lösung zu finden.

GLaDOS: Also hast du ein Puzzlespiel gemacht. Ein Puzzlespiel, das für hack interessanter ist als zu spielen. Gut gemacht.


Natürlich gibt es eine Einschränkung: die Bedeutung von "Lösung". Oder genauer gesagt, welche Elemente einer Lösung berücksichtigen Sie?

Bei jedem Spiel mit einem sich bewegenden Charakter werden Sie wahrscheinlich nicht die genauen Bewegungen des Charakters verwenden, um den Entschlüsselungsschlüssel zu erstellen. Wenn Sie beispielsweise ein Puzzlespiel haben, bei dem der Spieler bestimmte Gegenstände aufheben muss, um das Rätsel zu "lösen", können Sie den Schlüssel von der Reihenfolge abhängen lassen, in der diese Gegenstände berührt werden.

Dies stößt natürlich auf das oben genannte Problem, bei dem ein Spieler einen Weg findet, Dinge außerhalb der Reihenfolge zu tun. Was wiederum bedeutet, dass Sie das Puzzle so gestalten müssen, dass es nur eine Reihenfolge gibt, in der Sie möglicherweise Dinge aufnehmen können.

Darüber hinaus müssen alle Elemente, die Sie zum Erstellen des Entschlüsselungsschlüssels verwenden, eine ausreichende Entropie bereitstellen, um die Brute-Force-Entschlüsselung zu erschweren. Unter Verwendung der oben beschriebenen Mechanik für die Reihenfolge der Abholung ist jeder neue Artikel effektiv ein zusätzliches Bit. Wenn eine Ebene nur 8 Elemente enthält, führen Sie eine 8-Bit-Verschlüsselung durch. Welches ist Mist; Die meisten Smartphones können das in Sekunden erledigen.

Heutzutage braucht man mindestens 128, um es noch etwas herausfordernder zu machen. Was jetzt bedeutet, dass jedes Level viele Dinge enthalten muss, was sich wiederum auf Ihr Spieldesign auswirkt.

9
Nicol Bolas

Die Antworten hier sind gut; Ich würde es jedoch aus einer anderen Perspektive betrachten. Was Sie beschreiben, ist ein Feature. Funktionen haben Kosten und Nutzen. Die Kosten umfassen sowohl die Dollarkosten für die Erstellung des Features als auch die "Opportunitätskosten". Das sind: In einer Welt, in der Sie endliche Dollars und endliche Stunden und endliche Programmierer haben, bedeutet jede Funktion, die Sie ausführen, eine unendliche Anzahl möglicher Funktionen, die nicht an ihrer Stelle ausgeführt wurden.

Die Frage ist also: Können Sie die Kosten dieser Funktion real angeben? Es gibt keine kostenlosen Funktionen. Seien Sie also realistisch in Bezug auf die Kosten. Sind Sie bereit, tausend Dollar für diese Funktion zu zahlen? Hunderttausend? Eine Million? Welche Funktionen möchten Sie kürzen, um diese Funktion zu erhalten?

Ich denke, wenn Sie anfangen, Dinge in Bezug auf Kosten, Nutzen und verpasste Chancen zu priorisieren, werden Sie feststellen, dass Sie bereits zu viel Zeit damit verbracht haben, über diese Funktion nachzudenken, als Sie über Möglichkeiten nachgedacht haben könnten, das Spiel unterhaltsamer zu gestalten.

8
Eric Lippert

Das Problem mit Alice Bob und Eva veranschaulicht dies gut. Wie Mason in seiner Antwort betonte, kann man Eve kein Geheimnis vorenthalten, wenn Eve auch Bob ist.

Daher würde jede Lösung darin bestehen, dass Bob nicht über alle erforderlichen Informationen verfügt. Sie müssten jede Ebene als eine einzelne Nachricht behandeln, die separat voneinander verschlüsselt ist, und eine externe Quelle für die Nachrichten für die nächste Ebene haben in der Lage, die Nachrichten richtig zu halten.

Aber irgendwann wird das strittig. Wenn jemand das Spiel selbst spielen kann, kann er auch ein Programm schreiben, um das Spiel auch aufzunehmen. Alles, was Sie tun, ist, sie zu zwingen, von Ihrer externen Quelle (wahrscheinlich einem Server) hin und her zu gehen. Sobald sie wissen, wie die Nachrichten auf Ihrem Server erstellt werden, ist es dieselbe alte Geschichte.

Aber Sie vergessen hier ein Schlüsselelement. Es ist ein Spiel. Wenn jemand in einem Spiel betrügt, großer Schrei. Du hast das Spiel nicht für Betrüger geschrieben. Das Gleiche gilt für Quest-Komplettlösungen oder Level-Anleitungen: Die Leute, die die Herausforderung haben möchten, es selbst herauszufinden, werden die veröffentlichten Lösungen ignorieren. Selbst wenn Sie in der Lage wären, das Knacken des Spiels unmöglich zu machen, ohne es zu spielen (wir wissen, dass es logisch unmöglich ist, aber AUCH WENN Sie könnten), würde nur ein Mann durchgehen, bevor er alles Notwendige veröffentlicht, um es zu schlagen. Sie verzögern also nur das Unvermeidliche.

Verbringen Sie Ihre Zeit damit, ein großartiges Spiel zu machen. Es gibt Zehn Dinge, die jedes Spiel braucht und zuletzt habe ich nachgesehen, Verschlüsselung war keine davon.

5
corsiKa

Ich glaube, deine Idee ist sinnlos.

Wenn jemand Ihr Spiel spielt, entscheidet er sich dafür, es zu spielen, er tut es nicht, um eine Auszeichnung zu gewinnen, er tut es zum Spaß.

Benutzer wissen, dass der größte Spaß darin besteht, so zu spielen, wie Sie es gemeint haben, und nicht zu betrügen, da Ihre Kunden Ihnen als Geschichtenerzähler bereits vertrauen.

Sobald jemand die Lösung für ein Rätsel gefunden hat, d. H. Ihren Schlüssel, kann er sie einfach irgendwo im Internet veröffentlichen.
Spieler, die schummeln wollen, können das immer noch.


Wenn Ihr Spiel jedoch mehrere Lösungen enthält, wie z. B. die geheimen Ebenen von Super Mario Land, verhindert die Verschlüsselung Ihrer Assets einen einfachen Zugriff auf diese Lösungen.

Dies scheint zwar ein Punkt für Ihre Idee zu sein, am Ende jedoch nicht.

Selbst mit Verschlüsselung wäre es immer noch möglich zu wissen, dass solche geheimen Lösungen existieren.
Sobald bekannt ist, dass eine geheime Lösung existiert, es wäre irrelevant, die Spieler daran zu hindern, die geheimen Assets zu betrachten, da sie weiterhin über das Spiel selbst auf die verborgenen Teile des Spiels zugreifen möchten = (ja, auch wenn sie bereits jede versteckte Textur/Clip/Audio/Text gesehen haben).

Sie können das Auslaufen der geheimen Lösungen verhindern, indem Sie eine ahnungslose Technik anwenden1, aber es wäre immer noch verdächtig (warum das tun, wenn es keine geheimen Lösungen gibt?), würden die Spieler das Interesse verlieren, sie zu finden, und Sie würden weniger Spieler haben, nicht mehr.
Schließlich können wir nach Abschluss eines Spiels noch ein paar Stunden spielen, um einige Ostereier auszulösen, aber wir werden keine Minute mehr spielen, wenn das Auslösen eine titanische Anstrengung erfordern würde!


Was Sie tun möchten, ist wie ein Schreibbuch, in dem das nächste Kapitel mit einem Wort des aktuellen Kapitels verschlüsselt ist, um zu verhindern, dass sich die Leser das Ende selbst verderben.
Denk darüber nach, ist es nicht sinnlos?

1Ähnlich wie VeraCrypt mit versteckten Volumes.

2
Margaret Bloom

Ich werde nicht auf die wirtschaftliche Lebensfähigkeit eingehen, aber aus rein technischer Sicht ist es eine amüsante Herausforderung.


Ich möchte zunächst darauf hinweisen, dass alles, was nicht verschlüsselt ist, nicht geschützt werden kann. Sie können den Eingang nicht in ein Geheimnis einschließen, Cracker finden einen Weg um das Tor herum, stattdessen müssen Sie das gesamte Geheimnis zum Tor selbst machen. In Bezug auf Assets muss dies nicht bedeuten, dass die gesamten Texturen usw. nur den Plan verschlüsseln und welche verwendet werden und wie dies ausreicht. Aus Leistungsgründen möchten Sie so wenig Daten wie möglich verschlüsseln.


Zweitens haben Sie Recht, wenn der Schlüssel in der Software enthalten ist, wird er von der Software abgezogen. Viele Spiele versuchen beim Schutz von Inhalten, entweder Sicherheit durch Unbekanntheit oder Mechanismen zu verwenden, die sicherstellen, dass die Spielesoftware nicht geändert wurde. Das verzögert nur die Taktik.

Ihre Idee, die Lösung eines Rätsels als Schlüssel zu verwenden, ist ziemlich interessant. Die Verwendung des direkt bereitgestellten Schlüssels wird jedoch wahrscheinlich leicht brutal erzwungen. Behandeln Sie die Benutzereingabe stattdessen als Kennwort und verwenden Sie ein hochmodernes Kennwort-Hashing-Schema: Der erzeugte Hash ist der Schlüssel.

Selbst dann liegt ein Fehler in Ihrer Annahme vor, dass der Schlüssel nicht im Spiel vorhanden ist. Wenn dies nicht der Fall wäre, könnten Sie Ihre Spieler nicht darauf lenken. Anstatt zu versuchen, den Safe brutal zu erzwingen, könnte man stattdessen die Spielressourcen rückentwickeln, um nach Hinweisen zu suchen. Ein mögliches Rätsel, das ich mir vorstellen kann, ist die Verwendung von Texturen zum Codieren von Glyphen. Dann würde das Passwort aus einigen der auf der Tastatur verfügbaren bestehen, wie aus den Orten hervorgeht, die der Spieler (in der Reihenfolge) hätte besuchen sollen:

  • der Kern des Problems besteht darin, dass die Bilderkennung für Computer immer noch etwas schwierig ist
  • darüber hinaus legen wir die Tatsache fest, dass CAPTCHA-Cracker auf Buchstaben und Ziffern abgestimmt sind, nicht auf benutzerdefinierte Glyphen
  • darüber hinaus legen wir die Tatsache fest, dass durch die Kombination mehrerer Texturen (mit Transparenz), um dem Spieler die Glyphe zu zeigen, kein einzelnes Asset im Spiel enthält, wie die Glyphe aussehen sollte
  • verwenden Sie überall andere Texturen (mit Fragmenten), aber niemals auf eine Weise, die eine vollständige Glyphe erzeugt, außer an versteckten Orten, die der Spieler niemals erreichen sollte

und jedes Programm zum automatischen Extrahieren der Gewinnkombination wird einen verdammt guten Tag haben.


Drittens ist die nächste Schwierigkeit das Teilen. Sobald die Lösung für ein Geheimnis gefunden wurde, wird es enthüllt. Im Idealfall sollte jeder Einzelne eine etwas andere Version der Software erhalten: eine, bei der der Schlüssel für seine Version des Spiels eindeutig ist. Um es praktisch zu machen, vermute ich, dass es einfacher wäre, das Spiel (mit seinen Assets) von den "Geheimnissen" (verschlüsselt) und dem "geheimen Treiber" (dem Schlüsselgenerator) zu trennen, der viele Texturfragmente an vielen verschiedenen Stellen platziert , von denen einige die Passwörter bilden).

Der offensichtliche Angriffsvektor besteht darin, entweder den Generator dazu zu bringen, immer das gleiche Passwort auszuwählen, oder den Prüfer dazu zu bringen, immer das gleiche Passwort zu akzeptieren (indem er beispielsweise die Geheimdatei eines anderen herunterlädt).

Hier besteht eine mögliche Lösung darin, die Dateien mit dem Benutzerkonto zu verknüpfen und das Kennwort zu salzen, wie dies normalerweise empfohlen wird:

  • wenn der Benutzer eine Reihe von Dateien anfordert, generieren Sie nach dem Zufallsprinzip ein Salt und so viele Kennwörter, wie Sie Geheimnisse haben, und erstellen Sie dann die geheimen Assets (Sie können diesen Prozess beispielsweise auf einmal/Tag/Benutzer beschränken, um eine Überlastung Ihres Servers zu vermeiden.)
  • speichern Sie den Zeitstempel der Generation und das Salz in den Kontoinformationen des Benutzers
  • senden Sie den Zeitstempel und die personalisierten geheimen Dateien an den Benutzer zurück

Wenn der Benutzer dann bereit ist, ein Kennwort zu senden:

  • lassen Sie den Benutzer sich anmelden (falls noch nicht geschehen)
  • lassen Sie die Software sowohl den Zeitstempel als auch das Glyphenkennwort senden
  • wenn sich der Zeitstempel von dem gespeicherten unterscheidet, teilen Sie dem Benutzer mit, dass er einen veralteten Satz geheimer Dateien verwendet
  • wenn das Kennwort bereits zu oft versucht wurde, teilen Sie dem Benutzer mit, dass er einen veralteten Satz geheimer Dateien verwendet
  • andernfalls hashen Sie das Salt + Passwort, um den Schlüssel zu erstellen
  • andernfalls senden Sie den Schlüssel an den Benutzer zurück, damit dieser seine personalisierten Dateien sehen kann
  • erhöhen Sie die Häufigkeit, mit der dieses Passwort von diesem Konto versucht wurde

Ziel ist es, die gemeinsame Nutzung von Konten so weit wie möglich zu behindern:

  • das Teilen eines Kontos zum Generieren geheimer Dateien ist (a) begrenzt, da nur eines pro Tag generiert werden kann, und (b) unbrauchbar, da das zuletzt generierte Konto das andere veraltet
  • das Teilen eines Kontos und das Verteilen der zugehörigen geheimen Dateien ist nutzlos, da ein bestimmtes Kennwort nur N-mal verwendet werden kann, bevor es den Schlüssel nicht mehr liefert

Und wir sind fast da.


Schließlich könnte ein Cracker auch dort eine modifizierte Version des Spiels veröffentlichen, in der die geheimen Assets entschlüsselt und direkt integriert werden (unter Umgehung Ihres sorgfältigen Überprüfungsschemas).

Die Lösung ist einfach (und macht fast alles darüber obsolet1): Vertraue dem Kunden nicht.

Erstellen Sie eine Rangliste auf Ihrer Website und verfolgen Sie den Fortschritt der Spieler in ihrem Konto. Spieler können behaupten, dass sie das Spiel beendet haben, was sie wollen, aber wenn ihr Konto dies nicht widerspiegelt, weiß jeder, dass sie betrogen haben ...

... das nennt man sozialen Druck;)

1 Mit Ausnahme der Texturpositionierungsdatei, mit der wir verhindert haben, dass ein Programm den Schlüssel errät und es einem Benutzer dennoch ermöglicht, ihn zu erhalten.

1
Matthieu M.

Es ist eine interessante Idee; Eine Variante der Puzzle-Discs und der manuellen Kopierschutzsysteme, die das Wort aus dem Handbuch eingeben. Ich denke, einige der "ARG" -Spiele funktionieren so, wobei man versteht, dass die Spieler gemeinsam gegen den Spieledesigner vorgehen.

Sobald die erste Person es entschlüsselt hat, wird sie es offensichtlich im Internet veröffentlichen.

Generative oder prozedurale Inhalte können auf die gleiche Weise funktionieren: Sie sehen nicht die gleiche Welt wie ein anderer Spieler, es sei denn, Sie teilen einen "Samen".

Ich kann keine rechtlichen Probleme damit erkennen, obwohl Apple lehnt es möglicherweise aus dem App Store ab und Sie müssen möglicherweise die Lösung bereitstellen, damit es auf Spielekonsolen genehmigt wird.

0
pjc50

Das Nachdenken über zusätzliche Sicherheitsmaßnahmen ist unterhaltsam, bringt aber keinen konkreten Wert für Ihr Produkt - es zeigt Ihre Geschicklichkeit gegenüber den Crackern, die auf Ihr Produkt treffen. Ihr Antagonist wird Sie grundsätzlich einholen.

Im Gegensatz zu Entwicklern, die sich durch Kreativität auszeichnen, sind Cracker analytische Menschen - sie können Ihr Programm intuitiv nutzen. Wenn Entwickler zu übermäßigen Sicherheitsmaßnahmen neigen, leugnen sie, dass der Cracker ihr Schutzschema umkehren könnte, wieder.

Ob Sie an diesem Hintergrundwettbewerb teilnehmen möchten, das ist Ihre Aufgabe - aber lassen Sie sich nicht von Ihrem Endprodukt ablenken, das dem Kunden gefallen muss. Ein skurriles Verschlüsselungsschema, das das Spiel in einen Slug verwandelt, hilft nicht weiter.

0
Avenicci

Mason Wheeler hat es richtig gemacht: Sie können es nicht tun. Jemand kann Ihr Spiel jederzeit rückentwickeln, wenn er möchte.

Sie müssen Ihr Spiel ohnehin nicht so "schützen", wie Sie es beschreiben. Sobald eine Person das Osterei findet, ist das Geheimnis aus der Tasche. Wenn jede Kopie des Spiels ein anderes Osterei hat, ist nur die Hacker-Kopie bekannt. Interessiert es Sie wirklich, dass einer von 1000 Hackern das Osterei gefunden hat, ohne das Gameplay zu durchlaufen?

Das Urheberrecht sieht vor, dass niemand mit Ihrem Spiel Geld verdienen kann, ohne eine ernsthafte Klage zu riskieren. Das Urheberrecht schützt Sie also.

Was zufällige Benutzer betrifft, die Ihre Texturen in ihren Forum-Avatar einfügen, na und? Betrachten Sie es als Basiswerbung.

Wenn Sie besessen davon sind, Dinge zu "schützen", werden Sie nur von schwierigen Realitäten abgelenkt, wie: das Spiel machen.

Wenn ich sehe, dass Leute ohne Produkt über ihre IP-Schutzsysteme für Dinge sprechen, die es gar nicht gibt, ist das für mich eine Art Walkaway-Moment, weil es über das gesamte Projekt eine riesige rote Fahne wirft.

0
Tyler Durden