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 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]
Una delle nozioni principali da assimilare per comprendere in che modo le HFE funzionino è capire che per due estensioni di campo e , entrambe contenute nel campo base , una delle due estensioni può interpretare un sistema a polinomi multivariati in variabili, contenuto in e rappresentato dalla funzione , utilizzando una base adatta di su . 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 un campo finito, dove è una potenza di 2, e sia un'estensione di campo. Sia una base di come spazio vettoriale di . Sia tale che sia verificato per distinti valori di e il massimo comune divisore (MCD) sia e si prenda un elemento casuale . Si rappresenti rispetto alla base come . Si definisca attraverso
La condizione del MCD è equivalente al richiedere che la funzione su sia in corrispondenza uno a uno e che la sua inversa sia la funzione , dove rappresenta l'inverso moltiplicativo di . Si scelgano due trasformazioni affini riservate, ovvero due matrici invertibili, come e con le voci appartenenti a e due vettori e di dimensione su e si definiscano e attraverso:
Sia una matrice di trasformazioni lineari nella base in modo che
per . Si scrivano tutti gli elementi della basi in relazione alle basi stesse, ovvero:
per ogni . Il sistema di equazioni che è esplicito in e quadratico in può essere ottenuto dall'espansione della (1) e uguagliando a zero i coefficienti di . Usando le relazioni affini nella (2) per rimpiazzare con , il sistema di equazioni è lineare in e di secondo grado in . Applicando l'algebra lineare il sistema darà equazioni esplicite, una per ogni sotto forma di polinomi di secondo grado in .[3]
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 in una sconosciuta incognita e all'interno di un qualche campo finito (normalmente il valore utilizzato è ). Questo polinomio può essere facilmente invertito in , ovvero è fattibile trovare le soluzioni all'equazione , 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 può essere identificato con un sistema a equazioni 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 come uno spazio vettoriale in e scegliendo due trasformazioni affini lineari e . La terzina costituisce la chiave privata. Il polinomio privato è definito in .[1][4] La chiave pubblica è . Qui sotto si vede il diagramma per l'MQ-trapdoor nelle HFE
Il polinomio privato con grado in è un elemento di . Se i termini del polinomio hanno al massimo termini quadratici in , allora questo manterrà le dimensioni del polinomio pubblico ridotte.[1] Nel caso in cui sia costituito da monomi nella forma , ossia con una doppia potenza di come esponente, sia ha la forma base delle HFE, e quindi è scelto come:
Il grado 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 , ad un set di equazioni scelto casualmente. Senza contare che un valore maggiore di rallenta significativamente la decriptazione. Questo dipende dal fatto che è un polinomio con grado di valore massimo uguale a , ciò comporta che l'inverso di , ossia , può essere computato in operazioni.
La chiave pubblica è data dagli polinomi multivariati in . È quindi necessario trasferire il messaggio da per poterlo criptare, ossia si assume che sia un vettore . Per criptare il messaggio si valutano tutti i in . Il testo cifrato risulta quindi .
Per comprendere meglio la decriptazione la si esprima in termini di . Si noti che questi non sono disponibili al mittente. Valutando i del messaggio viene in primo luogo applicata , che porta come risultato. A questo punto viene trasformato da in modo da poter applicare il polinomio privato che appartiene a dando come risultato . Di nuovo, viene trasferito al vettore . Come ultimo passo viene applicata la trasformazione e l'output finale risulta prodotto da .
Per decriptare i procedimenti sopra citati vengono eseguiti in ordine inverso. Ma questo è possibile solo se la chiave privata è conosciuta. Il passo cruciale della decifrazione non è l'inversione di e , piuttosto il calcolo della soluzione di . Dal momento che non è necessariamente una biiezione, possono essere trovate più di una soluzione a questa inversione (esistono al più d soluzioni distinte dal momento che è un polinomio di grado ). La ridondanza denotata è aggiunta durante il primo passaggio al messaggio in modo da poter selezionare il giusto dal set di soluzioni .[1][3][5] Il diagramma riportato sotto mostra lo schema base delle HFE per la criptazione
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:
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]
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 . 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]