So stellen Sie sicher, dass die Website und die Passwörter sicher sind [geschlossen]

15

Auf zuverlässigen Websites werden immer Behauptungen wie "Alle Daten werden verschlüsselt" oder "Alle Kennwörter werden mit 128-Bit-Verschlüsselung verschlüsselt" usw. angezeigt. Ich bin jedoch nie auf Behauptungen wie "Alle Kennwörter werden gehasht" gestoßen.

Auf meiner Website speichere ich alle Benutzerkennwörter in einer Datenbank, nachdem ich SHA-512 (höchstwahrscheinlich) mit einem zufälligen Salt gehasht habe. Ich möchte ein Snipet hinzufügen, das Benutzern sicherstellt, dass ihre Passwörter sicher sind, damit sie nicht von der Nutzung meiner Website abgehalten werden, da hierfür ein Passwort erforderlich ist. Ich möchte, dass sich Benutzer sicher fühlen, aber ich glaube nicht, dass jeder weiß, was Hashing ist.

MEINE FRAGE: Ist es in Ordnung, eine Nachricht mit dem Hinweis "Alle Passwörter sind verschlüsselt und sicher" bereitzustellen, da ich nicht glaube, dass der durchschnittliche Benutzer den Unterschied zwischen Hashing und Verschlüsselung erkennt und sich wahrscheinlich sicherer fühlt, nur weil er dies sieht das Komfortwort "Verschlüsselung"? Oder gibt es eine alternative Nachricht, die ich bereitstellen sollte?

Nebenbei bemerkt, ich bin neu im Bereich Verschlüsselung und Kennwort-Hashing und habe mich gefragt, ob dies für den Moment, in dem ich meine Site starte, sicher genug ist. Ich möchte den Benutzern nicht mitteilen, dass es sicher ist, wenn dies nicht der Fall ist. Jede Information wäre sehr dankbar. Vielen Dank.

user2698818
quelle
7
Persönlich würde ich mir nicht allzu viele Sorgen um die Kommunikation machen: Schreiben Sie eine technische Beschreibung Ihrer Arbeit, die irgendwo tief in den FAQs vergraben ist, wo die Techniker sie finden. Jedermann ist es sowieso egal. Noch wichtiger: Stellen Sie sicher, dass Sie das Richtige tun (das ist schwierig, wenn Sie neu sind, aber zumindest versuchen Sie es!). Bauen Sie kein eigenes Hashing, verwenden Sie so etwas wie bcrypt .
Joachim Sauer
4
Nun, das Richtige ist, das Login zusammenzulegen und die Benutzer nicht mit einem weiteren Benutzernamen und Passwort zu belästigen.
Jan Hudec
1
OpenID ist gut, aber Benutzername / Passwort sind auch in Ordnung. Ich glaube nicht, dass Ihr Problem darin besteht, Benutzer davon zu überzeugen, dass Ihre Website sicher ist. Da Sie unerfahren sind, ist es, als würden Sie etwas versprechen, das Sie nicht haben. Wenden Sie einfach gemeinsame Standards an - Sie werden nicht aufhören, dass professionelle Hacker kommen, aber niemand kann Ihnen auch die Schuld geben.
Hoàng Long
3
@coredump In der Tat. Die Verwendung von SHA-512 für Passwort-Hashing ist einfach nicht gut. Es ist nicht okay".
Thomas
3
Es lohnt sich wahrscheinlich, nachträgliche Fragen zur Informationssicherheit zu stellen, um sicherzustellen, dass Sie die bestmögliche und aktuelle Beratung erhalten. (Das bedeutet nicht, dass Sie hier schlechte Ratschläge erhalten, nur, dass wir nicht unbedingt Sicherheitsexperten sind).
ChrisF

Antworten:

22
  1. Benutzer interessieren sich nicht.

    Das einzige Mal, dass sie sich darum kümmern, ist, wenn jemand das Geld von ihrem Bankkonto abhebt und es scheint, dass es einen Link gibt, über den einige Tage zuvor jemand vollen Zugriff auf Ihre Datenbank erhalten hat.

  2. In fast allen Fällen, in denen ich solche Nachrichten gesehen habe, waren sie irreführend. Das lustigste war auf einer Website, auf der auf jeder Seite "military grade secure" -Labels zu finden waren. In einer Warnmeldung wurde darauf hingewiesen, dass das HTTP-Zertifikat ungültig ist. Es gab eine SQL-Injection auf Anmeldeformular. Einige Wochen später wurde die Website gehackt und verschwand für immer.

    Ich höre auf, die Anzahl der Websites zu zählen, die behaupten, die Informationen zu schützen, während ich ein Formular "Passwort wiederherstellen" habe, mit dem das ursprüngliche Passwort per E-Mail gesendet wird.

    Es ist wie bei diesen "W3C valid XHTML" -Labels. Warum werden sie normalerweise auf Websites platziert, auf denen selbst eine Homepage mindestens Dutzende von Fehlern und Code enthält <DIV COLOR='red'>?

Wenn Sie die Benutzer dennoch beruhigen möchten, können Sie Folgendes eingeben:

Ihre Passwörter werden sicher aufbewahrt. Denken Sie daran, dass wir Ihr Passwort nicht sehen können und Ihnen niemals eine E-Mail senden, in der Sie aufgefordert werden, ein Passwort anzugeben.

Aber ehrlich gesagt ist das Formular "Passwort zurücksetzen", das das Formular "Passwort vergessen, per E-Mail an mich senden" ersetzt, viel beruhigender als jedes Wort.

Hinweise aus den verschiedenen Kommentaren:

  • Das Rad nicht neu erfinden: OpenID verwenden. Auf diese Weise speichern Sie nicht einmal die Hashes.

    Quelle: Kommentar von Jan Hudec .

  • Open Source für Ihr Projekt, da Sie ein Student sind. Da Ihr Anliegen lautet: "Ich möchte nicht, dass Benutzer glauben, dass ihre Passwörter nicht sicher sind, weil ein Kind in der Schule sie entworfen hat." Nichts ist beruhigender, als durch Lesen des Quellcodes überprüfen zu können, ob er von einem geschickten Entwickler geschrieben wurde, dem Sicherheit am Herzen liegt.

    Quelle: Kommentar von Jan Doggen .

Arseni Mourzenko
quelle
Danke für den Input, Leute. Das Problem ist, dass ich Student bin und einen Service für meine Uni entwerfe. Ich möchte nicht, dass Benutzer denken, dass ihre Passwörter nicht sicher sind, weil ein Kind in der Schule sie entworfen hat. Ich habe mir eine Reihe verschiedener Methoden angesehen, einschließlich bcrypt, und ich habe mich noch nicht entschieden, welche ich verwenden soll. Ich gehe davon aus, dass es jetzt sicher genug ist, und wenn viele Leute damit anfangen, kann ich es bei Bedarf ergänzen. Ich arbeite gerade daran, es vorerst rauszubringen. Danke noch einmal.
user2698818
3
@ user2698818 Entwerfen Sie zunächst die Sicherheit, und stellen Sie dann eine Frage, in der die Sicherheit ausführlich beschrieben wird. Stellen Sie dann die Frage, ob die Sicherheit ausreichend ist. Gute Sicherheit kann vollständig öffentlich sein.
Jan Doggen
@ user2698818: ok. Bearbeitet meine Antwort.
Arseni Mourzenko
6
@JanDoggen: Nun, was er tun sollte , ist ein bestehendes Sicherheitssystem zu verwenden, das jemand anderes entworfen und gefragt hat " Ist es sicher genug ? ". Am liebsten eine, bei der diese Frage schon länger gestanden hat und die die Aufmerksamkeit mehrerer Experten auf diesem Gebiet auf sich gezogen hat ;-)
Joachim Sauer
12

Speichern Sie Passwörter nicht an erster Stelle! Folgen Sie dem Beispiel von Stack Exchange und lassen Sie Benutzer sich mit ihrer Identität an einer anderen Site anmelden, die die Authentifizierung über OpenID bereitstellt . Implementierungen sind für die meisten gängigen Web-Frameworks frei verfügbar.

Oder möglicherweise ein anderes Protokoll. Wenn es sich um ein firmeninternes Projekt für eine Institution handelt (wie Ihr Kommentar in der anderen Antwort andeutet), gibt es mit ziemlicher Sicherheit bereits ein LDAP, Kerberos (Windows Active Directory basiert auch auf diesen beiden; Apache unterstützt die HTTP-Authentifizierung für diese) oder ein anderes ein solcher Dienst für die Computeranmeldung. Verbinde dich einfach damit.

Dies erspart Ihnen das Speichern vertraulicher Informationen (Sie müssen höchstwahrscheinlich noch Berechtigungen speichern, diese sind jedoch nicht so kritisch) und die Benutzer müssen sich noch einen weiteren Benutzernamen und ein Passwort merken, was insgesamt eine Win-Win-Situation darstellt.

Jan Hudec
quelle
1
Bitte teilen Sie mir mit, welche Websites Sie erstellt haben, damit ich sie vermeiden kann, wenn Sie Berechtigungen als nicht sicherheitskritisch behandeln.
Orlp
1
Was ist, wenn Kennwörter gespeichert werden müssen? In der Frage wird auch speziell nach deren Speicherung gefragt.
Piotr Kula
3
@ppumkin: Es gibt viele Fragen der Art "Wie verwende ich X, um Y zu tun", wobei die beste Antwort "Sie verwenden Z" ist. Wenn Sie nicht einverstanden sind, geben Sie einfach eine bessere Antwort ;-).
Jan Hudec
3
@ppumkin Um eine Analogie zu verwenden: "Ich versuche mit meiner Faust einen Stein zu brechen, welche Handschuhe soll ich verwenden?" Prüfen Sie, ob sie auf Meißel aufmerksam sind, bevor Sie deutsche Kavallerie-Stulpen anbieten.
Deworde
1
Ich würde es vermeiden, zu schnell OpenID vorzuschlagen. Ja, es ist großartig, aber im Allgemeinen funktioniert es am besten, wenn Sie mehrere OpenID / OAuth-Anbieter unterstützen. Es gibt viele technische Foren, Blogs, Fragen und Antworten usw., in denen Sie sich über den OID-Anbieter von Facebook anmelden müssen und keine anderen verwenden können. Ich bin in einem Arbeitsnetzwerk, das Facebook-Domains im Großhandel blockiert, und kann daher nicht mit diesen Websites arbeiten. Wenn Sie OID unterstützen und vorerst nur einen verwenden, wählen Sie einen Anbieter aus, der bei Ihrer Zielgruppe beliebt ist und wahrscheinlich nicht von einem Systemadministrator blockiert wird. Google und Windows Live sind eine gute Wahl.
KeithS
2

Sprichwort:

"Das ist sicher."

ist ein persönliches Urteil, das Sie über bestimmte technologische Fakten oder Prozesse fällen, und dieses Urteil ist begrenzt durch das, was Sie zu diesem Zeitpunkt selbst über Sicherheit wissen. Aber können Sie ohne Zweifel garantieren, dass Ihre Verschlüsselung, Speichermethode usw. allen Angriffen standhält, auch solchen, die Sie nicht oder noch nicht kennen?

Bedeutung: Diese Aussage ist in Gefahr, veraltet zu sein, vielleicht sogar ohne dass Sie es merken.

Ich neige dazu , daher mit dem obigen Kommentar von @JoachimSauer zustimmen: Gerade beschreiben , was Sie tun, wie Sie speichern Benutzerinformationen und sagen Benutzer , wie dies soll machen Sie Ihren Dienst sichern. Dann lassen Sie die Nutzer selbst beurteilen.

stakx
quelle
Nein, "Das ist sicher" ist für mich keine "persönliche" oder subjektive Aussage, es ist nicht so, als ob "es schön ist" . Tatsächlich handelt es sich um eine semantisch leere Aussage, ohne "in Bezug auf was" oder "vor welchen Angriffen geschützt" oder "auf welcher Ebene in welchem ​​Kontext" anzugeben. Wenn Ihre gesamte Aussage aus "dies ist sicher" besteht, ist sie veraltet, bevor Sie mit der Eingabe fertig sind, und es ist sehr wahrscheinlich, dass Sie sich dessen nicht bewusst sind. Ich stimme dem zu, aber im letzten Teil dreht sich alles um Details.
AviD
@ AVID: Vielleicht lesen Sie zu viel in meine spezifische Wortwahl. Ja, zu sagen, dass etwas "sicher" ist, ohne weitere Details anzugeben, ist bedeutungslos. Aber ich bin davon überzeugt, dass es auch ein persönliches Urteil ist, denn nicht jeder hat genau das gleiche Gefühl und verlangt nach "Sicherheit": Was A für sicher genug hält, könnte sich für B unsicher anfühlen Person, die die Aussage "findet es sicher" macht. Und das ist kein Argument mit dem gleichen Gewicht, wie jemandem die relevanten Fakten zu geben und sie ihre eigenen Schlussfolgerungen ziehen zu lassen.
Stakx
Richtig, "in Bezug auf was" habe ich für welche Anforderungen, Sicherheitsprofile, Risiken usw. gemeint. Immer noch kein persönliches Urteil, aber was Sie mit "persönlich" gemeint haben, meine ich mit "Kontext". "Sicher" ist eine harte Wissenschaftsmetrik, kein weiches "Wunschgefühl". Aber ja, wie du sagst, sag mir nicht, dass es "sicher" ist, sag mir, was du getan hast, um es so zu machen.
AviD
@ AVID: OK. Ich werde nicht beschießt das Argument weiter, mit Ausnahme von selbst , dass die Sicherheit ist ein Wischiwaschi-Gefühl auch. Es ist natürlich mehr als das, aber wenn es darum geht, Benutzer zu "versichern" (siehe Fragentitel), dann zählt am Ende das Wunsch-Wasch-Gefühl.
Stakx
1

Es hängt wirklich vom Kontext Ihrer spezifischen Website ab.

Wenn es sich beispielsweise um eine Verbraucherwebsite handelt, interessieren sich die meisten nur für ihre Passwörter (möglicherweise), finanziellen / gesundheitlichen Informationen (abhängig) und privaten Informationen wie Bilder (hahaha, ja, richtig ...). .

Wenn es sich um eine Geschäftsanwendung handelt, ist die Sicherheitsstufe der gesamten Site relevant, nicht nur Kennwörter. Ebenso kommt es darauf an, wer Ihre Zielbenutzer sind - hochtechnisch / nicht so technisch usw.

All diese Zusammenhänge bestimmen maßgeblich, was Sie kommunizieren sollten und welches Maß an Sicherheit erforderlich ist.

Für nicht technische Verbraucher ist es beispielsweise ausreichend, einige allgemeine, einfache Kommentare zu hinterlassen, wie zum Beispiel:

Diese Website wurde mit modernsten Sicherheitstechniken erstellt. Ihr Passwort ist immer verschlüsselt und wir werden Ihre Bilder niemals an die NSA senden.

(Und, wie andere gesagt haben, sind Sie besser dran , nicht einmal mit Passwörtern überhaupt, verwenden einige Standards wie OpenID oder OAuth.)

Für hochtechnische Unternehmen benötigen Sie eine vollständige Seite mit technischen und verfahrenstechnischen Details, wie zum Beispiel:

Wir haben während unseres gesamten Entwicklungs- und Bereitstellungsprozesses eine vollständige SDL (Secure Development Lifecycle) implementiert.
...
Unsere Sicherheitsarchitektur ist ... Dies bietet die Vorteile von ...
Wir sorgen für sichere Codierung wie ... durch ... Wir führen diese und jene Tests durch.
Unsere Kryptografie umfasst diese Algorithmen ... und ... Wir erfüllen die branchenüblichen Vorschriften und sind zertifiziert für ...
Unsere Sicherheit wird von diesem unabhängigen Berater überprüft.
...
Wenn Sie weitere Einzelheiten erfahren und unsere Richtlinien überprüfen oder eine unabhängige Prüfung veranlassen möchten, wenden Sie sich bitte an die Marketingabteilung.

Natürlich wollen Sie nicht weg zu geben zu viel detaillierte Informationen, sollte es mehr über den Prozess als die Passwörter selbst ... Und natürlich sollte es selbstverständlich sein, dass die Realität tatsächlich sollte erfüllen mit dem, was Sie schreiben dort , mit welchem ​​Kontext Sie es auch zu tun haben.

Als eine der angedeuteten Antworten ist es den meisten Benutzern egal, sie würden nicht verstehen, was Sie ihnen sagen, und sie würden sich trotzdem anmelden, selbst wenn Sie sagen, dass Sie Benutzerdaten an die NSA senden.
Das ist nicht für sie.
Sie würden sich genauso freuen, wenn sie keine Passwörter hätten. Lassen Sie mich einfach meinen Benutzernamen aus der Liste auswählen und mich automatisch anmelden.

Dies gilt natürlich nur für den kleinen Prozentsatz, für den es wichtig ist - Sie sollten es den intelligenten Benutzern ermöglichen, das Richtige zu tun, ihnen die benötigten Informationen zu geben und ihnen die Ausbildung zu gewähren, nach der sie möglicherweise fragen.
Wenn Sie dies nicht tun, wachen die anderen 98% plötzlich auf und werden wütend.
("Sicher, ich wusste, dass ich kein Passwort benötige, um meine Bilder zu sehen, aber ich hätte nicht gedacht, dass jemand anderes sie auch sehen könnte !!")

AviD
quelle
0

Wenn Sie möchten, dass Ihr System sicher ist, ist die Stärke des Kennwortalgorithmus bedeutungslos - die meisten Hacker können Kennwörter in kürzester Zeit knacken, insbesondere wenn das gewählte Kennwort klein ist oder aus allgemeinen Wörtern besteht, die der Hacker bereits geknackt und gespeichert hat "usiong rainbow tables and similar. Lesen Sie den Artikel von ArsTechnica über das Knacken von Passwörtern, um einen umfassenden Einblick zu erhalten.

Was Sie tun müssen, ist sicherzustellen, dass die bösen Jungs überhaupt nicht an ihre Hashes kommen können. Ein sicherheitsbewusstes Unternehmen, für das ich arbeitete, verfügte über ein dreistufiges Websystem, bei dem die Webserver physisch nicht mit den Datenbankservern verbunden waren. Als mein Chef seine Website aufsetzen und direkten Zugriff auf die DB haben wollte (schlecht gestalteter Code, sagte Nuff), wurde ihm gesagt, er könne ihn nicht haben, und als er drückte, wurde ihm gesagt, dass es keine Drähte zwischen ihnen gab . Er musste es entwickeln, damit alle Datenanforderungen über einen Middle Tier-Service weitergeleitet wurden. Und diese Dienste waren nicht nur gesichert, sondern nur minimaler Angriffsfläche ausgesetzt und wurden gesperrt. Und die Datenbank hat niemals Tabellen zum Lesen freigegeben, sondern nur gespeicherte Prozeduren, die gesperrt waren, sodass nur der betreffende Dienst Zugriff hatte.

Es war nicht so schlecht zu programmieren, wie Sie vielleicht denken, denn sobald Sie die Architektur und die Trennung der einzelnen Ebenen gekannt haben, war es recht einfach zu programmieren.

gbjbaanb
quelle
0

Sie können die sicherste Site der Welt entwickeln und eine wirklich schlechte Benutzererfahrung erzielen. Benutzer gehen davon aus, dass Ihre Website unsicher ist.

Sie können die am wenigsten sichere Site auf dem Planeten erstellen und eine erstaunliche Benutzererfahrung erzielen. Benutzer gehen davon aus, dass Ihre Website sicher ist. Zumindest bis es in den Abendnachrichten erscheint.

CodeART
quelle