Frage:
Ist es eine gute Idee, den gesamten Unicode-Bereich zu verwenden, um ein zufälliges Passwort zu generieren, anstatt begrenzte Bereiche?
person of entropy
2018-01-16 18:45:04 UTC
view on stackexchange narkive permalink

Ich weiß, dass einige Websites / Apps mit geringer Sicherheit Kennwörter nur auf alphanumerische Zeichen beschränken und andere einen etwas breiteren ASCII-Bereich zulassen. Einige Websites / Apps unterstützen auch Unicode.

Kennwörter können normalerweise auf jeder allgemeinen Tastatur eingegeben werden, sodass sie normalerweise mit den allgemein verfügbaren Zeichen generiert werden. Wäre es jedoch für Passwörter, die nur digital gespeichert werden, eine gute Idee, die Schätzzeit durch Verwendung des gesamten Unicode-Zeichenbereichs zu maximieren? Oder gibt es Gründe zu der Annahme, dass einige oder die meisten Unicode-unterstützenden Websites / Apps ihren zulässigen Zeichenbereich noch einschränken könnten?

Wenn Sie ein Passwort "nur digital" behalten (was für mich wie "Passwort-Manager" klingt), können Sie dann nicht immer Passwörter mit hoher Entropie ohne Unicode und nur alphanumerische Zeichen erstellen?Oder anders ausgedrückt: Korrigieren Sie mich, wenn ich falsch liege: Ich gehe davon aus, dass Dienste, mit denen Sie Unicode für Kennwörter verwenden können, keine strengen Längenbeschränkungen haben. Daher ist Entropie bei der Verwendung alphanumerischer Zeichen kein Problem.Auf der anderen Seite erlauben Dienste mit unnötigen Längenbeschränkungen keine Unicode-Zeichen.Entropie wird in beiden Fällen ein Problem sein.
Sie könnten einfach ein etwas längeres Passwort verwenden und sich die Kopfschmerzen sichern.
Achten Sie darauf, wie unterschiedliche Systeme die Unicode-Zeichenfolgen interpretieren können. Nicht alle Apps, Hosts, DBs usw. behandeln Unicode auf dieselbe Weise: https://security.stackexchange.com/a/85664/36538
Ebenfalls verwandt: [Machen Nicht-Tastaturzeichen mein Passwort weniger anfällig für brutales Erzwingen?] (Https://security.stackexchange.com/questions/4632/do-non-keyboard-characters-make-my-password-less-anfällig für Brute-Forcing), [Erhöht die Verwendung von Unicode-Zeichen in meinem Passwort die Sicherheit?] (https://security.stackexchange.com/questions/4943/will-using-unicode-chars-in-my-password-Erhöhung der Sicherheit), [Warum Kennwörter auf druckbare ASCII-Zeichen beschränken?] (https://security.stackexchange.com/questions/5694/why-limit-passwords-to-ascii-printable-characters?rq=1)
Sie müssten * sehr * vorsichtig sein, für welche Dienste Sie dies verwenden.Wenn Sie plötzlich feststellen, dass Sie das Kennwort auf einem unbekannten Computer eingeben müssen, haben Sie möglicherweise erhebliche Schwierigkeiten.Mein Beispiel hierfür ist eine Situation, mit der ich mehr als einmal konfrontiert war: Ich musste mich anmelden, um E-Tickets in einem Hotel-Businesscenter zu drucken (sie wurden erst nach meiner Abreise zur Verfügung gestellt; Drucken war erforderlich, weil sie erforderlich warenIch kann kein halbes PDF von Ihrem Telefon abreißen, um das veraltete System zu befriedigen.Der Folgeverlust kann ziemlich teuer sein
einverstanden.Ich habe kürzlich ein solches generiertes Kennwort in mein Administratorkonto einer VM eingefügt, vorausgesetzt, ich würde immer das Kopieren / Einfügen von Keypass für Anmeldungen verwenden.Die Anmeldeaufforderung akzeptiert jedoch kein Einfügen und auch kein Autotyping von High-Ascii über Keypass.Ich musste mehrere Stunden damit verbringen, 64 Alt-Codes zu lernen und aufzuschreiben, um mich wieder anmelden zu können.
Vielleicht verwenden Sie einfach ein längeres Passwort.Wenn es programmgesteuert verarbeitet wird, ist die Länge kein Problem.
Wenn es nicht für menschliche Eingaben verwendet wird, warum nicht einfach eine zufällige Bytefolge?Andernfalls möchte ich wahrscheinlich, dass Sie lebend geschunden werden, wenn Sie mich dazu bringen, "ᚷᛖ ώд ლ ಸ இ 을 身" als mein Standardkennwort einzugeben.
Ebenfalls verwandt: [Sollten Benutzer beim Erstellen eines Kennworts ein beliebiges Sonderzeichen verwenden dürfen?] (Https://ux.stackexchange.com/q/72568/46361).(Ja, das ist eine beliebte Frage.)
Nicht, dass es wirklich wichtig wäre, aber ich denke, dass die meisten Verwendungen von "Unicode" in den Fragen und Antworten technisch "UTF-8" sein sollten.(Unicode ordnet Zeichen Zeichen Zahlen zu; UTF-8 ordnet Zahlen Zahlen Bytefolgen zu.)
Planen Sie, dass Personen das Passwort kopieren und einfügen?Ansonsten sehe ich keinen Unterschied zwischen der Bezeichnung "zufälliges Unicode-Passwort" und der Erzeugung einer zufälligen Folge von Bytes gleicher Länge und der Frage, ob sie einer gültigen Codierung für Unicode entsprechen.
Was erwarten Sie von dem Vorteil gegenüber der Erzeugung einer langen Folge von zufälligen Bytes?Sie könnten mit base64 codiert werden, wenn Sie möchten, dass sie typisierbar sind, aber die Entropie wäre dieselbe.
Es scheint nicht, dass jemand anderes dies angesprochen hat: *** Die meisten Leute sprechen kein Englisch. *** Unterstützen Sie Unicode, nicht als seltsame Sicherheitstaktik, sondern weil die meisten Leute auf der Erde und im Internet dies nicht tunIch benutze kein Englisch.
Ich habe verstanden, dass OP fragt, ob Bruteforce-Ratesysteme 208 Tastaturzeichen pro Position durchlaufen und nicht einen viel größeren UTF-8- oder anderen Unicode-Satz pro Position. Dies würde es einem Bruteforce-Ratesystem erschweren, an Ihr Passwort zu gelangen.
Unicode ist eine Dose Würmer mit nicht druckbaren, kombinierten Zeichen, einer Breite von Null, richtungswechselnden Zeichen, einem vom Gebietsschema abhängigen Zeichenfolgenvergleich und einer Menge Dinge, über die ich nichts wissen möchte.Wenn Sie nicht wirklich wissen, was Sie tun, bleiben Sie weg, sonst wird Ihr Leben wirklich unglücklich.
@TomK."Wann immer Sie ein Passwort" nur digital "behalten (was für mich wie" Passwort-Manager "klingt)" - Möglicherweise benötigen Sie ein Passwort, um auf Ihren Passwort-Manager zuzugreifen.
Vierzehn antworten:
Kevin
2018-01-16 20:39:47 UTC
view on stackexchange narkive permalink

Das klingt sehr nach Fencepost Security. Stellen Sie sich vor, Sie betreiben eine Einrichtung mit einem Maschendrahtzaun, der 500 Fuß hoch ist. Um wie viel würde sich die Sicherheit verbessern, wenn dieser Zaun 3.000 Fuß hoch wäre? Keine - weil jeder, der versucht einzusteigen, die 500 Fuß nicht erklimmen wird; Sie werden darunter graben, ein Loch schneiden usw.

Ebenso haben Sie ein Passwort, das beispielsweise 20 zufällige alphanumerische Zeichen enthält. Das sind 62 ^ 20 Möglichkeiten. Sie erwägen, es in 20 zufällige Unicode-Zeichen zu ändern. Dies erhöht den Wahrscheinlichkeitsbereich erheblich, außer dass das brutale Erzwingen eines zufälligen Kennworts mit 20 Zeichen nicht dazu führt, dass die Dinge kompromittiert werden.

Ich mag die Idee, aber mehr Möglichkeiten pro Zeichen mit derselben Zeichenfolgenlänge (in Zeichen) würden wahrscheinlich für einen dickeren Zaun verantwortlich sein, genauso wie mehr ASCII-Zeichen.
@Baldrickk Die meisten häufig verwendeten Hashing-Algorithmen gehen ohnehin nicht über 72 Byte hinaus.Ein 12-KByte-Passwort ist so sicher wie ein 72-Byte-Passwort.
@Baldrickk Ich denke, was gemeint ist, ist, dass so etwas wie Social Engineering oder das Umgehen des Authentifizierungsschemas wahrscheinlicher ist als die Passwörter, die einem Brute-Force-Angriff ausgesetzt sind.
Ich sollte das mit Idee beachten - ich meinte die Metapher.Ich hätte klarer sein sollen.
+1 für @RickyNotaro-Garcia Dies ist die glaubwürdigste und wahrscheinlichste (und beängstigendste) Tatsache, die ich seit langer Zeit über Passwortsicherheit gelesen habe.Dies bedeutet auch, dass für alles andere als eine Wörterbuchsuche die Bruteforce-Methode mit jeder Art von Eingabezeichenfolgen und -formaten erreicht werden kann. Eine einfache Zeichenfolge mit Hex-Ziffern funktioniert wahrscheinlich, wenn die Zeit keine Rolle spielt.
Sjoerd
2018-01-16 18:51:14 UTC
view on stackexchange narkive permalink

Dies ist aus Sicherheitsgründen eine gute Idee. Ein Passwort mit Unicode-Zeichen ist schwerer zu erzwingen als ein Passwort mit ASCII-Zeichen gleicher Länge. Dies gilt auch dann, wenn Sie die Bytelänge anstelle der Zeichenlänge vergleichen, da Unicode das höchstwertige Bit verwendet, während ASCII dies nicht tut.

Ich denke jedoch, dass dies nicht praktikabel wäre, da Unicode-Fehler so häufig sind . Ich denke, wenn Sie überall Unicode-Passwörter verwenden, werden Sie auf mehr als ein paar Websites stoßen, auf denen Sie Probleme beim Anmelden haben würden, da die Entwickler die Unicode-Unterstützung für Passwörter nicht korrekt implementiert haben.

Kommentare sind nicht für eine ausführliche Diskussion gedacht.Dieses Gespräch wurde [in den Chat verschoben] (http://chat.stackexchange.com/rooms/71947/discussion-on-answer-by-sjoerd-is-it-a-good-idea-to-use-the-gesamter Unicode-Bereich).
Ganz zu schweigen davon, dass verschiedene Tastaturen in verschiedenen Ländereinstellungen unterschiedliche Unicodes ergeben.Was auf einem Computer funktioniert, funktioniert möglicherweise nicht auf einem anderen Computer.
Hector
2018-01-16 19:03:46 UTC
view on stackexchange narkive permalink

Das Argument Security by Obscurity zu ignorieren, ist eine grundlegende Frage der Entropie. Ein 8-stelliges Unicode-Passwort ist sicherer als ein 8-stelliges ASCII-Passwort, aber weniger sicher als ein 64-stelliges ASCII-Passwort.

Im Allgemeinen stimme ich Sjoerd zu - dies verursacht wahrscheinlich mehr Unannehmlichkeiten als Vorteile. Darüber hinaus wird Unicode Ihr Leben wahrscheinlich unglücklich machen, wenn Sie jemals ein zufälliges Passwort manuell eingeben müssen.

Für den Randfall, in dem Sie einen Dienst verwenden müssen, der Unicode aktiv unterstützt, während Sie a Das maximale Limit für die Kennwortlänge (das wiederum ignoriert normalerweise andere Sicherheitslücken) gibt es dafür.

+1 für die aktive Support-Bemerkung.Es kann sehr problematisch sein, Zeichen "entkommen" oder weniger als die volle Unterstützung zu haben.Wenn es nicht zuverlässig verwendet werden kann, ist es nicht "sicher".
"Ein 8-stelliges Unicode-Passwort ist ... weniger sicher als ein 64-stelliges ASCII-Passwort."Einige Systeme kürzen Kennwörter auf 8 Zeichen. In diesem Fall ist ein 8-stelliges Unicode-Kennwort sicherer als ein 64-stelliges ASCII-Kennwort.
NH.
2018-01-16 21:56:37 UTC
view on stackexchange narkive permalink

Der einzig gültige Grund für die Verwendung von Unicode-Zeichen in Kennwörtern ist, dass die Anzahl der Zeichen (nicht Bytes) in einem Kennwort für eine bestimmte Site begrenzt ist (wie bei dieser dummen Bank, die zuvor a hatte) > maximal 10 Zeichen), so dass es in ein oder zwei Tagen leicht zu erraten ist. In diesem Fall können Sie Unicode verwenden (sofern die Websitebesitzer dies zulassen), um in der Zwischenzeit mehr Entropie in Ihr Kennwort einzugeben, während Sie die Websitebesitzer auffordern, NIST 800-63-3 und einzuhalten Längenbeschränkungen entfernen (und Hash ordnungsgemäß, damit das Speichern von Passwörtern kein Problem darstellt).

Ich wollte auch hier ein Missverständnis korrigieren:

Unicode verwendet das höchstwertige Bit, während ASCII nicht.

Während dies für normales ASCII zutrifft, verwendet das erweiterte ASCII, das einige Passwortmanager (z. B. KeePass) bei der Passwortgenerierung verwenden können, jedes einzelne Bit jedes Bytes und weist somit eine höhere Entropie auf Dichte als sogar Unicode, das immer noch eine Struktur aufweist, die angibt, wie viele der folgenden Bytes Teil desselben Zeichens sind (Beachten Sie, dass in eine ungültige Bytesequenz in Unicode ).

Da eine Site, die Sie auf kurze Passwörter beschränkt, ihre Passwörter wahrscheinlich nicht richtig hasht (was dazu führt, dass Unicode-Passwörter fehlschlagen oder mit th gespeichert werden) Bei falscher Codierung sollten Sie fast nie die Zeit damit verschwenden, sich mit Unicode-Passwörtern zu beschäftigen, denn während Sie von Ihren lustigen Zeichen so abgelenkt sind (und die Tatsache, dass Sie Ihr Passwort zurücksetzen müssen, weil es seltsam gespeichert wurde), könnte ein Angreifer raten Ihre (in) Sicherheitsfragen oder die Verwendung von Schokoladenkryptografie, um Zugriff auf Ihr Konto zu erhalten.

Während einige einen zusätzlichen Anwendungsfall empfehlen (["Angeben an Ihre Freunde"] (https://makemeapassword.ligos.net/Generate)), ist dies ungültig, da Passwörter Ihren Freunden nicht angezeigt werden sollten :).
KeePass konnte nur jedes Bit jedes Bytes verwenden, wenn der Server eine 8-Bit-Codierung verwendete. KeePass wusste, welche Codierung dies war, und jede Übertragungsstufe war 8-Bit-transparent.Aus dem Quellcode (PwCharSet.cs) geht hervor, dass die falsch benannte Option "High ANSI" von KeePass nur U + 00A1 bis U + 00AC und U + 00AE bis U + 00FF enthält, d. H. Die druckbaren Nicht-ASCII-Latin-1-Zeichen.Wenn das Kennwort als UTF-8 codiert ist, ist die Entropie pro Byte tatsächlich niedriger, wenn "High ANSI" aktiviert ist, als wenn es deaktiviert ist.
(Nicht, dass die Entropie pro Byte von Bedeutung ist, es sei denn, die Passwörter werden vor dem Hashing abgeschnitten.)
@Sjoerd ist korrekt: ASCII ist 7-Bit.Eine 8-Bit-Codierung kann ASCII als Teilmenge enthalten, es handelt sich jedoch nicht um ASCII, sondern um eine Obermenge.Und es gibt viele 8-Bit-Codierungen - auch nur in der ISO / IEC 8859-Serie.Das Problem falscher Codierungen besteht auch bei 8-Bit-Codierungen.
John Deters
2018-01-17 01:08:52 UTC
view on stackexchange narkive permalink

Dieser Ansatz kann Ihre Gesamtsicherheit in bestimmten Fällen verringern nicht verbessern.

Informationssicherheit besteht aus drei Attributen: Vertraulichkeit, Integrität und Verfügbarkeit () CIA-Triade). Wenn Sie sich ausschließlich auf eines konzentrieren, können Sie leicht die Bedeutung der anderen übersehen.

Die Vertraulichkeit von Passwörtern wird durch die Entropieprinzipien erreicht: Wie „nicht erratbar“ ist Ihr Passwort? Dies wird üblicherweise durch die Größe des Brute-Force-Schätzraums gemessen, ausgedrückt als Potenzen von 2 oder Bit. Ein Brute-Force-Angreifer kann nur so viel raten. Durch Auswahl eines längeren Passworts zur Erhöhung dieser Entropie können Sie alle bekannten oder vorhergesagten Vermutungsmöglichkeiten überschreiten. Wenn Sie die Entropie auf über 80 Bit bringen (oder Ihren Wert auswählen), ist das Passwort selbst für nationalstaatliche Akteure unerreichbar. Unabhängig von der oben stark vereinfachten Beschreibung ist der Punkt, dass das Überschreiten von "außerhalb der Reichweite" Ihre Sicherheit nicht wesentlich erhöht. Und es ist für die Sicherheit nicht relevant, wenn Sie die gewünschte Entropie mit 10 Unicode-Zeichen oder 17 ASCII-Zeichen erreichen.

Verfügbarkeit bedeutet "Kann ich bei Bedarf auf meine Daten zugreifen?" Wenn Sie vollständige Unicode-Zeichensätze verwenden, besteht die Gefahr, dass verschiedene Websites, die Unicode nicht unterstützen, oder Browser oder Betriebssysteme, die Unicode falsch implementieren, oder Websites, die Unicode unsichtbar in ASCII übersetzen, unter dem Deckmantel in Konflikt geraten. Die daraus resultierende Verwirrung erhöht das Risiko, Ihren zukünftigen Zugriff auf die Daten einzuschränken. Dies stellt eine potenzielle Verringerung der zukünftigen Verfügbarkeit dar.

Im Allgemeinen ist die Wahrscheinlichkeit, dass ein Angreifer Ihr 80-Bit-Kennwort brutal erzwingt, nicht annähernd so hoch wie die Wahrscheinlichkeit, auf eine schlecht codierte Site zu stoßen, die nicht mit Unicode umgehen kann richtig. Daher kann Ihre Gesamtsicherheit verringert anstatt erhöht werden.

Natürlich haben viele Websites eine Kennwortlänge und andere Einschränkungen, die auch die Entropie Ihrer Kennwörter drastisch einschränken. In diesen Fällen kann die Verwendung des vollständigen Unicode-Satzes die Entropie Ihrer Kennwörter erhöhen, vorausgesetzt, sie weisen keine anderen versteckten Fehler auf. Auf diesen Websites verbessern Sie möglicherweise Ihre Sicherheit. Es ist jedoch praktisch unmöglich, von außen zu erkennen, ob eine Site Ihre Passwortdaten ordnungsgemäß verarbeitet.

Da UTF-8 häufig nur unzureichend unterstützt wird, ist auch die Integrität gefährdet (zumindest das Kennwort, möglicherweise nicht die Daten, die durch das Kennwort geschützt werden).
Wenn eine Site Sie auf 10 Zeichen beschränkt, bezweifle ich sehr, dass 10 chinesische Zeichen zulässig sind.Stellen Sie sich vor, die Site, an der Sie das Kennwort zuerst eingeben, konvertiert es stillschweigend in UTF-8 und entfernt das höchste Bit.Jetzt steckst du fest.
Tom
2018-01-17 01:07:16 UTC
view on stackexchange narkive permalink

Dies ist möglicherweise keine direkte Antwort. Wenn das Kennwort jedoch nur digital gespeichert wird, sollten Sie sich fragen, warum Sie überhaupt ein Kennwort anstelle eines Byte-Arrays generieren. Sobald Sie das Ganze als einfache Bytes betrachten, gilt die Frage nicht mehr.

Auch die Länge> Komplexität in allen Dingen, die mit Passwörtern zusammenhängen.

Die meisten Anwendungen akzeptieren einfach kein beliebiges Array von Bytes als Passwort.Z.B.Versuchen Sie, ein Null-Byte in das Passwort Ihrer Lieblingswebsite einzufügen.
@DmitryGrigoryev Vielleicht schlug Tom eine HEX-Darstellung seines Byte-Arrays vor.Die Quelle der Entropie kann nicht durch Erraten bestimmt werden, ob es mehr gibt, als ein Wörterbuchangriff finden kann.
Aus der Frage geht nicht hervor, ob das OP nach einem Passwort sucht, das er überall eingeben kann, oder nach einer Anmeldeimplementierung, die für seine eigene Site verwendet werden kann.
Patrick Mevzek
2018-01-18 09:19:37 UTC
view on stackexchange narkive permalink

Es gibt einen RFC zu Ihrem Problem: Vorbereitung, Durchsetzung und Vergleich von internationalisierten Zeichenfolgen, die Benutzernamen und Kennwörter darstellen, deren Zusammenfassung lautet:

In diesem Dokument werden aktualisierte Methoden beschrieben zur Behandlung von Unicode-Zeichenfolgen, die Benutzernamen und Kennwörter darstellen. Der vorherige Ansatz war als SASLprep (RFC 4013) bekannt und basierte auf Stringprep (RFC 3454). Die in diesem Dokument angegebenen Methoden bieten einen nachhaltigeren Ansatz für den Umgang mit internationalisierten Benutzernamen und Kennwörtern.

Wenn Sie Französisch lesen, finden Sie hier auch eine gute Erklärung: http : //www.bortzmeyer.org/8265.html.

Abschnitt 8 des RFC befasst sich speziell mit der Sicherheit von Passwörtern unter Verwendung eines "beliebigen" Unicode-Zeichens mit den folgenden Abschnitten:

  • 8.1. Passwort- / Passphrasenstärke
  • 8.2. Vergleich von Passwort / Passphrase
  • 8.3. Identifikatorvergleich
  • 8.4. Wiederverwendung von PRECIS
  • 8.5. Wiederverwendung von Unicode
Diese.Das Implementieren von Unicode ist [unglaublich] (https://eev.ee/blog/2015/09/12/dark-corners-of-unicode/) [schwer] (https://stackoverflow.com/questions/6162484/why-Does-Modern-Perl-Vermeiden-Utf-8-by-Default / 6163129% 236163129) und Dinge wie die Verwendung einer definierten Normalisierung sind unerlässlich, um überhaupt die Chance zu haben, dass es funktioniert.
Boldewyn
2018-01-18 15:39:01 UTC
view on stackexchange narkive permalink

Zusätzlich zu den anderen guten Antworten möchte ich nur darauf hinweisen, was bei der Verwendung des vollständigen Unicode-Satzes für Kennwörter entlang der Pipe schief gehen kann.

Angenommen, Sie verwenden zufällig a mehr oder weniger gültige UTF-8-Zeichenfolge,

  • Es gibt Zeichen, die in der Mitte der mehrsprachigen Grundebene als Zeilenumbruch interpretiert werden, wie U + 2029 Paragraph Separator. Möglicherweise können sie nicht in ein einfaches Feld <input> eingegeben werden.
  • Es gibt beide Leerzeichen, die möglicherweise von einer Sprache entfernt werden oder nicht trim () -Methode
  • Wenn Sie Ersatzzeichen (U + D800-U + DFFF) verwenden, Nichtzeichen wie U. + FDD0, Zeichen für den privaten Gebrauch oder nicht zugewiesene Zeichen (obwohl gültige UTF-8-Sequenzen). Das Verhalten eines bestimmten Werkzeugsatzes ist grundsätzlich undefiniert (Entfernen, Ersetzen, Ablehnen, Nichtstun oder eine beliebige Kombination von Zeichen) diese)
  • Wenn Sie diakritische Zeichen hinzufügen, kann jedes laufende Tool dies in eine NFC- oder NKD -Darstellung ändern und die Bytes im Kennwort ändern.
  • und Das kommt nur von oben. Ich bin sicher, ich habe viele andere mögliche Probleme vergessen, wenn Passwörter aus dem gesamten Unicode-Bereich ausgewählt werden.

Ähnlich wie bei @JohnDeters vorgeschlagen, könnte dies eine schlechte Idee sein, da Der Vorteil eines größeren Quellraums wird durch die beweglichen Teile der Textverarbeitung auf dem Weg übergewichtet.

gnasher729
2018-01-17 03:30:17 UTC
view on stackexchange narkive permalink

Was für die Sicherheit zählt, ist die Entropie des Passworts - wie viele Bits tatsächlicher Informationen enthält das Passwort.

Die andere Seite des Problems ist, wie schwierig es ist, sich das Passwort zu merken und das Passwort einzugeben. Stellen Sie sich vor, Sie versuchen, Ihr Passwort auf einem iPhone einzugeben, und Sie stellen fest, dass dies nicht möglich ist (ich habe nicht überprüft, wie schwierig es ist, beliebige Unicode-Zeichen einzugeben). Oder Sie erkennen, dass es sehr, sehr schwierig ist, es zu 100% richtig einzugeben. Oder es dauert nur ewig - ich habe möglicherweise ein Passwort mit der gleichen Entropie und mehr Zeichen, aber doppelt so schnell zu tippen. Und du brauchst vier Versuche, um es richtig zu machen, während meins beim ersten Mal richtig ist.

Luis Casillas
2018-01-19 02:14:45 UTC
view on stackexchange narkive permalink

Andere haben ausführlich auf das Risiko hingewiesen, dass die Dienste, für die Sie diese Kennwörter verwenden, Unicode nicht korrekt implementieren. Ich werde die Dienste hinzufügen, die heute möglicherweise morgen ausführen, aber ansonsten überspringe ich dieses Thema.

Ein Element, das ich Hier muss man sich fragen: Wie lange muss ein Passwort dauern, um eine bestimmte Sicherheitsstufe zu erreichen? Nehmen wir an, wir möchten, dass unsere Passwörter so stark sind wie ein 128-Bit-Kryptografieschlüssel (was für die meisten Website-Passwörter wahrscheinlich übertrieben ist; ich empfehle 80 Bit). Wenn Sie sich an zufällige ASCII-Kennwörter halten, erreicht ein 19-stelliges Kennwort, das aus den ~ 95 druckbaren ASCII-Zeichen gezogen wird, diese Stufe. (Die Mathematik: Eine Menge von ungefähr 100 Elementen ist ungefähr 6,6 Bit / Element (da log2 (10) ≈ 3,3 und log2 (100) doppelt so groß ist) und 128 ÷ 6,6 ≈ 19,4. 19 ASCII-Zeichen sind also tatsächlich ungefähr 126 Bits, nicht 128, sondern meh.)

In Unicode sind derzeit ungefähr 130.000 Codepunkte definiert, eine Zahl, die wir nur als 2 ^ 17 schätzen werden. Dies bedeutet, dass Sie zum Erreichen der 128-Bit-Ebene 7 Unicode-Codepunkte benötigen (128 ÷ 17 ≈ 7,5, also 7 Codepunkte nur etwa 119 Bit, aber wiederum meh.)

Für 80-Bit-Sicherheit Level, das meiner Meinung nach für die meisten Websites sinnvoller ist, besteht aus 12 ASCII-Zeichen im Vergleich zu 5 Unicode-Codepunkten.

Sind Sie bereit, einen massiven Usability-Treffer zu erzielen und Website-Fehler zu riskieren, nur damit Sie 5 oder mehr haben können? 7-stellige Passwörter statt 12 oder 19 Zeichen? Ich glaube einfach nicht, dass es sich lohnt.

JonnyRobbie
2018-01-17 00:34:28 UTC
view on stackexchange narkive permalink

Nun, Unicode ist 'nur' eine Liste von etwas über 130000 Zeichen. UTF-8 ist die gebräuchlichste Codierung, die diese eine große Zahl verwendet und sie gemäß einer Reihe von Regeln in eine Basis-256-Zahl (genauer gesagt, die Regeln sind in binären Oktetten sinnvoller) "konvertiert". Wenn Sie also eine utf-8-Codierung verwenden möchten, sind Sie an viele Regeln gebunden, die die gewünschte Zufälligkeit effektiv verringern. Und ich weiß nicht, wie Sie die gesamte Unicode-Interpretation verwenden sollen.

Wenn Sie sich keine Gedanken über druckbare Zeichen machen, können Sie das gesamte ASCII (oder vorzugsweise eine 8-Bit-Erweiterung) in Betracht ziehen, aber bei Warum sollte man sich überhaupt mit dem Standard der Charakterinterpretation beschäftigen? Könnten Sie dann nicht einfach eine einfache formlose zufällige Binärstruktur verwenden?

David M
2018-01-17 09:35:18 UTC
view on stackexchange narkive permalink

Selbst wenn Sie nur digitalen Speicher verwenden, würde ich es hassen, der Benutzer zu sein, der etwas eingeben musste und den Unterschied zwischen (und (. (Hinweis: Sie sind doppelt und einfach) nicht erkannt hat. beabstandet)

Wenn Sie dieses Beispiel für die Breite verwenden, wie in anderen Antworten angegeben, erwarten Sie, dass die Unterstützung dieser Beispiele funktioniert - abhängig von der hier festgelegten SQL-Sortierung würde ein falsches Kennwort korrekt sein!

allo
2018-01-18 20:25:10 UTC
view on stackexchange narkive permalink

Nein. Sie möchten die Basis einer Exponentialfunktion erhöhen und gleichzeitig riskieren, dass viele Dinge kaputt gehen (z. B. Geräte, die Ihre Sonderzeichen nicht eingeben können usw.). Berechnen Sie die Entropie Ihres Unicode-Passworts und verlängern Sie Ihr ASCII-Passwort, bis es mehr Entropie aufweist.

az allein beträgt 26 ^ (Länge). Nehmen wir an, Sie erhalten 256 ^ (Länge) und möglicherweise 2 Bytes pro Zeichen mit Unicode. Dann finden Sie irgendwo die Gewinnschwelle 26 ^ (ascii_length) > 256 ^ (2 * Unicodelength) . Wählen Sie diese Länge als ascii_length und Sie können trotzdem Ihr Passwort aufschreiben und haben die gleiche Sicherheit.

Wenn die Site keine langen Passwörter unterstützt (Schande über sie), würde ich vermuten Sie können auch keine gute Unicode-Unterstützung garantieren. Vielleicht werden Sie beim nächsten Upgrade einer internen Bibliothek gesperrt. Warum also dort ein Problem riskieren? Und ein Problem, das der Benutzerunterstützung schwer zu erklären ist und kaum weiß, was Unicode bedeutet.

Jonathan Rosenne
2018-01-19 01:34:59 UTC
view on stackexchange narkive permalink

Es ist keine gute Idee, zufällige Unicode-Kennwörter zu generieren, da das generierte Kennwort für den Benutzer möglicherweise nicht lesbar ist. Der Text der Frage befasst sich jedoch mit der Verwendung von Unicode-Passwörtern. Dies ist eine gute Idee und wird von NIST 800-63-3, Abschnitt 5.1.1.2 Memorized Secret Verifiers empfohlen, in dem es heißt:

Verifizierer MÜSSEN vom Abonnenten ausgewählte gespeicherte Geheimnisse mindestens 8 Zeichen lang sein. Verifizierer MÜSSEN vom Abonnenten ausgewählte gespeicherte Geheimnisse mit einer Länge von mindestens 64 Zeichen zulassen. Alle druckenden ASCII [RFC 20] -Zeichen sowie das Leerzeichen MÜSSEN in gespeicherten Geheimnissen akzeptiert werden. Unicode-Zeichen [ISO / ISC 10646] MÜSSEN ebenfalls akzeptiert werden.

Für die oben genannten Längenanforderungen muss jeder Unicode-Codepunkt als einzelnes Zeichen gezählt werden.

Es wird fortgesetzt:

Wenn Unicode-Zeichen in gespeicherten Geheimnissen akzeptiert werden, sollte der Prüfer den Normalisierungsprozess für stabilisierte Zeichenfolgen unter Verwendung der in Abschnitt 12.1 des Unicode-Standardanhangs 15 definierten NFKC- oder NFKD-Normalisierung anwenden .

Zusammenfassend: Die Verwendung von Unicode erhöht die Entropie und erleichtert Benutzern, die kein Englisch beherrschen, das Leben.

Könnten Sie näher erläutern, was dies zu den anderen Antworten beiträgt?
Ich habe auf den Unterschied zwischen dem Generieren eines Unicode-Passworts und dem Auswählen eines Passworts hingewiesen, und dass die Entropie nicht wie in anderen Antworten angegeben verringert, sondern erhöht wird, da man eher die Zeichen als die Bits zählen sollte.Außerdem erlaubt NIST nicht nur Unicode, sondern empfiehlt auch dessen Verwendung, was eine direkte Antwort auf die Frage ist.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...