为什么我在尝试生成 rsa 128 时收到错误

为什么我在尝试生成 rsa 128 时收到错误

出于教育目的,我尝试使用 Openssl 创建 RSA 128 密钥对。尝试以下命令时,出现“密钥大小太小”的错误

$ 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

该限制被硬编码为最小“安全”长度,目前为 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;

相关内容