GnuPG 4096 бит лимит - PullRequest
       17

GnuPG 4096 бит лимит

17 голосов
/ 16 мая 2011

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

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

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

Ответы [ 4 ]

9 голосов
/ 16 мая 2011

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

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

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

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

8 голосов
/ 18 июля 2013

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

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

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

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

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

usbdrive@sandisk-extreme64:~/gnupg-1.4.19$ patch -p0 < gnupg_1.4.19_large_keygen.patch
patching file g10/keygen.c
usbdrive@sandisk-extreme64:~/gnupg-1.4.19$ ./configure --enable-large-secmem
[...]
checking whether to allocate extra secure memory... yes
[...]
usbdrive@sandisk-extreme64:~/gnupg-1.4.19$ make -j2
usbdrive@sandisk-extreme64:~/gnupg-1.4.19$ make check
usbdrive@sandisk-extreme64:~/gnupg-1.4.19$ sudo make install
usbdrive@sandisk-extreme64:~/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 из архивной копии оригинала .

2 голосов
/ 24 июля 2012

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

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

0 голосов
/ 11 сентября 2014

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

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

Пожалуйста, предоставьте ввод и рекомендуемые изменения.

...