• 🏡 Home
  • 🚨 GDPR Compliant
  • ⚡️ Data Science
  • 📌 Machine Learning
  • 🔒 Privacy Preserving
  • 🏡 Home
  • 🚨 GDPR Compliant
  • ⚡️ Data Science
  • 📌 Machine Learning
  • 🔒 Privacy Preserving
machine-learning

Verifiability and Privacy Enhancing Technologies: ZKPs e TEEs

Verifiability and Privacy Enhancing Technologies: ZKPs e TEEs

La verificabilità (verifiability) di una computazione, provata da un soggetto a un altro, dimostra che questa sia avvenuta come programmato (rispettando l’accordo, dunque fedelmente o faithfully) senza compromettere la segretezza del dato.

Mi spiego meglio.

La coputation veriafiability è un’importante nozione nell’applicazione di tecniche di tutela della privacy, e cioè delle Privacy Enhancing Technology.

Devi considerare una cosa.

Il motivo di fondo per cui un simile sistema è necessario è presto detto.

In fin dei conti, per quanto avanzato un sistema possa essere, dovrà comunque rendere conto a un umano, un essere senziente che pretende (a volte giustamente) una prova concreta di quanto eseguito.

Questo è particolarmente vero per le reti neurali profonde, il cui comportamento è spesso descritto dal modello black-box.

I dati entrano, subiscono trasformazioni, ed esce una previsione che andrebbe presa per vera, affidando piena fiducia alla rete.

Immedesimati nel direttore di un fondo d’investimenti multimiliardario a cui una deep neural network consiglia, con sorpresa, di vendere diverse posizioni per alcune centinaia di milioni. (i.e. Prevedendo una diminuzione significativa dei valori azionari di alcuni titoli)

Prima di eseguire una simile operazione, sarebbe preferibile avere una prova, una spiegazione del perché il modello abbia eseguito quella previsione.

Lo stesso vale in molteplici ambiti.

Capiamolo meglio.

Privacy Preserving Verifiability

Nel nostro percorso alla scoperta delle Privacy Enhancing Technologies, abbiamo in passato esaminato le potenzialità del Federated Learning.

In questo contesto, la verifiability può essere usata da entrambe le parti:

  1. Il server garantisce ai client che le operazioni (e.g. aggregazione dati, mescolamento dei messaggi o applicazione della differential privacy) siano state eseguite fedelmente.
  2. I client provano al server che i loro dati rispettino le specifiche del protocollo (e.g. gli input hanno uno specifico range, o che i dati siano stati correttamente cifrati)

Ora la domanda emerge spontanea.

Come facciamo, in pratica, a raggiungere la tanto necessaria verificabilità computazionale?

Esistono alcuni metodi e noi ne vedremo due:

  • Zero-knowledge proofs (ZKPs)
  • Trusted Execution Environments (TEEs)

Iniziamo dal primo.

Zero-Knowledge Proofs (ZKPs)

Zero knowledge proofs (ZKPs) è una primitiva crittografica (i.e. un elemento base della crittografia) che permette a un soggetto definito prover di provare affermazioni a un altro soggetto definito verifier, che dipendono da informazioni segrete conosciute al prover, e definite witness, senza tuttavia rivelarle al verifier.

Intrigante.

In termini semplici, Zero Knowledge Proof può essere descritto come un metodo matematico per provare qualcuno che sei in possesso di un’informazione, senza tuttavia rivelarla.

In effetti Zero knowledge proofs risolvono il problema della verificabilità su dati privati.

Immagina che un gruppo di ragazzi entri in un bar e ordini un alcolico al banco.

Il barista, responsabile e attento, deve verificare che abbiano l’età sufficiente.

Ecco il problema: se i ragazzi presentassero il documento d’identità, non avrebbero un facile modo per nascondere tutte le informazioni fuorché la data di nascita.

Attraverso metodi come il Zero Knowledge Proof siamo in grado di provare che un valore (e.g. l’età) sia superiore a una certa soglia (e.g. 18 anni) senza tuttavia rivelare il valore esatto.

Properties of Zero Knowledge Proofs

Le prestazioni sono oggi stupefacenti, con la possibilità di gestire proof sizes nell’ordine di centinaia di bytes in pochi millisecondi, indipendentemente dalla dimensione dell’affermazione fornita.

Qui ringraziamo lo sviluppo della tecnologia blockchain, che ha investito ampiamente in queste tecnologie.

Ciò detto, sappi una cosa.

Una Zero-knowledge Proof ha tre proprietà salienti, che muovono dall’assunzione che prover e verifier seguino il protocollo:

  • Completeness, se l’affermazione fosse corretta allora il verifier accetterebbe la prova
  • Soundness, se l’affermazione fosse falsa allora il verifier rifiuterebbe la prova.
  • Zero-knowledge, se l’affermazione fosse vera il verifier apprenderebbe unicamente la veridicità dell’affermazione senza alcuna informazione confidenziale trasmessa nell’interazione.

Oltre queste proprietà base, esistono differenti tipologie di metodi zero-knowledge in termini di:

  • lingua delle prove
  • requisiti tecnici
  • efficienza computazionale delle parti
  • Interattività
  • Assunzioni di fondo

Per il momento ci limiteremo a concentrarci sui casi generali.

Altrimenti sai la noia di questo blogpost?

Protocolli di Zero-Knowledge

In una zero-knowledge è fondamentale la presenza di una configurazione fidata (trusted setup).

Some ZKPs si affidano alle così dette common reference string (CRS), che vengono calcolate usando secrets che devono rimanere nascosti per garantire la proprietà soundness della prova.

Un’altra proprietà significativa riguarda l’interazione necessaria tra prover e verifier per la sintesi della prova. Distinguiamo dunque due tipologie di prove:

  • non-interactive zero-knowledge proof (NIZKs), che permettono al prover di inviare un singolo messaggio al verifier senza alcuna ulteriore comunicazione;
  • interactive zero-knowledge proofs

Passiamo ora al secondo elemento per raggiungere la verifiability: trusted execution environment e remote attestation.

Application of Zero Knowledge Proofs

Vediamo rapidamente alcune applicazioni pratiche:

  • Verificare che le tasse siano state propriamente pagate da un’azienda o persona.
  • Assicurarsi che un prestito non sia troppo rischioso
  • Controllare che un dato sia stato registrato senza rivelare o trasmettere l’informazione
  • Verificare che un aereo sia stato propriamente sottoposto a manutenzione e sia idoneo al volo.

In ciascuno degli scenari di cui sopra la Zero Knowledge Proof è in grado di garantire che l’output sia correttamente calcolato su alcuni dati sensibili senza tuttavia esporne alcuno.

Per approfondire, ti lascio alcune risorse:

  • PyZKP, una libreria di OpenMined
  • Podcast su ZKP
  • Una lista curata delle migliori fonti in materia.

Trusted execution environment (TEE)

TEE (Trusted Execution Environment) fornisce una prova di verificabilità sui calcoli eseguiti, con una combinazione di hardware specifico e software scritto per gestire questi particolari componenti.

Il principio alla base è comunque piuttosto semplice.

Ammesso che il verifier conosca, o possa riprodurre, il codice binario eseguito nell’ambiente sicuro, il TEE è in grado di garantirne:

  • l’integrità (integrity): l’esecuzione del codice non può essere modificata fuorché dall’input.
  • l’attestazione (attestation): garanzia di esecuzione di uno specifico codice e comunicazione eventuale dello stato iniziale.

Più in generale definiamo attestazione remota (remote attestation) la possibilità di un verifier di misurare con sicurezza lo stato interno di una piattaforma hardware remota, per assicurare così una static or dynamic root of trust.

Questo si rivela particolarmente utile in applicazioni di federated learning, in cui i client possono verificare le funzioni eseguite sul server.

Operazioni come secure aggregation o shuffling possono quindi essere eseguite in TEEs con garanzie di privacy differenziale sugli output.

Sappi comunque che i vendor di queste tecnologie a livello business si contano sulle dita di una mano.

Intel ha una soluzione denominata Intel Software Guard Extensions (SGX)™. Esistono poi alternative come l’ARM Trustzone e l’AMD Platform Security Processor.

Se vuoi approfondire, ti rimando a questo link.

Per il momento è tutto.

Per aspera, ad astra.

Un caldo abbraccio, Andrea.

Written by Andrea Provino - Ottobre 3, 2020
Tags | data science, differential privacy, verification

You Might Also Like

aws-applied-ai-data-science-enterprise-solution-applied-ai-machine-learning-aws-example-solution-ai-business-case-study-ai-ideas

AWS for Applied AI: 4 usi pratici

Dicembre 1, 2019

Portfolio data scientist? Come realizzarne uno | Consigli Italiano

Ottobre 19, 2020
storytelling-data-science-presentations-power-point-ideas-idee-power-point-guida-italiano

Storytelling efficace: l’unico concetto che ti serve per diventare master

Aprile 6, 2021
Next Post
Previous Post

Una pubblicità che non vedi se usi AdBlock

EXPAND YOUR KNOWLEDGE

  • Blockchain Developer

    Circuito aritmetico

    Novembre 1, 2022
  • machine-learning

    Un nuovo inizio

    Settembre 4, 2021
  • Zero Knwoledge Proof Article Privacy Preserving

    Zero Knowledge Proof: zk-SNARK e zk-STARK | Prova a conoscenza zero

    Luglio 8, 2021
  • oblivious-transfer-spiegazione-italiano-ot-explanation Privacy Preserving

    Oblivious Transfer (OT)

    Luglio 6, 2021
  • Aleo Studio Website Preview machine-learning

    Aleo Studio: un IDE per Zero-Knowledge Proofs Applications

    Luglio 1, 2021
  • privacy-enhancing-technologies-data-machine-learning-data-science Privacy Preserving

    Perché il Privacy Tech è un vantaggio competitivo micidiale

    Giugno 17, 2021
  • bloom-filter-spiegazione-italian Privacy Preserving

    Bloom Filter

    Giugno 3, 2021
  • trusted-execution-environment-tee-data-science-come-fuziona Data Science, Privacy Preserving

    Trusted Execution Environment | Cos’è un TEE?

    Giugno 2, 2021
  • Crypto Custody services machine-learning

    Crypto Custody: Guida alla custodia delle criptomonete

    Maggio 26, 2021
  • deep-q-learning-q-learning-reinforcement-learning machine-learning

    Deep Q-Learning

    Aprile 27, 2021

Quello che Google pensa ti possa piacere

Prodotti che i Cookie dicono potresti trovare interessanti

AI Blog - © 2019-2021 Andrea Provino