Acho que seu requisito é válido, mas, por outro lado, também é difícil, porque você está misturando criptografia simétrica e assimétrica. Por favor me corrija se eu estiver errado.
Raciocínio:
- A senha da sua chave privada é para protegê-la e nada mais.
- Isso leva à seguinte situação: Você deseja usar sua chave privada para criptografar algo que somente você pode descriptografar. Sua chave privada não se destina a isso, sua chave pública está lá para fazer isso. Tudo o que você criptografa com sua chave privada pode ser descriptografado por sua chave pública (assinatura), certamente não é o que você deseja. (O que for criptografado por sua chave pública só pode ser descriptografado por sua chave privada.)
- Portanto, você precisa usar sua chave pública para criptografar seus dados, mas para isso, não precisa da sua senha de chave privada para isso. Somente se você quiser descriptografá-lo, precisará da sua chave privada e da senha.
Conclusão: Basicamente, você deseja reutilizar sua senha para criptografia simétrica. O único programa que você deseja fornecer à sua senha é ssh-agent e esse programa não executa criptografia / descriptografia apenas com a senha. A senha está lá apenas para desbloquear sua chave privada e depois esquecida.
Recomendação: Use openssl enc
ou gpg -e --symmetric
com arquivos de chave protegidos por senha para criptografia. Se você precisar compartilhar as informações, poderá usar a infra-estrutura de chave pública de ambos os programas para criar uma PKI / Web of Trust.
Com o openssl, algo como isto:
$ openssl enc -aes-256-ctr -in my.pdf -out mydata.enc
e descriptografia algo como
$ openssl enc -aes-256-ctr -d -in mydata.enc -out mydecrypted.pdf
Atualização: É importante observar que os comandos openssl acima NÃO impedem que os dados sejam violados. Um simples toque no arquivo enc resultará em dados descriptografados corrompidos também. Os comandos acima não podem ser detectados, é necessário verificar isso, por exemplo, com uma boa soma de verificação como SHA-256. Existem maneiras criptográficas de fazer isso de forma integrada, isso é chamado de HMAC (Código de autenticação de mensagens baseado em Hash).
"gpg -e something"
casos diferentes?$ gpg -e --symmetric
?openssl enc -aes-256-cbc -in my.pdf -out mydata.enc
:, descriptografar com:openssl enc -aes-256-cbc -d -in mydata.enc -out mydecrypted.pdf
ambos os comandos solicitam a senha. Vejaman enc
(em rh / fedora / centos) todas as opções como arquivos-chave, codificação base64 etc.Eu preferiria usar o
openssl
utilitário, pois parece bastante onipresente.Converta a chave pública e a chave RSA no formato PEM:
Criptografando um arquivo com sua chave pública:
Descriptografando o arquivo com sua chave privada:
Mas, como Gilles comentou acima, isso é adequado apenas para criptografar arquivos menores que sua chave pública, então você pode fazer algo assim:
Gere uma senha, criptografar o arquivo simetricamente e criptografar a senha com o seu público, salvando a chave em arquivo:
Descriptografe a senha com sua chave privada e use-a para descriptografar o arquivo:
Você terminará com dois arquivos, seu arquivo criptografado e sua senha criptografada, mas, em um script, ele funcionará bem.
Você pode até adicionar um
tar cvf file file.enc file.enc.key
para arrumar.Idealmente, você maximizaria o tamanho da sua senha e mudaria
rand 64
para o tamanho da sua chave pública.fonte
KEYLEN_BYTES=$(ssh-keygen -l -f $PRIV_KEY | awk '{printf("%d", ($1 - 96) / 8)}')
para gerar automaticamente um tamanho de chave. Dado que o ssh-keygen tem um comprimento de chave mínimo de 768 bits, isso ainda leva a uma chave simétrica mínima de 672 bits, ou 84 bytes.Veja luks / dm-crypt . Você pode usar sua chave ssh-private-key como chave de criptografia, usando a opção apropriada.
Atualização: Exemplo de criptografia usando LUKS com um dispositivo de bloco LV (teste LV no sistema VG):
Isso deve gerar um dispositivo de bloco / dev / mapper / test_crypt no qual você pode armazenar seus dados (após formatá-los com um sistema de arquivos de sua escolha).
Para se livrar dele, desmonte e use
cryptsetup luksClose test_crypt
.fonte
"$ sudo apt-get install cryptmount crypt-setup; cat '...' > bin/myEncrypt.sh; chmod +x bin/myEncrypt.sh; ./bin/myEncrypt.sh; ...; ..."
Se eu entendi direito, esse método é uma criptografia no nível do sistema de arquivos. Ele criptografa o fs que você precisa montar / montar ou estou interpretando mal isso?--key-file
opção cryptsetup usa o conteúdo real do arquivo como uma senha grande. Ele não lê a chave openssl do arquivo e apenas a usa. Você pode usar um arquivo de bytes aleatórios para o--key-file
que desejar.--key-file
é realmente um nome mal escolhido para a opção, deve ser--password-file