如何生成不寻常但数学上有效的RSA密钥?

时间:2017-01-23 19:44:48

标签: c# c++ encryption cryptography rsa

我使用的RSA库在某些包含无效密文的解密操作时崩溃。出于安全考虑,我无法访问崩溃中涉及的RSA密钥或密文。

在我的实验室中,我尝试提交多个RSA密钥并调整密文值以强制崩溃。我尝试使用512到4096位的密钥,并通过更改每个位,预先添加垃圾,附加垃圾,截断尾部或截断头部来调整有效的密文。在所有情况下,库都行为正常并报告"提供的无效密文"而不是随着它在生产中随机发生而崩溃。

我的最后一招是尝试不寻常的RSA密钥,例如使用不寻常的指数。您是否知道允许我完全自定义RSA密钥生成的库或工具?

我可以从C#,Java或C ++(Visual Studio)调用它,或者它也可以是Windows命令行工具。我们非常感谢示例代码或参考文档的链接。

1 个答案:

答案 0 :(得分:2)

CoreFX RSA测试有几个unusual keys defined

DiminishedDPParameters具有DP值,可以用比平时少一个字节来表示(当P和Q都是N / D DP的宽度的一半时,通常与P或Q的大小相同) )。 (生成技术:继续用openssl genrsa [keysize] | openssl rsa -text -noout向上输入,直到其中一个参数不足为止

UnusualExponentParameters使用E=0x01B1代替E=0x010001(生成技巧:OpenSSL' s RSA_generate_key为E.取得一个值,但是只有一个易于发电机的素数。)

另一个导致异常E值的事情是大于4个字节(Windows CAPI / .NET RSACryptoServiceProvider的限制)。似乎没有其中一个测试,所以这里是一个内联版本。 (加密免责声明:此密钥是作为一个示例生成的,并且显然已经暴露在互联网上,不会将其用于任何您想要保密的内容。)

$ openssl rsa -in bigexponent.key -text -noout
Private-Key: (2048 bit)
modulus:
    00:af:81:c1:cb:d8:20:3f:62:4a:53:9e:d6:60:81:
    75:37:23:93:a2:83:7d:48:90:e4:8a:19:de:d3:69:
    73:11:56:20:96:8d:6b:e0:d3:da:a3:8a:a7:77:be:
    02:ee:0b:6b:93:b7:24:e8:dc:c1:2b:63:2b:4f:a8:
    0b:bc:92:5b:ce:62:4f:4c:a7:cc:60:63:06:b3:94:
    03:e2:8c:93:2d:24:dd:54:6f:fe:4e:f6:a3:7f:10:
    77:0b:22:15:ea:8c:bb:5b:f4:27:e8:c4:d8:9b:79:
    eb:33:83:75:10:0c:5f:83:e5:5d:e9:b4:46:6d:df:
    be:ee:42:53:9a:ef:33:ef:18:7b:77:60:c3:b1:a1:
    b2:10:3c:2d:81:44:56:4a:0c:10:39:a0:9c:85:cf:
    6b:59:74:eb:51:6f:c8:d6:62:3c:94:ae:3a:5a:0b:
    b3:b4:c7:92:95:7d:43:23:91:56:6c:f3:e2:a5:2a:
    fb:0c:14:2b:9e:06:81:b8:97:26:71:af:2b:82:dd:
    39:0a:39:b9:39:cf:71:95:68:68:7e:49:90:a6:30:
    50:ca:77:68:dc:d6:b3:78:84:2f:18:fd:b1:f6:d9:
    ff:09:6b:af:7b:eb:98:dc:f9:30:d6:6f:cf:d5:03:
    f5:8d:41:bf:f4:62:12:e2:4e:3a:fc:45:ea:42:bd:
    88:47
publicExponent: 8589935681 (0x200000441)
privateExponent:
    64:af:9b:a5:26:24:83:da:92:b5:3f:13:43:9f:d0:
    ef:13:01:2f:87:9a:bc:03:cb:7c:06:f1:20:99:04:
    f3:52:c1:f2:23:51:9d:c4:8b:fa:ee:bb:51:1b:0d:
    95:5f:61:67:b5:0e:03:4f:ea:2a:bc:59:0b:4e:a9:
    fb:f0:c5:1f:9f:fe:a1:6f:79:27:ae:68:1c:bf:73:
    58:45:2b:ca:29:d5:87:05:e0:ca:a1:06:01:3b:09:
    a6:f5:f5:91:14:98:d2:c4:fd:69:15:58:54:88:e5:
    f3:ad:89:83:6c:93:c8:77:5a:fa:b4:d1:3c:20:14:
    26:6b:e8:ee:6b:8a:a6:6c:9e:94:2d:49:34:66:c8:
    e3:a3:70:f8:e6:37:8c:e9:5d:63:7e:03:67:36:70:
    be:4b:ca:ce:5f:cd:ad:d2:38:d9:f3:2c:a3:5d:e8:
    45:77:6a:c4:bf:36:11:88:12:32:8c:49:3f:91:c2:
    5a:9b:d4:26:72:d0:af:af:de:0a:f7:e6:19:07:8d:
    48:b4:85:ef:91:93:3d:dc:ff:b5:45:87:b8:f5:12:
    d2:23:c8:18:94:e9:17:84:98:2f:3c:5c:65:87:13:
    51:f4:65:5a:b0:23:c4:ad:99:b6:b0:3a:96:f9:04:
    6c:e1:24:a4:71:e8:28:f0:5f:8d:b3:bc:7c:cc:f2:
    d1
prime1:
    00:e4:3a:38:26:a9:72:04:ae:3c:d8:64:9a:84:db:
    4b:bf:07:25:c4:b0:8f:8c:43:84:05:57:a0:cd:04:
    e3:13:af:6d:04:60:dd:e6:9c:dc:50:8a:d0:43:d7:
    25:14:da:7a:66:bc:91:8c:d9:62:4f:48:56:44:b9:
    de:ea:b2:be:0e:11:29:56:d4:72:cf:0f:d5:1f:80:
    fd:33:87:2d:2d:cc:56:2a:05:88:b0:12:e8:c9:0c:
    e7:d2:54:b9:47:92:c6:e7:a0:2b:3c:ca:a1:50:e6:
    7a:64:37:7a:cc:49:47:9a:d5:eb:55:54:93:b2:10:
    0c:b0:41:09:56:f7:d7:3b:f5
prime2:
    00:c4:dd:2d:7a:dd:6c:a5:07:40:d3:97:3f:40:c4:
    de:bd:ba:b5:1f:7f:51:81:ab:ae:72:6c:32:59:6a:
    3e:dd:0a:ee:44:da:ad:dd:8a:9b:7a:86:4c:4f:fd:
    ae:00:c4:cb:1f:10:17:7b:a0:1c:04:66:f8:12:d5:
    22:61:0f:8c:45:43:f1:c3:ef:57:9f:a9:e1:3a:e8:
    da:1a:4a:8d:ae:30:78:61:d2:ce:ac:03:56:02:79:
    b6:1b:65:14:98:98:83:fe:86:c5:c7:42:0d:31:28:
    38:fc:2f:70:be:d5:9b:52:29:65:42:01:88:26:64:
    ce:fa:38:b4:8a:37:23:e9:cb
exponent1:
    09:ec:f1:51:f5:cd:d2:c9:e6:e5:26:82:36:4f:a5:
    b4:ed:09:4f:62:2e:40:31:bf:46:b8:51:35:8a:58:
    4d:cc:b5:32:8b:0b:d9:b6:35:89:18:3f:49:15:93:
    d2:a3:ac:ad:14:e0:aa:cd:a1:f1:81:b5:c7:d9:3c:
    57:ed:26:e6:2c:9f:c2:6a:f3:7e:4a:06:44:ec:e8:
    2a:7b:a8:ae:d8:8f:f1:d8:e9:c5:6c:c6:63:85:cd:
    b2:44:eb:3d:57:d1:7e:6a:d4:20:b1:9c:9e:2b:ee:
    18:19:2b:81:62:65:b7:4d:a5:5f:a3:82:5f:92:2d:
    9d:8e:83:5b:76:bf:30:71
exponent2:
    00:89:b3:3b:69:57:89:17:4b:88:36:8c:49:46:39:
    d4:d3:26:72:24:57:2a:40:b2:fe:61:91:03:84:22:
    8e:3d:bd:11:ee:d9:04:0c:d0:39:77:e9:e0:d7:fc:
    8b:fc:4b:f4:a9:32:83:52:9f:f1:d9:65:90:b1:8f:
    4e:ab:ef:03:03:79:4f:29:3e:88:dc:76:1b:3e:23:
    af:ec:b1:9f:29:f8:a4:d2:a9:05:8b:71:4c:f3:f4:
    d1:07:33:f1:3e:a7:2b:bf:1f:be:c8:d7:1e:10:6d:
    0c:e2:11:5f:3a:d2:de:02:03:25:c3:87:9a:09:1c:
    41:3c:d6:39:7f:83:b3:cb:89
coefficient:
    7c:57:ed:74:c9:17:6f:ba:76:c2:31:83:20:25:15:
    06:2c:66:4d:4d:49:ff:3e:03:70:47:a3:09:da:10:
    f1:59:0c:e0:1b:7a:1c:d1:a4:32:6d:c7:58:83:df:
    f9:31:10:ab:06:5a:ae:d1:40:c9:b9:81:76:a8:81:
    08:09:ad:ec:75:e8:67:64:a0:95:15:97:ef:46:7f:
    a8:fd:50:91:81:cd:2e:49:1e:43:be:41:08:4e:5b:
    e1:b5:62:ee:76:e9:f9:2c:9a:b1:e5:ae:ad:9d:29:
    1a:63:37:e4:de:85:bd:e6:7a:0d:72:b4:e5:5a:dc:
    f2:07:f7:a5:a5:22:5e:15