如何快速生成(不安全的)GPG密钥?

如何快速生成(不安全的)GPG密钥?

我想自动生成至少两个 GPG 密钥,以便在虚拟机中进行测试和演示。由于这种背景,我想确保密钥生成速度快,最好/dev/*random根本不使用或修改。例如,使用系统时钟作为唯一的随机源就可以了:

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

我还没有找到任何像这样的选项。有-quick-random--debug-quick-random页面中没有的内容man,似乎受gpg, 和支持只是不工作。例如,这些命令在我杀死它们之前运行了几分钟:

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

使用gpg(GnuPG) 2.1.2。

答案1

您可以暂时使用/dev/random以下命令:/dev/urandomrng-tools

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

更多信息请点击这里:https://madebits.github.io/#blog/2014/2014-05-30-Making-dev-random-Temporary-Faster.md

答案2

我在写我的文章时有完全相同的要求智能卡设置程序。在测试过程中,我不会关心熵,并且每次测试时我需要连续生成多个 GPG 密钥。

正如我在回答中所描述的这里以下脚本帮助我加快了速度:

#!/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)

相关内容