Sicherheit und Verschlüsselung

wahnsinn

Teilzeitcholeriker
ID: 13929
L
20 April 2006
1.168
153
Das 1. Problem ist soweit geklärt. Weiter geht's hier mit der Verschlüsselung von Passwörtern.

------------------------

Ich will ein Projekt realisieren, bei dem ich mir auch viele Gedanken um Sicherheit und Verschlüsselung machen muss. Die Grundidee ist, dass jeder Benutzer von überall auf der Welt vertrauenswürdige Daten abrufen kann.

HTTPS ist also auf jeden Fall schon im Kopf vorgemerkt. Aber wie weit kann/muss Verschlüsselung gehen? Reicht HTTPS für die Übertragung der Daten oder muss ich noch mehr verschlüsseln?
Und was geschieht, wenn die Daten erstmal bei Client sind? Was, wenn der Benutzer grad im Internetcafé sitzt? Muss er den Cache selbst leeren oder kann ich das irgendwie selbst erzwingen? Und wenn er es doch vergisst sind alle Daten im Cache noch lesbar...

Ich könnte ewig weiter machen, aber ich denke ihr wisst was ich meine. Also wie weit muss und kann Verschlüsselung gehen? Was muss ich mindestens beachten und wo fängt die Kür an?
 
Zuletzt bearbeitet:
Hi,

ich empfehle dir mal den Wikipedia-Artikel zu SSL. Dann sollte sich der Benutzer immer ausloggen, und du damit die Session zerstören.
Dann empfehle ich dir zu Session (Cookies) noch das: https://de.php.net/session

Eine Kür und vollständige Sicherheit gibt es nie!

Gruß
 
Ja, das mit SSL ist mir schon klar. Aber ich frage mich, was mit den heruntergeladenen Daten ist, wenn ich mich z.B. in einem Internetcafé aufhalte.
 
man kann dem Browser (und Proxy) über 6-7 header-Anwiseungen mitteilen, dass er keine Daten cachen soll.
Ich weiß nur nicht was du bezwecken willst? Wo ist das Problem beim cachen? Selbst Bankanwendungen wie bei der Postbank (war glaube ich die) hinterlassen noch gecachte Daten auf meinem PC. Hast du eine Anwendung die kritischr ist als Online-Banking?
 
sicherheit ist relativ.
SSL ist schon mal ein guter anfang. Könntest noch automatisches ausloggen einbauen sodass wenn jmd 20 min inaktiv ist erneut nach seinem PW gefragt wird. Den Rest würd ich dem Anwender überlassen. Cachen kann man mit entsprechenden Headern verhindern. nur cachen ist an und für sich was feines so spart man viel Traffic.
Das mit Obanking ist kritisch aber nicht wircklich sicher. Ich würde nie in einem Internetcaffee meine Online Bankgeschäfte machen.

Was mir grad einfällt du kannst dir doch deinen eigenen Anwendung schreiben, die als Browser fungiert, so kannst du noch mal nw 1024 kb verschlüsselung drauf hauen, wenn du spass hast kannst du nochmal extra codirungen einbauen (bringt aber nicht viel wenn man nicht viel bock auf hohe mathematik hat). Müssen halt alle nen USB stick mitschleppen.

Nochmal zum thema sicherheit, letztens hat mich ein BWLer gefragt ob die seinen HTTP traffic mitschneiden könnten im Rechnzentrum von der FH (wohnt im Wohnheim nutzt inet über FH netz) und ob es sicherer wäre über seinen server via vpn und ner fetter verschlüsselung alles zu machen (kranke leute gibt es immer wieder)

mfg
 
Ne weitere Idee waere alles verschluesselt auszugeben und dann immer on-the-fly im Userbrowser via JavaScript den user das mit nem Passwort entschluesseln zu lassen, wird dann nur auf dauer etwas laesstig ... :D

Ansonsten schliesse ich mich Samy an: Sicherheit ist relativ, und es kommt ansonsten meiner Meinung nach vielfach auf die User drauf an ;)
 
Ok, ich mach jetzt alles mit SSL und hab mich auch schon fleißig über Session-Hijacking und Session-Fixation informiert.

Allerdings hat sich mir jetzt eine neue Frage in den Weg gestellt. Ich muss in meinem Projekt Passwörter der User speichern, so dass diese wieder verwendet werden können. Allerdings weiß ich noch nicht so recht, wie ich diese Speichern soll. Im Klartext sicher nicht. Falls die Datenbank mal abhanden käme wär das ziemlich schlecht.

MD5 oder SHA1 geht ebenfalls nicht, da die Passwörter ja noch verwendet werden müssen. Welche Verfahren kann ich in PHP anwenden, um die Passwörter möglichst unleserlich zu machen?
 
Wenn du total paranoid sein willst, kannst du RSA benutzen. Ich meine allerdings zu wissen, dass klamm die Passwörter auch im Klartext speichert. Was ist das denn für eine Anwendung, wenns mal fertig ist, wenn man fragen darf? *neugier* ;)
 
Wofür brauchst du die Passwörter noch? Beim Login oder so verschlüsselste die Eingabe und Überprüfst die mit dem Wert inner DB. Dafür wirste das wohl kaum noch brauchen.
 
Bist du dir sicher, dass dir ein Passwort-Hash nicht reicht? Das waere naemlich mit die sicherste Methode, das Passwort was vom User kommt gegen die Datenbank zu pruefen.

Sonst... AES oder RSA.

@tleilax lol
 
Vielen Dank für eure Infos.

Und hier noch zwei Antworten auf eure Fragen:
Ja, ich bin mir sicher dass ich die Passwörter noch brauche.
Nein, ich verrate noch nicht, was für eine Anwendung das werden soll.

;)
 
Die Verschlüsselung ist ja schön und super, aber wenn ein Spionageprogramm auf dem Clientrechner rennt, dann wird das Geschreie groß, nämlich dann werden die Passwörter im Klartext mitgeschnitten, trotz Verschlüsselung.

Wenn du die Sicherheit für deine Benutzer um nochmals etwas erhöhen willst und deine Benutzer auch von fremden Rechner aus zugreifen sollen, könntest du zusätzlich die Option anbieten, Einmalpasswörter extra für solche Zwecke zu generieren und zu benutzen.
 
Was ist denn daran so witzig? Für jemanden, der sich in der Materie überhaupt nicht auskennt, ist das Vigenere-Chiffre (oder vielleicht sogar eher noch das Cäsar-Chiffre) in meinen Augen der beste Einstiegspunkt in das Thema. Bis zum Verstehen von RSA oder AES ist es von da aus noch ein weiter Weg, aber man macht sich mit den Möglichkeiten des Themas vertraut.

Gerade beim Thema der Verschlüsselung sollte meiner Meinung nach ein wenig Wissen vorhanden sein, wenn man vorhandene Algorithmen anwendet. Und bevor ich da jemandem komplexe asymetrische Kryptographie-Logik hinknalle, soll er doch lieber selbst ein wenig nachlesen und sich für eine ihm am passendsten scheinende Verschlüsselungsstufe entscheiden.

Und da es grade in diesem Fall scheinbar nur darum geht, sich für den Worst Case abzusichern - dass die Inhalte der Datenbank offenbart werden, wäre es mir persönlich zu viel Overkill und Rechenzeitverschwendung, aufwendige und somit kostspielige Algorithmen bei jedem Mal anwenden zu müssen, wo ich auf das Passwort zugreife. Da nehm ich doch lieber ein einfaches Chiffre mit gut gewähltem Schlüssel, das ich zusätzlich noch selber leicht anpassen kann. Wenn die Passwörter dann auch noch so gut gewählt sind (ok, kann man sich bei Usern nicht drauf verlassen), dass sie einem Dictionary Attack widerstehen, ist es auch schon schwieriger, das Vigenere Chiffre zu knacken, da dann nix mehr mit wahrscheinlicher Verteilung aller Buchstaben zu erreichen ist.

Insofern: lol? ;)
 
Die Verschlüsselung ist ja schön und super, aber wenn ein Spionageprogramm auf dem Clientrechner rennt, dann wird das Geschreie groß, nämlich dann werden die Passwörter im Klartext mitgeschnitten, trotz Verschlüsselung.

Vielleicht versteh ich dich falsch, aber wenn das Clientsystem kompromittiert ist, hilft nichts. Ausser vllt ein Cryptodevice wie ne Smartcard.


@tleilax

Ich stimm dir zu, dass es sehr wichtig ist die Grundlagen der Kryptographie zu verstehen, wenn man an ein solches "sehr sicherheitsbeduerftiges" Projekt herangeht. Zumal - wenn er an sowas herangeht sollte er entsprechende Kenntnisse/Moeglichkeiten zur Beschaffung solcher besitzen. Nur als ernsthaften Vorschlag fuer die Passwortverschluesselung Vigenere zu bringen ist meiner Meinung nach fehl am Platz. Solange du kein OTP verwendest, ist Vigenere SEHR einfach zu knacken.

Falls du allerdings nur darauf hinweisen wolltest, er solle sich erstmal mit den Grundlagen auseinandersetzen (und aussedem ist ein Vigenere - vorausgesetzt man nimmt ein OTP als Key- ja realtiv unknackbar) versteh das lol nicht als Angriff oder aehnliches.
 
Zuletzt bearbeitet:
Vielen Dank für eure Infos.

Und hier noch zwei Antworten auf eure Fragen:
Ja, ich bin mir sicher dass ich die Passwörter noch brauche.
Nein, ich verrate noch nicht, was für eine Anwendung das werden soll.

;)

hmm, also wenn du das pw noch brauchst im plaintext würde i hmir gedanken machen :roll:
denn ein pw kann man anhand seines hashes vergleichen, pw zusenden feature braucht man nicht, neues generieren reicht, ein system um wieder an die plain-pws ranzukommen wäre schonwieder unsicher
 
Falls du allerdings nur darauf hinweisen wolltest, er solle sich erstmal mit den Grundlagen auseinandersetzen (und aussedem ist ein Vigenere - vorausgesetzt man nimmt ein OTP als Key- ja realtiv unknackbar) versteh das lol nicht als Angriff oder aehnliches.
Ok, haben wir uns nur falsch verstanden. Genau das meinte ich nämlich mit "Für den Anfang/Einstieg". ;)