Android JSON und die Sicherheit

  • Antworten:4
Phil G.
  • Forum-Beiträge: 86

28.12.2012, 15:50:20 via Website

Ich habe eine Frage bezüglich sicherer Kommunikation mit einem Server und eventl. hat da jemand Erfahrungen bzw. Tipps.

Android -> PHP Skript -> Android (Format: JSON)

Vorwort:

Für eine Webseite habe ich ein Fussballtippspiel programmiert und die Authentifizierung nutzt das bereits bestehende Forensystem phpBB.
Um sich die Arbeit mit einem eigenen Login zu sparen bzw. es für den User transparent zu halten nutzt das Tippspiel im Web die aktive Forensoftware-Session um den User zu identifizieren.

Einige User wünschten sich nun eine Möglichkeit auch per Android App auf das Tippspiel zuzugreifen. Eine einfache Verlinkung in den mobilen Webbrowser macht wenig Sinn, da die Tabellen bzw. Tippabgabe für große Bildschirme optimiert sind.

Also würde ich mir das gerne selber programmieren bzw. bin schon dabei.

Die Vorgehensweise ist relativ simple. In der Android-App setze ich Requests an meine PHP-Skripte ab (JSON) und bekomme auch schön ein JSON Objekt als Antwort welches ich dann in der App aufbereite.

-> Der User muss sich mit seinen Forendaten anmelden
-> da die Anmeldung (PHP Seite) etwas schwierig ist (verschiedene Datenbanken-Server für Forensoftware und Tippspiel),
wollte ich den ständigen Overhead (öffnen mehrere verschiedener Datenbankverbindungen) verringern und hole ich mir die Daten nur einmal
und liefere meiner Android App die User-ID des Tippspiels zurück -> diese wird gespeichert.

Um Tippaktionen ect. auszulösen, sende ich nun jedes Mal die ID + Daten an meine PHP Skripte.
Natürlich ist mir jetzt auch aufgefallen, das dies relativ unsicher (KLARTEXT) ist und ich bin auf der Suche nach dem "Wie mache ich es besser?"

Die Tippdaten sind relativ unspektakulär und ich wollte die auch nicht verschlüsseln, mir geht es lediglich darum das man ala "Man in the Middle" nicht die php-skripte aushebelt bzw. Tipps für andere User manipulieren kann ->momentan teste ich MCrypt und verschicke die ID verschlüsselt, das funktioniert soweit auch ganz gut

die Frage - reicht das oder welche anderen Ansätze gibt es da ?

Quelle: https://github.com/SeRPRo/Android-PHP-Encrypt-Decrypt

Noch als Ergänzung:

HTTPS / SSL - habe ich nicht.

Wie löst Ihr so ein Problem bzw. macht die Kommunikation sicherer ?

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

29.12.2012, 08:08:17 via Website

Ich antworte mal mit einer Frage - inwieweit glaubst du denn, dass mcrypt deine Sicherheitsanforderung erfüllt?

Antworten
Phil G.
  • Forum-Beiträge: 86

29.12.2012, 12:01:59 via Website

Also ich habe ein gutes Gefühl. Wie gesagt es geht hier auch nicht um das Gold von Fort Knox sondern nur um ein Tippspiel, wo es nicht einmal etwas z gewinnen gibt (ausser Ruhm und Ehre ein Fussballkenner zu sein). Ich will lediglich die UserID bzw. mein php-Skript vor Missbrauch schützen.
Eine "Klartext"-userId wäre dort zu unsicher.

Der Schlüssel ist ja "geheim" (Android-Code, Php-Skript) und AES gilt ja als relativ sicher, daher hoffe ich das es reicht.

Andere Lösungen die ich gefunden haben, setzten teilweise auf Hashes und md5 auf. Sprich Daten zusammen übermitteln und dann mit Hash überprüfen ob manipuliert worden ist. Mir ging es ja aber lediglich um die Verschleierung der "UserID" - das hat mir also nicht geholfen.

Wie gesagt ich wollte nur mal nachfragen ob andere User schon mal ein ähnliches Problem hatten bzw. was es da sonst so für Lösungsansätze gibt, manchmal sieht man ja den Wald vor lauter Bäumen nicht.

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

30.12.2012, 18:30:13 via Website

Und was passiert, wenn ich als böser Mensch jetzt den Verkehr zwischen deiner App und deinem Skript abhöre, einige mit mcrypt verschlüsselte Nachrichten aufzeichne und später erneut sende? Dann könnte ich doch schon beliebig Tipps für deine User abgeben. Oder habe ich was falsch verstanden?

Antworten
Phil G.
  • Forum-Beiträge: 86

30.12.2012, 21:08:31 via Website

Und was passiert, wenn ich als böser Mensch jetzt den Verkehr zwischen deiner App und deinem Skript abhöre, einige mit mcrypt verschlüsselte Nachrichten aufzeichne und später erneut sende? Dann könnte ich doch schon beliebig Tipps für deine User abgeben. Oder habe ich was falsch verstanden?

Na dafür müsste man zuerst wissen das der Token , die verschlüsselte UserId ist ... und das gezielte generieren neuer UserIds sollte ja wegen der Verschlüsselung etwas schwierig sein,
die Tippabgabe hat auch eine Deathline, danach werden alle Änderungsversuche abgewiesen ... aber ich sehe worauf du hinaus willst... man könnte ja trotzdem die aufgezeichnete Requests nehmen -> etwas an den Tippabgaben rumdrehen und erneut schicken.

Also sollte ich schon noch einen Hash über mein gesamtes "Datenpaket" berechnen (md5+salt) und auf der Gegenseite noch mal prüfen, das keiner dran rumgespielt hat.

Antworten