Vulnérabilités & obsolescence des claviers d’accès de type Digicode : Utilisons les séquences de De Bruijn
Introduction
Depuis plus de quarante ans, les claviers à code, souvent appelés « Digicodes », protègent l’accès à des immeubles, locaux techniques, entreprises, écoles ou résidences privées.
Le principe paraît simple :
- un utilisateur connaît un code ;
- il saisit ce code ;
- la porte s’ouvre.
Cette simplicité a longtemps été considérée comme une force. Pourtant, de nombreux systèmes installés aujourd’hui reposent sur des technologies conçues dans les années 1980 ou 1990, à une époque où les méthodes d’attaque modernes n’existaient pas.
Avec le temps, certains équipements deviennent obsolètes :
- composants électroniques vieillissants ;
- absence de journalisation ;
- impossibilité de détecter les tentatives d’attaque ;
- protection insuffisante contre les essais successifs de codes.
Parmi les techniques d’analyse utilisées par les chercheurs en sécurité figure un concept mathématique fascinant : les séquences de De Bruijn.
Pour comprendre pourquoi elles sont intéressantes, il faut d’abord comprendre comment fonctionne réellement un Digicode.
1. Comment fonctionne un Digicode ?
Le principe général
Un Digicode est un système de contrôle d’accès.
Il possède généralement :
- un clavier numérique ;
- une électronique de contrôle ;
- un mécanisme d’ouverture.
Lorsqu’un utilisateur saisit une suite de chiffres :
1234
le système vérifie :
Le code saisi est-il égal au code enregistré ?
Si oui :
OUVERTURE
Sinon :
REFUS
Exemple simple
Imaginons que le code soit :
2580
Les tentatives suivantes échouent :
2581 2582 2583
Mais :
2580
ouvre la porte.
2. Pourquoi ces systèmes vieillissent mal ?
Une sécurité conçue pour une autre époque
Lorsque beaucoup de Digicodes ont été conçus :
- Internet n’était pas omniprésent ;
- les microcontrôleurs étaient très limités ;
- les attaques automatisées étaient rares.
La philosophie était souvent :
« Personne ne passera des heures à essayer toutes les combinaisons. »
Aujourd’hui, cette hypothèse est fausse.
Absence de limitation des essais
De nombreux anciens modèles autorisent :
Code Code Code Code Code ...
sans limite.
On appelle cela une attaque par force brute.
Force brute
La force brute consiste à tester systématiquement toutes les possibilités.
Pour un code à 4 chiffres :
0000 0001 0002 ... 9999
Il existe :
10 000 combinaisons
au total.
Un humain mettrait longtemps.
Une machine beaucoup moins.
3. Le problème caché des claviers
Supposons un Digicode à 4 chiffres.
Les touches sont :
0 1 2 3 4 5 6 7 8 9
Une attaque naïve consisterait à taper :
0000 0001 0002 ... 9999
Cela représente :
40 000 frappes
car chaque code contient 4 chiffres.
C’est énorme.
Des mathématiciens se sont alors posé une question :
Peut-on tester toutes les combinaisons possibles en tapant moins de touches ?
La réponse est oui.
4. Les séquences de De Bruijn
Qui est De Bruijn ?
Nicolaas Govert de Bruijn était un mathématicien néerlandais.
Il a étudié un objet mathématique particulier :
les séquences contenant toutes les combinaisons possibles d’un alphabet donné.
Exemple simplifié
Imaginons un clavier contenant uniquement :
0 1
et des codes de longueur :
3
Les combinaisons possibles sont :
000 001 010 011 100 101 110 111
Il y en a :
2³ = 8
Une séquence de De Bruijn permet de contenir toutes ces combinaisons dans une seule chaîne minimale :
00010111
En regardant chaque groupe de 3 caractères successifs :
000 001 010 101 011 111 110 100
Toutes les combinaisons apparaissent.
Aucune répétition inutile.
5. Pourquoi est-ce intéressant pour un attaquant ?
Imaginons un Digicode vulnérable.
Certains modèles ne nécessitent pas de valider avec une touche « Entrée ».
Ils analysent en permanence les dernières touches saisies.
Par exemple :
1 2 3 4 5 6
Le système regarde :
1234 2345 3456
en permanence.
Dans ce cas, une séquence de De Bruijn permet de faire apparaître :
TOUS les codes possibles
sans jamais recommencer depuis le début.
Gain énorme
Pour un code à 4 chiffres :
Nombre de codes :
10⁴ = 10 000
Force brute classique :
40 000 frappes
De Bruijn :
10 003 frappes
environ.
Le gain est considérable.
6. Illustration visuelle
Force brute classique :
0000 0001 0002 0003 ...
Chaque nouveau code recommence presque entièrement.
Séquence optimisée :
00001000200030004...
Chaque chiffre sert à plusieurs combinaisons.
Le système « glisse » d’une combinaison à l’autre.
7. Pourquoi cela fonctionne ?
Le secret se trouve dans le chevauchement.
Prenons :
1234
et :
2345
Les chiffres :
234
sont déjà présents.
Il suffit d’ajouter :
5
pour obtenir le nouveau code.
Les séquences de De Bruijn exploitent ce principe de façon parfaite.
8. Tous les Digicodes sont-ils vulnérables ?
Non.
Les modèles modernes disposent souvent de protections.
Verrouillage temporaire
Après plusieurs erreurs :
3 essais
ou :
5 essais
le système se bloque.
Exemple :
Tentative 1 Tentative 2 Tentative 3
Puis :
Blocage 30 secondes
Journalisation
Les équipements récents enregistrent :
- date ;
- heure ;
- utilisateur ;
- erreurs.
Une attaque devient visible.
Supervision
Les systèmes modernes sont reliés à :
- un serveur ;
- un contrôleur ;
- un SOC (Security Operations Center).
Les comportements anormaux sont détectés.
9. L’usure physique : une autre faiblesse
Un Digicode ancien révèle parfois son code.
Certaines touches deviennent :
- plus brillantes ;
- plus usées ;
- plus enfoncées.
Par exemple :
1 3 7 9
sont fortement usées.
Un attaquant peut déduire :
Le code utilise probablement ces chiffres.
La difficulté chute brutalement.
10. Cas réel : immeubles résidentiels
De nombreux immeubles possèdent encore :
- Digicode autonome ;
- aucun verrouillage ;
- aucun historique ;
- code partagé par tous les résidents.
Conséquence :
une personne connaissant les techniques de recherche optimisée peut réduire considérablement le temps nécessaire pour découvrir un code faible ou mal géré.
11. Comment se protéger ?
Remplacer les anciens systèmes
Le premier réflexe consiste à identifier :
- l’âge du matériel ;
- le modèle ;
- le niveau de maintenance.
Un Digicode de 25 ans représente souvent un risque.
Activer les limitations
Toujours privilégier :
- limitation des essais ;
- temporisation ;
- alarme.
Ajouter une seconde authentification
Exemples :
- badge RFID ;
- smartphone ;
- biométrie ;
- code + badge.
On parle alors de :
« authentification multifactorielle ».
Changer régulièrement les codes
Un code utilisé depuis dix ans :
2580
finira souvent par être connu.
La rotation régulière est essentielle.
12. Ce qu’il faut retenir
Les Digicodes paraissent simples mais cachent de nombreuses problématiques de sécurité.
Les séquences de De Bruijn constituent un outil mathématique remarquable permettant de générer toutes les combinaisons possibles avec un minimum de frappes.
Dans le cadre de la recherche en sécurité, elles démontrent qu’un système autorisant des essais illimités peut devenir vulnérable bien plus rapidement qu’on ne l’imagine.
Le véritable problème n’est pas la séquence de De Bruijn elle-même.
Le problème est l’obsolescence du système :
- absence de limitation ;
- absence de supervision ;
- absence de journalisation ;
- conception héritée d’une époque où les attaques automatisées étaient rares.
Un Digicode moderne doit être considéré comme un composant parmi d’autres dans une stratégie globale de contrôle d’accès, et non comme une protection suffisante à lui seul.