Verchlüsselung einer Datei

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • florpp schrieb:

      ich hab jetzt nicht den ganzen thread gelesen und hoffe einfach mal das hat noch keiner gesagt:
      wie wärs wenn du über ein extra programm eine datei mit serverpasswort auf das aktuelle hash der exe verschlüsselst? so kann wenns wirklich open source ist der serer nach dem bearbeiten nicht mehr aufgerufen werden... (klar das ist alles manipulierbar, sollte aber den durchschnitts gm-kiddie abhalten)


      So in etwa hatte ich das auch vor. Anders wird es wohl auch nicht möglich sein.
      Die Mapdateien werden i mEditor erstellt und durch ein separates Tool "verschlüsselt". Auf die Art und weise kann das Spiel dann die Maps lesen, aber keiner kann sie wieder bearbeiten (auch ncith mit dem Editor)
      Das Passwort wäre da mit MD5 verchlüsselt worden.

      Bzw eine Frage hätte ich da.
      Ich habe zwar jetzt die Möglichkeit ein Passwort mit md5 zu verschlüsseln, aber inwieweit funktioniert da die client-server verbindung?
      Das Game besitzt ein in MD5 verschlüsseltes Passwort und sendet es and den Server. Inwieweit weiss jetzt der Server ob das Passwort richtig ist?
      Muss der Server das PW auch als MD5 abgespeichert haben? Falls ja: Wäre dass dann nicht auch "unsicher" da man den md5 Schlüssel (sofern man an ihn rankommt) einfach als PW nutzen kann?

      Sorry für diese "dämlichen" Fragen. Kenne mich in dieser Materie blos nicht wirklich aus.
    • LEWA schrieb:

      Bzw eine Frage hätte ich da.
      Ich habe zwar jetzt die Möglichkeit ein Passwort mit md5 zu verschlüsseln, aber inwieweit funktioniert da die client-server verbindung?
      Das Game besitzt ein in MD5 verschlüsseltes Passwort und sendet es and den Server. Inwieweit weiss jetzt der Server ob das Passwort richtig ist?
      Muss der Server das PW auch als MD5 abgespeichert haben? Falls ja: Wäre dass dann nicht auch "unsicher" da man den md5 Schlüssel (sofern man an ihn rankommt) einfach als PW nutzen kann?

      Sorry für diese "dämlichen" Fragen. Kenne mich in dieser Materie blos nicht wirklich aus.
      Naja der Sinn ist nur dass man eben zu keinem Zeitpunkt das eigentliche ungehaschte Passwort erhalten kann. Die Datenbank auf dem Server darf nur die gehaschte Version enthalten so dass diese mit dem was vom Client kommt abgeglichen werden kann.
      Selbst wenn es ein "hacker" schafft das MD5-Passwort zu erhalten, kann er dieses nicht direkt verwenden um sich irgendwo einzuloggen oder ähnliches da dann die EIngabe erneut gehascht werden würde.
      Für ein System welches fest im GM einprogrammiert wurde eignet sich diese Methode aber nicht sonderlich (da dort die Verbindung über das gehaschte Passwort erfolgt weil das Spiel dekompiliert wurde..) weswegen man solche Komunikation (die nicht mit einem User-Account verbunden ist) auch immer über PHP-Skripte durchführen sollte! Dann kann jemand auch mit einem decompilierten Spiel nicht sehr viel Anfangen da er nicht wirklich in deinen server kommt sondern im Grunde nur das machen kann was von dir vorgesehen wurde (account erstellen, etc.). Eventuell für diesen Fall dann eine DDos Sperre einbauen.. damit niemand deinen Server mit 500000 Accounts fluten kann..

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Selbst wenn es ein "hacker" schafft das MD5-Passwort zu erhalten, kann er dieses nicht direkt verwenden um sich irgendwo einzuloggen oder ähnliches da dann die EIngabe erneut gehascht werden würde.

      ? Inwieweit würde die eingabe nochmal neu gehascht werden?
      Das Passwort ist mit einem Md5 hash versehen worden und so in der Datei abgespeichert.
      Dieser hash wird ja wie ein normaler String an den Server geschickt um ihn zu prüfen. (einfache Stringprüfung?)
      Wie wird er da nochmal neu gehascht? Ich mein: Wenn man den hash hat, hat man auch den Zugriff auf den server. oder verstehe ich hier was völlig falsch?


      Für ein System welches fest im GM einprogrammiert wurde eignet sich diese Methode aber nicht sonderlich (da dort die Verbindung über das gehaschte Passwort erfolgt weil das Spiel dekompiliert wurde..) weswegen man solche Komunikation (die nicht mit einem User-Account verbunden ist) auch immer über PHP-Skripte durchführen sollte! Dann kann jemand auch mit einem decompilierten Spiel nicht sehr viel Anfangen da er nicht wirklich in deinen server kommt sondern im Grunde nur das machen kann was von dir vorgesehen wurde (account erstellen, etc.). Eventuell für diesen Fall dann eine DDos Sperre einbauen.. damit niemand deinen Server mit 500000 Accounts fluten kann..

      das dekompilieren ansich könnte man mit dem obfusactor umgehen. Dekompilierugn wäre zwar möglich, aber damit wäre all der code unleserlich. Soltle doch halbwegs gut vor "hackern" oder ähnlichem gesindel schützen.
      (Zumindest wüsste ich nicht was man mit solch einer unleserlichen .gm81 datei anstellen könnte...)
    • LEWA schrieb:

      ? Inwieweit würde die eingabe nochmal neu gehascht werden?
      Das Passwort ist mit einem Md5 hash versehen worden und so in der Datei abgespeichert.
      Dieser hash wird ja wie ein normaler String an den Server geschickt um ihn zu prüfen. (einfache Stringprüfung?)
      Wie wird er da nochmal neu gehascht? Ich mein: Wenn man den hash hat, hat man auch den Zugriff auf den server. oder verstehe ich hier was völlig falsch?
      Glaube wir sind etwas vom Thema abgekommen bzw. ich bin. Geht's dir darum Dateien zu verschlüsseln oder ein System mit Login und accounts zu erstellen?
      Was ich meinte war wenn jemand ein Internet-sniffer benutzt und damit das Übertragen des Hashes eines Einlog-Vorgangs abfängt und den hash erhält, dann kann er wiederum sich _nicht_ als der Besitzer des Accounts ausgeben indem er den hasch einfach als Passwort eingibt. Denn das Spiel sollte so aufgebaut sein dass es die Eingabe sofort hascht.

      Wenn er aber das Spiel nun dekompiliert hat, dann kann er wiederum genau diesen Schritt ausschalten und dann die hasch-version anstelle des originalen Passworts verwenden um damit den Account des Users zu übernehmen.
      Ofuscaten hilft da nicht alluuviel da ein Spiel nicht soooo viele external_calls verwenden tut somit kann er einfach in der Suchfunktion des GM's alle external_calls abklappern bis er irgendwo auf den Call zu eine hasch-Funktion stößt. Mit etwas Mühe erkennt man das recht gut...
      Auch ein Skript dafür zu benutzen ist keine Alternative da ein hasch-vorgang ganz bestimmt strings benötigt um damit zu arbeiten (davon abgesehen dass das Hasch Skript von gmlscripts.com irgendwie in GM 8.1 ncht so richtig funktioniert).

      Dieses System macht aber nur Sinn wenn jeder Benutzer ein eigenes Passwort hat welches dann auch zum Verschlüsseln von Dateien, etc benutzt werden kann. Dabei sollte aber ebenfalls mit dem hasch verschlüsselt werden!
      Wenn du etwas fest mit einem festen Passwort einprogrammieren willst, dann ist das ein Risiko.

      EDIT: Noch drei Zeilen angefügt.

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Es ging mir nicht darum online accounts zu errichten, sondern ein Passwort für eine Online Highscore im Map-File zu speichern.

      Darum meinte ich ja: Der Hash wert des Passwortes für die Online Highscore wäre schon im File drinnen. Somit könntem an locker (wenn man an den Hascode rankommt)
      sich so oder so in die Higschore eintragen ohne der "zustimmung" des games.

      Der Schritt den du erwähntest mit dem neuchaschen des Passworts entfällt somit.

      Was ich meinte war wenn jemand eine Internet-sniffer benutzt und damit das Übertragen des Hashes eines Einlog-Vorgangs abfängt und den hash erhält, dann kann er wiederum isch _nicht_ als der Besitzer des Accounts eingeben indem er den hasch einfach als Passwort eingibt. Denn das Spiel sollte so aufgebaut sein dass es die Eingabe sofort hascht.

      Selbst wenn das Passwort beim eingeben gehascht wird, verstehe ich nicht was den Sniffer davor abhalten soltle den Hash als Passwort zu missbrauchen.
      Wenn der User das richtige Passwort eingibt, kann er sich online einloggen da der Hashcode des Passwortes und der am Server hinterlegene Hashcode dieselben sind.
      Somit kann eine Person dieses asnutzen um direkt zugriff auf seinen Account zu haben indem er den Server vorgaukelt (sagen wir mal mit einem eigenen gm-file) sich als User einzuloggen und ihm den entsprechenden Hashcode übergibt.

      Aber wie gesagt: Ich wollte eigentlich nur das Passwort einer Online-highscore sichern. (kein Accountsystem. Das mit der Anspielung auf Accounts war nur eine Theoretische frage.)
      Das Thema des topics war eigentlich das verschlüsseln einer Datei, aber dies hat sich schon für mich erledigt. Blieb nur die Frage mit dem Hashcode für das PW einer Online Highscore.
    • LEWA schrieb:

      Somit kann eine Person dieses asnutzen um direkt zugriff auf seinen Account zu haben indem er den Server vorgaukelt (sagen wir mal mit einem eigenen gm-file) sich als User einzuloggen und ihm den entsprechenden Hashcode übergibt.

      Aber wie gesagt: Ich wollte eigentlich nur das Passwort einer Online-highscore sichern. (kein Accountsystem. Das mit der Anspielung auf Accounts war nur eine Theoretische frage.)
      Das Thema des topics war eigentlich das verschlüsseln einer Datei, aber dies hat sich schon für mich erledigt. Blieb nur die Frage mit dem Hashcode für das PW einer Online Highscore.


      Das stimmt. Aber um sich als client auszugeben muss man den Server bzw. dessen Anbindung gut kennen und wenn man es halbwegs geschickt macht, muss man dafür das Spiel dekompiliert haben. Und dies ist nunmal leider möglich. Darum würde ich diesen Teil in eine Exe mit einem älteren GM auslagern und diese mit dem anti-Decompiler versehen.

      Eine Datei sicher zu verschlüsseln wenn jeder mit einem decompiler und der Suchfunktion das immer gleiche Passwort auslesen kann, ist schlichtweg unmöglich!
      Versuch die bereits erwähnte Methode: Externe Datei im geschützem GM oder C++/andere vollkompilierte Sprache schreiben.

      EDIT: Alternativ zum älteren GM könnte man auch das Studio als Lite nehmen. Damit lässt sich gut arbeiten und dank einigen Änderungen des Prinzips sollte das Erstellen eines Decompilers sich da deutlich schwieriger gestallten..

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)

    • Das stimmt. Aber um sich als client auszugeben muss man den Server bzw. dessen Anbindung gut kennen und wenn man es halbwegs geschickt macht, muss man dafür das Spiel dekompiliert haben. Und dies ist nunmal leider möglich. Darum würde ich diesen Teil in eine Exe mit einem älteren GM auslagern und diese mit dem anti-Decompiler versehen.

      So einfach "auslagern" kann ic hdas leider nicht
      Erstens weil das auslagern der Internet anbindung mit der Online Highscore im Spiel stattfinden muss, da die ganzen Variablen die hochgeladen werden sich ja im Spiel befinden.
      Das Spiel selber läuft leider nur auf GM8.1 und nicht darunter. (Würde ich das mit GM8.1 kompilieren würde der ganze grundaufbau der engine nicht laufen)

      Nebenbei beherrsche ich kein C bzw C++ (zwar ei nwenig Java aber ob das wirklich sicher ist...)


      Also soweit ich es jetzt verstanden habe ist es bei mir schlichtweg egal ob ich das Passwort direkt mit MD5 Hashe oder es direkt ohne jegliche verschlüssellung ins File Speicher.
      (Das file kann ich höchstens Mit xor-crypt verschlüsseln.)

      Letztendlich macht es ja keinen unterschied da man so oder so mit oder ohne Hash an die Onlinehighscore kommen kann sofern man das PW(als Hash oder direkt) in die Hände bekommt.

      ----------
      bzw. Das verschlüsseln des Map-Files wird so oder so in einem eigenen Programm stattfinden.
      Ob ich den GM8.1er (Obfusactor), Studo oder 8.0er nehme...
      Am liebsten würde ich da den Gm8.0 Pro nehmen ,blos ob man an den noch legal rankommen kann...

      (davon abgesehen dass das Hasch Skript von gmlscripts.com irgendwie in GM 8.1 ncht so richtig funktioniert).

      Inwieweit funktioniert es nicht richtig?

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von LEWA ()

    • LEWA schrieb:

      Inwieweit funktioniert es nicht richtig?
      Bei Sonderzeichen gibt es etwas anderes aus als ein Hasch aus PHP.. Glaube das kann man aber korigieren.

      Auf jedenfall freue ich mich auf dein Projekt wenns fertig ist :) Mach dir nicht mehr so viele Gedanken über die Sicherheit sonst verliert man das Wesentliche aus den Augen!

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von DragonGamer ()

    • Benutzer online 6

      6 Besucher