Frage:
Quellcode als Passwort
user3147268
2015-04-10 17:15:12 UTC
view on stackexchange narkive permalink

Passwörter mit einer Mischung aus Buchstaben, Zahlen und Sonderzeichen sind manchmal schwer zu merken. Ist es sicher, stattdessen eine kleine Menge einprägsamen Quellcodes als 'Passphrase' zu verwenden?

Nehmen Sie als Beispiel eine einfache for-Schleife in Go: fori: = 1; i<5; i ++ { fmt.Println (i)}

Normale Benutzer sehen nur die kryptische Syntax. Als Person mit Programmierhintergrund ist dies jedoch möglicherweise leichter zu merken. Wäre es mindestens so sicher wie ein normales Passwort?

Verwenden Sie einfach einen Passwort-Manager wie KeePass, LastPass oder 1Password. Dies ist im Wesentlichen ein gelöstes Problem.
Ich mache das momentan schon lange, aber diese Frage hat mich nur neugierig gemacht.
NEIN! [Chrysanthou hatte aus einem einfachen Grund keine Probleme, den SHA1-Hash zu knacken, der "Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn1" entsprach. Dies ist eine fiktive okkulte Phrase aus der HP Lovecraft-Kurzgeschichte "The Call of Cthulhu", die in diesem Wikipedia-Eintrag enthalten war.] (Http://arstechnica.com/security/2013/10/how-the-bible- und-youtube-tanken-die-nächste-Grenze-des-Passwort-Knackens / 2 /) Wenn deine Quelle im Internet ist, ist dein Passwort knackbar!
Kommt auf die Programmiersprache an. Perl wäre ein ausgezeichneter Kandidat, da es selbst für die Person, die es schreibt, oft schwierig ist, eine Woche später ihren Code zu lesen!
Die Verwendung von Perl ist im Grunde dasselbe wie das "normale" Passwort, da jede seltsame Zeichenfolge als Perl-Code behandelt werden kann (zumindest mit einigen Änderungen), nicht wahr?
@StephenTouset Sie benötigen jedoch noch ein Passwort für Ihren Passwort-Manager! : P.
Wie ich oben zu Ihnen kommentiere, verwende ich einen Passwort-Manager und ich denke, es ist eine Notwendigkeit, wenn Sie komplexe und sichere Passwörter verwenden möchten, während Sie sie sicher verwalten und speichern;)
@Chloe Ich denke, das OP bedeutete, "fori: = 1; i <5; i ++ {fmt.Println (i)}" als Passwort zu haben, da es leicht zu merken und noch schwieriger als herkömmliche Passwörter mit nur wenigen Buchstaben ist. Zahl-Symbol-Kombination.
@EvanCarslake: Ich denke, Chloe meinte, dass der Benutzer3147268, nachdem er den Satz "fori: = 1; i <5; i ++ {fmt.Println (i)}" im Internet veröffentlicht hat, zu den "Wörterbüchern" vieler Passwörter hinzugefügt wurde Cracker - genau wie "[korrekte Heftklammer für Pferdebatterien] (https://xkcd.com/936)" trotz seiner intrinsischen Entropie / Stärke ein schlechtes Passwort ist, weil jeder weiß, wie man es versucht. Aber Chloe hat die Frage falsch verstanden: "Ist es sicher, eine kleine Menge einprägsamen Quellcodes als 'Passphrase' zu verwenden? * Als ** Beispiel ** nehmen Sie * ..."
Sechs antworten:
SEJPM
2015-04-10 17:38:09 UTC
view on stackexchange narkive permalink

Sie können den Quellcode als Kennwort verwenden.

Ich würde jedoch dringend davon abraten, den Quellcode als Passphrase zu verwenden.
Der Grund dafür ist Entropie. Passwörter / Passphrasen müssen viel Entropie (100 Bit +) bereitstellen, und Programmiersprachen stellen normalerweise erhebliche Einschränkungen für die Formulierung von Anweisungen dar, was zu einer geringeren Entropie pro Zeichen führt als selbst mit einer Standardpassphrase.

Was kann Abgesehen davon können Sie Quellcodedateien (100 Zeilen +) mit vielen komplexen Anweisungen verwenden, die nicht als Schlüsseldatei maschinencodierbar sind.

Mit einem begrenzten und spezifischen Zeichensatz einer Programmiersprache könnte dies zu weniger Entropie führen. Außerdem gefällt mir die Idee, es als Schlüsseldatei zu verwenden
Ich bin mir nicht sicher, ob es wirklich so schlimm ist, wie du denkst. Aus informationstheoretischer Sicht ist dies nichts anderes als die Änderung des Alphabets möglicher Zeichen. Im obigen Beispiel entspricht dies ungefähr einem 8-stelligen Passwort in Kleinbuchstaben, vorausgesetzt, der Angreifer kennt den Algorithmus zur Passwortgenerierung. Siehe https://xkcd.com/936/. Dies ist zwar nicht so gut wie die richtige Heftklammerbatterie, aber leichter zu merken als Tr0ub4dor & 3, aber Sie können durch "Sonderzeichen-Reifen" springen.
Sie könnten es ein wenig verstärken, indem Sie wirklich seltsame Variablennamen verwenden ...
Während Sie die Entropie für ein Passwort gleicher Länge verlieren, lassen Sie im Passwort auch mehr Zeichen für die entsprechende "Meatspace-Schwierigkeit" zu. Die eigentliche Frage sind also zwei Passwörter mit gleichwertiger "Meatspace-Schwierigkeit", was besser ist, und ich bin mir nicht sicher, ob das eindeutig ist. Wie Marc betont, scheint die korrekte stabile Pferdebatterie besser zu sein als beide, gemessen an der Entropie pro "Meatspace-Schwierigkeit".
@S.L.Barth, aber dann wären Sie wieder bei einer Standard-Passphrase.
@MarcSchneider, "Tr0ub4dor & 3" ist ein etwas "schlechtes" Beispiel, wenn Sie Zeichen durch ihre gemeinsamen Analoga ersetzen. Ein gutes Passwort (schwer zu merken) wäre ungefähr so: "N2Oyil6b7 _ / $ Zp2lxxs]? ZkQ" (~ 150 Bit Entropie). Und ja, man kann eine sichere Passphrase aus Quellcode-Befehlen erstellen, aber diese Passphrasen wären für dieselbe Entropie erheblich länger als eine Standard-Passphrase für Muttersprachen, da Befehle im Quellcode wie der erwähnten for-Schleife, in der i als Variable und verwendet wird, meistens sehr vorhersehbar sind 0 als Initiale ist sehr wahrscheinlich.
@SOJPM Der Grund, warum ich Tr0ub4dor & 3 verwendet habe, ist das schwer zu merkende Passwort aus dem xkcd-Comic. Der Punkt, den ich ansprechen wollte, ist, dass Anforderungen wie "ein Großbuchstabe, ein Kleinbuchstabe, eine Zahl und ein Sonderzeichen mit mindestens 8 Zeichen" häufig sind, aber dazu führen, dass Menschen Schwierigkeiten haben, sich an das Passwort zu erinnern. Ein Code-Snippet würde die Anforderungen erfüllen und leicht zu merken sein. "N2Oyil6b7 _ / $ Zp2lxxs]? ZkQ" ist schwer zu merken. Bei typischen Kennwortanforderungen ist Code ein guter Kompromiss.
@Lawtonfogle Ich denke, dass Sie den Nagel auf den Kopf getroffen haben. Wir sollten Passwörter nicht nur anhand der Entropie messen, sondern anhand der Entropie und der Schwierigkeit des Fleischraums. Ich mag diesen Satz besonders.
@SOJPM N2Oyil6b7 _ / $ Zp2lxxs]? ZkQ ist ein großartiges Passwort, bis jemand die Haftnotiz auf dem Bildschirm mit der Aufschrift betrachtet. Wenn wir über den Zugriff auf den betreffenden Computer sprechen, spielt dies eigentlich keine Rolle (physischer Zugriff und jegliche Sicherheit gehen verloren), aber Passwörter für Administratorkonten und dergleichen wären ein großes Risiko, wenn sie aufgeschrieben werden. Bei meinem ersten Job war ich IT-Mitarbeiter einer Bank, und ich erinnere mich, dass einer der höheren Mitarbeiter ein Blatt Papier mit all seinen Passwörtern in seinem Büro hat. Ein Bild und diese Bank wären ruiniert worden.
Grammatisch korrektes Englisch hat eine Entropie von etwa 1,5 Bit pro Zeichen. Um die Zielentropie von 100 Bit zu erhalten, sehen Sie sich eine Passphrase mit 67 Zeichen an. Ich vermute, dass Programmiersprachen mit ihren strengeren Syntaxanforderungen eine noch geringere Entropie pro Zeichen aufweisen. (Dies ignoriert natürlich [TECO] (https://en.wikipedia.org/wiki/TECO_ (text_editor) #As_a_programming_language) und dergleichen.)
Einige Programmiersprachen könnten möglicherweise die gewünschte Entropie liefern. Diejenigen, die der menschlichen Sprache näher sind, wie CoffeeScript oder Python, würden besser funktionieren. Immer noch keine kluge Idee, aber wenn Sie es tun müssen, können Sie es definitiv gut machen.
Apropos Meatspace: Ich habe mich darin geschult, Passwörter mit zufälligen Zeichen und einer Länge von bis zu 16 schnell (ca. 20 bis 30 Minuten) zu speichern. Der Trick besteht darin, sie in Blöcke mit einer Länge von 4 zu unterteilen, und jeder Block ist leicht leicht zu merken .
@Seiyria Assembler als Programmiersprache, die in der Nähe der Hardware arbeitet, hat einfach einen Mangel an einer Vielzahl von Sonderzeichen. Zusammenfassend wäre die Entropie schlecht.
Hinweis: Ich habe selbst einige Schulungen zu zufälligen Passwörtern durchgeführt. Innerhalb weniger Tage habe ich ein zufälliges Passwort mit 32 Zeichen gelernt. Gleichzeitig habe ich meine anderen zufälligen pw mit 40 Zeichen gelernt. Das Erlernen zufälliger Passwörter ist nicht so schwierig, wenn Sie sie ein wenig trainieren (geben Sie sie 10-40x ein und Sie werden sie auswendig lernen).
@SOJPM Dies funktioniert mit ein paar Passwörtern, aber wenn Sie sich an ein paar mehr erinnern, werden Sie verloren gehen. Passwortmanager lösen dieses Problem. Meist müssen Sie sich nur die Passwörter für Ihre Hauptkonten oder die verschlüsselte Passwortdatenbank merken.
@user3147268, das war, macht Passwort-Manager so nett. Sie müssen sich nur ein paar Passwörter merken (4 in meinem Fall: Android Boot, Windows Boot, Passwortdatenbank und Hochsicherheitscontainer). Fügen Sie hier und da einige Schlüsseldateien hinzu, und Sie sind ziemlich sicher
Philipp
2015-04-10 18:02:30 UTC
view on stackexchange narkive permalink

Wie die meisten Algorithmen zur Kennwortgenerierung beruht auch dieser auf Sicherheit durch Unbekanntheit.

Solange niemand den Verdacht hat, dass Sie diese Methode verwenden, wird niemand ein Cracking-Tool verwenden, das zufällig gültige Quellcode-Snippets und das versucht Die Regel der Stärke = mögliche_Zeichen ^ Anzahl_der_Zeichen bleibt gültig. Sobald jedoch jemand den Verdacht hat, dass Sie es verwenden, oder wenn es sogar zu einer gängigen Methode wird, weil Sie damit beginnen, es als "sehr gute Idee" auf einer Website zu bewerben, würde sich dies ändern.

Sobald Da sich jemand gezwungen fühlt, eine maßgeschneiderte Cracking-Routine zu schreiben, müssen Sie sich ansehen, wie viel Entropie wirklich in Ihrem Quellcode enthalten ist. Und wenn Sie sich auf "kleine, einprägsame Codefragmente in der gängigen Programmiersprache" beschränken, sind Sie möglicherweise auf einige Milliarden mögliche Passphrasen beschränkt, was nicht ausreicht, um einem ernsthaften Brute-Force-Versuch standzuhalten.

Genau. Und Sie können nie wissen, ob Ihre glänzende neue Idee von vielen anderen unabhängig (heimlich) verwendet wird, und gute Passwort-Cracker wissen möglicherweise viel mehr über die Psychologie der Passwortauswahl als Sie. Welchen cleveren Trick Sie auch verwenden, der Angreifer kann ihn vorhersagen. Daher müssen Sie die Auswahl vollständig von allem trennen, was über Sie vorhersehbar ist (d. H. Zufälligkeit verwenden). Selbst wenn sie Ihre Entscheidung richtig vorhersagen, können sie nur den Schluss ziehen, dass Sie dazu neigen, zufällige Passwörter zu wählen.
Ich bin mir nicht sicher, ob Sie sagen, dass dies eine schlechte Idee ist, aber da dies all die großen Sicherheitsprobleme von Passwort-Managern verhindert, ist es wohl keine schlechte Idee, die Schwierigkeit, sich an die "externe Entropie" zu erinnern, zu vergleichen, selbst wenn die "interne Entropie" ist Recht niedrig.
Die Entropie der Angriffsmethode kann nicht niedriger sein als die Entropie Ihrer Generierungsmethode. Eine Methode zur Erzeugung hoher Entropie gibt Ihnen daher Sicherheit.
isarandi
2015-04-12 02:46:42 UTC
view on stackexchange narkive permalink

Verwenden Sie am besten eine Methode, die auch dann sicher bleibt, wenn alle Benutzer sie verwenden. Sie müssen sich weniger Sorgen machen und können mit anderen zusammenarbeiten, um die Methode so zu optimieren, dass sie am sichersten ist, da Sie Ihre Methoden nicht geheim halten müssen.

Dieser Ansatz "Der Feind kennt das System" ist ein großer Motor für Innovation und Fortschritt in der Informationssicherheit. Andernfalls hätten Sie unabhängige Gruppen, die jeweils an ihren eigenen obskuren, angeblich unerwarteten Entwürfen und Prinzipien arbeiten.

Darüber hinaus können Sie nicht quantifizieren, wie sicher Ihr System ist, da alles von der Psychologie und dem abhängt, was andere über Sie wissen.

In einigen Lebensbereichen müssen Sie kreativ sein und bauen Sie Ihre Strategie auf persönlichen, einzigartigen Erkenntnissen auf, die Sie geheim halten müssen, aber Informationssicherheit ist nicht so.

Im Idealfall würden Sie sich alle zufällig pro Benutzer eindeutigen generierten Passwörter von hard merken, aber realistisch können Sie das nicht. Entweder machen Sie die Passwörter leichter zu merken oder Sie speichern sie irgendwo. Die zweite Option ist gefährlich, da sie einen sehr leicht angreifbaren Punkt schafft (z. B. ein Passwort-Manager, der den Benutzer abfängt, der einmal auf seinen Passspeicher zugreift, was zu einem ** vollständigen ** Identitätsdiebstahl führt) teilweise eine wichtige Voraussetzung.
@DavidMulder Ich dachte, wir sprechen bereits über das Master-Passwort, da die Wiederverwendung von Passwörtern sowieso ein großes Nein-Nein ist. Wie auch immer, meine übliche Strategie ist es, * zuerst * ein zufälliges Passwort zu generieren und * dann * es auswendig zu lernen, indem ich ein Gedicht oder einen Ausdruck zusammenstelle, der dazu passt. Es ist ziemlich bemerkenswert, wie viel Muster Sie in einer zufälligen Zeichenfolge finden können. Zum Beispiel frisch von random.org: "pYmQ3xmKMy". Ich könnte sagen "pYthon kann dreimal mehr Key Manager in die Warteschlange stellen, warum?". Wenn Sie dies mit dem ersten Kennwort tun, das Sie generieren, verlieren Sie keine Entropie (nur wenn Sie es zum leichteren Speichern wiederholt neu generieren).
Wenn Sie sich auf diese Weise Dutzende von Passwörtern merken können: Mein Respekt. Wenn Sie sich jedoch nur an eine Handvoll erinnern und den Rest in einer Art Passwort-Manager speichern können, ist dies ein Risiko, das Sie eingehen möchten.
Tim X
2015-04-17 04:47:28 UTC
view on stackexchange narkive permalink

Auf den ersten Blick scheint dies eine gute Idee zu sein. Wie viele Vorschläge, die sich auf Passwörter beziehen, kann dies in einigen Situationen sogar eine OK-Lösung sein. Wenn Sie es jedoch genauer betrachten, werden eine Reihe von Mängeln offensichtlich.

Wenn ich versuchen würde, ein Passwort zu knacken, würde ich als erstes versuchen, möglichst viele Informationen über das herauszufinden Person wie möglich. Wenn ich weiß, dass Sie ein Programmierer sind, kann ich davon ausgehen, dass Sie Code für Ihre Passphrase verwenden. Ich habe jetzt den möglichen Suchraum eingegrenzt.

Wenn ich weiß, welche Programmiersprache Sie bevorzugen, habe ich den Suchraum jetzt noch weiter reduziert. Ich muss nur Rechtsformen aus Ihrer bevorzugten Sprache berücksichtigen.

Wenn ich nun die Rechtsformen betrachte, die in Ihrer bevorzugten Sprache zulässig sind, habe ich den Suchraum noch weiter reduziert. Wenn für die Passphrase eine maximale Zeichenbeschränkung bekannt ist, ist dieser Suchraum wieder noch kleiner. Tatsächlich gibt es für die meisten Sprachen nur einen sehr kleinen Satz möglicher Rechtsformen, die den zulässigen Zeichenbeschränkungen für viele Kennwörter entsprechen.

Wie aus anderen Antworten hervorgeht, besteht das eigentliche Problem bei "cleveren" Passwort- / Passphraseschemes darin, dass andere darauf angewiesen sind, nicht zu erraten, was Ihr Schema ist. Wenn die Popularität eines Systems zunimmt, verringert sich der Nutzen dieses Systems. Vor allem muss jedes Schema, das Sie auswählen, etwas sein, das nicht leicht mit Ihnen in Verbindung gebracht werden kann.

Das andere Problem bei cleveren Passwortschemata ist, dass sie selten so clever sind, wie Sie denken. Wenn Sie Passwörter analysieren, die aus gestohlenen Passwort-Repositories ausgegeben wurden, werden Sie überrascht sein, wie häufig viele dieser cleveren Schemata sind. Sie werden auch überrascht sein, wie oft das clevere Schema mit dem Domain zusammenhängt, aus dem die Passwörter stammen. Ich habe zum Beispiel Passwörter gesehen, die aus einem Luftwaffensystem gestohlen wurden, und raten Sie mal, die überwiegende Mehrheit der Passwörter waren Ableitungen verschiedener Flugzeugnamen und Modellnummern oder Charakternamen aus Filmen oder Büchern mit dem Thema Militär oder Luftwaffe. Ebenso hatten Passwörter, die vor ein paar Jahren aus dem achristianischen Dating-Bereich abgeladen wurden, eine große Anzahl von Passwörtern, die Phrasen, Kapitel- und Versnummern aus der Bibel enthielten. Wenn ich versuchen würde, Github-Passwörter zu knacken, würde ich Code mit ziemlicher Sicherheit als mögliches Muster betrachten.

Der einzige kleine Vorteil der Verwendung von Code besteht darin, dass Sie wahrscheinlich ein längeres Passwort / eine längere Passphrase haben, was häufig der Fall ist so wichtig oder wichtiger wie die zugrunde liegende Komplexität. Zu oft verwenden Benutzer kurze Passwörter, weil sie einfach und schnell zu tippen sind. Heutzutage denke ich, dass die meisten Menschen weitaus besser dran sind, sicherzustellen, dass sie nach Möglichkeit entweder eine 2-Faktor-Authentifizierung oder eine 2-Schritt-Authentifizierung verwenden und einen Passwort-Manager verwenden, der zufällige Passwörter für Sie generiert und in den meisten Fällen die Notwendigkeit beseitigt, sich an sie zu erinnern.

Lucas
2015-04-12 02:05:11 UTC
view on stackexchange narkive permalink

Verwenden Sie Malbolge. Immerhin ist das im Wesentlichen zufällig, oder?

  (= <` # 9] ~ 6ZY32Vx / 4Rs + 0No-&Jk) "Fh} | Bcy?` = * Z] Kw% oG4UUS0 / @ -ejc (: '8dc  

Das ist das Hallo-Welt-Programm.

Dies beantwortet die Frage nicht wirklich.
Da es nur sehr wenige Programme in Malbolge gibt und alle öffentlich bekannt sind, wäre dies eine sehr schlechte Wahl. Zuerst hätten Sie nicht viel Entropie (nicht viele Programme, sobald die Quelle bekannt wird). Zweitens ging es darum, einen leicht zu merkenden Quellcode zu verwenden, aber Malbolge-Code kann so einfach wie ein Standard-Zufallskennwort gespeichert werden, was ihn im Wesentlichen zu einer schlechteren Wahl macht. (aufgrund der geringen Entropie)
Malbolge hat jedoch keine vorhersehbare Syntax. @SOJPM Wenn Sie Ihr eigenes Programm schreiben würden, würde ich davon ausgehen, dass es sicher ist
Tom
2015-04-10 17:39:31 UTC
view on stackexchange narkive permalink

Das ist eigentlich eine sehr gute Idee. Sie werden diese Art von Passwörtern in Regenbogentabellen nicht leicht finden, und die meisten Bruteforce-Angriffe enthalten keine Zeichen wie diese oder suchen nach so langen Passwörtern.

Die einzige Schwäche ist die Tatsache, dass es sich um einen Kurzcode handelt (kein kurzes Passwort) Wenn jemand weiß, dass Sie ein Skript als Passwort haben, kann es für ihn leicht zu erraten sein. Dies wird durch die obige Antwort von SOJPM angenommen.

Warum herabgestimmt?
Ich bin nicht der Downvoter, aber: Wenn sich dies durchsetzt, werden Skripte früh genug zu Regenbogentabellen hinzugefügt.
Wenn Menschen weltweit wissen, dass Sie Programmiersprachen als Passwort verwenden, ist dies natürlich nicht mehr so ​​sicher. Sie könnten dies verhindern, indem Sie ein Passwort in den Code einfügen, aber dann sind wir wieder bei Punkt eins.
http://arstechnica.com/security/2013/10/how-the-bible-and-youtube-are-fueling-the-next-frontier-of-password-cracking
@Chloe Ich kann keinen Teil finden, der besagt, dass meine Annahme falsch ist?
@Tom, Ihre Annahme ist, dass Präposition A: "Es ist ein gutes Passwort, weil nur wenige Leute es verwenden" nicht zu Präposition B führt: "Weil es ein gutes Passwort ist, werden viele Leute es benutzen". IMO ist diese Annahme oft nicht gültig.


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...