Les Digicodes : Les séquences de De Bruijn

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.