Programme du parcours DSI (ex SRI)

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.

DATA MINING AVANCÉ

Cet enseignement vient renforcer les connaissances acquises au cours du programme de « Data Mining, Text Mining et Data visualisation » et les approfondir. Il offre également une ouverture sur les outils pouvant intervenir dans un contexte lié au phénomène du Big Data.
Les méthodes (forêts d’arbres aléatoires, réseaux de neurones...) seront expérimentées dans une démarche de recherche de performance. Elles seront également considérées dans le contexte d’une volumétrie de données importante et les adaptations envisageables dans ce contexte seront explorées et appliquées. Pour cela, les outils nécessaires à l’optimisation de code seront pris en main, et une approche par parallélisation des calculs en mémoire partagée ou distribuée sera mise en œuvre.

LANGAGES, CONCEPTS ET ARCHITECTURES POUR LES DONNÉES

Le but de cet enseignement est de développer des compétences sur l’accès, l’extraction et la transformation des données stockées sous les formes les plus courantes : fichiers plats et bases de données. Dans une première partie, un tour d’horizon des langages/logiciels fréquemment rencontrés dans le contexte de la gestion des données sera entrepris. Pour chacun, un focus sur les packages/bibliothèques adaptés à la manipulation des données et en particulier dans un contexte de grand volume sera proposé. Les expressions régulières et leurs déclinaisons seront présentées. Des applications de contrôle de qualité et de transformation seront réalisées sur des jeux de données réels et très volumineux.
Dans une seconde partie, ce sont les architectures logicielles pour la gestion des données qui seront abordées : Hadoop, Apache spark. Le lien sera fait avec la parallélisation de traintement avec des applications en apprentissage automatique.

METHODES D'ANALYSE DU RISQUE INFORMATIQUE

Cet enseignement comportera trois volets :
  • Une première partie portant sur les protocoles de communication classiques et les outils de capture et d’analyse. Les limites de ces protocoles, dans un environnement réseau ouvert, seront abordées.
  • Une introduction à l’audit informatique et au pentesting. Le périmètre du risque cyber sera défini puis la démarche et les outils de pentests seront présentés et mis en œuvre.
  • Enfin une présentation 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. Deux grandes familles d’attaques seront approfondies : les attaques à bas niveau (assembleur) et les attaques applicatives, notamment au niveau web.

RISQUES DANS LES SYSTEMES RESEAUX

Ce cours débute par une présentation de l’environnement de programmation des systèmes Unix/Linux et se prolonge par une analyse d’intrusion est réalisée dans un environnement virtuel.
La première partie du cours, 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. Les risques liés à l’environnement défini par le shell et à l’utilisation d’exécutables seront abordés.
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.
Dans une seconde partie, une analyse forensic est proposée. La mise en place d’un environnement virtuel permet de reconstituer des éléments de contexte utiles à l’analyse d’une intrusion post-mortem (iptable, virtualisation). L’attaque porte sur un gestionnaire de service web.

SERVICES WEB ET SÉCURITÉ

Ce cours comporte deux volets:
  • La première partie porte sur le développement de services web et la sécurité de services ainsi offerts. Après une revue des différents serveurs web, les langages, technologies et les outils de développement fondés sur le modèle MVC (modèle-vue-contrôleur) seront présentés et expérimentés afin de développer des services simples offrant des fonctionnalités classiques. La robustesse de la gestion de session sera notamment testée à l’aide d’outil de pentest.
  • Dans un second temps, la problématique du vote électronique est abordée. Une mise en œuvre à travers la plateforme de l’INRIA sera réalisée localement pour les besoins d’une élection réelle.


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.