Segretezza perfetta vs segretezza computazionale

La nozione di segretezza computazionale nasce dalla necessità di rilassare le assunzioni utilizzate nella segretezza perfetta, in particolare:

Si considera un modello in cui:

Necessità del rilassamento

In uno schema di cifratura con $|K|<|M|$

Ricerche esaustive come le precedenti permettono ad Adv di avere successo con probabilità $1$ in tempo lineare in $|K|$ → dobbiamo limitare il tempo di esecuzione di Adv

Adv può anche scegliere a caso una chiave e usare le coppie per verificare la correttezza → esegue in tempo costante e ha successo con probabilità $\frac{1}{|K|}$ → dobbiamo ammettere piccole probabilità di successo

Computazionalmente sicuro

<aside> 💡

Uno schema è sicuro se qualsiasi Adv PPT ha successo nella rottura dello schema con al più probabilità trascurabile

</aside>

Algoritmi efficienti

<aside> 💡

$A$ esegue in tempo polinomiale se $\exist$ $p(\cdot ): \forall$ $x \in \{0,1\}^*$ , $A(x)$ termina in al più $p(|x|)$ passi

</aside>

Probabilità di successo trascurabili

<aside> 💡

Una funzione $f:\N\to \R^+$ è trascurabile se $\forall$ polinomio positivo $p$ $\exist$ $n_0: \forall$ $n > n_0$ risulta $f(n) < \frac{1}{p(n)}$

</aside>