Hidden Fields Equations

Da testwiki.
Versione del 6 giu 2024 alle 15:02 di imported>Simone Biancolilla (Collegamenti esterni: Aggiunto il template "Portale")
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

Le Hidden Fields Equations (HFE), in italiano funzioni a campi nascosti, altrimenti note come funzioni botola (trapdoor functions in inglese), sono un sistema crittografico a chiave pubblica presentato per la prima volta all'Eurocrypt, nel 1996, dal francese Jacques Patarin, il quale lo elaborò seguendo le idee preesistenti nel sistema di Matsumoto e Imai. Tale sistema è basato sull'utilizzo di polinomi in campi finiti 𝔽q dotati di diversa dimensione, in modo tale da mascherare la relazione tra chiave pubblica e chiave privata. La famiglia di sistemi crittografici HFE si basa sulla difficoltà nel trovare le soluzioni di un sistema a equazioni quadratiche multivariate (chiamato anche Problema MQ). Le HFE hanno trovato un campo applicativo anche nella costruzione di schemi per la firma digitale, come ad esempio Quartz and Sflash.[1]

Basi matematiche

Una delle nozioni principali da assimilare per comprendere in che modo le HFE funzionino è capire che per due estensioni di campo 𝔽qn e 𝔽qm, entrambe contenute nel campo base 𝔽q, una delle due estensioni può interpretare un sistema a m polinomi multivariati in n variabili, contenuto in 𝔽q e rappresentato dalla funzione 𝔽qn𝔽qm, utilizzando una base adatta di 𝔽qn su 𝔽q. Nella quasi totalità delle applicazioni i polinomi sono quadratici, ovvero di grado 2.[2] Partiamo dalla tipologia più semplice di polinomi, chiamati monomi, e verrà mostrato in che modo questi conducono ai sistemi quadratici di equazioni.

Sia 𝔽q un campo finito, dove q è una potenza di 2, e sia K un'estensione di campo. Sia β1,...,βn una base di K come spazio vettoriale di 𝔽q. Sia 0<h<qn tale che h=qθ+1 sia verificato per distinti valori di θ e il massimo comune divisore (MCD) sia (h,qn1)=1 e si prenda un elemento casuale u𝔽qn. Si rappresenti u rispetto alla base come u=(u1,...,un). Si definisca v𝔽qn attraverso

v=uqθu    (1)

La condizione del MCD è equivalente al richiedere che la funzione uuh su K sia in corrispondenza uno a uno e che la sua inversa sia la funzione uuh, dove h rappresenta l'inverso moltiplicativo di h modqn1. Si scelgano due trasformazioni affini riservate, ovvero due matrici n×n invertibili, come S={Sij} e T={Tij} con le voci appartenenti a 𝔽q e due vettori c=(c1,...,cn) e d=(d1,...,dn) di dimensione n su 𝔽q e si definiscano x e y attraverso:

u=Sx+c    v=Ty+d    (2)

Sia A(k)=aij(k) una matrice di trasformazioni lineari nella base β1,...,βn in modo che

βiqk=j=1naijkβj,  aijk𝔽q

per 1i,kn. Si scrivano tutti gli elementi della basi in relazione alle basi stesse, ovvero:

βiβj=l=1nmijlβl,  mijl𝔽q

per ogni 1i,jn. Il sistema di n equazioni che è esplicito in vi e quadratico in uj può essere ottenuto dall'espansione della (1) e uguagliando a zero i coefficienti di βi. Usando le relazioni affini nella (2) per rimpiazzare uj,vi con xk,yl, il sistema di n equazioni è lineare in yl e di secondo grado in xk. Applicando l'algebra lineare il sistema darà n equazioni esplicite, una per ogni yl sotto forma di polinomi di secondo grado in xk.[3]

Crittosistemi multivariati

L'idea di base della famiglia HFE, ciò che consente l'utilizzo di sistemi multivariati, è la costruzione della chiave privata a partire da un polinomio P in una sconosciuta incognita x e all'interno di un qualche campo finito 𝔽qn (normalmente il valore utilizzato è q=2). Questo polinomio può essere facilmente invertito in 𝔽qn, ovvero è fattibile trovare le soluzioni all'equazione P(x)=y, ovviamente è condizione necessaria che tali soluzioni esistano. La trasformazione privata o decriptazione e/o la firma digitale sono basate su questa inversione. Come spiegato sopra P può essere identificato con un sistema a n equazioni (p1,...,pn) a patto di utilizzare una base prestabilita. Per costruire il crittosistema il polinomio deve essere trasformato in modo tale che le informazioni pubbliche nascondano la struttura originale, evitando così delle possibili inversioni. Questo viene fatto visualizzando il campo finito 𝔽qn come uno spazio vettoriale in 𝔽q e scegliendo due trasformazioni affini lineari S e T. La terzina (S,P,T) costituisce la chiave privata. Il polinomio privato P è definito in 𝔽q.[1][4] La chiave pubblica è (p1,...,pn). Qui sotto si vede il diagramma per l'MQ-trapdoor(S,P,T) nelle HFE

inputxx=(x1,...,xn)secret:Sxsecret:Pysecret:Toutputy

Polinomi HFE

Il polinomio privato P con grado d in 𝔽qn è un elemento di 𝔽qn[x]. Se i termini del polinomio P hanno al massimo termini quadratici in 𝔽q, allora questo manterrà le dimensioni del polinomio pubblico ridotte.[1] Nel caso in cui P sia costituito da monomi nella forma xqsi+qti, ossia con una doppia potenza di q come esponente, sia ha la forma base delle HFE, e quindi P è scelto come:

P(x)=cixqsi+qti

Il grado d del polinomio è anche conosciuto come parametro sicurezza e maggiore è il valore maggiore sarà la sicurezza dal momento che il risultante set di equazioni quadratiche assomiglia, all'aumentare di d, ad un set di equazioni scelto casualmente. Senza contare che un valore maggiore di d rallenta significativamente la decriptazione. Questo dipende dal fatto che P è un polinomio con grado di valore massimo uguale a d, ciò comporta che l'inverso di P, ossia P1, può essere computato in d2(lnd)O(1)n2𝔽q operazioni.

Crittografia e decrittografia

La chiave pubblica è data dagli n polinomi multivariati (p1,...,pn) in 𝔽q. È quindi necessario trasferire il messaggio M da 𝔽qn𝔽qn per poterlo criptare, ossia si assume che M sia un vettore (x1,...,xn)𝔽qn. Per criptare il messaggio M si valutano tutti i pi in (x1,...,xn). Il testo cifrato risulta quindi (p1(x1,...,xn),p2(x1,...,xn),...,pn(x1,...,xn))𝔽qn.

Per comprendere meglio la decriptazione la si esprima in termini di S,T,P. Si noti che questi non sono disponibili al mittente. Valutando i pi del messaggio viene in primo luogo applicata S, che porta x come risultato. A questo punto x viene trasformato da 𝔽qn𝔽qn in modo da poter applicare il polinomio privato P che appartiene a 𝔽qn dando come risultato y𝔽qn. Di nuovo, y viene trasferito al vettore (y1,...,yn). Come ultimo passo viene applicata la trasformazione T e l'output finale y𝔽qn risulta prodotto da (y1,...,yn)𝔽qn.

Per decriptare y i procedimenti sopra citati vengono eseguiti in ordine inverso. Ma questo è possibile solo se la chiave privata (S,P,T) è conosciuta. Il passo cruciale della decifrazione non è l'inversione di S e T, piuttosto il calcolo della soluzione di P(x)=y. Dal momento che P non è necessariamente una biiezione, possono essere trovate più di una soluzione a questa inversione (esistono al più d soluzioni distinte X=(x1,...,xd)𝔽qn dal momento che P è un polinomio di grado d). La ridondanza denotata r è aggiunta durante il primo passaggio al messaggio M in modo da poter selezionare il giusto M dal set di soluzioni X.[1][3][5] Il diagramma riportato sotto mostra lo schema base delle HFE per la criptazione

M+rxsecret:Sxsecret:Pysecret:Ty

Variazioni delle HFE

Le Hidden Fields Equations hanno quattro variazioni di base, chiamate +, -, f e v ed è possibile combinarle tra di loro in diversi modi. I principi base che le differenziano sono i seguenti:

01. Il simbolo + indica che viene effettuato un mix lineare tra le equazioni pubbliche e alcune equazioni casuali.
02. Il simbolo - è dovuto ad Adi Shamir e il suo scopo è quello di rimuovere la ridondanza r dalle equazioni pubbliche.
03. Il simbolo f indica che alcune variabili d'ingresso f sono state fissate.
04. Il simbolo v più che indicare un qualche cambiamento definisce una struttura, talvolta notevolmente complessa, tale che l'inversa della funzione può essere calcolata solo se determinate variabili v, chiamate variabili aceto, sono state precedentemente fissate.

Le operazioni riportate sopra concorrono a preservare in una certa misura la cosiddetta solvibilità botola (trapdoor solvability in inglese) della funzione. Per chiarire questo aspetto basta sapere che una funzione botola è una funzione facilmente computabile in una direzione, ma difficile da calcolare nella direzione opposta (ossia trovare l'inversa) se non si conoscono determinate informazioni.

Le HFE- e le HFEv sono molto utili, e di conseguenza molto usate, nella creazione di schemi per la firma digitale dal momento che prevengono i rallentamenti nella generazione delle chiavi e garantiscono inoltre una maggiore sicurezza generale delle HFE. Per quanto riguarda la criptazione sia l'HFE- che l'HFEv portano ad un processo di decifratura sensibilmente più lento grazie alle loro peculiarità implementative. Entrambe hanno inoltre avuto un ruolo fondamentale nella creazione di Quartz.

L'HFE+ invece, sempre nell'ambito della criptazione, porta ad una situazione, in linea teorica, ottimale dal momento che il processo di decifrazione richiede la stessa quantità di tempo, anche se le chiavi pubbliche hanno più equazioni che variabili.[1][2]

Attacchi alle HFE

Esistono due famosi attacchi che sono stati portati di recente alle HFE:

01. L'attacco Shamir-Kipnis: recuperare la chiave privata

Il punto chiave di questo attacco è quello di recuperare la chiave privata sotto forma di polinomi univariati all'interno dell'estensione di campo 𝔽qn. Questa tipologia di attacco funziona esclusivamente se portato a delle HFE di base, mentre fallisce contro qualsiasi loro variazione.

02. L'attacco Faugere: Basi di Gröbner

L'idea dell'attacco di Faugere è quella di usare gli algoritmi veloci per calcolare una Base di Gröbner del sistema di equazioni polinomiali. Faugere, nel 2002, riuscì a violare le HFE in 96 ore. Dal 2003 Faugere e Joux lavorano insieme sulla sicurezza delle HFE.[1]

Note

Bibliografia

Collegamenti esterni

Template:Portale