PHP - Password_hash / Argon2i tronca efficacemente le password dopo una certa lunghezza?

0

Se non sbaglio, per impostazione predefinita il password_hash di PHP con PASSWORD_ARGON2I genera tra le altre cose un hash alfanumerico di 43 caratteri. Mentre ciò significa che le password semplici che sono più corte di 43 caratteri o quelle che usano solo caratteri alfanumerici (o meno) sarebbero sufficientemente crittografate, vorrei sapere se questo effettivamente produce password dopo che una lunghezza certiana è stata troncata. Inoltre, in che modo influisce sulle password di lunghezza sufficiente che utilizzano caratteri speciali?

Perché non sarebbe più sicuro usare un hash più lungo?

    
posta Dwarf Vader 25.03.2018 - 21:14
fonte

1 risposta

1

Argon2 è una funzione di derivazione della chiave o KDF. È progettato per essere computazionalmente costoso e richiede una grande quantità di memoria di lavoro per rendere più difficili gli attacchi di forza bruta. Internamente, Argon2 utilizza una funzione di hash rapida crittograficamente protetta chiamata Blake2b .

Una funzione di hash prende un input di lunghezza arbitraria (il messaggio ) e lo mappa su un output di lunghezza fissa (il digest ). Quando un singolo bit nel messaggio cambia, il 50% dei bit nel digest dovrebbe cambiare. Ciò significa in effetti che qualsiasi modifica apportata all'input produce risultati completamente diversi. Poiché il digest è di dimensioni fisse, il principio di pigeonhole stabilisce che ci saranno alcuni messaggi distinti che inevitabilmente si tradurranno nello stesso output digerire. Una funzione hash crittograficamente protetta garantisce che non ci sia un modo matematico per prevedere quali input genereranno output identici. Qualsiasi tecnica che renda facile trovare tali uscite identiche è un attacco di collisione.

Un attacco di collisione è qualsiasi attacco contro una funzione di hash f dove viene trovata una coppia di input m ≠ m ' e f (m) = f ( m ') . Un output con codifica Base64 a 43 caratteri è costituito da 256 bit di dati. A causa del compleanno paradosso , la resistenza alla collisione di un digestione n bit (un digest con uno spazio tasti di 2 n ) è 2 n / 2 . Ciò significa che la resistenza di collisione di un digest a 256 bit sarà 2 256/2 = 2 128 . Una spiegazione più matematica delle collisioni delle funzioni di hash e il paradosso dei compleanni è fornito su Crypto.SE .

In senso informativo-teorico, sarebbe più sicuro usare un output digest più grande in quanto lo spazio di output sarebbe più grande. In pratica , la resistenza di collisione a 128 bit è più che sufficiente.

    
risposta data 31.03.2018 - 08:08
fonte

Leggi altre domande sui tag