Programme du parcours SRI

SERIES TEMPORELLES

Il s’agit de présenter des outils et concepts pour étudier des séries chronologiques (qui évoluent au cours du temps), dans un but de modélisation, d’estimation et de prédiction. Après avoir étudié les notions de stationnarité, on introduira des outils tels que la densité spectrale, l’autocorrélation inverse et l’autocorrélation partielle. les techniques d’estimation de ses quantités seront aussi présentées. Ensuite, les modèles linéaires de types AR, MA, ARMA, ARIMA et SARIMA seront présentés et leurs propriétés seront développées. Les modèles conditionnellement hétéroscédastiques de type (GARCH) seront aussi abordés. On terminera par une introduction aux notions de co-intégration et de modèles à corrections d’erreurs.

DATA MINING, TEXT MINING ET VISUALISATION

Cet enseignement sera développé autour de trois axes :
- Un axe prolongeant l’enseignement d’analyse de données et de segmentation en abordant des techniques d’analyse sortant du cadre de l’analyse exploratoire et permettant de construire des modèles prédictifs : arbres de segmentation, de régression, réseaux de neurones…
- Un axe dédié au développement de connaissances autour des techniques de Text Mining.
Après une présentation des outils permettant de collecter et reformater de l’information textuelle, des méthodes et des synthèses d’information classiques dans ce type d’analyse, quelques exemples d’applications seront présentés.
- Un axe développant les compétences autour des outils adéquats à la construction de représentations graphiques à la fois adaptées aux méthodes présentées et à la nature des données analysées et offrant des possibilités d’interactivité lorsque cela présente un intérêt pour l’utilisateur.

GESTION DE PROJET

L’objectif de cet enseignement est de développer chez les étudiants une capacité à structurer leur démarche dans le cadre de projets dont ils seront acteurs et analyser/anticiper les risques dans le cadre de cette gestion.
Connaître la trame des méthodes classiques de gestion de projet. Faire un focus sur le concept d’agilité, en s’appuyant sur le cadre de la programmation orientée objet. faire découvrir aux étudiants quelques méthodes agiles et en connaître les différentes étapes et leur sens, savoir se préparer aux étapes de suivi, de présentation etc. Aider les étudiants à savoir se positionner par rapport à un projet, à ses acteurs, comprendre leur rôle…
Outils de gestion/suivi de projet (MS Project, Redmine…)
Outils pour le travail collaboratif :
- Communication entre les participants : partage de fichiers, sondage, wiki…basecamp
- Partage de code : outils de versionning (GIT)
Outils de tests - framework dédié au langage pour les tests unitaires Prérequis : connaissance d’un langage de programmation orienté objet.

PROGRAMMATION AVANCEE

Ce cours, à destination des étudiants du parcours sRi, a pour objectif de présenter l’environnement de programmation des systèmes unix/linux et Mac dans une certaine mesure. Deux axes seront développés : la programmation de l’interpréteur de commande bash et la programmation système à l’aide du langage C.
Le shell est l’interface naturelle pour l’exécution de tâches pour plusieurs raisons : c’est en premier lieu l’interface naturelle entre l’utilisateur et le système.
Il définit un langage permettant l’exécution, la programmation et la gestion des processus, mais également la gestion des flux d’informations entre les processus. les shells supportent en règle générale des structures de contrôle qui permettent la réalisation de tâches simples tout comme des tâches plus sophistiquées. Le bash sera utilisé comme exemple de shell et un ensemble minimal de commandes classiques sera
présenté. la programmation de scripts sera également abordée.
La programmation système sera abordée à travers le langage C, en raison de son rôle central dans les systèmes de type unix. le langage sera abordé par le biais des fonctions permettant d’étendre les fonctionnalités du shell :
Exécution de code suiD/sGiD, définition de sémaphores, partage de mémoire… les outils intervenants dans le processus de compilation seront également abordés.

METHODES D'ANALYSE DU RISQUE INFORMATIQUE

Protocole
Présentation des protocoles d’échanges d’informations classiques et contemporains.

Audit informatique
Définition du périmètre du risque cyber et présentation des méthodes d’analyse en environnement professionnel.

Sécurité applicative
Présentation des faiblesses des applications, recherche et exploitation des failles dans les couches applicatives.

RISQUES DANS LES SYSTEMES RESEAUX

Développer une connaissance des différents types d’attaque informatique, d’une part à travers différentes plateformes ad hoc, mais également à travers une analyse des publications récentes en sécurité informatique. Présentation d’attaques à bas niveau (assembleur), des mécanismes d’attaques web. exemple d’analyse d’intrusion post-mortem (iptable, virtualisation).

RISQUE EN ENVIRONNEMENT EMBARQUE

Ce cours présentera les problématiques de sécurité de certains environnements sensibles, en particulier dans les systèmes embarqués. Il abordera plus largement les risques liés au web, la sécurité des objets mobiles (téléphones) ou la sécurité des cartes à puces. Les enjeux économiques liés à ce type de systèmes sont immenses, et leur sécurité est très spécifique. Il donnera aux étudiants les bases pour une compréhension fine des vulnérabilités de ces systèmes particuliers. Pour cela, seront étudiées les bases de la sécurité du web (politique de même origine et ses extensions, protocoles d’échange) jusqu’aux évolutions actuelles en terme de services dans le «nuage». la sécurité des processus et leurs principaux mécanismes de protection seront acquis par la pratique dans un cadre «ethical hacking», à travers des exemples de contournement de protection et mises en œuvre d’attaques de type «ROP». Par la suite, les bases de la sécurité des mobiles et ses spécificités seront abordées, par des descriptions des attaques existantes et réellement mises en œuvre. les standards seront décrits et la sécurité des systèmes d’exploitation (Os, android) sera détaillée. Les critères communs et leur impact pour les mobiles font également partie du cours. Il présentera aussi les cartes à puce, depuis leur architecture jusqu’à leur intégration dans
un système aussi large que le système Cb, visa ou Carte vitale. De nombreuses attaques particulièrement impressionnantes menacent les cartes à puce et l’implémentation de leur systèmes cryptographiques (attaques par canaux auxiliaires) : les différentes techniques (statistiques ou arithmétiques) pour les mettre en œuvre seront décrites, ainsi que de possibles contremesures. Des applications de la biométrie (authentification, contrôle d’accès) seront présentées une fois celle-ci définie (données
biométriques, mesure, qualité…).

CRYPTOLOGIE ET SECURITE INFORMATIQUE

Ce cours est divisé en deux parties : l’une abordera la cryptographie, l’autre les objets mathématiques associés.

Cryptologie avancée
La cryptographie protège des informations de plus en plus nombreuses, sous des formes diverses (données, programmes, communication), provenant de systèmes hétérogènes (tablette, cloud, téléphone,…). La gestion de ces données, leur contrôle, leur partage, leur échange, leur usage, a poussé la cryptographie à s’adapter et ce sont les
fondement de celle-ci qui sont actuellement repensés. Ce cours permettra de prendre conscience des enjeux et de certaines réponses.
Ce cours aborde la cryptographie d’abord dans la largeur. Les concepts classiques de cryptographie seront rappelés et présentés avec un souci de formalisme. Les deux grands axes seront la cryptographie à clé secrète (chiffrement par blocs, à flot, authentification symétrique, fonction de hachage,…) et la cryptographie à clé publique
(chiffrement, signature, identification).
Cette présentation débutera par les objets élémentaires (fonctions à sensunique, fonctions pseudo-aléatoires...) et montrera comment en déduire des primitives cryptographiques. Une part importante du cours présentera les attaques possibles de ces systèmes (cryptanalyse) et leurs conséquences.

Mathématique pour la cryptologie
Ce cours parcourra également la cryptographie en profondeur, en se focalisant sur des primitives avancées directement motivées par les nouveaux usages (preuve à divulgation nulle de connaissance, calcul multipartie sécurisé, chiffrement homomorphe, chiffrement fonctionnel,…), et sur leur sécurité.
Pour concevoir ses primitives, la cryptographie s’appuie sur des objets mathématiques complexes, qui constitueront le cœur de la seconde partie de cet cours. Ces objets seront introduits de façon théorique, mais toujours avec un point de vue algorithmique et en gardant à l’esprit que ces protocoles devront être implantés. Le cours commencera par une étude des corps finis (construction, calcul,…), puis des objets plus avancés seront abordés : courbes elliptiques (structure de groupe, arithmétique, calcul du nombre de points…), les application bilinéaires, les réseaux euclidiens (algorithmique, problèmes difficiles,…) l’impact cryptographique sera illustré systématiquement au cours de leur présentation.

PROTECTION DES CALCULS

L’objectif de ce cours est de souligner l’importance de la fiabilité des calculs. L’exactitude des calculs n’est pas systématique lorsque ceux-ci sont effectués sur des ordinateurs qui, par nature, manipulent des nombres qui sont des « approximations » des nombres réels. Les erreurs de calculs doivent donc être estimées, voire maîtrisées.

Arithmétique des ordinateurs
Pour comprendre comment sont effectués les calculs sur un ordinateur, une première partie du cours concernera leur architecture puis la représentation des données et l’arithmétique flottante. Elle abordera les bases de l’architecture des ordinateurs, en se basant simplement sur le modèle de von neumann, et la manière dont les programmes et les données peuvent être représentés en mémoire. On ne rentrera pas dans le détails des jeux d’instructions complexes, comme le x86 : on travaillera uniquement à l’aide d’un jeu d’instructions simplifié, mais qui permettra tout de même par la suite aux étudiants de comprendre d’autres jeux d’instructions. On présentera ensuite les idées
architecturales existantes pour accélérer l’exécution des programmes sur les machines généralistes : hiérarchie mémoire, niveaux de cache et localité des données, parallélisme d’instructions et de données.
Le cours montrera comment l’arithmétique flottante réelle est spécifiée par les différentes normes, comment, en tenant compte des spécifications, elle peut être manipulée de manière fiable malgré les difficultés (erreurs d’arrondi, cancellation, exceptions…) et comment certaines opérations et fonctions sont implémentées.

Algorithmique numérique
La seconde partie abordera le calcul numérique utilisant cette arithmétique flottante. Divers algorithmes seront présentés, accompagnés d’étude de convergence, d’analyse d’erreurs et de suggestions d’amélioration en terme de performances. L’algèbre linéaire
sera le principal axe d’exploration, et plusieurs exemples illustreront ces problématiques d’analyse des erreurs, notamment en statistiques (analyse en composante principale).

Calcul formel
Enfin, la dernière partie du cours abordera l’aspect symbolique du calcul sur différents objets (grands entiers, polynômes, matrices). Cette fois, le calcul est exact, et l’accent est mis sur l’efficacité des algorithmes, en particulier ceux qui sont largement utilisés en cryptographie.

ANGLAIS

L’évaluation du cours se fait en contrôle continu chaque semaine sur les activités en classe et le travail demandé à domicile. Les étudiants sont évalués sur leur motivation, leur questionnement, la participation et la communication en anglais pendant le cours.
Les notes porteront sur les 4 critères suivants représentant chacun ¼ de la note : écrit, oral, présentation et compréhension orale.
L’évaluation finale correspond à la moyenne de l’ensemble des notes obtenues et sera abaissée de 10% par absence injustifiée dans le semestre.