[[File:Facciamo breccia 2008 by Stefano Bolognini18.JPG|thumb|Manifestazione anticlericale ''Facciamo Breccia'', 9 febbraio 2008, Roma, Italia.]]
[[Immagine:Hash function long.svg|thumb|upright=1.5|Una funzione crittografica di hash al lavoro ([[SHA1]]). Anche piccole modifiche ai dati di ingresso causano un notevole cambiamento dell'uscita: si tratta del cosiddetto [[:en:Avalanche_effect|effetto valanga]].]]
In [[informatica]] una '''funzione crittografica di hash''' è una classe speciale delle [[Funzione di hash|funzioni di hash]] che dispone di alcune proprietà che lo rendono adatto per l'uso nella [[crittografia]].
La '''Federazione anarchica italiana''' ('''FAI''') è un'organizzazione di gruppi [[anarchia|anarchici]] [[italia]]ni. Da non confondere con la [[Federazione anarchica informale]] che è invece un'organizzazione eversiva anarco-insurrezionalista.
Si tratta di un [[algoritmo]] matematico che [[Mappa (matematica)|mappa]] dei dati di lunghezza arbitraria (''messaggio'') in una [[stringa (informatica)|stringa]] binaria di dimensione fissa chiamata ''valore di hash'', ma spesso viene indicata anche con il termine inglese ''message digest (o semplicemente digest)''. Tale funzione di hash è progettata per essere [[Funzione unidirezionale|unidirezionale]] (''one-way''), ovvero una funzione difficile da invertire: l'unico modo per ricreare i dati di input dall'output di una funzione di hash ideale è quello di tentare una ricerca di [[Metodo forza bruta|forza-bruta]] di possibili input per vedere se vi è corrispondenza (match). In alternativa, si potrebbe utilizzare una [[tabella arcobaleno]] di hash corrispondenti.
Viene fondata nel [[Congresso anarchico di Carrara (1945)|congresso di Carrara]] del [[1945]], ripartendo dall'esperienza dell'[[Unione anarchica italiana]] (UAI), costituitasi sulla base della ''Dichiarazione di principi'' del congresso di [[Bologna]] nel [[1920]], poi entrata in clandestinità durante il periodo [[fascista]] e la [[seconda guerra mondiale]].
La funzione crittografica di hash ideale deve avere alcune proprietà fondamentali:
# deve identificare univocamente il messaggio, non è possibile che due messaggi differenti, pur essendo simili, abbiano lo stesso valore di hash;
# deve essere [[:en:Deterministic_algorithm|deterministico]], in modo che lo stesso messaggio si traduca sempre nello stesso hash;
# deve essere semplice e veloce calcolare un valore hash da un qualunque tipo di dato;
# deve essere [[Teoria della complessità computazionale|molto difficile o quasi impossibile]] generare un messaggio dal suo valore hash se non provando tutti i messaggi possibili.
Tali caratteristiche permettono alle funzioni crittografiche di hash di trovare ampio utilizzo negli ambiti della [[sicurezza informatica]], quali [[:en:Digital_signature|firme digitali]], [[Message authentication code|codici di autenticazione dei messaggi]] (MACs) e altre forme di [[autenticazione]]. Possono essere utilizzati anche come funzioni di hash ordinarie, per indicizzare i dati nelle [[Hash table|tabelle di hash]], per la rilevazione di [[Fingerprint|impronte digitali]], per rilevare dati duplicati o identificare in modo univoco i file e come [[checksum]] per rilevare la corruzione accidentale dei dati. Infatti, nei contesti di sicurezza informatica, i valori di hash crittografici sono talvolta chiamati ''impronte digitali'' o ''checksum'' anche se tutti questi termini hanno funzioni più generali con proprietà e scopi piuttosto diversi.
Gli aderenti si riconoscono nel "Patto associativo" che regola la vita della federazione e nel "Programma anarchico" che ne sintetizza il progetto politico.
==Proprietà==
La maggior parte delle funzioni di hash crittografiche sono progettate per prendere in input una stringa di qualsiasi lunghezza e produrre in output un valore di hash di lunghezza fissa. Queste funzioni devono essere in grado di resistere a tutti gli attacchi basati sulla [[crittoanalisi]]: per fare questo, si definisce il livello di sicurezza di una funzione di hash crittografica facendo riferimento alle seguenti proprietà:
Il settimanale ''[[Umanità Nova]]'', fondato nel '20 da [[Errico Malatesta]], è ancora oggi edito dalla Federazione.
#'''resistenza alla preimmagine''': dato un valore di hash ''h,'' deve essere difficile risalire ad un messaggio ''m'' con ''hash(m) = h''. Questa proprietà deriva dal concetto di funzione unidirezionale. Funzioni che non dispongono di questa proprietà sono vulnerabili agli attacchi preimmagine.
#'''resistenza alla seconda preimmagine''': dato un input ''m1,'' deve essere difficile trovare un secondo input ''m2'' tale che ''hash(m1) = hash(m2)''. Funzioni che non dispongono di questa proprietà sono vulnerabili agli attacchi alla seconda preimmagine.
#'''resistenza alla collisione''': dati due messaggi ''m1'' ed ''m2,'' deve essere difficile che i due messaggi abbiano lo stesso hash, quindi con hash(m1) = hash(m2). Tale coppia è chiamata ''[[Collisione hash|collisione di hash]] crittografica''. Questa proprietà a volte è indicata come ''forte resistenza alla collisione''. La resistenza alla collisione implica una resistenza alla seconda preimmagine, ma non implica la resistenza alla preimmagine: rispetto a quest'ultimo, richiede un valore di hash almeno due volte più lungo, altrimenti le collisioni possono essere trovate da un [[attacco del compleanno]].
Nel corso del [[Congresso anarchico di Carrara (1965)|congresso di Carrara del 1965]] si determinò una scissione da cui sorsero i [[Gruppi di iniziativa anarchica]].
Queste proprietà implicano che un eventuale attacco non permetta di rimpiazzare o modificare un messaggio senza conseguenze sul risultante valore di hash. Pertanto, se due stringhe hanno lo stesso digest, si può essere fiduciosi nel pensare che siano identiche. In particolare, la resistenza alla seconda preimmagine dovrebbe impedire ad avversario maligno di elaborare un messaggio con lo stesso hash di un messaggio che l'avversario stesso non può controllare. La resistenza alla collisione, invece, impedisce all'attaccante di creare due messaggi distinti con lo stesso hash.
A livello internazionale, dal [[1968]] la Federazione anarchica italiana è membro fondatore della [[International of Anarchist Federation]]s (IAF-IFA), che raccoglie le principali federazioni anarchiche del mondo e che è stata costituita in [[Congresso anarchico di Carrara (1968)|un congresso internazionale svoltosi a Carrara]].
In pratica, una funzione hash è solo una resistenza alla seconda pre-immagine. Motivo per cui è considerata insicura e, di conseguenza, non raccomandata per applicazioni reali. D'altra parte, la resistenza alle collisioni risulta insufficiente per molti usi pratici. Oltre ad essa, non dovrebbe essere possibile per un avversario trovare due messaggi con digest sostanzialmente simili o poter dedurre informazioni utili del messaggio partendo dal suo valore di hash. Quindi una funzione crittografica di hash deve essere il più possibile simile ad una funzione random (spesso chiamata ''[[oracolo random]]'') rimanendo comunque deterministica e semplice da calcolare. Ciò esclude le funzioni SWIFFT, delle quali è dimostrato che sono rigorosamente resistenti alla collisione, sempre se si suppone che determinati problemi sui reticoli ideali siano computazionalmente difficili; se intese come funzioni lineari, non portano a soddisfare queste proprietà. Gli algoritmi di checksum, ad esempio, come [[Cyclic redundancy check|CRC]] e altri controlli di ridondanza ciclici, poichè lineari, sono progettati per soddisfare requisiti molto più deboli essendo troppo facili da invertire e generalmente non sono adatti come funzioni di hash crittografiche.
== Gruppi ==
È importante precisare però che, pur possedendo una funzione in grado di soddisfare tutti questi criteri, si può ancora andare incontro a delle proprietà indesiderate. Le funzioni crittografiche di hash attualmente usate sono vulnerabili agli attacchi di lunghezza-estensione: dati ''hash(m)'' e ''len(m)'', ma non ''m'', scegliendo un appropriato ''m''', un attaccante può calcolare ''hash(m'' || ''m'), dove'' || indica la concatenazione. Questa proprietà può essere utilizzata per rompere gli schemi di autenticazione ingenui basati sulle funzioni hash. La costruzione di [[HMAC]] lavora su questi tipi di problemi.
I gruppi e le federazioni locali della FAI sono presenti in tutta Italia:
{{Colonne}}
* [[Alessandria]] Forte Guercio
* [[Alessandria]] Laboratorio PerlaNera
* [[Asti]] Laboratorio Autogestito La Miccia, via Toti n°5
* [[Asti]] Centro di Documentazione Libertario Felix https://cdlfelix.noblogs.org/chi-siamo/
* [[Fubine Monferrato]] Association Aides et Actions 2M
* [[Cuneo]]
* [[Savona]] Circolo [[Pietro Gori]]
* [[La Spezia]]
* [[Milano]] [[Circolo anarchico Ponte della Ghisolfa]] , viale Monza 255
* [[Torino]] F.A.T. (federazione anarchica torinese), c.so Palermo 46
* [[Trieste]] [[Germinal]] via del Bosco, 52 (sede della Commissione di Corrispondenza della F.A.I)
* [[Pordenone]] redazione di [[Umanità Nova]] c/o Cristina Tonsig, casella portale 89 PN-
Centro cell.348/540.9847
* [[Bologna]]
* [[Rimini]]
* [[Parma]]
* [[Imola]]
* [[Reggio Emilia]] Circolo [[Camillo Berneri]], via don Minzoni 1/d
{{Colonne spezza}}
* [[Ancona]]
* [[Jesi]]
* [[Livorno]]
* [[Piombino]]
* [[Firenze]]
* [[Arezzo]]
* [[Pisa]]
* [[Carrara]] c/o La Cooperativa Tipolitografica, via S. Piero 13/a
* [[Terni]]
* [[L'Aquila]]
* [[Chieti]]
* [[Roma]]
* [[Rieti]]
{{Colonne spezza}}
* [[Frosinone]]
* [[Viterbo]]
* [[Napoli]] Circolo Francesco Mastrogiovanni
* [[Salerno]]
* [[Taranto]]
* [[Lecce]]
* [[Cosenza]]
* [[Spezzano Albanese]]
* [[Palermo]]
* [[Trapani]]
{{Colonne fine}}
==Bibliografia==
'''<big>Grado di difficoltà</big>'''
* Giorgio Sacchetti, Massimo Varengo, Antonio Senta, Massimo Ortalli, ''Con l'amore nel pugno. Federazione Anarchica Italiana Storia e documenti (1945-2012)'', Milano, Zero in Condotta, 2018.
*Antonio Cardella, Ludovico Fenech, ''Anni senza tregua. Per una storia della Federazione Anarchica Italiana dal 1970 al 1980'', Milano, Zero in Condotta, 2005.
*{{cita libro|titolo=Congressi e convegni della Federazione Anarchica Italiana. Atti e documenti (1944-1995)|curatore=[[Ugo Fedeli]], [[Giorgio Sacchetti]]|città=Chieti|editore= Centro studi libertari Di Sciullo|anno=2003|url=http://bibliotecaborghi.org/wp/wp-content/uploads/2016/02/Congressi-e-convegni-della-FAI.pdf|cid=Fedeli, Sacchetti}}
* {{cita libro|autore=Gino Cerrito|titolo=Il ruolo della organizzazione anarchica. L'efficientismo organizzativo il problema della minoranza il periodo transitorio classismo e umanismo|volume=|città=Catania|editore=RL|anno=1973|cid=Cerrito}}
== Voci correlate ==
Nella crittografia pratica, con il termine "difficile" in genere si intende "quasi certamente oltre la portata di un qualsiasi avversario al quale deve essere impedito di rompere il sistema finché la sicurezza del sistema venga ritenuta importante". Il significato del termine è quindi leggermente dipendente dall'applicazione, poichè lo sforzo che un agente maligno può dedicare al suo lavoro è di solito proporzionale al suo guadagno previsto. Tuttavia, dal momento che gli sforzi da parte dell'attaccante aumentano rapidamente con la lunghezza del digest, gioverebbe il sistema se ad esso venissero aggiunte alcune dozzine di bit, con la capacità di neutralizzare anche un vantaggio di un migliaio di volte nel potere di elaborazione.
* [[Internazionale delle federazioni anarchiche]]
* [[Anarchia|Anarchici]]
* [[Anarchismo]]
* [[Federazione anarchica pisana]]
* [[Unione Sindacale Italiana]]
* [[Gruppi Anarchici di Azione Proletaria]]
* [[Unione anarchica italiana]]
== Collegamenti esterni ==
Per messaggi brevi, come ad esempio le [[password]], si può riuscire ad invertire un hash provando tutti i messaggi possibili nell'insieme ma, poichè le funzioni crittografiche di hash sono progettate per essere calcolate rapidamente, sono state sviluppate delle [[Derivazione di una chiave crittografica|funzioni di derivazione della chiave]] che richiedono maggiori risorse di calcolo rendendo, di conseguenza, più difficili possibili attacchi di forza bruta.
* {{Collegamenti esterni}}
{{Controllo di autorità}}
In alcune [[Teoria della complessità computazionale|analisi teoriche]], "difficile" assume un significato matematico specifico, come "non risolvibile nel [[Complessità temporale|tempo polinomiale asintotico]]". Tali interpretazioni di difficoltà sono importanti nello studio di [[:en:Security_of_cryptographic_hash_functions#Provably_secure_hash_functions|funzioni crittografiche di hash probabilmente sicure]], ma solitamente non hanno corrispondenza nella sicurezza pratica. Ad esempio, si può notare come un algoritmo di [[tempo esponenziale]] può talvolta essere abbastanza veloce da rendere un attacco fattibile; d'altra parte, un algoritmo di [[tempo polinomiale]], contrariamente a quello esponenziale, può risultare troppo lento per qualsiasi uso pratico.
{{Portale|anarchia}}
[[Categoria:Anarchia]]
== Applicazioni==
[[Categoria:Associazioni politiche italiane]]
[[Categoria:Organizzazioni anarchiche]]
===Verifica dell'integrità di un messaggio===
Un'importante applicazione delle funzioni crittografiche di hash è nella verifica dell'[[integrità dei dati|integrità di un messaggio]]. Infatti grazie alle proprietà di queste funzioni è possibile verificare se sono stati compiute modifiche al messaggio confrontando il suo hash prima e dopo la trasmissione. Per questo motivo l'hash di un messaggio viene anche detto [[fingerprint|impronta digitale]] del messaggio.
===Verifica delle password===
Nelle applicazioni che necessitano autenticazione è troppo rischioso salvare le password di tutti gli utenti ''in chiaro'', cioè su un file non [[crittografia|cifrato]], soprattutto nel caso in cui esso venga compromesso. Un modo per ridurre questo rischio è di salvare l'hash di ogni password e confrontare quindi questi ad ogni autenticazione.
===Proof-of-Work===
Il [[proof-of-work]] è una misura economica per scoraggiare attacchi di tipo [[denial of service]] e altri abusi di servizio, come spam sulla rete, imponendo alcuni lavori dal richiedente del servizio, di solito intendendo tempo di elaborazione di un computer.
Un sistema famoso, usato anche nella creazione di [[bitcoin]], usa inversioni di hash parziali per verificare che il lavoro sia fatto.
===Identificativo di File o Dati===
Un'altra applicazione in cui queste funzioni sono utilizzate è l'identificazione di file. Le applicazioni che necessitano gestire grandi quantitativi di dati e file come: [[controllo versione|software di controllo di versione]], reti [[peer-to-peer]] e [[database]], utilizzano funzioni di hash per generare codici univoci per ogni file, semplificando quindi la loro identificazione e ricerca.
A questo scopo però la computazione richiesta dalle funzioni crittografiche di hash è un po' più elevata rispetto a quella delle [[funzione di hash|funzioni di hash]], per questo motivo si preferisce usarle in contesti dove è fondamentale la protezione dei dati da attacchi.
===Generazione di numeri pseudocasuali e chiavi di derivazione===
Le funzioni di hash possono essere impiegate anche per la generazione di [[numeri pseudocasuali|stringhe pseudorandom]] o per la [[derivazione di una chiave crittografica|derivazione di chiavi e password]] da una singola chiave o password sicura.
==Algoritmi di hash crittografico==
Ad oggi esistono molte funzioni crittografiche di hash, anche se per alcune di esse è provato siano vulnerabili{{citazione necessaria}}. Anche se una funzione non è mai stata violata un [[crittoanalisi| attacco crittografico]] ad una sua variante andato a buon fine porta ad una perdita di fiducia e abbandono di quella funzione.<br/>Le funzioni crittografiche di hash comunemente utilizzate in diversi standard e applicativi sono [[MD5]] e [[SHA-1]]{{citazione necessaria}}.
Nel 2005 sono stati individuati problemi di sicurezza relativi ad entrambi gli standard citati, in particolare si ritiene possibile che questi siano affetti da criticità matematiche tanto da rendere necessaria la ricerca di nuovi e più robusti schemi di hashing. Nel 2008 un attacco ad una debolezza di MD5 ha compromesso la sicurezza di [[Transport Layer Security]]<ref>Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, Benne de Weger, [http://www.win.tue.nl/hashclash/rogue-ca/ MD5 considered harmful today: Creating a rogue CA certificate], accessed March 29, 2009.</ref>. Nel 2007 il [[National Institute of Standards and Technology]] ha indetto un concorso per la definizione della funzione di hash che avrebbe preso il nome [[SHA-3]] e sarebbe stata soggetta allo standard [[Federal Information Processing Standard|FIPS]]<ref>[http://csrc.nist.gov/groups/ST/hash/sha-3/index.html NIST.gov - Computer Security Division - Computer Security Resource Center]</ref>.
Il 23 febbraio 2017 un team di ricercatori di Google ha annunciato di aver realizzato con successo la prima collisione per SHA-1 nell'ambito del progetto ''SHAttered''<ref>{{Cita web|url=https://shattered.io/|titolo=SHAttered|sito=shattered.io|lingua=en|accesso=2017-06-06}}</ref>, avendo creato con successo due diversi file PDF aventi lo stesso hash. <br>
==Note==
<references/>
{{Hash e MAC}}
{{Portale|Crittografia|Sicurezza informatica}}
[[Categoria:Hash crittografici]]
|