¿Puedo generar claves OpenSSL que contengan primos comprobables?

0

Tal como lo entiendo, OpenSSL utiliza Miller-Rabin para generar probabilísticamente grandes números, que es muy probable que sean los principales a partir de los cuales construir sus claves.

También entiendo que el software utiliza rondas suficientes para generar la posibilidad de que un número compuesto accidental sea astronómicamente pequeño.

Pero estoy siendo estricto y paranoico. Quiero las claves disponibles como primarias (por ejemplo, mediante el algoritmo de Maurer o algún otro). ¿Puedo hacer que OpenSSL genere tales claves? O, ¿puedo generar certificados OpenSSL usando algún otro software que cumpla con esta condición?

    
pregunta spraff 04.10.2016 - 20:52
fuente

1 respuesta

1

No creo que openssl tenga código para generar claves RSA usando el algoritmo que desea. Pero puede usar cualquier software para generar los valores que deben codificarse en la clave privada, y luego codificarlos de la manera correcta para que openssl pueda usar la clave para cualquier cosa (generar CSR, crear certificados autofirmados, ser un servidor TLS). , sea un cliente de TL que use certificados de cliente, etc.).

El formato de la clave que debe proporcionar se especifica en PKCS # 1 [1] e incluye: n, e, d, p, q, d mod (p-1), d mod (q-1) y (inverso de q) mod p.

Observe lo que openssl produce cuando genera una clave privada:

openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048

Esto es lo que hay dentro:

openssl rsa -in private_key.pem -text -noout

Así se codifica:

openssl asn1parse -inform pem -in private_key.pem

 0:d=0  hl=4 l=1212 cons: SEQUENCE
 4:d=1  hl=2 l=   1 prim: INTEGER           :00
 7:d=1  hl=2 l=  13 cons: SEQUENCE
 9:d=2  hl=2 l=   9 prim: OBJECT            :rsaEncryption
20:d=2  hl=2 l=   0 prim: NULL
22:d=1  hl=4 l=1190 prim: OCTET STRING      [HEX DUMP]:308204A20201000282010100CEDECBB4CFA04699F0C849D7FFF9AD1AFAEB422821889A39D3B5D6C216B4D0AF6E60E12221DA77AEFC6C6FB4932764A787AD8A5388382FB34F7592F1BD829A379931AA06D79BA8A23CC2FC0B43E766AB86D5471CD2CB7C90D4953F923C716C82B8F225A26B1D6F23E123301CC5C1D66675567E2FBA2EDA31986416BC9BEAD6A9CA3995AEFB1CE62F21600509489642031EA849325FB0DA6ECEE614642141946493C58B5BE56AEE21A96EB3C0593387067BCE6C11210402A8277CD31E62B0FAF470E51AC1DF87E7AF682562FEF576139F6491E864B190AFCF25E9D18AA89390AF6EC59169AD72851A2428B7C4EEB9E59F2EB4C3E1ADF6A5BE41425922FA06C7A10203010001028201000EFF29C756D1E8AC5A3F3AD334D455CF41E77229549D018935A6D605C5FD9FAF48122FDFF8924CE0DB9DC4CF5367A4AD5C71A138830487B8B906EDFB2660E46B2968E7498DB1D41CC6C8DFDAB5367E43EB07651B5AD0B39C103D2D999D561FA6AE5FA788C9B91D887D56BEB32746F113066899C73DF90D8A50E0D8A11DB07D953A11087FF85B78255CAC52FE55F2F6646EA2521C0CA8F3B2EEFD09B7B3DBEF53A0F7CAB2B0C3AE325F014A1C4FDCB15E2CD3B8AA27A0B0FD1531473CA7CA781B9B675196AE147A17FDBAE6837E50E117D568492EE76EB0C996097A06D892DEB0249574757D8B2FE365DDF1FCC37B755CAD91C76781A7A72ADB9755B179498EFD02818100F2AED36E57E843155C2CD3CACAC84FBFD94DDF13796F2F189109C5A6AC0D345BE1B7EC4CE903618DA045B49D47F24D762566BBEFA2E84E4A5BC10024A9E8964AB60F4B4E7E63948D341BB977E257A17B69AB509123E2A671200BA31E05D39E0F5A5EFF063A11918DEBEC7FD550D0729D5EDBBD466BC0D23D77942200D95901FF02818100DA38E120A3738BB96FC20056186F0A0ED748609E05D50561D7EA2BE439094FF2439F9C03DC6E808F3AB280358D0651632C384C4AA4CE067F319B9426A8B804A3817410F914FF072FCA98024E66067FE572C8ECE5E4FE263BDECC8EDBB60060D0EFF17B1D21FA711E4F8C59D826FAB348595563DCFE41348500F45B310DECF65F0281802A71951CE956FFD48E88708A39290B799C41D850099EFE77A7763411506A06CC430FEDCE0DBABFA70B6EE585D47D763AC193D42EB72935F81F5003FC6592FE2616ED59D862967BF6AE34631DAA827505A69785C1BCAAF93D33C39545BCF323E3BF8479C9D7021798E0B83E2B4AB50A36A7CE7AAE044E76F6B5213D4934BA327502818068BB15A8D16959ECA46B4A3807BFFAE6C6819105262D6748DF141EFE883524EE53701DB368AE8BFAB1A40B8E27E1995BEC5414A15A591A9B1ED6D91278B4E05D0C7B04CE563A535BA772AEE0AB6C812340A497B579E253BD361F9C8C6BDBE09B461CF206385176CAA248ECB1A57B7A61C5A60AA87C4A1507A43EA22977D27B270281806B36867417418016B3E567A514C904E0443C0F8BBABF361230BF8021FC8BE807EB7DA4A77EA72FAB4F12C54C541C97F6368D54D60078A4347942884DBF2240017E1F554A771BD373B949A9B320D1589A617B0E16EC2A61A2C8D6F91F892A436FC553EFD98F371BFD66BB466016E63A3297271EE058025324CB7A5B27A262F099

openssl asn1parse -inform pem -in private_key.pem -strparse 22

   0:d=0  hl=4 l=1186 cons: SEQUENCE
   4:d=1  hl=2 l=   1 prim: INTEGER           :00
   7:d=1  hl=4 l= 257 prim: INTEGER           :CEDECBB4CFA04699F0C849D7FFF9AD1AFAEB422821889A39D3B5D6C216B4D0AF6E60E12221DA77AEFC6C6FB4932764A787AD8A5388382FB34F7592F1BD829A379931AA06D79BA8A23CC2FC0B43E766AB86D5471CD2CB7C90D4953F923C716C82B8F225A26B1D6F23E123301CC5C1D66675567E2FBA2EDA31986416BC9BEAD6A9CA3995AEFB1CE62F21600509489642031EA849325FB0DA6ECEE614642141946493C58B5BE56AEE21A96EB3C0593387067BCE6C11210402A8277CD31E62B0FAF470E51AC1DF87E7AF682562FEF576139F6491E864B190AFCF25E9D18AA89390AF6EC59169AD72851A2428B7C4EEB9E59F2EB4C3E1ADF6A5BE41425922FA06C7A1
 268:d=1  hl=2 l=   3 prim: INTEGER           :010001
 273:d=1  hl=4 l= 256 prim: INTEGER           :0EFF29C756D1E8AC5A3F3AD334D455CF41E77229549D018935A6D605C5FD9FAF48122FDFF8924CE0DB9DC4CF5367A4AD5C71A138830487B8B906EDFB2660E46B2968E7498DB1D41CC6C8DFDAB5367E43EB07651B5AD0B39C103D2D999D561FA6AE5FA788C9B91D887D56BEB32746F113066899C73DF90D8A50E0D8A11DB07D953A11087FF85B78255CAC52FE55F2F6646EA2521C0CA8F3B2EEFD09B7B3DBEF53A0F7CAB2B0C3AE325F014A1C4FDCB15E2CD3B8AA27A0B0FD1531473CA7CA781B9B675196AE147A17FDBAE6837E50E117D568492EE76EB0C996097A06D892DEB0249574757D8B2FE365DDF1FCC37B755CAD91C76781A7A72ADB9755B179498EFD
 533:d=1  hl=3 l= 129 prim: INTEGER           :F2AED36E57E843155C2CD3CACAC84FBFD94DDF13796F2F189109C5A6AC0D345BE1B7EC4CE903618DA045B49D47F24D762566BBEFA2E84E4A5BC10024A9E8964AB60F4B4E7E63948D341BB977E257A17B69AB509123E2A671200BA31E05D39E0F5A5EFF063A11918DEBEC7FD550D0729D5EDBBD466BC0D23D77942200D95901FF
 665:d=1  hl=3 l= 129 prim: INTEGER           :DA38E120A3738BB96FC20056186F0A0ED748609E05D50561D7EA2BE439094FF2439F9C03DC6E808F3AB280358D0651632C384C4AA4CE067F319B9426A8B804A3817410F914FF072FCA98024E66067FE572C8ECE5E4FE263BDECC8EDBB60060D0EFF17B1D21FA711E4F8C59D826FAB348595563DCFE41348500F45B310DECF65F
 797:d=1  hl=3 l= 128 prim: INTEGER           :2A71951CE956FFD48E88708A39290B799C41D850099EFE77A7763411506A06CC430FEDCE0DBABFA70B6EE585D47D763AC193D42EB72935F81F5003FC6592FE2616ED59D862967BF6AE34631DAA827505A69785C1BCAAF93D33C39545BCF323E3BF8479C9D7021798E0B83E2B4AB50A36A7CE7AAE044E76F6B5213D4934BA3275
 928:d=1  hl=3 l= 128 prim: INTEGER           :68BB15A8D16959ECA46B4A3807BFFAE6C6819105262D6748DF141EFE883524EE53701DB368AE8BFAB1A40B8E27E1995BEC5414A15A591A9B1ED6D91278B4E05D0C7B04CE563A535BA772AEE0AB6C812340A497B579E253BD361F9C8C6BDBE09B461CF206385176CAA248ECB1A57B7A61C5A60AA87C4A1507A43EA22977D27B27
1059:d=1  hl=3 l= 128 prim: INTEGER           :6B36867417418016B3E567A514C904E0443C0F8BBABF361230BF8021FC8BE807EB7DA4A77EA72FAB4F12C54C541C97F6368D54D60078A4347942884DBF2240017E1F554A771BD373B949A9B320D1589A617B0E16EC2A61A2C8D6F91F892A436FC553EFD98F371BFD66BB466016E63A3297271EE058025324CB7A5B27A262F099

1 - enlace

    
respondido por el Z.T. 11.10.2016 - 20:29
fuente

Lea otras preguntas en las etiquetas