Claro. Basta criptografar o arquivo com uma chave aleatória e criptografar essa chave aleatória com as duas chaves simétricas diferentes.
O GPG / PGP e outras criptografias de chave pública permitem criptografar vários destinatários usando suas chaves públicas.
É possível usar somente criptografia simétrica para fazer o mesmo? Em outras palavras, é possível criptografar simetricamente um arquivo com duas chaves diferentes?
O motivo da minha pergunta é que a criptografia assimétrica produz arquivos enormes. Se eu fosse enviar uma mensagem criptografada de chave pública para um telefone inteligente, seria muito grande. Especialmente se foi criptografado para vários destinatários. Um único "Olá" pode levar 2 páginas de texto. Por outro lado, a criptografia simétrica é muito restrita.
Claro. Basta criptografar o arquivo com uma chave aleatória e criptografar essa chave aleatória com as duas chaves simétricas diferentes.
As versões atuais do PGP e todo o GnuPG (GPG) implementam o padrão OpenPGP. Eu só usarei o termo OpenPGP abaixo.
O OpenPGP usa criptografia de chave pública e simétrica: ao criptografar um documento, uma chave simétrica aleatória é gerada e criptografada usando a chave pública. O receptor irá criptografar a chave de criptografia simétrica (cifra de bloco) usando sua chave privada. Como somente a chave simétrica é criptografada usando a chave pública, a sobrecarga permanece pequena (isso é o que David Schwartz propôs e já é implementado pelo OpenPGP).
Naturalmente, há dois casos em que essa sobrecarga pode ficar grande em comparação com os dados criptografados:
Você não conseguirá se locomover usando criptografia simétrica e entregando o segredo a todos os destinatários (ou faça o mesmo com a chave particular do OpenPGP). Se você quer que todos tenham seu próprio segredo, ninguém mais poderá descriptografar sua versão dos dados; então você terá que enviar a todos uma outra versão desses dados.
Eu estava realmente procurando resolver o mesmo problema. O problema com o gpg é que você precisa carregar muita bagagem com ele - armazenamento de chaves, etc. Às vezes, você só quer criar um par de chaves, colocar a chave pública na máquina que criptografa e seguir com ela.
Eu escrevi uma ferramenta para fazer exatamente isso: link . Você precisará do mono para executá-lo no linux, mas caso contrário ele funcionará bem e não exigirá que você armazene a chave criptografada em um arquivo separado.
Tags gnupg encryption pgp