NOTA Quanto segue presuppone un aumento di velocità lineare (come si otterrebbe in un attacco di forza bruta): l'aumento di velocità potrebbe essere ESPONENZIALE, 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 fino ad ora) per decifrare una chiave, con l'aiuto di 8 caratteri binari, ci vorrebbero solo 0,023 secondi.
Questo è: 13,8 miliardi di anni / 2 (bits_per_symbol * number_of_symbols) .
Tu ha detto che il numero di simboli è "8 caratteri", e sto assumendo binario, che ha 8 bit per simbolo. quindi: 13,8 miliardi di anni / 2 (8 * 8)
Se sono codificati in uuenc, o in base64, avranno 6 bit per simbolo, quindi ci vorrebbero tutti 25 minuti per elaborare le combinazioni rimanenti.
Queste proporzioni si applicano solo al numero di bit che hai rivelato e non dipendono dalla lunghezza della chiave (solo che la chiave impiegherebbe 13,8 miliardi di anni per decifrare ).
Il punto centrale della crittografia a chiave pubblica è che non devi MAI MAI MAI condividere la chiave privata. Ogni chiave privata dovrebbe esistere solo in un posto e non viaggiare mai su 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, fai creare a ciascuno la propria chiave privata, invia la loro chiave pubblica (in modo sicuro !!) quindi crittografa il messaggio con entrambe le chiavi. Di solito con PKC, i messaggi lunghi vengono crittografati utilizzando la crittografia simmetrica con una chiave casuale, quindi la chiave viene 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 è dimostrare di avere la chiave privata, puoi fare quanto segue:
Chiedi alla persona a cui vuoi dimostrare di fornire un valore casuale (un "nonce") . Aggiungi un valore casuale del tuo, hash e firma l'hash. Invia indietro il tuo valore casuale e la firma.
La tua controparte prenderà quindi il nonce che ha inviato, più il tuo valore casuale, lo sottoporrà ad hashing e verificherà la firma rispetto alla tua chiave pubblica.
Includere un valore casuale dal mittente, dimostra che non hai appena selezionato un valore che è stato precedentemente firmato dal vero proprietario.
NON IN ALCUN CASO accettare qualcosa inviato da qualcun altro e firmandolo, senza modifiche. Possono inviarti l'impronta digitale di un documento che hanno scritto e tu firmerai effettivamente quel documento.