Daten verschlüsselt mit App ausliefern

  • Antworten:6
  • Bentwortet
Sven R.
  • Forum-Beiträge: 1.904

16.06.2015, 17:14:31 via App

Moin!

Ich möchte Daten verschlüsselt mit einer App ausliefern, um die Daten zur Laufzeit der App zu entschlüsseln (und zu benutzen).
Wie könnte ich sowas realisieren, ohne einen Nutzer Login zu verwenden?

Mein Problem war immer, dass ich zum entschlüsseln von Daten (in den Assets) ein Passwort brauchen würde, dass ich ja dann auch irgendwie geschützt mit der App mitliefern müsste.

Für Hilfe wäre ich dankbar! 😀

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

16.06.2015, 20:53:42 via Website

Alles was die App selbstständig entschlüsseln können soll, muss explizit programmiert werden und damit ist es auch "reverse-engineerbar" und manuell nachstellbar.
Du kannst es einem Angreifer sehr schwer machen, indem du das Passwort über den Quellcode verteilst und/oder permutierst, etc pp, aber grundsätzlich ist alles was du auslieferst mit endlichem Aufwand auslesbar.
Wenn es Dir also darum geht die Daten wirklich sicher zu halten, musst Du sie per HTTPS auf Anforderung der App ausliefern.
Wenn Du ganz sicher sein willst, dass niemand dein Protokoll reverse-engineered und deine Daten systematisch "spidert", musst Du einen dynamischen Mechanismus implementieren, um die Authentizität eines Requests deiner App sicherzustellen und auch das kann man mit ausreichend Hirnschmalz aushebeln.

— geändert am 16.06.2015, 20:57:14

Antworten
Sven R.
  • Forum-Beiträge: 1.904

16.06.2015, 21:11:44 via App

Ja, war mir schon klar.
Ich machs jetzt so(etwas komisch vielleicht):
Ich stelle dem Nutzer beim ersten Start eine Frage, die er case sensitiv beantworten muss( und die eigentlich nur die Benutzer der App wissen sollten). Die Antwort ist der Schlüssel zu den Daten. Dann speicher ich die Daten verschlüsselt mit dem Schlüssel der Daten (in shared Preferences). Aus den Preferences wird dann bei jedem Start die Daten entschlüsselt um sie zu benutzen.

Ich glaube, das ist schwierig genug, im Vergleich zur Situation.

— geändert am 16.06.2015, 21:14:35

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

16.06.2015, 21:19:34 via Website

Das ist wieder was anderes :) Die erste Frage war konkret nach einer Lösung ohne User-Login und das geht IMHO nicht.

Mit "Passwort" kannst Du z.B. einfach SQL Cipher nehmen.
Damit kannst du ganze SQLite DBs in Echtzeit verschlüsselt schreiben/lesen.

— geändert am 16.06.2015, 21:22:21

Antworten
Sven R.
  • Forum-Beiträge: 1.904

17.06.2015, 19:07:33 via App

Ja... 😁

Dann lass ich die mitgelieferten Daten(assets) mit der Nutzereingabe entschlüsseln, speichere den Inhalt (es ist username und password) im Account Manager. Der sollte ja sicher genug sein. So kann dann bei jedem App Start username und password geholt werden. Falls die Anmeldung nicht funktioniert, dann sag ich dem User, dass er wahrscheinlich falsch geantwortet hat.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

17.06.2015, 21:06:23 via Website

Also "sicher" ist das natürlich absolut rein GARnicht ;)

Ich nehme an du willst auf diese Weise die Zugangsdaten zu einem zentralen System ausliefern?
Du musst dir bewusst sein: Eine User/Passwort Kombination, die Du EINMAL "in-the-wild" entlassen hast, ist kompromittiert und per Definition nicht mehr vertrauenswürdig. Du weißt nicht mehr wer wie Zugriff auf diese Daten erlangt und das System nutzt.

Wenn das wirklich das Szenario ist, nimm doch einen HTTPS Webservice als Proxy.
Deine App redet mit dem WebService, der macht dann die Zugriffe auf das Drittsystem und die Zugangsdaten bleiben auf einem System, das unter Deiner Kontrolle ist.
Außerdem kannst Du so über den WebService monitoring über die Nutzung machen und z.B. auch einzelne User der App anhand der Device-ID oder des Google-Kontos sperren.

Antworten
Sven R.
  • Forum-Beiträge: 1.904

18.06.2015, 21:29:22 via App

Sehr gute Idee mit dem Proxy! Vielen Dank! 👍😊

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten