Je pense que votre exigence est valide, mais d'un autre côté, elle est également difficile, car vous mélangez le chiffrement symétrique et asymétrique. Corrigez-moi si j'ai tort, s'il-vous plait.
Raisonnement:
- La phrase secrète de votre clé privée est de protéger votre clé privée et rien d'autre.
- Cela conduit à la situation suivante: Vous souhaitez utiliser votre clé privée pour crypter quelque chose que vous seul pouvez décrypter. Votre clé privée n'est pas destinée à cela, votre clé publique est là pour le faire. Tout ce que vous cryptez avec votre clé privée peut être décrypté par votre clé publique (signature), ce n'est certainement pas ce que vous voulez. (Tout ce qui est chiffré par votre clé publique ne peut être déchiffré que par votre clé privée.)
- Vous devez donc utiliser votre clé publique pour crypter vos données, mais pour cela, vous n'avez pas besoin de votre phrase secrète de clé privée pour cela. Seulement si vous voulez le décrypter, vous aurez besoin de votre clé privée et de la phrase secrète.
Conclusion: Fondamentalement, vous souhaitez réutiliser votre phrase secrète pour le chiffrement symétrique. Le seul programme que vous voudriez donner à votre phrase secrète est ssh-agent et ce programme ne fait pas de chiffrement / déchiffrement uniquement avec la phrase secrète. La phrase secrète n'est là que pour déverrouiller votre clé privée et ensuite oubliée.
Recommandation: utilisez openssl enc
ou gpg -e --symmetric
avec des fichiers de clés protégés par mot de passe pour le chiffrement. Si vous devez partager les informations, vous pouvez utiliser l'infrastructure de clé publique des deux programmes pour créer une PKI / Web of Trust.
Avec openssl, quelque chose comme ceci:
$ openssl enc -aes-256-ctr -in my.pdf -out mydata.enc
et quelque chose comme le décryptage
$ openssl enc -aes-256-ctr -d -in mydata.enc -out mydecrypted.pdf
Mise à jour: Il est important de noter que les commandes openssl ci-dessus n'empêchent pas les données d'être altérées. Un simple retournement de bit dans le fichier enc entraînera également des données déchiffrées corrompues. Les commandes ci-dessus ne peuvent pas le détecter, vous devez le vérifier par exemple avec une bonne somme de contrôle comme SHA-256. Il existe des moyens cryptographiques pour le faire de manière intégrée, c'est ce qu'on appelle un HMAC (Hash-based Message Authentication Code).
"gpg -e something"
mais pour des cas différents?$ gpg -e --symmetric
?openssl enc -aes-256-cbc -in my.pdf -out mydata.enc
:, décrypter avec: lesopenssl enc -aes-256-cbc -d -in mydata.enc -out mydecrypted.pdf
deux commandes demandent le mot de passe. Voirman enc
(sur rh / fedora / centos) pour toutes les options comme les fichiers de clés, l'encodage base64, etc.Je préférerais utiliser l'
openssl
utilitaire car il semble être assez omniprésent.Convertissez la clé publique et la clé privée RSA au format PEM:
Chiffrement d'un fichier avec votre clé publique:
Déchiffrer le fichier avec votre clé privée:
Mais, comme Gilles l'a commenté ci-dessus, cela ne convient que pour crypter des fichiers plus petits que votre clé publique, vous pouvez donc faire quelque chose comme ceci:
Générez un mot de passe, cryptez le fichier avec lui de manière symétrique et cryptez le mot de passe avec votre public, en l'enregistrant dans le fichier:
Déchiffrez la phrase secrète avec votre clé privée et utilisez-la pour déchiffrer le fichier:
Vous vous retrouverez avec deux fichiers, votre fichier crypté et votre phrase secrète cryptée, mais mis dans un script, cela fonctionnerait bien.
Vous pouvez même ajouter un
tar cvf file file.enc file.enc.key
pour ranger.De manière optimale, vous maximiseriez la taille de votre phrase secrète tout en changeant
rand 64
la taille de votre clé publique.la source
KEYLEN_BYTES=$(ssh-keygen -l -f $PRIV_KEY | awk '{printf("%d", ($1 - 96) / 8)}')
pour autogénérer une longueur de clé. Étant donné que ssh-keygen a une longueur de clé minimale de 768 bits, cela conduit toujours à une clé symétrique minimale de 672 bits, ou 84 octets.Regardez luks / dm-crypt . Vous pouvez utiliser votre clé privée ssh comme clé de chiffrement en utilisant l'option appropriée.
Mise à jour: exemple de chiffrement à l'aide de LUKS avec un périphérique LV-block (test LV dans le système VG):
Cela devrait générer un bloc-périphérique / dev / mapper / test_crypt sur lequel vous pouvez utiliser pour stocker vos données (après les avoir formatées avec un système de fichiers de votre choix).
Pour vous en débarrasser, démontez-le et utilisez
cryptsetup luksClose test_crypt
.la source
"$ sudo apt-get install cryptmount crypt-setup; cat '...' > bin/myEncrypt.sh; chmod +x bin/myEncrypt.sh; ./bin/myEncrypt.sh; ...; ..."
Si je comprends bien, cette méthode est un chiffrement au niveau du système de fichiers. Il crypte les fs dont vous avez besoin umount / mount ou suis-je mal lu?--key-file
option de cryptsetup utilise le contenu réel du fichier comme un grand mot de passe. Il ne lit pas la clé openssl du fichier et l'utilise simplement. Vous pouvez utiliser un fichier d'octets aléatoires pour le--key-file
si vous le souhaitez.--key-file
est vraiment un nom mal choisi pour l'option, ça devrait l'être--password-file