310 likes | 544 Views
GPU Implementation of the Keccak Hash Function Family. Romain GRANJON Mourad HADADI Codage d’erreur FI2 – Telecom Saint Etienne. Sommaire. Introduction Fonction de hachage Présentation des constructions éponges Famille de fonction de hachage Keccak Implantation sur GPU
E N D
GPU Implementation of the Keccak Hash FunctionFamily Romain GRANJON Mourad HADADI Codage d’erreur FI2 – Telecom Saint Etienne
Sommaire Introduction Fonction de hachage Présentation des constructions éponges Famille de fonction de hachage Keccak Implantation sur GPU Modes de fonctionnement sur GPU Résultats expérimentaux Améliorations Conclusion
Introduction de l’article • Article publié en 2011 • Ecrit par Pierre-Louis Cayrel, Gerhard Hoffmann et Michael Schneider • Implémentation d’une famille de fonction de hachage sur GPU
Introduction du contexte • Importance des fonctions de hachage en cryptographie moderne • 2007 : Lancement d’une compétition de fonctions de hachage ouverte pour trouver de nouveaux standards Applications
Fonction de hachage • m : message à signer, on calcule h(m) • h : fonction de hachage • h doit : • Résister à la collision • Résister à la préimage • Résister à la seconde préimage
Amélioration des fonctions de hachage Tour 1 : 64 candidats • NIST (US National Institute of Standards and Technology) • SHA-3 proposé pour remplacer les fonctions SHA-1 et SHA-2 • Facteurs déterminants : sécurité et performance Tour 2: 14 candidats Tour 3: 5 candidats : BLAKE, Grøstl, Skein, JH et Keccak
Keccak : SHA-3 • Vainqueur du concours • Schéma basé sur la construction éponge • Un des plus rapides des 5 finalistes du concours
Les constructions éponge • 2 phases : absorption(absorbing) et essorage(squeezing) • Sortie de longueur variable • Phase absorption : entrée décomposée en plusieurs blocs puis permutation • Phase essorage : on retourne les bits de sortie ; nombre d’itérations variable et donc chaîne de sortie variable
Fonction de hachage Keccak Plus r est grand, plus on améliore la vitesse => PERFORMANCE Plus c est grand, plus on améliore la sécurité => SECURITY r : bit rate c: capacity f : fonction de permutation pi : blocs d’entrée zi : blocs de sortie
Paramètres de Keccak • 7 fonctions possibles de hachage de la famille Keccak-f[b] • b => taille de la permutation (en bits) • Nombre de rounds recommandés pour Keccak-f[1600] : 24 Choix de ces valeurs car une voie de Keccak-f[1600] correspond exactement à un mot CPU d’un processeur 64 bits
Attaque par recherche de collisions • Avec Keccak-f[r=1024, c=576] • 2288 opérations binaires pour trouver une collision • Avec 1 milliard d’ordinateurs et 1 milliards d’opérations par seconde • => 1.61061 années (plus que l’âge de l’univers !)
Hachage pour la signature basée sur les codes • Trouver e de poids t telque h(m) = He (McEliece, Niederreiter) • Trouver un haché tel qu’il soit décodable • Calcul du haché à partir de la phase d’absorption du message et d’une composante aléatoire
Hachage pour la signature basée sur les codes Algorithme i <- 0 Tant que h(M|i) n’est pas décodable Faire i <- i + 1 Calculer e = γ(h(M|i )) Fin Tant que Signataire envoie {e,i} tel que h(M|i ) = He
Utilisation du GPU • Signature électronique très lente (trouver un haché décodable) • Utilisation de la carte graphique pour accélérer les calculs • Traitements effectués en parallèle • Gain de performances non négligeable
CUDA • ComputeUnifiedDevice Architecture • Architecture développée par Nvidia • Accès à la puissance de calcul du GPU • Programmation en C, C++
Modes de fonctionnement sur GPU • Batch mode : Hachage de fichiers par lots (hachage de messages en parallèle) • Tree mode : Séparation du fichier en plusieurs blocs : des feuilles et des nœuds. Hachage indépendant des feuilles puis des parents
Accélération de la signature basée sur les codes • Calcul des hachés en parallèle avec l’ajout d’une composante aléatoire • Vérification du décodage en parallèle h1 h2 h3 h4 h5 h6 h7 h8 h9 • Signataire envoie {e,5} tel que h(m|5) = He
Limites à l’utilisation du GPU • Keccak n’est pas complètement parallélisable • La plateforme CUDA impose 32 threads au minimum (Warp) • Problème d’accès mémoire concurrentiel
Améliorations • Utilisation d’un matériel dédié • Meilleures performances mais l’implantation sur GPU est suffisamment performante • CUDA pose des limitations à cause du matériel • Utilisation d’une carte graphique plus récente