web-dev-qa-db-fra.com

Chiffrement du fichier texte avec AES 256 au lieu du gestionnaire de mots de passe

Je commence à avoir une grande liste de mots de passe dont j'ai besoin en toute sécurité. Je regardais des gestionnaires de mots de passe comme LastPass, mais ceux-ci semblent toujours être ciblés par des pirates et ont déjà été compromis.

Vais-je perdre quoi que ce soit en stockant mes mots de passe dans un document texte que je me crypte moi-même en utilisant AES 256? Ensuite, décryptez simplement quand je veux le mot de passe?

19
magna_nz

Compte tenu des compromis que vous mentionnez, pensez-vous que le chiffrement des fichiers vous-même sera facile? Comment savez-vous que vous n'entrerez pas dans les mêmes pièges qui ont entraîné des compromis des gestionnaires de mots de passe?

AES 256 est censé être sécurisé sur le plan informatique. Chaque ordinateur ayant fait fonctionner simultanément la force brute pour forcer la clé, fonctionnant depuis le début des temps, aurait une chance probabiliste négligeable de trouver la clé d'un cryptage.

Cependant: n algorithme sécurisé ne garantit pas une implémentation sécurisée. Pour vous donner un exemple, voici quelques questions que vous devez vous poser:

  • Comment allez-vous vous assurer que deux mots de passe identiques dans votre liste ne sont pas chiffrés en texte chiffré AES identique? (de sorte que si l'adversaire connaît un mot de passe, il saura où il est réutilisé)
  • Êtes-vous sûr que votre liste de mots de passe décryptés ne peut pas être récupérée par un processus allouant RAM après avoir consulté votre liste?
  • Êtes-vous sûr que votre liste de mots de passe déchiffrés ne finira pas par le fichier d'échange?
  • Quels mécanismes de communication utiliserez-vous entre l'utilisateur fournissant le mot de passe principal, le processus de décryptage de la liste de mots de passe et l'application cible qui a besoin d'un mot de passe?

Les gestionnaires de mots de passe sont conçus en tenant compte de ces préoccupations (et peut-être de nombreuses autres). Il est presque impossible de tout faire correctement lorsque vous le faites vous-même la première fois, surtout si vous n'êtes pas un expert en sécurité.

57
Dmitry Grigoryev

Vous perdriez la capacité de générer des mots de passe aléatoires en un seul clic, ce qui pourrait signifier que vous avez tendance à avoir des mots de passe plus faibles par manque de commodité - l'un des avantages des applications de gestion des mots de passe, en ligne ou hors ligne, est la génération de longs chaînes aléatoires.

Cependant, vous gardez la sécurité des mots de passe en sécurité si vous perdez une copie du fichier, en supposant que vous utilisez correctement la méthode de cryptage.

Selon la façon dont vous l'avez fait, vous pouvez introduire un nouveau problème pour la navigation à l'épaule - avec la plupart des gestionnaires de mots de passe, seul le mot de passe que vous souhaitez utiliser est affiché. Si votre fichier texte comprend plusieurs mots de passe, vous pouvez tous les exposer lors de l'affichage d'un mot de passe spécifique. Vous pouvez éviter cela en ayant plusieurs fichiers, ou un seul fichier avec de très grands écarts entre les mots de passe, je suppose.

Vous n'avez probablement pas non plus autant d'assurance que les données décryptées ne sont pas écrites sur le disque - les applications de gestion des mots de passe ont tendance à faire très attention à conserver les mots de passe décryptés en mémoire, mais vous devez vous assurer que votre gestion du décryptage fait la même chose vous-même. .

12
Matthew

Vous pourriez être intéressé par pass .

Avec pass, chaque mot de passe vit à l'intérieur d'un fichier crypté gpg dont le nom de fichier est le titre du site Web ou de la ressource qui requiert le mot de passe. Ces fichiers chiffrés peuvent être organisés en hiérarchies de dossiers significatives, copiés d'un ordinateur à l'autre et, en général, manipulés à l'aide des utilitaires de gestion de fichiers de ligne de commande standard.

pass facilite la gestion de ces fichiers de mots de passe individuels. Tous les mots de passe vivent dans ~/.password-store et pass fournit quelques commandes intéressantes pour ajouter, éditer, générer et récupérer des mots de passe. Il s'agit d'un script Shell très court et simple. Il est capable de placer temporairement des mots de passe dans votre presse-papiers et de suivre les modifications de mot de passe à l'aide de git.

1
Tgr

Vais-je perdre quoi que ce soit en stockant mes mots de passe dans un document texte que je me crypte moi-même en utilisant AES 256?

Pour la sécurité, non. Côté commodité, oui. Cela dépend de la façon dont vous conservez votre mot de passe et de la longueur de la clé. Mais oui, vous pouvez certainement le faire vous-même.

1
thel3l

Dans votre argument, c'est une bonne idée de stocker les mots de passe localement dans votre propre application sans avoir recours à un produit commercial. Parce que vous ne savez pas quelles sont les vulnérabilités de ces produits et combien de pirates ciblent ces applications.

Si vous prévoyez de créer votre propre outil, voici les éléments dont vous devez vous préoccuper.

  • La langue/l'outil que vous allez utiliser et son support cryptographique
  • Comment vous allez sécuriser les clés qui utilisent
  • Quels algorithmes utilisent et quelles sont les longueurs de clés
  • Avons-nous besoin de dépendre d'autres packages/outils tiers en dehors du langage/outil de développement principal
  • Comment vous allez conserver vos données cryptées (fichier texte/DB/ou dans le cloud, etc.)

Si nous prenons le Java comme exemple (je ne sais pas combien vous le connaissez), voici les choses que vous devez considérer.

Aurais-je perdu quoi que ce soit en stockant mes mots de passe dans un document texte

Non, vous ne le feriez pas si vous utilisez le bon algorithme.

AES 256?

Si vous utilisez Java, cela n'est pas possible car des restrictions de taille de clé sont implémentées dans la classe Cipher de Java. Soit vous devez dépendre de la bibliothèque Bouncycastle Cryto, soit utiliser des fichiers JCE de force illimitée . Mais là encore, vous devez vérifier vos lois sur la juridiction avant de l'utiliser si vous prévoyez d'exporter vos données cryptées.

Ma suggestion est d'aller de l'avant avec AES 128 parce que c'est un peu comme la norme de facto dans l'industrie maintenant.

La meilleure façon de sécuriser vos données chiffrées dans votre contexte est d'utiliser le chiffrement d'objet Java en utilisant SealedObjects parce que je pense que c'est une charge supplémentaire d'utiliser une base de données pour stocker vos données chiffrées.

Stockez vos clés dans un magasin Javakey parce que c'est l'un des meilleurs moyens de stocker et de distribuer vos clés de chiffrement.

Vous pouvez créer une application Java qui exclut le mot de passe de votre magasin de clés et effectue le chiffrement et le déchiffrement. Vous pouvez simplement créer une classe comme suit et gérer vos mots de passe. Effectuez une recherche de clé après avoir déchiffré le tableau/liste d'objets.

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;
    }

Vous pouvez enfin chiffrer un objet comme suit.

private List<PasswordStore> passwords;

N'oubliez pas d'utiliser d'autres techniques de programmation sécurisées telles que de ne pas stocker votre mot de passe dans des variables de chaîne car les chaînes sont immuables et vulnérables aux attaques de détournement de mémoire.

1
user3496510

Bien que je sois d'accord avec le sentiment général selon lequel un gestionnaire de mots de passe conçu pour la tâche est le meilleur, je vais me lancer et proposer que, dans certains cas d'utilisation, un fichier texte crypté fonctionne correctement. Vous devrez vous assurer que les données non chiffrées ne sont jamais écrites sur le disque, la meilleure façon que j'ai trouvée est d'avoir l'éditeur de texte chiffrer et déchiffrer le fichier de manière transparente.

J'utilise VIM dans ce but. Dans VIM 7.4 ajoutez ce qui suit à votre ~/.vimrc fichier:

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

Ouvrez maintenant un nouveau fichier en tant que tel:

$ vim -x secrets.txt

VIM demandera deux fois un mot de passe.

Vous pouvez maintenant ouvrir le fichier sans le -x flag et VIM demandera un mot de passe à chaque ouverture. L'enregistrement et l'édition fonctionnent normalement (enfin, normal pour VIM).

Je ne suis au courant de rien sur Android ou iOs qui pourront décrypter le fichier, attention. J'utilise personnellement LastPass pour mes mots de passe normaux et j'utilise VIM cryptage pour certains travaux spécialisés qui doivent être compartimentés.

0
dotancohen