Possiamo memorizzare le informazioni sensibili dei clienti con gli amministratori senza che loro (amministratori) lo identifichino?

0

Sto provando a progettare un'applicazione di abbinamento per la mia università questo San Valentino. Come dovrebbe funzionare, chiedi ?? I client invieranno le preferenze specificatamente i nomi al server e dopo alcuni giorni se due client hanno le stesse preferenze, verranno notificati - not in qualsiasi altro caso. A tale scopo è necessario creare un progetto di struttura infallibile. Quello che sono disposto a fare è di garantire ai miei clienti che anche se mi invieranno le loro risposte preferite tramite il mio sito web, non sarò ancora in grado di vederle come se lo farei, questa applicazione avrà problemi di privacy. Sto cercando di far combaciare le preferenze dell'utente tra loro, saranno ovviamente crittografate e non posso in alcun modo eguagliarne nessuna a meno che non le decifri ad un certo punto nel mio server localmente - presupponendo che il meccanismo di crittografia RSA abbia una probabilità molto piccola di collisione di valori hash e non posso assolutamente eguagliarli :). Il collo di bottiglia qui è > > mai decrittografare mai le preferenze del client localmente sul computer / server dell'amministratore . Un approccio che ho attualmente in mente è quello di introdurre un salt durante la crittografia, che rimarrà al sicuro nelle mani del cliente, ma la decodifica deve ancora essere eseguita ad un certo punto nel tempo per abbinare questi hash. Ci può essere un approccio alternativo per questo tipo di design, penso che potrebbe mancare qualcosa.

    
posta yellow_flash 12.02.2016 - 01:54
fonte

2 risposte

5

Supporrò che i clienti rispondano a una serie di domande% booleane n . Il server memorizza le risposte in modo tale che l'amministratore non possa conoscere le loro risposte. Quindi il server identifica coppie di client con risposte identiche.

Quindi non potresti l'amministratore (o chiunque altro) creare 2^n account fittizi (tutte le possibili risposte alle domande booleane). Il server forma coppie. Ora conosci le risposte di tutti.

Quindi non penso sia possibile. (Mi sono perso qualcosa?)

    
risposta data 12.02.2016 - 02:29
fonte
1

Non sono un esperto di sicurezza ma il mio ragionamento è il seguente: Se si crittografa le informazioni utilizzando la chiave condivisa (nota a voi), è possibile decrittografare i dati sul server e confrontarli. Se si crittografano i dati sui client utilizzando singole chiavi, non è possibile decrittografare i dati ma non è possibile confrontarli.

Vedo due soluzioni

  • Semplice - cancella i dati (usando il segreto condiviso) - se ottieni un hash identico per due voci, ciò significa che i dati originali erano gli stessi (con probabilità molto alta) o che vi era collisione di hash (con probabilità molto bassa). Puoi provare a indovinare la risposta di qualcuno e controllarla, ma questa è essenzialmente la funzionalità della tua applicazione (corrispondente a due risposte) ed è impossibile da evitare.
  • Complesso: trova la crittografia con proprietà che:

    Per la crittografia data c e due segreti s1 e s2 e vero è vero che e (e (c, s1), s2) = e (e (c, s2), s1) (sono sicuro che lì è un nome proprio per questa proprietà ma non lo ricordo ora

    ora tutti crittografano le loro preferenze segrete con la propria chiave segreta, quindi crittografano tutte le altre preferenze con la loro chiave segreta - se si ottiene un ciphertext identico per una coppia, allora le preferenze originali erano le stesse. Questo ancora non ti impedisce di provare a indovinare le risposte, ma rende impossibile farlo offline senza cooperazione "vittima" (devono cifrare ogni tua ipotesi con la loro chiave segreta).

Ora, in entrambi i casi, penserei di normalizzare le risposte per evitare disallineamenti causati da input leggermente diversi, quindi puoi ad esempio tagliare lo spazio bianco, rendere uniforme la custodia e rimuovere alcuni caratteri speciali prima della crittografia / hashing.

Ancora una cosa: indipendentemente dal metodo che gli utenti devono ancora affidarsi a te (per inserire i dati sulla tua pagina web o per installare la tua applicazione), per credere che non hai intenzioni malevole e implementato correttamente lo schema di privacy. Quindi, anche se ti presenti e implementa un buon schema, la fiducia può ancora rappresentare un problema.

    
risposta data 12.02.2016 - 15:32
fonte

Leggi altre domande sui tag