Daten abspeichern und anzeigen ohne diese abzuspeichern? Möglich?

Status
Für weitere Antworten geschlossen.
F

Funkener

Gast
Hallo zusammen,

ich stehe aktuell vor zwei schwierigen Aufgaben. Ich möchte Nutzerdaten verarbeiten, dessen Zustimmung ich nicht habe. Rechtlich gesehen dürfte ich es vielleicht, doch ich möchte mein Projekt so datenschutzfreundlich wie möglich gestalten, weshalb ich eine Lösung brauche, bei welcher ich keine Nutzerdaten im Klartext auf meinem Server abspeichere.

Szanario: Ein Nutzer öffnet meine App und speichert sich die Telefonnummer "0175 1234567" als Lesezeichen ab. Ich möchte die Nummer aber nicht als Klartext auf meinem Server abspeichern, da ich nicht die Zustimmung des Besitzers habe. Der Nutzer soll aber auch bei einer Neuinstallation seiner App dieses Lesezeichen wieder abrufen können, weshalb ich das Lesezeichen zwingend auf meinem Server abspeichern muss.

Meine Idee: Kryptographie! Ich hatte daran gedacht, dass der Server jedem Account einen Key zuweist. Aus diesem Key wird dann lokal auf dem Endgerät ein lokaler Key erzeugt. Wenn nun ein Lesezeichen gesetzt wird, wird die Telefonnummer mit dem lokalen Key verschlüsselt und auf dem Server abgespeichert. So verarbeite ich dann keine Telefonnummer auf meinem Server.

Problem: Auf meinem Server befindet sich der Key für den Account und die verschlüsselte Telefonnummer. Ich könnte also auch ohne Probleme erneut selber einen lokalen Key aus dem Account Key generieren und damit die verschlüsselte Telefonnummer entschlüsseln. Natürlich kann ich das, da der Nutzer bei Gerätewechsel natürlich wieder seine Lesezeichen sehen will.

Frage: Habe ich damit irgendwas gewonnne? Theoretisch verarbeite ich ja weiterhin die Telefonnummer, da ich sie ganz einfach über die 2 Werten vom Server entschlüsseln kann? Habt ihr Ideen, wie ich das lösen könnte?

Szenario: Ein Nutzer gibt eine Bewertung zu einer Telefonnummer ab. Kein Problem, da die Telefonnummer gehasht auf dem Server mit der Bewertung abgespeichert wird. Und wenn ein anderer Nutzer das Profil der Telefonnummer aufruft, wird die Telefonnummer erneut gehasht und der Hash wird mit samt Bewertung beim Server abgefragt. Nur möchte der Nutzer nun auch sehen, welche Bewertungen dieser zuletzt abgegeben hat.

Problem: Es erfolgt eine Abfrage dafür, welche Bewertungen dem Nutzer zugehörig sind. Auf dem Server wurde die Bewertung aber nur mit einer gehashten Telefonnummer abgespeichert. Daher könnte auch nur dieser Hashwert angezeigt werden. Das macht natürlich keinen Sinn.

Meine Idee: Beim Abgeben einer Bewertung wird die Bewertung wie oben beschrieben abgesendet. Zusätzlich wird dieser Bewertung noch ein Wert angehangen. Außerdem wird in einer zweiten Datenbank ein Eintrag erstellt, welcher abspeichert, dass Nutzer X die Telefonnummer "0175 1234567" bewertet hat. Auch diesem Eintrag wird ein Wert angehangen. Dann findet Kryptographie statt. Über den Wert von dem Eintrag aus der zweiten Datenbank gelangt man rechnerisch zu dem Wert aus dem Eintrag der Bewertung. Wenn nun also abgefragt wird welche Bewertungen der Nutzer zuletzt abgegeben hat, schaut man in der zweiten Datenbank und sieht, dass zu "0175 1234567" eine Bewertung abgegeben wurde. Das kann man schonmal in der App anzeigen. Und zusätzlich ruft man dann noch die Bewertungsdetails ab. Dies passiert dadurch, indem man den einen Wert wieder umrechnet und den Wert aus dem Eintrag mit der Bewertung erhält. Dadurch wurde eine Verknüpfung herstellt und die Nummer und die Bewertungsdetails können angezeigt werden.

Problem: Theoretisch verarbeite ich ja auch hier die Telefonnummer. Denn diese steht einmal im Klartext in der Datenbank, um sich zu merken, dass Nutzer X dieses Kennzeichen bewertet hat. Und von diesem Eintrag kann man dann ja direkt zu den Bewertungsdetails springen. Allerdings kann von der Bewertung nicht auf das Kennzeichen geschlossen werden.

Frage: Würdet ihr denken, dass das in Ordnung ist? Habt ihr eine bessere Idee? Ist mein Vorhaben überhaupt irgendwie möglich?

Ich bin kein Kryptographie-Experte, doch habe die Hoffnung, dass man es damit irgendwie lösen könnte. Falls sich jemand in dem Bereich gut auskennt, so wäre ich dankbar, wenn sich diese Person bei mir meldet. Würde auch dafür zahlen, wenn diese Person mich erfolgreich bei der Umsetzung unterstützt. Umso dankbarer bin ich natürlich, wenn mir hier im Forum einer kostenlos helfen könnte oder eine Idee hat. Vielen lieben Dank im voraus! :(
 
D.h. es geht dir nicht um rechtliche Aspekte, sondern um technische?
Funkener schrieb:
bei welcher ich keine Nutzerdaten im Klartext auf meinem Server abspeichere
Das ist relativ leicht, aber du fragst ja eigentlich nach etwas anderem.

Der Nutzer muss halt ein Passwort erstellen und darauf vertrauen, dass deine App es nicht sendet. Natürlich gilt dann: Passwort verloren? -> Kein Zugriff mehr auf die Daten.
 
  • Gefällt mir
Reaktionen: KitKat::new() und Funkener
Das paßt so nicht. Die rechtlichen Einschränkungen liegen INSBESONDERE bei der Verarbeitung, wenn Du mit Nutzerdaten hantierst, ohne Zustimmung zu haben, verstößt Du gegen die DSGVO.

Dann lieber richtig machen, Einwilligung einholen und dann los. Plus, verschlüsselt speichern macht sowieso Sinn.
 
  • Gefällt mir
Reaktionen: Funkener und BeBur
BeBur schrieb:
D.h. es geht dir nicht um rechtliche Aspekte, sondern um technische?

Das ist relativ leicht, aber du fragst ja eigentlich nach etwas anderem.

Der Nutzer muss halt ein Passwort erstellen und darauf vertrauen, dass deine App es nicht sendet. Natürlich gilt dann: Passwort verloren? -> Kein Zugriff mehr auf die Daten.
Die Idee mit dem Passwort kam mir eben auch. Dann müsste ich nur verwerfen, dass Gäste auch die App nutzen können, zumindest die o.g. Features. Allerdings konnte ich mich nicht mit dem Punkt anfreunden, dass bei Passwortverlust alles verloren ist.
RalphS schrieb:
Das paßt so nicht. Die rechtlichen Einschränkungen liegen INSBESONDERE bei der Verarbeitung, wenn Du mit Nutzerdaten hantierst, ohne Zustimmung zu haben, verstößt Du gegen die DSGVO.

Dann lieber richtig machen, Einwilligung einholen und dann los. Plus, verschlüsselt speichern macht sowieso Sinn.
Was genau meinst Du? Ziel von mir ist es ja, dass die Daten, also die Telefonnummer, nur lokal eingegeben und angezeigt wird. Ziel ist es auch, dass niemand über die Daten, welche auf dem Server liegen, Telefonnummern errechnen kann. Es wäre dann doch vollkommen in Ordnung, wenn ein Nutzer nur für sich eine fremde Telefonnummer (welche er vllt. bewertet hat oder will) als Lesezeichen setzt. Sowohl Außenstehende, als auch Server wissen nicht, welche Nummer er als Lesezeichen gesetzt hat. Verstoße ich dadurch bereits auch gegen die DSGVO, wenn ein Nutzer nur lokal Daten über meine App hinterlegt, welche einer Person zugehörig sind?

Ich bin ja sogar der Meinung, dass ich nicht gegen die DSGVO verstoße, wenn ich das mit den Lesezeichen nicht umsetze und auf meinem Server im Klartext abspeichere, dass User X die Nummer "01751234567" als Lesezeichen hinterlegt hat. Warum auch? Das Format von Telefonnummern ist bekannt und jeder kann sich alle möglichen Nummern generieren lassen. Nur die zugehörigen Metadaten oder eben das Gesamtpaket aus Metadaten und Telefonnummer sind doch laut DSGVO schützenswert?
 
Zuletzt bearbeitet von einem Moderator:
Ich gebe da keine rechtliche Auskunft. Aber technisch würde ich da mit Hashes arbeiten.

Wenn jemand eine Telefonnummer eingibt erstellst du aus der einfach einen Hast und speicherst diesen Hash. Wenn die Telefonnummer erneut eingegeben wird und den selben Hash Algorythmus laufen lässt bekommst du ja wieder den selben Hash.

Bewertungen, etc kannst du ja dann zum Hash speichern.

Ist im Grunde das gleiche Vorgehen wie wenn man Passwörter speichert. Die werden (hoffentlich) auch immer gehasht.
 
Vielleicht kann mir ja auch jemand die Frage beantworten, ob es in Ordnung wäre die letzte Zahl der Telefonnummer nur zu hashen? Dann ist ja die eigentliche Nummer nicht bekannt, gibt eben 10 Möglichkeiten. Und wenn das nicht erlaubt sein sollte, warum nicht? Wer legt den fest, ab wie vielen Möglichkeiten das rechtens ist? Wenn ich die Telefonnummer komplett hashe, habe ich ja auch Möglichkeiten, welche ich errechnen kann. Nur eben viele mehr.

kim88 schrieb:
Ich gebe da keine rechtliche Auskunft. Aber technisch würde ich da mit Hashes arbeiten.

Wenn jemand eine Telefonnummer eingibt erstellst du aus der einfach einen Hast und speicherst diesen Hash. Wenn die Telefonnummer erneut eingegeben wird und den selben Hash Algorythmus laufen lässt bekommst du ja wieder den selben Hash.

Bewertungen, etc kannst du ja dann zum Hash speichern.

Ist im Grunde das gleiche Vorgehen wie wenn man Passwörter speichert. Die werden (hoffentlich) auch immer gehasht.

Ja, das mache ich ja sowieso. Geht hier nur um das Problem mit den Lesezeichen und das Anzeigen abgegebener Bewertungen. Danke dennoch!
 
Funktioniert nur für den Fall 1 nicht - da will der User ja möglichst die Klartextnummer wieder als Bookmark sehen.
 
  • Gefällt mir
Reaktionen: BeBur und Funkener
kim88 schrieb:
Ist im Grunde das gleiche Vorgehen wie wenn man Passwörter speichert. Die werden (hoffentlich) auch immer gehasht.
Der Unterschied ist, dass du Telefonnummern aus dem Hash zurückrechnen kannst, also das Hashen nur wenig bringt.
 
KitKat::new() schrieb:
Der Unterschied ist, dass du Telefonnummern aus dem Hash zurückrechnen kannst, also das Hashen nur wenig bringt.
Du willst darauf hinaus, dass ich mir alle möglichen Kombinationen generieren lasse, alle hashe und dann den Hash abgleiche? Das passt dann ja zu meinem Beitrag #4, in welchem ich sage, dass es sowieso wenig Sinn macht die Telefonnummer an sich zu schützen, da jeder sich jederzeit alle generieren kann, da das Format bekannt ist. Wichtig sind eben die Daten um diese Nummer herum.

Wäre gut, wenn jemand auf meine Wort aus dem erwähnten Beitrag eingehen könnte. Vielen Dank!
 
Funkener schrieb:
Wäre gut, wenn jemand auf meine Wort aus dem erwähnten Beitrag eingehen könnte. Vielen Dank!

Wenn du dich damit nicht anfreunden kannst:
Funkener schrieb:
Allerdings konnte ich mich nicht mit dem Punkt anfreunden, dass bei Passwortverlust alles verloren ist.
musst du das wohl so speichern, dass du es als Betreiber auch lesen kannst.
Du brauchst auf jeden Fall Infos, an die nur der Nutzer ran kommt, um die Daten für dich anabgreifbar zu verschlüsseln
 
Zuletzt bearbeitet:
Öffentlich (?) einsehbare Bewertungen zu einer Rufnummer halte ich grundsätzlich für kritisch. Einmal mit der Maus ausgerutscht und deine API kriegt alle möglichen Rufnummern um die Ohren und ich alle (!) Bewertungen aus deiner DB. Ob die jetzt gehasht sind oder nicht, ist da grundsätzlich egal - es muss ja für deinen Anwendungsfall umkehrbar sein.

Je nachdem was da an Bewertungstexten drinsteht (sind das überhaupt Texte, oder eher Enumerationen oder Schulnoten oder so?), kann dann "Sabine Müller aus Berlin, tolle Oberweite, Daumen hoch" oder "Firma Meier aus XYZ, versucht einen übers Ohr zu hauen" hochkommen. Da möchte ich dann nicht in deiner Haut stecken ;).

Es sind halt potentiell personenbezogene Daten - für deren Verarbeitung (Besitzer der Rufnummer) du kein Einverständnis hast.
 
Zuletzt bearbeitet:
KitKat::new() schrieb:
Wenn du dich damit nicht anfreunden kannst:

musst du wohl das Passwort so speichern, dass du es als Betreiber auch lesen kannst.
Du brauchst auf jeden Fall Infos, an die nur der Nutzer ran kommt, um die Daten für dich anabgreifbar zu verschlüsseln
Macht ja dann auch wieder keinen Sinn, wenn ich das Passwort selber kenne. Dann kann ich ja auch jederzeit die Verschlüsselung der Kennzeichen als Lesezeichen rückgängig machen. Dann kann man es mit der Verschlüsselung auch ganz bleiben lassen.
DarkAngel2401 schrieb:
Ueberfluessiges Komplettzitat entfernt.
Bitte beim Thema und bei den konkreten Fällen bleiben. Es geht hier sowieso nicht wirklich um Telefonnummern, nur mein persönlicher Fall lässt sich gut mit diesen erklären.
 
Funkener schrieb:
Bitte beim Thema und bei den konkreten Fällen bleiben.
Bleibe ich doch - siehe dein Fall 2.
Funkener schrieb:
Hier frage ich nur, ob ich nicht Nummern als Lesezeichen im Klartext abspeichern dürfte.
Nein, du möchtest Nutzerdaten verarbeiten, deren Einverständnis du nicht hast (siehe 2. Satz deines Initialpostings) - Bewertungen sind Nutzerdaten, sogar möglicherweise personenbezogene Daten und besonders schützenswerte Daten.

Außerdem willst du eine Lösung, bei der du keine Nutzerdaten im Klartext auf deinen Systemen speicherst. Selbst wenn die Daten nicht im Klartext gespeichert sind und nur vom Server selbst entschlüsselt werden können - wenn ein User die Bewertung eines Dritten zu Gesicht bekommt, sieht er diese ja im Klartext.

Ich wollte mit meinem - zugegeben etwas überspitzten Beispiel - nur auf die Brisanz hinweisen.
Ergänzung ()

Funkener schrieb:
... um die Anzeige abgebener Bewertungen, also die der Nutzer sowieso selber verfasst hat.
Diese Info fehlte bisher, oder ich war blind :)

In diesem Fall würde ich alle Daten ausschließlich lokal auf dem Endgerät speichern und lediglich eine Export- und Importfunktion anbieten (für den Fall einer Neuinstallation).
 
Zuletzt bearbeitet:
DarkAngel2401 schrieb:
Bleibe ich doch - siehe dein Fall 2.

Nein, du möchtest Nutzerdaten verarbeiten, deren Einverständnis du nicht hast (siehe 2. Satz deines Initialpostings) - Bewertungen sind Nutzerdaten, sogar möglicherweise personenbezogene Daten und besonders schützenswerte Daten.
Nein und Nein. Ich habe die allgemeinen Bewertungen nicht zum Thema gemacht. Es geht darum dem Nutzer die eigenen abgegebenen Bewertungen anzuzeigen. Nicht mehr. Oder willst Du mir sagen, dass ich als Nutzer kein Recht mehr habe meine eigenen abgegeben Bewertungen einzusehen? :confused_alt:
 
Funkener schrieb:
Macht ja dann auch wieder keinen Sinn, wenn ich das Passwort selber kenne.
sorry, bitte nochmal ohne "Passwort" lesen. das Wort ist mir versehentlich reingerutscht :D
 
DarkAngel2401 schrieb:
wenn ein User die Bewertung eines Dritten zu Gesicht bekommt, sieht er diese ja im Klartext.
Habe ich nirgendwo zum Thema gemacht. Geht weiterhin um die Lesezeichen und um die abgegebenen Bewertungen.

KitKat::new() schrieb:
sorry, bitte nochmal ohne "Passwort" lesen. das Wort ist mir versehentlich reingerutscht :D
Beziehst du dich damit auf die Lesezeichen oder abgegebenen Bewertungen? Ja, Lesezeichen könnte ich ja auch im Klartext speichern, siehe dazu den Kommentar am Ende des Beitrags #4. Wenn es um die abgegebenen Bewertungen geht: Da kann ich nichts im Klartext speichern. Denn die Bewertungen zu den Nummern dürfen ja ohne Frage nicht im Klartext gespeichert werden. Bewertungen schon, aber die zugehörige Nummer eben nicht im Klartext daneben.

Frage ist also weiterhin, ob jemand ein kryptischer Trick einfällt, um auf jeden Fall den Nutzern die eigenen abgegebenen Bewertungen anzuzeigen und vielleicht auch um die Lesezeichen nicht im Klartext abzuspeichern. Wobei ich ja der Meinung bin, dass ich Lesezeichen auch einfach im Klartext speichern könnte - dazu hatte ich ja nach eurer Meinung gefragt.

Danke!!
 
Zuletzt bearbeitet von einem Moderator:
Funkener schrieb:
... dass ich als Nutzer kein Recht mehr habe meine eigenen abgegeben Bewertungen einzusehen? :confused_alt:
Da habe ich wohl nur zu viel in den Initialen Post von dir hineininterpretiert, siehe meine Ergänzung in #13 ;)
 
  • Gefällt mir
Reaktionen: Funkener
DarkAngel2401 schrieb:
Da habe ich wohl nur zu viel in den Initialen Post von dir hineininterpretiert, siehe meine Ergänzung in #13 ;)
Ah, verstehe. Ja gut, abgegebene Bewertung ist für mich klar was gemeint ist, aber verstehe, dass man es auch ganz anders verstehen kann, sorry.
 
  • Gefällt mir
Reaktionen: DarkAngel2401
Funkener schrieb:
Der Nutzer soll aber auch bei einer Neuinstallation seiner App dieses Lesezeichen wieder abrufen können, weshalb ich das Lesezeichen zwingend auf meinem Server abspeichern muss.
Warum sollte ein Nutzer eine App neu installieren? Vielleicht weil er sie zuvor deinstalliert hat? In dem Fall wäre es sogar der Wunsch das gespeicherte Daten auch auf den Server gelöscht werden.

Ansonsten ist halt die Frage, wie Daten auf dem Server sicher gespeichert werden können (also so das selbst der Server sie nicht einsehen kann. Du könntest die Daten verschlüsseln mit einem Key was nur der Nutzer hat. Aber dann hast Du auch hier wieder das gleiche Problem: Deinstalliert der die App ist auch der Key weg.

Gut. Dann kann man natürlich sagen, man bietet eine Backup-Funktion an, damit man den Key wegsichern kann. Wenn man dann später die App wieder installiert, importiert man wieder den Key und alles ist paletti. Aber Wenn Du eh schon eine Export/Import-Funktion baust, dann kannst Du auch gleich die Daten ansich sichern und brauchst gar nix auf dem Server speichern, sondern machst die ganze Verarbeitung/Speicherung nur lokal in der App.
Zumal die Anwendung jetzt nicht gerade danach klingt, als fielen da besonders viele Daten an.
 
  • Gefällt mir
Reaktionen: Funkener und KitKat::new()
Dank für deine Antwort. Guter Einwand mit der Backup Funktion. Würde natürlich alles gehen, aber solch ein aufwändiges Feature würde nicht zu der App, als auch zu den Nutzern passen. Wäre einfach den Aufwand nicht wert, für beide Seiten.

Scheint dann also keine Lösung zu geben, um das kryptisch zu lösen, da ich ja wohl zwingend einen gleichbleibenden Wert auf allen Endgeräten des Nutzers haben muss, welchen ich als Betreiber nicht kenne. Und vom System gibt es keinen, also müsste der Nutzer eben einen eigenen Wert/Passwort erstellen -> kommt nicht infrage. Also nicht möglich. Falls jemand doch noch eine Möglichkeit sieht, gerne melden, zahle auch gut dafür, wenn man das wirklich irgendwie umsetzen könnte.

Ansonsten würde ich nun einfach die Nummern als Lesezeichen im Klartext abspeichern (siehe Kommentar #4) und die abgegebenen Bewertungen zensiert anzeigen. Und mit zensiert meine ich, dass ich nur die letzte Stelle der Telefonnummer verschlüssel. Gibt dann 10 Möglichkeiten und niemand weiß genau welche gemeint ist, aber der Nutzer hat immerhin einen kleinen Hinweis, damit er noch ungefähr weiß, welche Nummer das damals war, welche dieser bewertet hat.

Korrekt?
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben