Se si desidera utilizzare tecniche crittografiche e fare affidamento su ipotesi crittografiche e accettare una nozione computazionale di indipendenza -wise, è possibile che la crittografia (FPE) per la conservazione del formato possa essere utile. Permettetemi di disegnare alcune diverse costruzioni di questo tipo.k
(Per "nozione computazionale dell'indipendenza -wise", intendo che nessun avversario con un ragionevole tempo di esecuzione può distinguere da una permutazione indipendente -wise, tranne che con un vantaggio trascurabile. Questi schemi non saranno teoricamente informazioni - saggiamente indipendente, ma saranno "essenzialmente buoni quanto indipendenti dal punto di vista ", assumendo che tutto il calcolo in vista sia limitato dal punto di vista computazionale.)kσkkk
Uno schema pratico, per i più piccolin
In particolare, utilizzare una costruzione FPE per creare un codice a blocchi (permutazione pseudocasuale, PRP) con la firma . Per valori di inferiori a , probabilmente lo schema migliore è utilizzare una costruzione Feistel con un numero fisso di round (diciamo, 10) e una funzione round che è un PRF derivato da AES. Il tempo di esecuzione per valutare per un singolo valore di sarà invocazioni AES. Ogni invocazione AES viene eseguita a tempo costante.σk:[n]→[n]n2128σk(i)iO(1)
Infine, nota che qualsiasi permutazione pseudocasuale è automaticamente indipendente dal punto di vista . In particolare, il teorema di Luby-Rackoff garantisce che con almeno 3 round, si ottiene (approssimativamente) l' indipendenza -wise se , supponendo che AES sia sicuro. Con più round, è probabile che ci sarà un risultato più forte, ma i teoremi sono più difficili da dimostrare e diventare più tecnici, anche se si ritiene che un numero costante di round dovrebbe essere sufficiente per ottenere una sicurezza estremamente elevata (e quindi essenzialmente perfetto - saggia indipendenza per tutti i valori ragionevoli di ).kkk≪n1/4kk
Generalizzando questo a più granden
Quando è più grande, le cose diventano più strane, perché il modello RAM a costo unitario consente implicitamente gratuitamente fino a parallelismo. Non mi è chiaro quale debba essere il costo dei PRP in questo modello (costante? Crescente con ? Non lo so).nO(lgn)n
Una terza possibile costruzione
Sia un modulo RSA leggermente più grande di . Definisci come sottogruppo di contenente gli elementi il cui simbolo Jacobi è . Definisci dim2nG(Z/mZ)∗+1π:G→G
π(x)=x3modm.
Quindi, definire daσ
σ(i)=g(π(f(i)),
dove sono funzioni di hash casuali indipendenti dal biettivo 2.f,g
Ho il sospetto che questa costruzione abbia la possibilità di essere (approssimativamente) -wise indipendente, sotto un'ipotesi simile a RSA. Non ho prove, solo un'intuizione. La principale regolarità nota di è che è moltiplicativamente omomorfa: . Non conosco altre regolarità rilevanti, nemmeno la dipendenza -wise. Applicare un hash indipendente da 2 prima e dopo elimina in modo evidente questa regolarità: se è indipendenza way tranne per l'omomorficità moltiplicativa, allora gli hash indipendenti 2-saggi sembrano come se dovessero fornire completokππ(xy)=π(x)π(y)kππkk-indipendenza. Ma questo è super-abbozzato e anni luce da una prova di indipendenza -wise.k
Tieni presente che dovrai utilizzare tecniche di crittografia che preservano il formato (ad esempio, la tecnica del ciclismo) per assicurarti che funzioni su anziché su . Questo schema dovrebbe avere il tempo di esecuzione (previsto) per valutare corrispondenza di un dato input , con un'opportuna scelta di .f,gG(Z/mZ)O(1)σ(i)if,g
Inoltre, in un certo senso questa costruzione candidata sta abusando del modello di RAM a costo unitario basandosi sulla capacità di operare su numeri -bit nel tempo , per grandi valori di , che non è davvero ragionevole in pratica. (Quest'ultima costruzione non sarà sicuro per i piccoli valori di , quindi questo ultimo approccio si basa fondamentalmente sulla larga regime per poter avere la possibilità di lavorare ... esattamente il regime in cui il modello di RAM unità-costo è più dubbia.)lgnO(1)nnn
Ammetto liberamente che questo è piuttosto lungo, ma lo menziono nel caso in cui scateni qualche ispirazione per una soluzione migliore.
Ad esempio, potrebbe essere possibile sostituire con un gruppo di curve ellittiche adatto, in modo che abbiamo su (ricorda che i gruppi di curve ellittiche di solito usano la notazione additiva piuttosto che la notazione moltiplicativa). La cosa buona di questo è che non è del tutto irragionevole ipotizzare che, se il gruppo di curve ellittiche è scelto correttamente, si comporterà come un "gruppo di scatole nere", che penso potrebbe implicare che sarà - indipendente dal senso "tranne per gli effetti implicati dall'omomorfismo moltiplicativo". Non ho una costruzione completa pronta da proporre (il pezzo mancante è come scegliereGπ(x)=exGGGπkGe come costruire come dimostrare -wise indipendenza da questo), ma potrebbe essere possibile mettere insieme i pezzi in qualche modo.f,gk