title: Crittografia funzionale
text: # Crittografia funzionale
  
  La crittografia funzionale è un tipo di crittografia a chiave pubblica, dove chi è in possesso della chiave segreta può imparare una funzione di ciò che è cifrato nel testo. La crittografia funzionale generalizza molte primitive crittografiche, come ad esempio la crittografia su base identità (IBE) e la crittografia su base attributi (ABE).
  
  ## Storia
  
  La crittografia funzionale è stata introdotta ne 2005 da Amit Sahai e Brent Waters e formalizzata successivamente da Dan Boneh e Amit Sahai nel 2010. Gli schemi proposti, tuttavia, supportano solo un insieme ridotto di funzionalità: per questo motivo nel corso degli anni sono stati effettuati diversi lavori di ricerca per fornire costruzioni universali di crittografia funzionale, in grado cioè di supportare funzioni arbitrarie.
  
  ## Definizione
  
  Uno schema a chiave pubblica è composto da tre algoritmi:
  
  * $KeyGen(1^{\lambda })\rightarrow (pk,sk)$
  * $Enc(pk,m)\rightarrow c$
  * $Dec(sk,c)\rightarrow m$
  
  Solo il proprietario di $sk$ può decifrare $c$ e ottenere $m$, tutti gli altri non possono ottenere nessuna informazione.
  
  Uno schema di crittografia funzionale aggiunge un quarto algoritmo:
  
  * $Setup(1^{\lambda })\rightarrow (pk,msk)$
  * $KeyDer(msk,f)\rightarrow sk_{f}$
  * $Enc(pk,m)\rightarrow c$
  * $Dec(sk_{f},c)\rightarrow f(m)$
  
  Questo quarto algoritmo permette al possessore della chiave $sk_{f}$ di decriptare solamente una funzione del messaggio e non il messaggio per intero.
  
  Prendiamo ad esempio in considerazione un messaggio composto da un insieme $N$ di numeri; il possessore della chiave $sk_{avg}$ potrà decriptare il valore della media dei valori di $N$ senza avere accesso a nessun'altra informazione sul messaggio originale.
  
  