Hallo zusammen,
ganz grob gesprochen will ich ein Programm bauen, das Daten erst nach einem vordefinierten Zeitpunkt rausrückt. Klingt trivial, schließlich gibt es ja Datums- und Zeitfunktionen und man kann ja mittels "if" entscheiden, was aus der Datenbank gelesen wird oder was ausgegeben wird oder was auch immer. Das Problem ist aber: Der Benutzer hat Vollzugriff auf alles, d.h. ein Stichtagsdatum im Code lässt sich leicht ändern. Ebenso irgendwelche Timestamps in der Datenbank. Man kann natürlich Stichtagsdatum und Nutzinfo gemeinsam verschlüsseln aber letztlich kann man der Entschlüsselung natürlich durch Codeänderung einanderes Datum vorgaukeln. Und wenn man die eigene Prüfsumme des PHP-Scripts mit einbezieht, dann kann man das natürlich auch leicht umgehen, indem man die Prüfsumme des unmaipulierten Scrips nimmt und diese dann als festen Wert an die Entschlüsselung übergibt. Durch den Vollzugriff steht und fällt alles. Spontan fällt mir als Lösung nur ein, den Zugriff z.B. auf eine Prüfscript einzuschränken und dieses ist für das Hauptprogramm dann eine Blackbox..Oder dieses Prüfscript irgendwie so verschlüsseln, dass man es mittels "eval" ausführen kann, aber bei einer "On-Demand-Entschlüsselung" könnte man den Klartext natürlich vor dem "eval" abgreifen und man hat das Teil Rubbeldikatz ausgehebelt.
Bin da gerade etwas überfragt, aber vielleicht hat ja jemand eine geniale Idee. Man müsste halt irgendwie ein Prüfscript mittels Hash vor Manipulation schützen aber die Prüfung dieses Hashes darf auch nicht durch Codeänderungen manipulierbar sein. Und da beißt sich die Katze halt ins Hinterteil
Kleiner Nachtrag: Das Ganze muss sich nicht auf PHP beschränken. Die Funktionalität zum Entschlüsseln und zum Liefern der Daten kann auch in einer Datenbank-Function liegen. Aber die muss auch dann manipulationssicher sein wenn man Vollzugriff auf die Datenbank hat.
vielen Dank schonmal fürs Knobeln
ganz grob gesprochen will ich ein Programm bauen, das Daten erst nach einem vordefinierten Zeitpunkt rausrückt. Klingt trivial, schließlich gibt es ja Datums- und Zeitfunktionen und man kann ja mittels "if" entscheiden, was aus der Datenbank gelesen wird oder was ausgegeben wird oder was auch immer. Das Problem ist aber: Der Benutzer hat Vollzugriff auf alles, d.h. ein Stichtagsdatum im Code lässt sich leicht ändern. Ebenso irgendwelche Timestamps in der Datenbank. Man kann natürlich Stichtagsdatum und Nutzinfo gemeinsam verschlüsseln aber letztlich kann man der Entschlüsselung natürlich durch Codeänderung einanderes Datum vorgaukeln. Und wenn man die eigene Prüfsumme des PHP-Scripts mit einbezieht, dann kann man das natürlich auch leicht umgehen, indem man die Prüfsumme des unmaipulierten Scrips nimmt und diese dann als festen Wert an die Entschlüsselung übergibt. Durch den Vollzugriff steht und fällt alles. Spontan fällt mir als Lösung nur ein, den Zugriff z.B. auf eine Prüfscript einzuschränken und dieses ist für das Hauptprogramm dann eine Blackbox..Oder dieses Prüfscript irgendwie so verschlüsseln, dass man es mittels "eval" ausführen kann, aber bei einer "On-Demand-Entschlüsselung" könnte man den Klartext natürlich vor dem "eval" abgreifen und man hat das Teil Rubbeldikatz ausgehebelt.
Bin da gerade etwas überfragt, aber vielleicht hat ja jemand eine geniale Idee. Man müsste halt irgendwie ein Prüfscript mittels Hash vor Manipulation schützen aber die Prüfung dieses Hashes darf auch nicht durch Codeänderungen manipulierbar sein. Und da beißt sich die Katze halt ins Hinterteil
Kleiner Nachtrag: Das Ganze muss sich nicht auf PHP beschränken. Die Funktionalität zum Entschlüsseln und zum Liefern der Daten kann auch in einer Datenbank-Function liegen. Aber die muss auch dann manipulationssicher sein wenn man Vollzugriff auf die Datenbank hat.
vielen Dank schonmal fürs Knobeln
Kommentar