GM RSA - Kryptographie Extension

    • GEX

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

    • GM RSA - Kryptographie Extension


      GM RSA stellt einige Funktionen zur Benutzung des RSA Algorithmus
      mit dem Game Maker bereit. Weiter enthalten sind einige weitergehende
      Funktionen, die auf den Basisfunktionen aufbauen.

      Inhalt:
      1) Was ist RSA?
      2) Funktionsweise der Dll
      3) Keyfiles
      4) Funktionen
      5) Erweiterte Funktionen


      [hide=1) Was ist RSA]RSA ist - grundlegend gesagt - ein Algorithmus zur Verschlüsselung von
      Daten. Genauer gesagt ein Asymetrisches Verfahren. Das heißt, dass im
      Gegensatz zu gängigen Symmetrischen Verfahren es zwei Schlüssel gibt:
      Einen zum Entschlüsseln und einen zum Verschlüsseln, wobei sich die beiden
      Schlüssel nicht auseinander berechnen lassen.
      Der Schlüssel zum Verschlüsseln heißt dabei Public Key, der Schlüssel zum
      Entschlüsseln Private Key. Das kann z.B. für den Aufbau einer sicheren
      Chatverbindung benutzt werden: Person A und Person B generieren beide
      RSA Schlüsselpaare und schicken sich jeweils den Public Key zu. Person A
      schickt also an Person B Nachrichten, die mit dessen Public Key verschlüsselt
      wurden. Nur Person B kennt den zugehörigen Private Key und kann die
      Nachrichten von A entschlüsseln.
      Ein Key besteht dabei immer aus zwei Werten: Zunächst einmal aus dem eigentlichen
      Private/Public Key und dann noch aus dem RSA Modul. Dieses ist bei beiden Schlüsseln
      gleich.
      Private und Public Key werden dabei von der Dll zusammen mit dem RSA Modul erzeugt,
      sie stehen in einem bestimmten mathematischen Zusammenhang (der im Prinzip durch einige
      Zahlen gegeben ist, die allerdings nach der Key Erzeugung aus Sicherheitsgründen gelöscht
      werden).
      Die eigentliche Ver/Entschlüsselung ist dabei die mathematische Funktion
      A=B^(key) mod modul
      wobei key bei der Entschlüsselung von B für den Public Key und bei der Verschlüsselung
      von B für den Private Key steht.
      Genaueres über RSA findet sich bei Wikipedia: de.wikipedia.org/wiki/RSA-Kryptosystem
      [/hide]
      [hide=2) Funktionsweise der Dll]Die Dll hat intern drei Variablen deklariert, Public Key, Private Key und RSA Modul.
      Diese lassen sich entweder von der Dll selber befüllen (indem sie einfach Keys erzeugt)
      oder durch Verwendung der Set Funktion (dabei sollte aber auf korrekte Keys geachtet werden).
      Beim Setzen der Keys kann man allerdings, wenn man nur vorhat zu Verschlüsseln, der Private Key
      auf 0 gesetzt, bzw genauso wenn man Entschlüsseln möchte, der Public Key auf 0 gesetzt
      werden.
      Ver- bzw Entschlüsseln greift dabei intern immer auf die gespeicherten Keys zurück, wobei es aus
      Sicherheitsgründen ratsam ist, diese nach Benutzung mit der Set Funktion wieder zu löschen.[/hide]
      [hide=3) Keyfiles]Viele der erweiterten Funktionen bieten die Arbeit mit Keyfiles an. Diese werden von den entsprechenden
      EnCrypt Funktionen erzeugt, wenn die angegebene Keyfile nicht existiert. Keyfiles haben einen Namen,
      der eigentliche Dateiname setzt sich dabei zusammen wie folgt: <Keyfilename>+_public.key für Public Keys
      und <Keyfilename>+_private.key für Private Keys. Die eigentlichen Dateien sehen dabei wie folgt aus:
      <Public/Private Key 1>
      <RSA Modul 1>
      <Public/Private Key 2>
      <RSA Modul 2>
      ...
      Die meisten Funktionen benutzen allerdings nur Keyfiles mit einem gespeicherten Key.[/hide]
      [hide=4) Funktionen]RSA_GenKey()
      erzeugt neue RSA Schlüssel

      RSA_SetKey(public,private,modul)
      setzt die verwendeten Schlüssel
      und den RSA Modul

      RSA_Crypt(Val)
      Verschlüsselt den angegebenen
      Wert mit dem aktuell gesetzten
      public key und dem RSA Modul

      RSA_DeCrypt(Val)
      Entschlüsselt den angegebenen Wert
      mit dem aktuell gesetzten public
      key und dem RSA Modul

      RSA_GetPublic()
      Gibt den aktuellen Public Key
      zurück

      RSA_GetPrivate()
      Gibt den aktuellen Private Key
      zurück

      RSA_GetModul()
      Liefert den RSA Modul zurück[/hide]
      [hide=5) Erweiterte Funktionen]RSA_EnCrypt_File(file,keyfile/public,target/modul,target)
      Verschlüsselt die Datei file wahlweise mit Angabe
      einer Keyfile (wobei diese den Namen <keyfile>+_public.key haben
      muss), wobei neue Keys erzeugt werden, wenn die Datei
      <keyfile>+_public.key nicht existiert (sie werden dann
      unter <keyfile>+_public.key und <keyfile>+_private.key gespeichert)
      oder durch direkte Angabe des Public keys und des RSA Moduls.
      Das Ergebnis wird unter target gespeichert.

      RSA_DeCrypt_File(file,keyfile/private,target/modul,target)
      Entschlüsselt die Datei file entweder mit dem Private Key
      <keyfile>+_private.key oder mit dem angegebenen Private Key
      und dem RSA Modul. Das Ergebnis wird unter target gespeichert.

      RSA_Multi_EnCrypt_File(file,keyfile,keynumb,target)
      Verschlüsselt eine Datei mit mehreren Schlüsseln; deren Zahl
      wird entweder durch die Anzahl der in keyfile enthaltenen
      Schlüssel oder (falls <keyfile>+_public.key nicht existiert)
      es werden keynumb Schlüssel generiert und als keyfiles gespeichert.
      die verschlüsselte Datei wird nach target geschrieben.

      RSA_Multi_DeCrypt_File(file,keyfile,target)
      Entschlüsselt die Datei file mit den in keyfile enthaltenen Schlüsseln
      und schreibt das Ergebnis nach target.

      RSA_EnCrypt_String(String,keyfile/public,modul)
      Verschlüsselt den String String mit dem in <keyfile> enthaltenen
      Key oder dem Public Key und dem angegebenen RSA Modul.

      RSA_DeCrypt_String(String,keyfile/private,modul)
      Entschlüsselt den String String mit dem in <keyfile>+_private.key
      enthaltenen key oder mit dem angegebenen Private Key und dem RSA
      Modul.[/hide]

      Kurz gesagt: GM RSA ist eine Verschlüsselungserweiterung für den Game Maker.
      Interessant ist sie besonders für Fälle, in denen Maps und Ressourcen extern gelagert
      werden sollen, ohne dass ein Spieler sie einfach durch andere Ressourcen ersetzen kann.
      In diesem Fall kann dem GM einfach der Private Key gegeben werden, während die Ressourcen
      mit dem zugehörigen Public Key verschlüsselt werden (der dann natürlich nicht im Programm
      gespeichert wird), sodass der Spieler im schlimmsten Fall die Ressourcen auslesen, aber sie
      nicht verändern kann.

      Anmerkung: Die Codes sind teilweise nicht von mir selber geschrieben, sondern von Wikipedia
      zusammengeklaut - nur um mich nicht mit fremden Lorbeeren zu schmücken.

      Sollte jemand ein paar brauchbare Skripts mit GM RSA schreiben, wäre ich sehr erfreut drüber,
      wenn er sie mir zuschickt, die Extension lässt sich jederzeit erweitern ;)

      Download (Dort findet sich auch ein kleines Beispiel)


      Zur Benutzung: Ich würde mich natürlich über einen Credits Eintrag freuen, muss aber nicht unbedingt
      sein, wenns nicht ins Spiel reinpassen würde. Sollte jemand vorhaben die Extension in einem kostenpflichtigen
      Spiel zu verwenden, bitte ich im vorhinein um eine Benachrichtigung.


      PS: Ach ja und ich warne euch, wenn ihr es auch nur ansatzweise gut findet, dann gibts ein Update!!!!
      ___________________________________________________________
      Beware of wild pointers
      ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
    • Benutzer online 1

      1 Besucher