Funzione unidirezionale
# Funzione unidirezionale

Una funzione unidirezionale (funzione one-way in inglese o semplicemente OWF) è una funzione matematica "facile da calcolare" ma "difficile da invertire".

"Facile da calcolare" significa che esistono algoritmi che possono calcolare la funzione f(x) in tempo polinomiale (nella dimensione dell'input). "Difficile da invertire" significa che nessun algoritmo probabilisticamente polinomiale (classe di complessità temporale PP) può calcolare una controimmagine di f(x) a meno di una probabilità trascurabile, quando x viene scelta in modo casuale.

Si noti che, a differenza del concetto di difficoltà più comunemente diffuso nella teoria della complessità computazionale, "difficile", nel contesto delle funzioni unidirezionali, si riferisce alla difficoltà nel caso medio e non a quella nel caso peggiore.

## Definizione formale

Una funzione $f\colon \{0,1\}^{*}\to \{0,1\}^{*}$è unidirezionale se esiste un algoritmo che in tempo polinomiale mappa $x$ in $f(x)$ per ogni $x\in \{0,1\}^{*}$ e per ogni algoritmo casuale PPT $A$, ogni polinomio $p(\cdot )$ e per valori di $n$ sufficientemente grandi si ha che:

    $\mathrm {Pr} [f(A(f(x)))=f(x)]<{\frac {1}{p(n)}},$

dove la probabilità è sulla scelta delle $x$ da una distribuzione discreta uniforme su $\{0,1\}^{n}$ e sulla casualità di $A$.

### Funzione unidirezionale debole

Una funzione unidirezionale debole, invece, è tale per cui ogni algoritmo casuale PPT $A$ che prova a calcolare una qualsiasi preimmagine di $f(x)$ fallisce con probabilità non trascurabile. In modo formale, si dice che $f$ è una funzione debolmente unidirezionale se è calcolabile in tempo polinomiale ed esiste un polinomio $p$ tale che per ogni algoritmo casuale $A$ e per valori di $n$ sufficientemente grandi:

    $\mathrm {Pr} [f(A(f(x)))\neq f(x)]\leq 1-{\frac {1}{p(n)}},$

dove la probabilità è sulla scelta delle $x$ da una distribuzione discreta uniforme su $\{0,1\}^{n}$ e sulla casualità di $A$

### Permutazione unidirezionale

Una funzione $f$ è una permutazione unidirezionale se:

* è una funzione unidirezionale
* è biettiva

## Congettura OWF

Le funzioni unidirezionali sono una delle primitive più rudimentali della moderna crittografia e la loro esistenza è necessaria per la stragrande maggioranza degli oggetti crittografici di interesse. L'esistenza delle funzioni unidirezionali, infatti, è equivalente all'esistenza dei generatori pseudocasuali, delle funzioni pseudocasuali, delle firme digitali, delle prove a conoscenza zero per ogni linguaggio NP e di molti altri oggetti.

L'esistenza delle funzioni unidirezionali, inoltre, implica che P ≠ NP.

### Candidati

Esistono numerosi candidati per le funzioni unidirezionali. Alcuni di essi sono:

* la moltiplicazione e la fattorizzazione di numeri primi
* la funzione RSA
* la funzione di Rabin
* il logaritmo discreto
