ConsidĂ©rons un scĂ©nario oĂč il est nĂ©cessaire d'assurer la sĂ©curitĂ© d'un coffre-fort bancaire. Il est considĂ©rĂ© comme absolument impĂ©nĂ©trable sans la clĂ©, qui vous est remise dĂšs le premier jour de travail. Votre objectif est de conserver la clĂ© de maniĂšre fiable.
Supposons que vous ayez décidé de garder la clé sur vous en permanence, en donnant accÚs au coffre-fort selon les besoins. Mais vous réaliserez rapidement que cette solution ne se déploie pas efficacement en pratique, car chaque fois que l'on doit ouvrir le coffre, votre présence physique est nécessaire. Et qu'en est-il des congés qui vous ont été promis ? De plus, la question qui fait encore plus peur est : et si vous perdez la seule clé ?
En pensant à vos congés, vous décidez de faire une copie de la clé et de la confier à un collÚgue. Cependant, vous comprenez que cela n'est pas non plus idéal. En doublant le nombre de clés, vous avez également doublé les risques de vol de la clé.
DĂ©sespĂ©rĂ©, vous dĂ©truisez le duplicata et dĂ©cidez de diviser la clĂ© d'origine en deux. Maintenant, vous pensez que deux personnes de confiance avec des fragments de clĂ© doivent ĂȘtre prĂ©sentes physiquement pour assembler la clĂ© et ouvrir le coffre-fort. Cela signifie qu'un voleur doit voler deux fragments, ce qui est deux fois plus difficile que de voler une clĂ© unique. Cependant, vous rĂ©alisez rapidement que ce schĂ©ma n'est guĂšre meilleur qu'une simple clĂ©, car si quelqu'un perd la moitiĂ© de la clĂ©, la clĂ© complĂšte ne pourra pas ĂȘtre rĂ©tablie.
Le problĂšme peut ĂȘtre rĂ©solu par une sĂ©rie de clĂ©s et de serrures supplĂ©mentaires, mais avec cette approche, il sera rapidement nĂ©cessaire beaucoup de clĂ©s et de serrures. Vous dĂ©cidez que dans un schĂ©ma idĂ©al, la clĂ© doit ĂȘtre divisĂ©e afin que la sĂ©curitĂ© ne repose pas entiĂšrement sur une seule personne. Vous concluez Ă©galement qu'il doit exister un certain seuil de nombre de fragments, afin que, mĂȘme en cas de perte d'un fragment (ou si la personne est en congĂ©), la clĂ© reste fonctionnelle.
Comment diviser un secret
Un tel type de schéma de gestion des clés a été pensé par Adi Shamir en 1979, lorsqu'il a publié son travail . Dans l'article, il explique briÚvement ce qu'on appelle le
schéma de seuil pour une séparation efficace d'une valeur secrÚte (par exemple, une clé cryptographique) en
parties. Ensuite, lorsque et seulement lorsque au moins
de
parties sont réunies, il est possible de restaurer facilement le secret.
.
D'un point de vue de la sécurité, une propriété importante de ce schéma est que l'attaquant ne doit rien connaßtre du tout s'il n'a pas au moins
des fragments. MĂȘme la possession de
fragments ne devrait donner aucune information. Nous appelons cela la sécurité sémantique.
L'interpolation polynomiale
Le schéma de Shamir
est construit autour du concept de l'interpolation polynomiale. Si vous n'ĂȘtes pas familier avec ce concept, il est en rĂ©alitĂ© assez simple. En fait, si vous avez dĂ©jĂ dessinĂ© des points sur un graphique et les avez ensuite reliĂ©s par des lignes ou des courbes, vous l'avez dĂ©jĂ utilisĂ© !Ă travers deux points, on peut tracer un nombre illimitĂ© de polynĂŽmes de degrĂ© 2. Pour choisir l'unique parmi eux, il nous faut un troisiĂšme point. Illustration :

Considérons un polynÎme de degré un,
. Si vous souhaitez tracer cette fonction sur un graphique, combien de points vous faut-il ? Eh bien, nous savons que c'est une fonction linéaire qui forme une ligne, donc il faut au moins deux points. Ensuite, prenons une fonction polynomiale de degré deux,
. C'est une fonction quadratique, donc il faut au moins trois points pour tracer le graphique. Qu'en est-il d'un polynÎme de degré trois ? Au moins quatre points. Et ainsi de suite.
La véritable beauté de cette propriété réside dans le fait que, connaissant le degré de la fonction polynomiale et au moins
points, nous pouvons déduire des points supplémentaires pour cette fonction polynomiale. L'extrapolation de ces points supplémentaires est ce que nous appelons
l'interpolation polynomiale Construction du secret.
Vous avez peut-ĂȘtre dĂ©jĂ compris que le schĂ©ma intelligent de Shamir entre en jeu ici. Supposons que notre secret
. Nous pouvons transformer
â ce sont des
en un point sur le graphique
et inventer une fonction polynomiale de degré
, qui satisfait Ă ce point. Rappelons que
sera notre seuil de fragments requis, donc si nous fixons le seuil à trois fragments, nous devrions sélectionner une fonction polynomiale de degré deux.
Notre polynĂŽme sera de la forme
â des entiers positifs choisis au hasard. Nous ne faisons que construire un polynĂŽme de degrĂ©
, oĂč
et
, oĂč le coefficient libre
est notre secret
 , et chacun des suivants
.
Un membre a un coefficient positif choisi au hasard. Si nous revenons Ă l'exemple initial et supposons que
, alors nous obtiendrons une fonction
.
à ce stade, nous pouvons générer des fragments en connectant
des entiers uniques dans
, oĂč
(car c'est notre secret). Dans cet exemple, nous voulons distribuer quatre fragments avec un seuil de trois, donc nous générons aléatoirement des points
et envoyons un point à chacune des quatre personnes de confiance, les gardiens de la clé. Nous informons également les gens que
, car c'est considéré comme une information publique et nécessaire pour la reconstruction
.
Reconstruction du secret
Nous avons déjà discuté du concept d'interpolation polynomiale et de ce qu'il implique dans le schéma de partage de secret de Shamir
. Lorsque trois des quatre personnes de confiance souhaitent récupérer
, elles n'ont qu'Ă interpoler
avec leurs points uniques. Pour cela, elles peuvent définir leurs points
et calculer le polynÎme d'interpolation de Lagrange en utilisant la formule suivante. Si la programmation vous est plus familiÚre que les mathématiques, alors pi est essentiellement un opérateur for, qui multiplie tous les résultats, et sigma est for, qui additionne tout.


En cas
Nous pouvons le résoudre de la maniÚre suivante et retrouver notre fonction polynomiale d'origine :

Puisque nous savons que
, la reconstruction
se fait simplement :

Utilisation de l'arithmétique entiÚre non sécurisée
Bien que nous ayons appliqué avec succÚs l'idée principale de Shamir
, il nous reste un problĂšme que nous avons ignorĂ© jusqu'Ă prĂ©sent. Notre fonction polynomiale utilise de l'arithmĂ©tique entiĂšre non sĂ©curisĂ©e. Gardez Ă l'esprit que pour chaque point supplĂ©mentaire qu'un attaquant obtient sur le graphique de notre fonction, il reste moins de possibilitĂ©s pour d'autres points. Vous pouvez le voir par vous-mĂȘme lorsque vous tracez un graphique en augmentant le nombre de points pour une fonction polynomiale utilisant de l'arithmĂ©tique entiĂšre. C'est contre-productif pour notre objectif de sĂ©curitĂ© dĂ©clarĂ©, car un malfaiteur ne doit absolument rien savoir tant qu'il n'a pas au moins
des fragments.
Pour dĂ©montrer Ă quel point le schĂ©ma utilisant l'arithmĂ©tique entiĂšre est faible, considĂ©rons un scĂ©nario oĂč un attaquant a obtenu deux points
et sait que l'information publique est que
. De ces informations, il peut déduire
, égal à deux, et intégrer les valeurs connues dans la formule
et
.

Ensuite, l'attaquant peut trouver
, en calculant
:

Puisque nous avons défini
comme des entiers positifs choisis au hasard, il y a un nombre limité de possibles
. Avec ces informations, l'attaquant peut déduire
, car tout ce qui est supérieur à 5 rendra
négatif. Cela s'avÚre vrai, car nous avons défini 
Ensuite, l'attaquant peut calculer les valeurs possibles
, en remplaçant
dans
:

Avec un ensemble limité d'options pour
il devient clair à quel point il est facile de deviner et de vérifier les valeurs
. Il y a ici seulement cinq options.
Résolution du problÚme de l'arithmétique entiÚre non sécurisée
Pour éliminer cette vulnérabilité, Shamir propose d'utiliser l'arithmétique modulaire, en remplaçant
sur
, oĂč
et
â l'ensemble de tous les nombres premiers.
Rappelons rapidement comment fonctionne l'arithmétique modulaire. Les horloges à aiguilles sont une notion déjà familiÚre. Elles utilisent des heures qui sont
. DÚs que l'aiguille des heures passe le douze, elle revient à une. Une caractéristique intéressante de ce systÚme est que simplement en regardant l'horloge, nous ne pouvons pas déduire combien de tours l'aiguille des heures a effectués. Cependant, si nous savons que l'aiguille des heures a dépassé 12 quatre fois, nous pouvons déterminer complÚtement le nombre d'heures écoulées avec une simple formule
, oĂč
 â c'est notre diviseur (ici
),
 â c'est le coefficient (combien de fois le diviseur rentre sans reste dans le nombre initial, ici
), tandis que
 â c'est le reste, que renvoie gĂ©nĂ©ralement l'opĂ©rateur modulo (ici
). Connaßtre toutes ces valeurs nous permet de résoudre l'équation pour
, mais si nous omettons le coefficient, nous ne pourrons jamais reconstruire la valeur initiale.
On peut démontrer comment cela améliore la sécurité de notre schéma en appliquant le schéma à notre exemple précédent et en utilisant
. Notre nouvelle fonction polynomiale
, et les nouveaux points
. Maintenant, les gardiens de clĂ© peuvent Ă nouveau utiliser l'interpolation polynomiale pour reconstruire notre fonction, mais cette fois, les opĂ©rations d'addition et de multiplication doivent ĂȘtre accompagnĂ©es d'une rĂ©duction modulo
(p. ex.
).
En utilisant ce nouvel exemple, supposons que l'attaquant a découvert deux de ces nouveaux points,
, et les informations publiques
. Cette fois, l'attaquant utilise toutes les informations disponibles pour dĂ©duire les fonctions suivantes, oĂč
 â est l'ensemble de tous les entiers positifs, et
représente le coefficient du module
.

Maintenant, notre agresseur retrouve Ă nouveau
, en calculant
:

Ensuite, il essaie à nouveau de déduire
, en remplaçant
dans
:

Cette fois, il a un problÚme sérieux. Les valeurs manquent dans la formule
,
et
. Ătant donnĂ© qu'il existe une infinitĂ© de combinaisons de ces variables, il ne peut obtenir aucune information supplĂ©mentaire.
Considérations de sécurité
Le schĂ©ma de partage de secrets de Shamir propose une sĂ©curitĂ© du point de vue de la thĂ©orie de l'information. Cela signifie que la mathĂ©matique est robuste mĂȘme contre un attaquant ayant une puissance de calcul illimitĂ©e. Cependant, le schĂ©ma prĂ©sente encore plusieurs problĂšmes connus.
Par exemple, le schĂ©ma de Shamir ne crĂ©e pas des fragments vĂ©rifiables, c'est-Ă -dire que les gens peuvent facilement prĂ©senter de faux fragments et entraver la rĂ©cupĂ©ration du bon secret. Un gardien hostile de fragments ayant suffisamment d'informations peut mĂȘme produire un autre fragment, modifiant
à sa guise. Ce problÚme est résolu par des schémas de partage de secrets vérifiables, tels que le schéma de Feldman.
Un autre problÚme est que la longueur de tout fragment est égale à celle du secret correspondant, rendant la longueur du secret facile à déterminer. Ce problÚme est résolu par un remplissage du secret avec des nombres arbitraires jusqu'à une longueur fixe.
Enfin, il est important de noter que nos inquiĂ©tudes concernant la sĂ©curitĂ© peuvent aller au-delĂ du schĂ©ma lui-mĂȘme. Pour les applications cryptographiques rĂ©elles, il existe souvent la menace d'attaques par des canaux auxiliaires, oĂč un attaquant essaie d'extraire des informations utiles Ă partir des temps d'exĂ©cution de l'application, de la mise en cache, des plantages, etc. Si cela constitue une prĂ©occupation, il convient d'examiner minutieusement, lors du dĂ©veloppement, l'utilisation de mesures de protection, telles que des fonctions et des recherches avec un temps d'exĂ©cution constant, d'Ă©viter d'Ă©crire en mĂ©moire sur disque, et de rĂ©flĂ©chir Ă plusieurs autres Ă©lĂ©ments qui dĂ©passent le cadre de cet article.
Démo
Sur il y a une dĂ©monstration interactive du schĂ©ma de partage de secrets de Shamir. La dĂ©monstration est basĂ©e sur la bibliothĂšque , qui est elle-mĂȘme un port JavaScript d'un programme populaire Veuillez noter que le calcul de grandes valeurs
,
et
peut prendre un certain temps.
Source : habr.com
