Attualmente, si registra una crescita significativa nell'utilizzo e nella ricerca sui meccanismi di condivisione di segreti. Ciò implica la capacità di recuperare (a condizione che sia presente almeno un numero minimo o una soglia di entità) uno specifico segreto (chiave, file, dati, codice, ecc.) all'interno di un gruppo di entità (persone, macchine, computer, animali, veicoli, ecc.) dopo aver distribuito un frammento di tale segreto a ciascuna entità autorizzata. Ad esempio, per accedere a una determinata risorsa, attivare un dispositivo o lanciare un ordigno nucleare, come un missile balistico intercontinentale, è necessaria la presenza di un numero minimo prestabilito di entità autorizzate. 


Tipizzazione degli schemi di condivisione segreta a soglia. Identificazione delle fasi.
Uno schema di condivisione segreta a soglia (t, N) può essere definito come un metodo per condividere un segreto S tra un insieme di N partecipanti in modo tale che qualsiasi gruppo di t di essi possa determinare il segreto S, ma nessun gruppo di (t – 1) o meno partecipanti possa farlo. Allo stesso modo, nessun gruppo di (t – 1) partecipanti può apprendere alcuna informazione sul segreto S. Uno schema di condivisione segreta consiste in due fasi: (1) Fase di condivisione. In un meccanismo di condivisione segreta a soglia (4, 4), un'entità di distribuzione D inizialmente possiede un segreto S e desidera stabilire un gruppo di quattro partecipanti autorizzati P1, P2, P3, P4 per condividere S, in modo tale che nessuno di loro conosca il segreto. L'obiettivo della fase di condivisione è frammentare S e fornire informazioni sufficienti a ciascun Pi (un frammento di S) in modo che, lavorando insieme, i quattro partecipanti possano determinare S, ma nessuno abbia informazioni sufficienti per determinare il segreto S. (2) Fase di ricostruzione. L'idea è che un gruppo di quattro partecipanti possa determinare il segreto S. Non possono farlo se sono tre, due o uno.    
Un codice di lancio per un'arma nucleare potrebbe essere uno schema di condivisione segreta a soglia (2,3), tale che due entità qualsiasi nel gruppo di tre siano sufficienti per lanciare l'ordigno nucleare. Le tre possibili entità potrebbero essere il presidente della nazione, il ministro della difesa e il ministro degli esteri. È prudente aumentare il numero di persone che possono riunirsi per lanciare un'arma nucleare? O forse è più prudente aumentare il numero di persone che devono riunirsi per lanciare tale arma?


Sicurezza2Custodia del chip Clipper e della chiave.
Meccanismi di condivisione segreta di soglia (2, 2) e (n, n).

Tutto ebbe origine dal fatto che il governo degli Stati Uniti era convinto che gli strumenti crittografici fossero vitali per lo sviluppo commerciale nell'era digitale, ma allo stesso tempo non voleva dare a imprese o individui la possibilità di eludere i suoi meccanismi di sorveglianza per le comunicazioni crittografate. Per questo motivo, creò il chip Clipper. La proposta iniziale prevedeva che il governo avrebbe fornito ai produttori di dispositivi elettronici con capacità di crittografia (telefoni, computer, apparecchi di comunicazione, ecc.) dei chip Clipper che avrebbero consentito la crittografia dei messaggi provenienti dai dispositivi. Il governo avrebbe conservato una copia della chiave segreta di ciascun chip Clipper in modo che, quando ritenuto necessario, potesse facilmente decrittografare i messaggi per motivi di sicurezza nazionale e/o conformità alla legge. Questa proposta iniziale fu impopolare e scatenò numerose proteste. Per rispondere alle critiche secondo cui avrebbe reso troppo facile per il governo spiare illegalmente individui e imprese, il governo propose di dividere ogni chiave in due parti e di istituire due agenzie nazionali per salvaguardare ciascun frammento. In questo modo, se l'FBI, la CIA, il Dipartimento della Difesa, la DEA, la NSA, ecc. avessero avuto bisogno di ottenere una chiave del chip Clipper per qualsiasi motivo, avrebbero dovuto presentare un'ordinanza del tribunale a entrambe le agenzie custodi.
La proposta del governo statunitense per la custodia della chiave del chip Clipper era uno schema di condivisione segreta (2, 2). L'implementazione era la seguente: la chiave del chip Clipper K, una stringa a 64 bit, veniva divisa in due stringhe a 32 bit, K1 e K2, in modo tale che K = (K1 x OR K2). K1 e K2 venivano memorizzate presso agenzie custodi separate. Supponiamo che K = 0110, che K1 = 1010 venga scelto casualmente e che venga calcolato K2 = K xor K1 = 1100, allora K = (K1 xor K2) = 0110. Questo schema soddisfa i requisiti di uno schema di condivisione segreta a soglia, in modo tale che nessuna delle due agenzie, senza l'altra, potrebbe ricostruire K, ma combinando K1 e K2, può ottenere K.
Esaminiamo un altro schema di condivisione segreta (2, 2), in questo caso uno schema difettoso. Supponiamo di avere una chiave segreta a dieci bit: K = 0010101011, e di dividerla in due stringhe a cinque bit, ciascuna delle quali è una metà, K1 = 00101 e K2 = 01011, e di distribuirle a ciascun partecipante, P1 e P2. Ogni partecipante conosce metà della stringa segreta K. Ciò viola la definizione di uno schema di condivisione segreta a soglia (t, N), che stabilisce che (t – 1) partecipanti non dovrebbero apprendere alcuna informazione sul segreto K da condividere. In questo caso, ogni partecipante ha due alla potenza di K diviso due possibilità in meno quando tenta di trovare la chiave segreta con la forza bruta. Un altro esempio di tale meccanismo difettoso è il seguente: per condividere K = 0110 in due parti, supponiamo di prendere due stringhe corrispondenti ai primi due e agli ultimi due bit di K, cioè K1 = 01 e K2 = 10. Questo schema è difettoso perché rivela informazioni su K e rende un attacco a forza bruta molto più facile.   
Sicurezza3Consideriamo un altro meccanismo di condivisione segreta (n, n), in questo caso non difettoso. Dato un segreto S da condividere, (n – 1) frammenti del segreto S vengono scelti casualmente e rappresentati come: S1, ... , Sn-1, l'n-esimo frammento è calcolato come la differenza tra il segreto S e la somma di tutti gli n – 1 frammenti:


meccanismo di condivisione Shamir (3, 8)
Sia un segreto S = 190503180520 e sia il modulo dell'aritmetica modulare finita p = 1234567890113. Un polinomio di grado t – 1 = 3 – 1 = 2 è costruito con coefficienti casuali di x e termine indipendente essendo il segreto S, il risultato è: f (x) = (S + a1.x + a2.x2) mod p = (190503180520 + 482943028839.x + 1206749628665. x2) mod p. Otto possibili punti da usare come frammenti del segreto S sono: {(1, 645627947891), (2,1045116192326), (3, 154400023692), (4, 442615222255), (5, 675193897882), (6, 852136050573), (7, 973441680328), (8, 1039110787147)}.
Schemi di condivisione di segreti a soglia verificabile (t, N).
Gli schemi di condivisione di segreti a soglia verificabile soddisfano le due proprietà: (1) La ricostruzione del segreto S non dipende da t parti che eseguono la ricostruzione; questo impedisce ai partecipanti di imbrogliare. Il comportamento fraudolento dei partecipanti o dei portatori di frammenti del segreto dovrebbe risultare nel loro S, diverso dall'S che è stato distribuito. Pertanto, nel caso dello schema (2, 3), due parti oneste possono distribuire frammenti reali, mentre un portatore disonesto può contribuire con un frammento errato. Ci sono tre possibili ricostruzioni di S a seconda di quale coppia di partecipanti ha collaborato (violando la definizione). (2) Se il distributore D di frammenti del segreto S è onesto, allora il segreto recuperato deve essere esattamente identico al segreto condiviso.
Scegliamo p un numero primo elevato e q un grande numero primo, tale che q diviso per p meno uno (q / (p – 1)) sia un grande fattore primo. Scegliamo g tale che l'ordine di g sia q (ord(g) = q), il che significa che la prima, la seconda, la terza, fino alla q-esima potenza di g modulo p sono sempre distinte (g, g² mod p, ..., gq mod p). In uno schema di condivisione segreta verificabile (2, 3) scegliamo S tra 0 e (p – 1), selezioniamo casualmente A tra 0 e (p – 1), quindi f(x) = (Ax + S) mod q, ottenendo S1= f(1) = (A + S) mod q , S2= f(2) = (2.A + S) mod q , S3= f(3) = (3.A + S) mod q , inoltre il distributore D distribuisce ad una bacheca pubblica tre valori: (Z1= gS1 mod p , Z2= gS2 mod p , Z3= gS3 mod p). Questo meccanismo è simile a un certo tipo di schema di impegno da parte dell'entità D secondo cui i frammenti forniti ai partecipanti appartengono allo stesso segreto S. I partecipanti vogliono assicurarsi che il distributore D non stia barando e che Z1, Z2 e Z3 contribuiranno a garantire che tutti i frammenti segreti appartengano allo stesso segreto S. Questi valori ​​Z1, Z2 e Z3 contribuiranno anche a impedire ai partecipanti di barare rivelando frammenti non forniti da D. La procedura per ciascuna parte per accettare o rifiutare i propri frammenti chiave è: (1) Per ogni i appartenente all'insieme {1, 2, 3}, P controlla se Zi = gS1 mod p e Z1 . Z3 = (Z2)2 mod py, quindi accetta o rifiuta. Se ci sono più di due reclami da parte dei tre partecipanti, allora il distributore D ha barato. Se c'è solo un reclamo, significa che il distributore D ha barato un po', ma non abbastanza da rendere il segreto irriconoscibile, oppure che uno dei partecipanti sta facendo un reclamo falso. Per la fase di ricostruzione, qualsiasi Si che non soddisfi Zi (gS1 mod p = Zi) viene scartato. Quindi, qualsiasi coppia di frammenti che non sono stati scartati viene interpolata utilizzando una ricostruzione semplice. Se si è verificato un solo reclamo, ci sono abbastanza punti per ricostruire S. (2) Il secondo controllo consiste nel verificare la linearità. Se tre punti sono sulla stessa linea, la ricostruzione è andata a buon fine. Quando D è onesto, è necessario garantire che questi tre valori pubblicati siano coerenti con tre punti collineari. Ad esempio, se: Z1 . Z3 = (Zi)2 mod p, significa che: (gS1 mod p) . (gS3 mod p) = (gS2 mod p)2, cioè, gS1+S3mod p = g2.S2, cioè, S1 + S3 = 2.S2 mod q, cioè: (1, S1), (2, S2) e (3, S3) sono collineari modulo q, che è la condizione per la linearità.
Sicurezza4Considerazioni finali
Il nostro gruppo di ricerca lavora da molti anni nel campo dei meccanismi di condivisione di segreti e della loro combinazione con altri meccanismi, come gli schemi di impegno. Il loro campo di applicazione è incredibilmente vasto e attualmente in rapida espansione.

Questo articolo fa parte delle attività svolte nell'ambito del LEFIS-APTICE (finanziato daSocrates, Commissione Europea).

Bibliografia

- Areitio, J. “Sicurezza delle informazioni: reti, informatica e sistemi informativi”. Cengage Learning-Paraninfo. 2009.
- Areitio, J. “Analisi dello spam”. Rivista Conectrónica. N. 104. Febbraio 2007.
- Areitio, J. “Analisi delle tecnologie per l'occultamento delle informazioni”. Rivista Conectrónica. N. 109. Luglio-agosto 2007.
- Areitio, J. “Analisi della sicurezza forense, delle tecniche antiforensi, della risposta agli incidenti e della gestione delle prove digitali”. Rivista Conectrónica. N. 125. Marzo 2009.
- Senior, A. “Protezione della privacy nella videosorveglianza”. Springer. 2009.
- Gutwirth, S., Poullet, Y., De Hert, P., Terwangne, C. e Nouwt, S. “Reinventing Data Protection”. Springer. 2009.
- Ferguson, N. et al. “Cryptography Engineering: Design Principles and Practical Applications.” Wiley. 2010.
- Flegel, U. “Privacy Respecting Intrusion Detection”. Springer. 2007.

Autore:

Prof. Dr. Javier Areitio Bertolín – E.Mail: Questo indirizzo email è protetto dagli spambot. È necessario abilitare JavaScript per visualizzarlo.
Professore presso la Facoltà di Ingegneria dell'Eside.
Direttore del Gruppo di Ricerca su Reti e Sistemi presso l'Università di Deusto.

Maggiori informazioni o un preventivo