1 juin 2017

Implémenter de la crypto dans les IoT ?

Comme un récent nouvel article nous le rappelle, il est nécessaire d’implémenter de la cryptographie dans les objets connectés. Cependant, le peu de ressources disponibles sur ces systèmes embarqués (peu de RAM, peu de puissance de calcul, etc.) peut rendre difficile l’implémentation des algorithmes classiques plus complexes issus et conçus pour le  monde de l’IoT. [cf : http://nvlpubs.nist.gov/nistpubs/ir/2017/NIST.IR.8114.pdf]

Ce document, présentant le projet de standardisation de la cryptographie légère, est une source intéressante pour trouver des solutions à ce cas précis.

La cryptographie légère a pour but de proposer des algorithmes cryptographiques pour des appareils ayant des ressources contraintes (systèmes embarqués, capteurs…).
L’objectif est de trouver un équilibre entre la sécurité, la performance et les ressources.

 

Fort de nombreuses prestations réalisées auprès de plusieurs de vos confrères,
SERMA Safety & Security vous accompagne dans la sécurisation de vos dispositifs connectés et vous guide dans le choix de l’implémentation de algorithmes de cryptographie
dans le monde de l’IoT en fonction de votre contexte.

Quatre différentes fonctions cryptographiques sont recherchées :

  • le chiffrement par bloc,
  • les fonctions de hachage,
  • la génération de MAC et
  • le chiffrement par flux.

A) Chiffrement par bloc

Le standard accepté par le NIST est l’AES et nécessite 3400 GE.

Le gain de performance réalisé par ces fonctions légères porte sur la réduction de la taille des blocs, de la taille de la clé, la réalisation de tours moins compliqués et des dérivations de clés plus faciles.

  1. DESL est un DES en mode léger qui optimise en utilisant 8 fois la même S-box à chaque tour. Il nécessite 1848 GE, son niveau de sécurité est inférieur à celui de DES qui n’est plus utilisé à cause de la possibilité de brute force de clés de 56 bits.
  2. PRESENT a une taille de blocs de 64 bits, une taille de clé de 80 ou 128 bits, tourne sur 31 tours et nécessite 1570 GE. Une attaque différentielle permet de calculer 26 des 31 tours. Il est nécessaire de changer régulièrement la clé de chiffrement.
  3. SIMON et SPECK sont développés par la NSA. Le premier est optimisé pour le hardware et le second pour le software. La taille des blocs varie entre 32 et 128 bits, les tours entre 22 et 34, la clé fait 128 bits. L’algorithme nécessite 958 GE pour des blocs de 64 bits et une clé de 128 bits. Une attaque permet de calculer 10 tours avec 2^29 plaintexts choisis.
  4. RC5 a une taille de clé entre 40 et 2040 bits, une taille de bloc de 32, 64 ou 128 bits et un nombre de tour entre 1 et 255. 12 tours de RC5 avec un bloc de 64 bits est considéré comme vulnérable à une attaque différentielle utilisant 244 textes clairs. 20 tours sont suggérés comme une protection suffisante mais nécessite plus de temps de calculs.
  5. TEA et XTEA ont 64 bits de taille de blocks et une clé de 128 bits. Pour des raisons de sécurité, 64 tours sont recommandés ce qui amène à 3500 GE, soit plus qu’AES 128.

B) Fonction de hachage

Les standards acceptés par le NIST sont les familles SHA2, SHA3, SHA-256 et nécessitent 10 000 GE.

Le gain de performance réalisé par ces fonctions légères porte sur la réduction des états internes, des tailles d’entrée ou de sortie.

  1. PHOTON peut produite une sortie de 80, 128, 160, 224 ou 256 bits. 1120 GE pour 128 bits et 64 bits de résistance de collision.
  2. Quark peut produire une sortie de 128, 160 ou 224 bits. 1379 GE pour 128 bits et 64 bits de résistance de collision.
  3. SPONGENT peut produite une sortie de 80, 128, 160, 224 ou 256 bits. 1687 GE pour 128 bits et 64 bits de résistance de collision.
  4. Lesamnta-LW produit une sortie de 256 bits. 8240 GE pour 256 bits et 120 bits de résistance de collision.

C) MAC

Les standards acceptés par le NIST sont CCM et GCM pour le chiffrement par bloc avec MAC et CMAC, GMAC, HMAC pour le calcul de MAC.

  1. Chaskey prend en entrée une clé de 128 bits, donne en sortie un message de 128 bits et performe entre 1 et 8 tours. Il permet un gain de performance de 15 à 30 pourcents. Il est recommandé de faire 12 tours, une attaque différentielle a été menée sur 7 tours avec 2^78 plaintext choisis.
  2. TuLP prend en entrée un bloc de 64 ou 128 bits avec une clé de 80 ou 160 bits nécessitant 2252 ou 2764 GE. L’algorithme est basé sur PRESENT et est donc avec le même niveau de sécurité.

D) Chiffrement par flux

  1. Grain 128 A prend en entrée une clé de 128 bits et un IV de 128 bits, utilise un LFSR et un NLFSR et nécessite 2133 GE.
  2. Trivium prend en entrée une clé de 80 bits et un IV de 80 bits et génère 2^64 bits de sortie. Une attaque en 2^40 computations pour une initialisation de 799 tours au lieu de 1152 existe. Le cryptanalyste met en avant une possibilité d’amélioration de l’attaque sur l’intégralité des tours.
  3. Mickey 2.0 prend en entrée une clé de 80 bits et un IV de 0 à 80 bit, génère 2^40 bits de sortie et nécessite 3600 GE. Il existe une DFA en 2^14 fautes.

Nos experts restent à votre disposition pour vos accompagner dans le domaine de la sécurité des objets connectés via nos prestations de conseil, d’audit, de test d’intrusion ou de formation de vos équipes de développement pour comprendre les menaces et limiter les risques.

Contactez-nous : Charles-Henri MATHOREL ch.mathorel@serma.com