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.