Immer mehr Spiele gehen den datengesteuerten Weg, was bedeutet, dass es eine Sicherheitsstufe geben muss, die eine einfache Manipulation ermöglicht. Ich habe gesehen, wo Spiele ihre Assets (Audio, Kunst, Daten) vollständig bündeln, und ich frage mich, wie sie das verwalten. Gibt es Anwendungen / Bibliotheken, die Sie bei der Verwaltung der darin enthaltenen Assets bündeln und unterstützen? Wenn nicht, gibt es gute Ressourcen, auf die Sie beim Packen / Entpacken / Verschlüsseln verweisen würden?
Diese spezielle Frage dreht sich um C ++, aber ich wäre offen zu hören, wie dies auch in C # / XNA verwaltet wird.
Um es klar auszudrücken: Ich bin nicht daran interessiert, eine Lösung zu finden, um Hackerangriffe zu verhindern. Auf der fundamentalen Ebene manipulieren wir alle Nullen und Einsen. Wir möchten jedoch verhindern, dass 99% der Benutzer, die das Spiel spielen, einfach XML-Dateien ändern, die zum Erstellen der Spielwelt verwendet werden. Ich habe viele Spiele gesehen, die alle ihre Ressourcen zusammen bündeln. Ich bin einfach neugierig auf die Methoden, die sie verwenden.
quelle
Antworten:
Eine gute Strategie ist es, Ihr eigenes Archivformat von Grund auf neu zu erstellen und ein indiziertes Format mit einer Tabelle zu erstellen, die auf Datenblöcke verweist, anstatt ganze sequentielle Dateien in Ihrem Archiv zu speichern. Verschlüsseln Sie dann Ihre Indextabelle und komprimieren Sie jeden Block separat mit LZMA / Bzip2.
Ein anderer Ansatz besteht darin, hier und da einige prozedurale Datengeneratoren zu verwenden (wenn Sie so weit gehen möchten, könnten Sie sogar die "Parameter" für diese Generatoren von einem Online-Server als zusätzliche Maßnahme abrufen) und einen Teil der Arbeit auszulagern Mit der GPU können Sie auch vollständige Speicherabbilder verhindern und einen Teil der verlorenen Leistung wettmachen.
Ich finde jedoch, dass solche Techniken im Allgemeinen die Leistung beeinträchtigen und Entwicklungszeit verschwenden, während sie dem Endbenutzer nichts anderes als potenzielle Probleme und nicht benötigte Fehler bieten.
Trotzdem ist nichts 100% sicher.
quelle
Versenden Sie keine sensiblen Daten.
Es gibt keine Möglichkeit , verschlüsselte Daten zu versenden, damit nur das Spiel darauf zugreifen kann. Sie können sich wirklich anstrengen, aber Sie kommen schnell in die DRM-Probleme.
Wenn Sie Ihr Spielvermögen vor neugierigen Blicken schützen möchten.
xor
die Dateimy_level.zip.xor
verwendenmy_level.map
).Das wird 95% der schelmischen Nutzer aufhalten. Die anderen 5% werden es bekommen, egal was Sie tun.
Sie müssen nicht wirklich zip und
xor
. Sie könnten stattdessen AES mit einem bekannten Schlüssel verwenden. Es geht darum, nicht viel Zeit damit zu verbringen.quelle
That will stop 95% of mischeivieous users.
es, wenn man es einbricht, während ich glaube, dass es immer noch Leute gibt, die es tatsächlich bekommen. Ich würde es begrüßen, wenn nicht alle und jeder dazu in der Lage sind. Heutzutage wissen die meisten 10-jährigen Kinder, wie man Dateien im Editor öffnet und umbenennt ...Es ist wahrscheinlich töricht, viel Zeit dafür aufzuwenden. Es gibt Tools, mit denen Textur- und Modelldaten direkt von der GPU abgerufen werden können, und Sounds können problemlos auf ein virtuelles Loopback-Gerät gerichtet werden. Alles, was wirklich sicher sein muss, muss sich auf einem Server befinden und nur über Challenge / Response funktionieren. Die Validierung von Kundendaten ist eine andere Geschichte, die Valves -verify_all ähnelt. Das ist immer noch schwierig, da Sie der lokalen ausführbaren Datei nicht vertrauen können, um sie durchzusetzen (oder zumindest nicht mehr, als Sie Ihrem Endpunkt-Anti-Cheat-System vertrauen, was ebenfalls eine dumme Idee ist).
quelle
Mein Job ist in Antitamper-Software. Ich kenne jemanden, der ein Old School Game Cracker ist. Er knackt Spiele wie Atmen. Du kannst Leute wie ihn nicht aufhalten. Wenn Ihr Spiel populär genug ist, werden mehrere geknackte Versionen Ihres Spiels nur wenige Tage nach der Veröffentlichung auf die Torrent-Websites gelangen, ganz gleich, was Sie tun. Mein Rat ist, nur das Nötigste zu tun, um den durchschnittlichen Joe, der denkt, dass er dieser Reverse Engineering-Sache vielleicht einen Stich geben möchte, davon abzuhalten.
quelle
Gute Frage, aber das ist alles andere als einfach zu beantworten.
Aus meiner Erfahrung mit Datensicherheit müssen Sie Folgendes bedenken:
1) Was sichern Sie, von wem und was sind die Auswirkungen , wenn diese Daten unsicher ist - Sicherheit ist weit mehr über die Risikobewertung als systematische technische Lösungen
2) Ich nehme an, Ihre Plattform Desktop (zB Windows / OSX) in diesem Fall , dass Sie Ein anderer Problembereich als proprietäre Hardware wie PS3 / Xenon, die ihre eigenen Versuche zur Kernel-Sicherheit unternimmt (ob dies eine gültige Lösung ist, steht zur Debatte).
3) Verschlüsselung! = Sicherheit. Die Verschlüsselung garantiert nur, dass Ihre Daten nicht gelesen werden können. Sie garantiert nicht, dass Ihre Daten nicht geschrieben oder wiedergegeben werden können.
Wenn Ihre Anforderungen sind Ihre Daten machen manipulationssicher , dann müssen Sie darüber nachdenken , Hashing Ihre Daten (vorzugsweise mit SHA-256 oder SHA-512) , erneut auf aber darüber nachdenken , warum es wichtig ist und was von Ihnen gewinnen Hinzufügen von Sicherheit zu Ihnen System.
Es ist auch , dass die Verschlüsselung wissenswert Hinzufügen Tech , um Ihr Produkt kann Auswirkungen legal haben aufgrund Exportbeschränkungen (Verschlüsselung Tech als beschränkt waffenfähigem Technologie eingestuft es glauben oder nicht) so Bibliotheken verwenden , die diese rechtlichen Probleme überwinden müssen , ist ratsam.
Verwenden Sie schließlich - niemals Ihre eigene Verschlüsselungstechnologie - bekannte, dokumentierte und erforschte Algorithmen wie AES, Blowfish, RSA usw
ps Public / Private Key ist nicht geeignet oder praktisch für die Verschlüsselung großer Datenmengen, daher verwenden DRM / PGP usw. ein hybrides RSA + -Symmetriesystem, dh sichern Sie den symmetrischen Schlüssel mit RSA, und verschlüsseln Sie ihn dann standardmäßig symmetrisch mit diesem Schlüssel
Es ist ein sehr großes komplexes Thema und ich habe es definitiv nicht gerecht gemacht
Ich hoffe, das hilft
quelle
Wenn Sie ein Beispiel für ein Format suchen, das klein (komprimierbar), lächerlich sicher und flexibel ist (wahrscheinlich überarbeitet), sollten Sie sich das MPQ-Format von Blizzard ansehen.
http://wiki.devklog.net/index.php?title=The_MoPaQ_Archive_Format
Das allgemeine Archivlayout sieht wie folgt aus:
Archiv Header Datei Daten Datei Daten - Spezielle Dateien Hash-Tabelle Blocktabelle Erweiterte Blocktabelle Starke digitale Signatur
Dieses Format hat ALLES. Blocktable, Extended Blocktable, in Sektoren aufgeteilte Daten (für einfaches Streaming), Unterstützung für 7 (!) Komprimierungsalgorithmen (wenn Sie die Soundkomprimierung zählen), die beliebig kombiniert werden können, schwache digitale Signatur, starke digitale Signatur und so weiter.
Wenn Sie die API von Blizzard kaufen würden, die sich mit der Dateiarchitektur befasst, würden Sie alles bekommen, was Sie jemals brauchen und so viel mehr.
quelle
Da dies kürzlich wiederbelebt wurde, scheint sich Ihre Frage (und damit alle bisherigen Antworten) nur mit dem Laden von Dateien zu befassen, das nur so sicher ist wie die ausführbare Datei, die es laden möchte. Auf dem PC gibt es nichts, was wirklich sicher ist (Sie verzögern nur die Leute), Sie können nach Dingen auf Servern suchen, aber selbst diese Prüfung kann entfernt werden, so dass modifizierte Exes ausgeführt werden können, egal was passiert. Die Konsolen sind immer noch "hübsch" gesichert, so dass ich in den meisten Fällen einen Hash von wichtigen Dateien generiere, dann den Hash mit einem privaten Schlüssel signiere, den öffentlichen Schlüssel in den Code einbette und den sicheren Hash gegen die Datei verifiziere.
Ich dachte, ich würde eine weitere Attacke ins Gespräch bringen, was mir erst letztes Jahr aufgefallen ist, da ich nicht viel auf dem PC versende. Cheat Engine ist ein sehr ordentliches kleines Programm, das das Erstellen eigener Hacks fast automatisiert (was bedeutet, dass jeder es verwenden kann). Es ist ziemlich weit fortgeschritten, was es kann, viele Hacks / Cheats, die ich gesehen habe, werden durch dieses oder etwas sehr ähnliches gemacht, was ich gesehen habe (alle Massenmarkt-Hacks). Mit etwas Arbeit, die Sie vor solchen Dingen schützen können, hängt alles davon ab, wie beliebt das Spiel ist und ob sich jemand genug für die Mühe macht.
Opps, vergessen zu erwähnen, eine gute Bibliothek für die Verschlüsselung (in C ++) ist LibTomCrypt .
quelle