Non esiste una scala di sicurezza unidimensionale che consenta di valutare tutti o quasi tutti gli scenari come bassa, media o alta sicurezza. Ogni scenario ha contesto, requisiti, obiettivi e in generale un modello di attacco .
In ogni caso, La condivisione segreta di Shamir è "perfetto", in quanto è uno dei pochissimi algoritmi che offrono sicurezza incondizionata: anche i computer infinitamente potenti non possono rompere le funzionalità offerte da tale schema.
Quali sono queste caratteristiche? Vale a dire:
- L'algoritmo funziona in un campo finito K . Le implementazioni pratiche utilizzano GF (256) , cioè byte .
- Lascia che m sia una sequenza di elementi di K (ad esempio, alcuni byte).
- Sia n il "numero di condivisioni" e t la "soglia" tale che n ≥ t ≥ 1.
- L'algoritmo produce n "condivisioni", dove ogni condivisione è una sequenza di elementi di K della stessa lunghezza di m . Le condivisioni sono tali che ogni sottoinsieme di condivisioni t è sufficiente per ricostruire efficientemente m ; ma ogni sottoinsieme di azioni t-1 non fornisce alcuna informazione su m (eccetto, ovviamente, la sua lunghezza).
Indipendentemente dalla sua perfezione, l'algoritmo è solo per transito : al momento della produzione delle azioni, il valore m esiste nel suo complesso in alcuni sistemi fisici; e quando il valore m deve essere ricostruito, è ricostruito : esiste di nuovo nel suo complesso in qualche altro sistema fisico. La divisione opera solo tra questi due punti nello spazio-tempo. È sufficiente per alcuni usi, alcuni dei quali sono probabilmente "ad alta sicurezza"; L'ho usato, ad esempio, per dividere una copia di backup di una chiave master in un sistema di gestione delle smart card (la chiave master esiste in un sistema specifico, il backup è stato fatto per essere in grado di recuperare da una perdita catastrofica come inondazione o fuoco).
Nessun algoritmo fa tutto. Ci sono scenari in cui le funzionalità di sicurezza di Shamir's Secret Sharing non corrispondono a quelle necessarie. In un contesto di "condivisioni" e "soglia", ci sono, per esempio, firme di gruppo : questo è pensato per situazioni in cui devono essere prodotte firme digitali, senza che nessuna entità possa generare da sola le firme. Ma vogliamo anche che questa proprietà sia mantenuta anche se vengono prodotte molte firme. Se si desidera utilizzare Shamir's Secret Sharing per questo, si dividerà una normale chiave privata della firma e la si ricostruirà al momento della firma, ma ciò richiede un "sistema affidabile", sia per la generazione delle chiavi che per l'utilizzo delle chiavi. Quel sistema acquisisce, transitoriamente, la conoscenza dell'intera chiave. Se questo è inaccettabile per te, allora devi fare qualcos'altro, ed è per questo che sono intesi gli algoritmi di firma di gruppo. Una firma di gruppo consente di generare una firma dalle azioni collettive di un numero sufficiente di proprietari di condivisioni di chiavi, senza che la chiave privata venga rivelata a nessuno di essi, per quanto disonesto possa essere.
Gli algoritmi di gruppo sono intrinsecamente più restrittivi della Condivisione Segreta di Shamir poiché, per definizione, non ricostruiscono il segreto che è stato diviso; in quanto tali, possono solo calcolare una funzione specifica che coinvolge il segreto (ad esempio generazione di firme o decrittografia asimmetrica). D'altro canto, i buoni algoritmi di gruppo possono evitare in qualche modo la necessità di un sistema affidabile (molte firme di gruppo hanno soglie di onestà: se un numero sufficiente di proprietari di chiavi maligne cooperano tra loro, potrebbero guadagnare un po 'di energia in più).
Gli algoritmi di gruppo non sono né più né meno sicuri della condivisione segreta di Shamir; fanno solo qualcos'altro.