Sebbene esistano modi per crittografare e decrittografare le informazioni, la maggior parte di queste sembra piuttosto pesante da calcolo. Per questo motivo sto pensando di suddividere la decrittografia in due parti: una è pesantemente calcolata e l'altra è una luce computazionale. La prima parte viene eseguita sul server remoto non attendibile utilizzando un qualche tipo di chiave di sessione, mentre la seconda parte viene eseguita sul lato client conoscendo la chiave effettiva.
L'utente ha una chiave K e sul server sono presenti informazioni crittografate T. L'utente genera un po 'di K1 dalla sua K e lo invia al server. Il server tenta di decrittografare T con K1 e ottiene invece un T1. Non è ancora completamente decrittografato e nessuno dei T, T1, K1 consente al server di calcolare K. Tuttavia K1 viene generato in un modo in cui l'utente può facilmente decifrare T1.
Questo approccio è possibile? Quali potrebbero essere potenziali problemi?
Aggiornamento: ho trovato un esempio di come potrebbe essere fatto: l'utente genera più chiavi - K1, K2, K3 ... KN, le mescola e aggiunge la propria chiave K nel miscuglio. Quindi invia tutte quelle chiavi al server e chiede di decrittografare T con ciascuna di queste chiavi. Il server non sa quale chiave è quella corretta, mentre l'utente sa quale di T1 .. TN è l'effettiva informazione decrittografata mentre il resto è spazzatura. Questo particolare approccio presenta molti punti deboli intrinseci, oltre a non consentire l'utilizzo del server per la crittografia (ovvero è "di sola lettura"), ma è un po 'quello che sto cercando.
Aggiornamento 2: (Dato che ho speso la mia reputazione in merito, non posso più commentare le risposte). L'idea è di avere una funzione che può essere applicata a una chiave e la sua funzione inversa che potrebbe essere applicata a un "testo semplice" che è facile da calcolare e che non può essere previsto dal server (cioè non costante di sicuro). "Genera garbage" e "discard garbage" sono esempi di questo. Il "generare hash da chiave" e "non fare nulla" non sono abbastanza buoni - il server può semplicemente omettere la crittografia, quindi funziona solo se l'hash è diverso per ogni sessione.
Non so se è possibile, ma non posso nemmeno dimostrarlo impossibile.