È scarso perché la crittografia ricercabile è raramente pratica.
In generale, significa che stai utilizzando una cifratura molto debole o stai decifrando tutto mentre vai. Il primo caso è negativo perché è possibile utilizzare i modelli nella crittografia per interromperlo con un campione sufficientemente grande. Il secondo metodo, più consigliabile, è dolorosamente lento perché devi decodificare l'intero set di dati per eseguire una singola query. In ogni caso, la Searchable Encryption è veramente pratica con insiemi di dati molto piccoli.
Un esempio di dove lo useresti sarebbe se vuoi essere in grado di cercare un singolo record dipendente per parole chiave. L'ID del dipendente non sarebbe criptato; quindi, è possibile utilizzarlo solo per interrogare i record di quella persona, quindi è possibile trasferire l'intera serie di record alla propria applicazione per decrittografarla. Quindi cerca i dati decrittografati e dai loro output solo i campi di cui hai bisogno.
Detto questo, ci sono molte promesse con la crittografia ordinabile, purché si stiano facendo ricerche esatte. La crittografia ordinabile imposta l'ambito di ciascuna nuova stringa crittografata tra quelle che dovrebbe essere ordinata; quindi, diciamo che quanto segue è vero:
7iFA384S4BPmuXokR9rcMI37SKnClqnE = ant
E10ZJbnmvJHs3MOKkzDXw7sd037kLCUJ = cat
miHBVXxATe1Jg6G97ug86zv31BxrpRAa = dog
z0L9f8Py12euq9Nhy9Zk0e9L83F8MiBi = man
Se volessi aggiungere "volpe" alla lista, il mio algoritmo di crittografia tornerebbe tra "miHBVXxATe1Jg6G97ug86zv31BxrpRAa" e "z0L9f8Py12euq9Nhy9Zk0e9L83F8MiBi" risultante in qualcosa del tipo:
7iFA384S4BPmuXokR9rcMI37SKnClqnE = ant
E10ZJbnmvJHs3MOKkzDXw7sd037kLCUJ = cat
miHBVXxATe1Jg6G97ug86zv31BxrpRAa = dog
Pe2624gcRjP6YGWOnhiW2xnRomAjDYQK = fox // sorts alphabetically between dog and man
z0L9f8Py12euq9Nhy9Zk0e9L83F8MiBi = man
Funziona perché la prima parte della stringa crittografata è solo l'ordinamento delle informazioni e la seconda parte è i dati crittografati effettivi
SortingId(Pe2624gcRjP6YG), EncyptedData(WOnhiW2xnRomAjDYQK)
Una volta che hai ordinato la crittografia, questo significa due cose, una che puoi ordinare i dati crittografati con la stessa facilità dei dati non crittografati, ma in secondo luogo, significa che puoi usare un metodo simile per unire l'ordinamento in modo selettivo decifrare. Non so personalmente cosa facciano i database effettivamente non lo supportano ancora, ma nella lista precedente, se cerco "man" e decifro "dog", so che i primi 2 elementi non sono man, quindi io non è necessario decrittografarli per cercarli. Ciò significa che più grande è il set di dati, più piccola è la percentuale del set di dati che è necessario decodificare per trovare le cose.