Geração de chave GnuPG não assistida para ECC

3

Estou tentando criar um PGP ECC sem supervisão em um script bash. Parece assim:

cat >ecc <<EOF
Key-Type: ECC
Key-Length: 521
Subkey-Type: ECC
Subkey-Length: 521
Name-Real: Test
Passphrase: secret
Expire-Date: 0
%pubring gpg.pub
%secring gpg.sec
%commit
EOF
gpg --batch --yes --no-tty --gen-key ecc

Isso funciona muito bem para chaves RSA, mas para o exemplo acima para ECC, diz:

gpg: key generation failed: Unknown elliptic curve

Como posso especificar a curva elíptica a ser usada?

    
por msrd0 18.12.2016 / 15:53

1 resposta

3

Sou usuário do Fedora, mas me ouça os fãs do Ubuntu. Eu estava lutando com o mesmo problema, então aqui está minha solução que funciona para o Fedora 25 com o GnuPG 2.1.13, e certamente no Ubuntu. É uma modificação da resposta de Thomas. Defina o tipo de chave e o tipo de subchave da seguinte forma (estou usando nistp256, mas use qualquer curva que seu sistema suporte):

  

Tipo de chave: ECDSA
  Curva-chave: nistp256
Comprimento-chave: 256
  Tipo de subchave: ECDH
  Curva de subchave: nistp256
Comprimento da subchave: 256

Se você usar o ECC como tipo de chave e tipo de subchave, o gpg gerará erros como este, e a chave pública será ECDH, não ECDSA.

gpg: erro ao ler o resto do pacote: argumento inválido
gpg: erro lendo o restante do pacote: argumento inválido
gpg: não é possível codificar um MD de 256 bits em um quadro de 72 bits, algo = 8
gpg: não é possível codificar um MD de 256 bits em um frame de 72 bits, algo = 8

Além disso, observe que no GnuPG v2.1 e posterior, as opções % pubring e % secring são ignoradas ( link ) então não use-os.

E, finalmente, verifique isso link é uma boa leitura sobre quais curvas para usar. Na verdade, para mim, v2.1.13 está listando apenas o seguinte, durante o comando manual:

$ gpg2 --expert --full-gen-key
...
(3) NIST P-256
(4) NIST P-384
(5) NIST P-521
    
por upteryx 27.12.2016 / 22:02