Quali implementazioni di crittografia omomorfica parziale esistono e come sfruttarle?

9

Sembra che solo Crittografia omomorfica parziale (PHE) è pratica per l'uso moderno (2011). Tuttavia ho difficoltà a localizzare le librerie (FOSS o altro) che mi consentono di sfruttare questa tecnologia.

El Gamal è un esempio di un algoritmo che fa PHE, ma la pagina wiki non spiega chiaramente quali operazioni di matematica cieca sono supportate e come implementarle.

Potenziali casi d'uso

Un PHE è qualcosa che può essere usato come astratto per scaricare le operazioni matematiche a un terzo senza che il party sappia mai quale sia il valore sottostante. per esempio. x + y = z può essere eseguito e avrà un risultato crittografato valido, ma tutti e 3 i valori non sono mai noti in formato non criptato alla terza parte. Ciò è utile per proteggere i dati di analisi del mercato azionario, le PII o qualsiasi cosa considerata riservata o confidenziale.

Domanda

Quindi, quali algoritmi di crittografia esistono e quali librerie esistono che mi consentono di operare sui dati crittografati? Esempi di operazioni che sono interessato a includere

  • Addizione e sottrazione
  • Moltiplicazione o divisione
  • Confronti (è crittografato X maggiore di Y crittografato)
  • Una tecnica che mi permetterà di confrontare la versione ASCII binaria / criptata della parola "Ap" e di fare un Contiene () o StartsWith () con la versione criptata di "Apple"
posta random65537 17.05.2011 - 17:27
fonte

4 risposte

10
La crittografia

El Gamal consente la moltiplicazione. Questo si verifica all'interno del gruppo su cui gira El Gamal; quindi stai moltiplicando i numeri modulo un dato primo, non interi "semplici". Se riesci a moltiplicare puoi dividere (l'inversione in un gruppo di dimensioni q è fatta alzando al potere q-2 , quindi si tratta di eseguire alcune moltiplicazioni) . El Gamal è implementato in libgcrypt (usato in GnuPG ), ma dovresti eseguire tu stesso le moltiplicazioni (El Gamal è usato nel formato OpenPGP, ma non per le sue proprietà omomorfiche).

La crittografia

Paillier consente l'aggiunta. Anche in questo caso, l'addizione si verifica in un gruppo finito (qui, numeri modulo n , un grande numero intero composito). Non sono a conoscenza di implementazioni di questo sistema nella libreria crittografica generica diffusa (la mia non consapevolezza non implica inesistenza, però), ma una semplice ricerca su google trova alcune implementazioni basate su Java (offerte Java BigInteger , rendendo l'implementazione di tali sistemi facile).

Un punto importante è che tali sistemi di crittografia sono randomizzati: per un dato testo in chiaro, ci sono molti possibili testi cifrati. Quindi, non puoi sapere se due testi cifrati corrispondono allo stesso testo in chiaro o no. A fortiori , non consentono confronti (l'ordine all'interno di un gruppo finito non è comunque ben definito). Si noti che un metodo di confronto non sarebbe compatibile con una crittografia asimmetrica sicura: chiunque potrebbe crittografare i valori scelti per indovinare i dati crittografati con una ricerca dicotomica. Su base generale, le parole chiave per questo sono "data mining". L'esecuzione del data mining su dati crittografati è un campo ampiamente inesplorato, con la sottostringa corrispondente come una sorta di Holy Grail. In breve, non vi è nulla di immediatamente applicabile lì.

    
risposta data 17.05.2011 - 18:48
fonte
9

Un esempio di utilizzo pratico di PHE (e in particolare di El Gamal) è Helios Voting . Con esso è possibile archiviare pubblicamente schede votate crittografate nel cloud e consentire al pubblico di aggiungerle entrambe per confermare il conteggio dei voti per ciascun candidato e verificare che il proprio voto sia stato effettivamente incluso nel totale, senza avere una ricevuta questo potrebbe dimostrare come hanno votato a una terza parte.

È open source. Puoi ottenere il codice sorgente (basato su Python, JavaScript, Django) qui:

Non so quanto sarebbe facile estrarre pezzi di Helios in una libreria riutilizzabile, ma è un posto da cercare.

    
risposta data 17.05.2011 - 17:45
fonte
4

@Thomas l'ha inchiodato. Esistono schemi che supportano l'aggiunta e schemi che supportano la moltiplicazione (ma non uno schema pratico che supporti entrambi). Non esiste uno schema che supporti il confronto, in quanto ciò sarebbe incompatibile con la sicurezza.

Esistono anche schemi che supportano il controllo del fatto che il testo crittografato contenga una determinata parola chiave (ad es. questo documento ), anche se il modello di minaccia e ciò che viene realizzato è un po 'diverso. Questi schemi sono orientati a situazioni in cui tu stesso sei colui che ha caricato i dati, e ti ricordi i tasti crittografici, e sono focalizzati su set di dati di sola lettura (o letti per lo più). Inoltre, rivelano informazioni che potrebbero essere utilizzate per l'analisi del traffico (ad es. Il numero di accessi sulla parola chiave e la loro posizione nel file crittografato).

    
risposta data 18.05.2011 - 02:45
fonte
1

Puoi avere confronti con uno schema di conservazione della crittografia la cui sicurezza è strongmente discusso qui e qui . Anche la sezione II-A di che descrive alcuni punti deboli di OPE

    
risposta data 22.03.2013 - 12:46
fonte