En su opinión, es una buena idea almacenar las contraseñas localmente en su propia aplicación sin tener que buscar un producto comercial. Porque no sabe cuáles son las vulnerabilidades existentes en esos productos y cuántos piratas informáticos están atacando esas aplicaciones.
Si va a construir su propia herramienta, las siguientes son las cosas que debe considerar.
- El idioma / herramienta que va a usar y su soporte criptográfico
- Cómo va a proteger las claves que están usando
- ¿Qué algoritmos están utilizando y cuáles son las longitudes de las claves?
- ¿Necesitamos depender de otros paquetes / herramientas de terceros aparte del lenguaje / herramienta de desarrollo principal?
- Cómo va a conservar sus datos cifrados (archivo de texto / DB / o en la nube, etc.)
Si tomamos Java como ejemplo (no sé cuánto está familiarizado con él), las siguientes son las cosas que debe considerar.
¿Perdería algo al almacenar mis contraseñas en un documento de texto?
No. No lo haría si está utilizando el algoritmo correcto.
AES 256?
Si está utilizando Java, esto no es posible porque las restricciones de tamaño de clave se implementan en la clase de cifrado de Java. O necesita depender de la biblioteca Cryto Bouncycastle o usar JCE de fuerza ilimitada . Pero, una vez más, debe consultar su Leyes de jurisdicción antes de usar esto si está planeando exportar sus datos cifrados.
Mi sugerencia es seguir adelante con AES 128 porque es como un estándar de facto en la industria ahora.
La mejor manera de proteger sus datos encriptados en su contexto es usar Java's cifrado de objetos utilizando SealedObjects porque creo que es una carga adicional utilizar una base de datos para almacenar sus datos cifrados.
Almacene sus claves en una tienda Javakey porque es una De las mejores maneras de almacenar y distribuir sus claves de cifrado.
Puede crear una aplicación Java que exceptúe la contraseña de su almacén de claves y realice el cifrado y descifrado. Simplemente puede crear una clase como sigue y administrar sus contraseñas. Haga una búsqueda clave después de descifrar la matriz / lista de objetos.
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 puedes cifrar un objeto de la siguiente manera.
private List<PasswordStore> passwords;
Recuerde usar otras técnicas de programación seguras, como no almacenar su contraseña en variables de cadena, ya que las cadenas son inmutables y vulnerables al ataque de secuestro de memoria.