Поколение пары ключей RSA 2048 года: через openssl 0,5 с через gpg 30-е, почему различие?

Существует много ответов, объясняющих это . ~/bin/script.sh эквивалентно source ~/bin/script.sh. Вот объяснение почему.

У меня есть несколько кластеров, которые я использую для тестирования, и я использую переменные среды для указания им. Обычно, когда Вы запускаете скрипт, любой набор переменных в нем остаются в пределах того сценария. В примере:

$ echo $MYFIELD #Nothing set

$ cat test.sh
export MYFIELD=foo #This would set it
$ ./test.sh
$ echo $MYFIELD #Didn't work because the script didn't carry it back to its parent

$ . ./test.sh
$ echo $MYFIELD #When run as a sourced script, this stayed in the context of my current shell
foo

Таким образом я могу ввести . ~/env/cluster7 и затем выполненный любые команды, которые я хочу на том кластере, затем вводят . ~/env/cluster3 изменить все мои переменные среды для указания на другой, не имея необходимость вручную устанавливать их.

Заметьте, что"." в начале строки, сопровождаемой пространством, интерпретируется как команда. Это в порядке, потому что Вы никогда не выполняли бы единственный файл, который можно назвать тем путем: текущий каталог. В любом другом контексте, тем не менее, такой как без следующего пространства или в любой точке позже в командной строке, это относится к пути, следовательно . ./test.sh. Так как это считает командой удар, . test.sh также работы.

9
12.01.2020, 13:05
2 ответа
GnuPG потребляет несколько байтов из [11915]/dev/random [11916] для каждого случайного байта, который он фактически использует. Вы можете легко проверить это командой:[12153]Для вывода 16 байт высококачественной энтропии GnuPG считывает 300 байт из [11917]/dev/random[11918].[12154]Это объясняется здесь: [11919]Архитектура случайно-числовой подсистемы[12155]Linux хранит максимум 4096 байт (см. [11921]cat /proc/sys/kernel/random/poolsize[11922]) энтропии. Если процесс требует больше, чем доступно (см. [11923]cat /proc/sys/kernel/random/entropy_avail[11924]), то использование процессора становится более или менее релевантным по мере того, как скорость подачи энтропийного пула ядра становится релевантным фактором..
10
27.01.2020, 20:05

Ваше предположение, что это различие связано с тем, что openssl использует / dev / urandom, а gpg использует / dev / random верен.

Вы можете наблюдать за уменьшением доступной энтропии при генерации ключей с помощью gpg , используя:

watch -n 1 cat /proc/sys/kernel/random/entropy_avail

Я использовал программу для генерации описания шагов для настройки смарт-карты OpenGPG с помощью gpg , поэтому мне пришлось запускать gpg несколько раз, пока все не сработало так, как задумано. После первых запусков я заметил, что / dev / random не будет иметь достаточной энтропии, и gpg просто остановится в ожидании накопления новой энтропии.

Я написал небольшую программу для предоставления дополнительных неслучайных данных, и при этом gpg не «останавливался», а генерировал ключи почти сразу: это удобно для проверки правильности работы скрипта, но конечно, это не то, что вы должны делать при генерации настоящих ключей.

Программа для ускорения gpg ( не используется в реальных ситуациях ):

# For testing purposes only 
# DO NOT USE THIS, tHIS DOES NOT PROVIDE ENTROPY TO /dev/random

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)

Когда я запускаю это во время просмотра entropy_avail , я вижу доступная энтропия возрастает до более чем 3800.

7
27.01.2020, 20:05

Теги

Похожие вопросы