La nozione di segretezza computazionale nasce dalla necessità di rilassare le assunzioni utilizzate nella segretezza perfetta, in particolare:
Si considera un modello in cui:
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
<aside> 💡
Uno schema è sicuro se qualsiasi Adv PPT ha successo nella rottura dello schema con al più probabilità trascurabile
</aside>
<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>
<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>