На 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 из архивной копии оригинала .