É possível usar criptografia simétrica para criptografar um arquivo com duas chaves diferentes?

É possível usar criptografia simétrica para criptografar um arquivo com duas chaves diferentes?

GPG/PGP e outras criptografias de chave pública permitem criptografar vários destinatários usando suas chaves públicas.

É possível usar apenas criptografia simétrica para fazer o mesmo? Em outras palavras, é possível criptografar simetricamente um arquivo com duas chaves diferentes?

A razão da minha pergunta é que a criptografia assimétrica produz arquivos enormes. Se eu enviasse uma mensagem criptografada com chave pública para um smartphone, seria muito grande. Especialmente se tiver sido criptografado para vários destinatários. Um único "Olá" pode ocupar 2 páginas de texto. Por outro lado, a criptografia simétrica é muito rígida.

Responder1

Claro. Basta criptografar o arquivo com uma chave aleatória e depois criptografar essa chave aleatória com as duas chaves simétricas diferentes.

Responder2

As versões atuais do PGP e todo o GnuPG (GPG) implementam o padrão OpenPGP. Usarei apenas o termo OpenPGP abaixo.

OpenPGP usa criptografia de chave pública e simétrica: ao criptografar um documento, alguma chave simétrica aleatória é gerada e criptografada usando a chave pública. O receptor criptografará a chave de criptografia simétrica (cifra de bloco) usando sua chave privada. Como apenas a chave simétrica é criptografada usando a chave pública, a sobrecarga permanece pequena (isso é o que David Schwartz propôs e já está implementado pelo OpenPGP).

Claro, há dois casos em que essa sobrecarga pode aumentar em comparação aos dados criptografados:

  • Muito pouca quantidade de dados; se isso for um problema, você terá que escolher algum método de criptografia com chaves pré-compartilhadas (chaves simétricas)
  • Muitos destinatários; já que a cifra de bloco deve ser criptografada para cada um deles. Se isso for um problema, você terá que compartilhar o segredo (chave privada) entre todos os destinatários.

Você não usará criptografia simétrica e entregará o segredo a cada destinatário (ou fará o mesmo com a chave privada OpenPGP). Se você quiser que todos tenham seu próprio segredo, ninguém mais será capaz de descriptografar sua versão dos dados; então você terá que enviar a todos outra versão desses dados.

Responder3

Na verdade, eu estava 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 faz a criptografia e prosseguir com ela.

Eu escrevi uma ferramenta para fazer exatamente isso:https://github.com/galets/AsimetricCrypt. Você precisará do mono para executá-lo no Linux, mas por outro lado funciona bem e não exige que você armazene a chave criptografada em um arquivo separado.

informação relacionada