Elia Tufarolo

PHP aggiunge il supporto ad Argon2

Vincitore della Password Hashing Competition, Argon2 viene incluso all'interno di PHP e si candida come probabile sostituto di BCrypt per il prossimo futuro

Roma - La nuova versione di PHP - la 7.2 - rilasciata lo scorso 30 novembre, include diversi miglioramenti relativi alla sicurezza e agli algoritmi crittografici e di hashing.


Il cambiamento principale di questa release è senza alcun dubbio l'introduzione di un nuovo algoritmo di hashing - Argon2, versione 1.3 - che sarà utilizzabile lanciando la funzione password_hash(), utilizzando la costante PASSWORD_ARGON2I come secondo argomento.

L'algoritmo Argon2 si è aggiudicato la Password Hashing Competition indetta nel 2013 da un team di esperti di sicurezza guidato da Jean Philippe Aumasson. L'algoritmo possiede tre caratteristiche importanti che lo rendono superiore a BCrypt, il quale rappresenta tuttora l'algoritmo di hashing predefinito di PHP: è possibile definire dei limiti al suo utilizzo del tempo, sia come numero di iterazioni che come tempo di esecuzione, della memoria e del numero di thread paralleli. BCrypt possiede invece un solo fattore di costo, poiché risale al 1999 e utilizza un solo core della CPU; al tempo non erano ancora presenti sul mercato i processori multi-core.

Altro cambiamento introdotto con PHP 7.2 riguarda il graduale abbandono della libreria Mcrypt, il cui sviluppo è stato abbandonato nel 2007 e che per questo motivo presenta numerosi bug irrisolti: Mcrypt non sarà più inclusa nel core di PHP, ma entrerà a far parte del PECL, il repository delle estensioni; ad ogni modo, le funzioni di Mcrypt lanceranno d'ora in avanti notifiche di tipo E_DEPRECATED. Una libreria analoga ad Mcrypt, libsodium, effettuerà la transazione opposta, passando dal PECL al pacchetto core del linguaggio.

Altri cambiamenti minori riguardano il miglioramento di alcune costanti relative al TLS, la restituzione di warning per l'uso improprio della funzione count(), la possibilità di forzare l'utilizzo del tipo object come parametro o come valore restituito di una funzione, miglioramenti ai cast da object ad array e viceversa, il refactoring dell'estensione Hash, al fine di utilizzare internamente object anziché resource.

Elia Tufarolo
Notizie collegate