Crittografia omomorfica

Abbozzo crittografia
Questa voce sugli argomenti crittografia e informatica è solo un abbozzo.
Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti dei progetti di riferimento 1, 2.
Abbozzo informatica

La crittografia omomorfica (dall'inglese homomorphic encryption o semplicemente HE) è un tipo di crittografia basata su tecniche che permettono la manipolazione di dati cifrati. Ad esempio, avendo due numeri X {\displaystyle X} e Y {\displaystyle Y} (cifrati con lo stesso algoritmo omomorfico a partire da due numeri A {\displaystyle A} e B {\displaystyle B} ) è possibile calcolare la cifratura della somma di A {\displaystyle A} e B {\displaystyle B} sommando direttamente X {\displaystyle X} e Y , {\displaystyle Y,} senza bisogno di effettuare la decifratura.

La crittografia omomorfica si suddivide in varie famiglie, due delle principali sono: la crittografia parzialmente omomorfica (PHE) e la crittografia completamente omomorfica (FHE). La crittografia parzialmente omomorfica può elaborare un solo tipo di operazione, tipicamente l'addizione o la moltiplicazione. Mentre la crittografia completamente omomorfica può elaborare tutte le operazioni necessarie, ad esempio le operazioni aritmetiche o le funzioni booleane AND, OR, NOT.

Storia

Alla fine degli anni settanta e ancora agli albori della crittografia a chiave pubblica, Rivest, Adleman e Dertouzos[1] proposero il paradigma degli omomorfismi privati, successivamente noto in letteratura come crittografia omomorfica, per poter effettuare dei calcoli su dati cifrati. In particolare, la situazione che i tre studiarono fu la seguente: un client ha un certo input x {\displaystyle x} e vorrebbe calcolare f ( x ) {\displaystyle f(x)} , per una qualche funzione f {\displaystyle f} . Il client cifra x {\displaystyle x} , ottenendo un crittotesto c {\displaystyle c} che invia al server, il quale provvede ad applicare una certa funzione (che dipende da f {\displaystyle f} ) su c {\displaystyle c} e restituisce tale valore al client; quando il client decifra il valore ricevuto dal server ottiene direttamente f ( x ) {\displaystyle f(x)} . Un esempio molto semplice è fornito dal crittosistema RSA che permette di calcolare la moltiplicazione in modo omomorfico.

Definizione formale

Uno schema omomorfico Π {\displaystyle \Pi } è una tupla di algoritmi ( KGen , Enc , Dec , Eval ) {\displaystyle ({\textrm {KGen}},{\textrm {Enc}},{\textrm {Dec}},{\textrm {Eval}})} così definiti:

  • KGen ( 1 λ , 1 τ ) {\displaystyle {\textrm {KGen}}(1^{\lambda },1^{\tau })} prende in input un parametro di sicurezza λ e un ulteriore parametro τ e genera una coppia di chiavi (pk, sk)
  • Enc ( p k , b ) {\displaystyle {\textrm {Enc}}(pk,b)} restituisce un crittotesto c associato al bit di input b
  • Dec ( s k , c ) {\displaystyle {\textrm {Dec}}(sk,c)} prende in input un crittotesto c e restituisce un bit b
  • Eval ( p k , Γ , c ) {\displaystyle {\textrm {Eval}}(pk,\Gamma ,{\overrightarrow {c}})} prende in input un vettore di crittotesti e un circuito Γ, restituendo un altro vettore di crittotesti c {\displaystyle {\overrightarrow {c}}'}

Lo schema Π {\displaystyle \Pi } soddisfa la proprietà di correttezza per una classe di circuiti C = { C τ } {\displaystyle C=\{C_{\tau }\}} se per ogni coppia di chiavi generate in modo corretto si ha che:

  1. b { 0 , 1 } : P r [ Dec ( s k , Enc ( p k , b ) ) = b ] = 1 {\displaystyle \forall b\in \{0,1\}:Pr[{\textrm {Dec}}(sk,{\textrm {Enc}}(pk,b))=b]=1}
  2. Γ C τ , b = ( b 1 , , b t ) , b i { 0 , 1 } : Pr [ Dec ( s k , Eval ( p k , Γ , Enc ( p k , b ) ) ) = Γ ( b ) ] = 1 {\displaystyle \forall \Gamma \in C_{\tau },\forall {\overrightarrow {b}}=(b_{1},\dots ,b_{t}),b_{i}\in \{0,1\}:\Pr[{\textrm {Dec}}(sk,{\textrm {Eval}}(pk,\Gamma ,{\textrm {Enc}}(pk,{\overrightarrow {b}})))=\Gamma ({\overrightarrow {b}})]=1}

Si definisce capacità omomorfica dello schema la classe più ampia per cui lo schema preserva la proprietà di correttezza[2].

Applicazioni

La crittografia omomorfica è molto importante oggi, soprattutto con l'avvento del cloud computing: attualmente, infatti, i dati presenti su una piattaforma di cloud non sono totalmente sicuri, soprattutto se bisogna effettuare delle operazioni su di essi, poiché per manipolarli c'è bisogno di decifrarli. La crittografia omomorfica, invece, può risolvere questo problema e fare in modo che le informazioni memorizzate nel cloud non debbano mai essere decifrate (e che quindi siano sempre al sicuro)[3]. È già in fase di sperimentazione e di lancio sul mercato una nuova generazione di motori di ricerca come il “Crypto-Search-Engine” di Cryptolab, che riesce a fare ricerche all'interno dei dati cifrati senza conoscere né cosa si stia cercando né il contenuto dei file sui quali sta effettuando la ricerca[4].

Note

  1. ^ (EN) R. L. Rivest, L. Adleman e M. L. Dertouzos, On Data Banks and Privacy Homomorphisms, in Foundations of Secure Computation, Academia Press, 1978, pp. 169–179. URL consultato il 25 marzo 2020.
  2. ^ Lindell, 5.2.
  3. ^ Lindell, 5.1.
  4. ^ La crittografia della Blockchain, in Sapere, n. 2, 2019, pp. 16–21, DOI:10.12919/sapere.2019.02.2. URL consultato il 5 luglio 2020.

Bibliografia

  • (EN) Tutorials on the Foundations of Cryptography: Dedicated to Oded Goldreich, collana Information Security and Cryptography, Springer International Publishing, 2017, DOI:10.1007/978-3-319-57048-8, ISBN 978-3-319-57047-1.
  • (EN) Cryptography Algorithms: A guide to algorithms in blockchain, quantum cryptography, zero-knowledge protocols, and homomorphic encryption, collana Information Security and Cryptography, Packt Publishing, March 3, 2022, ISBN 1789617138.

Collegamenti esterni

  • HElib una libreria C++ open source che implementa alcuni schemi della crittografia omomorfica.
  Portale Crittografia
  Portale Sicurezza informatica