Datenverschlüsselung mittels Telefonnummer

  • 22 Antworten
  • Letztes Antwortdatum
C

Chefkoch90

Neues Mitglied
0
Hallo zusammen.

Ich möchte eine App programmieren, bei der Daten verschlüsselt und auf dem Handy gespeichert werden sollen. Die Daten werden dann verschlüsselt in einer SQlite Datenbank gesichert.

Für die Verschlüsselung wäre natürlich ein Schlüssel notwendig, um das Ganze dann wieder zu entschlüsseln. Ich würde diesen Schlüssel dann nur ungern auf dem Handy speichern, trotzdem man es getrennt ablegen könnte (z.b. auf der SD-Card). Eine andere Idee wäre, die Telefonnummer als Schlüssel zu verwenden, den man ja im Prinzip nicht abspeichern müsste und man das Programm dann auch nur in Verbindung mit der Nummer verwenden kann.

Meine Frage wäre: Hat jemand schon Erfahrung mit ähnlichen Projekten, ist die Verschlüsselung mit der Telefonnummer auch zu unsicher, oder hat jemand eine Idee wie man das Ganze am sichersten umsetzen könnte, ohne die Daten im Internet ablegen zu müssen?

Danke schonmal!
 
Das Problem mit der Telefonnummer ist aber, dass die "jeder" kennt.
Nehmen wir an ich kenne dein Programm und weiß es nutzt die Telefonnummer.

Dann habe ich die Daten von jemanden.
Ich denke an die Telefonnummer zu kommen ist nicht so schwierig, denn das ist nun mal etwas, dass man normalerweise freiwillig rausgibt und was für die öffentlichkeit bestimmt ist.

Die Frage ist halt was du verhindern willst:
Das jemand der die Daten so bekommt sie lesen kann.
Oder das auch jemand der das Telefon in die Finger bekommt damit nix anfangen kann.

Was bei der Telefonnummer dann natürlic wenig bringt.
Wenn es nur um die Daten geht, bleibt dir aber wohl nichts anderes übrig als den (privaten) Schlüssel auch auf dem Telefon zu speichern bzw auf der SD-Card.

Bzw. den privaten Schlüssel nochmal mit einem Passwort zu verschlüsseln.
Die Telefonnummer halte ich wie gesagt für nicht gut, da man damit immer seinen Schlüssel rausgibt.
 
Es ist ja so, dass wenn jemand das Handy unbefugt benutzen kann, kann er ja schlecht in den Programmcode schauen bzw. die Verschlüsselungsmethode herausfinden. Das Problem wäre ja nur wenn jemand das Handy ausliest und dabei auf das Programm stößt.

Wieso ist es denn besser, den Schlüssel auf der SD-Card zu speichern? Ist diese schlechter auszulesen? Und was macht man denn, wenn der Nutzer keine SD-Card verwendet?
 
Es kommt stark auf die Daten die du hast.
Aber normalerweise macht man es so, dass der Schlüssel auf einem Extra Medium ist.

Sprich die SD Card sollte nur eingelegt werden, wenn sie benötigt wird.
Auf einem Telefon ist das ganze natürlich immer etwas schwieriger.

Am PC z.B. nutzt man meistne ein USB Stick auf dem der Schlüssel gespeichert ist.

Wenn jemand das Handy unbefugt nutzt, dann brauch er doch gar nicht den Programmcode, die Daten werden doch automatisch entschlüsselt.
Sonst brauchst du den Schlüssel ja gar nicht zu speichern, sonder kannst ihn jedes mal von Hand eingeben lassen.

Ich arbeite beruflich mit Bankingsoftware und da ist es so, dass der private Schlüssel mit einem Passwort gesichert in eine Datei geschrieben wird.
Diese Datei liegt auf einem Wechselmedium (früher Disketten heute meist USB Stick).

Das Problem mit "Schlüssel speichern" ist aber immer, dass der im Zweifel ausgelesen werden kann.
Es kommt halt stark darauf an wie sicher deine Daten sein müssen, bei wichtigen Daten kann man evtl vom Nutzer verlangen, dass er zum entschlüsseln nur dann eine SD Card einlegt mit dem Schlüssel.


Wenn du den Nutzer jedesmal die Telefonnummer eintippen lassen willst, dann würde ich ihn direkt ein eigenes Passwort aussuchen lassen.
Das kann er dann nämlich geheim halten.
 
Grundsätzliches zu Telefonnumer als PIN (abgesehen davon, dass sie -wie schon erwähnt- nicht "geheim" ist):

Was ist, wenn jemand seinen Telefonanbieter wechselt? Sollen dann die Daten futsch sein?
Was ist, wenn man ein Telefon mit zwei SIM karten hat?
 
Es geht schlicht und einfach nicht.
Wenn du den Schlüssel irgendwo speicherst dann hat ihn ja jeder.

Also den Nutzer beim Programmstart das sichere (hinreichend lang und komplex) Passwort eingeben lassen (mir diesem sind die Daten verschlüsselt). Dass ist die einzig sichere Methode. Alles andere ist fake Sicherheit.

cu
 
Also das mit dem Passwort war von vornherein so geplant, das der Nutzer ein selbst gewähltes Passwort eingeben muss, um an seine Daten zu kommen. Die Daten sollten dann per Schlüssel gesichert werden. Sprich das Passwort und die Daten.

Also den Nutzer beim Programmstart das sichere (hinreichend lang und komplex) Passwort eingeben lassen (mir diesem sind die Daten verschlüsselt). Dass ist die einzig sichere Methode. Alles andere ist fake Sicherheit.

Wie meinst du das, mit diesem sind die Daten verschlüsselt? Wenn du das Passwort als Schlüssel verwendest, musst du dieses doch im Endeffekt als Klartext speichern, um die Daten wieder entschlüsseln zu können oder denk ich da gerade falsch?
 
Zuletzt bearbeitet:
Normalerweise lässt man den Nutzer dann sein Passwort wieder eingeben, um die Daten zu entschlüsseln, da braucht nichts in Klartext gespeichert werden, was ganz ganz böse ist, dann lieber keine Verschlüsselung, als irgendwelche Passwörter in Klartext ablegen :D

Die Frage ist, was willst du denn machen? Daraus lässt sich ggf. besser ableiten, wie man es am sinnvollsten umsetzt.
 
Es scheint ja auch eine Möglichkeit zu geben App Daten als "nicht backupbar" zu markieren (Google Authenticator macht das z.B.). Dann kommt man da ohne root nicht dran *). Evtl. reicht das ja schon die so unverschlüsselt zu speichern?

cu

*) Aber evtl. könnte man da mit ner App drankommen die den selben Paketnamen hat wie die dir den erstellt hat? Also wirklich sicher ist das wohl nicht.
 
Zuletzt bearbeitet:
Man kann keine 2 Apps mit dem gleichen Paketnamen installieren. Somit fällt deine *-Anmerkung raus.
 
reneph schrieb:
Man kann keine 2 Apps mit dem gleichen Paketnamen installieren. Somit fällt deine *-Anmerkung raus.

Ich meine die (extra dafür erstellte) Datenklau App als update über die reale ziehen um an die App Daten zu kommen.

Wobei rooten vermutlich immer einfacher ist.

cu
 
rihntrha schrieb:
über die reale ziehen um an die App Daten zu kommen

Unter der Annahme, dass man kein root hat, wird das nicht funktionieren! Da die "Datenklau"-App nicht mit dem gleichen Zertifikat signiert werden kann. Und sobald die Zertifikate sich unterscheiden, lässt sich die vorhandene App nicht überschreiben, sondern müsste erst deinstalliert werden.
 
  • Danke
Reaktionen: rihntrha
Halt, eine hack Idee habe ich noch ;-)
Man kann laut Kommandozeilenhilfe per adb Apps deinstallieren ohne die App Daten zu löschen (und dann die Hacker App installierten). Dass sollte man auch noch testen bevor man diese Methode in Betracht zieht.

Und man kann ja auch bei einigen Modellen das flash Image ziehen ohne zu rooten oder nen bootloader zu öffnen. Dann hat man das Dateisystem Image das man direkt auslesen kann.


Sicherheit für faule Nutzer gibt es eh nicht ;-)
Man kann das Passwort auch noch auf nen NFC Tag oder in nen qr Code speichern. Dann muss der Nutzer nicht tippen.

cu
 
Zuletzt bearbeitet:
reneph schrieb:
Unter der Annahme, dass man kein root hat, wird das nicht funktionieren! Da die "Datenklau"-App nicht mit dem gleichen Zertifikat signiert werden kann. Und sobald die Zertifikate sich unterscheiden, lässt sich die vorhandene App nicht überschreiben, sondern müsste erst deinstalliert werden.

Uncovering Android Master Key That Makes 99% of Devices Vulnerable » Bluebox Security
Man kann also eine vorhandene App verändern und sie behält die Signatur bei ;)
 
  • Danke
Reaktionen: reneph
Ok, die App soll ein "Pin Reminder" sein, sprich z.B. für Bankautomat die PIN-Nummer speichern. Diese wird zusammen mit einem sicheren Passwort über die App eingegeben. Möchte der User seine PIN wissen, gibt er in der app das zugehörige Passwort ein und die PIN wird ihm bei richtiger eingabe angezeigt. Die Idee dazu hatte ich halt, weil mir oft selbst nicht mehr einfällt, wie meine PIN war ;)

Da solche Sachen wie PIN natürlich sehr sensible Daten sind, wollte ich das ganze verschlüsselt in eine Datenbank schreiben, also das Passwort und die PIN. Meine Frage war jetzt eben, wie man das ganze so verschlüsselt bzw. verwaltet, dass es nicht möglich ist, von Hacker-Seite her an die Daten zu kommen. Das man ohne das Passwort über die App an die PIN nicht ran kommt, dürfte klar sein.
 
Wenn der Nutzer einfach an die Daten kommt dann kommt ein Hacker zwangsläufig auch einfach ran.

Schau dir mal Keepass2Android an. Ich denke dort wurde mit optionalen Keyfile und quick unlook schon der maximale Kompromiss rausgeholt.

cu
 
Ich speicher meine PIN einfach im Adressbuch unter einem nur mit bekannten namen mit einer kompletten Telefonnummer wo nur ich weiß welche die 4 richtigen Pin Ziffern sind.
Das findet niemand ;)
 
Aber wenn man schon ständig nen Computer mit sich rumschleppt könnte man die Gelegenheit nutzen auch noch gleich die 528 anderen Passwörter zu Speichen ;-)

BTW: Mir einen ähnlichen Trick hatte ich in pre PDA Zeiten auch meine komplette TAN Liste im Kalender (das Ding aus Papier).

Verschleiern klappt gut wenn man sich den Trick selber ausdenkt und für sich behält.
Man kann es auch ans Ende einer mp3 hängen. Findet auch niemand und stört den Decoder nicht.

Keepass und Keepass2Android ist mir heutzutage trotzdem lieber :)

cu
 
Zuletzt bearbeitet:
amfa schrieb:
Ich speicher meine PIN einfach im Adressbuch unter einem nur mit bekannten namen mit einer kompletten Telefonnummer wo nur ich weiß welche die 4 richtigen Pin Ziffern sind.
Das findet niemand ;)

Die PIN mit weiteren Ziffern zu maskieren (Fun fact: solche Ziffern heissen Nullen, auch wenn es keine sind :D) ist aber wichtig, denn für Schlapphüte, die global Kommunikationsdaten abgreifen (sowas soll es ja geben), ist der Abgleich gegen reale Nummern kein Problem. Gut, dass die eher nicht hinter Deiner PIN her sind :D
 
Hui was man hier wunderschönes liest. Lest euch mal security through obscurity durch.

Klar kommt es immer auf die Daten an, die man verstecken will. Aber eine PIN, mit der jemand dein Konto plündern kann irgendwo im Adressbuch zu speichern, das halte ich mal für keine gute Idee ;)

Jeder in diesem Forum kann sich z.B. dein Profil anschauen und weiss dein Geburtsdatum, wo du wohnst, kennt deinen Beruf und welche Android-Geräte du benutzt. Und jetzt verrätst du netterweise sogar noch, wie du deine PINs versteckst :flapper:

Chefkoch90 schrieb:
Ok, die App soll ein "Pin Reminder" sein, sprich z.B. für Bankautomat die PIN-Nummer speichern. Diese wird zusammen mit einem sicheren Passwort über die App eingegeben. Möchte der User seine PIN wissen, gibt er in der app das zugehörige Passwort ein und die PIN wird ihm bei richtiger eingabe angezeigt. Die Idee dazu hatte ich halt, weil mir oft selbst nicht mehr einfällt, wie meine PIN war ;)

Da solche Sachen wie PIN natürlich sehr sensible Daten sind, wollte ich das ganze verschlüsselt in eine Datenbank schreiben, also das Passwort und die PIN. Meine Frage war jetzt eben, wie man das ganze so verschlüsselt bzw. verwaltet, dass es nicht möglich ist, von Hacker-Seite her an die Daten zu kommen. Das man ohne das Passwort über die App an die PIN nicht ran kommt, dürfte klar sein.

Der entscheidende Punkt dabei ist, das Passwort nicht abzuspeichern. Sobald du die PIN mit dem Passwort verschlüsselt hast, soll die App das Passwort sofort vergessen.

Beim nächsten Start der App wird zuerst nach dem Passwort gefragt. Der User gibt eines ein und die App versucht, mit diesem Kennwort die Daten zu entschlüsseln. Wenn das entschlüsseln klappt, war das Passwort korrekt. Wenn es fehlschlägt, war das Passwort falsch.
 
Zuletzt bearbeitet:
Zurück
Oben Unten