NOTA Lo siguiente asume una aceleración lineal (como la que se obtendría en un ataque de fuerza bruta): la aceleración puede ser EXPONENCIALMENTE MÁS, según el algoritmo.
Es muy difícil comprender números grandes, incluso me sorprendió cuando surgió la respuesta. Aquí hay una manera de pensarlo:
Si, sin ninguna información, llevaría 13.8 mil millones de años (la edad del universo hasta ahora) descifrar una clave, con la ayuda de 8 caracteres binarios, solo tomaría 0.023 segundos.
Esto es: 13.8 billones de años / 2 (bits_per_symbol * number_of_symbols) .
Usted dijo que el número de símbolos es "8 caracteres", y asumo que es binario, que tiene 8 bits por símbolo. así: 13.8 billones de años / 2 (8 * 8)
Si están uuencoded, o base64, tendrán 6 bits por símbolo, por lo que les tomará a todos 25 minutos trabajar con las combinaciones restantes.
Estas proporciones se aplican solo a la cantidad de bits que has revelado, y es independiente de la longitud de la clave (solo que la clave tardaría 13,8 mil millones de años en romperse).
El punto central de la criptografía de clave pública es que NUNCA NUNCA NECESITES compartir la clave privada. Cada clave privada debe existir solo en un lugar y nunca viajar a través de una red. El envío de claves va en contra del principio de criptografía de clave pública. NUNCA es necesario enviar claves privadas, de manera parcial o no.
Si desea que dos (o más) dispositivos diferentes puedan decodificar el mismo mensaje, haga que cada uno cree su propia clave privada, le envíe su clave pública (¡de forma segura!) y luego encripte el mensaje con ambas claves. Por lo general, con PKC, los mensajes largos se cifran utilizando un cifrado simétrico con una clave aleatoria, y luego la clave se cifra con PKC y se envía con el mensaje; puede cifrar fácilmente la clave aleatoria con varias claves públicas y enviarlas todas con el mismo mensaje.
Si todo lo que quieres hacer es mostrar que tienes la clave privada, puedes hacer lo siguiente:
Pídale a la persona con la que desea demostrar que proporcione un valor aleatorio (un "nonce"). Agregue su propio valor aleatorio, haga un hash y firme el hash. Envíe su valor aleatorio, y la firma, de vuelta.
Su contraparte tomará el nonce que enviaron, más su valor aleatorio, lo procesará y verificará la firma con su clave pública.
Al incluir un valor aleatorio del remitente, se demuestra que no seleccionó un valor que haya sido firmado previamente por el propietario real.
NO BAJO NINGUNA CIRCUNSTANCIA acepte algo enviado por otra persona y firme, sin ningún cambio. Pueden enviarle la huella digital de un documento que escribieron y usted estará firmando ese documento de manera efectiva.