L'entropia della password corrisponde a un alfanumerico, ma nella password sono presenti caratteri speciali

2

Ho un problema a violare alcuni dei fondamenti sulle entropie delle password. Vale a dire: ho letto questo articolo su un ragazzo che ha rotto DKIM di Google ( forse più notando che i tasti sono solo 512 bit)

Poi ho provato a controllare se è veramente 512 o qualcosa di più ecc. Ho finalmente trovato la pagina di Wikipedia link questo mi spiegherebbe come viene calcolata la lunghezza di una chiave.

Quindi usando la tabella fornita qui computo la chiave examplar: jL/Dw06dEEleG8YQSm0ZmlMVoDzfy2g4cDWA/NceLTocnDRzh3zpfQX91IRnu7qNAaao23+0E0nFT3NnfGuyS7gC7f17vGZQJ2IhsW/xrJ/LQ77ogGf/dbaCLHX016mmSmNXq4oPfsoLwnO8MjnP3kj341mDNf5750WlpNPNrV2e/7ZBImBt8ZxFGMe6fXjQVlzzU2MYE+JOs1bF8KisU1sbi+kzdq8NP8qz+dvdAxbXez/7C57yPXZhkqf8iWO8Hn7y/n2ekcDXE+9bYK5cPiOZY0eUwd1odNRF7FhmuCBIkO6LjF9/373sGIw/6fcJQ7plyhE1ExooM7j9H7FUuw==

344 caratteri.

Dalla tabella wiki abbiamo

Dove,Lèlalunghezzadiunapasswordconcopmlessitydesiderata(entropia)HeNèilnumerodisimbolinell'insiemeincuistiamolavorando(adesempio62incaratterialfanumericio95dicaratteristampabiliASCII).

Quindilamiadomandaquiè:percomplessità2048bit,caratterialfanumericiottengo:

L= ~~ 344

dove questa è la lunghezza del nostro hash, quindi perché ci sono / e + e = nella password. È perché è codificato con base64 ?

PS

Se provo a decodificare questa chiave con base64 e ASCII charset, ottengo un po 'di spazzatura

NI^JmS<h8p5-:4s|}gIOsg|kK{fP'b!oCgu,uJcW~s29HY5{E]A"'mE}xV\ScNVS[3v
?{?=vac~}['\>#cGhtEXf H_?   Ce5(3T

Che cosa sto facendo da qui? Per quanto ne so, nessuna funzione di hashing restituisce caratteri speciali.

    
posta Patryk 26.10.2012 - 16:27
fonte

2 risposte

3

Il codice è codificato Base64.

La codifica Base64 consente di archiviare i dati come ASCII, poiché l'output di tale codifica utilizza solo a-z , A-Z , 0-9 , / e . , con = per riempimento. La "spazzatura" che vedi è la rappresentazione ASCII dei byte non elaborati della chiave.

La tua analisi di entropia è quindi molto vicina alla correzione, perché il set di caratteri dei dati è 64, non 62. Se facciamo i calcoli, log2(64) è 6, che rende la lunghezza ideale per 2084 bit di entropia 341.333 byte . Poiché non è possibile memorizzare 0,333 di un byte, si può presumere che la lunghezza ideale della codifica base64 di qualsiasi dato con 2084 bit di entropia sia di 342 byte. Ora notate che ci sono due caratteri di riempimento alla fine della stringa base64, il che significa che la lunghezza reale è in realtà 342 byte. Come tale, abbiamo appena dimostrato che la chiave ha l'entropia ideale.

    
risposta data 26.10.2012 - 16:46
fonte
2

La codifica Base64 è solo un trucco con cui i byte arbitrari sono codificati in caratteri che possono essere scritti ovunque "testo" è supportato (ad esempio in un record TXT nel DNS). Tre byte diventano quattro caratteri. Hai 344 caratteri, che è 4 * 86, quindi codifica 3 * 86 byte, cioè 258 - ma i due caratteri finali sono '=', il che significa che i due byte finali devono essere ignorati (sono stati aggiunti perché il la lunghezza dei dati di origine non era un multiplo di 3, è solo una sorta di riempimento).

Quindi questa è la codifica Base64 di una sequenza di 256 byte, esattamente. Succede quindi che la chiave DKIM di Google ora sia una chiave RSA a 2048 bit; il componente principale di quella chiave è un grande numero intero di dimensioni 2048 bit (cioè maggiore di 2 2047 , inferiore a 2 2048 ), che, quando codificato, ha dimensioni esattamente 256 byte. Questo è ciò che osservi, quindi va bene.

(È una chiave RSA: un oggetto matematico che non deve essere ricordato o digitato da un essere umano, quindi non è una password.)

    
risposta data 26.10.2012 - 17:33
fonte

Leggi altre domande sui tag