Krautkanal.com

Veröffentlicht am 2016-02-04 15:22:15 in /prog/

/prog/ 8367: Android Sicher + Eindeutig

commoncentssss Avatar
commoncentssss:#8367

Du Bernd,

folgendes Problem:
Ich habe eine Android App (Anschnurspiel), die mit einem Server kommunizieren soll.
Die Abfertigung der Anfragen auf dem Server habe ich mit C geplant, da schneller als JavaVM.
Hier die erste Frage: Würde Bernd das eher mit Java regeln, da eine Menge an Standardzeugs mitkombt?

Die App hat ein Profil, in welchem die Daten zur Anmeldung stehen. Registrierung ist also beim ersten Appstart notwendig.
Jedes Schlaufon kann nur ein Profil haben (ähnlich wie WasIst-Anwendung). Um es als eindeutig zu identifizieren, bietet es sich an, einen Mix/Hash aus IMEI, Rufnummer, Mac-Adresse zu bauen?

Die Verbindung zum Server muss verschlüsselt sein TCP, SSL, TLS mit 3-Wege-Handschlag? ( https://en.wikipedia.org/wiki/Handshaking )
Alles nötig, damit das Spielerprofil nicht geklaut werden, bzw. in die Verbindung mit Mann-in-der-Mitte eingegriffen werden kann und sich jemand anderes die Errungenschaften auf sein Profil leitet.

Da Anschnur-Spiel, muss der Spieler, wenn er aktiv spielt, mehrmals zum Server verbinden für Updates/Synchro, geht sowas über eine erstellte Sitzung die nach einer gewissen Zeit abläuft, um nicht jedesmal einen Zeit-/Rechenintensiven Handschlag zu vereinbaren?


Ablauf erster Start:
App installiert
App startet
Registrierungsformular angezeigt mit Benutzernameneingabe
Eindeutiger Wert wird erstellt + Sichere Verbindung zum Server aufgebaut
Registriert
Spiel startet mit angelegtem Profil

Ablauf mit existierendem Profil:
App gestartet
Sichere Verbindung wird aufgebaut und Sitzung vom Server verlangt(?)
Server bestätigt Echtheit des Profils
Spiel startet mit geladenem Profil

Es muss also bei der Registrierung so etwas angelegt werden, was nur der Server und das Schlaufon weis und niemand anderes.
Passwortmöglichkeit dem Spieler geben um Schlüssel/Profil-Diebstahl zu verhindern?

Wie würde Bernd das umsetzen?
Bitte um Ratschläge von Ecksperdenbernd. :3

Es dankt, dein Bernd.

michigangraham Avatar
michigangraham:#8368

>IMEI, Rufnummer, Mac-Adresse
Alles Daten, die das Telefon im Klartext raussendet. Damit Authentisierung zu machen wäre dämlich. Warum nicht einfach Nutzername + Passwort?

markmushiva Avatar
markmushiva:#8370

>>8368
Wie macht es dann WasIstApp?
Passwort ist schon eine Überlegung wert. Es soll halt so komfortabel wie möglich für den Spieler sein. Also nicht jedesmal Zugangsdaten zum Spielen eingeben müssen.

joe_black Avatar
joe_black:#8376

>>8370
Vermutlich mit all diesen Werten und einer "zufälligen" Zahlenfolge, die sie dem Nutzer per SMS bei der Registrierung zusenden.

sementiy Avatar
sementiy:#8377

>>8367
Ich denke, dass eher das Netz der Flaschenhals bei deinem Projekt ist. Anstatt mit C Serverkomponenten zu basteln, um eine halbe ms schnellere Antworten zu geben, investiere deine Zeit lieber dahin, dass wenig Daten über die Leitung müssen.

wahidanggara Avatar
wahidanggara:#8386

Bernd würde den Datenaustausch in HTTPS realisieren und vorhandene Weichware nutzen.
Zur Authentifikation kannst du dem Klienten bei der Registrierung einen Schlüssel schicken.
Um das Profil an ein Gerät zu binden, kannst du zusätzlich die IMEI abfragen.