Verschlüsselte Inhalte in Spielen

45

Ich bin auf die Idee gekommen, 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 und Teil eines Ostereies sein sollen, während sie die Spieldaten durchgehen. Dies kann es zB für alle ruinieren, 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 dies den richtigen Entschlüsselungsschlüssel generieren und dann diesen Teil des Levels entschlüsseln und die Tür öffnen. Auf diese Weise wird das Osterei auch beim Durchsehen der Spieldaten ansonsten unzugänglich, da der Schlüssel nicht tatsächlich gespeichert ist und auf der Grundlage von Benutzereingaben generiert wird.

Hier ist ein weiteres Beispiel für das, was ich mir vorgestellt habe. Ich habe ein Puzzlespiel mit 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, erstelle ich 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 zum nächsten Level erhält, selbst wenn er die Spieldaten durchblättert.

Der Spieler könnte es, wenn er sich auskennt, "leicht" brachial 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 habe es eine Antwort schreiben in Bezug auf hier über

Gibt es heute Programme / Spiele, die so etwas gemacht haben? Speichern von verschlüsselten Inhalten in ihren Spielen? Und wenn nicht warum? Gibt es viele Regeln und Vorschriften, entweder im Ladengeschäft oder auf Länderebene? Sieht jemand offensichtliche Fallstricke, die ich vermisse? Wenn ich Dinge wie User-Experience ignoriere, erscheint mir die Idee vernünftig und macht mich neugierig, warum ich das noch nie gesehen habe.

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

Angenommen, ich habe eine Funktion, die eine Zeichenfolge von 20 Zeichen umfasst und einen symmetrischen Schlüssel generiert, mit dem ich Inhalte im Spiel verschlüsseln / entschlüsseln kann. Die einzige Möglichkeit für den Benutzer, an diesen Inhalt zu gelangen, besteht darin, diese 20 Zeichen zu kennen und denselben Schlüssel zu generieren. Dieser Schlüssel wird niemals direkt gespeichert und sofort auf der Grundlage von Benutzereingaben 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 Schachtel.

Bei 2 * 10 ^ 28 möglichen Kombinationen ist es wahrscheinlich wahrscheinlicher, dass die Leute den Inhalt auf die beabsichtigte Weise finden, als wenn sie die Spieldaten durchsehen.

Bearbeiten 2 : Der betreffende Inhalt wird vor dem Versand an den Verbraucher mit einem beliebigen und geheimen Schlüssel verschlüsselt . Dieser Schlüssel wird natürlich nicht mit dem Spiel ausgeliefert. Er oder sie müsste den Schlüssel irgendwie wieder zusammenpuzzeln, wenn er eine Reihe von Hinweisen erhält, die auf dem Schlüssel basieren und die während des Spiels oder irgendwo anders 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 schon erwähnt, 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 die Absicht haben, etwas so geheim zu halten, dass es nicht von einer einzelnen Person gelöst werden kann und die Menschen zusammenarbeiten müssen, oder wenn Sie befürchten, dass Ihr Osterei (beabsichtigt) so gut versteckt ist, dass es nicht funktioniert Wahrscheinlicher ist, dass jemand es im Code findet, eher durch das Spiel. Dann denke ich, dass das großartig funktionieren könnte.

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

Christer
quelle
56
Antworten konzentrieren sich auf die technischen Details, aber wenn Ihr Ziel zu verbergen Spoiler ist, der Ansicht , dass diese Informationen durch verfügbar werden einfach das Spiel zu spielen , an welchem Punkt (wenn Ihr Spiel ist sehr beliebt) es wird gehen Sie direkt auf einen Wikia Artikel für jedermann lesen, Spieler oder nicht.
Leushenko
4
Doppelter Stack-Austausch bei der Spieleentwicklung: "Wie kann ich meine Spieldaten vor gelegentlichem Hacking schützen?"
Philipp
5
Ist das nicht ein bisschen übertrieben für ein Unterhaltungsprodukt? Ich meine, die Leute könnten den "Schlüssel" bekommen, indem sie sich eine exemplarische Vorgehensweise ansehen oder spielen oder einfach Leute fragen, die ihn bereits gespielt haben. Außerdem könnte das Spiel aufgrund dieser "mehr oder weniger obskuren" Art des Umgangs mit Dingen fehleranfälliger werden. Ansonsten mag ich die Idee und es wird eine nette Spielerei sein, aber es wird die Leute nicht davon abhalten, zu hacken / zu betrügen, sondern es schwieriger machen
BlueWizard
3
Ich denke, das wäre besonders cool, wenn Ihre Benutzer dafür bekannt sind, Ihr Spiel zu hacken, und das Rätsel wirklich sehr schwer ist. Sie können sich in den Foren vorstellen, "was ist diese seltsame verschlüsselte Datei".
PyRulez
5
@ PyRulez Ah ja! Das war meine Hauptmotivation. Ich hasse es, wenn diese lästigen Regierungen die Spieldateien durchsuchen, um alle Ostereier zu finden. Alles nur, damit sie es in den Foren ihrer Feinde veröffentlichen und die Moral des Landes ruinieren können.
Christer

Antworten:

90

Diese Frage stellt sich die Frage, ob es möglich ist (nicht nur kommerziell realisierbar oder eine andere Interpretation), mindestens einen Benutzer zum Lösen eines Puzzles zu zwingen, anstatt bestimmte Spielinhalte durch Hacken freizuschalten.

Meines Wissens ist dies definitiv möglich. In der Tat ist es seltsam für mich, dass andere Antworten sagen, es sei absolut nicht möglich, auch wenn sehr explizit festgestellt wurde, dass der Schlüssel weder generiert noch gespeichert wird, sondern lediglich aus dem Spielstatus eingelesen wird (was Google-Plexes möglich gemacht haben könnte Werte). Das Argument, dass "das Spiel weiß, wie es zu entschlüsseln ist", sodass es nicht funktioniert, würde bedeuten, dass Open-Source-Verschlüsselungs- / Entschlüsselungssoftware (z. B. TrueCrypt) von Natur aus unsicher ist, weil Sie wissen, wie Container zu entschlüsseln sind (geben Sie einfach ein) Eine Zeichenfolge, die auf Tastatureingaben basiert, ist ganz einfach, oder?).

Stellen Sie sich im einfachsten Fall vor, dass das Spiel selbst ein Tastatursimulator ist und die Frage "Wie lautet das Kennwort für meine verschlüsselten Dateien?" Gestellt wird. Wir sind uns alle einig, dass der Quellcode für das Spiel nicht hilfreich ist. 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 verkettet ist?". Ist 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, ist die Antwort absolut JA, dies ist möglich.

mk12
quelle
9
Ich glaube, Ihre Antwort ist die einzige, die meine Frage bisher vollständig zu verstehen scheint. Zu viele scheinen automatisch zu denken, dass meine Frage genau wie bestimmte andere spielbezogene Verschlüsselungsfragen ist. Ich verstehe, woher sie kommen, obwohl ich mir wünsche, dass sie meine Frage etwas besser lesen.
Christer
7
Sie schlagen vor, dass die Lösung der Probleme nur verschlüsselt gespeichert wird. Es ist definitiv möglich, eine gültige Lösung zu bestätigen, aber es ist im Grunde unmöglich, darauf zurückzugreifen. (How-to-Store-Passwörter-101). Der zweite Teil der Frage, wie man verstecken Inhalt, der angezeigt keine Benutzereingabe erforderlich ist, ist jedoch nicht möglich (beachten Sie, dass , wenn ich keine Benutzereingabe sagen, ich meine , dass in einer sehr strengen Art und Weise) zu lösen
WorldSEnder
3
Ich denke, der wichtigste Punkt ist wirklich, dass es nur möglich ist, einen einzelnen Benutzer zur Lösung des Rätsels zu zwingen, da dieser zuerst alle anderen informieren kann. Das macht den Sinn der Verschlüsselungsübung stumm.
cmaster
4
Mit dem Quellcode (oder einem stringsauf der ausführbaren Datei) ein Rätsel wie "Wie heißt das größte Tier ...?" Möglicherweise muss der Spieler / Hacker noch eine Lösung finden , aber zumindest kann er die gefährliche Reise zu der Stelle im Spiel vermeiden, an der die Frage auftritt. Daher sollten auch die Rätsel selbst etwas versteckt sein (Text als Grafik kann oft ausreichen; ich denke, ich erinnere mich an ein Spiel, bei dem normale 3D-Objekte, wenn sie von einem bestimmten Punkt aus betrachtet werden, perspektivisch zur Lösung eines Rätsels oder eines anderen wichtigen Punkts kombiniert werden Informationen ...)
Hagen von Eitzen
4
Gegebene Zitate wie "Dies kann es zB für alle ruinieren, wenn es online gepostet wird." von der ursprünglichen Frage ... Entschuldigung, aber dieser Antwort fehlt der Punkt. Es wäre genauso anfällig, es für alle zu ruinieren, wenn die Antwort oder die entschlüsselten Dateien oder was auch immer veröffentlicht werden, und es wäre genauso anfällig, sie zu veröffentlichen.
Nathan Tuggy
57

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

Man nennt es "das grundlegende Problem der Kryptographie": Alice möchte eine Nachricht an Bob senden, ohne dass Charlie sie lesen kann, auch wenn er sie in den Griff bekommt. Das Problem bei dem von Ihnen vorgeschlagenen Ansatz ist, dass Bob und Charlie in diesem Fall dieselbe Person sind .

Ich kann den Wunsch verstehen, Ihre Benutzer nicht zu verderben, aber wenn Leute Verderber wollen, werden sie sie finden, und wenn sie es nicht tun, tendieren sie dazu, Verderber aktiv zu meiden. 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- Reihe an, Spiele, die auch nach ihrer Veröffentlichung noch viele Jahre lang beliebt sind. Sie tun dies, weil sie leistungsstarke Designtools mit dem Spiel liefern, mit denen Benutzer alles untersuchen, herausfinden können, wie es funktioniert, und ihre eigenen Inhalte erstellen und teilen können. Ein Spiel ist nur ein Spiel, bis es zu einer Gemeinschaft wird und Gemeinschaften Bestand haben.

Mason Wheeler
quelle
3
In diesem Fall wäre das Knacken der Verschlüsselung gleichbedeutend mit dem Schreiben eines Bots, der die Rätsel löst. Wahrscheinlich schwieriger als einfach das Spiel zu beenden und die Antworten aufzuschreiben
Ewan
15
Ich möchte nur sagen, dass diese Antwort meine Frage nicht wirklich beantwortet! Ich möchte eigentlich, dass die Leute "den Code knacken" oder vielmehr mein Rätsel lösen. Das ist der ganze Punkt, und ja, wenn jemand es herausfindet, kann ich ihn nicht davon abhalten, die Lösung zu teilen, ich versuche es nicht. Sie sagen jedoch fälschlicherweise "es muss alle Informationen enthalten, die zum Entschlüsseln erforderlich sind", da der gesamte Punkt, an dem diese Informationen vom Benutzer angegeben wurden, ausschlaggebend war. Lesen Sie die aktualisierte Frage für Details.
Christer
6
@Christer Es funktioniert und hier ist der Grund: Mason sagt, wen interessiert es, ob sie in die Spieldateien gelangen können, um die Rätsel-Antwort herauszufinden, denn nur eine Minderheit wird es tatsächlich tun .
Insane
9
@JonasDralle Das ist eine widerlich zynische Sichtweise, und es ist auch nicht wahr. Die starke, dauerhafte Gemeinschaft, die sich um Morrowind und Oblivion gebildet hat, hat Skyrim nicht daran gehindert, zu verkaufen. Wenn überhaupt, hat es den Erfolg gesteigert!
Mason Wheeler
3
@Cronax Wenn Sie eine Verschlüsselung im "One-Time-Pad" -Stil verwenden, hat Ihr Angreifer in diesem Fall keine bessere Möglichkeit, als über die Größe des Schlüsselraums hinweg zu brachialisieren. Mit der richtigen Art von Rätsel könnte es unmöglich sein, das Problem innerhalb der Lebensdauer des Universums zu lösen. Auch wenn es sich bei dem Osterei beispielsweise um eine Nachricht des Entwicklers handelt, kann ein Angreifer die echte Nachricht nicht von einer zufälligen, korrekt-egnistischen Nachricht unterscheiden.
Ben Aaronson
10

Ich habe lange genug gewusst, dass, wenn der Inhalt da ist, jemand ihn findet. Wenn Sie es schwieriger machen, ziehen Sie einfach entschlossenere Leute an. Je beliebter Ihr Produkt ist, desto interessanter wird es. Zum Teil, weil es eine Herausforderung ist, zum Teil, weil es so viele Orte gibt, an denen Sie sich durch das Posten dieser Art von Informationen "anrechnen" können.

Wenn der Schlüssel lokal vom Spiel generiert wird, können Sie eine Möglichkeit finden, das Spiel bis zu dem Punkt zu betrügen, an dem der Schlüssel generiert wird, oder einfach den richtigen Code ausgraben. Wenn der Schlüssel von einem Server an Sie gesendet wird, nachdem Sie bestimmte Schritte im Spiel ausgeführt haben, wird jemand Ihren Server dazu verleiten, zu glauben, dass er weit genug gekommen ist.

Am Ende profitiert Ihr Spiel viel mehr von der Zeit, die Sie damit verbringen, es unterhaltsam und ansprechend zu gestalten, als es zu erschweren, die Farbe der nächsten Stufe herauszufinden.

axl
quelle
Obwohl verschlüsselte Daten mit einem lokal gespeicherten Schlüssel immer gehackt werden können. In der Praxis nutzen alle modernen Apps und Spiele dies zum Teil.
Ewan
Schauen Sie sich Soomla und wie es Münzen tut
Ewan
Ich glaube, es ging darum, zukünftige Inhalte vor neugierigen Spielern zu verbergen und nicht darum, wie man Währungen und Spielerstatistiken vor Manipulationen
schützt
1
Da es sich um ein Osterei handelt, ist es genau das , was Sie wollen , um Aufmerksamkeit zu erregen .
PyRulez
6
Wenn Sie es schwieriger machen, werden Sie bestimmtere Leute anziehen. Ich denke, dies ist eine großartige Marketingstrategie für ein Spiel :)
sampathsris
9

Der Hauptgrund, warum dies auf gamedev sein sollte, ist, dass diese Verschlüsselung Auswirkungen auf 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 in den Daten Ihres Spiels enthalten ist. es wird vom Spieler erzeugt.

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 tun dies nicht.

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

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

Oder du gibst dir einfach etwas Geschwindigkeit und schleuderst dich auf die Plattform, wenn du direkt hineinkommst.

GLaDOS: Du hast also ein Puzzlespiel gemacht. Ein Puzzle-Spiel, das die Menschen bestraft, die am meisten Spaß an Puzzle-Spielen haben. Gut gemacht. Aber zumindest kommen diese Hacker nicht an Ihre wertvollen Daten. Denn Leute, die gerne Puzzlespiele lösen, sind genau die Leute, die online nach Lösungen für Puzzlespiele suchen.

Das ist es also absolut wert.

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

GLaDOS: Du hast also 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 in gewisser Weise gestaltet werden müsste.

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

GLaDOS: Du hast also ein Puzzlespiel gemacht. Ein Puzzlespiel, das interessanter zu hacken 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?

In jedem Spiel, in dem sich ein Charakter bewegt, werden Sie wahrscheinlich nicht die genauen Bewegungen des Charakters verwenden, um den Entschlüsselungsschlüssel zu konstruieren. Wenn Sie beispielsweise ein Puzzlespiel haben, in dem der Spieler bestimmte Gegenstände aufheben muss, um das Puzzle zu lösen, können Sie den Schlüssel von der Reihenfolge abhängig machen, in der diese Gegenstände berührt werden.

Dies führt natürlich zu dem oben genannten Problem, bei dem ein Spieler einen Weg findet, um 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 bieten, um die Brute-Force-Entschlüsselung zu erschweren. Bei Verwendung der oben beschriebenen Mechanik für die Abholreihenfolge ist jeder neue Artikel praktisch 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 schaffen das in Sekunden.

Heutzutage braucht man mindestens 128, um es sogar etwas herausfordernd zu machen. Was nun bedeutet, dass jedes Level viele Dinge enthalten muss, die sich wiederum auf Ihr Spieldesign auswirken.

Nicol Bolas
quelle
2
@Christer: Ihr Beispiel verrät nur die Irrelevanz Ihrer Gesamtfrage. Der Inhalt von "einem geheimen Altar außerhalb einer Quest" ist per Definition für jedes Spiel, bei dem es im Wesentlichen um das Abschließen von Quests geht , irrelevant . Und wenn es in Ihrem Spiel nicht darum geht, Aufgaben zu erledigen, warum sind dann Aufgaben darin enthalten? Auf jeden Fall bleibt die allgemeine Tatsache bestehen: Sie verbringen viel Zeit mit etwas, das für Ihr Spiel oder Ihre Spieler nicht relevant ist. Sie sollten Ihre sehr begrenzte Zeit und Energie auf Dinge konzentrieren, die wichtig sind .
Nicol Bolas
2
@Christer: " Da die Tatsache, dass Verschlüsselung verwendet wird, für 99,9% der Benutzer transparent ist, ist dies kein stichhaltiges Argument dafür, dass es eine schreckliche Idee ist. " Gehen Sie zu wirklich nützlichen Funktionen, dann ist es eine schreckliche Idee. Sie haben mehr Zeit mit der Formulierung Ihrer Frage und der Beantwortung von Fragen verbracht, als diese Funktion verdient . In dieser Zeit hättest du dein eigentliches Spiel schreiben können. Wenn es für 99,9% der Benutzer transparent ist, warum sollte es ihnen dann etwas ausmachen, wenn es verschlüsselt ist? Warum Zeit für 0,1% der Menschen verbringen?
Nicol Bolas
2
Es tut mir leid, aber ich habe Spaß daran, meine Spiele zu machen! Nicht jeder kann ein spielproduzierender Roboter sein. Lassen Sie mich auch beurteilen, wie lange dies dauert und wie viel ich bereit wäre, auszugeben. Der Verschlüsselungsteil selbst wäre zumindest einfach zu implementieren.
Christer
1
The consequence here is that whatever game you design must be so narrowly focused that there is only one possible solution to every level.Nicht unbedingt: Er könnte den Inhalt für jede mögliche Lösung verschlüsseln und für alle möglichen Lösungen doppelt verschlüsselte Inhalte versenden. Speicherplatz kann mit einer zweistufigen Verschlüsselung gespart werden - der Benutzerschlüssel in der verknüpften Antwort entspricht einer bestimmten Lösung, das Dokument entspricht dem Inhalt.
Mucaho
4
@mucaho: Das setzt voraus, "jede mögliche Lösung" im Voraus zu kennen.
Nicol Bolas
8

Die Antworten hier sind gut; Ich würde es jedoch aus einer anderen Perspektive betrachten. Was Sie beschreiben, ist eine Funktion . 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 es endliche Dollars und endliche Stunden und endliche Programmierer gibt, 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 für dieses Feature real angeben? Es gibt keine kostenlosen Funktionen, seien Sie also bezüglich der Kosten realistisch. Sind Sie bereit, tausend Dollar für diese Funktion zu zahlen? Hunderttausend? Eine Million? Welche Funktionen sind Sie bereit zu schneiden, um diese Funktion zu haben?

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

Eric Lippert
quelle
5

Das Alice Bob and Eve-Problem veranschaulicht dies gut. Wie Mason in seiner Antwort betonte, kann man Eva kein Geheimnis vorenthalten, wenn Eva 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 getrennt voneinander verschlüsselt ist, und eine externe Quelle für die Nachrichten für die nächste Ebene haben, die die Nachrichten ordnungsgemäß verwalten kann.

Aber irgendwann wird das strittig. Wenn jemand das Spiel selbst spielen kann, kann er auch ein Programm schreiben, um das Spiel 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 an Ihren Server geschickt werden, ist es die gleiche alte Geschichte.

Aber Sie vergessen hier ein Schlüsselelement. Es ist ein Spiel. Wenn jemand in einem Spiel schummelt, großer Schrei. Sie haben das Spiel nicht für Betrüger geschrieben. Das Gleiche gilt für Komplettlösungen für Quests oder Level-Anleitungen: Die Leute, die die Herausforderung suchen, 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 logischerweise unmöglich ist, aber AUCH WENN Sie könnten), würde es nur einen Kerl brauchen, der durchgeht, bevor er alles Nötige veröffentlicht, um es zu schlagen. Sie verzögern also nur das Unvermeidliche.

Verbringen Sie Ihre Zeit mit einem fantastischen Spiel. Es gibt zehn Dinge, die jedes Spiel braucht, und zuletzt war Verschlüsselung keine davon.

corsiKa
quelle
2

Ich glaube, deine Idee ist sinnlos.

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

Die Benutzer wissen, dass das Spielen so Spaß macht, wie Sie es gemeint haben, und dass sie nicht betrügen , da Ihre Kunden Ihnen bereits als Geschichtenerzähler vertrauen.

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


Wenn Ihr Spiel jedoch mehrere Lösungen enthält, z. B. die geheimen Super Mario Land-Level, können Sie durch die Verschlüsselung Ihrer Assets nicht einfach auf diese Lösungen zugreifen.

Dies scheint zwar ein Argument für Ihre Idee zu sein, ist es am Ende aber nicht.

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

Sie können das Durchsickern der Existenz geheimer Lösungen verhindern, indem Sie eine unbewusste Technik 1 anwenden. Es wäre jedoch immer noch verdächtig (warum sollten Sie dies tun, wenn es keine geheimen Lösungen gibt?), Würden die Spieler das Interesse verlieren, sie zu finden, und Sie hätten weniger Spieler , nicht mehr.
Immerhin können wir ein paar Stunden länger spielen, nachdem wir ein Spiel abgeschlossen haben, um ein paar Ostereier auszulösen, aber wir werden keine Minute länger spielen, wenn das Auslösen einen titanischen Aufwand erfordern würde!


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

1 Ganz ähnlich wie VeraCrypt mit Hidden-Volumes.

Margaret Bloom
quelle
1
Eigentlich mag ich diese Buchidee. Ich verstehe, dass es viele Leute frustrieren könnte, aber ich könnte mir auch vorstellen, dass Leute tatsächlich ein solches Buch wollen. Ich kenne Leute, die nicht anders können, als sich das Ende selbst zu verderben, indem sie weiterspringen, auch wenn sie es nicht versuchen. Also ich denke, ein solches Buch könnte helfen. Obwohl sie die Schlüssel immer noch online nachschlagen konnten, wenn sie nicht personalisiert waren. Sogar dann konnten sie das Ende einfach direkt nachschlagen. Wenn sie dennoch so verzweifelt wären, wäre es sinnlos, sie weiter aufzuhalten, wie Sie gesagt haben.
Christer
1

Ich werde nicht auf die wirtschaftliche Tragfä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 die Assets muss dies nicht bedeuten, dass die gesamten Texturen usw. nur der Plan verschlüsselt werden und welche davon 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. Bei vielen Spielen wird beim Schutz von Inhalten versucht, entweder die Unkenntnis der Sicherheit oder Mechanismen zu verwenden, die sicherstellen, dass die Spielesoftware nicht verändert wurde. Das sind nur Verzögerungstaktiken.

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

Selbst dann besteht jedoch ein Fehler in Ihrer Annahme, dass der Schlüssel nicht im Spiel vorhanden ist. Wenn dies nicht der Fall wäre, könnten Sie Ihre Spieler nicht dorthin lenken. Anstatt zu versuchen, den Tresor brutal zu erzwingen, könnte man stattdessen die Spiel-Assets zurückentwickeln und nach Hinweisen suchen. Ein mögliches Rätsel, an das ich denken kann, ist die Verwendung von Texturen zum Codieren von Glyphen. Das Kennwort besteht dann aus einigen der auf der Tastatur verfügbaren Informationen, die von den Orten angezeigt werden, die der Spieler (in der angegebenen Reihenfolge) hätte besuchen müssen:

  • Das Problem besteht darin, dass die Bilderkennung für Computer immer noch etwas schwierig ist
  • Darüber hinaus wird die Tatsache geschichtet, dass CAPTCHA-Cracker auf Buchstaben und Ziffern und nicht auf benutzerdefinierte Glyphen abgestimmt sind
  • Darüber hinaus wird die Tatsache geschichtet, dass durch das Kombinieren mehrerer Texturen (mit Transparenz), um dem Spieler die Glyphe anzuzeigen, kein einzelnes Asset im Spiel enthält, wie die Glyphe aussehen sollte
  • Verwenden Sie überall eine andere Textur (mit Fragmenten), aber niemals so, dass eine vollständige Glyphe entsteht, außer an verborgenen Orten, die der Spieler niemals erreichen kann

Und jedes Programm, mit dem die gewinnende Glyphenkombination automatisch extrahiert wird, hat einen verdammt guten Tag.


Drittens ist die nächste Schwierigkeit das Teilen. Sobald die Lösung für ein Geheimnis gefunden ist, wird es aufgedeckt. Im Idealfall sollte jeder Person eine etwas andere Version der Software ausgehändigt werden: eine, bei der der Schlüssel für die jeweilige Version des Spiels eindeutig ist. Ich nehme an, dass es einfacher ist, das Spiel (mit seinen Assets) von den "Geheimnissen" (verschlüsselt) und dem "geheimen Treiber" (dem Schlüsselgenerator, der viele Fragmente der Textur an vielen verschiedenen Stellen platziert) zu trennen , von denen einige die Passwörter bilden).

Der offensichtliche Angriffsvektor ist, entweder den Generator dazu zu verleiten, immer das gleiche Passwort zu wählen, oder den Prüfer dazu zu verleiten, immer das gleiche Passwort zu akzeptieren (indem er beispielsweise die Geheimnisse einer anderen Person herunterlädt).

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

  • Wenn der Benutzer eine Reihe von Dateien anfordert, generiert er zufällig ein Salt und so viele Kennwörter, wie Sie geheim haben, und erstellt dann die geheimen Assets (Sie können diesen Vorgang beispielsweise auf einmal / Tag / Benutzer beschränken, um eine Überlastung Ihres Servers zu vermeiden).
  • Speichern Sie den Zeitstempel der Generierung 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 einzureichen, gehen Sie wie folgt vor:

  • Lassen Sie den Benutzer sich anmelden (falls dies noch nicht geschehen ist)
  • 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 müssen Sie das Salt + Passwort hashen, um den Schlüssel zu erstellen
  • Andernfalls senden Sie den Schlüssel an den Benutzer zurück, damit er seine personalisierten Dateien sehen kann
  • Erhöhen Sie die Anzahl der Versuche, die dieses Kennwort mit diesem Konto unternommen hat

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

  • Die gemeinsame Nutzung eines Kontos zur Erstellung geheimer Dateien ist (a) beschränkt, da nur eines pro Tag erstellt werden kann und (b) unbrauchbar ist, da das zuletzt erstellte 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 überholt 1 ): Vertrauen Sie 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 Textur-Positionierungsdatei, mit der verhindert wurde, dass ein Programm den Schlüssel errät, und die es dem Benutzer dennoch ermöglicht, ihn abzurufen.

Matthieu M.
quelle
Vielen Dank für Ihre nachdenkliche Antwort. Sie machen gute Punkte. Obwohl ich hinzufügen möchte, dass der Schlüssel / die Lösung nicht im Spiel gespeichert werden muss, wie Sie sagten. Es könnte zum Beispiel im HTML-Code der Spieleseite versteckt sein, vielleicht möchten Sie Leute belohnen, die sich solche Sachen ansehen. Aber selbst im Spiel könnten Sie kreativer sein, als wenn Sie Rätsel als Lösung verwenden, Geometrie, die Informationen aus einem bestimmten Blickwinkel enthüllt, kontextbezogene Dinge verwenden, die Sie wahrscheinlich nicht bekommen würden, wenn Sie nicht viel über die Überlieferungen von gelesen hätten Spiel. Zum Beispiel, wie Skyrim Bücher oder Logbücher in Computerterminals hat.
Christer
Ich habe das in meiner Frage nicht erwähnt, also mach dir keine Sorgen. Ich stellte mir vor, dass Sie ein ganzes Spiel durchspielen würden und es sich wie ein vollständiges Spiel anfühlte. Es gab jedoch diese versteckte Tür, die ein seltsames Schloss hatte, an dem man nie vorbeikam. Es würde hoffentlich Leute neugierig machen und reden, vielleicht sogar Leute dazu bringen, zusammenzuarbeiten, um es herauszufinden. Da niemand es herausgefunden hat, ist es auch eine Art Ruhm, es herauszufinden. Wenn genug Zeit vergeht, werden vielleicht die schwer fassbaren Geheimnisse der Tür Legenden hervorbringen! Scheiße, dass das von jemandem ruiniert wurde, der nur die Spiel-Assets durchgesehen hat.
Christer
@Christer: Scheiße , dass das von jemandem ruiniert wurde, der nur die Spiel-Assets durchgesehen hat. => Das ist lösbar durch geheime Dateien mit dem Ort in der Tat zu beschreiben ( die Wiederverwendung von vorhandenen Texturen meistens), einmal das Geheimnis zwar einmal aus ist, ist es heraus ...
Matthieu M.
0

Es ist eine interessante Idee; eine Variante der Puzzle-Discs und des manuellen Kopierschutzsystems. Ich denke, einige der "ARG" -Spiele funktionieren so, und es wird verstanden, dass die Spieler gemeinsam gegen den Spieledesigner vorgehen.

Sobald die erste Person es entschlüsselt, 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 feststellen, obwohl Apple es möglicherweise aus dem App Store ablehnt und Sie möglicherweise die Lösung bereitstellen müssen, um es für Spielekonsolen genehmigen zu lassen.

pjc50
quelle
0

Über zusätzliche Sicherheitsmaßnahmen nachzudenken ist unterhaltsam, bringt Ihrem Produkt jedoch keinen konkreten Mehrwert - es zeigt, wie geschickt Sie mit den Crackern umgehen, die auf Ihr Produkt treffen. Grundsätzlich wird Ihr Gegner Sie einholen.

Im Gegensatz zu kreativen Entwicklern sind Cracker analytische Menschen, die Ihr Programm intuitiv ausnutzen können. Wenn Entwickler zu übermäßigen Sicherheitsmaßnahmen neigen, leugnen sie, dass der Cracker sein Schutzschema wieder umkehren könnte .

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

Avenicci
quelle
0

Mason Wheeler hat es richtig: Sie können es nicht tun. Jemand kann Ihr Spiel jederzeit zurü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 dem Sack. 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 durchzuarbeiten?

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

Soweit es zufällige Benutzer betrifft, die Ihre Texturen in den Avatar ihres Forums einfügen, na und? Betrachten wir es als Basiswerbung.

Wenn Sie davon besessen sind, Dinge zu "schützen", werden Sie nur von schwierigen Realitäten wie dem Erstellen des Spiels abgelenkt .

Wenn ich sehe, dass Leute, die kein Produkt haben, über ihre IP-Schutzsysteme für Dinge sprechen, die es nicht gibt, ist dies für mich ein begehbarer Moment, weil es eine große rote Fahne über das gesamte Projekt setzt.

Tyler Durden
quelle
-1

Einige Möglichkeiten:

  • Einfache alte Code-Verschleierung . Es wird den Code nicht unmöglich machen, ihn zu dekodieren, aber zumindest wird es schwierig sein.

  • Serverseitige Lösung. Sie senden einige spezielle Befehle an den Server und der Server kann Ihnen den Code senden ... oder sogar einen DLC herunterladen.

  • Sie können Steganography verwenden , um ausführbaren Code in anderen Inhalten auszublenden.

Dies macht Ihr Geheimnis nicht 100% sicher, aber es scheint, dass niemand Geld verlieren wird, wenn das Geheimnis gelüftet wird.

Borjab
quelle
-1

Es ist genauso nutzlos wie jedes andere Schema, in dem Sie sowohl Schlüssel als auch Algorithmus auf dem Client speichern. Wenn Sie fragen, wo der Schlüssel ist, verlasse ich mich auf Benutzereingaben und speichere ihn nicht selbst? Dieser genaue Algorithmus und seine Ressourcen sind der Schlüsselgenerierungsalgorithmus, den Sie soeben im verborgenen Zustand fest in das Spiel einprogrammiert haben. Jeder kann Ihren "nicht existierenden" Schlüssel abrufen, indem er nur ein kleines Programm schreibt, das Ihr Rätsel nach Ihren Regeln löst.

Oleg V. Volkov
quelle
1
Aber nicht jedes Rätsel lässt sich einfach mit einem Computer lösen, wie ein Rätsel, das noch nie zuvor gemacht wurde. Es ist für einen Computer auch schwierig, den gesamten Dialog im Spiel zu lesen und alle Texturen zu verarbeiten. Selbst wenn ja, wie würde es wissen, wenn etwas in Bezug auf dieses Rätsel auftauchte? Der vollständige Schlüssel muss nicht einmal im Spiel gespeichert werden. Vielleicht gibt es einen Hinweis darauf, dass die Rückseite der Box, in der sich der Schlüssel befindet, gelesen werden muss. Der Computer kann das nicht. Selbst wenn das Rätsel etwas wäre, das der Computer wie Sudoku lösen könnte, würde es zumindest das Rätsel lösen, ohne es zu umgehen.
Christer
@Christer, es ist nicht anders, als eine andere hausgemachte Verschlüsselung "Sicherheit durch Unbekanntheit" herauszufinden. "Auf der Schachtel" - Sie haben gerade den Schlüssel für die Ressource "Deckblatt" geschrieben , die Sie dem Benutzer anstelle der Ressource "Datei" geben, die Sie dem Benutzer geben . Große Sache.
Oleg V. Volkov
@Chriser, dh das Lösen von "einem Rätsel, das vorher nicht gemacht wurde", ist genau gleichbedeutend mit "dem Lösen eines hausgemachten Verschlüsselungsalgorithmus, der zuvor nicht gemacht wurde".
Oleg V. Volkov
Sehen Sie nicht, wie Sie einen Entschlüsselungsschlüssel basierend auf Benutzereingaben generieren können? Sehen Sie nicht, dass diese Benutzereingabe irgendetwas sein könnte? Was ist die richtige Benutzereingabe, die einen guten Entschlüsselungsschlüssel erzeugt, den Sie fragen? Wer weiß, es ist auf alle möglichen interessanten Arten im Spiel verborgen. Ich hoffe, Sie finden es, denn das ist der springende Punkt! Viel Glück damit, ansonsten.
Christer
Wie genau unterscheidet es sich von der Lesequelle? Sie führen die Aufgabe nach festgelegten Regeln aus -> Sie erhalten den Schlüssel. Das ist alles. Mit der Ausnahme, dass Sie Verknüpfungen verwenden können, indem Sie einfach Ihre "Hinweise" aus anderen Spielressourcen lesen, anstatt das Spiel tatsächlich zu spielen.
Oleg V. Volkov