Puncte:6

Creați o parolă puternică, ușor de reținut folosind criptografia clasică?

drapel cn

Parolele pot fi greu de reținut. De exemplu:

H7535637353959595*9608J614625C1313^398583I0397897j^

Așa că Bob vrea să creeze și să folosească o parolă bună pentru GPG pe care nu trebuie să-și amintească niciodată. El va folosi rar această parolă (criptare asimetrică pentru stocarea off-line). Când are nevoie, își va genera parola cu creion și hârtie din unele informații cheie care sunt stocate într-un singur loc: capul lui.

El speră să folosească criptografia clasică pentru a transforma ceea ce nu a vrut sau nu a putut să-și amintească în ceva disponibil. Cum ar putea Bob să facă o parolă suficient de puternică pentru GPG folosind metode clasice?

Important este că vrea să evite „securitatea” prin ofuscare.

Unele dintre caracteristicile și principiile din spatele Cifrul VIC mi-a venit in minte (oricum):

  1. Un număr din 5 cifre (cu adevărat aleatoriu)

67106 întins la 10 cifre, 67106 + (6+7=3) + (7+1=8) etc. 6710638169

  1. Fraza scurtă memorată: filozofie kantscritical (folosind primele 20 de litere). Rezultând 5169827304 și 2159346708

Pentru a scurta povestea, urmând procesul lui Bob, mai ales ca cel al cifrului VIC (adăugare în lanț, creând permutări de la 1 la 0, adăugare de cifre fără transport), ajungem aici:

    5730481269
    NU ADIEU
  3 BCFGHJKLMP
  9 QRTVWXYZ
  1. Bob folosește tastatura călare pe fraza lungă memorată:

ITISRAININGINAMSTERDAMBUTNOTINPYONGYANG și pune rezultatul într-o transpunere coloană a cărei lungime este de trei (nu o transpunere întreruptă).

Adaugă un ardei, dacă vrei, la sfârșitul rândurilor de transpunere: *^^ și 11=A, 22=B etc., 111=a, 222=b etc., 1111=!, 2222=@ etc.

Rezultat: H7535637353959595*9608J614625C1313^398583I0397897j^

Cu puțină practică, nu este dificil să-ți amintești un proces precum ceea ce folosește cifrul VIC.

Întrebări:

  1. Poate o metodă ca aceasta să creeze o parolă suficient de puternică pentru a fi utilizată în, să spunem, GPG?

  2. Cum ar arăta o metodă puternică care folosește criptografia clasică pentru generarea parolelor?

jjj avatar
drapel cn
jjj
Când un atacator știe cum îți generezi parola (și întotdeauna ar trebui să presupui asta), un algoritm aplicat cheii devine inutil din punct de vedere al securității. Extinderea cheilor nu adaugă deloc securitate. Puteți doar să îl faceți mai memorabil, ceea ce permite chei aleatorii inițiale mai lungi (care este singurul lucru de care ar trebui să vă pese)
drapel in
@jjj Ei bine, o funcție de derivare a cheilor, costisitoare din punct de vedere computațional, adaugă securitate, deoarece face ca forțarea brută să ia mai mult timp. Dar, desigur, calcularea unei astfel de funcții chiar și o dată manual ar trebui să dureze ani, dacă nu milioane de ani.
drapel lu
*"... o [parolă] pe care nu trebuie să-și amintească niciodată .... când are nevoie de ea, el își va genera parola [din] niște informații cheie care sunt stocate într-un singur loc: capul lui"*. Deci vrei ca Bob să nu fie nevoit să-și amintească nimic... amintindu-și ceva? Acest lucru pare cu adevărat inutil. Doar alegeți o [parolă sensibilă](https://xkcd.com/936/) în loc de 51 de caractere aleatorii (ca în primul exemplu), care oricum este inutil de lungă pentru orice metodă de atac fezabilă.
drapel tj
Acest lucru îmi amintește de o întrebare din trecut: [Hashing PHP puternic fără sare](https://security.stackexchange.com/questions/142659/strong-php-hashing-without-salt). TL;DL scopul este de a folosi informații personale pentru a genera parole, pe care să le pot genera din nou reproductibil.
Puncte:21
drapel in

Nu înțeleg de ce s-ar dori să folosească instrumente clasice sau creion și hârtie pentru derivare. Pentru oricine vă atacă tehnica, nu va avea nicio diferență. Un atacator cu un computer modern va face doar forța brută partea pe care ați memorat-o. Orice întindere a tastelor făcută pe creion și hârtie va fi o pacoste minoră în cel mai bun caz; orice făcut pe hârtie nu va adăuga deloc timp unui atac cu forță brută.

Memorarea a ceva dintr-o sursă de entropie ridicată folosind diferite tehnici de memorie este de fapt utilă. Alegerea cuvintelor la întâmplare sau utilizarea acronimelor poate fi utilă pentru a memora ceva cu suficientă entropie. Dacă aceasta este apoi folosită cu o funcție modernă adecvată de derivare a tastei, poate fi foarte greu de atacat.

Trucuri de memorie - bine

Întinderea stiloului și hârtiei - fără rost

drapel jp
(presupunând că atacatorul știe ce ai făcut)
Meir Maor avatar
drapel in
Aceasta este într-adevăr cea mai bună practică. iar întrebarea afirmă în mod explicit dorința de a nu se baza pe securitate prin ofuscare.
Puncte:7
drapel ng

Dacă nu există o limită superioară a lungimii parolei care trebuie utilizată, cea mai comună sugestie pe care o cunosc pentru a crea o parolă puternică, ușor de memorat (pentru o anumită definiție a „ușor”) este zaruri.

Ideea de bază din spatele lui este că alege fiecare cuvânt printr-o aruncare de 5 d6 (de exemplu, fiecare cuvânt are 6$^5= 7765= 2^{12,92}\aproximativ 2^{13}$ Opțiuni). Întreaga parolă este apoi o combinație de $k$ cuvinte independente, dând o parolă cu $\aproximativ {13k}$ biți de entropie. Apoi puteți alege $k = 6$ (sau alte opțiuni pe care le doriți) pentru a obține o parolă $\aproximativ 80$ biți de entropie.

Tocmai am generat parola:

YearlingExquisiteWorstNesortedDenoteSkipper

Pot să-l memorez imediat? Nu. Aș putea inventa o poveste în? $\aproximativ 10$ minute pentru a ajuta enorm memorarea? Probabil. De asemenea, are avantajul (masiv) că chiar și utilizatorii relativ neavansați din punct de vedere tehnologic și-ar putea aminti în mod fezabil parola generată. De asemenea, are avantajul (din nou, masiv) că este „doar” codificarea unui standard $\aproximativ 80$ parola de biți folosind o listă de cuvinte (publică) pentru a ajuta uman memorare. Din punct de vedere matematic, nu se întâmplă nimic netrivial care să poată fi atacat.

John Smith avatar
drapel ru
Nu este nevoie să utilizați software. Alegeți o melodie pe care să vă amintiți toate cuvintele pentru a o folosi ca șir de cuvinte. Universul cântecelor este destul de mare. Apoi, pe deasupra, alegeți un algoritm ușor de reținut și păstrați-l privat ("a doua și a treia literă a fiecărui cuvânt care începe cu o consoană") și nu veți avea nicio problemă să păstrați șiruri adecvate greu de ghicit sute de caractere în lungime în întregime în capul tău. Puteți chiar să notați ce melodie codifică ce parole, fără schema de derivare, chiar și asta nu este suficientă pentru forța brută în mod realist.
Mark avatar
drapel ng
@JohnSmith Dacă aveți de gând să stocați informații despre parolele dvs., acestea nu ar trebui să fie într-un mod ad-hoc --- doar utilizați un manager de parole. Dacă doriți ca cheia dvs. principală să fie dintr-o schemă ad-hoc, bine, dar nu văd niciun motiv pentru a face acest lucru, deoarece este dificil să argumentați puterea *cantitativă* a parolei dvs. Mai mult, antrenamentul să tastați unele cuvinte „greșite” într-un mod care să se coreleze cu parolele pare destul de suspect.
Puncte:1
drapel cn
Leo

În mod normal, ați folosi o funcție de derivare a cheilor, dar deoarece această întrebare este despre criptografia clasică, voi rămâne la elementele de bază. Un exemplu de ceea ce voi face mai jos poate fi găsit pe Wikipedia.

Voi presupune că utilizatorul își poate aminti mai multe cuvinte de lungimi diferite, de exemplu [„londra”, „istanbul”, „sheffield”].

Puteți utiliza un cifr Vigenere cu mai multe chei. Când faceți acest lucru, cheia pentru cifra devine atât de lungă cât cel mai mic multiplu comun al cuvintelor cheie. Folosind cuvintele exemplu, obținem 72 de caractere.

Apoi începem cu un șir de 72 "A" caractere, apoi criptați-l folosind cifrul Vigenere cu fiecare cuvânt cheie.

Cuvinte cheie: [„LONDRA”, „ISTANBUL”, „SHEFFIELD”]
Cel mai mic multiplu comun: 72
Cheie inițială: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Criptat cu LONDRA: LONDRALONDRALONDRALONDRALONDRA LONDRA LONDRA LONDRA LONDRA LONDRA LONDRA
Criptat cu ISTANBUL: TGGDBOFZVVHNYPHOWFEOAEIYTGGDBOFZVVHNYPHOWFEOAEIYTGGDBOFZVVHNYPHOWFEOAEIY
Criptat cu SHEFFIELD: LNKIGWJKYNORDUPSHIWVEJNGXRJVISKEDZSQQWLTBNIZDWPCYLOHMRXGZAMVCAKGDJJTIITB
Rezultat final: LNKIGWJKYNORDUPSHIWVEJNGXRJVISKEDZSQQWLTBNIZDWPCYLOHMRXGZAMVCAKGDJJTIITB

Iată un cod Python care face acest lucru.

#!/usr/bin/env python3
import matematică
import sys

ALFABET = „ABCDEFGHIJKLMNOPQRSTUVWXYZ”

vigenere = {}

pentru i, litera în enumerare(ALPHABET):
    a = listă (ALFABET)
    pentru _ în intervalul (i):
        a.apend(a.pop(0))
    vigenere[litera] = a

cuvinte cheie = [x.upper() pentru x în sys.argv[1:]]

print("Cuvinte cheie:", cuvinte cheie)

key_len = math.lcm(*[len(x) pentru x în cuvintele cheie])
print("Cel mai mic multiplu comun:", key_len)

cheie = ["A"] * key_len

print("Cheie inițială:", "".join(cheie))
pentru cuvintele cheie:
    pentru eu în rază (key_len):
        literă_cheie = cuvânt cheie[i % len(cuvânt cheie)]
        index = ALPHABET.index(key[i])
        cheie[i] = vigenere[key_letter][index]
    print(f"Criptat cu {keyword}:", "".join(key))

print("Rezultat final:", "".join(cheie))
Puncte:1
drapel am

Judecând după caz ​​de utilizare și soluție, este într-adevăr un lucru inutil de făcut. GPG este folosit pe un computer, așa că de ce ați dori să creați pași pentru a genera manual parola dacă, în cele din urmă, mai trebuie să o scrieți prin tastatură?

În orice caz, este un posibil vector de atac dacă instrucțiunile se scurg de ex. prin intermediul unei persoane colocate sau uitându-l undeva unde camerele/oamenii îl pot citi.

Dacă doriți o parolă puternică, aceasta nu este folosită des și este creată corect... atunci utilizați doar un manager de parole pentru a deține atât perechea de chei, cât și o parolă de gunoi aleatorie pentru aceasta. Un manager de parole adecvat poate gestiona mai multe baze de date de parole, astfel încât nu ați avea un singur punct de eșec.

Ceea ce ați avea este un blob criptat pentru care aveți nevoie de o singură parolă. În același timp, puteți avea două DB-uri de parole, una pentru chei, una pentru parolă, deci 2 parole în total. Separați-le în două locuri și încă un strat de siguranță.

Deci, TL;DR, ai avea doar de N ori parola și locația de reținut și orice altceva ar fi aleatoriu, deci nu poate fi forțat într-un timp rezonabil și protejat și împotriva atacurilor de dicționar + dacă nu dezvălui locațiile atunci chiar dacă parolele dvs. au fost scurse (inginerie socială sau simplu copiere-lipire în greșeală de chat), atacatorul ar trebui să obțină „cufărul de comori”. O cheie fără gaura cheii este doar un obiect fără valoare.

Și este cel mai bun lucru pentru memorare pentru că, ei bine, nu trebuie să vă amintiți parola GPG, nici algo-ul care a generat-o.

Patriot avatar
drapel cn
Înțeleg primul tău punct, dar de aceea cazul de utilizare este stocarea offline. Văd ce spui în ultima ta discuție.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.