FR 2899750 A1 20071012 FR 0603122 A 20060410 PROCEDE ET TERMINAL POUR SECURISER LA GENERATION D'UNE CLE DE CHIFFREMENT L'invention concerne les communications par voie électronique, et en particulier la sécurisation de telles communications. La sécurisation des communications par voie électronique prend une importance croissante avec le développement des réseaux informatiques. Toutes les données échangées transitent sur des réseaux publics et sont susceptibles d'être lues par des personnes non destinées à en prendre connaissance. Il est donc souvent nécessaire de chiffrer les communications. Le chiffrement se fait à l'aide d'algorithmes publics, mais utilisant une donnée confidentielle ou clé de chiffrement qui n'est connue que de l'expéditeur et du destinataire. Un éventuel attaquant n'a aucune possibilité d'accéder aux données échangées s'il ne connaît pas la clé de chiffrement. Pour assurer un certain niveau de sécurité, la clé de chiffrement doit être modifiée souvent. En effet l'utilisation d'une même clé pour chiffrer un volume important de données la rend vulnérable à des attaques de type statistique. Habituellement une nouvelle clé est générée à chaque nouvelle communication. La génération d'une clé est classiquement réalisée par des protocoles dits de Diffie Hellman, dont le principe est le suivant. On travaille en arithmétique modulo N, où N est un grand nombre entier (dont la représentation informatique nécessite plusieurs centaines ou même milliers de bits), et on choisit à l'avance un nombre entier g défini modulo N. Ces nombres N et g sont publics et connus de tous les utilisateurs. Considérons alors deux utilisateurs particuliers, ci-après appelés Alice et Bob , qui souhaitent communiquer entre eux de façon confidentielle sur un réseau public. Alice génère en secret une donnée aléatoire a et calcule le nombre g puissance a modulo N (noté ci-après gAa [Mod N]) qu'elle envoie à Bob. Celui-ci, de son côté, génère en secret une donnée aléatoire b et calcule le nombre g puissance b modulo N (g^b [Mod N]) qu'il envoie à Alice. Après cet échange, Alice connaît a et gAb [Mod N] et les utilise pour calculer (gAb [Mod N] )^a [Mod N]. Bob, pour sa part, connaît b et g''a [Mod N] et calcule de son côté (g^a [Mod N] )''b [Mod N] = g^ab [Mod N]. Les deux nombres ainsi calculés sont égaux entre eux. Ils sont connus des deux utilisateurs et sont utilisés pour déterminer une clé de chiffrement. Un attaquant qui aurait copié toutes les informations transitant sur le réseau, connaîtrait les nombres g^a [Mod N] et g^b [Mod N], mais pas les données aléatoires a et b qui ne transitent pas par le réseau. Or sans la connaissance des données aléatoires a et b, il est impossible de calculer g^ab [Mod N], du moins si N est suffisamment grand. D'autres protocoles utilisent des objets mathématiques plus complexes (courbes elliptiques sur des corps finis, groupes de Jacobi de courbes hyperelliptiques,...), mais le principe général reste toujours le même. Alice génère en secret une donnée aléatoire a, et calcule à l'aide d'une fonction cryptographique appliquée à la donnée aléatoire a une donnée d'initialisation Ga qu'elle envoie dans un message d'initialisation à Bob. De façon similaire, Bob, de son côté, génère en secret une donnée aléatoire b et calcule à l'aide de la même fonction cryptographique appliquée à la donnée aléatoire b une donnée d'initialisation Gb, qu'il envoie à Alice dans un message d'initialisation. La connaissance, soit du couple (Ga,b), soit du couple (Gb,a) permet aux deux utilisateurs de calculer, chacun de son côté, une donnée secrète commune Gab. La donnée secrète commune Gab est connue seulement des deux utilisateurs et est impossible à calculer par un attaquant qui connaîtrait les données d'initialisation Ga et Gb qui transitent par le canal de communication, mais qui ne connaîtrait aucune des données aléatoires initiales a et b. La donnée secrète commune Gab ainsi élaborée sert ensuite à déterminer une clé de chiffrement qui sera utilisée pour chiffrer la suite des communications entre les deux utilisateurs. Ces protocoles sont décrits notamment dans "Cryptographie Appliquée", de Bruce Schneier, 2ème édition, traduction française parue chez International Thomson Publishing France en 1997, plus particulièrement au chapitre 22, page 541 et suivantes. L'idée originale de ces protocoles a été publiée par W. Diffie et M.E. Hellman en 1976 dans "New Directions in Cryptography", IEEE Transactions on Information Theory, vol. IT 22, n 6, pp 644-654. Les généralisations aux courbes elliptiques et hyperelliptiques sont décrites par exemple dans l'article de V.S. Miller, "Use of Elliptic Curves in Cryptography", Advances in Cryptology, CRYPTO '85 Proceedings, p 417-426, Springer Verlag, Berlin 1986, ou dans les articles de N. Koblitz, "Elliptic Curves Cryptosystems ", Mathematics of Computation vol. 48, n 177 p 203-209, 1987, et "Hyperelliptic Cryptosystems ", Journal of Cryptology, Vol. 1. n 3, pp 129-150, 1989. Une des failles du protocole de type Diffie-Hellman est l'attaque dite Man-in-the-middle . Cette attaque suppose que l'attaquant intervient sur le réseau en lisant et en modifiant les données qu'il voit passer. L'attaquant se fait passer pour Alice auprès de Bob et pour Bob auprès d'Alice. Le protocole d'échange de données d'initialisation décrit précédemment est alors appliqué d'une part, entre Alice et l'attaquant (en qui Alice croit reconnaître Bob) et d'autre part entre Bob et l'attaquant (en qui Bob croit reconnaître Alice). De façon plus détaillée, l'attaquant génère de son côté des données aléatoires al et bl et calcule ses propres données d'initialisation Gal et Gbl, appelées par la suite données d'initialisation pirates . Lorsque l'attaquant voit passer la donnée d'initialisation Ga envoyée par Alice, il l'intercepte et la remplace par la donnée d'initialisation pirate Gal qu'il transfère à Bob. De même lorsqu'il voit passer la donnée d'initialisation Gb envoyée par Bob, il la remplace par la donnée d'initialisation pirate Gbl qu'il transfère à Alice. Après ces échanges, d'une part, il calcule et partage avec Alice la donnée secrète commune Gabl qu'il utilisera pour chiffrer les communications avec Alice, et d'autre part, il calcule et partage avec Bob la donnée secrète commune Galb qu'il utilisera pour chiffrer les communications avec Bob. Lorsque Alice veut envoyer un message à Bob, elle le chiffre avec la clé issue de Gab1, qu'elle croit partager avec Bob et qu'elle partage en fait avec l'attaquant. Celui-ci intercepte le message, le déchiffre et a donc accès au message en clair, puis il le chiffre à nouveau, mais cette fois-ci avec la clé issue de Galb avant de l'envoyer à Bob. Celui-ci reçoit un message chiffré avec une clé qu'il croit partager avec Alice mais qu'il partage en fait avec l'attaquant. Le cas d'un message envoyé par Bob à Alice est traité de manière similaire, mutatis mutandis. En pratique, l'attaquant peut lire l'intégralité des données échangées, et ce à l'insu des deux utilisateurs qui croient leur message parfaitement indéchiffrable par tout tiers. Pour contrer l'attaque dite Man-in-the-middle , il faut que chaque utilisateur puisse s'assurer que le message d'initialisation provient bien de son interlocuteur et que ce message d'initialisation n'a pas été modifié pendant la transmission. De bonnes solutions ont été mises en place pour les communications entre professionnels ou encore entre grand public et sites professionnels (commerce électronique, applications de type banque à domicile...). Elles reposent sur des systèmes de cryptographie dite asymétrique, dans lesquels un utilisateur dispose d'un couple de clés, l'une d'elle, appelée clé publique étant connue de tous, l'autre, appelée clé privée étant confidentielle et n'étant connue que de lui seul. N'importe qui peut, à l'aide de la clé publique du destinataire, chiffrer un message que le destinataire seul peut déchiffrer à l'aide de sa clé privée. Un utilisateur peut aussi signer un message en utilisant sa clé privée, et tout un chacun peut vérifier la signature, à l'aide de la clé publique de cet utilisateur, . Dans le protocole décrit ci-dessus, il suffit que l'un des deux utilisateurs, par exemple Bob dispose d'un tel système. Il pourra alors signer le message contenant Gb qu'il envoie à Alice, et l'attaquant ne pourra en aucun cas signer le message contenant Gbl en faisant croire à Alice que c'est Bob qui l'a signé. De même Alice peut envoyer à Bob le message Ga chiffré avec la clé publique de Bob. Seul celui-ci pourra relire le message. L'attaque Man-in-the-middle telle que décrite ci-dessus devient alors impossible. Toutefois, ces solutions sont faciles à mettre en oeuvre entre professionnels ou tout au moins lorsque l'un des utilisateurs est un professionnel (site marchand, banque,...). Par contre, elles sont lourdes et difficiles à mettre en oeuvre pour des applications dans lesquelles deux utilisateurs grand public souhaitent communiquer de façon confidentielle, sans que les informations transmises ne soient espionnées ou même modifiées. Pour développer un système de communication sécurisé, il faudrait que chaque utilisateur se voie attribuer un couple clé publique-clé privée et connaisse les clés publiques de chacun de ses correspondants potentiels. Une telle solution peut être envisagée au sein d'une entreprise dans laquelle un administrateur sécurité serait chargé de la gestion et de la distribution des clés. Par contre, une solution de ce type est absolument inapplicable pour une application grand public comme par exemple les applications de type voix sur IP (Internet Protocol), dans lesquelles des conversations téléphoniques entre utilisateurs sont transmises via le réseau Internet au lieu d'un réseau téléphonique classique. En effet, il faudrait, entre autres, transmettre la clé publique de chaque nouvel utilisateur à tous les autres utilisateurs, et ce de manière sécurisée. C'est tout à fait irréaliste pour une application susceptible d'avoir plusieurs milliers ou même millions d'utilisateurs. Un point qui était jusqu'à présent non résolu, et auquel se propose de répondre l'invention objet du présent brevet, est de permettre à deux utilisateurs engageant une communication entre eux de s'assurer que leurs messages d'initialisation n'ont pas été modifiés lors de l'échange de ceux-ci, et ce sans recourir à une lourde infrastructure de gestion de clés, sans avoir à connaître au préalable la clé publique de son interlocuteur, et d'une façon plus générale, sans authentification préalable des utilisateurs. L'objectif de la présente invention est que les deux utilisateurs aient la certitude qu'ils sont seuls sur la ligne , c'est-à-dire que leurs communications ne peuvent être écoutées que par eux seuls. Par la suite, ils pourront inviter d'autres utilisateurs à se joindre à leur conversation, tout en ayant la certitude qu'il n'y a aucune écoute illicite de leur conversation. L'idée de base de la présente invention est de permettre aux deux utilisateurs de s'échanger à un moment un message de contrôle du type Mon message d'initialisation contenait bien Ga . Cependant, si cet échange est effectué à travers le réseau faisant l'objet d'une attaque Manin-the-middle , il sera facile à l'attaquant de modifier au passage le message de contrôle en remplaçant la vraie donnée d'initialisation par une donnée d'initialisation pirate. Le message de contrôle à échanger doit être transmis sans pouvoir être modifié par l'attaquant. Utiliser un autre canal de communication pour transmettre l'information de contrôle peut être une solution, à condition d'avoir la certitude que cet autre canal de communication n'a pas été lui aussi compromis. Dans les applications de type voix sur IP, les données échangées par les utilisateurs sont des messages sonores qui sont numérisés, puis transmis sous la forme de paquets de données binaires. L'invention propose de transmettre l'information de contrôle par un canal de communication analogique comme la voix. Ainsi, Alice peut, à un moment quelconque de la communication, délivrer vocalement son message de contrôle. Il suffit alors que son interlocuteur Bob vérifie que la donnée d'initialisation Ga qu'il a utilisée pour calculer la donnée secrète commune Gab est bien identique à celle que Alice vient de lui envoyer vocalement pour contrôle. En pratique, si la donnée d'initialisation Ga est un nombre qui peut atteindre plusieurs centaines ou milliers de bits, il est irréaliste de supposer qu'Alice acceptera de lire ce nombre ou qu'elle le fera sans erreur. De même Bob devra vérifier que ce nombre gigantesque est bien celui qu'il a reçu sous forme numérique. Un tel protocole est absolument inenvisageable pour une application grand public . L'invention objet du présent brevet résout également ce problème de la façon suivante. Dans un premier temps les deux utilisateurs, après avoir échangé leurs données d'initialisation Ga et Gb, calculent, à partir de ces données un nombre C appelé donnée de contrôle . Il suffit alors que la donnée de contrôle soit affichée sur le terminal de chacun des deux utilisateurs, que l'un des deux utilisateurs lise et transmette vocalement à l'autre utilisateur la donnée de contrôle affichée, et que l'autre utilisateur vérifie que la donnée de contrôle reçue vocalement correspond à celle qui est affichée sur son terminal. Dans le cas d'une attaque Man-in-the-middle , l'attaquant aura calculé des données de contrôle pirates d'une part à partir de la donnée d'initialisation Gb de Bob et de la donnée d'initialisation pirate Gal, d'autre part à partir de la donnée d'initialisation Ga d'Alice et de la donnée d'initialisation pirate Gbl. Mais il faut encore qu'il soit capable de modifier à la volée, dans la phrase envoyée par Alice à Bob, la donnée de contrôle transmise. Cette modification devrait être effectuée dans un message sonore, et de plus, en contrefaisant la voix d'Alice et ce exactement au bon moment. Il est extrêmement peu probable que l'attaquant arrive à une telle performance sans que Bob ne détecte que le message sonore a été trafiqué . Symétriquement, Bob pourra de son côté lire la donnée de contrôle et la transmettre vocalement à Alice. Là aussi, une attaque de la part de l'attaquant nécessite de modifier un message sonore, en contrefaisant la voix de Bob. Plus précisément, l'invention concerne un procédé pour générer d'une manière sécurisée une clé de chiffrement commune à au moins deux utilisateurs chacun équipés d'au moins un terminal de communication, les terminaux étant reliés entre eux par au moins un réseau de communication pour communiquer entre eux numériquement, le procédé comprenant des étapes au cours desquelles un terminal de chacun des utilisateurs détermine une clé de chiffrement commune à partir d'une donnée secrète privée et d'une donnée d'initialisation reçue sous forme numérique de l'autre terminal par l'intermédiaire du réseau de communication. Selon l'invention, le procédé comporte une phase de sécurisation comprenant : des étapes exécutées par chacun des terminaux et consistant à déterminer une donnée de contrôle à partir d'une donnée d'initialisation calculée localement et/ou de la donnée d'initialisation reçue, et à afficher la donnée de contrôle, et des étapes de transmission par au moins l'un des utilisateurs à l'autre utilisateur de la donnée de contrôle affichée par son terminal, par l'intermédiaire d'un canal de communication analogique, et de vérification par l'autre utilisateur qu'il existe une correspondance entre la donnée de contrôle affichée sur son terminal et la donnée de contrôle reçue de l'autre utilisateur par l'autre canal de communication. Selon un mode de réalisation de l'invention, la donnée de contrôle est transmise par un canal de communication vocale entre les deux utilisateurs. Selon un mode de réalisation de l'invention, le canal communication vocale est établi dans le réseau de communication en voix sur IP. Selon un mode de réalisation de l'invention, la donnée de contrôle est transmise entre les deux utilisateurs par un réseau distinct du réseau ayant transmis les données d'initialisation. Selon un mode de réalisation de l'invention, le procédé comprend des étapes exécutées par chacun des terminaux des deux utilisateurs et 25 consistant à : calculer la donnée d'initialisation calculée localement à l'aide d'une fonction cryptographique commune appliquée à la donnée secrète privée, transmettre à l'autre terminal sous forme numérique, la donnée d'initialisation calculée localement, 30 élaborer une donnée secrète commune à partir de la donnée secrète privée et de la donnée d'initialisation reçue, et déterminer à partir de la donnée secrète commune, une clé de chiffrement à utiliser pour chiffrer les communications entre les deux utilisateurs. Selon un mode de réalisation de l'invention, la fonction 35 cryptographique est une fonction qui associe à un nombre a le nombre g puissance a modulo N, g et N étant des nombres entiers connus des terminaux. Selon un mode de réalisation de l'invention, la donnée secrète privée d'au moins un des terminaux est générée aléatoirement. Selon un mode de réalisation de l'invention, la donnée de contrôle est obtenue en appliquant à la donnée secrète commune une fonction de contrôle commune aux terminaux. Selon un mode de réalisation de l'invention, la donnée de contrôle est obtenue en appliquant une fonction de contrôle telle qu'une modification d'un bit d'une donnée d'entrée de la fonction entraîne une modification de la donnée de contrôle. Selon un mode de réalisation de l'invention, la donnée de contrôle est obtenue en appliquant une fonction de contrôle commune aux terminaux, à la donnée d'initialisation calculée localement et à la donnée d'initialisation reçue de l'autre terminal. Selon un mode de réalisation de l'invention, la fonction de contrôle applique une fonction OU exclusif entre la donnée d'initialisation calculée localement et la donnée d'initialisation reçue. Selon un mode de réalisation de l'invention, la fonction de contrôle applique au résultat de la fonction OU exclusif appliquée à la donnée d'initialisation calculée localement et à la donnée d'initialisation reçue, un calcul de condensé ou un calcul de reste d'une division entière, pour limiter la taille de la donnée de contrôle à un certain nombre de chiffres. Selon un mode de réalisation de l'invention, les communications numériques sont établies dans le réseau de communication conformément au protocole IP. Selon un mode de réalisation de l'invention, le procédé comprend des étapes au cours desquelles : un terminal de communication d'un troisième utilisateur détermine une clé locale de chiffrement commune avec l'un des deux terminaux ci-après appelé terminal référent , à partir d'une donnée secrète et d'une donnée d'initialisation reçue sous forme numérique du terminal référent, par l'intermédiaire du réseau de communication, le troisième terminal et le terminal référent exécutent entre eux la phase de sécurisation, et ù le terminal référent transmet au troisième terminal la clé de chiffrement déterminée par les deux terminaux, sous une forme chiffrée en utilisant la clé locale de chiffrement commune déterminée par le troisième terminal et le terminal référent. L'invention concerne également un programme d'ordinateur destiné à être exécuté par un terminal relié à au moins un autre terminal par au moins une liaison numérique d'un réseau de communication, conçu pour mettre en oeuvre le procédé défini précédemment, pour sécuriser la génération d'une clé de chiffrement commune au terminal et à l'autre terminal. L'invention concerne également un terminal pour générer de manière sécurisée une clé de chiffrement commune avec au moins un autre terminal de communication, le terminal étant relié à l'autre terminal par au moins une liaison numérique d'un réseau de communication, le terminal comprenant des moyens pour déterminer une clé de chiffrement commune à partir d'une donnée secrète privée et d'une donnée d'initialisation reçue sous forme numérique de l'autre terminal par l'intermédiaire du réseau de communication. Selon l'invention, le terminal comprend : des moyens pour déterminer une donnée de contrôle à partir d'une donnée d'initialisation calculée localement et/ou de la donnée d'initialisation reçue, des moyens pour afficher la donnée de contrôle, et des moyens de validation pour permettre à un utilisateur du terminal de valider la clé de chiffrement commune lorsqu'il existe une correspondance entre la donnée de contrôle affichée par le terminal et une donnée de contrôle reçue d'un utilisateur de l'autre terminal par l'intermédiaire d'un canal de communication analogique, la clé de chiffrement commune n'étant utilisable par le terminal qu'à la suite d'une activation des moyens de validation par l'utilisateur. Selon un mode de réalisation de l'invention, le terminal comprend des moyens pour établir le canal de communication entre les deux utilisateurs, sous forme vocale. Selon un mode de réalisation de l'invention, le canal communication vocale est établi dans le réseau de communication en voix sur IP. Selon un mode de réalisation de l'invention, le terminal comprend des moyens pour : calculer la donnée d'initialisation calculée localement à l'aide d'une fonction cryptographique commune avec l'autre terminal, appliquée à la donnée secrète privée, transmettre à l'autre terminal sous forme numérique, la donnée d'initialisation calculée localement, élaborer une donnée secrète commune à partir de la donnée secrète privée et de la donnée d'initialisation reçue, et déterminer à partir de la donnée secrète commune, une clé de chiffrement à utiliser pour chiffrer les communications entre les utilisateurs des deux terminaux. Selon un mode de réalisation de l'invention, la fonction cryptographique est une fonction qui associe à un nombre a le nombre g puissance a modulo N, g et N étant des nombres entiers connus des terminaux. Selon un mode de réalisation de l'invention, le terminal comprend des moyens pour générer aléatoirement la donnée secrète privée. Selon un mode de réalisation de l'invention, le terminal comprend des moyens pour exécuter une fonction de contrôle commune avec l'autre terminal, et fournissant la donnée de contrôle à partir de la donnée secrète commune. Selon un mode de réalisation de l'invention, le terminal comprend des moyens pour exécuter une fonction de contrôle commune avec l'autre terminal et fournissant la donnée de contrôle, la fonction de contrôle étant telle qu'une modification d'un bit d'une donnée d'entrée de la fonction entraîne une modification de la donnée de contrôle. Selon un mode de réalisation de l'invention, la fonction de contrôle est appliquée à la donnée d'initialisation calculée localement et à la donnée d'initialisation reçue de l'autre terminal. Selon un mode de réalisation de l'invention, la fonction de contrôle applique une fonction OU exclusif entre la donnée d'initialisation calculée localement et la donnée d'initialisation reçue. Selon un mode de réalisation de l'invention, la fonction de contrôle applique au résultat de la fonction OU exclusif appliquée à la donnée d'initialisation calculée localement et à la donnée d'initialisation reçue, un calcul de condensé ou un calcul de reste d'une division entière, pour limiter la taille de la donnée de contrôle à un certain nombre de chiffres. Selon un mode de réalisation de l'invention, le terminal comprend des moyens pour transmettre à un second autre terminal la clé de chiffrement commune sous une forme chiffrée, et des moyens de chiffrement de la clé de chiffrement commune, utilisant une clé locale de chiffrement commune au terminal et au second autre terminal. Selon un mode de réalisation de l'invention, le terminal comprend des moyens pour élaborer la clé locale de chiffrement commune au terminal et au second autre terminal, à partir d'une donnée secrète privée et d'une donnée d'initialisation reçue du second autre terminal, et des moyens pour permettre à l'utilisateur de valider la clé locale de chiffrement. Selon un mode de réalisation de l'invention, le terminal comprend des moyens pour recevoir d'un autre terminal une clé générale de chiffrement, sous une forme chiffrée, et des moyens pour déchiffrer la clé générale de chiffrement en utilisant la clé de chiffrement commune au terminal et à l'autre terminal. Ces objets, caractéristiques et avantages ainsi que d'autres de la présente invention seront exposés plus en détail dans la description suivante d'un mode de réalisation de l'invention, faite à titre non limitatif en relation avec les figures jointes illustrant le fonctionnement de l'invention dans un mode particulier de réalisation, et dans lesquelles : la figure 1 représente schématiquement différentes étapes d'un 25 procédé de sécurisation selon l'invention, la figure 2 représente schématiquement l'application du procédé selon l'invention à trois utilisateurs. Sur la figure 1, un premier utilisateur A disposant d'un terminal de communication PA et un second utilisateur B disposant d'un terminal de 30 communication PB souhaitent établir entre eux une communication sécurisée. Chacun des terminaux PA, PB comprend des moyens pour établir des communications au moins numériques et vocales avec l'autre terminal par l'intermédiaire d'au moins un réseau de communication Net. Pour les communications vocales, les terminaux comprennent chacun un 35 microphone et des écouteurs ou des haut-parleurs. Les communications numériques peuvent être établies conformément au protocole IP (Internet Protocol). Les communications vocales peuvent être établies conformément au protocole voix sur IP dans le réseau de communication, ou par l'intermédiaire d'un autre réseau de communication comme par exemple un réseau téléphonique terrestre ou mobile. Pour sécuriser les communications entre les deux terminaux, le terminal PA du premier utilisateur A génère une donnée aléatoire a à l'aide d'une fonction de génération de données aléatoires Rnd, et calcule à l'aide d'une fonction cryptographique Algl une donnée d'initialisation Ga qu'il envoie dans un message d'initialisation numérique au terminal PB du second utilisateur B via le réseau de communication Net. De son côté, le terminal PB génère une donnée aléatoire b à l'aide d'une fonction de génération de données aléatoires Rnd, et calcule à l'aide d'une fonction cryptographique identique à la fonction Alg1 utilisée par le poste de travail PA, une donnée d'initialisation Gb qu'il envoie dans un message d'initialisation numérique au terminal PA via le réseau de communication Net. Le terminal PA du premier utilisateur A reçoit par le réseau de communication Net un message d'initialisation comprenant une donnée d'initialisation Gb' qui est en principe la donnée d'initialisation Gb envoyée par le terminal PB. Toutefois, on ne sait pas si le message d'initialisation a été modifié lors de la communication. On ne sait donc pas si la donnée d'initialisation Gb' ainsi reçue par le terminal PA est identique à la donnée d'initialisation Gb qui a été envoyée par le terminal PB. Symétriquement, le terminal PB reçoit par le réseau de communication Net un message d'initialisation qui contient en principe la donnée d'initialisation Ga envoyée par le terminal PA. Toutefois, on ne sait pas si le message d'initialisation a été modifié lors de la communication. On ne sait donc pas si la donnée d'initialisation Ga' ainsi reçue par leterminal PB est identique à celle Ga qui a été envoyée par le terminal PA. Par ailleurs, le terminal PA calcule, à l'aide d'une fonction cryptographique Alg2 appliquée à la donnée aléatoire a et à la donnée Gb' qu'il a reçue via le réseau de communication Net, une donnée secrète Gab' qu'il utilisera pour déterminer une clé de chiffrement permettant de chiffrer les communications à destination du terminal PB. Symétriquement, le terminal PB calcule une donnée secrète Gba' à l'aide d'une fonction cryptographique identique à la fonction Alg2, appliquée à la donnée aléatoire b et à la donnée d'initialisation Ga' qu'il a reçue via le réseau de communication Net. La donnée secrète Gba' sera ensuite utilisée par le terminal PB pour déterminer une clé de chiffrement permettant de chiffrer les communications à destination du terminal PA. Selon l'invention, le terminal PA calcule une donnée de contrôle Ca à l'aide d'une fonction de contrôle FC, appliquée à la donnée d'initialisation Ga qu'il a envoyée au second terminal PB, et à la donnée d'initialisation Gb' qu'il a reçue via le réseau de communication Net. Le terminal PA affiche ensuite la donnée de contrôle Ca ainsi obtenue. Symétriquement, le terminal PB calcule une donnée de contrôle Cb à l'aide de la même fonction de contrôle FC que celle utilisée par le terminal PA, appliquée à la donnée d'initialisation Gb qu'il a envoyée au terminal PA, et à la donnée d'initialisation Ga' qu'il a reçue via le réseau de communication Net. Le terminal PB affiche ensuite la donnée de contrôle Cb ainsi obtenue. Il suffit alors que l'un deux utilisateurs, par exemple A, utilise un canal de communication vocal CV pour transmettre oralement au second utilisateur B la donnée de contrôle Ca affichée par son terminal PA, dans un message vocal de contrôle du type : La donnée de contrôle qui s'affiche sur mon écran est la suivante ... . Au reçu du message de contrôle transmis par le canal vocal CV, le second utilisateur B peut vérifier si la donnée de contrôle Ca qui lui a été ainsi transmise vocalement est identique à la donnée de contrôle Cb qui s'affiche sur son terminal PB. Si celle-ci est différente, cela signifie que la communication est vraisemblablement écoutée par une attaque Man-in-the-middle . Par contre, si les données de contrôle Ca, Cb sont identiques, cela signifie que les données d'initialisation reçues Ga', Gb' sont très probablement identiques aux données d'initialisation Ga, Gb transmises par le réseau Net. Les terminaux PA, PB comprennent une commande de validation permettant aux utilisateurs A, B de valider la donnée secrète commune Gab qui est alors très probablement égale à Gab' ou Gba' lorsque, d'après les messages de contrôle échangés vocalement par les deux utilisateurs A, B, les données de contrôle Ca, Cb affichées par les terminaux PA, PB sont identiques. Lorsque la donnée Gab est validée par les deux utilisateurs, la clé de chiffrement obtenue à partir de la donnée Gab est considérée comme sûre et peut être utilisée en toute sécurité par les terminaux A, B, par exemple pour chiffrer une communication numérique et/ou vocale entre les utilisateurs A, B. La sécurité est accrue lorsque la fonction de contrôle FC utilisée pour calculer les données de contrôle Ca, Cb est telle qu'une modification d'un bit de l'un ou de l'autre des données d'initialisation Ga, Gb modifie la valeur de la donnée de contrôle Ca, Cb. Dans un mode particulier de réalisation de l'invention, la donnée de contrôle Ca, Cb est un nombre à quelques chiffres (par exemple 6 ou plus si une sécurité supplémentaire est requise). La fonction de contrôle FC permettant d'obtenir les nombres Ca, Cb enchaîne les deux étapes suivantes. La première étape consiste à appliquer un opérateur Ou exclusif (XOR) bit à bit entre la donnée d'initialisation Ga, Gb générée par chaque terminal PA, PB et la donnée d'initialisation Gb', Ga' reçue du terminal de l'autre utilisateur. On rappelle que le résultat de l'opérateur XOR appliqué à deux bits est 0 si les deux bits sont égaux, et 1 dans le cas contraire. Dans une seconde étape, on calcule le reste modulo un million (pour 6 chiffres décimaux) du résultat de cette première étape. Plus généralement, la valeur du modulo est choisie égale à 10 puissance n, n étant le nombre de chiffres décimaux requis pour la donnée de contrôle. Ce mode particulier de calcul de la donnée de contrôle Ca, Cb assure une quasi équiprobabilité de toutes les suites de 6 chiffres décimaux (ou plus généralement de n chiffres décimaux). Il y a alors une chance sur un million que les données de contrôle Ca, Cb soient égales lorsque les données d'initialisation calculées et reçues sont différentes. Bien entendu, d'autres fonctions de calcul de la donnée de contrôle Ca, Cb peuvent être utilisées, sans sortir du cadre de la présente invention. La sécurité est accrue lorsque la fonction de calcul de la donnée de contrôle Ca, Cb est telle qu'une modification d'un bit de l'une ou de l'autre des données d'initialisation modifie la valeur de la donnée de contrôle. On notera que dans le mode particulier de réalisation ici présenté, la détermination de la donnée de contrôle Ca, Cb ne met en oeuvre que des informations ayant déjà transité par le réseau. La connaissance de cette donnée par un attaquant ne fournit à celui-ci aucune information supplémentaire par rapport aux informations auxquelles il accède déjà par l'écoute du réseau. La mise en oeuvre de ce protocole n'introduit donc aucune faiblesse par rapport au protocole de Diffie Hellman et à ses dérivés. Ce ne serait pas le cas si la donnée de contrôle était calculée à partir de tout ou partie de la donnée commune Gab servant à déterminer les clés de chiffrement. En effet, dans cette dernière hypothèse, une information sur la donnée de contrôle pourrait introduire une faiblesse dans le chiffrement. L'invention ainsi décrite peut être généralisée à un nombre quelconque d'utilisateurs désirant se mettre ensemble en communication, ci-après appelée conférence . Sur la figure 2, les deux premiers utilisateurs en communication A, B mettent en oeuvre le protocole décrit précédemment pour déterminer une donnée secrète commune Gab qui servira à déterminer une clé de chiffrement. La clé de chiffrement ainsi obtenue sera alors la clé générale de chiffrement utilisée par tous les participants à la conférence. Chaque nouvel arrivant C a un interlocuteur de référence A parmi les utilisateurs déjà arrivés A, B (donc connaissant la clé générale de chiffrement déterminée sur la base de la donnée secrète Gab). Le protocole décrit précédemment est alors mis en oeuvre entre le nouvel arrivant C et son interlocuteur de référence A, en vue de générer une donnée secrète Gac servant à déterminer une clé de chiffrement locale. Ainsi, les terminaux PA et PC génèrent des données aléatoires a et c, calculent en appliquant la même fonction cryptographique Alg1 une donnée d'initialisation Ga, Gc qu'ils s'échangent par l'intermédiaire du réseau Net. Les terminaux PA et PC calculent ensuite une donnée de contrôle Ca, Cc en appliquant une fonction de contrôle à la donnée d'initialisation générée Ga, Gc et à la donnée d'initialisation reçue Gc', Ga', et affichent les données de contrôle calculées. L'un et/ou l'autre des utilisateurs A et C transmet ensuite vocalement par un canal CV la valeur de la donnée de contrôle Ca, Cc affichée sur son terminal dans un message de contrôle, pour vérifier si les données de contrôle affichées par les deux terminaux PA, PC sont identiques. Si les données de contrôle Ca, Cc sont identiques, les terminaux PA, PC calculent une donnée secrète commune Gac', Gca' et les utilisateurs A et C valident la donnée secrète commune Gac (= Gac' = Gca') à l'aide d'une commande de validation offerte par les terminaux PA, PC. A la suite de la validation de la donnée Gac, les terminaux PA, PC déterminent à partir de la donnée Gac qui a ainsi été sécurisée, une clé de chiffrement appelée clé locale . La clé locale est ensuite utilisée par le terminal PA de l'interlocuteur de référence A pour chiffrer la clé générale de chiffrement ou la donnée secrète Gab à l'aide d'une fonction de chiffrement Alg3, et pour l'envoyer de façon sécurisée au terminal PC du nouvel utilisateur C. Etant le seul avec le terminal PA à connaître la clé locale de chiffrement, le terminal PC peut ainsi déchiffrer la clé générale de chiffrement ou la donnée secrète Gab en utilisant une fonction de déchiffrement Alg3' correspondant à la fonction de chiffrement Alg3. Si le terminal PC a déchiffré la donnée secrète Gab, il dispose la clé générale de chiffrement et peut donc participer à la conférence. Il apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de diverses variantes de réalisation et d'applications. En particulier, il n'est pas nécessaire que chacun des deux utilisateurs transmette vocalement la donnée de contrôle affichée par son terminal. En effet, il suffit pour s'assurer que la communication ne fait pas l'objet d'une attaque de type Man-in-the-middle qu'un seul des deux utilisateurs lise la donnée de contrôle affichée sur son terminal et que l'autre utilisateur vérifie que la donnée de contrôle reçue vocalement corresponde à celle qui est affichée sur son terminal. D'autres fonctions que la fonction OU exclusif combinée à une fonction modulo peuvent être utilisées pour déterminer la donnée de contrôle. On peut par exemple appliquer une fonction de hachage telle que MD5 ou SHA1, à l'une ou l'autre des données d'initialisation reçues ou élaborées localement, ou à la donnée secrète commune, ou encore au résultat de la fonction OU exclusif appliqué aux données d'initialisation reçues et élaborées localement. Il n'est pas non plus nécessaire que les données de contrôle affichées par les deux terminaux soient identiques. Il importe simplement que les utilisateurs puissent vérifier l'existence d'une correspondance entre la donnée de contrôle affichée et la donnée de contrôle reçue de l'autre utilisateur. L'invention n'est pas limitée à une transmission vocale de la donnée de contrôle mais s'étend à toute transmission de cette donnée effectuée sous une autre forme qu'une forme numérique. On peut en effet envisager que l'écran de chacun des terminaux soit filmé par une caméra numérique, les images captées par la caméra étant transmises au terminal de l'autre utilisateur pour y être affichées. De cette manière, chacun des utilisateurs peut vérifier sur l'écran de son terminal, l'identité entre les données de contrôle affichées par les deux terminaux. Pour pouvoir accéder à la communication entre les deux utilisateurs, l'attaquant devra modifier à la volée les images transmises par au moins l'un des deux terminaux. La transmission des données de contrôle peut être effectuée par le même réseau (par exemple en voix sur IP) ou par un autre réseau que celui utilisé pour transmettre les données d'initialisation. Ainsi, les données de contrôle peuvent être transmises par un réseau téléphonique terrestre ou mobile. Aussi, l'expression canal de communication analogique employée dans la description qui précède et dans les revendications annexées désigne tout moyen de communication recevant en entrée des données sous une forme d'origine analogique (son, vidéo ou autre) et restituant en sortie les données transmises sous leur forme d'origine, les données étant transmises dans un format quelconque, analogique ou numérique, par un ou plusieurs réseaux de communication. L'invention ne s'applique pas nécessairement à des protocoles de sécurisation faisant intervenir une donnée aléatoire qui est générée lors de l'établissement de la communication. Elle s'applique plus généralement à tout protocole de sécurisation utilisant une clé secrète commune qui est élaborée au moment de l'établissement de la communication entre les deux utilisateurs. Revendications 1. Procédé pour générer d'une manière sécurisée une clé de chiffrement commune à au moins deux utilisateurs (A, B) chacun équipés d'au moins un terminal de communication (PA, PB), les terminaux étant reliés entre eux par au moins un réseau de communication (Net) pour communiquer entre eux numériquement, le procédé comprenant des étapes au cours desquelles un terminal de chacun des utilisateurs détermine une clé de chiffrement commune (Gab) à partir d'une donnée secrète privée (a, b) et d'une donnée d'initialisation (Gb', Ga') reçue sous forme numérique de l'autre terminal par l'intermédiaire du réseau de communication, caractérisé en ce qu'il comporte une phase de sécurisation comprenant : des étapes exécutées par chacun des terminaux (PA, PB) et consistant à déterminer une donnée de contrôle (Ca, Cb) à partir d'une donnée d'initialisation calculée localement (Ga, Gb) et/ou de la donnée d'initialisation reçue (Gb', Ga'), et à afficher la donnée de contrôle, et des étapes de transmission par au moins l'un des utilisateurs (A, B) à l'autre utilisateur de la donnée de contrôle affichée par son terminal, par l'intermédiaire d'un canal de communication analogique (CV), et de vérification par l'autre utilisateur qu'il existe une correspondance entre la donnée de contrôle affichée sur son terminal et la donnée de contrôle reçue de l'autre utilisateur par l'autre canal de communication. 2. Procédé selon la revendication 1, dans lequel la donnée de contrôle (Ca, Cb) est transmise par un canal de communication vocale (CV) 25 entre les deux utilisateurs (A, B). 3. Procédé selon la revendication 2, dans lequel le canal communication vocale (CV) est établi dans le réseau de communication (Net) en voix sur IP. 4. Procédé selon la revendication 1 ou 2, dans lequel la donnée de contrôle (Ca, Cb) est transmise entre les deux utilisateurs par un réseau distinct du réseau (Net) ayant transmis les données d'initialisation (Ga, Gb). 30 5. Procédé selon l'une des revendications 1 à 4, comprenant des étapes exécutées par chacun des terminaux (PA, PB) des deux utilisateurs (A, B) et consistant à : calculer la donnée d'initialisation calculée localement (Ga, Gb) à l'aide d'une fonction cryptographique commune (Alg1) appliquée à la donnée secrète privée (a, b), transmettre à l'autre terminal (PA, PB) sous forme numérique, la donnée d'initialisation calculée localement, élaborer une donnée secrète commune (Gab) à partir de la donnée secrète privée (a, b) et de la donnée d'initialisation reçue (Gb', Ga'), et déterminer à partir de la donnée secrète commune, une clé de chiffrement à utiliser pour chiffrer les communications entre les deux utilisateurs. 6. Procédé selon la revendication 5, dans lequel la fonction cryptographique (Alg1) est une fonction qui associe à un nombre a le nombre g puissance a modulo N, g et N étant des nombres entiers connus des terminaux. 7. Procédé selon l'une des revendications 1 à 6, dans lequel la 20 donnée secrète privée (a, b) d'au moins un des terminaux (PA, PB) est générée aléatoirement. 8. Procédé selon l'une des revendications 1 à 7, dans lequel la donnée de contrôle (Ca, Cb) est obtenue en appliquant à la donnée secrète 25 commune (Gab) une fonction de contrôle (FC) commune aux terminaux (PA, PB). 9. Procédé selon l'une des revendications 1 à 7, dans lequel la donnée de contrôle (Ca, Cb) est obtenue en appliquant une fonction de 30 contrôle (FC) telle qu'une modification d'un bit d'une donnée d'entrée de la fonction entraîne une modification de la donnée de contrôle. 10. Procédé selon l'une des revendications 1 à 7, dans lequel la donnée de contrôle (Ca, Cb) est obtenue en appliquant une fonction de 35 contrôle (FC) commune aux terminaux, à la donnée d'initialisation calculéelocalement (Ga, Gb) et à la donnée d'initialisation (Ga', Gb') reçue de l'autre terminal. 11. Procédé selon la revendication 10, dans lequel la fonction de 5 contrôle (FC) applique une fonction OU exclusif entre la donnée d'initialisation calculée localement (Ga, Gb) et la donnée d'initialisation reçue (Ga', Gb'). 12. Procédé selon la revendication 11, dans lequel la fonction de 10 contrôle (FC) applique au résultat de la fonction OU exclusif appliquée à la donnée d'initialisation calculée localement (Ga, Gb) et à la donnée d'initialisation reçue (Ga', Gb'), un calcul de condensé ou un calcul de reste d'une division entière, pour limiter la taille de la donnée de contrôle (Ca, Cb) à un certain nombre de chiffres. 15 13. Procédé selon l'une des revendications 1 à 12, dans lequel les communications numériques sont établies dans le réseau de communication (Net) conformément au protocole IP. 20 14. Procédé selon l'une des revendications 1 à 13, comprenant des étapes au cours desquelles : û un terminal de communication (PC) d'un troisième utilisateur (C) détermine une clé locale de chiffrement commune (Gac) avec l'un des deux terminaux (PA, PB) ci-après appelé terminal référent (PA), à 25 partir d'une donnée secrète (c) et d'une donnée d'initialisation (Ga') reçue sous forme numérique du terminal référent, par l'intermédiaire du réseau de communication (Net), le troisième terminal (PC) et le terminal référent (PA) exécutent entre eux la phase de sécurisation, et 30 le terminal référent transmet au troisième terminal la clé de chiffrement (Gab) déterminée par les deux terminaux (PA, PB), sous une forme chiffrée en utilisant la clé locale de chiffrement commune (Gac) déterminée par le troisième terminal et le terminal référent. 15. Programme d'ordinateur destiné à être exécuté par un terminal (PA, PB) relié à au moins un autre terminal (PB, PA) par au moins une liaison numérique d'un réseau de communication (Net), caractérisé en ce qu'il est conçu pour mettre en oeuvre le procédé 5 selon l'une des revendications 1 à 14 pour sécuriser la génération d'une clé de chiffrement commune au terminal (PA) et à l'autre terminal (PB). 16. Terminal (PA) pour générer de manière sécurisée une clé de chiffrement commune avec au moins un autre terminal de communication l0 (PB), le terminal étant relié à l'autre terminal par au moins une liaison numérique d'un réseau de communication (Net), le terminal comprenant des moyens pour déterminer une clé de chiffrement commune (Gab) à partir d'une donnée secrète privée (a) et d'une donnée d'initialisation (Gb') reçue sous forme numérique de l'autre terminal par l'intermédiaire du réseau de 15 communication, caractérisé en ce que le terminal (PA) comprend : des moyens pour déterminer une donnée de contrôle (Ca) à partir d'une donnée d'initialisation calculée localement (Ga) et/ou de la donnée d'initialisation reçue (Gb'), 20 des moyens pour afficher la donnée de contrôle, et des moyens de validation pour permettre à un utilisateur (A) du terminal de valider la clé de chiffrement commune (Gab) lorsqu'il existe une correspondance entre la donnée de contrôle affichée par le terminal et une donnée de contrôle (Cb) reçue d'un utilisateur (B) de l'autre terminal 25 (PB) par l'intermédiaire d'un canal de communication analogique (CV), la clé de chiffrement commune n'étant utilisable par le terminal qu'à la suite d'une activation des moyens de validation par l'utilisateur. 17. Terminal selon la revendication 16, comprenant des moyens pour 30 établir le canal de communication (CV) entre les deux utilisateurs (A, B), sous forme vocale. 18. Terminal selon la revendication 17, dans lequel le canal communication vocale (CV) est établi dans le réseau de communication 35 (Net) en voix sur IP. 19. Terminal selon l'une des revendications 16 à 18, comprenant des moyens pour : calculer la donnée d'initialisation calculée localement (Ga) à l'aide d'une fonction cryptographique (Alg 1) commune avec l'autre terminal (PB), appliquée à la donnée secrète privée (a), transmettre à l'autre terminal (PB) sous forme numérique, la donnée d'initialisation calculée localement, élaborer une donnée secrète commune (Gab) à partir de la donnée secrète privée et de la donnée d'initialisation reçue (Gb'), et déterminer à partir de la donnée secrète commune, une clé de chiffrement à utiliser pour chiffrer les communications entre les utilisateurs (A, B) des deux terminaux (PA, PB). 20. Terminal selon la revendication 19, dans lequel la fonction cryptographique (Alg 1) est une fonction qui associe à un nombre a le nombre g puissance a modulo N, g et N étant des nombres entiers connus des terminaux. 21. Terminal selon l'une des revendications 16 à 20, comprenant des 20 moyens pour générer aléatoirement la donnée secrète privée (a). 22. Terminal selon l'une des revendications 16 à 21, comprenant des moyens pour exécuter une fonction de contrôle (FC) commune avec l'autre terminal (PB), et fournissant la donnée de contrôle (Ca) à partir de la 25 donnée secrète commune (Gab). 23. Terminal selon l'une des revendications 16 à 21, comprenant des moyens pour exécuter une fonction de contrôle (FC) commune avec l'autre terminal (PB) et fournissant la donnée de contrôle (Ca), la fonction de 30 contrôle étant telle qu'une modification d'un bit d'une donnée d'entrée de la fonction entraîne une modification de la donnée de contrôle. 24. Terminal la revendication 23, dans lequel la fonction de contrôle (FC) est appliquée à la donnée d'initialisation calculée localement (Ga) et à 35 la donnée d'initialisation (Gb') reçue de l'autre terminal (PB). 25. Terminal selon la revendication 24, dans lequel la fonction de contrôle (FC) applique une fonction OU exclusif entre la donnée d'initialisation calculée localement (Ga) et la donnée d'initialisation reçue (Gb'). 26. Terminal selon la revendication 25, dans lequel la fonction de contrôle (FC) applique au résultat de la fonction OU exclusif appliquée à la donnée d'initialisation calculée localement (Ga) et à la donnée d'initialisation reçue (Gb'), un calcul de condensé ou un calcul de reste d'une division entière, pour limiter la taille de la donnée de contrôle (Ca) à un certain nombre de chiffres. 27. Terminal selon l'une des revendications 16 à 26, dans lequel les communications numériques sont établies dans le réseau de communication 15 (Net) conformément au protocole IP. 28. Terminal selon l'une des revendications 16 à 27, comprenant des moyens pour transmettre à un second autre terminal (PC) la clé de chiffrement commune (Gab) sous une forme chiffrée, et des moyens de 20 chiffrement (Alg3) de la clé de chiffrement commune, utilisant une clé locale de chiffrement (Gac) commune au terminal (PA) et au second autre terminal (PC). 29. Terminal selon la revendication 28, comprenant des moyens pour 25 élaborer la clé locale de chiffrement (Gac) commune au terminal (PA) et au second autre terminal (PC), à partir d'une donnée secrète privée (a) et d'une donnée d'initialisation (Gc') reçue du second autre terminal (PC), et des moyens de validation pour permettre à l'utilisateur (A) du terminal (PA) de valider la clé locale de chiffrement. 30 30. Terminal selon l'une des revendications 16 à 29, comprenant des moyens pour recevoir d'un autre terminal (PA) une clé générale de chiffrement (Gab), sous une forme chiffrée, et des moyens pour déchiffrer (Alg3') la clé générale de chiffrement en utilisant la clé de chiffrement 35 (Gac) commune au terminal (PC) et à l'autre terminal (PA).