Per completare la risposta di @ Terry:
La condivisione segreta di Shamir funziona sui valori in un dato campo (il concetto matematico). In pratica, se accetti di non realizzare più di 255 condivisioni (cioè 1 < k & leq; n & leq; 255 ), allora è conveniente lavorare in GF (256) , il campo con 256 elementi. Ciò significherebbe che in realtà fai la condivisione su ogni byte indipendentemente dagli altri, e quindi che puoi "condividere" qualsiasi segreto che si adatti a una sequenza di byte (quindi, davvero, qualsiasi cosa che si adatta un computer). Ed è abbastanza efficiente.
Poiché ogni condivisione ha la stessa lunghezza dei dati segreti, potresti voler ottimizzare un po 'le cose con la crittografia. Ciò significa che se vuoi condividere un grande valore segreto S (ad esempio un video da 3 gigabyte), allora tu:
- Crea una chiave casuale a 128 bit K .
- Encrypt S con K e una buona cifra simmetrica; il valore crittografato è memorizzato in un'area comune dove ogni partecipante può recuperarlo.
- Applica la condivisione segreta di Shamir su K .
In questo modo, ogni detentore di azioni deve solo ricordare qualcosa delle dimensioni di K (16 byte, si adatta facilmente in vari punti, ad esempio una smartcard o anche un cervello umano), mentre il segreto value S può essere arbitrariamente grande e efficientemente immagazzinato e distribuito (poiché è crittografato, può essere mostrato al pubblico in generale, ad esempio trasferito con una rete peer-to-peer).
Ora per scegliere i valori di condivisione, questo è un problema interessante. Se hai n condivisioni e una soglia di k , la normale descrizione dello schema di Shamir implica che ogni azione è essenzialmente casuale. La divisione segreta restituisce le condivisioni e gli azionisti possono solo riceverle.
I calcoli possono essere estesi banalmente in uno schema in cui al massimo le condivisioni k-1 sono scelte arbitrariamente. Quindi alcune condivisioni devono essere ancora casuali.
Le condivisioni scelte dall'utente hanno senso quando è necessario ricordare le condivisioni, ovvero password . Ma le password sono soggette alla forza bruta. Ad esempio, se un utente malintenzionato ottiene azioni k-1 e sa che una delle altre condivisioni è una password, può eseguire un attacco dizionario su quella condivisione extra, vale a dire provare potenziali password (per ogni password, ricalcolare il segreto condiviso con quella password come condivisione extra, e vedere se il risultato" ha senso "). Questo purtroppo indebolisce l'intero sistema.
In effetti, una grande proprietà dello schema di Shamir è che è incondizionatamente sicuro , il che significa che resiste agli aggressori con potere di calcolo arbitrario, inclusi i computer che non sono ancora stati inventati (purché la fonte di la casualità usata nella scissione è davvero casuale). Ciò semplifica l'analisi della sicurezza, in particolare per lo storage a lungo termine, in cui è necessario prevedere la quantità di potenziali attacchi da parte dei computer che avranno decadi da ora. Ma se inserisci le password nel mix, questa sicurezza incondizionata si vaporizza come rugiada sotto il sole del mattino.