Projet ZZ1 Informatique embarquée et sécurité Implémentation du chiffrement AES sur microcontrôleur

Documents pareils
PIC EVAL Dev Board PIC18F97J60

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction au langage C

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

UE Programmation Impérative Licence 2ème Année

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Bases de programmation. Cours 5. Structurer les données

Programmation impérative

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Utilisez Toucan portable pour vos sauvegardes

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

UE C avancé cours 1: introduction et révisions

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Projet Matlab : un logiciel de cryptage

Backup. Solution de sauvegarde en ligne pour les professionnels LE PARTENAIRE SECURITE DE VOTRE ENTREPRISE!

Évaluation et implémentation des langages

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Application 1- VBA : Test de comportements d'investissements

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

Steganos présente Security Suite 2007, son incontournable suite de sécurité pour PC.

Programmation C. Apprendre à développer des programmes simples dans le langage C

Encryptions, compression et partitionnement des données

Simplifiez-vous la vie et accroissez vos revenus choisissez la simplicité

Configuration de TCPIPconfig.h

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

User Manual Version 3.6 Manuel de l Utilisateur Version

Introduction à l Informatique licence 1 ère année Notes de Cours

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

EVault Endpoint Protection en détails : Gestion de l entreprise, Sauvegarde, Restauration et Sécurité

Rappels Entrées -Sorties

Sommaire. AIDAUCLIC BACKUP : Solution de sauvegarde en ligne 3. Quelles problématiques résout la solution? 3. Fonctionnement de la solution 4

La sécurité dans un réseau Wi-Fi

Les structures. Chapitre 3

OUTIL DE CRYPTAGE ET DE COMPRESSION

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Chapitre 10. Les interfaces Comparable et Comparator 1

neobe Backup Tel service de télésauvegarde informatique LE PARTENAIRE SECURITE DE VOTRE ENTREPRISE

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Le langage C. Séance n 4

OS Réseaux et Programmation Système - C5


Création de maquette web

as Architecture des Systèmes d Information

Guide d installation JMap 5.0

Installation et configuration du serveur syslog sur Synology DSM 4.0

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Programmation système I Les entrées/sorties

Chapitre I Notions de base et outils de travail

PROTEGER SA CLE USB AVEC ROHOS MINI-DRIVE

Solutions du chapitre 4

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Acer edatasecurity Management

Programmer en JAVA. par Tama

Journées MATHRICE "Dijon-Besançon" DIJON mars Projet MySafeKey Authentification par clé USB

INSTALLATION DE L AGENT CT EASY BACKUP LAN REV 1.0/

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Systeme d'exploitation

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Plan du cours. Historique du langage Nouveautés de Java 7

Conventions d écriture et outils de mise au point

Cours d Algorithmique et de Langage C v 3.0

datatale Boîtier Crypté 2.5-pouces pour disque dur Manuel d utilisation USB 2.0 AES 256 bit Rev.01

Manuel UniKey. Version 7.20 IOLOCK

Calculateur quantique: factorisation des entiers

Traitement numérique de l'image. Raphaël Isdant

26 Centre de Sécurité et de

Traitement de données

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE

Lire, dire et écrire en utilisant les cartes heuristiques. OBJECTIFS

MS 2615 Implémentation et support Microsoft Windows XP Professionnel

KIWI BACKUP DOSSIER DE PRESSE

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Introduction à l algorithmique et à la programmation M1102 CM n 3

Outils pour les réseaux de neurones et contenu du CD-Rom

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Limitations of the Playstation 3 for High Performance Cluster Computing

LaCieSync. Synchronization Software. getting started guide. Guide de démarrage. Guida introduttiva. Erste Schritte. Guía de inicio.

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Conférence sur les microcontroleurs.

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

INF 4420: Sécurité Informatique Cryptographie II

La prise de conscience de la Cyber Sécurité est en hausse

IRL : Simulation distribuée pour les systèmes embarqués

Optimisations des SGBDR. Étude de cas : MySQL

Architecture de l ordinateur

Outils pour la pratique

Mode d emploi pour lire des livres numériques

Transcription:

Projet ZZ1 Informatique embarquée et sécurité Implémentation du chiffrement AES sur microcontrôleur Auteurs : Tuteur : Année : FERRAND Lysandre LAFFONT Jacques 2016 BLANCHARD Marine Remerciements Nous tenons à remercier Monsieur Jacques LAFFONT, pour nous avoir suivi et aidé tout au long de notre projet. Introduction Problématique Le chiffrement AES (Advanced Encryption Standard) est actuellement un moyen très utilisé et relativement sûr pour sécuriser les transactions en ligne, les communications sans fil ou encore le stockage de données sensibles. Les algorithmes sont basés sur plusieurs substitutions, permutations et transformations linéaires, chacune réalisée sur des blocs de données de 16 octets. Ces opérations sont répétées plusieurs fois, appelées "rondes". Durant chaque ronde, une clé de ronde unique est calculée à partir de la clé de cryptage, et incorporée dans les calculs. Basé sur cette structure de bloc de l'aes, le changement d'un seul bit soit dans la clé, soit dans le bloc de texte brut donne un bloc de texte de chiffrement complètement différent un avantage sur les chiffrements de flux traditionnels. Ajouté à cela, les systèmes embarqués sont de plus en plus présents dans notre quotidien: téléphone portable, distributeur de billet, box ADSL, GPS Le but de notre projet consiste ainsi à évaluer : Dans quelles mesures est il possible d'implémenter ce chiffrement sur un microcontrôleur?

Sommaire Introduction.....1 Remerciements........1 I. Technologies utilisées.....3 MPLAB X......3 MPLAB XC8......3 Le microcontrôleur PIC18F45K50.....3 II. Évolution du projet....4 Compréhension du chiffrement AES.........4 Recherche d un algorithme.........4 Utilisation de MPLAB...4 III. Tests Résultats......5 Tests sur la clé......5 Tests sur le message à crypter/décrypter.....5 Mesure du temps.....5 Conclusion 6 2

I. Technologies utilisées MPLAB X Nous avons utilisé le logiciel MPLAB X tout au long de notre projet. MPLAB est un environnement de développement d'applications embarquées sur microcontrôleurs PIC et dspic, et est développé par Microchip Technology. MPLAB X est la dernière édition de MPLAB, elle nous permet d'éditer nos codes, de les déboguer et de programmer des microcontrôleurs. MPLAB X était très utile pour notre projet car contient un simulateur. La version que nous avons utilisée est MPLAB X IDE v3.30. Ce logiciel est entièrement gratuit et peut être téléchargé sur le site de Microchip pour toute plate forme (Windows, Mac, Linux). MPLAB XC8 Le compilateur C que nous avons utilisé est MPLAB XC8 de Microchip dans sa version 1.37. Comme MPLAB X IDE, il est téléchargeable gratuitement sur le site de Microchip, sur toute plate forme (Windows, Mac, Linux). Le microcontrôleur PIC18F45K50 Nous avons développé notre projet pour un microcontrôleur PIC. Un microcontrôleur PIC est une unité de traitement et d exécution de l'information à laquelle on a ajouté des périphériques internes permettant de réaliser des montages sans nécessiter l ajout de composants annexes. Un microcontrôleur PIC peut donc fonctionner de façon autonome après programmation. Le microcontrôleur utilisé est le PIC18F45K50. Il fait donc partie de la famille PIC 18 qui a un jeu d'instruction qui lui permet de faire fonctionner du code C compilé de manière nettement plus efficace que les familles précédentes (PIC10, PIC12, PIC14, PIC16, PIC17). Le F indique qu'il s'agit d'une mémoire flash et donc effaçable électriquement. Il s agit d un microcontrôleur 8 bits. 3

II. Évolution du projet Compréhension du chiffrement AES Nous avons dans un premier temps mené des recherches afin d assimiler les différentes étapes puis le fonctionnement général du chiffrement AES. Les documentations étant nombreuses (mais surtout en anglais), cette étape fut relativement rapide. Recherche d un algorithme Dans un second temps, nous avons recherché des algorithmes du chiffrement AES en langage C (ce langage nous étant plus familier que le langage assembleur). Nous avons choisi un code de chiffrement AES 256 (256 bits correspondant à la taille de la clé), à la fois simple et pratique. Utilisation de MPLAB Cependant afin de procéder à l'implémentation dans un microcontrôleur il est nécessaire de faire appel au langage assembleur, c est pourquoi nous avons eu recours au logiciel MPLAB associé au compilateur XC8. En effet l utilisation d un compilateur C facilite la production de code pour les applications embarquées. Afin d alléger le code principal et permettre une réutilisation rapide il faut créer deux types de fichiers: un fichier d en tête (*.h) et un fichier source (*.c). Nous avons donc créé un fichier d en tête (ou header file) aes.h qui inclue l ensemble des définitions et des macros utilisables sur le microcontrôleur, puis les fichiers sources aes.c et mainaes.c, le premier contenant les fonctions permettant notamment la substitution par octet, le décalage par ligne, le mélanges des colonnes ainsi que toutes les sous fonctions nécessaires aux fonctions de cryptage et de décryptage, le second quant à lui constitue le main, il permet d'appliquer les fonctions à un texte et une clé choisie. Durant cette étape nous avons dû apporter des modifications au code: Supprimer les printf, inutiles sur un microcontrôleur Remplacer les void par des static void car ils étaient déclarés ainsi mais cette déclaration n avait pas été reprise (problème de cohérence) La compilation se faisant sans erreur et les résultats retournés par MPLAB étant similaires, d une part à ceux renvoyés lors de la compilation sous gcc et d autre part à ceux donnés par le simulateur en ligne aes.online domain tools.com, nous avons pu entamer une série de tests. 4

III. Tests Résultats Tests sur la clé La clé est un mot de 0 à 32 octets de type unsigned char, elle peut donc être sous forme de texte. Nous avons testé la clé avec tous ces octets à 0, ainsi que tous ces octets à 1, cela fonctionne toujours. De plus, nous avons testé en entrant des caractères et cela fonctionne aussi, grâce au type de la clé. Il est également possible d entrer une clé de taille inférieure à 32 octets. Tests sur le message à crypter/décrypter Le message est un mot de 0 à 16 octets de type unsigned char, il peut être entré sous forme de caractères, d entiers, peut être identique à la clé, et de taille inférieure à 16 octets, le cryptage et le décryptage se font correctement. Mesure du temps Pour mesurer le temps d exécution, nous avons réglé la fréquence d instruction à 48 millions d instructions par seconde ( File > Project Properties > Simulator > Oscillator Options ). Le temps ne varie que peu selon la clé et le texte. En moyenne : Pour le cryptage : 963 μs Pour le décryptage : 887 μs Ces temps varient seulement de quelques microsecondes, et doivent être multipliés par 4 pour représenter les performances du microcontrôleur. 5

Conclusion Ce projet n était pas celui que nous avions choisi mais malgré les difficultés techniques comme la prise en main du logiciel, nous avons apprécié travailler sur ce sujet. Il nous a apporté un premier contact avec les systèmes embarqués en implémentant un algorithme de chiffrement sur un microcontrôleur. Notre travail a permis de mettre en évidence la possibilité d adapter un code de chiffrement AES pour le microcontrôleur défini en début de projet. De plus, l algorithme utilisé permet de crypter et décrypter des messages texte de 16 octets en un temps raisonnable. 6