È sicuro nascondere i segreti in questo modo?

1

Non ho segreti da nascondere, il mio obiettivo è ricordare solo un seme e ricavarlo dal seme. È un approccio sicuro?

Calcola n tasti:

k(1) = seed XOR secret(1)
...
k(n) = seed XOR secret(n)

Archivia queste chiavi in un plico, chiedendo all'utente un seme e calcoli i segreti usando XOR.

L'utente otterrà un risultato anche usando un seme sbagliato e non sa se ha ottenuto i segreti corretti.

Quali sono gli aspetti negativi nell'archiviazione di queste chiavi in un posto dove chiunque può guardare?

Modifica : basato su risposte e ulteriori letture, ho fatto qualcosa di simile a questo:

  • Utilizza il seme come password per un PBKDF2 per generare una chiave AES e IV
  • Scrivi i segreti in formato JSON
  • Crittografia del testo JSON con chiave AES e IV generato dal seme
  • Il testo cifrato è memorizzato all'interno dell'applicazione
  • Il seme viene usato come input per calcolare la chiave e IV in fase di runtime

Qualsiasi altro pensiero sarebbe apprezzato

    
posta sguerrini97 11.01.2018 - 11:27
fonte

2 risposte

5

È improbabile che sia sicuro per una serie di motivi. Soprattutto XOR è sicuro solo per una volta: stai riutilizzando la chiave (il tuo "seme" è la chiave qui).

Se una parte conosce un singolo segreto, può calcolare il seme - e quindi leggere tutti gli altri. Cioè segreto ([conosciuto]) XOR [valore noto] produce seme. Questo sconfigge completamente il punto di avere più segreti unici - potresti anche usare il valore del seme ovunque come tuo segreto.

The user will get a result even using a wrong seed and he doesn't know if he got the correct secrets.

I valori segreti del testo in chiaro sono casuali? In caso contrario, un utente malintenzionato può semplicemente forzare la forza bruta a provare i valori seme, quindi rivedere manualmente i semi che forniscono solo caratteri stampabili per ogni chiave. Se i segreti sono parole o frasi questo diventa ancora più facile.

Perché stai cercando di reinventare la ruota? Hai sostanzialmente descritto un gestore di password offline con crittografia molto scarsa. Perché non utilizzare semplicemente un gestore di password offline che utilizza un moderno schema di crittografia sicura affidabile?

    
risposta data 11.01.2018 - 11:39
fonte
1

Si consiglia di passare attraverso la logica dell'algoritmo di crittografia utilizzato. L'algoritmo non terrà conto della struttura del file che deve essere crittografato.

Ad esempio XOR'in un file che contiene:

  • 0x00 byte come padding convertiranno questa parte nella chiave stessa.

  • la chiave stessa in bytecode risulterà in 0x00 byte.

La chiave viene quindi trapelata confrontando il file prima e dopo la crittografia.

La stessa cosa vale per tutte le funzioni logiche incluso:

  • non
  • E

  • o

  • Tutte le permutazioni di loro.

Le perdite chiave possono essere mitigate lasciando invariate le parti che fanno parte della chiave o 0x00.

    
risposta data 12.01.2018 - 14:06
fonte

Leggi altre domande sui tag