La "password knocking" è una buona idea?

104

Con bussare alla porta, devi "bussare" su porte specifiche nell'ordine definito per esporre una porta su cui è in esecuzione il servizio.

Che ne dici di password knocking ? Ad esempio hai tre password: A , B e C . Nessuno di essi è corretto da solo, ma inserito uno alla volta in questo ordine ti concederanno l'accesso.

Alcuni scenari per rendere più chiara questa idea:

Scenario 1.

  • Tu: password A .
    • Server: password non valida.
  • Tu: password B .
    • Server: password non valida.
  • Tu: password C .
    • Server: Password accettata .

Scenario 2.

  • Tu: password A .
    • Server: password non valida.
  • Tu: password C .
    • Server: password non valida.
  • Tu: password B .
    • Server: password non valida.

Scenario 3.

  • Tu: password A .
    • Server: password non valida.
  • Tu: password B .
    • Server: password non valida.
  • Tu: password B .
    • Server: password non valida.
  • Tu: password C .
    • Server: password non valida.

Scenario 4.

  • Tu: password A .
    • Server: password non valida.
  • Tu: password A .
    • Server: password non valida.
  • Tu: password B .
    • Server: password non valida.
  • Tu: password C .
    • Server: Password accettata .

Non riesco a pensare ad alcun inconveniente di questo metodo rispetto al normale accesso con password singola. Inoltre, rende gli attacchi di dizionario esponenzialmente più difficili con ogni password aggiunta.

Mi rendo conto che la sicurezza è oscurata e non abolisce la necessità di password complesse. La stessa sequenza di password è strong come una concatenazione di password utilizzate. La sicurezza aggiunta in questo metodo deriva da una procedura inaspettatamente complessa.

È una buona idea? È un'idea migliore della classica password?

    
posta gronostaj 19.02.2015 - 08:39
fonte

17 risposte

157

Il sistema descritto nella domanda è in realtà più debole di quello che richiede semplicemente una singola password di lunghezza A + B + C, perché consente una classe di attacchi che non possono essere utilizzati contro singole password:

Supponiamo che la combinazione di tre password sia E F G . Un utente malintenzionato può inviare le password A B C D E F G , effettuando cinque attacchi ( A B C , B C D , C D E , D E F e E F G ) al prezzo di due. Il termine generale per questo è una sequenza di Bruijn , e ti consente di attaccare qualsiasi sistema basato sullo stato (come un lock) utilizzando molti meno tentativi rispetto a possibili combinazioni.

    
risposta data 20.02.2015 - 01:41
fonte
148

Dal punto di vista della sicurezza, la tua password è semplicemente "A B C" e la forza relativa della password viene calcolata di conseguenza.

Dal punto di vista dell'utente, questo è probabilmente troppo difficile per essere utilizzabile. Il server non fornisce alcuna indicazione sullo stato corrente (sta cercando la seconda password ancora?) E quindi l'utente non può dire quale password fornire.

Dal punto di vista della difesa, qui c'è una piccola quantità di valore. Gli attacchi con password diventano un po 'più complicati da eseguire e gli strumenti di attacco esistenti dovranno essere riscritti per accogliere questo strano schema. Potrebbe essere sufficiente per convincere un aggressore a proseguire, ma se sei un obiettivo importante, non sarà affatto di aiuto.

    
risposta data 19.02.2015 - 09:31
fonte
37

Tratterò qui alcuni punti.

Prima di tutto, supponendo che l'attaccante non sappia che lo schema della password è una supposizione cattiva , e tu hai ragione che è la sicurezza attraverso l'oscurità. Se ogni utente può imparare questo schema di login, anche l'aggressore può farlo. Per questo motivo, il knock non è migliore che se ci fosse una sola password ABC .

Potresti pensare: "Non avere più password aumenta il numero di forze brute ipotizza in modo esponenziale?" La risposta è no. Considera un alfabeto di lunghezza z e tre password di lunghezza a , b e c . Il numero di possibili password per ciascuno è, rispettivamente, z a , z b e z c . Se devi provare tutti i valori possibili per ciascuna password in ogni ordine possibile, avrai bisogno di z a * z b * z c indovina, che è uguale a z (a + b + c) . Si dà il caso che la lunghezza della singola password ABC sia a + b + c , quindi il numero di ipotesi richieste è anche z (a + b + c) .

C'è anche la preoccupazione del design che gli utenti siano confusi e / o frustrati da questo sistema, specialmente se hanno difficoltà a ricordare le loro password. Le persone hanno abbastanza problemi a ricordare una password per ogni sito che visitano (ed è per questo che molte persone riutilizzano le password). Tre password sarebbero ancora più difficili da ricordare e non sarei sorpreso se alcuni dei tuoi utenti usassero la stessa stringa per tutti e tre.

Richiedere tre invii di moduli per accedere rallenterà sicuramente un attacco di forza bruta, ma è altrettanto facile ottenerlo aggiungendo un ritardo nella verifica della password sul lato server.

    
risposta data 19.02.2015 - 09:55
fonte
19

È sicurezza attraverso l'oscurità - se ampiamente adottato, gli attaccanti proveranno solo tre volte. A questo punto potresti anche avere una sola password ma impostare una lunghezza minima della password minima per assicurarti che siano concatenate fino a tre password separate.

    
risposta data 19.02.2015 - 09:02
fonte
11

Questo è indistinguibile dalla tua password semplicemente essendo A || B || C .

    
risposta data 19.02.2015 - 09:09
fonte
9

L'autenticazione a due fattori è più user-friendly eppure more secure.

Senza, la password una non è ancora meno sicura di quella della password.

Un utente malintenzionato che può trovare la tua password è in grado di scoprire anche il tuo schema dei colpi.

Scegliere di bussare è come scegliere un algoritmo. Consideralo pubblico .

Anche se le password sono per oscurità, possono essere sostituite da altre completamente molto facilmente .

Detto questo, ci sono sono schemi che sono alquanto simili ai tuoi "knocking" ma un po 'più utili:

  • A caso che richiede uno di più segreti (password, frasi, iTANs ...).
    Questo è molto più rapido che inserire tutti dei segreti, ed è più sicuro perché l'hacker può conoscere un segreto alla volta (che può essere invalidato dopo l'uso).
    Le possibilità che l'autore dell'attacco sia in grado di autenticare è correlato al numero relativo dei segreti che conoscono. Tuttavia, richiede all'utente di conoscere i tutti i segreti e il loro ordine .
  • Tempo di immissione , ovvero analisi dei tempi tra e per tutti i caratteri della password mentre sta digitando l'utente.
    È più difficile scoprire e fingere che bussare ed è stato studiato un paio di volte IIRC. Svantaggi:

    • La tempistica varia leggermente ogni volta un utente inserisce la password, sebbene possa essere ancora sufficiente per distinguere gli utenti
    • Il tempo può anche cambiare completamente quando l'utente sceglie di inserirlo in modo diverso, ad es. durante la fase iniziale dopo aver scelto la password (l'utente sta ancora imparando a inserire la password) o quando non può inserirla nel modo in cui di solito (ferite, tenendo premuto un sandwich in una mano ...)

La protezione per oscurità è buona quando puoi modificare rapidamente il tuo schema di oscuramento , cioè "cambia il labirinto" con piccolo sforzo , piuttosto che il cemento con cui sono fatti i suoi muri (assicurati che il labirinto non possa essere ignorato ).

    
risposta data 19.02.2015 - 23:34
fonte
7

Il concetto di bussare alla porta non si applica direttamente direttamente all'accesso ai siti web. Almeno non nel senso che hai suggerito. Con bussare la porta, ci si collega a porte diverse in un certo ordine per aprire la porta desiderata. Nel tuo esempio, stai inserendo tutte le password in un unico sito. Come altri hanno sottolineato, questo non è affatto diverso dal mettere insieme tutte le password. A meno che tutte le password che usi siano molto lunghe, potresti anche concatenarle e usare una password. Anche l'oscurità di questo metodo non è così utile, perché qualcuno dovrà costruirlo e qualcuno dovrà sapere come usarlo, il che è sufficiente per un aggressore per scoprire come funziona. Inoltre, l'hai appena spiegato al mondo.

Invece, potresti usare diversi siti web per rappresentare diverse porte. Supponiamo che tu stia tentando di accedere al sito Web D. Quando ti connetti al sito Web D, non visualizzerà nemmeno una pagina a meno che non possa vedere che hai effettuato l'accesso ai siti Web A, B e C, correttamente e in tale ordine. In questo modo l'autore dell'attacco non solo dovrebbe craccare le diverse password, ma dovrebbe essere fatto su 3 diversi siti, e usato nell'ordine giusto per accedere al sito D, dove sarebbe richiesta un'altra password.

Questo si basa ancora su una certa oscurità, ma è più distinguibile dalla semplice divisione di una password su un sito.

    
risposta data 19.02.2015 - 16:39
fonte
6

Positivo

  • Ingannerebbe gli attacchi di forza bruta standard. Gli attacchi automatici da botnet o strumenti semplici non funzionerebbero immediatamente.
  • Potrebbe essere possibile ingannare un keylogger in questo modo. Nei registri sembrerebbe che l'utente abbia ricordato la password al terzo tentativo. Se l'utente malintenzionato utilizza questa password, non funzionerebbe. Ma solo se non sa o indovina cosa sta succedendo. Ma lui ti possiede comunque in questo caso.
  • L'utente è obbligato a utilizzare più parole = > password più lunga.

Negativo

  • Troppo complicato per un utente normale.
  • Come bussare alla porta, è in parte la sicurezza attraverso l'oscurità. Se l'attaccante sa che può adattare l'attacco.

Totale

Come bussare alla porta, aggiunge solo un piccolo vantaggio contro gli attacchi semplici. Il vantaggio principale sarebbe una password più lunga e che può essere applicata più facilmente con le regole della password.

Ad ogni modo, se i tuoi utenti non si preoccupano è qualcosa che puoi fare. Alla fine, ogni funzione di sicurezza conta. Ma non consiglierei di farlo.

    
risposta data 19.02.2015 - 13:12
fonte
5

Solo una nota: questa metodologia è già utilizzata negli schemi password-recovery in alcune parti del settore. Se si dimentica la password, è possibile utilizzare il proprio indirizzo e-mail per avviare una sequenza di domande personali per recuperare la password (sebbene molte volte sia solo una domanda). È reso più appetibile all'utente, di solito limitando il contesto a una sequenza di domande ben scelte che forniscono all'utente l'opportunità di utilizzare (si spera) risposte segrete ma ben note.

Inoltre, alcune delle banche migliori forniscono un ulteriore set di domande di sicurezza se non riconoscono il computer dal quale si effettua l'accesso (nello stesso modo del già citato schema di recupero della password).

Ad esempio:

Enter your password:  *****

Your computer is not recognized, please answer the following additional questions:

What city did your mother grow up in?  *********
What is your favorite movie? *************

Ciò può consentire agli utenti esperti di fornire risposte piuttosto oscure a una serie di domande che scelgono, pur consentendo una sequenza di password facile da ricordare. Ovviamente, gli utenti tipici potrebbero comunque utilizzare risposte facili da indovinare per le domande "non riconosciute sul computer", ma l'onere è sempre stato sull'utente fornire comunque buone password.

    
risposta data 19.02.2015 - 17:26
fonte
5

Pro : Questo sistema condivide alcuni vantaggi con l'autenticazione a due fattori.

1) La maggior parte dei browser e dei sistemi di salvataggio della password non la supportano, quindi ricorderà solo una delle password al massimo. Quindi almeno non verrà memorizzato in testo in chiaro da qualche parte.

2) Le persone che utilizzano la stessa password ovunque dovranno utilizzare almeno due password che non sono condivise con altri siti.

CONS : Il sistema, tuttavia, è nel complesso imperfetto, e direi che è peggio dell'autenticazione con password singola.

1) Poiché non è possibile utilizzare il loro sistema di memorizzazione delle password preferito, protetto da password che utilizzano per le password più importanti, è probabile che usino qualcosa di meno buono per questa unica password. Post-it, file di testo, qualunque sia.

2) Altri hanno affermato che questo è strong quanto la password "ABC". Non è. Direi che nel peggiore dei casi è strong quanto la password "A".

Questo perché io (e l'utente tipico) userei le password "password1", "password2", "password3" Questo sistema di generazione password mi dà il vantaggio che posso ctrl-c, ctrl-v la password e poi basta digitare il numero.

Se non posso usare password simili, allora hai ridotto la portata delle possibili password che posso avere: piuttosto che sicuro come ABC, ora hai solo la stessa sicurezza di ABD dove A! = B! = C: tu Abbiamo semplificato il lavoro del cracker riducendo il loro dominio di ricerca.

E sceglierei comunque qualsiasi sequenza prevedibile consentita dallo script di immissione della password: "Jan", "Feb", "Mar" forse.

E dato che userò una sequenza naturale, è probabile che questo sia l'ordine che un cracker di password dovrebbe avere nel dizionario, quindi una macchina per crackare le password cercherà naturalmente quelle password nell'ordine corretto e camminerà nel Qualsiasi cracker conoscendo il tuo sistema assolutamente ordinerebbe il loro dizionario in questo modo.

3) L'altro fattore che riduce la sicurezza è che per cambiare la password, ora devi cambiare tre campi diversi. Ciò scoraggerebbe molti dal cambiare le loro password.

4) Questa è un'esperienza utente terribile terribile , come altri hanno notato. A meno che tu non abbia un pubblico in cattività (dipendenti, studenti, ecc.), Perderai le abitudini attraverso questo approccio user-ostile.

    
risposta data 21.02.2015 - 05:33
fonte
3

Come altri hanno affermato, equivale a una password equivalente a A\nB\nC o simili. Tuttavia, c'è un vantaggio che posso pensare a questo schema: aiuta a ridurre le cose di tipo phishing; se un sistema accetta la prima password invece di accettare gli altri, allora sai che il sistema è compromesso e registra semplicemente nome utente e password.

Tuttavia, in tal caso, è meglio semplicemente provare ad accedere con una password casuale prima di tentare il login con la tua password effettiva; altrimenti hai appena compromesso una buona parte della tua password poiché ora il primo terzo (approssimativamente) è stato registrato dal sistema compromesso.

    
risposta data 19.02.2015 - 22:29
fonte
2

Non penso che sia anche la sicurezza attraverso l'oscurità, come alcuni hanno detto: i tre login password sono presentati pubblicamente, no? Certo ci vorrà un po 'di lavoro modificando alcuni strumenti, ma niente di troppo difficile.

Per quanto riguarda la complessità della forza bruta. Il numero di possibilità è lo stesso di avere una singola password con lunghezza A + B + C . Quindi per questa ragione l'unica difensiva che ottieni con questo schema è frustrante per l'attaccante un po 'all'inizio. Inoltre, se lo schema diventasse comune, gli strumenti standard si adatterebbero rapidamente.

    
risposta data 19.02.2015 - 11:34
fonte
1

"Minore è il numero di parti in movimento, minore è il numero di errori."

Oltre a non fornire alcun vantaggio notevole, questa idea è più complessa da implementare di una singola password. Come tale, ci sono più punti di potenziale fallimento. Ad esempio ...

A seconda di come è stato implementato, potrebbe consentire un attacco di negazione in cui Malcolm invia la password X a intervalli regolari. Se lui cronometra in modo tale da interrompere un tentativo legittimo, il sistema riceve A X B C e ti nega l'entrata. Allo stesso modo, se lui invia la password C subito dopo aver inviato A B, allora il sistema lo abilita e non te.

Un attacco a tempo di risposta potrebbe essere in grado di capire che A era la prima password corretta in A B C in cui non avrebbe notato che D era il prefisso di DEF a password singola.

    
risposta data 19.02.2015 - 22:58
fonte
1

Come molti hanno menzionato, per scopi di attacco dedicati, non è più strong né più facile / difficile da ricordare di una concatenazione di password. Tuttavia, esiste un valore sicurezza operativa (OPSEC) che è indipendente dalla forza della password. Non ha molto valore, intendiamoci, ma come qualcuno che passa molto tempo nel sito di Worldbuilding Stack Exchange , la mia immaginazione si è scatenata.

Considerare se si desidera che un servizio non sia limitato solo agli utenti autorizzati, ma si desidera impedire a qualcuno di inciampare accidentalmente sulla sua esistenza. Questo non è più un semplice problema di entropia, ma piuttosto un problema di teoria dell'informazione spia-spionaggio. Il tuo compito è ora di ridurre al minimo il rapporto segnale-rumore (SNR) di chiunque guardi l'input della tua password. Questo non è correlato alla forza della password.

Un approccio sarebbe quello di impostare un comportamento fittizio. Fai sembrare che sia un log in per un sistema diverso. Solo gli account con i privilegi corretti vengono reindirizzati al contenuto significativo. Potresti anche permettere agli altri di iscriversi al tuo progetto fittizio per permettere alle persone di curiosare e soddisfare la loro curiosità.

Tuttavia, stiamo parlando di spy-vs-spy ora. Qualcuno capirà che in realtà James Bond non è interessato a un forum in cui si discutono le ultime tendenze in gomma e che iniziano a curiosare. James Bond è bravo a non rivelare informazioni, ma ad un certo punto, con una pistola puntata sulla sua ultima [ultima] testa, sarà sospettoso se non rivelerà la sua password di gomma-ducky-forum al Dr. NoGood. Il dottor NoGood non è pazzo; lo scoprirà.

Quindi impostiamo James con due password. Uno lo fa entrare nel suo normale forum di gomma, l'altro nel simulatore di missili nucleari top secret. Non possiamo ignorare la sicurezza della password in tempo reale qui. La sua password del simulatore di missili nucleari dovrà essere lunga: purché la concatenazione delle tre password. La sua password ducky è probabilmente più breve. Buona cosa, perché qualcuno lo ha visto accedere al suo account ducky prima. Sanno quanti personaggi iniziare la forza bruta. Non vogliamo che trovino casualmente la password sicura prima di trovare quella ducky.

Quindi, dato che è ancora segreto che il simulatore di missili esista, restituendo "password non valida" in parte si spera che scoraggi le forze brute dal continuare. In più puoi fare una rivelazione enorme quando James "digita la sua password sbagliata due volte", prima che il muro accanto a lui improvvisamente si apra per rivelare il caveau oltre.

    
risposta data 19.02.2015 - 20:06
fonte
0

Per aggiungere a tutte le altre grandi risposte, questo tipo di schema di protezione della password non fornisce alcuna protezione contro i keylogger o gli attacchi man in the middle. Dal momento che inseriresti ancora la tua password in una sequenza, il keylogger può rieseguire le tue azioni e ottenere comunque l'autorizzazione. L'autenticazione a 2 fattori come suggerito da @Archimedix sarebbe il modo più efficace per mitigarlo.

    
risposta data 20.02.2015 - 23:08
fonte
0

Come altri hanno già detto, funzionalmente, è uguale a una lunga password. Per rendere l'implementazione meno confusa, potrebbe essere implementata chiedendo tutte e tre le password nella stessa schermata.

Qualcosa in questo senso viene fatto dal mio broker online dove richiede la password del membro e la password di trading durante il login. Dobbiamo avere entrambe le password per accedere. Inoltre, devo cambiare la password del mio membro ogni 10 giorni circa e ci sono delle regole per non ripetere le precedenti tre password, ecc.

La mia banca ( ICICI Bank ) ha precedentemente implementato due password, una per la visualizzazione da inserire per accedere e ottenere l'accesso a informazioni, e un altro per le transazioni da inserire in qualsiasi momento è stata eseguita un'azione che comporterebbe una transazione finanziaria. La mia carta di debito Visa è inoltre protetta da un sistema che chiama 3-D Secure dove, indipendentemente dal gateway di pagamento, Mi portano sul loro sito per inserire una password per completare la transazione. So che questo è il vero sito di Visa, perché mi permettono di personalizzare il messaggio da mostrare.

Quindi l'idea non è senza precedenti, sebbene non sia implementata esattamente nello stesso modo in cui dici. Aggiungere più password è qualcosa che almeno i banchieri e gli agenti di borsa sembrano convinti.

    
risposta data 25.02.2015 - 11:12
fonte
0

Interrompi la complessità tecnica inutile

Secondo una risposta precedentemente corretta,

A\nB\nC

è approssimativamente uguale a

A B C

(o forse più leggero, per quanto riguarda la risposta di @ Mark, sulla sequenza di Bruijn ) .

Da lì, se hai davvero bisogno di mantenere il tuo segreto:

  1. Utilizza strumenti standard strongmente testati per un po '. (Se non sei sicuro, preferisci condividere e chiedere in giro, invece di usare qualsiasi tipo di oscurità.)

  2. Tienili aggiornati.

  3. Insegna ai tuoi utenti le passphrase (vedi xkcd: Forza della password e discuss su IS )

  4. Tieni presente che social engineering (su Wikipedia) è il prima via dei difetti di sicurezza. (Un'altra famosa xkcd: sicurezza ).

  5. Controlla il tuo sistema e controlla i log.

risposta data 27.02.2015 - 21:00
fonte

Leggi altre domande sui tag