Spiegazione della protezione della password del foglio di lavoro di Excel

Hai mai perso la password del tuo foglio di lavoro Excel?

Protezione del foglio di lavoro in Excel 2010

Come nelle precedenti versioni di Office, i fogli di lavoro e la struttura della cartella di lavoro in Excel 2007 o successive sono protetti da una password. 

Per salvaguardare la password originale contro l’hacking, Excel non salva la vera password dell’utente all’interno del file OpenXML, ma un hash crittografico.

https://tuttodigitale.net/proteggere-excel-con-una-password-ecco-come-funziona/

Gli algoritmi di hash sono funzioni unidirezionali che convertono le password in un testo di lunghezza fissa che non può essere invertito. Anche un piccolo cambiamento nell’input sorgente risulta in un output completamente diverso.

Così, quando si tenta di togliere la protezione ad un foglio, Excel calcola l’hash della password inserita contro l’hash della password originale memorizzata all’interno del file OpenXML. Se i due hash corrispondono, il foglio viene sprotetto.

Se avete perso la vostra password, l’unica alternativa, a parte ricreare il file, è quella di decifrare l’hash.

Tuttavia, è impossibile recuperare le password esatte del foglio o della struttura della cartella di lavoro, anche se i vostri file Excel vengono violati e l’hash viene rivelato, poiché gli hash non possono essere invertiti per progettazione.

Fino a Office 2010, Excel utilizzava un algoritmo di hashing obsoleto per proteggere le nostre password. Per molti anni, la protezione del foglio sembrava orientata a prevenire la modifica accidentale piuttosto che progettata per proteggere il contenuto del foglio da manomissioni malevole. 

L’algoritmo di hash delle password è documentato nel capitolo 4.18.4 della documentazione tecnica di OpenOffice e in questo link. La lunghezza dell’hash utilizzato fino a Office 2010 è di soli 16 bit. 

A causa della breve lunghezza dell’hash, molte password diverse condividono lo stesso hash. Non siete convinti? Bene, proteggete un foglio di lavoro usando la password di prova e poi togliete la protezione allo stesso foglio di lavoro usando le password zzyw, BBAb o pqpp. Funziona, poiché tutte e 4 le password (tra le tante) condividono l’hash CBEB! In terminologia crittografica, significa che questo algoritmo di hashing mal progettato permette numerose collisioni.

Le password della cartella di lavoro e del foglio di lavoro possono essere facilmente decifrate da un attacco di forza bruta sulle password hash memorizzate in Excel utilizzando il codice VBA. Anche se gli attacchi di forza bruta sono di solito computazionalmente costosi, le password dei fogli di lavoro possono essere decifrate in pochi secondi a causa della breve lunghezza dell’algoritmo di hashing obsoleto.

Gli attacchi di forza bruta funzionano provando le password con ogni possibile combinazione di caratteri fino ad una data lunghezza. Una procedura VBA generica per sbloccare le password della cartella di lavoro e del foglio è elencata di seguito.

I file OpenXML sono essenzialmente contenitori zippati. Rinomina l’estensione di qualsiasi file Excel .xlsx / .xlsm / .xlsb o .xlam in .zip. Troverai diversi file con codice XML all’interno dell’archivio ZIP.

Un metodo alternativo per rimuovere la protezione del foglio è quello di modificare i file XML del foglio e rimuovere il nodo sheetProtection. Non entrerò nei dettagli su come raggiungere questo obiettivo, poiché la cartella di lavoro può essere facilmente danneggiata anche da un piccolo errore di codifica XML.