User-Daten verschlüsselt ablegen?

Viele der Dinke, die man bei Kommunikation mit anedern Devices oder auch z.B. Webseiten tut, erfordren Authentifizierung.

Dies per Klartext in den PHP files zu halten ist unter dem Gesichtspunkt, dass man damit im Falle des Falles ausspioniert werden kann (und bei unachtsamem post seines Codes hier im Forum dazu selber noch beiträgt) natürlich unschön.

Prima wäre da ja sowas wie eine Funktion, die dann zur Laufzeit die Werte einsetzt, am besten sogar erst „zu allerletzt“, also eigentlich in IPS selbst zum Zeitpunkt der Interpretation des Code.

Gibt es hierfür einen Lösungsansatz?

jwka

PHP: Kryptografische Erweiterungen - Manual

Habe die Erweiterung gesehen. Aber komme damit nicht weiter.

Hast Du damit schon so etwas ähnliches realisiert?

Es muss ja einen ständig laufenden Prozess geben, der beim Start aus einer Datei oder online via Passwort (Symmetrisch und recht lang oder ein Cross Certificate) den Private Key holt (mit dem verschlüsselt der Bulk Data Key auf der Platte liegen kann) und dann im Speicher hält - am besten wieder mit einem vom Hersteller publizierten Public Key.

Alles andere würde doch sonst dazu führen, dass jemand mit Zugriff auf den IPS Rechner irgendwo an den Schlüssel kommt (zumal ich, bis auf SSL nur Blockchiffre-Funktionen, also symmetrische Verschlüsselung ausgemacht habe) und damit die chiffrierten User-Daten auslesen kann.

Oder?

jwka

Wenn du nicht sooo hohe Sicherheitsansprüche hast kann man sich auch schnell was selbst stricken. Das hält sicher 90% aller Schnüffler und 99,999% aller Putzfrauen und Servicetechniker auf. Stichwort XOR oder Rot13. In den ToniTools hatte ich auch sowas drin.

Gruß,

Toni

yep.

Und natürlich - eine Stufe drüber hinsichtlich Sicherheit - kann man auch dafür die Cryptofunktionen einsetzen (einmalig Array --> serialize --> crypt --> Datei und im code dann read Datei --> read key --> decrypt --> unserialize --> Array …)

Und klar, hält das ab. Aber mit echter Krypto hat’s natürlich nix zu tun, weil eben der Schlüssel - theoretisch - für jeden erreichbar ist.

jwka

Und da ja Jeder an deinen Rechner dran kann ist die Gruppe der potentiellen Angreifer natürlich unüberschaubar. manchmal frag ich mich in welcher Umgebung du IPS eigentlich einsetzt. :smiley:

Das generelle Problem bei solchem Vorgehen ist, dass du nicht nur auf plausibilität prüfen willst sondern die ursprüngliche Information wieder herstellen. So ein Verfahren ist grundsätzlich weniger sicher und somit anfälliger als eine reine Gegenprüfung. MD5 zum Beispiel speichert den eigentlichen Inhalt eines Textes oder einer Datei nicht. Ein Dritter kann ihn also niemals wieder herstellen. Es ist aber sehr einfach festzustellen ob der Text oder die Datei inhaltlich verändert wurde (Wasserzeichen). Sowas wird im Bereich Zugangskontrolle gemacht.

Was du willst ist um Welten komplexer und um einen gewissen Sicherheitsstandart zu gewährleisten müssen die Vorgänge auch deutlich umfangreicher sein. Eben weil du dein Original weiter gibst bzw an einem öffentlichen/unsicheren Ort speicherst. Das ist normalerweise ein klassischer Anwendungsfall für eine asymetrische Verschlüsselung. Da du aber in deinem speziellen Fall selbst der Ver- und Entschlüssler bist macht das normal aber keinen Sinn. Man sollte aus ökonimischer Sicht lieber versuchen die Daten kompromittierungssicher zu speichern. Die einfachste Lösung dies zu erreichen wäre den Serverraum abzuschließen. Der klassische Weg Teile deiner Festplatte zu verschlüsseln ist PGP.

Das von dir angesprochene SSL (Secure Sockets Layer) dient eigentlich zur Verschlüsselung von Kommunikationswegen. Klar könnte man jetzt so tun als würde man eine Zeichenkette über eine ungesicherte (Web-) Verbindung an einen fremden Server übertragen, den Stream abfangen und in eine Datei umleiten. Aber ansich ist das nicht der klassische Anwendungsfall.

Willkommen in der kunterbunten Welt der Kryptographie. :wink:

Wenn ich das richtig verstanden habe geht es nur darum, dass wenn du ein Script hier postest, dass nicht zufällig ein Passwort in klartext veröffendlicht wird. Dazu brauchst du gar keine Verschlüsselung. Nur eine Datei mit deinen Benutzernamen und Passworten in Klartext und eine PHP-Funktion, die sie im richtigen Moment als String zur verfügung stellt. fopen und include sollten als Stichworte ausreichen.

[Edit]Deinen Private-Key in klartext in einem Script zu speichern oder über irgendeine Funktion „read key“ von irgendwo her zu lesen ist genau so unsicher wie die ROT13 Schablone. Passwörter, und nichts anderes ist so ein Key, lernt man auswändig oder klebt sie an den Monitor. Da kommt der beste Hacker/Trojaner nicht dran. ;)[Edit]

Toni

Danke für Deine Belehrung.

Wenn ich das richtig verstanden habe geht es nur darum, dass wenn du ein Script hier postest, dass nicht zufällig ein Passwort in klartext veröffendlicht wird.

Das war ein Nebensatz und in Klammer. Warum wohl?

Es geht viel allgemeiner z.B. auch um Kunden, für die man z.B. Scripte erstellt, welche auf andere Systeme zugreifen, bei denen Kunden User und Passworte eingerichtet haben. Natürlich soll das beim Einrichten vor Ort auch getestet werden können.

Und der Installer nicht beim nächsten SystemCheck alle User- und Passworte des Kunden haben.

Daher meine Aussage:

Prima wäre da ja sowas wie eine Funktion, die dann zur Laufzeit die Werte einsetzt, am besten sogar erst „zu allerletzt“, also eigentlich in IPS selbst zum Zeitpunkt der Interpretation des Code.

Ich kenne sowas von Lotus Notes, wo die Kryptoengine Bestandteil des Produktes ist. Ok. ich habs ja verstanden:

jibbet hier nit. brauchmer nit.

isok.

hach, es ist immer das selbe Muster:

jwka, Du hast offensichtlich eine extrem spezifische, indivíduelle Umgebung. Dann stellst Du Anfragen zu einem Deiner Probleme hier ein, formulierst diese aber dermaßen allgemein (mit einem Bruchteil der nötigen Rahmenbedingungen).

Dann kommen erste, durchaus konstruktive Lösungsansätze und/oder weitere, eingrenzende Fragen, um deine Spezifika genauer zu hinterfragen.

Und Deine Reaktion entspricht immer dem gleichen Muster:

Danke für Deine Belehrung.
=> typisches Beispiel, hier entsteht schon der Eindruck, der „Meister“ ist beleidigt

  • weiter einschränkende Parameter, die genau die vorgeschlagene Richtung konterkarieren (und wieder meine Frage: warum nennst du diese Rahmenbedingungen nicht gleich?)

Vielleicht kannst du dir nicht vorstellen, dass es in einem Forum wie diesem ne Menge User gibt, die unvoreingenommen helfen wollen. Ob nun jeder die Kompetenz mitbringt, ausgerechnet Dir zu helfen, ist eine andere Frage. Allgemeine Fragen provozieren allgemeine Antworten. Das scheint Dich jedesmal zu „verwundern“.
Aber wenn Antworten „am Ziel vorbei schießen“ (und genau der Eindruck ergibt sich in Deinen Diskussionen immer wieder), dann liegt das in erster Linie am Absender der Message, nämlich an Dir.
Abstellen kann man das m.E. sehr einfach, in dem man seine Probleme gezielt strukturiert aufbereitet und anschließend eine klar verständliche, lösungsorientierte Fragestellung/Zieldefinition einfließen lässt.

Und das ist keine Kritik, sondern ein Hinweis, vielleicht die aktuellen Threads in Ruhe zu relefktieren und Schlüsse draus zu ziehen :wink:

Ok.

Also, ich stelle hier keine Fragen um Leute in Fallen zu locken oder die Fragen absichtlich unvollständig.

Hilf mir doch mal auf die Sprünge, was ich beim Eingangspost genauer hätte beschreiben sollen - ausser vielleicht, dass es um „Fremdsysteme“ (was in der Sache völlig nebensächlich ist) geht?

Ich seh leider nicht, was - ohne einen riesen Zermon zu schreiben - noch zu schreiben gewesen wär.

Prima wäre da ja sowas wie eine Funktion, die dann zur Laufzeit die Werte einsetzt, am besten sogar erst „zu allerletzt“, also eigentlich in IPS selbst zum Zeitpunkt der Interpretation des Code.

Genau… fopen und include. Eine PHP-Funktion, von dir getippt, verhält sich dann genau so.

Wenn das soweit funktioniert kannst du es im Anschluss immer noch verschlüsseln. Immer Eins nach dem Anderen und nicht den Dritten vor dem Zweiten Schritt. PHP bringt in der oben genannten Extrension „professionelle“ Lösungen mit. Die Anführungszeichen hab ich gesetzt weil das Passwort (Passphrase/Public Key/Token/etc) für eine automatische Verarbeitung in IPS immer irgendwie in Klartext hinterlegt sein muss. Damit ist es dann in etwa so sicher wie der Haustürschlüssel unter der Fußmatte. Die von mir ins Spiel gebrachten XOR und ROT13 sind in diesem Anwendungsfall etwa genau so sicher. MCrypt ist wohl sehr einfach zu bedienen aber soll wohl ein bischen zickig sein. Ich kann da keine konkrete Aussage zu treffen weil ich nicht viel mit PHP arbeite.

Toni

Sobald IPS PHP 5.5 unterstützt dürfte das sichere ablegen von Passwörtern kein Problem mehr sein : PHP 5.5 soll Passwort-Schlamperei eindämmen | heise online