Cifratura del file di testo con AES 256 anziché gestore di password

18

Sto iniziando ad avere una lunga lista di password che ho bisogno di archiviare in modo sicuro. Stavo guardando i gestori di password come LastPass, ma questi sembrano sempre presi di mira dagli hacker e sono stati compromessi prima.

Perderò qualcosa conservando le mie password in un documento di testo che crittografo me stesso usando AES 256? Quindi decrittografare quando voglio la password?

    
posta magna_nz 23.01.2017 - 10:42
fonte

7 risposte

57

Considerando quei compromessi che hai citato, pensi che la crittografia di te stesso sia facile? Come fai a sapere che non entrerai nelle stesse insidie che hanno portato a compromessi con i gestori di password?

Si ritiene che AES 256 sia sicuro dal punto di vista computazionale. Ogni computer che abbia mai lavorato simultaneamente alla forza bruta della chiave, funzionante dall'inizio del tempo, avrebbe una probabilità probabilisticamente trascurabile di trovare la chiave per una crittografia.

Tuttavia: un algoritmo sicuro non garantisce un'implementazione sicura . Solo per darti un esempio, ecco alcune domande che dovresti porci:

  • Come farai a garantire che due password identiche nel tuo elenco non siano crittografate con lo stesso testo cifrato AES? (così se l'avversario conosce una password, saprà dove è riutilizzata)
  • Sei sicuro che la tua lista di password decrittografata non possa essere recuperata da un processo che assegna RAM dopo aver consultato il tuo elenco?
  • Sei sicuro che il tuo elenco di password decodificate non finirà con lo scambio?
  • Quali meccanismi di comunicazione userete tra l'utente che fornisce la password principale, il processo che decrittografa l'elenco delle password e l'applicazione di destinazione che necessita di una password?

I gestori di password sono progettati pensando a quelli (e forse molti altri). È quasi impossibile ottenere tutto correttamente quando lo fai da solo la prima volta, soprattutto se non sei un esperto di sicurezza.

    
risposta data 23.01.2017 - 14:02
fonte
12

Perderai la possibilità di generare password casuali con un clic di un pulsante, il che potrebbe significare che tendi verso password più deboli dalla mancanza di praticità - uno dei vantaggi delle app di gestione password, sia online che offline, è il generazione di stringhe casuali lunghe.

Tuttavia, manterrai sicura la sicurezza delle password se hai perso una copia del file, supponendo che tu utilizzi il metodo di crittografia correttamente.

A seconda di come l'hai fatto, potresti introdurre un nuovo problema per la navigazione a spalla: con la maggior parte dei gestori di password, viene visualizzata solo la password che desideri utilizzare. Se il tuo file di testo include più password, potresti esporle tutte quando visualizzi uno specifico. Potresti evitarlo avendo più file o un singolo file con gap molto grandi tra le password, suppongo.

Probabilmente non hai la stessa certezza che i dati decrittografati non vengano scritti su disco - le app di gestione password tendono ad essere molto attente a mantenere le password decodificate in memoria, ma devi assicurarti che la gestione della decrittografia non avvenga lo stesso te stesso.

    
risposta data 23.01.2017 - 11:09
fonte
1

Would I lose anything from storing my passwords in a text document that I encrypt myself using AES 256?

Sicurezza saggia, no. Convenienza saggia, sì. Dipende da come mantieni la password memorizzata e dalla lunghezza della chiave. Ma sì, potresti sicuramente farlo da solo.

    
risposta data 23.01.2017 - 10:59
fonte
1

Nel tuo punto, è una buona idea memorizzare le password localmente nella tua applicazione senza dover acquistare un prodotto commerciale. Perché non sai quali sono le vulnerabilità esistenti in quei prodotti e quanti hacker hanno come target quelle applicazioni.

Se hai intenzione di costruire il tuo strumento personale, di seguito sono riportate le cose che devi preoccupare.

  • La lingua / lo strumento che utilizzerai e il relativo supporto crittografico
  • Come proteggierai i tasti che stai utilizzando
  • Quali algoritmi utilizzano e quali sono le lunghezze delle chiavi
  • Abbiamo bisogno di dipendere da qualsiasi altro pacchetto / strumento di terze parti oltre al principale strumento / linguaggio di sviluppo
  • Come continuerai a mantenere i tuoi dati criptati (file di testo / DB / o nel cloud ecc.)

Se prendiamo il Java come esempio (non so quanto ne abbiate familiarità), le seguenti sono le cose che dovete considerare.

Would I lose anything from storing my passwords in a text document

No. Non lo faresti se stai usando l'algoritmo corretto.

AES 256?

Se si utilizza Java, ciò non è possibile a causa delle restrizioni della dimensione della chiave implementate nella classe Cipher di Java. O devi dipendere dalla Bouncycastle libreria Cryto o utilizzare file forza illimitata JCE . Ma ancora una volta è necessario controllare le Leggi sulla giurisdizione prima di utilizzare questo se si sta pianificando di esportare i propri dati crittografati.

Il mio suggerimento è andare avanti con AES 128 perché è come lo standard de facto nel settore ora.

Il modo bestiale per proteggere i dati crittografati nel tuo contesto è, utilizzando Java crittografia degli oggetti utilizzando SealedObjects perché ritengo sia un onere aggiuntivo utilizzare un DB per archiviare i dati crittografati.

Archivia le chiavi in un store Javakey perché è uno dei modi migliori per archiviare e distribuire le chiavi di crittografia.

È possibile creare un'applicazione Java che consente di escludere la password per il keystore e di eseguire la crittografia e la decrittografia. Puoi semplicemente creare una classe come segue e gestire le tue password. Effettua una ricerca chiave dopo aver decrittografato la matrice / lista di oggetti.

public class PasswordStore {
    private String Key;
    private char[] passwd;
    private Date Updated; 

    public String getKey() {
        return Key;
    }

    public void setKey(String Key) {
        this.Key = Key;
    }

    public char[] getPasswd() {
        return passwd;
    }

    public void setPasswd(char[] passwd) {
        this.passwd = passwd;
    }

    public Date getUpdated() {
        return Updated;
    }

    public void setUpdated(Date Updated) {
        this.Updated = Updated;
    }

Finalmente puoi crittografare un oggetto come segue.

private List<PasswordStore> passwords;

Ricordarsi di usare altre tecniche di programmazione sicure come non memorizzare la password in variabili stringa perché le stringhe sono immutabili e vulnerabili agli attacchi di dirottamento della memoria.

    
risposta data 23.01.2017 - 11:27
fonte
1

Potresti essere interessato al passaggio .

With pass, each password lives inside of a gpg encrypted file whose filename is the title of the website or resource that requires the password. These encrypted files may be organized into meaningful folder hierarchies, copied from computer to computer, and, in general, manipulated using standard command line file management utilities.

pass makes managing these individual password files extremely easy. All passwords live in ~/.password-store, and pass provides some nice commands for adding, editing, generating, and retrieving passwords. It is a very short and simple shell script. It's capable of temporarily putting passwords on your clipboard and tracking password changes using git.

    
risposta data 25.01.2017 - 09:31
fonte
0

Anche se sono d'accordo con il sentimento generale che un gestore di password progettato per l'attività sia il migliore, andrò su un arto e propongo che per alcuni casi d'uso un file di testo crittografato funzioni bene. Avrai bisogno di essere sicuro che i dati non crittografati non vengano mai scritti su disco, il modo migliore che ho trovato è che l'editor di testo crittografa in modo trasparente e decifri il file.

Uso VIM per lo scopo. In VIM 7.4 aggiungi quanto segue al tuo file ~/.vimrc :

if !has("nvim")
    :set cryptmethod=blowfish
endif

Ora apri un nuovo file in questo modo:

$ vim -x secrets.txt

VIM chiederà due volte una password.

Ora puoi aprire il file senza il flag -x e VIM chiederà una password per ogni apertura. Il salvataggio e la modifica funzionano normalmente (bene, normale per VIM).

Non sono a conoscenza di nulla su Android o iOs che sarà in grado di decifrare il file, attenzione. Personalmente utilizzo LastPass per le mie normali password e utilizzo la crittografia VIM per alcuni lavori speciali che devono essere suddivisi in compartimenti.

    
risposta data 24.01.2017 - 10:42
fonte
-2

Non scriverò da solo perché ha i suoi rischi e richiede molto tempo. A meno che tu non voglia semplicemente un progetto.

Quello che ho fatto è stato cercare un gestore di password che rimanga fuori dai riflettori. Quello che ho trovato crea un file di database crittografato che puoi archiviare localmente o in un servizio cloud come Dropbox, ecc. (Questo è bello perché scegli un cloud e non è solo su cui gli hacker del cloud di una società devono concentrarsi). Ha un'app di base che consente di codificare le password e generare password complesse. Potrebbe non avere alcune funzioni interessanti come lastpass o dashline, ma non ha nemmeno un cloud che viene continuamente attaccato.

Scusa non ho intenzione di condividere il nome di quello che uso (tenendolo fuori dai riflettori e tutto), ma fai la tua ricerca e troverai una buona che non è un grande nome e che tu non devi programmarti.

    
risposta data 23.01.2017 - 16:17
fonte

Leggi altre domande sui tag