Подтвердить что ты не робот

Предел бит GnuPG 4096 бит

Почему ключи RSA в GnuPG ограничены 4096 битами?

Было ли незаконным изменять источник, чтобы увеличить максимальный размер?

ssh-keygen не имеет этого ограничения (например, я могу создать ключ длиной 32768 бит). Почему это?

4b9b3361

Ответ 1

Существует довольно разумное объяснение (для аналогичного вопроса) Fire Ant на форумах безопасности:

http://www.security-forums.com/viewtopic.php?p=317962#317962

Все права защищены, но справедливое использование цитаты короткой выдержки не должно быть неуместным.

Размеры ключей более 4096 в настоящее время не поддерживаются в GPG. Причиной этого является то, что 8192 клавиши очень медленные. Если вам нужен ключ размером более 4096 бит, то вы действительно должны знать, для чего вы используете этот ключ?

Ответ 2

В keylength.com есть следующее: -

Чтобы защитить 256-битный симметричный ключ (например, AES-256), вы можете использовать как минимум 17120-разрядную асимметричную систему (например, RSA).

Ограничение в 4096 бит может быть поднято, как описано в короткой статье под названием "" Сгенерировать большие ключи с помощью GnuPG ", воспроизведенный ниже. Это было сделано для пакета gnupg в homebrew, позволяющего использовать ключи с 8192 бит: PR 4201. Предупреждение о распределении памяти для больших ключей: comp.security.pgp.tech.

Создание больших ключей с помощью GnuPG | Дэвид Норман

Если вы хотите генерировать более крупные ключи, чем 4096 бит с помощью GnuPG, вы можете скомпилировать новая версия, которая увеличивает верхний предел 4096. Вы, вероятно, найдете самостоятельно генерируя его как RSA. Загрузите патч на свой gnupg-1.4.19 и примените его с помощью:

[email protected]:~/gnupg-1.4.19$ patch -p0 < gnupg_1.4.19_large_keygen.patch
patching file g10/keygen.c
[email protected]:~/gnupg-1.4.19$ ./configure --enable-large-secmem
[...]
checking whether to allocate extra secure memory... yes
[...]
[email protected]:~/gnupg-1.4.19$ make -j2
[email protected]:~/gnupg-1.4.19$ make check
[email protected]:~/gnupg-1.4.19$ sudo make install
[email protected]:~/gnupg-1.4.19$ gpg --gen-key --enable-large-rsa

Без флага --enable-large-rsa процесс генерации ключей будет автоматически переведите ключ на 4096.

Для компиляции на Mac вам нужно сначала загрузить Xcode из App Store. патч увеличивает верхний предел размера ключа до 15489 бит. Без увеличивая ограничение защищенной памяти, генерируя ключ, превышающий примерно 7680 бит будет терпеть неудачу, потому что он не сможет выделить достаточное количество памяти для процесса. Генерирование ключей размером более 7680 бит (192-битный симметричный эквивалент) может также делают невозможным дешифрование сообщений со стандартными ограничениями защищенной памяти установить во время компиляции, потому что двоичный файл gpg не сможет выделить достаточно защищенная память для дешифрования сообщения, даже небольших.

gnupg_1.4.19_xlarge_key_gen.patch

--- g10/keygen.c    2015-02-26 12:24:21.000000000 -0500
+++ g10/keygen.c    2015-03-02 22:12:09.028419377 -0500
@@ -1041,8 +1041,9 @@
        nbits = 2048;
        log_info(_("keysize invalid; using %u bits\n"), nbits );
     }
-    else if (nbits > 4096) {
-        nbits = 4096;
+    else if (nbits > 15489) {
+        /* fallback to RFC3766 256-bit symmetric equivalency */
+        nbits = 15489;
         log_info(_("keysize invalid; using %u bits\n"), nbits );
     }

@@ -1251,7 +1252,8 @@
     PKT_public_key *pk;
     MPI skey[6];
     MPI *factors;
-    const unsigned maxsize = (opt.flags.large_rsa ? 8192 : 4096);
+    /* New large key limit RFC3766 256-bit symmetric equivalency */
+    const unsigned maxsize = (opt.flags.large_rsa ? 15489 : 4096);

     assert( is_RSA(algo) );

@@ -1578,7 +1580,7 @@
 static unsigned int
 ask_keysize (int algo, unsigned int primary_keysize)
 {
-  unsigned nbits, min, def=2048, max=4096;
+  unsigned nbits, min, def=2048, max=15489;
   int for_subkey = !!primary_keysize;
   int autocomp = 0;

gnupg_1.4.19_xlarge_secmem.patch

--- configure   2015-02-27 03:37:52.000000000 -0500
+++ configure   2015-03-02 22:28:31.488401783 -0500
@@ -5076,7 +5076,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $large_secmem" >&5
 $as_echo "$large_secmem" >&6; }
 if test "$large_secmem" = yes ; then
-   SECMEM_BUFFER_SIZE=65536
+   SECMEM_BUFFER_SIZE=131072
 else
    SECMEM_BUFFER_SIZE=32768
 fi

Статья заканчивается. Получено на 2016-02-26 из архивной копии оригинала.

Ответ 3

Почему он не поддерживает ничего большего? Возможно, на момент разработки GnuPG (и дальнейшего развития RSA, если на то пошло) и ключевых размеров, вычислительных ограничений в то время, как для случаев использования на стороне клиента, так и потенциала правительственных агентств, способных разбить ключ 4096, разработчики и криптографы чувствовали, что ключ 4096 был достаточно большим. Действительно, 4096 - действительно большой ключ и займет очень много времени, чтобы покончить с существующей технологией. Если правительственное агентство было за вами и действительно хотело получить ваши сообщения, они (в США) получили бы судебный приказ положить руткит на ваши машины, чтобы даже не беспокоиться о нарушении шифрования.

Теперь я не рассматривал исходный код специально, но если вы измените размер ключа на что-то большее, чем 4096, у вас могут возникнуть проблемы с другими пользователями, использующими ваш ключ, если их программное обеспечение не поддерживает более крупный размер ключа, Например, у меня есть ключ 4096, мой друг не может отправлять мне сообщения с устройства Android, потому что он не может найти приложение, которое поддерживает что-либо большее, чем 3072! Помните об этом.

Ответ 4

Если вы хотите изменить исходный код, вы можете сделать это легко на Debian Linux с помощью этого script: Повышение ограничений размера ключа GnuPG и создание идеальных файлов .conf.

Вот ссылка на bash script, которая увеличивает ограничение размера ключа GnuPG за 4096 бит. Страница также представляет собой идеальный файл GnuPG.conf. https://gist.github.com/anonymous/3d928a0bcbb3ed92c454

Просьба указать ввод и рекомендуемые изменения.