NOTA Quanto segue presuppone un aumento lineare (come si otterrebbe in un attacco a forza bruta) - la velocità potrebbe essere EXPONENTALMENTE PIÙ, a seconda dell'algoritmo.
È molto difficile comprendere grandi numeri - anche io sono rimasto sorpreso quando è arrivata la risposta. Ecco un modo di pensarci:
Se, senza alcuna informazione, ci vorrebbero 13,8 miliardi di anni (l'età dell'universo finora) per craccare una chiave, con l'aiuto di 8 caratteri binari, ci vorrebbero solo 0,023 secondi.
Questo è: 13,8 miliardi di anni / 2 (bit_per_symbol * numero_di_simbolo) .
Hai detto che il numero di simboli è "8 caratteri" e presumo che sia binario, che ha 8 bit per simbolo. quindi: 13,8 miliardi di anni / 2 (8 * 8)
Se sono codificati in uuencode o base64, avranno 6 bit per simbolo, quindi impiegherebbero 25 minuti per lavorare sulle combinazioni rimanenti.
Queste proporzioni si applicano solo al numero di bit che hai rivelato, ed è indipendente dalla durata della chiave (solo che la chiave impiegherebbe 13.8 miliardi di anni per craccare).
L'intero punto della crittografia a chiave pubblica è che non è MAI MAI necessario condividere la chiave privata. Ogni chiave privata dovrebbe esistere solo in un posto e non viaggiare mai attraverso una rete. L'invio di chiavi va contro il principio stesso della crittografia a chiave pubblica. Non è MAI necessario inviare chiavi private, parzialmente o in altro modo.
Se vuoi che due (o più) dispositivi diversi siano in grado di decodificare lo stesso messaggio, ciascuno di essi crea la propria chiave privata, ti invia la sua chiave pubblica (in modo sicuro !!) quindi cripta il messaggio con entrambe le chiavi. Solitamente con PKC, i messaggi lunghi vengono crittografati utilizzando la crittografia simmetrica con una chiave casuale e la chiave viene quindi crittografata con PKC e inviata con il messaggio; puoi facilmente crittografare la chiave casuale con più chiavi pubbliche e inviarle tutte con lo stesso messaggio.
Se tutto ciò che vuoi fare è mostrare la tua chiave privata, puoi fare quanto segue:
Chiedi alla persona che vuoi dimostrare di fornire un valore casuale (un "nonce"). Aggiungi il tuo valore casuale, cancellalo e firma l'hash. Invia il tuo valore casuale e la firma indietro.
La tua controparte prenderà il nonce che hanno inviato, più il tuo valore casuale, lo cancellerà e controllerà la firma con la tua chiave pubblica.
Includendo un valore casuale dal mittente, dimostra che non hai appena selezionato un valore che è stato precedentemente firmato dal proprietario reale.
NON SOTTO QUALSIASI CIRCOSTANZA accettare qualcosa inviato da qualcun altro e firmarlo, senza alcuna modifica. Possono inviarti l'impronta digitale di un documento che hanno scritto e firmerete in modo efficace quel documento.