UNIVERSITÉ DE SHERBROOKE
Faculté de génie
Département de génie électrique et génie informatique
Rapport d’APP
Techniques avancées de cryptographie
GEI-760
Présenté à
Frédéric Mailhot
Présenté par
Bureau-Viens, Thomas - burt0701
Gi ard, Félix – gi 1201
Sherbrooke - 12 février 2025
Contents
1. Choix de la technique d’encryptage retenue............................................................. 1
1.1. Présentation brève des techniques ou combinaison de techniques possibles ..... 1
1.1.1. Bloc vs Flux .............................................................................................. 1
1.1.2. Modes d’opérations .................................................................................. 1
1.1.3. Encryption authentifié .............................................................................. 2
1.1.4. Échanges de clés ..................................................................................... 3
1.2. Présentation et justification de la technique choisie .......................................... 3
1.2.1. Méthode de chi rement traditionnelle ....................................................... 3
1.2.2. Méthode de chi rement résistant aux attaques quantiques ........................ 4
1.3. Évaluation du niveau de sécurité ...................................................................... 5
1.3.1. Méthodes de factorisation (chi rement traditionnel)................................... 5
1.3.2. Menaces futures ...................................................................................... 5
1.4. Évaluation de la performance........................................................................... 5
1.4.1. Système de chi rement complet ............................................................... 5
1.4.2. Impact des méthodes de calcul rapide ...................................................... 6
2. Choix de la méthode de résumé (digest) retenue ...................................................... 6
2.1. Présentation et explication brève des choix possibles ........................................ 6
2.2. Présentation et justification de la technique choisie .......................................... 6
2.3. Évaluation du niveau de sécurité ...................................................................... 7
2.4. Évaluation de la performance........................................................................... 7
3. Choix de la méthode d’authentification retenue ....................................................... 7
3.1. Présentation et explication brève des choix possibles ........................................ 7
3.2. Présentation et justification de la technique choisie .......................................... 8
3.3. Évaluation du niveau de sécurité ...................................................................... 8
3.4. Évaluation de la performance........................................................................... 8
i
1. Choix de la technique d’encryptage retenue
1.1. Présentation brève des techniques ou combinaison de
techniques possibles
1.1.1. Bloc vs Flux
La première grande division des techniques d’encryptage se fait entre le chi rement par
bloc et le chi rement par flux.
Les techniques de chi rement par bloc encryptent les données à coup de bloc d’une
taille spécifiques (256bits, 512bits, etc.). Cela permet d’avoir un système robuste et
consistant en termes de sécurité. Le fait de process chaque bloc indépendamment ajoute
aussi du traitement supplémentaire. Quelques exemples d’algorithmes de chi rement par
bloc seraient AES (le standard pour le chi rement par bloc) ou encore 3DES
Les techniques de chi rement par flux encryptent les données comme un flux continu
de bits ou d’octets à la place de blocs de tailles fixes. Cela permet d’avoir un système très
e icace pour les usages utilisant des flux de données (“streaming” vidéo, audio, etc.) et qui
nécessitent moins de latence. Le chi rement par flux a cependant besoin d’une clé de la
même longueur que le message à transmettre, chose qui peut être complexe lors de
l’encryptions de gros fichiers. Quelques exemples d’algorithmes de chi rement par flux sont
ChaCha20 et RC4.
1.1.2. Modes d’opérations
Plusieurs modes d’opérations sont disponibles pour le chi rement par bloc. Ceux-ci
a ectent principalement la sécurité et la vitesse du chi rement.
Le mode “Electronic Codebook” (ECB) est le plus simple, le plus rapide mais aussi le
moins sécuritaire des modes d’opérations. Celui-ci consiste simplement à encrypter
indépendamment chaque bloc avec la même clé. Cela donne la possibilité de paralléliser le
chi rement de tous les blocs mais rends le système vulnérable aux “Replay Attacks” car on
peut facilement trouver des “patterns” entre les données encryptées et celles non-
encryptées.
Le mode “Cipher Block Chaining” (CBC) consiste à encrypter chaque bloc après avoir
fait un XOR entre les données que l’on veut encrypter et le bloc encrypté précédent. Utiliser
le bloc précédent permet d’ajouter de l’entropie au résultat du chi rement et donc de
1
protéger contre les “Replay Attacks”. Comme on doit utiliser le bloc précédent, on ne peut
pas paralléliser les opérations.
Le mode “Cipher Block Chaining with Initialization Vector” (CBC avec VI) est identique
au CBC régulier, mais ajoute un vecteur d’initialisation qui est XORed avec le premier bloc
de données pour assurer que même le premier bloc a une bonne entropie.
Le mode “Output Feedback” (OFB) utilise des “keystreams” pour le chi rement des
blocs. Ceux-ci sont générés en passant un vecteur d’initialisation dans l’algorithme de
chi rement entre chaque traitement de bloc. Le “keystream” utilisé est donc di érent pour
chaque bloc. On fait ensuite un XOR entre le bloc à chi rer et le “keystream” pour obtenir un
bloc chi ré. Ce mode d’opération est vulnérable aux “Replay Attacks” si le VI est réutilisé.
Le mode “Counter” (CTR) encrypte une valeur initiale additionnée à un compteur avant
de chi rer un bloc en faisant un XOR avec cette valeur encryptée. Ce mode d’opération est
rapide et parallélisable. Cependant, réutiliser la valeur initiale est fatal pour la sécurité des
messages.
Le mode “O set Codebook” (OCB) est un mode distinct qui o re aussi de
l’authentification en plus de la confidentialité des autres modes. Celui-ci utilise une valeur
aléatoire qui est encrypté avec une clé pour donner une valeur initiale d’o set. Cette valeur
est XORed avec la valeur en texte clair avant d’être encrypté. La valeur encryptée est ensuite
encore XORed avec la valeur d’o set. Ce mode d’opération est rapide, parallélisable et
permet une intégrité du message. Une réutilisation de valeur aléatoire avec la même clé peut
cependant être fatal pour la sécurité des messages.
1.1.3. Encryption authentifié
Tous les modes d’opérations précédents, excepté OCB, assurent la confidentialité des
messages mais pas l’intégrité ou encore l’authentification. On peut aussi utiliser des modes
d’encryptions authentifiés qui assurent l’intégrité des messages et que ces données
viennent d’une source fiable en plus d’assurer la même confidentialité que les options
précédentes.
La première approche pour l’usage d’encryption authentifiée (AE) est le “Encrypt-then-
MAC” (EtM). On encrypte d’abord le message. Ensuite on génère un “Message
Authentication Code” (MAC) du message chi ré. Finalement, on envoie le message encrypté
et le MAC. Cette approche est utilisée dans des protocoles comme TLS ou IPSec.
2
La seconde approche pour l’usage d’AE est le “Encrypt-and-MAC” (E&M). On encrypte le
message, on génère un MAC du message en clair et on envoie les deux. Cette approche ne
protège pas des attaques qui vont modifier le message pendant qu’il est encrypté.
La troisième approche pour AE est le “MAC-then-Encrypt” (MtE). On génère un MAC du
texte en clair, on encrypte le message et le MAC et on envoie le tout. Cette approche est
vulnérable aux “padding oracle attacks”.
1.1.4. Échanges de clés
Comme on veut chi rer le contenu en utilisant des clés, on doit choisir une méthode
d’échange de clés. Les 3 méthodes à notre disposition (dans le cadre du cours) sont RSA
(Rivest-Shamir-Adleman), DH (Di ie-Hellman) ou ECDH (Elliptic Curve Di ie-Hellman). Nos
critères de sélection sont que l’échange doit être rapide et sécuritaire.
RSA est un type d’encryption a clé asymétrique. Celui-ci est relativement lent (comparé
à DH et ECDH) et n’est pas principalement utilisé pour l’échange de clé. RSA est
principalement utilisé pour l’encryption et la signature de clés. RSA a besoin de grandes clés
pour assurer une sécurité des messages.
DH est conçu pour l’échange de clés. DH est plus rapide mais moins sécuritaire que RSA.
On a besoin d’avoir de très grands nombres premiers pour assurer la sécurité des messages.
ECDH est une version plus sécuritaire et plus rapide de DH. Celui-ci nécessite de plus
petites clés pour atteindre le même niveau de sécurité tout en étant plus rapide!
1.2. Présentation et justification de la technique choisie
1.2.1. Méthode de chi rement traditionnelle
On peut immédiatement éliminer les méthodes de chi rement par flux pour notre cas.
La taille requise des clés ne serait absolument pas pratique. Doubler la taille totale requise
en mémoire serait beaucoup trop pour la taille des fichiers utilisés. Un chi rement par bloc
est donc la meilleure solution.
Pour l’algorithme de chi rement, AES est le seul vrai choix possible. On doit donc choisir
un mode d’opération pour aller avec AES et qui sera le plus adapté à notre situation. Le choix
est principalement entre le mode OCB et le mode CTR. Les autres modes sont soit non
propices à un usage en streaming (ex: La perte d’un paquet cause la perte de tous les
3
paquets suivants), manquent de protection ou sont simplement des versions antérieures
sur lesquels CTR et OCB sont basées.
Le mode CTR est le plus adapté pour un streaming de données ayant un focus sur la
vitesse. Le mode CTR est extrêmement parallélisable dû à son design basé sur un compteur.
Son seul point faible est alors sa lacune en termes d’authentification. Celui-ci doit être
accompagné d’une façon externe pour assurer l’intégrité des messages. La meilleure
approche pour ajouter une authentification est EtM dans le cas présent car E&M est
vulnérable à une modification des données avant la décryption et MtE est vulnérable aux
“padding oracle attacks”.
Le mode OCB est aussi parallélisable, mais plus di icilement que CTR. Son principal
avantage est la présence d’une forme d’authentification natif au mode. On peut donc se
sauver l’ajout d’une source externe d’intégrité.
Le choix final est donc basé sur la vitesse. Si notre système est capable de chi rer assez
rapidement pour la bande passante requise (250MB/s) en utilisant un mode de chi rement
OCB, cela est le meilleur choix comme on n’a pas à ajouter une couche de plus pour assurer
l’intégrité des données. Dans le cas où le système en mode OCB n’est pas capable de fournir
une bande passante su isante, CTR est le bon choix comme il est possible d’accélérer
encore plus le chi rement en parallélisant de plus en plus de blocs (le plus de blocs traités
à la fois, le plus grande peut être la bande passante).
Pour ce qui est de l’échange de clé, on veut maximiser la vitesse et la sécurité de
l’échange. ECDH est le meilleur choix dans ces deux aspects.
En résumé, on a donc un échange de clé ECDH et une méthode de chi rement des
données AES-OCB si sa vitesse est su isante et une méthode AES-CTR avec une méthode
d’authentification EtM.
1.2.2. Méthode de chi rement résistant aux attaques quantiques
Les systèmes quantiques sont capables de résoudre facilement les problèmes
mathématiques sur lesquels beaucoup de modèles cryptographiques sont basés. Par
exemple, la factorisation de grands entiers utilisés par RSA ou le calcul de logarithmes
discrets utilisés par DH.
Pour que le système soit résistant aux attaques quantiques, on devrait utiliser une
structure Module-Lattice-based Key-Encapsulation Mechanism (ML-KEM). Cette structure
se base sur des problèmes comme le “ Shortest Vector Problem ” (SVP) qui sont considéré
di icile à résoudre même pour des ordinateurs quantiques.
4
1.3. Évaluation du niveau de sécurité
1.3.1. Méthodes de factorisation (chi rement traditionnel)
AES-256 est encore sûr contre des attaques quantiques avec l’algorithme de Grover.
Grover ferait passer la complexité de 2^256 à 2^128, ce qui est encore sécuritaire.
RSA et DH ne sont pas résistants aux attaques quantiques. Un hybride ECDH et ML-KEM
peut être utilisé. En cas d’attaques, la partie post-quantique fait la protection.
Le crible quadratique assez e icace avec une clé RSA d’au moins 2048 bits pour un bon
niveau de sécurité à court/moyen terme
1.3.2. Menaces futures
Un ordinateur quantique qui serait assez performant pourrait casser RSA et ECDH avec
l’algorithme de Shor.
Il faut commencer à préparer la transition vers la cryptographie post-quantique, d’où
l’utilisation d’un mécanisme hybride.
1.4. Évaluation de la performance
Il faut que le chi rement des films soit rapide pour pouvoir di user du contenu à 250
Mbps. Le temps du chi rement doit être inférieur au temps de transmission pour que celle-
ci soit fluide.
1.4.1. Système de chi rement complet
Le système de chi rement proposé utilise l’algorithme AES soit en mode OCB, qui
permet d’avoir à la fois de la confidentialité et l’authentification ou bien en mode CTR avec
l’approche EtM.
AES-OCB est performant et peut sécuriser les données sans nécessiter de faire des
étapes supplémentaires pour l’intégrité, mais au niveau de la parallélisation, c’est un peu
plus complexe. Pour ce qui est du mode CTR, il est extrêmement rapide et facile à
paralléliser, ce qui permettrais de maintenir la bande-passante de 250 Mbps sans trop de
problèmes. En ajoutant EtM, ça assure aussi l’intégrité des messages sans trop ralentir les
performances.
5
1.4.2. Impact des méthodes de calcul rapide
Au niveau des performances, la méthode de Montgomery améliore les performances du
système en réduisant le temps de calcul d’exponentiation modulaire en évitant les divisions
coûteuses. Ça permet de maintenir un débit élevé pour faire ce type de di usions.
Au niveau de la sécurité, le crible quadratique peut être utilisé pour factoriser les clés
RSA. Ce qui nous pousse à utiliser des clés su isamment longue (2048 bits), pour résister à
la factorisation.
En utilisant ces méthodes de calculs rapide et en se protégeant contre eux, on s’assure
d’avoir une meilleure fiabilité globale en ayant un système à la fois plus rapide et plus
résistant aux attaques.
2. Choix de la méthode de résumé (digest) retenue
2.1. Présentation et explication brève des choix possibles
Il y a plusieurs options de méthodes de résumés :
MD5 : Considéré obsolète pour la sécurité parce que des collisions ont été trouvées.
SHA-1 : Également considéré comme vulnérable car des collisions sont possible à créer
SHA-2 (SHA-256 ou SHA-512) : Considéré comme encore robuste.
SHA-3 : Algorithme di érent. Résistance accrue. Cet algorithme a été sélectionné par le
NIST
BLAKE3 : Algorithme très rapide, basé sur ses prédécesseurs. Il supporte le parallélisme.
Même s’il n’est pas encore o iciellement standardisé par le NIST, il est quand même
considéré comme sécuritaire.
2.2. Présentation et justification de la technique choisie
Dans les algorithmes qui sont encore considérés comme sécuritaires, nous avons le
SHA-2 et SHA-3 qui o rent un bon niveau de sécurité et qui sont massivement supportés. Si
nous souhaitons rester sur un standard qui est approuvé par le NIST, SHA-256 ou SHA-512
pourraient être des bonnes solutions. Cependant, pour gagner en performance avec un
algorithme considéré comme sécuritaire, mais n’ayant pas été o iciellement approuvé, le
BLAKE3 pourrait être une bonne solution.
6
2.3. Évaluation du niveau de sécurité
Contrairement aux algorithmes MD5 et SHA-1, SHA-2 ne présente aucune vulnérabilité
pratique connue. De son côté, SHA-3 est conçu pour résister aux nouvelles techniques
cryptanalytiques. Pour BLAKE3, aucun résultat d’attaque n’est connu jusqu’à maintenant.
2.4. Évaluation de la performance
Pour ce qui est de la performance, SHA-256 et SHA-512 o rent une assez bonne
performance avec support partiel pour de l’accélération matérielle sur certaines
plateformes. SHA-3, par-contre, peur être un peu plus lent au niveau logiciel, mais peut être
implémenté directement sur du matériel pour être beaucoup plus performant.
3. Choix de la méthode d’authentification retenue
3.1. Présentation et explication brève des choix possibles
Plusieurs possibilités sont disponibles pour l’authentification des utilisateurs.
La technique de l’authentification par mot de passe classique qui consiste à stocker un
dérivé du mot de passe sur le serveur et l’utiliser pour valider les tentatives de connexion des
utilisateurs. Cette méthode est cependant vulnérable si la base de données est
compromise.
L’authentification à divulgation nulle de connaissance, par exemple, avec l’algorithme de
Fiat-Shamir, Schnorr, etc, permet au client de prouver qu’il connait le secret sans jamais le
révélé. Avec cette méthode, le serveur n’a pas à stocké les mots de passes.
La méthode d’authentification par certificat permet au client de s’authentifier avec un
certificat. Le serveur peut valider que le certificat à bel et bien été émis par son autorité de
certification et authentifié les clients. Cette méthode o re une bonne sécurité, mais elle
peut être lourde à déployer et elle nécessite une infrastructure de gestion des certificats.
Finalement, les méthodes d’authentification sans mot de passe unique (ou
cryptographie à seuil) permettent de partager une clé ou un secret entre plusieurs
opérateurs de salle, par exemple, avec la méthode de Blakley. Ça permettrait de requérir que
plusieurs opérateurs s’identifient pour s’authentifier.
7
3.2. Présentation et justification de la technique choisie
La technique choisie serait une combinaison de l’authentification à divulgation nulle de
connaissance et de la cryptographie à seuil. La méthode de base utiliserait l’authentification
à divulgation nulle. Avec cette méthode, il y a aucune révélation du mot de passe qui se fait.
Le serveur ne détient seulement que la valeur de vérification qui lui permet de valider que
l’usager connait bel et bien le secret.
La solution supporterait également la cryptographie à seuil avec la méthode de Blakley.
Les salles qui le veulent pourrait utiliser cette méthode pour protéger l’accès en demandant
d’avoir les secrets de plusieurs opérateurs pour pouvoir accéder au secret. Le secret trouvé
serait ensuite utilisé avec la méthode d’authentification à divulgation nulle.
3.3. Évaluation du niveau de sécurité
Le protocole d’authentification à divulgation nulle de connaissance (ZKP) est
mathématiquement solide. Il est aussi résistant aux attaques par écoute, car l’observateur
ne peut pas reconstituer le secret avec les informations transmises.
Pour sa part, la cryptographie à seuil est un protocole fiable si le schéma est
correctement implémenté. Il protège contre la compromission d’un opérateur car pour
obtenir le secret, il faut plusieurs secrets partiels.
3.4. Évaluation de la performance
Le protocole ZKP est un peu plus lourd qu’une authentification par mot de passe, mais il
reste réalisable en quelque millisecondes sur les ordinateurs modernes. Pour la
cryptographie à seuil, le calcul des interpolations dépend du nombre d’opérateurs, mais il
reste réalisable sur des données de taille relativement faible, comme pour dans notre cas
d’implémentation.