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

Homomorphic Encryption and Additive Secret Sharing | Python Code

Homomorphic Encryption and Additive Secret Sharing | Python Code

Homomorphic Encryption è una forma di criptazione che permette di eseguire calcoli su operandi criptati, ottenendo un risultato criptato.

Una volta decriptato il risultato, questo risulta identico a quello ottenuto effettuando lo stesso calcolo sugli operandi reali e non criptati.

Secret Sharing è una tecnica in base al quale un segreto x è diviso in molteplici quote (share) che vengono poi distribuite a un gruppo di secret-holder.

Il segreto x può quindi essere ricostruito solo quando tutte le quote in cui è stato diviso sono disponibili.

Le nostre amate definizioni introduttive.

Ora andiamo al succo. Facciamo un esempio.

Siamo proprietari di un’informazione, un numero x che dividiamo in 3 quote: x1, x2, x3. Inizializziamo casualmente le prime due, e calcoliamo la terza quota come:

x3 = x -( x1 + x2)

Distribuiamo quindi le nostre 3 quote (share) ad altrettanti secret-holder. Il segreto iniziale, il nostro numero x, rimane nascosto a ciascun individuo poiché ognuno di loro possiede una sola share e non ha idea del valore totale.

La procedura può essere resa più sicura scegliendo il range di valori validi per le share. I numeri primi accorrono in nostro soccorso.

Definiamo Q un numero primo grande quale limite superiore. Ora la nostra terza share sarà definita da:

x3 = Q - (x1 + x2) % Q + x

Poiché in questo post andremo dritti alla parte pratica, ecco il codice python per compiere un’operazione simile:

import random

# setting Q to a very large prime number
Q = 23740629843760239486723


def encrypt(x, n_share=3):
    r"""Returns a tuple containg n_share number of shares
    obtained after encrypting the value x."""

    shares = list()
    for i in range(n_share - 1):
        shares.append(random.randint(0, Q))
    shares.append(Q - (sum(shares) % Q) + x)
    return tuple(shares)


print("Shares: " + str(encrypt(3)))

Ecco una rappresentazione visiva della divisione di x in tre share usando un numero Q come upper limit

OpenMined Blog

La funzione di decriptazione sarà semplicemente la somma delle quote in modulo Q:

def decrypt(shares):
    r"""Returns a value obtained by decrypting the shares."""

    return sum(shares) % Q


print("Value after decrypting: " + str(decrypt(encrypt(3))))
OpenMined Blog

Ora, il sistema di secret sharing che abbiamo definito è più precisamente di Additive Secret Sharing, una tecnica che contiene di per sè l’homomorphic encryption.

Dividiamo x in x1,x2,x3 e y in y1,y2,y3 allora è vero che:

x + y = (x1 + y1) + (x2 + y2) + (x3 + y3)

Codice? Presto detto:

def add(a, b):
    r"""Returns a value obtained by adding the shares a and b."""

    c = list()
    for i in range(len(a)):
        c.append((a[i] + b[i]) % Q)
    return tuple(c)


x, y = 6, 8
a = encrypt(x)
b = encrypt(y)
c = add(a, b)
print("Shares encrypting x: " + str(a))
print("Shares encrypting y: " + str(b))
print("Sum of shares: " + str(c))
print("Sum of original values (x + y): " + str(decrypt(c)))

Siamo quindi in grado di calcolare la somma di due valori senza conoscere il valore reale di ognuno di essi.

Yea.

PySyft ci consente di padroneggiare queste tecniche e sviluppare modelli che tengano conto di homomorphic encryption e additive secret sharing

Fonte: OpenMined

Un caldo abbraccio, Andrea

Written by Andrea Provino - Febbraio 11, 2020
Tags | deep learning, machine learning, privacy

You Might Also Like

condivisione-dati-finance-fintech-problems-machine-learning-for-finance-data-science-deep-learning-case-study

Problemi della condivisione dati in finanza | Finance data sharing problems

Febbraio 4, 2021
GDPR-personal-data-definition-definizione-dati-personali-guida-italiano-consulenza

GDPR Definition of Personal Data

Ottobre 26, 2020

Information Entropy e Information Theory | Divertente e in Italiano

Ottobre 17, 2019

4 Comments

  • Introduzione alla Crittografia (Cryptography) | Differential Privacy Maggio 2, 2020 at 08:24

    […] questo punto, ti lascio in buone mani consigliandoti di leggere l’approfondimento sull’Homorphic Encryption e l’Additive Secret Sharing, due argomenti fondamentali nel […]

    Reply
  • Secure Multiparty Computation (SMPC) | Privacy Preserving AI Maggio 26, 2020 at 06:11

    […] base del processo vi è una tecnica crittografica nota come Additive Secret Sharing, che consiste nella divisione di un’informazione segreta e nella sua successiva distribuzione […]

    Reply
  • Horizontal vs Vertical vs Transfer Federated Learning - Privacy Preserving Ottobre 17, 2020 at 10:19

    […] questo sono adottate tecniche crittografiche come l‘homomorphic encryption che forniscono un layer di sicurezza aggiuntivo sul server centrale per l’aggregazione dei […]

    Reply
  • Private Set Intersection: cos'è? | Differential Privacy - Deep Learning Blog Dicembre 14, 2020 at 06:30

    […] approfondito la tecnica di Homorphic Encryption qui, passeremo veloci […]

    Reply
  • Please Post Your Comments & Reviews
    Annulla risposta

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

    Next Post
    Previous Post

    Una pubblicità che non vedi se usi AdBlock

    EXPAND YOUR KNOWLEDGE

    • Blockchain

      Patricia Merkle Trie

      Maggio 30, 2023
    • Artistic representation of a tree Blockchain

      Tree Data Structure: cos’è un Merkle Tree

      Maggio 26, 2023
    • Cover image for Bitcoin UTXO explanation post Blockchain

      UTXO: come funziona il modello Unspent Transaction Outputs

      Maggio 23, 2023
    • Blockchain

      Cos’è Ethereum

      Maggio 15, 2023
    • 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

    Quello che Google pensa ti possa piacere

    Prodotti che i Cookie dicono potresti trovare interessanti

    AI Blog - © 2019-2021 Andrea Provino