Condivisione della tecnologia

[Nozioni di base sulla crittografia] Schema di crittografia completamente omomorfico basato su LWE (Learning with Errors)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Risorse di apprendimento:
Crittografia completamente omomorfica I: teoria e fondamenti (insegnante Yu Yu dell'Università Jiao Tong di Shanghai)
Crittografia completamente omomorfa II: Teoria e costruzione della crittografia completamente omomorfa (Insegnante Xiang Xie)


Al giorno d'oggi, gli schemi di crittografia completamente omomorfi di seconda generazione (come BGV e BFV) e di terza generazione sono tutti basati su LWE. Ora anche gli schemi completamente omomorfi avanzati sono basati su LWE, quindi questo articolo riassume le conoscenze di base di LWE.
Innanzitutto considera che vogliamo crittografare un numero ssS, ora utilizzando una serie di io ioUNioooooGiusto ssSCrittografa e ottieni è un_èUNioooooS, infatti, può essere risolto risolvendo il massimo comun divisore MCD ssS .Tuttavia, se viene aggiunto un rumore casuale io e_ioeiooooo,Ottenere ais + ei a_is+e_iUNioooooS+eiooooo, allora sarà difficile da risolvere ssS valore. Questo processo è la mia semplice comprensione di LWE. Il cosiddetto errore è un rumore.

Inserisci qui la descrizione dell'immagine

Il processo di calcolo della crittografia completamente omomorfa è diviso in tre fasi: generazione della chiave KeyGen, crittografia Enc, calcolo omomorfico Eval e decrittografia Dec. ,

Generazione di chiavi:

Inserisci qui la descrizione dell'immagine
Per prima cosa costruisci l'equazione di cui sopra, s ⋅ A + e = s A + e scdot A + e = sA+eSUN+e=SUN+e, quindi ottenere la chiave pubblica pk ( − La -LaUNE s A + e s A + eSUN+esplicing) e la chiave privata sk ( ssS e 1). Si ottiene quindi che il risultato della moltiplicazione tra pk e sk è un rumore casuale e (vicino a 0).

Inc.:

La chiave pubblica pk utilizzata per la crittografia, r è un vettore casuale contenente solo 0 o 1 e m è l'informazione da crittografare (inserita nel bit più basso del vettore).
Inserisci qui la descrizione dell'immagine
Inserisci qui la descrizione dell'immagine

Dicembre:

Dopo aver calcolato il prodotto interno della chiave privata sk utilizzata per la decrittazione e ct, trova mod 2 per ottenere il risultato della decrittazione.

Inserisci qui la descrizione dell'immagine
Prova di correttezza:
Inserisci qui la descrizione dell'immagine
Moltiplica sk e pk per ottenere 2e (la condizione soddisfatta da KeyGen), quindi esegui il prodotto interno con r per ottenere un piccolo rumore uniforme. Il risultato finale è m+ un piccolo rumore uniforme, quindi il rumore può essere eliminato dal mod 2. Ottieni il risultato della decrittazione m. Questo è il motivo per cui il rumore costruito è 2e, non e. Da quanto ho capito, costruendo un rumore casuale con numeri pari, è conveniente utilizzare il mod 2 per eliminare il rumore durante la decrittazione.

Prova di sicurezza:

Inserisci qui la descrizione dell'immagine
Quando pk è pseudo-casuale e r ha un'entropia sufficientemente elevata (ovvero, la casualità è forte?), sia pk che pk moltiplicati per r sono pseudo-casuali. Dopo aver aggiunto naturali e vettori con m, anche il risultato della crittografia è pseudo-casuale.

Inserisci qui la descrizione dell'immagine

Quella che segue è la descrizione stereotipata dell’insegnante Xiang Xie:
Formula di crittografia: testo cifrato c = chiave pubblica pk ✖️ casuale r + testo in chiaro m
Formula di decrittazione: testo in chiaro m = <testo cifrato sk, chiave privata sk> mod q mod 2

Inserisci qui la descrizione dell'immagine
Su questa base, il mod 2 può essere utilizzato per decifrare il valore del testo in chiaro m. Finché il rumore è sufficientemente piccolo, la precisione può essere garantita.
C'è qualcosa che bisogna distinguere qui: quanto sopra PK = ( A , b = A s ′ + 2 e ) PK=(A, b=As'+2e)PK=(UN,B=UNS+2e)è la soluzione BGV e BFV lo è PK = ( A , b = A s ′ + e ) PK=(A, b=As'+e)PK=(UN,B=UNS+e), la differenza è che BGV codifica le informazioni in bit bassi, mentre BFV codifica i messaggi in bit alti (verrà spiegato durante l'apprendimento di BFV).

Eval (omomorfismo additivo e omomorfismo moltiplicativo):

Inserisci qui la descrizione dell'immagine
Si noti che l'addizione o la moltiplicazione omomorfa comporterà un significativo accumulo di rumore e la moltiplicazione ha un trend di crescita quadratico.
Quindi parliamo di come decrittografare il risultato della moltiplicazione omomorfa. Puoi vedere la seguente formula: La moltiplicazione di due testi cifrati equivale a fare rispettivamente il prodotto tensoriale del testo cifrato e della chiave privata, e quindi a fare il prodotto interno. Quindi ovviamente sia il testo cifrato che la chiave privata hanno raddoppiato le loro dimensioni. L'esempio è una prova di equivalenza.

Inserisci qui la descrizione dell'immagine

Quindi la domanda è: come ripristinare la dimensione del testo cifrato e la dimensione della chiave privata dopo la moltiplicazione omomorfa? Questo è il problema che il cambio chiave risolve.

Quella che segue è la descrizione dell’insegnante Xiang Xie:

Inserisci qui la descrizione dell'immagine

Commutazione chiave

L'obiettivo è ripristinare la dimensione del testo cifrato e della chiave privata a una dimensione lineare.
Inserisci qui la descrizione dell'immagine
Ora trova la moltiplicazione dei testi cifrati c1 e c2:

Inserisci qui la descrizione dell'immagine
Inserisci qui la descrizione dell'immagine

Il processo di cui sopra si basa sul concetto di scomposizione dei bit:

Inserisci qui la descrizione dell'immagine

Quella che segue è la descrizione dell’insegnante Xiang Xie:

L'obiettivo di Key Switching: convertire la chiave privata s ~ tilde sS~giù c ~ tilde cC~ Converti in chiave privata ssSgiù carta intestataC,E c ~ tilde cC~E carta intestataCSono tutti crittografati con lo stesso testo in chiaro.
Un concetto fondamentale qui è Key Switching Key (KSK), che significa utilizzare una chiave privata ssSper crittografare s ~ tilde sS~

Inserisci qui la descrizione dell'immagine
Attraverso il processo Key Switching è possibile derivare la chiave privata s ⊗ s a volte sSSè diventato lineare ssS, mentre il testo cifrato cambia da c ~ tilde cC~è diventato lineare carta intestataC .E lo si può vedere dall'ultima riga della formula dopo il cambio di chiave ⟨ c , s ⟩ langle c, srangleC,Se l'originale ⟨ c ~ , s ⊗ s ⟩ langle tilde c, a volte srangleC~,SSC'è una differenza di rumore tra 2 c ~ T e ~ 2tilde c^Ttilde e2C~Te~ , questa parte può essere molto grande! Quindi non c'è ancora modo di implementare il cambio chiave qui.

Qui viene introdotta una matrice Gadget G:
Inserisci qui la descrizione dell'immagine
Pertanto, il processo di cambio chiave diventa il seguente:

Inserisci qui la descrizione dell'immagine
A questo punto, l’errore aggiunto è molto piccolo.
In sintesi, tramite Key Switching, la chiave privata originale s ~ = s ⊗ s tilde s=s otimes sS~=SSgiù c ~ = c ⊗ c tilde c=cotimes cC~=CC, viene convertito in una chiave privata ssSgiù carta intestataC, prestare attenzione alla chiave dopo la commutazione della chiave s, cs, cS,CNon sono i valori originali (doppio controllo).

Inserisci qui la descrizione dell'immagine
Per BGV, il rumore dell'addizione aumenta in modo lineare e il rumore della moltiplicazione aumenta in modo quadrato. Sebbene il cambio di chiave possa supportare la moltiplicazione (limitando sk a diventare estremamente grande), il rumore è in realtà un rumore molto piccolo aggiunto al rumore della moltiplicazione originale è anche molto grande. Pertanto, questo rumore deve essere ulteriormente ridotto.

Riduzione del modulo

Inserisci qui la descrizione dell'immagine
A questo punto, i calcoli di moltiplicazione e addizione omomorfa con una profondità ridotta sono stati implementati tramite LWE. La commutazione della chiave utilizza una nuova chiave per ogni livello. Tuttavia, man mano che la profondità di calcolo aumenta, l'espansione del rumore è esplosiva, quindi non è ancora livellata . FHE (può calcolare l'EHE ad una profondità specificata).
Ora speriamo di implementare un FHE in grado di calcolare una certa profondità senza utilizzare il bootstrap, che richiede la conversione del modulo.
Inserisci qui la descrizione dell'immagine

Inserisci qui la descrizione dell'immagine

Inserisci qui la descrizione dell'immagine

Non capisco bene il processo centrale. In breve, si tratta di trasformare il testo cifrato c dal dominio modulo q al dominio modulo p (p<
Ecco un esempio specifico:
Se la riduzione del modulo non viene eseguita, il rumore aumenterà con una tendenza doppia esponenziale man mano che la profondità aumenta e si verificheranno errori di decrittografia dopo il livello >= 3.
Inserisci qui la descrizione dell'immagine
Se la riduzione del modulo viene eseguita a ciascun livello, anche il rumore verrà mantenuto entro un intervallo di valori assoluti, al costo di una riduzione continua del modulo.

Inserisci qui la descrizione dell'immagine

Pertanto, se si desidera implementare un FHE livellato, è possibile impostare un modulo B d B^dBD, quindi puoi calcolare una profondità di ggDcircuito (dove BBB è il limite superiore del rumore del testo cifrato aggiornato).Calcolato ggDDopo la profondità, il modulo dovrebbe essere ridotto a BBB , per garantire che non vi siano errori nella decrittografia in questo momento. BGV è un FHE livellato.

Inserisci qui la descrizione dell'immagine