Como gerar rapidamente chaves GPG (inseguras)?

7

Gostaria de automatizar a geração de pelo menos duas chaves GPG para fins de teste e demonstração em uma máquina virtual. Devido a esse contexto, quero garantir que a geração de chaves seja rápida, o ideal é não usar ou modificar /dev/*random . Por exemplo, usar o relógio do sistema como a única fonte aleatória seria boa:

$ gpg --quick-gen-key 'alice' [options] --random-data $(date +%s)
$ sleep 2
$ gpg --quick-gen-key 'bob' [options] --random-data $(date +%s)

Não consegui encontrar nenhuma opção como esta. Há -quick-random e --debug-quick-random que não estão no man página, parece ser suportado por gpg , e simplesmente não funcionam. Estes comandos, por exemplo, duraram vários minutos antes de eu os matar:

$ gpg --batch --debug-quick-random --passphrase 'alice' --quick-gen-key '[email protected]'
$ gpg --batch -quick-random --passphrase 'alice' --quick-gen-key '[email protected]'

Usando gpg (GnuPG) 2.1.2.

    
por l0b0 18.02.2015 / 14:06

2 respostas

6

Você pode ter temporariamente /dev/random pull de /dev/urandom usando rng-tools :

# rngd -v -f -r /dev/urandom

Mais informações aqui: link

    
por 18.02.2015 / 15:31
3

Eu tinha exatamente o mesmo requisito ao escrever meu programa de configuração de smart cards . Durante os testes eu não me importaria com a entropia, e eu precisava gerar várias chaves GPG seguidas em cada teste.

Como descrevi na minha resposta aqui , o seguinte script ajudou-me a acelerar:

#!/usr/bin/env python
# For testing purposes only 
# DO NOT USE THIS, THIS DOES NOT PROVIDE ENTROPY TO /dev/random, JUST BYTES

import fcntl
import time
import struct

RNDADDENTROPY=0x40085203

while True:
    random = "3420348024823049823-984230942049832423l4j2l42j"
    t = struct.pack("ii32s", 8, 32, random)
    with open("/dev/random", mode='wb') as fp:
        # as fp has a method fileno(), you can pass it to ioctl
        res = fcntl.ioctl(fp, RNDADDENTROPY, t)
    time.sleep(0.001)
    
por 18.02.2015 / 20:29