почему я получаю сообщение об ошибке при попытке сгенерировать rsa 128

В образовательных целях я пытаюсь создать пару ключей RSA 128 с помощью Openssl. при попытке выполнить следующую команду я получаю сообщение об ошибке «размер ключа слишком мал»

$ openssl genrsa 128
Generating RSA private key, 128 bit long modulus (2 primes)
140216022529216:error:04081078:rsa routines:rsa_builtin_keygen:key size too small:../crypto/rsa/rsa_gen.c:78:

Я попытался установить уровень безопасности на 0, как показано здесь, но у меня все еще та же проблема. Я также попытался собрать программное обеспечение из исходного кода и установить DOPENSSL_TLS_SECURITY_LEVEL = 0, но это не сработало.

зная, что в настоящее время я использую:

$ openssl version -a 
OpenSSL 1.1.1f  31 Mar 2020
built on: Mon Mar 22 11:37:17 2021 UTC
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(int) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-Juj39H/openssl-1.1.1f=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1"
Seeding source: os-specific

1 ответ
1

Предел жестко запрограммирован на минимальную «безопасную» длину, в настоящее время 512 бит (см. RSA_MIN_MODULUS_BITS ниже). Чтобы обойти это, например, для использования во встроенном приложении, вам нужно перекомпилировать OpenSSL:

crypto/rsa/rsa_local.h:14:#define RSA_MIN_MODULUS_BITS    512
--
crypto/rsa/rsa_gen.c:76:    if (bits < RSA_MIN_MODULUS_BITS) {
crypto/rsa/rsa_gen.c-77-        ok = 0;             /* we set our own err */
crypto/rsa/rsa_gen.c-78-        RSAerr(RSA_F_RSA_BUILTIN_KEYGEN, RSA_R_KEY_SIZE_TOO_SMALL);
crypto/rsa/rsa_gen.c-79-        goto err;
--
crypto/rsa/rsa_pmeth.c:464:        if (p1 < RSA_MIN_MODULUS_BITS) {
crypto/rsa/rsa_pmeth.c-465-            RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_KEY_SIZE_TOO_SMALL);
crypto/rsa/rsa_pmeth.c-466-            return -2;

  • Что касается причины, по которой он жестко закодирован, то 512-байтовый RSA является минимальной безопасной длиной, но даже это слишком мало, чтобы быть на самом деле безопасным (минимум в 2021 году, я полагаю, 2048).

    — Рамхаунд
    16 часов назад

  • Работает, спасибо. но пришлось использовать новую свежую систему без установленного openssl.

    — А. Бадер
    15 часов назад

  • @Ramhound: Да, я отредактирую свой ответ, чтобы добавить детали. Интересно, что существует также проблема экспортных ограничений на шифрование из страны в страну. Таким образом, бывают случаи, когда 128-битный ключ может быть обязательным, но, конечно, не для доступа по SSH. Однако по-прежнему приятно иметь возможность использовать инструменты для генерации ключа. В этом случае вы не можете использовать openSSL.

    — сарлация
    13 часов назад

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *