|
Parcours InfoSec |
Contact : Jean-Francois Lalande (jean-francois.lalande@centralesupelec.fr)
Candidatures : instructions
Introduction & objectifs du parcours
L’omniprésence des technologies de l’information et de la communication, pour utiles et riches qu’elles puissent être, fragilise également les sociétés modernes : les institutions, les entreprises, les citoyens. Cette fragilité est régulièrement mise en évidence. Ainsi en mai 2017, le rançongiciel WannaCry a paralysé en quelques heures plus de 230 000 ordinateurs à travers 150 pays, touchant des entreprises, des hôpitaux, des écoles, des universités. La cybersécurité est donc un enjeu sociétal et stratégique majeur, comme l’a souligné M. Mahjoubi, Secrétaire d’État au numérique : aujourd’hui on n’a pas assez d’entreprises de cybersécurité en France et en Europe (...) Il va falloir développer la formation. .
Le domaine de la cybersécurité requiert un très haut niveau d’expertise technique. Il nécessite des experts capables de comprendre et d’anticiper des attaques sans cesse plus complexes. Ces experts devront en permanence innover et imaginer de nouveaux moyens de défense et de détection. Ils seront garants de la sécurité des données numériques de demain. Leur recrutement passe dès à présent par des tests techniques très poussés (notamment à l’ANSSI, à la DGA-MI, et dans nombre d’entreprises, notamment les GAFAM). Ce profil d’expert est aujourd’hui rare sur le marché du travail.
Un tel niveau d’expertise technique ne peut s’acquérir en moins de deux ans. En effet, les volumes théoriques et pratiques à dédier à la sécurité sont obligatoirement conséquents, notamment si l’on souhaite obtenir le label de l’ANSSI SecNumedu qui quantifie l’expertise des étudiants sur chaque volet de la sécurité numérique. Dans ce contexte, le parcours InfoSec offrira une formation renforcée en informatique en deuxième année et spécialisée en cybersécurité en troisième année. La deuxième année permettra à tout étudiant intéressé par une mention d’informatique d’acquérir à la fois de solides bases en informatique et une ouverture vers d’autres domaines, comme l’IoT ou les systèmes de contrôle industriel, dont la sécurisation est aujourd’hui un défi. La troisième année permettra à ces étudiants, au bagage informatique déjà solide, d’acquérir toutes les connaissances et les bonnes pratiques en sécurité informatique. Une année complète de spécialisation en sécurité est une superbe occasion pour acquérir l’ensemble des connaissances que doit avoir tout expert en cybersécurité.
Le parcours InfoSec s’intègre naturellement dans le cursus général. En particulier, il offrira aux étudiants l’opportunité d’aborder des problématiques sociétales, d’entreprenariat et de recherche. Le parcours InfoSec leur permettra donc d’acquérir l’ouverture d’esprit caractérisant tout ingénieur sortant de CentraleSupélec.
Débouchés
Les étudiants ayant suivi le parcours InfoSec seront des experts techniques ayant une vision large des problématiques posées par la sécurité du numérique. Durant leur scolarité, ils auront eu l’opportunité de comprendre les enjeux techniques et sociétaux de la sécurité numérique. Ils auront été sensibilisés à l’entreprenariat. Ils connaîtront les problématiques de recherche de ce domaine.
À titre d’exemples plus concrets, notre ambition est que les étudiants du parcours InfoSec puissent intégrer les entreprises et organismes suivants dès la sortie du parcours :
- Conseil : les Big Four (EY, KPMG, Deloitte, PwC), Wavestone
- Services: Devoteam, Sopra Steria, Capgemini, Orange Cyberdéfense, …
- Banques BNP Paribas, Société Générale, BdF, …
- R&D de grands groupes : Gemalto, Intel, IBM, Airbus, EDF, Orange Labs, …
- Jeunes entreprises : Criteo, Cryptosense, Amossys, Sekoia, Quarkslab, …
- Doctorat : CentraleSupélec, Inria, CEA, ENS, Cifre, …
- Organismes étatiques : DGA-MI, ANSSI, la cyberdéfense civile ou militaire (COSSI et CALID), le renseignement civil (DGSE), le renseignement militaire (DRM, DRSD)…
Enseignements 2A (InfoSec1)
La première année du parcours InfoSec est une année dédiée à l’informatique. Cette année abordera deux grandes thématiques. La première thématique, qui correspond aux séquences ST5 et SG6, pourrait s’intituler Machines et applications. Elle a pour ambition de donner aux étudiants du parcours les clés de compréhension qui concernent le fonctionnement d’une application, d’un logiciel et d’un réseau informatique. La seconde thématique, qui correspond aux séquences ST7 et SG8, pourrait s’intituler De l’architecture matérielle à la compilation d’applications. Elle s’intéressera à des aspects plus bas niveau comme l’architecture matérielle, la compilation et les systèmes d’exploitation.
► Modèles de données et schémas de conception.
Ce cours abordera les notions suivantes :
- Génie logiciel : méthodes historiques (cycle en V, cycle en spirale, test), eXtreme Programming, programmations orientée services, intégration continue ;
- Programmation orientée objet : héritage, encapsulation, polymorphisme, dispatch dynamique, généricité, covariance, contravariance, invariance, fonctions et classes anonymes ;
- Concepts avancés appliqués à Java / Scala : réflexivité, sérialisation, Java NIO, JNI, Garbage Collector, typage et inférence de type ;
- Patrons de conception : singleton, fabrique abstraite, observeur / observé, proxy, ...;
- Bases de données relationnelles : opérateurs de l’algèbre relationnelle, langage SQL, type d’index, optimisation de requêtes, mapping orienté object relationnelle (ORM) ;
Bases de données NoSQL : Scala / Spark, MongoDB, Neo4J.
► Architecture des calculateurs.
Les processeurs aujourd’hui sont omniprésents, et leur conception et leur réalisation sont un enjeu de société majeur. Les étudiants devront donc à l’issue de cet électif comprendre toutes les fonctionnalités présentes dans un processeur, et être capables de programmer un processeur. Cet électif abordera les notions suivantes :
- Logique booléenne, logique numérique.
- Programmation en VHDL.
- Architecture et fonctionnement d’un processeur MIPS: chemin de données, registres, mémoires, fetch, décodage, exécution d’une instruction, pipeline ...
- Architecture d’une plate-forme informatique : processeur, mémoires cache, mémoire centrale, interruption, entrées/sorties.
- Réalisation d’un sous-ensemble du processeur MIPS.
- Approche des mécanismes de sécurité au niveau hardware.
Ce cours s’inspire largement d’un cours donné à Standford par John L. Hennessy qui a donné lieu au livre , qui sera utilisé comme texte de référence dans le cadre de cet électif. John L. Henessy est en outre l’inventeur du processeur MIPS et des architectures RISC.
► Nouveaux paradigmes réseaux.
Les paradigmes classiques des réseaux informatiques liés à la création d’Internet (modèles en couche, protocoles TCP/IP, modèle client/serveur, etc.) se sont largement imposés dans le monde informatique en général. Toutefois, les évolutions des besoins des utilisateurs en termes de disponibilité et de volumétrie des données ainsi que l’émergence de nouvelles applications et de nouveaux services (portage des applications lourdes sous formes d’application Web, informatique en nuage, cryptodevise, etc.) conduisent à des évolutions importantes des architectures traditionnelles des systèmes d’information.
Ces évolutions architecturales, ainsi que l’essor des technologies associées, s’expliquent également par deux tendances actuelles : l’externalisation des infrastructures réseau et d’hébergement, voire des applications elles-mêmes, et l’optimisation de l’utilisation de ces infrastructures. Cela implique en particulier, des capacités d’adaptation dynamique à la demande, avec notamment la nécessité de pouvoir distribuer le stockage et les traitements mais également de reconfigurer rapidement les infrastructures. Il faut également être en mesure de partager les ressources (processeur, stockage et réseau), en s’appuyant sur la virtualisation des infrastructures. Au final, cela requière de privilégier des modèles décentralisés, de type pair-à-pair, et des modèles de répartition des ressources aptes à passer à une grande échelle, etc.
Dans le cadre de cet électif, nous souhaitons introduire les différents concepts précédents. Plus précisément, nous aborderons les notions suivantes :
- Architecture moderne d’Internet : routage, AS, peering, annuaire LDAP.
- Architecture distribuée et informatique en nuage (cloud computing) : virtualisation hôte et réseau (Software Defined Network), architecture et typologie (IaaS, Paas, Saas, cluster), systèmes de fichiers distribués, haute disponibilité, équilibrage de charge, gestion de cluster, orchestration.
- Architecture pair à pair (P2P) : application à BitTorrent et à la blockchain (Bitcoin)
► Compilation.
Ce cours abordera les notions suivantes :
- Analyse lexicale et syntaxique : grammaire de langage, analyse LALR(k), LL, LL(k)
- Arbre de syntaxe abstraite : transformation de l’arbre en code intermédiaire
- Sémantique des langages
- Analyse statique : ordre partiel, treillis, calcul de point fixe, analyse Kill/Gen, interprétation abstraite
- Production de code et optimisation : allocation de registres, détection de code mort, optimisation de graphes de flots de contrôle, simplification, propagation de contraintes
- Sécurité des langages
Le cours de compilation est accompagné d’un projet dont l’objectif est la réalisation d’un prototype de compilateur, intégrant de nouveaux mécanismes d’optimisation dans le cadre de la phase de finalisation. Selon les partenariats industriels choisis, le compilateur créé optimisera différents critères (consommation d’énergie, taille mémoire de l’exécutable, vitesse d’exécution, etc.). Par exemple, ST Microelectronics peut fournir des contraintes sur les composants matériels. Morpho peut amener des contraintes sur les temps d’exécution de certaines parties du code (par exemple temps d’exécution d’un mécanisme d’authentification). Apple peut fournir des illustrations d’objets connectés (comme les montres connectées) pour optimiser la gestion de l’énergie.
► Système d’Exploitation.
Dans le cadre de cet électif, nous supposons que l’étudiant comprend le fonctionnement d’un processeur et possède les outils permettant de générer un exécutable pour ce processeur. Ainsi, il est fortement recommandé d’avoir suivi l’électif Architecture des calculateurs, et la ST7 Compilation afin d’être en mesure de comprendre pleinement l’électif Système d’Exploitation.
L’objectif de cet électif est de donner les connaissances et les compétences pour réaliser un système d’exploitation multitâche gérant la mémoire des différents processus, gérant des interruptions et capable de réaliser des entrées-sorties. Afin d’atteindre cet objectif, cet électif contient l’ensemble des notions qu’il est nécessaire de comprendre pour réaliser un système d’exploitation, à savoir :
- Histoire des systèmes d’exploitation
- Gestion des processus, algorithmes d’ordonnancement
- Gestion mémoire virtuelle/réelle
- Traitement des interruptions, appels systèmes, gestion des Entrées/Sorties
- Système de gestion de fichiers
- Mécanismes de protection dans un OS
- Présentation de différents systèmes (Linux, Windows, Mac OS X, Android). Comparaison.
- Virtualisation/Machines virtuelles/Emulation
Ce cours se basera sur les ouvrages de références .
► Programmation Système sous Linux et Windows.
Cet électif s’adresse à des étudiants désireux d’approfondir leur pratique de la programmation au travers de l’apprentissage du langage C, en écrivant des applications proches du système d’exploitation en utilisant les interfaces standards d’un système Unix (norme POSIX, gestion des entrées-sorties, communications interprocessus, programmation multiprocessus et multithreads, gestion des signaux systèmes, déverminage et mise au point d’une application) et leurs équivalents pour l’API Win32/Win64 de Microsoft Windows.
Le langage C reste un des langages les plus utilisés pour programmer des applications dans les couches basses du logiciel telles que des systèmes d’exploitation ou des applications proches de celui-ci. En particulier, il est encore très largement utilisé pour programmer les services tournant en tâche de fond dans les systèmes GNU/Linux et Microsoft Windows (serveurs Web, serveurs de bases de données, serveur de messagerie électronique, serveurs de fichiers, etc). Bien que de conception très ancienne (années 70), cet état de fait s’explique par les performances inégalées des programmes écrits dans ce langage grâce aux progrès constants des chaînes de compilation disponibles actuellement. Les inconvénients d’écrire dans un langage peu abstrait sont donc (partiellement) compensés par des performances quasiment optimales au prix d’un effort substantiel lors de la mise au point des programmes.
Ce cours sera aussi l’occasion de se rendre compte des difficultés inhérentes à la programmation en langage C (notamment la gestion explicite de la mémoire et les conséquences de choix de conception discutables sur l’implémentation des tableaux et des chaînes de caractères) et des problèmes de fiabilité et de sécurité qu’elles engendrent.
Nous profiterons de cette expérience pour introduire un nouveau langage de programmation qui permet de garantir à la fois plus de sécurité et de fiabilité par la conception même du langage (qui fait usage des derniers progrès en matière de système de typage) et qui dans le même temps permet d’obtenir les mêmes performances qu’un programme écrit en langage C. À notre connaissance, c’est la première fois que cette synthèse est assurée par un langage de programmation (les autres tentatives butant toujours sur soit des problèmes de performances à l’exécution, soit des erreurs durant le fonctionnement aboutissant généralement à des mises en défaut de la sécurité de l’application pouvant se répercuter sur celle de la plateforme qui l’exécute). Nous introduirons donc le langage Rust qui est déjà actuellement utilisé par les équipes de Mozilla pour refondre entièrement le code de leur navigateur Web Firefox.
L’électif permettra aux étudiants de mettre en pratique les connaissances acquises au cours de travaux de laboratoires, qui consisteront en la programmation de services systèmes sous Unix et Windows en C. De plus les étudiants pourront explorer et enrichir un petit système d’exploitation totalement écrit en Rust.
Contenu :
- Le langage C:
- les spécificités du langage (structures, pointeurs, types)
- l’architecture du code (headers, compilation séparée, préprocesseur)
- les pointeurs (allocation, calcul, fonctions)
- Le langage Rust :
- Description du langage ;
- Gestion mémoire ;
- Gestion de la concurrence ;
- Propriétés de sûreté.
- Découverte des API systèmes Unix et Windows, et de la norme POSIX.
- Découverte et production des librairies statiques et dynamiques.
► Systèmes embarqués et internet des objets.
Cet électif fait partie du parcours InfoSec, mais est pour autant accessible à tout étudiant de deuxième année le souhaitant. Il a pour objectif de découvrir les spécificités du développement d’applications sur des systèmes embarqués et des objets connectés de différentes natures.
Les contraintes pour développer ces objets connectés sont variés : limite énergétique, capacités de calcul, connectivité réseau, déluge de données, temps réel, etc. Ainsi, l’électif s’attachera dans un premier temps à dégager les grands principes qui sont communs à ces objets connectés, par exemple, le déport des données dans le cloud, l’économie des traitements logiciels, la gestion de la connectivité réseau par intermittence.
Dans un second temps, l’électif illustrera ces principes en choisissant certains systèmes embarqués pour lesquels on approfondira le développement logiciel. En particulier, nous détaillerons l’écosystème informatique qui est propre à chacun de ces systèmes embarqués. Cet écosystème informatique a pour objectif de répondre aux contraintes particulières et de faciliter le développement des applications. D’un point de vue des langages, il peut s’agir de l’utilisation d’un langage très proche du système d’exploitation comme le C, ou bien d’un langage de plus haut niveau s’exécutant sur une machine virtuelle comme Java. Dans certains cas, des langages plus dédiés permettent de simplifier davantage la programmation. D’un point de vue des données, il peut s’agir de fournir des solutions de stockage local ou bien une API de programmation permettant de déporter ces données dans le cloud.
Précisons que les systèmes étudiés pourront s’enrichir avec l’évolution de l’électif et avec la participation d’intervenants extérieurs
► Science de l’entreprise et cybersécurité.
Ce cours a pour objectif de vous apporter toutes les connaissances en sécurité en sciences de l'entreprise: gestion de risques pour la cybersécurité, aspects organisationnels de la sécurité, normes, analyse de risque, intelligence économique.
Enseignements 3A (InfoSec2)
La seconde année du parcours InfoSec est une année de spécialisation, d’approfondissement et de professionnalisation en cybersécurité. Cette année ne peut être suivie que par des étudiants possédant déjà un fort bagage en informatique. Cette année est divisée en trois grands thèmes attachés aux trois séquences.
► Thème1: Protection des données et des usages.
- Intro ST (20h) : Introduction à la sécurité et la sureté de fonctionnement ;
- CM1 (30h) : Détection d'intrusion
- CM2 (30h) : Protection des contenus et vie privées
- CM3 (30h) : Crytographie 1
- CM4 (30h) : Sécurité Réseau;
- CM5 (30h) : Sécurité matérielle (architectures, fautes matérielles, canaux cachés) et composants de sécurité (TPM/TEE) ;
- CM6 (20h) : Droit (du numérique, de la sécurité informatique, de la vie privée) ;
- Projet de fin d’étude ou contrat d’étude industrielle (1/3).
Puis semaine d’intégration sur le thème de la sécurité des systèmes interconnectés : réseaux, IoT et systèmes industriels.
► Thème2: Protection des systèmes
- CM7 (30h) : Cryptographie 2 ;
- CM8 (40h) : Rétro-ingénierie, virologie, protection du logiciel ;
- CM9 (60h) : Techniques avancées d’attaques mémoires
- CM10 (50h) : Sécurité du logiciel (analyse statique, offuscation)
- Projet de fin d’étude ou contrat d’étude industrielle (2/3).
Puis semaine métier sur le thème de la recherche en Cybersécurité.
► Thème3 : Connaissance de la menace et audits de sécurité
- CM11 (60h) : Sécurité des systèmes d’exploitation (type UNIX, type Windows) ;
- CM12 (60h) : Sécurité web et des systèmes de gestion de bases de données ;
- CM13 (60h) : Audit de sécurité, tests d’intrusion ;
- CM14 (20h) : Développement sécurisé ;
- Projet de fin d’étude ou contrat d’étude industrielle (3/3).
Puis séminaires métier sur le thème de la réponse aux incidents de sécurité, de la gestion de crise, et de la sécurité organisationnelle.
Outre ces enseignements, nous envisageons la possibilité de faire participer les étudiants du parcours InfoSec2 à des challenges de sécurité. Pour cela, nous prévoyons de faire appel à des partenaires industriels qui seront en mesure de construire avec nous les challenges en lien avec les métiers de la cybersécurité.
FAQ
→ Quels sont les pré-requis pour le parcours InfoSec ?
Tout étudiant voulant intégrer le parcours InfoSec doit bien sûr avoir préalablement vérifié son attirance pour l'informatique en suivant les cours obligatoires de 1A dans ce domaine (e.g., cours SIP et cours d'algorithmique) ainsi que les électifs (e.g., Sécurité et Réseaux). Aucun autre pré-requis n'est nécessaire.
→ Comment sera effectuée la sélection des 25 étudiants du parcours?
Chaque étudiant voulant suivre le parcours infosec devra écrire une lettre de motivation. Lorsque cette lettre ne permettra pas de déterminer si le candidat est motivé pour effectuer cette formation, un entretien pourra avoir lieu. A l'issue du classement des candidatures/lettres de motivation et au terme d'éventuels entretiens, 25 candidats seront retenus.
→ Comment ferez-vous la sélection si le nombre d'étudiants est trop important ?
Dans ce cas, les étudiants seront classés suivant leurs notes dans les matières "informatiques" ou proches de l'informatique. Une première sélection de cinquante candidatures sera alors étudiée comme décrit précédemment.
→ Est il possible de suivre un Master Recherche en informatique pendant InfoSec2 ?
Oui, il est possible, en 3A (InfoSec 2) de suivre en parallèle de la formation InfoSec un master recherche en informatique de l'université de Rennes 1. Cette possibilité s'adresse tout particulièrement aux étudiants désirant continuer en thèse de doctorat ou simplement curieux de découvrir le monde de la recherche pendant leur dernière année de scolarité.
→ Il y a t'il des résidences étudiantes sur le campus de Rennes?
Oui, bien entendu. > Plus d'informations <
→ La vie associative est elle aussi développée qu'à Paris ?
La vie associative est très développée à Rennes. > Vie Etudiante < et > Vivre à Rennes <
→ Le parcours InfoSec permet il de suivre un parcours généraliste?
En deuxième année (InfoSec 1), une partie des cours des ST5 et ST7 sont des cours obligatoires qui font partie du parcours généraliste. Par contre toutes les séquences générales sont des cours d'informatique réservés aux élèves du parcours InfoSec. Il faut comprendre que suivre le parcours InfoSec vous invite à faire un choix un peu plus tôt (en fin de première année plutôt qu'en fin de deuxième) sur votre spécialisation.
→ Obtient-on le même diplôme à la fin du parcours InfoSec que les autres étudiants CS?
Oui, évidemment.
→ Quels sont les métiers accessibles après le parcours InfoSec?
Dans cette page d'information, nous avons listé quelques métiers. Mais en pratique tout métier en informatique sera accessible aux élèves du parcours InfoSec. Le bagage en sécurité informatique ne sera alors qu'un plus très apprécié des employeurs.
→ Quel est l'employabilité à la sortie du parcours?
Aujourd'hui, sauf accident, tous les étudiants ont une proposition d'embauche, soit pendant leur stage de fin d'études, soit à l'issue du stage. Ils peuvent être parfois même contactés par des chasseurs de tête pendant leur scolarité, lorsqu'il affichent sur leur profil linkedin leur spécialisation en cybersécurité.
→ Infosec est-il compatible avec une césure, un semestre à l'étranger, l'apprentissage, la DTY ?
- Infosec est compatible avec l'apprentissage
- Tout étudiant peut faire une césure d'1 an en cours de parcours Infosec
- Idem pour la DTY: l'étudiant admis en DTY part 1 an et revient en cours de parcours
- Les semestres à l'étranger (S8) sont autorisés s'ils sont académiques et que les cours choisis dans l'université étrangère remplacent les cours non suivis du parcours (à définir ensemble). Il n'est pas possible de faire de semestre S8 en entreprise ou laboratoire car les cours du parcours Infosec manqués ne sont pas compensés (sauf exception).
→ Quelles langues peut-on suivre sur le campus de Rennes ?
Cours non débutants exclusivement:
- allemand,
- espagnol,
- FLE pour les élèves étrangers,
- japonais,
- russe.
Pour plus d'information, contacter Roger Conan (roger.conan@supelec.fr)