Password modellata, in base al nome del sito [duplicato]

29

Sto considerando l'implementazione di un pattern per le mie password, utilizzando le seguenti idee:

  1. Password principale che non memorizzo da nessuna parte
  2. Un algoritmo per manipolarlo in base al sito a cui sto accedendo

Quindi ad esempio ho la password principale M, vado al sito web PayPal (P) ed eseguo un algoritmo relativamente semplice nella mia testa A(M, P) che produce la password per PayPal. L'algoritmo è coerente ma per siti diversi produce risultati diversi.

Pro:

  1. Rubare 1 o 2 password non mi espone a ulteriori rischi.
  2. Non ho bisogno di alcuna app di gestione della memorizzazione o della password.
  3. Keylogger può rubare solo una quantità limitata di password.
  4. Dato che non ho bisogno di spazio di archiviazione, non posso davvero perdere le mie password.

Contro:

  1. Se il mio algoritmo perde in qualche modo, la password principale può essere recuperata da poche password conosciute.
  2. Rende più difficile l'immissione delle password. Però posso scrivere una piccola app per il mio telefono. La generazione della password del sito potrebbe essere problematica in determinate situazioni.
  3. Cambiare le password è un problema, ma può essere aggiunto aggiungendo il terzo parametro - versione A(M, P, V) e posso memorizzare solo la versione. O salvalo nel suggerimento per la password.

È una buona idea?

    
posta Andrey 03.06.2016 - 02:30
fonte

8 risposte

38

Poiché la domanda è stata modificata per non fare più riferimento a "Two Factor Authentication", ripeterò la mia risposta, ma lascerò l'originale di seguito.

L'idea di avere una "password di base" a cui aggiungi alcuni caratteri o "manipola" in qualche modo per renderla univoca per ogni sito è un trucco abbastanza comune che anche alcuni esperti di sicurezza usano (finché non adottano gestori di password almeno).

Quindi quanto è sicuro questo schema? Bene, è meglio che usare la stessa password per tutto e peggio che usare password completamente diverse e non correlate. Esattamente dove cade su questa linea è una questione di opinione (che sono sicuro che altre risposte forniranno).

La mia opinione è che non importa dove si trova sulla linea perché sei preoccupato per le persone che analizzano le tue password trapelate per i pattern, o non lo sei. Per come la vedo io, ci sono due tipi di attacchi (o "modelli di minacce") di cui preoccuparsi:

  1. Un attacco del dizionario "drive-by" da parte di uno strumento di cracking di massa usando dizionari di archivio. Di solito cercano di individuare il 40% degli utenti con password deboli - che riutilizzano la stessa password da un sito all'altro, e quindi passeranno a una nuova perdita di password.

  2. Ti stai prendendo di mira personalmente: il tempo umano e il potere di calcolo saranno spesi analizzando le passate password passate in cerca di un modello.

Se ti preoccupi solo di 1), potresti essere in grado di farla franca con una semplice regola di mangling per ottenere la tua password dalle regole standard in strumenti di cracking basati su dizionario e off-the-shelf. Anche qui, stai sperando che il tuo "trucco" non sia abbastanza popolare da averlo aggiunto agli insiemi di regole. Se sei preoccupato per 2) allora qualsiasi tipo di modello sarà eventualmente scoperto.

Alla fine della giornata, "è abbastanza sicuro?" dipende dalla tua gestione del rischio e dall'importanza della cosa che stai proteggendo: molto approssimativamente, se (probabilità di violazione) X (valore dei dati persi) > (livello di sicurezza), quindi si dovrebbe aumentare la sicurezza. Se sei preoccupato abbastanza delle tue password per scrivere un post su un sito come questo (e buono per te!), Dovresti prendere in considerazione solo l'uso di un gestore di password come LastPass o KeePass - sono davvero facili (a meno che tu non dimentichi il tuo super -stringa la password principale e abbandona tutto come ho fatto io.

Risposta originale:

In primo luogo, alcuni termini:

Si scopre che c'è un po 'più di autenticazione a due fattori di quanto si possa pensare in superficie. In generale, esistono tre tipi di meccanismi di autenticazione:

  1. Qualcosa che sai - informazioni, come una password, o il nome da nubile di tua madre, o una chiave pubblica memorizzata in un file chiave.

  2. Qualcosa che hai - di solito un oggetto fisico come il telefono che può ricevere SMS al tuo numero, o un token One-Time-Password (OTP) o una smart card abilitata a chiave pubblica / Chiave USB:

  1. Qualcosa che sei : alias "biometrico" come impronte digitali, diaframma, voce, ritmo di battitura, ecc.

La ragione per suddividere i metodi di autenticazione in queste categorie è che ognuno richiede un tipo di furto molto diverso affinché un hacker possa acquisirlo.

Se ti viene richiesto di fornire una prova di identità da più di una delle catogorie precedenti, allora è correttamente "Autenticazione a due fattori" o "Autenticazione a più fattori". Se stai fornendo più elementi dalla stessa categoria , allora si chiama "Autenticazione a più fasi", che è ovviamente più debole del multi-fattore.

Ora per la tua domanda:

Quindi quello che stai proponendo non è Multi-Factor. Non è nemmeno Multi-Step perché alla fine di tutto, stai fornendo solo una password per la pagina di accesso.

    
risposta data 03.06.2016 - 03:31
fonte
9

Questo documento suggerisce che il tuo approccio di riutilizzo delle varianti basato su una singola password principale è davvero meglio della semplice duplicazione delle password. Tuttavia, come cita techraf , se si utilizza un semplice algoritmo, i vantaggi di sicurezza potrebbero essere banali.

Ad esempio, un algoritmo semplice comune per A consiste nell'utilizzare un susbet del nome di dominio nella tua password (ad esempio abcd1234gmail per gmail.com e abcd1234facebook per facebook.com).

Supponendo che l'algoritmo sia qualcosa che vuoi essere in grado di fare nella tua testa, ciò che vuoi veramente A per ottenere è darti una buona diffusione , così che le tue password generate non siano condividere sottostringhe comuni. Questo, combinato con una password master abbastanza lunga e complessa, dovrebbe darti delle varianti abbastanza oscure, cosicché anche se alcune password sono trapelate, guardano sufficientemente diverse e non assistono gli strumenti di cracking delle password. Molto presto, prevedo ulteriori studi che confrontino le password per gli stessi utenti su più violazioni per scoprire come le password sono comunemente varie.

Una raccomandazione che ho è di usare una password master diversa per i tuoi account più importanti (per ogni evenienza). Alla fine della giornata, questo è senza dubbio la sicurezza attraverso l'oscurità, ma non è questo ciò che è la selezione della password?

Ciò che sarebbe veramente prezioso è un buon modo per generare una famiglia di algoritmi diversi {A} , che può essere facilmente calcolata nella tua testa? Altrimenti, puoi utilizzare un semplice programma per generare la tua password usando qualcosa come hash(master+domain+salt) .

    
risposta data 03.06.2016 - 03:15
fonte
7

Ti affidi alla segretezza e alla complessità del tuo algoritmo. Questo è un tipico esempio di sicurezza attraverso l'oscurità :

reliance on the secrecy of the design or implementation as the main method of providing security

Quindi devi prendere in considerazione i suoi avvertimenti.

È una buona idea purché tu:

  • mantieni il segreto

    Invece di una password segreta, usi un algoritmo segreto. Poiché rimane nella tua testa, puoi assumere il suo segreto in una certa misura (sebbene questa stessa domanda abbia già rivelato il fatto che potresti usarne una).

    Lo spostamento dell'algoritmo fuori dalla tua testa (codifica in un'app) interrompe questa condizione.

  • non usare troppo spesso

    Tecnicamente si riduce alla crittografia dell'URL (cleartext) del sito con:

    • un algoritmo segreto (abbastanza semplice da eseguire calcoli nella tua testa)
    • una password fissa (chiave riutilizzata)

    Questo non suona sicuro per la crittografia e dato un numero sufficiente di campioni è incline alla crittanalisi.

    Tuttavia, in caso di password per i siti Web, i campioni sarebbero piuttosto scarsi e, in più, dovrebbero provenire da una serie di fonti compromesse. Sarebbe piuttosto difficile.

  • rende il risultato davvero casuale

    Generalmente se si utilizza un algoritmo " relativamente semplice " si ottiene una sicurezza relativamente debole. Il tuo algoritmo originale potrebbe non essere quello originale e un crittoanalista esperto potrebbe decodificarlo anche da un piccolo numero di campioni.

    C'è un margine di miglioramento qui: se si combina l'algoritmo "in-head", lo si usa come input per una funzione hash / derivazione chiave e si usa l'output come password inserita, aumenta drasticamente la sicurezza di lo schema.

    Tuttavia, essendo ancora nel regno della sicurezza attraverso l'oscurità: cosa e come lo fai deve rimanere segreto e persino non allacciato.

risposta data 03.06.2016 - 03:22
fonte
4

Direi che questa è una buona misura di sicurezza che aumenterà sensibilmente la tua sicurezza generale. La ragione per cui dico questo è a causa del tipico modello di minaccia di password rubate. Se siete preoccupati per i tipici dump di hacker / password, è improbabile che impieghino il tempo e gli sforzi per provare a decodificare l'algoritmo della password, quando potrebbero controllare le milioni di altre password che hanno ottenuto o tentare di hackerare per ottenere di più .

Essenzialmente, purché le tue password differiscano anche leggermente da sito a sito, ti unisci alle persone che hanno gestori di password. In particolare, se sei preoccupato che qualcuno stia tentando di hackerarti in modo specifico, questo non si applica più e noteranno modelli e somiglianze tra le password che hanno raccolto da più dump. È molto difficile, anzi quasi impossibile, trovare un algoritmo che puoi fare nella tua testa che non può essere annullato da un computer dai risultati.

    
risposta data 03.06.2016 - 15:19
fonte
3

Questa non è un'autenticazione a due fattori, è solo una: qualcosa che conosci.

2FA non è prezioso a causa dell'algoritmo utilizzato per generare il token. È prezioso perché quell'algoritmo genera un valore che può essere generato solo da un particolare oggetto.

Quindi essere in grado di fornire quel gettone 2FA dimostra che sei in possesso di quell'oggetto; in altre parole: qualcosa che hai.

Forse il tuo schema ha meriti di sicurezza, ma non perché trasmetta proxy delle proprietà di sicurezza di 2FA. Per uno sembra che un utente malintenzionato potrebbe rubare la password una volta tramite phishing e continuare a collegarsi per sempre a quel sito.

    
risposta data 03.06.2016 - 03:06
fonte
3

Quello che hai fatto è stato incorporato un algoritmo di scrambling come parte del tuo segreto generale. Ma gli algoritmi di scrambling non sono necessariamente una strong crittografia. Sono più come puzzle, e di solito possono essere risolti da un attaccante dedicato, con un livello sufficiente di abilità, campioni e motivazione. (Per molti esempi di persone che risolvono questo tipo di problemi solo per divertimento, dai un'occhiata a puzzles.stackexchange.com.) Ciò lascia vulnerabili tutte le tue password ai siti più deboli che visiti, non ai siti bancari più forti .

Esempio

Supponiamo innanzitutto che ci siano attaccanti che hanno le capacità. Immagina un matematico disoccupato e un risolutore di rompicapo, che vive in un paese in fermento, senza prospettive di lavoro e che non c'è niente di meglio da fare. Dopodiché diamo qualche motivazione per attaccarti: l'attaccante impara con un vanto su facebook che hai abbastanza soldi nel tuo conto pensionistico per comprare due Lamborghini. E proprio ora, con questa domanda, gli hai appena detto che usi un algoritmo per ricavare tutte le tue password. Cerca ulteriori informazioni su di te seguendo #SOreadytohelp su Twitter. Ti trova a lavorare in Metacortex e un po 'più su google rivela che Metacortex ospita i conti pensionistici dei dipendenti su retirementfundservices.com. Quindi ora l'unica cosa che sta in piedi nel modo dei ladri di milioni è acquisire sufficienti campioni per rompere il tuo algoritmo.

Non conosco il tuo particolare algoritmo, ma qualsiasi cosa abbastanza semplice da tenere a mente e applicare rapidamente per ottenere una password probabilmente non sopravviverà al nostro aggressore se ha tre campioni; e vorrebbe un quarto testare la sua teoria. Altri campioni ovviamente lo aiuteranno a risolvere il puzzle più velocemente, con più sicurezza.

Il numero di campioni necessari per rompere il tuo algoritmo è molto importante per la tua sicurezza, perché la tua sicurezza personale dipende ora dalla sicurezza totale di tutti i siti in cui usi questo algoritmo, compresi i più deboli. Ma a meno che tu non sia anche un matematico e un risolutore di rompicapo, non saprai di che cosa sia realmente quel numero. Sono tre? Cinque? Se hai personalmente bisogno di 20 campioni per capirlo, questo non garantisce che tutti gli attaccanti abbiano bisogno di 20 campioni per decodificare il tuo algoritmo - ci sono molte persone intelligenti là fuori.

Supponendo che l'aggressore abbia bisogno solo di quattro campioni, significa che deve solo entrare nei quattro siti più deboli che visiti. Oppure diciamo che ti sei già registrato con Adobe, Sony e Xbox e che tutte le password sono finite in pastebin. Ora ha bisogno solo di un altro campione. (Speriamo che non ti sia registrato anche su Ashley Madison.) Forse l'attaccante ti spiazza ulteriormente e ti scopre come allevare conigli come hobby, e trova i tuoi account su rabbit-breeder.org e hobby-rabbit-breeding.com . Non puoi biasimarli per non essere siti ad alta sicurezza, perché non hanno motivo di pensare che stiano proteggendo qualcosa di serio come i conti bancari. Attacca il primo, ma non hanno vulnerabilità facili. Attacca il secondo con una semplice iniezione SQL e recupera la password.

Una volta che un numero sufficiente di campioni è stato rubato, l'attaccante esegue l'analisi offline, senza fornire prove esterne di successo o fallimento. Ti svegli semplicemente una mattina, controlla il tuo saldo pensionistico e scopri che i tuoi soldi sono stati trasferiti in una banca offshore.

Alternative

Hai già preso in considerazione un gestore di password appositamente creato, che è comunque la migliore raccomandazione che potresti ricevere.

Considera uno strumento hardware, come Yubikey o Mooltipass; qualcosa che puoi trasportare e che si sincronizza con il tuo gestore di password online.

Puoi anche usare con successo il tuo sistema proposto separando il tuo rischio in categorie. I siti a basso rischio, come rabbit-breeder.com, ottengono una password principale. Siti a rischio medio, ovunque si usi una carta di credito, ottenere una password master diversa. Siti ad alto rischio, ovunque tu abbia accesso bancario, ognuno di essi ha una propria password di 15+ caratteri. Quindi ora devi ricordare solo alcune password, avere ancora una buona sicurezza e non avere bisogno di uno strumento ingombrante.

    
risposta data 03.06.2016 - 17:36
fonte
3

Dato che usavo uno schema di questo tipo, fornirò due motivi pratici per non per usare questo schema che non vedo indirizzato altrove.

Questo schema fallirà se il sito che stai facendo affari cambia il suo nome o altrimenti viene acquistato da un'altra società e prende il suo nome. Se si tratta di un sito che non visiti frequentemente, potresti persino non capire perché la tua password improvvisamente non funzioni.

Il secondo motivo per non utilizzare questo schema è che ogni sito utilizza criteri diversi per la convalida delle password.

  • La lunghezza minima e massima consentita per una password
  • Indica se è richiesto o meno un carattere numerico nella password
  • Indica se è richiesto o meno un carattere speciale nella password
  • Se sono richiesti caratteri maiuscoli e minuscoli
  • Se sono richiesti solo caratteri maiuscoli e minuscoli
  • Se i caratteri non numerici sono ammessi (detesto i siti che consentono solo numeri!)
  • Quali caratteri speciali sono effettivamente consentiti

Anche se il tuo schema può in qualche modo gestire tutte queste variazioni, c'è anche la domanda su come ricordare quale variazione utilizza un particolare sito. Di solito il sito ti dice i requisiti quando stai creando la password ma non ricordo di averne mai visto uno che ti dice quando stai cercando di inserire la tua password.

    
risposta data 03.06.2016 - 21:46
fonte
1

Sarò generoso e presumo che tu possa creare un algoritmo di maneggevolezza sicuro che puoi fare nella tua testa per soddisfare i tuoi scopi, che può resistere alla comprensione di un cracker dedicato con un buon hardware. Ne dubito sinceramente, ma per amor di discussione lo lascerò e concentrarsi sull'usabilità del tuo schema.

Ho risposto a una domanda simile prima in cui la mia preoccupazione principale è che la modifica della password diventa proibitiva, perché tu deve cambiare ogni password, ma ci hai già pensato ricordando un numero di versione per ogni sito, che il tuo algoritmo di mangling tiene in considerazione. Di nuovo, presumo che ciò sia fatto in modo sicuro, e non è solo un contatore rotante o qualcosa del genere, per il gusto di argomentare. Quindi ora hai una password master condivisa da ricordare, un algoritmo principale da ricordare, un nome utente da ricordare per ogni sito e un numero di versione per ciascun sito.

Ma alcuni siti hanno requisiti di lunghezza in conflitto per la loro password. Uso alcuni siti con un minimo di password di 10 caratteri. Uso un altro paio con un massimo di 8 caratteri. Quindi il tuo algoritmo dovrà generare una lunghezza variabile; devi ricordare un'altra informazione per ogni sito ora, la lunghezza da inserire nel tuo algoritmo.

Possono esistere altri conflitti. Il sito richiede caratteri speciali o vieta loro? Che cosa considera il sito un personaggio speciale? Ecco altre 2 informazioni da ricordare per ogni sito. Supponendo che tu abbia circa 100 siti che hanno una password, ora abbiamo:

  • Una password principale
  • Un algoritmo principale
  • Circa 100 numeri di versione
  • Circa 100 lunghezze
  • Circa 100 "richiede caratteri speciali" sì / no input
  • Circa 100 "caratteri consentiti" input
  • Tra 1 e 100 nomi utente

Sono 400-500 pezzi di informazioni da ricordare.

Inoltre, se hai sempre bisogno di cambiare la tua password principale, o il tuo algoritmo (perché qualcuno l'ha capito in qualche modo, o l'hai accidentalmente scritto e perso o qualcosa del genere) sei ancora nella situazione di essere costretto a cambiare ogni singola password e ricorda un nuovo numero di versione per ciascuna.

La mia ipotesi è che inizierai a scriverli o salvarli in un file. Ora potresti anche usare un gestore di password.

Usando un gestore di password, hai una informazione da ricordare: la tua password principale per il tuo gestore di password.

Se fai le cose per bene, non perderai il tuo database delle password. Per i gestori locali, è facile eseguire il backup di un file in più posizioni ed è strongmente crittografato, quindi è possibile caricarlo su un cloud. Per i gestori cloud, è già stato eseguito il backup senza che tu faccia nulla.

Se sei preoccupato per l'accesso al database, considera che i gestori di password più diffusi hanno app per usarli sulla maggior parte degli smartphone.

Diamine, potresti persino utilizzare la funzione "ricorda password" di Chrome o Firefox, con una password principale se non vuoi occuparti di installare nulla. Ma penso che stai complicando le cose per evitare di usare qualcosa che ti semplificherà la vita e più sicuro.

    
risposta data 03.06.2016 - 18:21
fonte

Leggi altre domande sui tag