Per costruire una tavola arcobaleno, come decidere la dimensione della catena e il numero di linee?

2

Per essere sicuro di aver ben compreso le Rainbow Table, ho deciso di fare un piccolo progetto in Java, ma sono bloccato su una domanda: come scegliere la dimensione della catena? E questo darà il numero di linee per ottenere una buona percentuale di copertura

Immagina di usare la dimensione della password =6 e lo spazio 0123456789 , le possibilità sono 1 000 000 (le dimensioni e lo spazio sono bassi perché è più facile allenarsi e fare il debug, in un grande spazio sarebbe più difficile, aspetto avere qualcosa che funzioni per provare su più grande)

Come faccio a scegliere tra:

  • 4000 catene di dimensioni 250
  • 1000 catene di 1000
  • 400 catene di dimensioni 2500
  • ...

Sto usando sha1 in hash, e per ridurre prendo le 6 prime cifre e aggiungo un valore index (deriva dal ciclo della catena)

public static String reduce(String hash, BigInteger spaceSize, int passSize, int indexFunction) {
    int v = BigInteger.valueOf((Long.parseLong(hash.replaceAll("\D", "").substring(0, passSize), 10) + indexFunction)).mod(spaceSize).intValueExact();
    DecimalFormat format = new DecimalFormat("000000");
    return format.format(v);
}
    
posta azro 27.09.2018 - 18:44
fonte

2 risposte

1

La scelta della dimensione della catena, t, influenza la dimensione della memoria e il tempo di ricerca. Al e devi calcolare il 1000000 elemento della catena.

  • 4000 catene di dimensioni 250; 8000 dimensioni di archiviazione del risultato hash, ordinamento di 4000 elementi, tempo di ricerca al massimo 250 ore di catena e 250 * log_2 (4000) tempo di ricerca.
  • 1000 catene di dimensione 1000; 2000 dimensioni di archiviazione del risultato dell'hash, l'ordinamento di 1000 elementi; tempo di ricerca al massimo 1000 ore di catena e 1000 * log_2 (1000) tempo di ricerca.
  • 400 catene di dimensioni 2500; 800 dimensioni di archiviazione del risultato dell'hash, l'ordinamento di 400 elementi; tempo di ricerca massimo di 2500 ore di catena e 2500 * log_2 (400) tempo di ricerca.

L'uso può utilizzare questo sito per calcolare i parametri.

    
risposta data 27.09.2018 - 19:12
fonte
0

La lunghezza della catena è sostanzialmente il tempo. Una catena più lunga impiega più tempo a calcolare. Per recuperare una password quando è stata trovata in una catena, la lunghezza della catena determina quanti calcoli devi eseguire per calcolare l'originale.

Il conteggio delle catene è fondamentalmente una copertura. Se hai più catene, supponendo che tutto il resto rimanga uguale, hai una copertura migliore. Puoi anche ottenere una copertura migliore usando catene più lunghe, però, ma stai aumentando il tempo.

Per ulteriori informazioni sulle tabelle arcobaleno, vedi questa domanda: Quali sono le tabelle arcobaleno e come vengono utilizzate? Penso che la mia risposta su quella pagina anche risponde alla tua domanda su come scegliere il conteggio e la lunghezza della catena, sotto l'intestazione " Proprietà di ridimensionamento ".

    
risposta data 27.10.2018 - 23:23
fonte

Leggi altre domande sui tag