Sujet officiel
Cas GSIC — Session 2024, U6/E6 (SLAM), durée 4h, coef 4, sur 80 points (3 dossiers : 20 + 35 + 25 pts). 📄 Télécharger le sujet officiel GSIC (réseaucerta.org)
Lockbay n’héberge pas le sujet : ce corrigé est une production originale Lockbay qui répond aux questions du sujet officiel. Sujet © Éducation nationale.
Le cas GSIC (Sdis — service d’incendie et de secours) couvre trois dossiers : préparer une authentification unique (SSO), la mettre en place (JWT, chiffrement des données médicales) et adapter la sécurité de l’application mobile Rescousse (biométrie). Corrigé question par question.
Dossier A — Préparer le SSO 20 pts
Objectif réglementaire de la traçabilité des accès
La journalisation des accès permet de démontrer la conformité (RGPD/CNIL), de détecter et prouver qui a accédé à quelles données (responsabilité, valeur probante) et de gérer les incidents de sécurité. C’est une obligation de l’article 32 du RGPD (mesures de sécurité).
a) La sauvegarde vise à restaurer des données en cas de perte/panne (objectif de continuité) ; l’archivage vise à conserver longtemps des données à valeur légale/probante (objectif de preuve).
b) Les journaux d’authentification sont archivés pour répondre à l’obligation légale de conservation (preuve et traçabilité sur la durée exigée).
Confidentialité et intégrité garanties lors de l’archivage ?
La procédure prévoit une compression avec chiffrement → la confidentialité est assurée. En revanche, le transfert se fait sans vérification des sommes de contrôle (empreinte) → l’intégrité n’est PAS garantie : rien ne permet de détecter une altération des journaux pendant l’archivage. Il faudrait ajouter un condensat (hachage) vérifié à réception.
Vue v_liste_comptes
On réunit les comptes des différentes bases avec leur origine, en mettant NULL pour les champs absents :
CREATE VIEW v_liste_comptes AS
SELECT 'Personnel' AS origine, nom, prenom, compte_login, roles
FROM Personnel.utilisateur
UNION ALL
SELECT 'Logistique' AS origine, nom, prenom, compte_login, roles
FROM Logistique.utilisateur
UNION ALL
SELECT 'Formation' AS origine, nom, prenom, login AS compte_login, NULL AS roles
FROM Formation.utilisateur;Modélisation de BdInventaire
: prévoir une table Compte (origine, nom, prénom, login, application) et une table Role reliée aux comptes (un identifiant par rôle propre à une application), via une table d’association Compte–Role.
a) Créer le compte applicatif :
CREATE USER 'prep_sso'@'localhost' IDENTIFIED BY '<mot_de_passe_fort>';b) Droits strictement nécessaires au programme (lecture de la vue + écriture dans l’inventaire) — moindre privilège :
GRANT SELECT ON BdInventaire.v_liste_comptes TO 'prep_sso'@'localhost';
GRANT INSERT ON BdInventaire.* TO 'prep_sso'@'localhost'; Dossier B — Mise en place du SSO 35 pts
a) L’agent qui a divulgué ses identifiants a violé la charte informatique (partage d’un accès personnel nominatif).
b) Le stagiaire est en faute : il s’est connecté à un système auquel il n’avait pas droit (accès non autorisé).
c) Risques : sanctions disciplinaires pour l’agent, et pour le stagiaire une responsabilité pénale possible (accès frauduleux à un système, art. 323-1 du Code pénal).
Condition pour que la charte s’impose
La charte informatique ne s’impose aux employés que si elle est annexée au règlement intérieur (procédure de dépôt/consultation respectée) et portée à leur connaissance (signée/communiquée).
Données sensibles de la base Medical
Les données de santé : aptitude médicale, antécédents/résultats d’examens, groupe sanguin/rhésus, etc. — catégories particulières au sens de l’article 9 du RGPD.
Scénario de risque justifiant le chiffrement (accès applicatifs sécurisés)
Même si les accès par l’application sont sécurisés, un acteur disposant d’un accès direct à la base (administrateur de base de données, prestataire) ou le vol d’une sauvegarde permettrait de lire les données en clair. Le chiffrement des colonnes (clé hors base) protège contre cet accès direct.
Tester le chiffrement (table PatientAnonyme, champ rhesus)
-- Accès direct : la donnée apparaît chiffrée (illisible)
SELECT rhesus FROM PatientAnonyme;
-- Accès via la vue (utilisateur habilité, certificat) : donnée déchiffrée
SELECT rhesus FROM v_PatientAnonyme; -- la vue déchiffre la colonneConséquences sécurité de l’API
: si les méthodes du contrôleur ne vérifient pas l’autorisation (ou construisent les requêtes par concaténation), l’API expose des accès non autorisés et des injections → atteinte à la confidentialité et à l’intégrité.
Modification du public concerné
: le problème vient de l’audience du jeton (le « public » pour lequel le JWT est émis) ou du public de la formation : il faut regénérer/adresser le jeton au bon destinataire pour que l’API l’accepte.
invalid_token après 15 minutes
Hypothèse la plus probable : le jeton JWT a expiré (sa durée de vie est dépassée pendant la pause). La vérification de signature/validité échoue → l’API renvoie invalid_token.
Méthode getToken() (rafraîchissement)
Sans paramètre, elle utilise le jeton de rafraîchissement (refresh token) courant pour demander un nouveau jeton d’accès au serveur SSO et le retourne :
getToken() :
réponse = appel SSO (/token) avec le refresh_token courant
nouveauJeton = réponse.access_token
mettre à jour le jeton stocké
retourner nouveauJetona) Avec le SSO, un seul compte compromis donne accès à TOUTES les applications → la gravité augmente (le risque passe à un niveau supérieur sur la matrice).
b) Amélioration : ajouter une authentification multifacteur (MFA) → réduit la vraisemblance qu’un compte usurpé soit exploité, ramenant le risque à un niveau acceptable.
Dossier C — Application mobile Rescousse 25 pts
Mot de passe 8 caractères vs code PIN 4 chiffres
Le mot de passe de 8 caractères est plus protecteur contre les attaques par force brute : son espace de combinaisons est bien plus grand (lettres + chiffres + spéciaux sur 8 positions) qu’un PIN à 4 chiffres (10 000 combinaisons seulement).
Reconnaissance faciale vs mot de passe (point de vue juridique)
La reconnaissance faciale repose sur une donnée biométrique, qui est une donnée personnelle sensible au sens du RGPD (article 9). Son traitement est strictement encadré : il nécessite une base légale (souvent le consentement), une analyse d’impact (AIPD), et ne peut pas être imposé (une alternative — mot de passe — doit rester disponible), contrairement à un mot de passe.
Méthode ajouterEntreeLog (SQLite)
Elle insère une entrée de journal (date/heure, utilisateur, action) dans la base SQLite via une requête paramétrée :
public void ajouterEntreeLog(EntreeLog uneEntree) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues valeurs = new ContentValues();
valeurs.put("dateHeure", uneEntree.getDateHeure());
valeurs.put("utilisateur", uneEntree.getUtilisateur());
valeurs.put("action", uneEntree.getAction());
db.insert("Log", null, valeurs); // insertion paramétrée
db.close();
} Points de barème (rappel)
| Dossier | Attendu | Points |
|---|---|---|
| A | Traçabilité/archivage (intégrité non garantie), vue d’inventaire, compte moindre privilège | 20 |
| B | Charte/infractions, données de santé, chiffrement colonnes, JWT (expiration, refresh), SSO et risque | 35 |
| C | Mot de passe vs PIN, biométrie/RGPD, journalisation SQLite | 25 |
| Total | 80 |