Académique Documents
Professionnel Documents
Culture Documents
Bamako(U.S.T.T.B)
MEMOIRE
Pour obtenir le diplôple de Mastère de la Faculté des Sciences et Techniques de
Bamako(F.S.T)
Spécialité : Réseau Mobile et Web
TITRE
Jury
2 Le protocole Signal 31
2.1 Principe et Fonctionnement . . . . . . . . . . . . . . . . . . . 31
2
2.2.4 Réception d’un message . . . . . . . . . . . . . . . . 40
4 Conclusion et Perspectives. 55
4.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5 Annexe 61
3
Remerciement
particulier remercier :
— Dr Abdourhamane Idrissa mon directeur de mémoire, pour son aide
4
Contexte
Messenger, Viber, WhatsApp, Imo, Signal, Telegram, Pidgin, etc.) qui vont
avec, la messagerie instantanée est devenue un vecteur essentiel pour la com-
cure). Les deux (2) derniers offrent le chiffrement de bout en bout. Et plus,
Ils fournissent d’autres propriétés cryptographiques comme l’authentification,
5
Introduction
leur facilité d’utilisation. Malgré cette popularité, les éditeurs des logiciels de
messagerie instantanée font face à un gros problème. Il s’agit de la protection
avec eux.
D’autant plus qu’en 2013 à la surprise générale, Edward Snowden ancien
utilisateurs se souciant de leur vie privée ont tourné leur regard vers les
solutions intégrant les protocoles de « chiffrement de bout en bout ».
6
en mesure d’accéder aux clés cryptographiques pour décrypter la conversa-
tion. Les systèmes de chiffrement de bout en bout sont conçus pour résister
à toute tentative de surveillance ou de falsification des communications, car
et faibles. Ensuite dans la deuxième partie sera exposée une étude détaillée
du protocole Signal en montrant ces forces et faiblesses. Suivra la troisième
partie où sera établie une comparaison entre les deux protocoles. Et dans la
dernière partie nous donnerons une conclusion et des perspectives de cette
étude.
Dans ce document, nous allons utiliser Alice, Bob et Eve comme nos pro-
7
Chapitre 1
[2]. L’idée de base de ce protocole est de partie d’une conversation face à face
entre deux personnes Alice et Bob dans une pièce privée. Dans ce cas :
— Alice peut être sur que personne d’autre n’entend ce qu’elle dira à Bob ;
— Alice peut être sur aussi que leur conversation n’a pas été enregistrée ;
— Par conséquent, Alice est libre de communiquer avec Bob sans se soucier
font pas face à face mais sur internet en utilisant de la messagerie instantanée
par exemple. OTR a été développé pour donner le même niveau de confiden-
8
sécurité en assurant les propriétés cryptographiques suivantes :
participé à la conversation) ;
— La « Confidentialité parfaite » : si vous perdez le contrôle de vos
Alice et Bob seront utilisés comme nos deux protagonistes dans une conver-
Bob. Si Bob est toutefois près et capable de faire une conversation OTR alors
met juste à Alice d’indiquer à Bob qu’elle est prête à utiliser OTR. Apres cette
9
étape suivra la phase d’échange des clés d’authentification.Pour cet échange
des clés le protocole SIGMA [9] sera utilisé. Le protocole SIGMA (SIGn-
and-Mac) permet d’établir un secret parfait via un échange Diffie-Hellman
long terme. Alice et Bob font un échange de clé Diffie-Hellman non authenti-
fié [3] pour définir un canal sécurisé ensuite ils s’authentifient à l’intérieur de
ce canal. Cet échange des clés d’authentification sera détaillé ci-dessous dans
la section 1.3 de ce document (Les Différentes versions du protocole). Dès la
clés MAC des deux parties. AES(standard de chiffrement avancé) est utilisé
pour chiffrer les échanges et le MAC( code d’authentification de message) est
a reconnu avoir reçu, remplace keyA par cette clé et laisse keyidA être son
numéro de série ;
Etape 2 : Si la clé ci-dessus est la clé la plus récente d’Alice, elle génère une
10
Etape 3 : choisit la plus récente des clés de cryptage DH de Bob qu’elle a
reçu de lui, remplace keyB par cette clé et laisse keyidB être son numéro de
série ;
mk ;
Etape 5 : récupe la liste oldmackeys des anciennes clés MAC utilisées dans
les messages précédants et qui ne seront pas utilisées dans les messages fu-
ture ;
Etape 6 : choisit une valeur du compteur ctr, de tel sorte que le triplé
(keyA , keyB , ctr) ne soit jamais le même pour deux message qu’Alice envoie
à Bob ;
Etape 7 : calcule T A = (keyidA , keyidB , nex−dh, ctr, AES−CT Rek,ctr (msg));
ek et une clé MAC de réception mk (celles-ci seront les mêmes que les clés
générées par Alice ci-dessus) ;
Apres l’échange de données, l’un des deux interlocuteurs peuvent mettre fin
à la conversation en envoyant un message de requête de fin de conversation
11
Figure 1.1 – principe de fonctionnement simplifier d’OTR
Comme tout protocole, des failles ont été révélées dans le fonctionnement
corrigées dans les versions suivantes. L’une des caractéristiques le plus im-
portant et qui n’existait pas dans les systèmes antérieurs à OTR est la «
confidentialité parfaite ».
12
1.3.2 la confidentialité parfaite
Pour assurer cela, au lieu d’utiliser des clés de cryptage à long durée de
vie, Alice et Bob utilise des clés de chiffrement et de déchiffrement à courte
durée de vie générées au besoin et rejetées après utilisation. Ces clés ont aussi
la propriété qu’Il est impossible de les reprendre (c’est-à-dire de le retrouver)
à partir d’une clé à long terme. Une fois que Alice et Bob se débarrassent
d’une clé de courte durée de vie, même si un attaquant détient une grande
dentialité parfaite ».
Pour assurer cette confidentialité, le protocole Diffie-Hellman est utilisé. Diffie-
les deux parties commencent par choisir des paramètres publics à savoir un
nombre premier p et un générateur g d’un sous-groupe ZP∗ de grand nombre
public. Alice peut alors calculer le secret partagé S = (g XB )XA . Bob peut cal-
culer le même secret S 0 = (g XB )XA . Maintenant ce secret partagé est utilisé
pour créer la clé de cryptage de courte durée. Cependant, il est présumé qu’il
est intraitable (impossible dans un temps raisonnable) pour Eve de calculer
13
1.3.3 Signature numérique
à clé publique. Il n’est pas nécessaire pour chaque couple des parties commu-
nicantes à maintenir un secret partagé à long terme. Plutôt, chaque partie
doit disposer d’une seule clé publique connue par tout le monde et utilisé
pour vérifier leurs signatures. C’est la différence entre un système à clés asy-
c’est à dire que Alice doit avoir une clé différente pour chaque personne, pour
tous les n. Donc toutes les n parties ont n clés soit n2 , d’où une complexité
O(n2 ). Par contre, pour un système à clés publiques il suffit que Alice ait une
seule clé pour toutes les n parties d’où le O(n). Pour cette raison, n parties
ont seulement besoin de O(n) au lieu de O(n2 ) de clé, et les clés publiques
ne doivent pas être gardées secrètes. Les crypto-systèmes RSA [6] et DSS [7]
ter les anciens messages de la façon dont la compromission des clés de chif-
frement peut les affecter, il est acceptable de garder la même clé de signature
pendant une longue période. Malgré cela les signatures numériques présentent
un grand défaut dans le contexte OTR car les signatures numériques peuvent
être vérifiées par quiconque connaissant la clé publique et peuvent être uti-
lisées pour prouver à un tiers que Alice est l’auteur d’un message sans son
14
message qu’elle a signé.
prouver qu’un message provient d’Alice. Les seules données à signer sont
g xA , et g yB , utilisées dans le protocole d’échange de clé Diffie-Hellman. De
cette manière tout le monde, y compris Bob et Eve, peuvent être sûre qu’Alice
était vraiment celle qui a choisi la valeur de XA qui a produit g xA , mais c’est
tout ce qu’ils savent. C’est le secret établi entre Alice et Bob dans le protocole
Diffie-Hellman qui sera utilisé pour prouver à Bob que le message provient
bien d’Alice. Pour permettre cela une fonction MAC (Message Authentication
Code) sera utilisée.
Un MAC est une fonction de hachage à sens unique paramétrée avec une
clé sécrète K. Seul celui qui possède la clé K peut calculer et donc vérifier
une empreinte :
(tous les possesseurs de K peuvent vérifier que M n’a pas été modifié puis-
qu’il correspond à l’empreinte r) mais aussi l’authentification de la source de
données : sous réserve qu’Alice et Bob soient les seuls à partager la clé K, dans
ce cas ils sont les seuls à pouvoir générer l’empreinte HK (M ). Le concept est
15
est que ce bloc authentificateur ne se base plus uniquement sur le message,
mais également sur une clé secrète. Tout comme les fonctions de hachage,
les MAC n’ont pas besoin d’être réversibles. En effet, le récepteur exécutera
pas la confidentialité.
La malléabilité
prouver qu’Alice a envoyé un message donné, mais qu’il soit très évident que
n’importe qui aurait pu modifier ou même l’envoyer. Pour ce faire, un schéma
chiffrement malléable est le chiffrement par flot à base l’opération XOR (le
exclusif est utilisé pour supprimer le flux de clés et révéler le texte clair. Ce
chiffrement est malléable, car une modification de tout bit du texte chiffré
16
Par conséquent, un message chiffré avec un chiffrement par flot ne prouve pas
frer les messages. Pour cela OTR utilise le protocole d’échange de clé Diffi-
Hellman.
Etape 1 : Alice et Bob se mettent d’accord sur le choix d’un très grand
nombre premier P d’un entier g tel que 1 < g < P − 1 cette phase n’est pas
secret.
Etape 2 Alice et Bob choisissent respectivement x1 et y1 comme leur clé
privée.
Etape 3 : Alice et Bob calculent respectivement A = g x1 (modP ) et B =
g y1 (modP ).
Etape 4 : Alice envoie à Bob g x1 ; Bob peut calculer S11 = (g x1 )y1 Bob envoie
Etape 5.2 : Bob envoie à Alice g y2 , E(M2 , k21 ) ; Alice utilise la nouvelle
17
valeur de g y2 pour calculer S22 = (g x2 )y2 et choisit une nouvelle valeur x3 .
Etape 5.3 : Alice envoie à Bob g x3 , E(M3 , k22 ) ; Bob utilise la nouvelle va-
leur de g x3 pour calculer S32 = (g x3 )y2 et choisit une nouvelle valeur y3
Où les Kij = H(g xi yj ), sont le résultat d’une fonction de hachage H sur 128
bit tel qu’un SHA-1 tronquée. E(M, K) désigne la fonction de chiffrement
18
Les clés jetables
clés après chaque échange de message. C’est-à-dire qu’Alice doit jeter la clé
g xn−1 des qu’elle reçoit un message de Bob utilisant la clé g xn . Du fait que les
la clé g xn−1 . Alice doit alors garder en mémoire la clé g xn−1 jusqu’à ce qu’elle
reçoit le message de Bob utilisant la clé g xn . En supposant que tous les mes-
messages à Bob dans l’ordre sans recevoir une réponse avec les clés g xn . . .,
g xm , elle aura besoin de garder cette séquence intégrale des clés (g xn−1 , . . .,
g xm ) jusqu’à ce qu’elle reçoit un message de Bob. Car Alice ne peut pas être
sûr de quelle sous-clé le prochain message de Bob sera chiffré. Cela montre
reçoit une réponse de Bob. De cette manière Alice à juste besoins de garder
en mémoire ses deux propres clés. A la réception de la réponse qui utilise
la clé g xn , Alice oublie la clé g xn−1 et génère la nouvelle clé g xn+1 qui sera
annoncé dans le nouveau message qu’elle enverrait à Bob. Si Bob ne répond
pas pendent une longue période, Alice sera capable de décrypter un grand
nombre de ses anciens message. Ceci laisse aussi une grande fenêtre de vul-
19
les anciennes clés après l’écoulement d’un temps « très long » lorsqu’il sera
hautement improbable que des messages de Bob utilisant les anciennes clés
soient toujours en transit.
Code) pour authentifier chaque message. Pour générer un MAC une fonc-
tion de hachage à sens unique sera appliquée à la clé de déchiffrement. Ceci
assurera à ce que toute personne capable de lire un message est capable aussi
de le modifier et mettre à jour le MAC. Par exemple, même si l’attaquant
message était d’Alice ou de Bob et que ce n’est pas elle qui l’a composé.
La clé de cryptage est elle-même le résultat d’un hachage du secret par-
d’Alice et Bob. Si Bob connait la clé publique d’Alice il peut être sûr que g x1
provient réellement d’Alice et que par conséquent le secret g x1 y1 n’est connu
que de lui et Alice. Bob peut maintenant traiter les messages authentifiés par
la clé H(g x1 y1 ) provenant d’Alice. Noter qu’il s’agit d’une approche hybride
numérique est utilisée seulement lors de l’échange initial des clés(DH). Après
cet échange, tout nouvel échange de clé utilisera les MAC. C’est-à-dire, un
20
message du protocole ressemble à :
g xi+1 , E(Mr , kij ), M AC(g xi+1 , E(Mr , kij ), H(kij )). Notez que les clés ki+1,j
ne peuvent pas être utilisées pour chiffrer et authentifier ce message, car le
[8]. Cette attaque a été trouvée au niveau de l’échange des clés initiales du
protocole Diffie-Hellman utilisé dans OTR. Elle permet à un adversaire Eve
d’interférer dans l’échange des clés initiales de tel sorte que Alice et Bob at-
teignent toujours la même clé à la fin du Protocole, mais Alice croit qu’elle
parle à Bob alors que Bob Croit qu’il parle à Eve. Pour cela Eve exécute
l’attaque de « l’homme du milieu » (en anglais Man-in-the-Middle Attack )
21
en commençant simultanément une conversation avec Alice et Bob. Les mes-
sages d’Alice à Bob sont remplacés par des messages identiques signés par
Eve, alors que ceux de Bob à Alice portent leurs signatures originales. Les
A → E : g X , SignsA (g X ), vA
E → B : g X , SignsE (g X ), vE
B → E : g Y , SignsB (g Y ), vB
E → A : g Y , SignsB (g Y ), vB
Après ces échanges Alice reçoit g Y signé par Bob donc elle est sûre qu’elle
parle à Bob alors que Bob reçoit g X signé par Eve et pense qu’il parle à Eve
or en réalité, il parle à Alice. Après cette attaque démontrée et la proposition
cole exactement comme recommandé dans [8], cependant, OTR a adopté une
variante qui masque également les clés publiques des participants à des ad-
22
fonctionne toujours en établissant d’abord un échange DH sur un canal non
le secret partagé, donc assez court pour être vulnérable à l’attaque par force
brute. En conséquence, un engagement initial (un nombre aléatoire) est uti-
lisé pour assurer qu’aucune partie ne puisse baser son choix de g x sur la
valeur g y de l’autre partie. Les premières étapes de l’AKE dans [2] sont :
Alice :
Bob
2. Envonie g y à Alice
Alice :
1. Calcule s = (g Y )X
2. Envoie r à Bob
Bob :
1. Déchiffre g X en utilisant r
3. Calcule s = (g X )Y
23
ensuite utilisées pour chiffrer et vérifier l’intégrité de l’information échangée
Alice :
Bob :
Alice :
24
2. Utilise b3 pour décrypter AESb3 (XB ), et obtenir
aussi échangé des identifiants de clés. Alice connaît aussi la clé public de Bob
vB , et est convaincu que Bob connaît la clé privée correspondante sB . Bob
a une assurance similaire à propos d’Alice. De plus, toutes ces valeurs ont
été chiffrées, donc elles sont dissimulées des adversaires passifs. Ils peuvent
Bien que l’AKE dans OTR soit assez bon en théorie, il souffre encore d’un
inconvénient pratique. Dans tous les processus mentionnés jusqu’ici, on sup-
pose qu’Alice et Bob connaissent les clés publiques l’un de l’autre avant le
commencement de l’AKE. S’ils ne le font pas, alors Eve peut prétendre être
Bob et utiliser sa propre paire de clés pour la signature, et Alice n’aura pas
une façon de repérer cette tromperie. Cela crée des attaques MITM parti-
alors elle peut apprendre le contenu de chaque message chiffré envoyé entre
Alice et Bob. En fait, il existe un plugin pour Jabber Serveurs pour lancer au-
25
1.3.6 Le Protocole des Millionnaires Socialistes (SMP)
la richesse, c’est l’information détenue par les deux parties qui est comparée.
Comme ci-dessus, toutes les exponentiations se font modulo un nombre pre-
de (x == y). Pour OTR, les secrets contiennent des informations sur les
clés publiques d’authentification à long terme des deux parties, ainsi que des
les mêmes entités qui ont établi ce secret pour commencer. En supposant
qu’Alice commence l’échange :
Alice :
Bob :
26
6. Envoie à Alice g2b , g3b , Pb et Qb
Alice :
5. Envoie Bob Pa , Qa et Ra
Bob :
4. Envoie Alice Rb
Alice :
Si tout est fait correctement, alors Ra b doit avoir la même valeur que
(Pa ÷ Pb ) × (g2a3 b3 )(x−y) , ce qui signifie que le test à la fin du protocole ne
révélée. Apres l’échange des clés d’authentification, nous allons décrire dans
ce qui suit comment la version 2 d’OTR assure l’échange de données entre
27
1. Choisit la plus récente de ses propres clés de cryptage DH que Bob
2. Si la clé ci-dessus est la clé la plus récente d’Alice, elle génère une
nouvelle clé DH (next-dh), pour obtenir le numéro de série keyidA+1 .
d’envoi, mk.
5. Collecte toutes les anciennes clés MAC qui ont été utilisées dans les
messages précédents, mais ne seront plus utilisées (car leurs clés DH
associées ne sont plus les plus récentes) dans une liste, oldmackeys.
6. Choisit une valeur du compteur, ctr, de sorte que le triple (keyA , keyB , ctr)
n’est jamais identique pour deux messages données entre Alice et Bob.
Bob :
ek et la clé MAC de réception, mk. (Ceux-ci seront les mêmes que les
clés que Alice a généré, ci-dessus.)
28
2. Utilise mk pour vérifier M ACmk (TA ).
client connecté plusieurs fois. Dans cette situation, les clients OTR peuvent
essayer d’établir une session OTR indéfiniment s’il y a des messages d’entre-
lacement de chacune des sessions [10]. Cette version introduit aussi la mise en
place pendant l’AKE d’une clé symétrique supplémentaire pour chiffrer une
tionnement) ; Il est open source et son code source est disponible sur Git Hub
[20] ; Il est en plus un protocole multiplateformes, il existe des plugins pour
presque toutes les plateformes (Windows, Linux, Mac OS). Et aussi multi
langages, des librairies sont développées dans plusieurs langages de program-
mations (java, java Script, C, Python, Object Ocaml, Perl etc..). Ce qui lui
29
donne une large fenêtre d’utilisation dans le développement d’application
pour PC.
Il assure aussi l’authentification bout en bout sans un serveur intermédiaire
ner les conversations privées avec OTR. Off-the-record ne dispose pas des
bibliothèques pour le développement d’application mobile non plus.
30
Chapitre 2
Le protocole Signal
31
classiques. IM est caractérisée par la livraison des messages en temps réel à
condition que les deux parties soient en ligne au même moment. Cependant,
contrairement aux courriers électroniques qui utilisent souvent des protocoles
serveur via TLS, toutefois les solutions comme Off-the Record Messaging(OTR)
[section 2 de ce document] assurent l’intégrité et la confidentialité de bout
une communication asynchrone, où une partie peut être hors ligne durant
un certain temps pendant une conversation. Dans ce contexte, les solutions
existantes, telles que OTR, ne sont applicables que de manière limitée. Par
contre le protocole Signal est une bonne option dans ce contexte.
manière préemptive 100 clés (un nombre fixe dans [12]) appelés « près-clés »
puis les envoie au serveur TS. Apres cela, si un client (c’est-à-dire un utili-
32
sateur à travers son application) souhaite envoyer un message sécurisé à un
du destinateur ;
— Etape 2 : il génère sa propre moitié de clé d’échange de message ;
puis déchiffrer le message chiffré pour avoir le message clair. Avec cette tech-
nique d’échange des clés initiales, qui sera détaillée ci-dessous, les deux parties
client n’accepterait jamais deux fois une même près-clé, le protocole Signal
est en mesure de fournir une « confidentialité parfaite » même pour une
33
— Un protocole d’échange de clé à un tour (One-Round Key Exchange
signalisation » kmac;T S;A et kenc;T S;A . Dans cette étape, le client indique
également s’il souhaite communiquer seulement via un canal de message
34
push ou s’il accepte également des messages courts.
Etape 6 : Pa fournit ses 100 prés-clés et une clé de dernier recours klr à
TS. Les prés-clés ne sont pas transmises individuellement, mais dans
une structure JSON. La clé de dernier recours klr (qui sera définie
ultérieurement) est transmise de la même manière et identifiée par le
keyID 0xFFFFFF.
Etape 7 : Le serveur accepte si le message est bien formé et l’authentifi-
tion ou des informations depuis des serveurs gérés par des développeurs
vers des applications ciblant le système d’ exploitation Google Android
développeurs).
Etape 9 : Pa reçoit son regIDAgcm ;
plus de pré-clés disponibles pour Pa , c’est la clé de « dernier recours » klr qui
sera utilisée comme prés-clé. Cependant, cette dernière ne sera pas effacée
35
du serveur. La Figure 2.1 montre ces différentes étapes pour l’enregistrement
Dans le but d’établir une clé publique entre deux parties, le protocole
tierce sur Android, que l’autre partie peut ensuite analyser à l’aide de la
36
même application sur son appareil mobile. Signal compare ensuite l’empreinte
digitale qu’il vient de recevoir à l’empreinte digitale du parti qu’il a reçue dans
le cadre d’une conversation.
clé racine et génère une clé de chaînage à partir de laquelle les clés de
37
. À partir de cette valeur, la première clé racine est dérivée via la fonction
de dérivation de clé HKDF.
Après calcul du secret partagé par Pa , un nouveau secret kshared est dérivé
. De kshared et rkBA , Une nouvelle clé racine rkAB et une clé de chaînage ckAB
sont dérivées à nouveau via HKDF. La clé de chaînage ckAB est finalement
utilisée pour dériver (à nouveau via HKDF) les clés de cryptage et de calcul
de MAC (KEnc ; KM AC ) pour chiffrer et protéger l’intégrité des premiers
messages.
Cryptage authentifié
sont utilisés. Les deux sont initialement réglés à 0. ctr est incrémenté avec
chaque message envoyé par une partie, tandis que le pctr est réglé sur la
valeur ctr portée dans le message auquel une partie répond. Le message de
l’étape 3 (de la figure 2.2) est envoyé à TS. Renvoi du message à GCM. Sur
38
avec la clé de signalisation de Pb (kenc;T S;B ), en utilisant AES-CBC avec le
est que les serveurs GCM de Google ne pourront voir que le destinataire mais
pas l’expéditeur du message. Ce processus est détaillé à la Figure 2.2
39
2.2.4 Réception d’un message
correcte, déchiffre csignal avec sa clé privée à longue durée de vie et la clé pri-
vée unique qui correspond à sa prés-clé d’identifiant IDz , il calcule secint et
sa première clé racine rkBA . Désormais, tous les calculs sont identiques à ceux
effectués par l’expéditeur, jusqu’à ce que les clés de message (kE nc; kM AC )
40
nouveau kshared comme sortie d’une opération DH qui prend la dernière clé
. Puis Pb met à jour la clé racine et dérive une nouvelle clé de chaînage en
initialisant HKDF avec le nouveau kshared et rkAB .
MAC est dérivée. Le message est protégé par ces clés et ensuite envoyé avec
g Xb,0 au correspondant Pa .
gnal
Dans cette section nous donnerons une description détaillée des approches
(Public Key Cryptography Standards). L’intégrité des messages est basée sur
les fonctions HMAC-SHA256 [15], [16].
41
2.3.1 Le protocole d’échange de clé One-Round Key Establish-
ment(ORKE)
B veulent établir un secret partagé entre eux. La partie B génère une paire
de clé à longue durée de vie (b, g b ) et plusieurs paires de clés DH (xb , g xb ).
Les parties publiques de ces paires de clés sont ensuite enregistrer sur le ser-
veur Signal. La partie A fait une requête au serveur Signal pour avoir les clés
les parties publiques de ses paires de clé à B. chaque partie peut mainte-
nant dériver un secret intermédiaire en utilisant 3 opérations DH sur les 4
42
2.3.2 Fonction de dérivation des clés
Une fonction de dérivation de clé est une fonction qui prend en rentrée 4
paramètres :
aléatoires ne sont pas utilisées comme fonction de dérivation des clés. Une
des raisons est que pour les fonctions pseudo-aléatoires, les clés sécrètes ont
une taille bien déterminée. Par exemple pour HMAC-SHA256 il faut une
clé de 512 bits. Cette restriction n’est pas une propriété souhaitable dans
une fonction de dérivation de clé. Car souvent la clé matérielle peut être
un résultat d’un échange de clé Diffie-Hellman. Dans Signal, la fonction de
dérivation de clé utilisée est HKDF qui est basée sur HMAC. Krawczyk [17]
a montré que sous des hypothèses raisonnables que HKDF est une fonction
43
2.3.3 L’algorithme à Double Ratchet :
Dans Signal c’est le protocole d’accord de clé X3DH [22] qui est utilisé
pour mettre en place la clé secrète partagée. Ensuite, les parties dérivent de
plus récentes.
Les parties ajoutent leurs clés publiques Diffie-Hellman dans l’en-tête
des messages qu’elles envoient. Les résultats des calculs Diffie-Hellman sont
utilisés comme entrée dans la fonction de dérivation des clés, de telle sorte que
les clés ultérieures ne peuvent pas être calculées à partir des clés antérieures.
Ces propriétés offrent une certaine protection aux messages chiffrés en cas de
compromission des clés d’une partie. Le terme chaine KDF est un concept
de base dans l’algorithme Double Ratchet. Il est utilisé quand une partie de
la sortie KDF est utilisée comme clé de sortie et une autre est utilisée pour
remplacer la clé KDF, qui peut ensuite être utilisée comme entrée dans KDF.
Un aperçu plus clair est donné dans la Figure L’algorithme Double Ratchet
est composé de deux ratchets (qui peut se lire ici comme engrenage) à savoir
trois chaînes : une chaîne racine, une chaîne émettrice et une chaîne réceptrice
(la chaîne d’envoi d’Alice correspond à la chaîne réceptrice de Bob, et vice
versa). Pendant qu’Alice et Bob échangent des messages, ils échangent aussi
de nouvelles clés publiques Diffie-Hellman, et les secrets de sortie de Diffie-
44
Hellman deviennent les entrées de la chaîne racine. Les clés de sortie de la
chaîne racine deviennent de nouvelles clés KDF pour les chaînes émettrices
et réceptrices. C’est ce qu’on appelle le ratchet Diffie-Hellman. Les chaînes
C’est ce qu’on appelle le ratchet à clé symétrique. Dans ce qui suit nous
présenterons en détaille les deux ratchets
2.4
La clé de message est utilisée pour chiffrer les messages envoyés ou reçus.
Les clés de message sont des clés de sortie des chaînes KDF. Les clés KDF
45
pour ces chaînes seront appelées clés de chaîne. Les entrées KDF pour les
clés KDF même si la clé courante est connue. L’objectif de ces chaines KDF
est d’assurer que chaque message soit chiffré avec une clé unique qui peut
chaîne est simplement une étape le ratchet à clé symétrique. Ci-dessous une
illustration de ce principe à travers la Figure 2.5.
46
Le ratchet Diffie-Hellman
messages. Pour éviter cela, le Double Ratchet combine le ratchet à clé symé-
trique avec un ratchet DH qui met à jour les clés de chaîne en fonction des
sorties Diffie-Hellman. Pour cela, chaque partie génère une paire de clés DH
(une clé publique Diffie-Hellman et une clé privée) qui devient leur paire de
clés du ratchet actuelle. La clé publique de l’expéditeur est mise dans l’en-
tête de son message. Lorsqu’une nouvelle clé publique du ratchet est reçue
publique d’Alice. Alice effectue donc un calcul DH entre sa clé privée de son
ratchet et la clé publique du ratchet de Bob. Le scénario est représenté par
la Figure 2.6
47
La clé publique d’Alice est annoncée à Bob par le premier message d’Alice.
étape du ratchet DH, Bob génère une nouvelle paire de clé qui remplacera
son ancienne paire de clé, puis calcule une nouvelle sortie DH et envoie à
Alice sa nouvelle clé publique. Alice à son tour exécute une étape du ratchet
DH et ainsi de suite comme le montre la Figure 2.7.
48
Combinaison du ratchet à clé symetrique et Diffie-Hellman
dire les constantes de la figure 2.5) pour obtenir des clés de chaine d’envoie
et de réception. La clé chaine d’envoi d’Alice corresponde à la clé chaine de
réception de Bob.
C’est cette combinaison du ratchet DH avec le ratchet à clé symétrique qu’on
définit par Double Ratchet. Des qu’Alice reçoit une nouvelle clé publique de
Bob, elle exécute une étape du ratchet DH pour dériver la clé de chaine
émettrice ou sur la clé de chaine réceptrice. Avec cette approche Alice peut
envoyer à Bob plusieurs messages avec sa paire de clé (publique et privée).
Par contre chaque message à une seule et unique clé de message et chaque clé
de message est utilisée au plus pour chiffrer ou déchiffrer un seul message. La
trouver son code source à l’adresse suivant [19]. Par rapport à off-the-record
protocole, le protocole Signal permet de faire des communications synchrones
échanges se font désormais par internet, à travers des serveurs Open Whis-
per Systems et de Google ; et non à travers le réseau GSM de l’opérateur
49
Figure 2.8 – dérivation clé chaine d’envoi et de réception
de téléphone. Donc cela démunie les violations de la vie privée par analyse
des métadonnées. L’une des forces de ce protocole est qu’il est multiplate-
forme (Android, iOS) et il existe des librairies dans plusieurs langage de
50
2.5 Les points faibles du protocole Signal
nées sur ces serveurs. Sans oublier qu’aucune communication n’est possible
avec Signal sans passer par ces serveurs. Donc une dépendance totale des
51
Figure 2.9 – diagramme simplifié de l’algorithme à Double Ratchet
52
Chapitre 3
relayer les messages. Cela fait d’OTR un protocole purement synchrone, par
contre son descendent Signal fonctionne en mode asynchrone (et synchrone).
D’autre part, le protocole OTR n’est toujours pas adapter pour les commu-
nications sur mobile contrairement à signal. On trouver l’usage du protocole
Signal dans les environnements mobiles comme PC par contre OTR n’est
disponible que pour les environnements PC. Dans tous les environnements,
53
OTR. La raison est que le protocole Signal utilise des primitifs cryptogra-
phiques utilisant des courbe elliptique or OTR utilise ceux utilisant des corps
fini de nombre premier. Le tableau 1 donne un aperçu comparatif des deux
protocoles.
Off-the-record
Signal
Messasing
Synchrone,
Mode de Fonctionnement Synchrone
Asynchrone
Méthode d’échange
SIGMA ORKE
de clé secrète
Signal,
WahtsApp,
Utilisation dans Pidgin, Gaim, Facebook,
(mode Incognito)
54
Chapitre 4
Conclusion et Perspectives.
4.1 Conclusion
mais Signal garantie aussi le mode asynchrone. Côte performance, d’une part
la transformation du triple ratchet d’OTR en Double Ratchet dans Signal
rend Signal moins gourmand en calcule qu’OTR dans les différentes phases
d’authentification. Et d’autre part le protocole Signal utilise des nouvelles
Une conséquence est que le protocole Signal permet d’avoir des temps d’exé-
cution plus intéressants qu’OTR, un usage rependu dans des applications
55
mobiles. Cependant l’utilisation des anciennes primitives cryptographiques
par OTR n’est pas tout de même un obstacle au niveau de la sécurité. Mal-
gré ces caractéristiques attrayantes de Signal certain expert de la sécurité ne
l’accorde pas toute leur estime. La raison est l’utilisation d’un tiers par le
protocole à savoir les serveurs d’Open Whisper Systems et ceux de Google.
Google qui est connu pour être l’un des partenaires de grandes Agences de
renseignement [24]. Sur ce point le protocole OTR garde un avantage par
rapport à Signal car avec son mode de fonctionnement synchrone, les deux
interlocuteurs doivent être en ligne au même moment pour commencer une
conversation privée (sans l’aide d’un serveur tiers). Nos recherches nous ont
montré que le protocole Signal est de nos jours beaucoup plus utiliser que
4.2 Perspectives
56
elliptique et de comparer les performances avec le protocole Signal. Etant
donné que les deux protocoles sont Open Source, il aurait été intéressant
dans cet étude de faire une audite des codes sources des deux protocoles.
57
Bibliographie
de messages PGP.
[6] Rivest, R. L., Shamir, A., & Adleman, L. (1978). A method for obtaining
58
October 2001,
[8] Di Raimondo, M., Gennaro, R., & Krawczyk, H. (2005, November). Secure
[12] Frosch, T., Mainka, C., Bader, C., Bergsma, F., Schwenk, J., & Holz,
[15] Krawczyk, H., Canetti, R., & Bellare, M. (1997). HMAC : Keyed-
hashing for message authenticationKrawczyk, H., Canetti, R., & Bellare,
[16] Eastlake 3rd, D., & Hansen, T. (2006). US secure hash algorithms (SHA
and HMAC-SHA) (No. RFC 4634).
59
[17] Krawczyk, H. (2010, August). Cryptographic Extraction and Key Deri-
[18] Diffie, W., & Hellman, M. (1976). New directions in cryptography. IEEE
transactions on Information Theory, 22(6), 644-654.
2017
tobre 2017
[23] Arnt, S., Bernard, N., Foukrach, D., Ghammam, L., Eddine, A. J.,
Samoyeau, V., & Tran, C. (2014). Semaine d’Etude Maths-Entreprises
2017
60
Chapitre 5
Annexe
Diffie-Hellman
ment Alice et Bob peuvent se mettre d’accord sur un secret K (qu’ils peuvent
utiliser comme clé pour chiffrer la conversation suivante) sans qu’une troi-
Etape 2 :
Alice calcule seule K = B a modp.
61
Pretty Good Privacy(PGP)
symétrique et asymétrique.
Chiffrement
62
— Conférence vidéo et audio sécurisée, messages image et son
publique du protocole ;
c) Offrir la possibilité de protéger les identités des interlocuteurs du protocole
fonction de leurs clés publiques. X3DH est conçu pour les conversations asyn-
chrones où un utilisateur ("Bob") est hors ligne mais a publié des informa-
tions sur un serveur. Un autre utilisateur ("Alice") veut utiliser cette infor-
mation pour envoyer des données chiffrées à Bob, et aussi établir une clé
secrète partagée pour des futures communications. Qui se résume en trois
phases :
1. Bob publie sa clé d’identité et ses pré-clés sur un serveur.
63
2. Alice récupère une "près-clés" du serveur et l’utilise pour envoyer un mes-
— K : la clé secrète complétée avec des zéros pour qu’elle atteigne la taille
de bloc de la fonction h
— m : le message à authentifier,
— "||" désigne une concaténation et ⊕ un « ou » exclusif,
— ipad et opad, chacune de la taille d’un bloc, sont définies par : ipad =
0x363636...3636 et opad = 0x5c5c5c...5c5c. Donc, si la taille de bloc de
64