Como criptografar como SHA256 com o comando GPG corretamente?

0

Eu tenho usado o seguinte comando para criptografia:

gpg --output encrypted.data --symmetric --cipher-algo AES256 un_encrypted.data

e descriptografia:

gpg --output un_encrypted.data --decrypt encrypted.data

Eu queria saber se é seguro fazer assim, só vejo uma referência na Internet para esse comando, aqui , e outros sites o executam sem o comando --cipher-algo AES256 , que usaria o padrão cypher, como este:

gpg --output encrypted.data --symmetric un_encrypted.data

Eu não preciso adicionar um sal, não existe um comando para fornecer sal como o OpenSSL, ou é manipulado pelo software automaticamente?

Além disso, o que acontece se eu executar assim, sem --symmetric :

gpg --output encrypted.data --cipher-algo AES256 un_encrypted.data

Minha pergunta é sobre como executar este comando corretamente para criar um arquivo criptografado SHA256 seguro. Existe alguma diferença entre os comandos acima?

    
por David 05.02.2018 / 02:39

1 resposta

0

Se você estiver usando uma versão estável do gpg, com --cipher-algo AES256 , ela deverá ser criptografada corretamente usando o AES256 (SHA256 é um hash).

Ele escolhe seu próprio sal & A transformação de chaves é rodada automaticamente, assim você não precisa (e não poderia) escolher opções potencialmente fracas. O OpenSSL tem muitas opções, mas seus padrões (especialmente com enc ) podem não ser os mais strongs. Seu Q vinculado realmente faz referência à minha outra resposta sobre OpenSSL vs GPG - basicamente funciona como o gpg, ele já foi testado há décadas, pode ser um grande problema governos, e o comando enc do OpenSSL ainda pode não ter uma opção para uma contagem de iteração (sua página man 1.1.0f de 2017-11-02 ainda lista esse bug).

Adicione algumas opções (múltiplas) -v para ver mais detalhes como o sal (772B0F3B94AD86BA abaixo):

$ gpg -vvvvvvvvv  test.gpg 
gpg: using character set 'utf-8'
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
# off=0 ctb=8c tag=3 hlen=2 plen=13
:symkey enc packet: version 4, cipher 9, s2k 3, hash 2
        salt 772B0F3B94AD86BA, count 9961472 (211)
gpg: AES256 encrypted data
# off=15 ctb=d2 tag=18 hlen=2 plen=0 partial new-ctb
:encrypted data packet:
        length: unknown
        mdc_method: 2
gpg: encrypted with 1 passphrase
# off=36 ctb=a3 tag=8 hlen=1 plen=0 indeterminate
:compressed packet: algo=1
# off=38 ctb=ad tag=11 hlen=3 plen=25420
:literal data packet:
        mode b (62), created 1519523431, name="test",
        raw data: 25405 bytes
gpg: original file name='test'
gpg: decryption okay

Se você omitir --symmetric , o gpg tentará adivinhar o que você quer dizer, se o arquivo não for criptografado por gpg, ele desistirá / falhará:

$ gpg -vvvvvvvvv --cipher-algo AES256 test 
gpg: using character set 'utf-8'
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: no valid OpenPGP data found.
gpg: processing message failed: Unknown system error

Omitir a opção --cipher-algo deve usar "A cifra simétrica padrão usada é AES-128" (como a página man gpg diz sobre essa opção), mas os padrões podem variar por versão ou acredito serem substituídos por suas configurações pessoais. Os algoritmos disponíveis do FYI podem ser listados com a opção --version , como:

Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

Você também não precisa da opção --output , a menos que goste, gpg adicionará & remova uma extensão .gpg conforme necessário.

  • FYI, aqui está um link para RFC2440 descrevendo os elementos de dados usados pelo OpenPGP (pelo menos em 1999, embora eu tenha certeza de que é quase totalmente relevante, especialmente descrições de coisas como String-to-key (s2k) e iterações e sal
por 25.02.2018 / 03:31