Cifrado de archivos de texto con AES 256 en lugar de administrador de contraseñas

18

Estoy empezando a tener una gran lista de contraseñas que necesito almacenar de forma segura. Estaba buscando gestores de contraseñas como LastPass, pero parece que estos siempre han sido atacados por piratas informáticos y han sido comprometidos anteriormente.

¿Perdería algo al almacenar mis contraseñas en un documento de texto que me cifré usando AES 256? Entonces simplemente descifrar cuando quiero la contraseña?

    
pregunta magna_nz 23.01.2017 - 10:42
fuente

7 respuestas

57

Teniendo en cuenta los compromisos que mencionas, ¿crees que cifrar los archivos por ti mismo será fácil? ¿Cómo sabe que no se enfrentará a los mismos escollos que dieron lugar a compromisos de los administradores de contraseñas?

Se cree que AES 256 es computacionalmente seguro. Cada computadora que haya funcionado simultáneamente para aplicar la fuerza bruta a la clave, funcionando desde el principio de los tiempos, tendría una probabilidad probabilísticamente insignificante de encontrar la clave para un cifrado.

Sin embargo, un algoritmo seguro no garantiza una implementación segura . Solo para darle un ejemplo, aquí hay algunas preguntas que debe hacerse:

  • ¿Cómo se asegurará de que dos contraseñas idénticas en su lista no estén cifradas a texto cifrado AES idéntico? (de modo que si el adversario conoce una contraseña, sabrá dónde se reutiliza)
  • ¿Está seguro de que su proceso de asignación de RAM no puede recuperar su lista de contraseñas descifradas después de haber consultado su lista?
  • ¿Está seguro de que su lista de contraseñas desencriptadas no terminará en el archivo de intercambio?
  • ¿Qué mecanismos de comunicación utilizará entre el usuario que proporciona la contraseña maestra, el proceso de descifrado de la lista de contraseñas y la aplicación de destino que necesita una contraseña?

Los administradores de contraseñas están diseñados con esas preocupaciones (y quizás muchas otras) en mente. Es casi imposible hacer las cosas bien cuando lo haces tú mismo la primera vez, especialmente si no eres un experto en seguridad.

    
respondido por el Dmitry Grigoryev 23.01.2017 - 14:02
fuente
12

Perdería la capacidad de generar contraseñas aleatorias con el clic de un botón, lo que podría significar que tiende a tener contraseñas más débiles debido a la falta de conveniencia: uno de los beneficios de las aplicaciones de administración de contraseñas, ya sea en línea o fuera de línea, es el Generación de cadenas aleatorias largas.

Sin embargo, mantendría la seguridad de las contraseñas seguras si pierde una copia del archivo, suponiendo que utilice el método de cifrado correctamente.

Dependiendo de cómo lo hizo, podría presentar un nuevo problema para la navegación por los hombros: con la mayoría de los administradores de contraseñas, solo se muestra la contraseña que desea usar. Si su archivo de texto incluye varias contraseñas, puede exponerlas todas al ver una específica. Se podría evitar al tener varios archivos, o un solo archivo con espacios realmente grandes entre las contraseñas, supongo.

Es probable que también no tenga tanta seguridad de que los datos descifrados no se escriban en el disco; las aplicaciones del administrador de contraseñas tienden a ser muy cuidadosas para mantener las contraseñas descifradas en la memoria, pero debe asegurarse de que su manejo descifrado tú mismo.

    
respondido por el Matthew 23.01.2017 - 11:09
fuente
1
  

¿Perdería algo al almacenar mis contraseñas en un documento de texto que me cifro utilizando AES 256?

Seguridad sabia, no. Conveniencia sabia, sí. Depende de cómo mantenga su contraseña almacenada y de la longitud de la clave. Pero sí, definitivamente podrías hacerlo tú mismo.

    
respondido por el thel3l 23.01.2017 - 10:59
fuente
1

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.

    
respondido por el user3496510 23.01.2017 - 11:27
fuente
1

Puede que estés interesado en pass .

  

Con pass , cada contraseña vive dentro de un archivo cifrado en gpg cuyo nombre de archivo es el título del sitio web o recurso que requiere la contraseña. Estos archivos cifrados pueden organizarse en jerarquías de carpetas significativas, copiarse de una computadora a otra y, en general, manipularse utilizando las utilidades estándar de administración de archivos de la línea de comandos.

     

pass hace que la administración de estos archivos de contraseña individuales sea extremadamente fácil. Todas las contraseñas viven en ~/.password-store , y pass proporciona algunos comandos agradables para agregar, editar, generar y recuperar contraseñas. Es un script de shell muy corto y sencillo. Es capaz de poner temporalmente contraseñas en su portapapeles y rastrear los cambios de contraseña usando git .

    
respondido por el Tgr 25.01.2017 - 09:31
fuente
0

Aunque estoy de acuerdo con la opinión general de que un administrador de contraseñas diseñado para la tarea es el mejor, me arriesgaré y propondré que para algunos casos de uso, un archivo de texto cifrado funciona bien. Deberá asegurarse de que los datos sin cifrar nunca se escriban en el disco, la mejor manera que he encontrado es hacer que el editor de texto cifre y descifre el archivo de forma transparente.

Yo uso VIM para el propósito. En VIM 7.4 agregue lo siguiente a su archivo ~/.vimrc :

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

Ahora abre un nuevo archivo como tal:

$ vim -x secrets.txt

VIM le pedirá una contraseña dos veces.

Ahora puede abrir el archivo sin el indicador -x y VIM le pedirá una contraseña en cada apertura. El guardado y la edición funcionan normalmente (bueno, normal para VIM).

No tengo conocimiento de nada en Android o iOs que pueda descifrar el archivo. Personalmente uso LastPass para mis contraseñas normales y uso el cifrado VIM para algunos trabajos especializados que necesitan ser compartimentados.

    
respondido por el dotancohen 24.01.2017 - 10:42
fuente
-2

No escribiría el tuyo porque tiene sus propios riesgos y lleva mucho tiempo. A menos que solo quieras un proyecto.

Lo que hice fue buscar un administrador de contraseñas que permanezca fuera del centro de atención. El que encontré crea un archivo de base de datos cifrado que puede almacenar localmente o en un servicio en la nube como Dropbox, etc. (Esto es bueno porque usted elige una nube y no es solo para los hackers en la nube de una empresa). Tiene una aplicación básica que le permite etiquetar contraseñas y generar contraseñas seguras. Puede que no tenga algunas de las características interesantes, como lastpass o dashlane, pero tampoco tiene una nube que sea atacada continuamente.

Lo siento, no voy a compartir el nombre del que uso (manteniéndolo fuera del foco de atención y todo), pero investigue y encontrará uno que no es un nombre importante y que usted no tienes que programarte tú mismo.

    
respondido por el njm5785 23.01.2017 - 16:17
fuente

Lea otras preguntas en las etiquetas