Pilier 02

IA &
Cybersécurité

Faire voir une machine, c'est lui donner ce que personne ne lui a confié.

Pourquoi

Un système qui lit des plaques d'immatriculation collecte des données personnelles, qu'on le veuille ou non. Je travaille exactement sur cette frontière : ce que la machine peut extraire, et ce qu'on a le droit d'en faire.


Projet phare

Reconnaissance de plaques

Détecter, extraire, puis protéger.

PythonOpenCV MySQLChiffrementRGPD

Détection et lecture automatique de plaques en conditions réelles — éclairage variable, angles obliques, occultations. Projet en binôme avec Mohamed Mehiaoui.

  • 88,3 % de précision
  • 42 ms par image
  • IoU 0,79
  • mAP@0.5 0,83
L'étude de cas

La chaîne

  • Niveaux de gris, CLAHE, filtre bilatéral
  • Contours de Canny, filtrage par ratio
  • Extraction de la région d'intérêt
  • Seuillage adaptatif, OCR Tesseract
  • Validation du format par expression régulière

Le volet RGPD

Une plaque est une donnée personnelle. Chiffrement Fernet avant insertion en base, accès restreint, conservation limitée dans le temps.

Ce que je referais

Une détection par modèle entraîné, avec l'heuristique conservée en repli : un modèle se trompe en silence, une heuristique échoue visiblement.

Ma part

Chaîne de traitement d'image, post-traitement OCR, chiffrement et persistance. OpenCV 4.8, Tesseract 5.3, confiance OCR mesurée entre 91 et 94 %.

Pipeline de traitement de la reconnaissance de plaques : entrée, prétraitement, détection, segmentation, OCR, résultat chiffré
Schéma de la chaîne de traitement — les six étapes, le code Python et la sortie console avec les mesures de performance.
Essayer l'anonymiseur Code disponible sur demande

Audit

Sécuriser une application héritée

Reprendre du code qu'on n'a pas écrit, et le rendre défendable.

PHP / PDOInjection SQL SessionsDocker Rapport en anglaisÉquipe

Audit puis correction d'une application web existante — projet d'équipe, rapport technique rédigé en anglais.

Ce qu'on a trouvé, ce qu'on a corrigé

Les failles identifiées

  • Injections SQL sur les entrées non filtrées
  • Défauts de gestion de session
  • Messages d'erreur exposant l'infrastructure

Les corrections

  • Réécriture complète de la couche d'accès aux données en PDO, requêtes préparées
  • Reprise de la gestion de session
  • Suppression des messages d'erreur verbeux en production
  • Dockerisation, pour rendre la correction vérifiable par un tiers

Pourquoi la dockerisation compte

Un correctif qu'on ne peut pas rejouer n'est pas un correctif, c'est une affirmation. En livrant l'environnement avec le code, n'importe qui peut constater l'avant et l'après.

Le rapport

Rédigé en anglais, il décrit chaque vulnérabilité, son exploitation et son correctif.
Lire le rapport (PDF)

Comparaison du code avant et après l'audit : requête concaténée puis requête préparée PDO, session régénérée, erreurs journalisées
Avant / après — les trois vulnérabilités et leurs correctifs, sur le même fichier. Schéma reconstitué à partir du code audité.

Cryptographie

Casser RSA par l'attaque de Wiener

Quand l'exposant privé est trop petit, la clé se retrouve toute seule.

Développement en fraction continue de c/n
Développement en fraction continue — c/n = 734789 / 1226923.
Script Python calculant les convergents et retrouvant la clé privée
Le script — les convergents, puis la clé privée retrouvée automatiquement.
Le principe

L'attaque exploite une faiblesse de paramétrage, pas une faiblesse de RSA lui-même : si l'exposant privé est petit devant le module, il apparaît parmi les convergents du développement en fraction continue de e/n. On les teste un à un jusqu'à retrouver la factorisation. C'est le meilleur rappel que la cryptographie ne se casse presque jamais par les mathématiques — elle se casse par la mise en œuvre.

Sécurité applicative

Ce que je cherche dans du code

Je connais ces failles parce que j'ai eu l'occasion de les écrire.

Injection

La plus ancienne, toujours la plus rencontrée.

Authentification

Jetons sans expiration, algorithme laissé au client.

Contrôle d'accès

Masquer un bouton ne protège rien. La route doit refuser.

Cryptographie

Chiffrement au repos, hachage salé, clés hors du dépôt.

Configuration

En-têtes absents, erreurs bavardes, secrets versionnés.

Données personnelles

Le RGPD comme contrainte d'architecture, pas comme case à cocher.

Un modèle a toujours tort une partie du temps.

Sur « Défiez-moi », un système de reconnaissance d'images, la vraie question n'était pas d'afficher une prédiction — c'était de rendre l'erreur utilisable.

Le détail qui compte

Le retour utilisateur propose trois réponses, pas deux : « bravo », « non, c'est l'autre », et « ni l'un ni l'autre ». Sans cette troisième option, on force l'utilisateur à choisir entre deux réponses fausses — et on empoisonne les données qui serviront au réentraînement.

Chaque prédiction est archivée avec sa date, son retour et ses images. L'utilisateur peut auditer le système au lieu de le subir. C'est ma définition d'une IA acceptable.

Voir la maquette complète

La plupart des brèches sont une erreur de configuration.

Pas une technique inédite. C'est ce que je cherche en veille : la cause racine, pas le titre.

Données & analyse

Extraire du sens d'un jeu de données réel

Le travail se situe avant le graphique.

Catalogue Netflix

Power BI · SQL · nettoyage de données

Power BI — catalogue Netflix
Tableau de bord Power BI du catalogue Netflix : titres par année, genres, classifications, répartition par pays
Tableau de bord interactif — répartition par année, par genre, par classification et par pays.
  • 8 803 titres
  • 515 genres
  • 4 527 réalisateurs
  • 1925 → 2021

Nettoyage des valeurs manquantes et aberrantes, restructuration, jointures, puis visualisations croisées. Le vrai travail est en amont : comprendre pourquoi une colonne contient trois formats de date différents, et décider quoi faire des lignes qu'on ne peut pas sauver.

J'ai mené la même démarche sur un jeu de données de transactions immobilières.