Domanda:
È possibile rendere inefficaci gli attacchi di forza bruta fornendo risposte false positive ai tentativi di accesso falliti?
Tweakimp
2016-07-13 02:25:39 UTC
view on stackexchange narkive permalink

Non ho alcuna esperienza o conoscenza scientifica in materia di sicurezza, volevo solo chiedere se questo è possibile perché mi interessa.

E se crittografassi i dati e ogni password li decrittografa, ma solo quello giusto non crea inutili confusione di dati? Lo stesso si potrebbe fare con un login: dati di login falsi portano ad account falsi e fittizi e solo i dettagli di login corretti ti portano agli account giusti. Non è questo un metodo di crittografia decisamente migliore perché non puoi semplicemente provare le password ma devi guardare il risultato per vedere se è quello giusto?

Sembra un [one-time pad] (https://en.wikipedia.org/wiki/One-time_pad).
Un [honeypot] (https://en.wikipedia.org/wiki/Honeypot_ (informatica)) o uno [spamtrap] (https://en.wikipedia.org/wiki/Spamtrap) è un sistema il cui scopo è sprecarel'ora del bot.
funzionerebbe solo online e non dovresti essere in grado di forzare le password online in primo luogo ...
Bene, quando provi a forzare il testo crittografato è quello che * devi * fare.Non esiste una campana magica che ti dica quando hai la decifrazione giusta, devi guardare l'output e controllare.Se qualcuno crittografa un file zippato e controlli solo se il tuo tentativo produce testo normale, non sarai mai in grado di decifrare il testo anche provando tutte le chiavi possibili.
@Bakuriu: Con sistemi di crittografia scadenti, puoi semplicemente decrittare i primi quattro byte (chiamato appunto il numero magico, [non sto scherzando] (https://en.wikipedia.org/wiki/File_format#Magic_number);)!) Econtrolla se ottieni, ad esempio, un'intestazione di file ZIP corretta (non che penso che ZIP fornisca effettivamente un sistema così scadente, ma stavo solo riutilizzando il tuo esempio).Con buoni sistemi di crittografia, devi prima decifrare l'intero * file e solo dopo sarai in grado di verificare se la chiave di decrittazione è davvero quella giusta.
@WhiteWinterWolf Tutto quello che dici è ovvio ma non hai capito il senso del mio commento.Rileggilo.
Il sistema di crittografia più pratico di @Bakuriu: include un hash, che ti dice quando hai la decrittazione giusta.Inoltre, alcuni schemi di crittografia, ad es.crittografia completa del disco, sono progettati in modo da poter eseguire l'accesso casuale in modo efficiente, quindi non è necessario decrittografare l'intero volume per sapere di avere la chiave di decrittazione corretta.
@LieRyan Non vedo quanto il tuo commento sia rilevante.Come ho detto: se il ** solo controllo ** che fai per vedere se la decrittografia è corretta sta controllando se il risultato ** come ASCII in chiaro ** è comprensibile, allora non sarai mai in grado di decriptare un messaggio criptato zippato.Periodo.Non sono presenti hash in questo scenario.Il punto è che per definizione la decrittografia tramite la forza bruta richiede che tu guardi i "dati decrittografati" e decidi se hai capito bene o no, ea volte è facile, altre volte è difficile o impossibile da fare.
Non dimenticare i tuoi utenti.Il tuo schema di crittografia può gestire il problema "stupido software, produce spazzatura quando decrittografa i miei file una volta ogni tanto"?Se hai solo pochi utenti tecnici che ne sanno abbastanza, potrebbe essere utilizzabile.Ma se stai prendendo di mira molti utenti non istruiti, per il tuo bene di sanità mentale, crea una "Password sbagliata!"la finestra di dialogo :)
Vale la pena ricordare che Vim produce spazzatura quando si utilizza la chiave di crittografia sbagliata sui file crittografati.È facile da dire, tuttavia, poiché l'output termina con caratteri pieni di controllo.
@LieRyan In un sistema crittografico costruito correttamente, i dati vengono crittografati e quindi viene applicato il MAC (che utilizza un hash).Se fai il contrario, MAC [Hash] poi crittografa, quindi sì, puoi usare il MAC per sapere se hai una decrittografia valida.Questo rende più facile l'attacco di forza bruta.Pertanto, questo è il motivo per cui i sistemi moderni non lo fanno in questo modo (FYI, questo è un bug ben noto in SSL).Vedi https://moxie.org/blog/the-cryptographic-doom-principle/ per maggiori dettagli.
Questo dovrebbe accadere in modo casuale invece che in modo coerente.Per esempio.a ~ 100 accessi errati viene presentato un falso positivo.
Oltre alle eccellenti risposte, dai un'occhiata alla relativamente nuova Honey Encryption: https://en.wikipedia.org/wiki/Honey_Encryption
C'è un modo per gestire i contributi che sono spam, fiamme ecc. Sui forum pubblici che mi ricorda il suggerimento dell'OP: l'idea è di non dire al poster che il suo post è stato ritenuto inaccettabile dal software del forum, ma piuttosto di mostrare il suoposta a lui, e solo a lui, come se fosse stato accettato.Sarà l'unico a vedere il suo post, ma credo che ci sia riuscito.
Nove risposte:
Cort Ammon
2016-07-13 02:32:53 UTC
view on stackexchange narkive permalink

La risposta dipende sempre dal modello di minaccia. La sicurezza è sempre intessuta in un equilibrio tra sicurezza e usabilità. Il tuo approccio disturba gli hacker che tentano di entrare nell'account, ma anche un utente che digita semplicemente la password in modo errato. Se l'account falso è abbastanza credibile da ingannare un utente malintenzionato, potrebbe anche essere abbastanza credibile da ingannare un utente valido. Potrebbe essere molto brutto.

Ciò potrebbe essere desiderabile in ambienti ad alto rischio. Se dovessi archiviare segreti nucleari allo scoperto su Internet, avere ogni password sbagliata ti condurrà a un account che ha accesso a documenti falsi che in realtà non rivelano segreti nazionali potrebbe essere abbastanza potente. Tuttavia, nella maggior parte dei casi non è necessario.

Devi anche considerare le alternative. Un approccio molto popolare consiste nel bloccare l'account dopo N tentativi, il che fondamentalmente interrompe tutti i tentativi di forza bruta a freddo e ha comportamenti di usabilità che la maggior parte degli utenti è disposta ad accettare.

La ringrazio per la risposta.In realtà volevo sapere se è possibile, non utilizzabile, forse poteva esserci qualcosa che non vedevo che avrebbe reso inutile la mia idea.
Quando si tratta di possibilità, l'unico limite sarà la questione di quanto realistico di un account fittizio sei interessato a dedicare del tempo alla creazione.Un posto interessante per cercare dati su questo è la crittografia negabile.Nella crittografia negabile, si crea una partizione fittizia e si rende impossibile per l'attaccante provare matematicamente l'esistenza di qualsiasi altra partizione.Quella comunità ha mostrato molto interesse per come rendere legittima la partizione fittizia.
Un account di questo tipo può anche essere utilizzato come honeypot che fa scattare i sensori di sicurezza quando qualcuno accede lì in modo da poter rilevare un aggressore in anticipo.
Il problema con l'honeypotting di un tentativo di accesso è che l'utente valido non si renderà conto che questi non sono piani reali, quindi costruiscono armi nucleari che non funzionano correttamente.Spero che i tuoi falsi piani non infrangano i controlli di sicurezza.Il metodo più efficace che ho visto è costringere gli utenti ad aspettare sempre più a lungo tra i tentativi di accesso.Costringili a rallentare e pensare a cosa stanno scrivendo.In questo modo quando raggiungono il limite di tentativi N non è una sorpresa.
@CandiedOrange: è un account fittizio con informazioni false.Nessun utente legittimo accederà mai ad esso.Se qualcuno ruba i piani e costruisce una bomba atomica non funzionante, il sistema funziona come previsto.
@Johnny Penso che potrebbe esserci una certa confusione.Ho tradotto la domanda dell'OP come "ogni accesso non valido dovrebbe avere successo, ma portare a un account fittizio" Quindi sarebbe altamente plausibile per un utente digitare erroneamente la propria password sbagliata e arrivare a tale account.Se gli honeypot sono invece impostati in modo che * la maggior parte * degli accessi non validi ti faccia sapere che il login non era valido, ma alcuni honeypot sono stati impostati con vari nomi utente, allora avresti ragione.Nessun utente accederà mai a un tale honeypot per errore.
Una combinazione, dove dopo alcuni tentativi falliti (3?) Piuttosto che bloccarti fuori dal tuo account ti porta a un account falso sarebbe sicuramente interessante.Come nota a margine, una volta ho lavorato in un luogo in cui la tabella utente PK era utente + password.
"e ha comportamenti di usabilità che la maggior parte degli utenti è disposta ad accettare" ... per valori ragionevolmente alti di N. =)
Per valori bassi di N, è un attacco DOS.E un attacco DOS compromette la disponibilità, la A nella triade CIA della sicurezza delle informazioni.
@DamianYerrick Questo è molto vero.I problemi relativi al DOS sono uno dei motivi principali per cui l'ho elencato solo come un'alternativa popolare, non come una soluzione.In alcuni ambienti tale rischio è sufficientemente basso da poter essere accettato.In altri ambienti, è completamente inaccettabile.
John Wu
2016-07-13 04:06:09 UTC
view on stackexchange narkive permalink

Ingannare un utente malintenzionato con falsi positivi non è una cattiva idea e non è una novità. Quanto segue potrebbe interessarti.

Cryptographic Camouflage

CA Technologies ha brevettato una tecnologia nota come Cryptographic Camouflage.

Un punto delicato nella crittografia a chiave pubblica è come proteggere la chiave privata. Descriviamo un metodo per proteggere le chiavi private utilizzando il camuffamento crittografico. Nello specifico, non crittografiamo la chiave privata con una password troppo lunga per un attacco esaustivo. Invece, la crittografiamo in modo che solo una password possa decrittografarla correttamente, ma molte password la decodificheranno per produrre una chiave che sembra abbastanza valida da ingannare un aggressore. Per alcune applicazioni, questo metodo protegge una chiave privata dall'attacco del dizionario, come fa una smart card, ma interamente nel software.

Questo non è esattamente ciò di cui stai parlando (sono proteggere una chiave, non l'accesso) ma il concetto è lo stesso. Sventi un attacco di forza bruta rendendo difficile o impossibile determinare se hai effettivamente decifrato il codice.

Mousetrap

Nel 1984, Michael Crichton (autore di Andromeda Strain e molti altri) ha scritto un racconto incentrato su un hacker che pensava di rubare file top secret. Aveva indovinato la password giusta, ma a sua insaputa, il computer lo stava effettivamente autenticando non guardando la sua password ma con la velocità e il modo in cui utilizzava la tastiera e il mouse, una specie di meccanismo di autenticazione biometrica. Ha fallito l'autenticazione. Ma il computer non gli ha detto che aveva fallito, invece gli ha presentato una copia falsa dei documenti segreti, che ha poi scaricato e ha tentato di vendere sul mercato nero.

Di nuovo, questo non è esattamente quello che stai chiedendo, ma dimostra (nella finzione, comunque) l'uso di falsi positivi per contrastare un attacco.

Cryptographic Camouflage mi ricorda come TrueCrypt potrebbe caricare [un esca o un sistema operativo nascosto a seconda della password fornita] (http://andryou.com/truecrypt/docs/hidden-operating-system.php).
Un altro ottimo esempio!
Tyler Gallenbeck
2016-07-13 04:00:22 UTC
view on stackexchange narkive permalink

Per darti una risposta chiara, , è possibile ridurre l'efficacia degli attacchi di forza bruta e può essere fatto come hai suggerito, ma non dovresti. È possibile ottenere risultati molto simili semplicemente implementando ritardi di temporizzazione tra ogni tentativo fallito e l'ipotesi successiva. Inoltre, (solo per tua conoscenza) tecnologie molto sofisticate e simili sono già state progettate e implementate per questa cosa esatta. Prodotti come Canary, Honey Pots e Honey Docs offrono tutti cose simili come ambienti, dispositivi, server, account falsi, ecc.

Ok, ma per quanto riguarda i file crittografati.Non puoi mettere un ritardo tra i tentativi di decrittazione falliti, vero?
Non credo che si possa davvero creare un numero sufficiente di falsi set di file in un contenitore crittografato per ingannare in modo affidabile uno strumento di cracking automatico.Se l'attacco ha la possibilità di un attacco offline, devi fare affidamento su altre tecniche di rafforzamento come le funzioni di derivazione chiave che sono lente per limitare il numero di tentativi per unità di tempo.
@Tweakimp, potresti essere interessato a "Volume nascosto TrueCrypt".Sembra quello che stai descrivendo.(Ma ha solo due password, non infinite.)
@Wildcard Grazie, lo guarderò.Due suoni molto più piccoli dell'infinito però;)
@SimonLindgren cioè fino a quando il calcolo quantistico non diventa una realtà in cui i tentativi al secondo raggiungono nuove vette.Quindi, anche le funzioni di derivazione chiave dovrebbero aumentare.
Peteris
2016-07-14 00:43:28 UTC
view on stackexchange narkive permalink

L'effetto è minimo

Supponiamo che il tuo sistema trasformi la forza bruta pratica dalla decrittografia dei primi quattro byte (realisticamente, il primo blocco molto più grande, ma qualunque cosa) al dover decrittografare l'intero, ad es. quattro gigabyte di dati crittografati, rendendo i tentativi bruteforce circa miliardi di volte o 2 ^ 30 volte più lenti.

Ora, potrebbe sembrare una grande differenza per te, ma in realtà quell'effetto è minuscolo rispetto ad altre alternative. Una scala di "miliardi di volte più lenta" semplicemente non è molto nel mondo della crittografia. Perché preoccuparsi di una complessità aggiuntiva che potrebbe non riuscire a ottenere il rallentamento previsto o introdurre nuovi bug, se semplicemente aggiungendo 30 bit extra alla lunghezza della chiave di crittografia fa la stessa cosa e aumentando la dimensione della chiave da es 128 bit (se questo non è già sufficiente) a 256 bit fornisce un effetto incomparabilmente molto più grande di quello?

gpinkas
2016-07-13 16:23:29 UTC
view on stackexchange narkive permalink

La maggior parte è già stata detta, voglio solo offrire un'altra prospettiva.

Immagina di provare a proteggere una casa con questa tecnica. Lasceresti che l'intruso dia accesso a una stanza della cantina se cerca di aprire la porta per un po 'di tempo.

La domanda è: vorresti un intruso anche lì? L'intruso si renderà sicuramente conto di non aver ottenuto ciò che voleva dopo un po 'di tempo e cercherà di allontanarsi da lì. E dovresti mantenere la sicurezza extra per la cantina che hai preparato.

Quindi, in un certo senso, aumenti solo la quantità di lavoro per te stesso per ingannare gli aggressori (inesperti) per un po 'di tempo.

Perché se lo facessi bene, l'intruso non saprebbe (per un po 'di tempo) di essere nella stanza finta e non potrebbe nemmeno essere sicuro di essere in quella giusta quando entra. Inoltre, guardare nella stanza richiede tempo, quindi non puoi semplicemente testare la porta per una chiave, ma devi guardare nella stanza ogni volta che richiederà molto più tempo per farti strada con la forza bruta.
Sì, capisco cosa intendi.Il punto è: allestire e mettere in sicurezza la finta stanza in un buon modo richiede il tuo tempo.Il tempo che potresti investire meglio per proteggere la "porta d'ingresso" in primo luogo.:)
Un adeguato controllo degli accessi per gli utenti legittimi autenticati è comunque già una necessità;Non riesco a vedere come sarebbe un lavoro extra per un account falso.
Esatto, ma proteggere l'intero controllo dell'accesso è molto più difficile che proteggere la schermata di accesso.È una necessità, ma è quasi impossibile disporre di una sicurezza perfetta.Con questo schema lasci che un possibile aggressore si avvicini al tuo sistema.Nella maggior parte degli attacchi, ottenere l'accesso a QUALSIASI account in un sistema è il primo passo per ottenere i privilegi di root.
Questo è un bell'esempio recente di escalation dei privilegi: http://www.theregister.co.uk/2015/07/22/os_x_root_hole/
@gpinkas: Lasciare che qualcuno oltrepassi il cancello è brutto.Avere cancelli anteriori falsi oltre a quello vero, * che sono tutti completamente al di fuori del vero muro di sicurezza *, può valere o meno lo sforzo, ma non dovrebbe influire sulla sicurezza.L'aspetto utile principale che posso vedere in queste cose è che se i cancelli falsi superano i cancelli reali di circa 1.000: 1 e attivano gli allarmi quando vengono violati, è probabile che un intruso attivi gli allarmi prima di ottenere l'accesso a qualcosa di importante.
bernz
2016-07-14 01:17:06 UTC
view on stackexchange narkive permalink

Sembra che tu stia parlando di una forma di "crittografia negabile" o "negabilità plausibile" nel contesto della crittografia; ovvero, un segreto alternativo che decifra in testo in chiaro plausibile ma non autentico. Vedi https://en.wikipedia.org/wiki/Deniable_encryption per i dettagli.

Ma in senso stretto, se qualcuno ha la capacità di forzare il tuo testo cifrato, potenzialmente scoprirà tutto testi in chiaro plausibili e quindi, sulla base di qualsiasi conoscenza che già hanno sul contesto, potranno decidere quale dei testi in chiaro è quello originale autentico. La prima parte può essere eseguita da pseudo-IA, ma la seconda parte ha ancora bisogno di un essere umano.

Utilizzando un one-time-pad ogni possibile messaggio è ugualmente probabile, non hai modo di sapere quale fosse l'originale senza la chiave originale.Ad esempio, "Meet 3pm Wed" è altrettanto probabile quanto "Meet 9am Tue" o "Done my task": il contesto non sempre aiuta
m.kin
2016-07-13 05:21:31 UTC
view on stackexchange narkive permalink

Il problema con le chiavi è che esistono come dati e non come codice in esecuzione. Anche con l'esempio di CA e Crichton, ciò che accade è una procedura fuori banda che fornisce risposte ragionevoli per ogni tentativo di decrittografia. Matematicamente questo è impossibile a livello di un testo cifrato e di tentativi di forza bruta.

Dewi Morgan
2016-07-14 00:20:27 UTC
view on stackexchange narkive permalink

Per l'accesso remoto, come altri hanno detto, possono funzionare semplici blocchi e ritardi.

Per le password, quello che hai è un hash unidirezionale. Per convalidare la password, è necessario eseguirne nuovamente l'hash e confrontare i due hash. Avere più di una semplice password che produce una corrispondenza valida con un singolo hash è considerato indesiderabile: significa che l'hash è debole e ha "collisioni".

Quindi è probabile che tu sia interessato alle unità crittografate.

Ciò che descrivi - unità "esterne" false piene di dati falsi che proteggono l'unità "interna" crittografata - è possibile ed è stata eseguita in TrueCrypt (che purtroppo è morto).

Quanto segue è la mia ingenua comprensione e alcuni o tutti potrebbero essere sbagliati. Non ho mai usato questa funzione, ma l'ho ritenuta interessante.

Truecrypt ti ha permesso di specificare una seconda password, che avrebbe sbloccato un "livello" dell'unità crittografata (potrebbe essere stata limitata a un contenitore esterno, io dimenticare). Questo aveva chiari problemi; le unità esterne non erano a conoscenza di quelle interne, che erano memorizzate nello "spazio vuoto" delle unità esterne crittografate. Quindi i cambiamenti in quelli esterni potrebbero distruggere le pulsioni interne. Inoltre, i datestamp sulle unità interne non venivano aggiornati automaticamente quando si accedeva all'unità crittografata. Quindi qualcuno con accesso alla tua macchina potrebbe sapere quando hai modificato l'ultima volta il file dell'unità crittografata e potrebbe confrontare quei datestamp con gli orari dell'ultima modifica sull'unità crittografata e dire immediatamente che lo stavi usando più di recente, quindi deve esserci una spinta interna.

Ma l'idea era che l'unità esterna avesse una password facile da indovinare, come password123, inserisse alcune cose vagamente segrete e questo renderebbe i tuoi avversari credo che siano entrati nella tua unità crittografata.

Qualcosa di meno - qualsiasi cosa che abbia appena restituito spazzatura (rumore casuale equivalente a un'unità non formattata) sarebbe stato banale da aggirare controllando una "stringa magica" sull'unità decrittografata che sarebbe richiesta su qualsiasi unità reale ma improbabile in un disco di immondizia.

Lo stesso con i documenti crittografati: la maggior parte dei tipi di file ha stringhe magiche, quindi se sai quale tipo di file è contenuto, qualsiasi rimescolamento può essere forzato a trovare tutti i modi che producono la stringa magica .

Ciò non significa che sia una cattiva idea, però - se la stringa magica è, diciamo, "jfif", allora solo circa una su circa 16 milioni di password risulterà in quella stringa magica. Ma se la lunghezza della chiave è, diciamo, 2 ^ 1024, allora l'hanno ridotta solo a 2 ^ 1000 - che, certo, è certamente 16 milioni di volte più veloce da decifrare, ma ci vorrà comunque letteralmente per sempre per decifrare.

Errori di battitura casuali di password non farebbero pensare a qualcuno di aver decriptato il file, ma semplicemente cercare la stringa magica non sarebbe sufficiente.

Ti manca un punto: per sbloccare l'unità "esterna", dovevi digitare * entrambi * i tasti.In questo modo potresti apportare modifiche senza distruggere la spinta interiore.Ma quando un aggressore [ti ha minacciato con una chiave inglese] (https://xkcd.com/538/), potresti semplicemente dirgli la chiave esterna e * avrebbe * aperto con successo l'unità, senza prove che ci fosse unpulsione - e quindi, anche, nessun modo per proteggere la spinta interiore.
@wildcard Ah, OK.Anche se purtroppo, i timestamp sull'unità "esterna" probabilmente renderanno ancora abbastanza chiaro che in realtà eri attivo solo sull'interno, a meno che tu non sia in grado di montare e accedere a entrambi, possibilmente con uno script sull'interno per manipolare l'esterno.
Tom
2016-07-15 11:06:00 UTC
view on stackexchange narkive permalink

Qualcosa del genere è stato effettivamente fatto in alcune versioni del software di compressione RAR (all'inizio, non sono sicuro che sia ancora così). Un archivio crittografato verrebbe decrittografato da qualsiasi password inserita, ma una password errata comporterebbe un output incomprensibile. È stato fatto per prevenire la forzatura bruta delle password che all'epoca era fattibile per gli archivi ZIP che restituivano immediatamente un errore di "password errata".

In realtà, con zip non tutte le password portano all'errore "password sbagliata".Quel rifiuto rapido si verifica per la maggior parte di loro (e quindi un utente digita erroneamente "sempre" lo incontra), ma se stai forzando brute le password, otterrai molti falsi positivi su crc32 (si basa su un 1 byte o 2-byte crc check) che devono essere verificati o estraendo completamente il file e poi realizzando che il crc32 estratto non corrisponde o -se sei fortunato- guardando il testo in chiaro noto all'inizio del file da estrarre.
Forse questo è nuovo?Sto parlando di 20 anni fa.
Sto parlando della crittografia zip tradizionale, ad es.quello che era disponibile 20 anni fa.
Penso di sapere esattamente cosa intendi: ricordo anche di aver cercato di ritrovare la mia password per un archivio di grandi dimensioni, quindi WinRAR prima "estraeva" l'intero archivio prima di dirmi che la password è sbagliata.Penso che questo dovrebbe essere collegato a un'era in cui i metodi appropriati [key stretching] (https://en.wikipedia.org/wiki/Key_stretching) non erano comuni, WinRAR ha utilizzato questo metodo per rallentare gli attacchi di forza bruta.
Tali metodi rendono l'efficienza della forza bruta direttamente dipendente dalla dimensione dell'archivio, il che non è una buona cosa: piccoli archivi saranno meno protetti, aggiungere file inutili aumenterebbe la sicurezza, è semplicemente troppo hacker.Ecco i metodi di estensione delle chiavi appropriati che consentono di dedicare un tempo costante al processo di controllo della password, indipendentemente dalle dimensioni dell'archivio: agli archivi piccoli viene fornito lo stesso livello di protezione contro la forza bruta di quelli più grandi, livello che dipende solo dall'algoritmo e dai parametri scelti, che è ovviamente più pulito e quindi più sicuro.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...