Creo que su requisito es válido, pero por otro lado también es difícil, porque está mezclando cifrado simétrico y asimétrico. Por favor corrígeme si estoy equivocado.
Razonamiento:
- La frase de contraseña para su clave privada es proteger su clave privada y nada más.
- Esto lleva a la siguiente situación: desea utilizar su clave privada para cifrar algo que solo usted puede descifrar. Su clave privada no está destinada a eso, su clave pública está ahí para hacer eso. Lo que cifre con su clave privada puede ser descifrado por su clave pública (firma), eso ciertamente no es lo que desea. (Lo que se cifre con su clave pública solo se puede descifrar con su clave privada).
- Por lo tanto, debe usar su clave pública para cifrar sus datos, pero para eso, no necesita su frase de contraseña de clave privada para eso. Solo si desea descifrarlo necesitaría su clave privada y la frase de contraseña.
Conclusión: Básicamente, desea reutilizar su frase de contraseña para el cifrado simétrico. El único programa que le gustaría dar a su frase de contraseña es ssh-agent y este programa no hace cifrado / descifrado solo con la frase de contraseña. La frase de contraseña solo está ahí para desbloquear su clave privada y luego olvidarse.
Recomendación: Use openssl enc
o gpg -e --symmetric
con archivos de clave protegidos con frase de contraseña para el cifrado. Si necesita compartir la información, puede utilizar la infraestructura de clave pública de ambos programas para crear una PKI / Web of Trust.
Con openssl, algo como esto:
$ openssl enc -aes-256-ctr -in my.pdf -out mydata.enc
y descifrar algo como
$ openssl enc -aes-256-ctr -d -in mydata.enc -out mydecrypted.pdf
Actualización: es importante tener en cuenta que los comandos openssl anteriores NO evitan que se alteren los datos. Un simple cambio de bit en el archivo enc también dará como resultado datos descifrados corruptos. Los comandos anteriores no pueden detectar esto, debe verificar esto, por ejemplo, con una buena suma de verificación como SHA-256. Hay formas criptográficas de hacer esto de manera integrada, esto se llama HMAC (Código de autenticación de mensajes basado en hash).
"gpg -e something"
pero para diferentes casos?$ gpg -e --symmetric
?openssl enc -aes-256-cbc -in my.pdf -out mydata.enc
descifrar con:openssl enc -aes-256-cbc -d -in mydata.enc -out mydecrypted.pdf
ambos comandos solicitan la contraseña. Verman enc
(en rh / Fedora / CentOS) para todas las opciones como keyfiles, codificación base64, etc.Preferiría usar la
openssl
utilidad, ya que parece ser bastante ubicua.Convierta la clave pública RSA y la clave privada al formato PEM:
Cifrar un archivo con su clave pública:
Descifrar el archivo con su clave privada:
Pero, como Gilles comentó anteriormente, esto solo es adecuado para encriptar archivos más pequeños que su clave pública, por lo que podría hacer algo como esto:
Genere una contraseña, cifre el archivo con ella simétricamente y cifre la contraseña con su público, la clave la guarda en el archivo:
Descifre la frase de contraseña con su clave privada y úsela para descifrar el archivo:
Terminarás con dos archivos, tu archivo encriptado y tu frase de contraseña encriptada, pero si lo pones en un script, funcionaría bien.
Incluso podría agregar una
tar cvf file file.enc file.enc.key
para ordenar.De manera óptima, maximizaría el tamaño de su frase de contraseña y cambiaría
rand 64
el tamaño de su clave pública.fuente
KEYLEN_BYTES=$(ssh-keygen -l -f $PRIV_KEY | awk '{printf("%d", ($1 - 96) / 8)}')
autogen una longitud de clave. Dado que ssh-keygen tiene una longitud de keyle mínima de 768 bits, esto todavía conduce a una clave simétrica mínima de 672 bits, o 84 bytes.Mira luks / dm-crypt . Puede usar su clave privada ssh como clave de cifrado utilizando la opción adecuada.
Actualización: Ejemplo de encriptación usando LUKS con un dispositivo LV-block (prueba LV en sistema VG):
Esto debería generar un dispositivo de bloque / dev / mapper / test_crypt que puede usar para almacenar sus datos (después de formatearlo con un sistema de archivos de su elección).
Para deshacerse de él, desmóntelo y úselo
cryptsetup luksClose test_crypt
.fuente
"$ sudo apt-get install cryptmount crypt-setup; cat '...' > bin/myEncrypt.sh; chmod +x bin/myEncrypt.sh; ./bin/myEncrypt.sh; ...; ..."
Si puedo entender bien, este método es un cifrado a nivel de sistema de archivos. Cifra los fs que necesita para montar / montar o ¿estoy leyendo esto mal?--key-file
opción de cryptsetup usa el contenido real del archivo como una contraseña grande. No lee la clave openssl del archivo y solo la usa. Puede usar un archivo de bytes aleatorios para el--key-file
si lo desea.--key-file
es realmente un nombre mal elegido para la opción, debería serlo--password-file