Ho intenzione di dare a questo schema il massimo beneficio del dubbio. Ecco la mia opinione su questo, con la conclusione in basso:
Abbiamo un file con 10.000.000 di caratteri a 7 bit, scelti in modo veramente casuale. Ciò significa che ogni personaggio dovrebbe apparire, in media, ogni 128 caratteri. Mi riferirò a queste dimensioni come un blocco sotto.
Suppongo anche che tu specifichi un tasto sulla falsariga di "start at the Yth" > dopo la "Q" dopo l'inizio dell'N ° blocco e finisci al decimo carattere ", perché sarebbe facile da ricordare. Ciò significa che la tua password è in realtà determinata casualmente e inizialmente sconosciuta a te. Una password di dieci caratteri scelta a caso come questa è in realtà abbastanza strong. Sono 70 bit di casualità.
Il primo problema è che per ogni blocco di 128 caratteri, c'è circa il 36% di probabilità che un dato personaggio non appaia in quel blocco. Questo si moltiplica quando aggiungi blocchi addizionali, quindi c'è una probabilità del 13% circa che una 'Q' non appaia in due blocchi di fila, e una probabilità dello 0,003% che una 'Q' non appaia in 10 blocchi in una riga. Ciò significa che solo 1 su 27351 set di 10 blocchi mancherà di una "Q". Tuttavia, abbiamo molti dati! In questo file abbiamo 78125 blocchi, quindi ci aspetteremmo, in media, di trovare tre regioni di 10 blocchi senza una "Q" nel nostro file da 10 MB. Le cose diventano strane quando hai a che fare con grandi numeri.
Questo significa che potremmo dover cercare un bel modo per trovare il primo Q dopo l'inizio dell'N ° blocco. C'è una bassa possibilità, ma come abbiamo visto, ci sono probabilmente tre posti nel nostro file gigante in cui dobbiamo cercare approssimativamente un KB di testo (manualmente!) Per una singola "Q". Se consideri che non vogliamo solo il primo ma l'ennesimo '>' dopo quella Q, le cose si complicano rapidamente. Potremmo dover cercare tra 1 KB per la Q e poi un altro 1 KB per trovare il primo '>'.
Tutto questo significa in pratica che sappiamo che la tua password non sarà negli ultimi 150 KB circa del file, perché non puoi garantire che una determinata coppia di caratteri sarà presente nell'ordine e nel numero richiesto.
Significa anche che possiamo calcolare una dimensione della chiave. Hai bisogno di cinque informazioni per trovare la tua password nel file: il blocco di partenza, il primo carattere, il numero di secondi caratteri da contare avanti, il secondo carattere e il carattere di arresto.
Possiamo specificarlo come una serie di numeri e caratteri: [ 7685, 'Q', 6, '>' ]
, che significa "Iniziare a leggere al sesto" > " dopo la "Q" nel 7685 ° blocco.
Dato che ci sono circa 78000 blocchi che puoi scegliere per il punto di partenza, quel valore ha tra 16 e 17 bit di casualità. Potrebbe essere qualsiasi numero compreso tra 0 e 78000. Per i caratteri, hai 128 scelte in due posizioni, che è 7 bit di casualità ciascuna o 14 bit totali. Il secondo numero è difficile. Dato che possiamo ragionevolmente aspettarci di contare almeno 1 KB per trovare ogni personaggio, è probabilmente sicuro scegliere un valore inferiore a 64 qui. Sono solo sei bit di casualità. Quindi, totale generale, la tua chiave ha bit (16-ish + 14 + 6) di casualità, che sono 36 bit. Se si modifica la lunghezza, è possibile aggiungere altri bit. Anche se non banale, un tipico computer di casa moderno potrebbe alimentare tutte le possibili combinazioni in un paio di giorni.
Tuttavia, come altri hanno sottolineato, tutto ciò è in gran parte irrilevante. Il file stesso ha solo 10.000.000 possibili punti di partenza. Ciò significa che lo spazio chiave è in realtà significativamente più piccolo dei tasti stessi, e in realtà hai solo circa 23 bit di casualità. Ciò significa in termini pratici che ogni posizione iniziale nel file può essere referenziata da 16.000 chiavi diverse e, in realtà, memorizzare una posizione di partenza è significativamente più semplice della memorizzazione della struttura chiave. Se usi un blocco più piccolo, ci sono ancora meno combinazioni possibili.
Conclusione: quindi sì, come hanno detto altri, questa è una cattiva idea. Utilizzare un programma di crittografia strong noto utilizzando una password complessa conosciuta. Puoi trovare una password più facile da memorizzare che ti offre una protezione notevolmente maggiore rispetto a questo schema complicato e ottieni il vantaggio di algoritmi di crittografia collaudati.