Clé d'accès pour PC par carte à puce

Fini les hackers de bios et les mots de passe oubliés ! Voici une solution pour protéger votre PC contre les visites indésirables. La clé, que nous décrivons dans cet article, interdit l’utilisation de votre ordinateur grâce à un lecteur de carte commandant l’électronique de votre machine. Seul le ou les possesseurs de cartes reconnues par le lecteur pourront avoir accès à vos données.



Soustraire le contenu de son ordinateur aux regards indésirables durant son absence semblerait être un des principaux soucis de tous ceux qui l’utilisent dans un endroit public, comme le bureau, par exemple.
Si vous êtes dans ce cas, la seule solution vraiment fiable consiste à installer directement sur votre ordinateur, une clé physique (on dira « hard », à l’instar d’une clé logicielle que l’on dira « soft »), capable d’assurer une protection totale de vos données.
Vous avez, bien sûr, la possibilité d’enfermer votre PC dans un placard! Plus sérieusement, un système à carte, commandant l’électronique de l’ordinateur, vous assurera un bon niveau de sécurité tout en restant simple de mise en œuvre et d’utilisation.

Je me protège, tu te protèges, ...
Comme nous l’avons vu dans un précédent article, les cartes magnétiques peuvent être mises à toutes les sauces ! On pourrait envisager la protection de notre ordinateur de cette façon. Ici, pour une question de simplicité et d’encombrement, c’est une carte à puce que nous utilisons. Allez vous racheter un porte-cartes plus grand, nous avons encore d’autres projets dans nos cartons! La plupart des systèmes d’exploitation offrent la possibilité de protéger la confidentialité de son ordinateur à l’aide d’un mot de passe (Password). Ce mot clé est introduit, par l’utilisateur, dans le logiciel de l’ordinateur qui le mémorisera.
Ensuite, à chaque démarrage, l’ordinateur réclamera le mot de passe après les phases de test effectuées par le BIOS (programme de base de l’EEPROM). Hélas, et justement, le mot de passe est une protection « soft ». Ceci veut dire que n’importe quel petit malin un peu doué pourra, en fouillant bien, trouver la clé, (certaines revues spécialisées donnent tout ce qu’il faut pour ce faire), et « craker » votre protection. Ne parlons pas des utilisateurs qui écrivent leur mot de passe sur un « post-it » collé à l’écran (si, si…), ni de ceux qui l’ont changé la veille au soir et qui, le lendemain matin, ne s’en souviennent plus !

Le fonctionnement du système de protection
Le dispositif de protection que nous vous proposons dans cet article agit sur la partie « hardware » (matérielle) de notre ordinateur. Le circuit imprimé portant le lecteur de carte à puce est fixé au dos d’un des caches en plastique inutilisés de la face avant de l’appareil.
Dans ce cache, nous réaliserons une fente pour le passage de la carte.
La sortie de notre circuit électronique provoque l’initialisation permanente de l’ordinateur, rendant ainsi toute utilisation frauduleuse impossible. La clé de mise hors circuit du système de commande d’initialisation permanente est une carte à puce ressemblant aux très communes cartes bancaires. Le lecteur de carte utilisé dans notre projet est le SLE4404 de chez Siemens.
Donnons maintenant un coup d’oeil au circuit de ce système de sécurité afin de mieux comprendre son principe de fonctionnement.
Comme nous venons de le dire, l’électronique de notre montage maintient en contact permanent le circuit d’initialisation de l’ordinateur qui empêche, à son tour, le démarrage du processeur.
La carte, avec son microcircuit, interrompt ce blocage et permet le fonctionnement normal de l’ordinateur jusqu’au démarrage suivant. En pratique, la carte ne doit être insérée dans son lecteur que le temps nécessaire à l’ordinateur pour démarrer. Une fois que le processeur est en fonctionnement, elle peut (doit) être retirée sans conséquences.

Description du schéma de la clé
Examinons la logique du schéma électrique donné en figure 1.
Comme vous pouvez facilement vous en apercevoir en regardant ce schéma, le cœur de notre système de protection est un microcontrôleur PIC16C56 (U3), programmé pour dialoguer avec le lecteur de carte via un connecteur dédié sur le circuit. L’intégré U3 est capable de lire le code de la carte et de le comparer avec tous les codes pré-enregistrés en mémoire. Si le microcontrôleur trouve une correspondance entre ces codes, le circuit d’initialisation de l’ordinateur est automatiquement libéré.

Figure 1 : Schéma électrique de la clé pour ordinateur.

Analyse de l’organigramme du programme MF 102
Faisons une analyse du schéma synoptique (figure 2) du programme (MF102), inclus dans le circuit intégré U3, afin de mieux comprendre la gestion des données à l’intérieur du microcontrôleur.
Ensuite, sur la base de ces informations, nous pourrons examiner ce qui se passe sur le circuit électrique.
A la mise sous tension du système, le microcontrôleur, initialisé par le circuit réalisé entre R2 et C2, programme ses propres I/O (entrées/sorties). Les broches 1 et 18 sont utilisées comme entrées tandis que les broches 2, 9, 10, 11, 12 et 17 fonctionnent en sorties.
La broche 8 est bidirectionnelle car elle à la charge de l’échange des données avec la clé.
Une fois toutes les fonctions attribuées, le microcontrôleur met sa broche 2 à l’état logique 1 et alimente le transistor T1 qui relie la ligne d’initialisation (RESET) de l’ordinateur à la masse.
Cette condition reste inchangée jusqu’à la désactivation provoquée par l’introduction de la carte dont l’éventuelle présence est constamment vérifiée par le lecteur. Si elle est absente, le programme est mis en attente tandis que si elle est insérée, le microcontrôleur vérifie l’état du cavalier DS1, donc le niveau logique de sa broche 1.

Figure 2 : Organigramme du programme inclus dans le microcontrôleur PIC16C56.

Les fonctions de DS1
Quand DS1 est ouvert, le programme suit son déroulement normal, c’est-à-dire qu’il lit le code mémorisé dans l’EEPROM 1 du microcircuit de la carte.
Il faut préciser que, au moment de l’achat, la carte ne possède aucun code tandis que le PIC16C56, lui, est fourni déjà programmé et contient en mémoire un nombre de 12 bits, non modifiable, qui représente le code clé unique pour chaque microcontrôleur.
Quand DS1 est fermé, l’intégré U3 démarre la sous-routine de programmation de l’EEPROM 1 de la carte.
Après l’installation de la clé dans l’ordinateur, cette opération devra être effectuée pour chaque carte clé. En pratique, le microcontrôleur lit son propre code à l’intérieur de la PROM et l’envoie, via la broche 8, vers la carte où il est mémorisé dans l’EEPROM 1.
Une fois cette opération terminée, la LED verte LD1 s’allume et fait basculer la broche 17 à l’état logique 0 pour confirmer la fin de l’enregistrement de la carte.
A l’ouverture du cavalier DS1, la broche 2 de U3 repasse au niveau logique 0.
De ce fait, le transistor T1 n’étant plus excité il autorise le déblocage de la ligne d’initialisation ce qui permet le démarrage de l’ordinateur.

Fonctionnement normal du circuit
Revenons un instant sur le fonctionnement normal de notre circuit, c’est-à-dire lorsque, au démarrage, le microcontrôleur trouve le cavalier DS1 ouvert : U3 lit le contenu de la mémoire EEPROM 1 de la carte et, via la broche 8, importe les données sur 12 bits présentes dans la première partie de cette mémoire. Ensuite, le microprocesseur compare ces données avec celles incluses dans la PROM et, si elles sont identiques, il déverrouille l’ordinateur en faisant passer sa broche 2 à l’état logique 0. Dans le cas contraire, rien ne se passe et le programme est prêt pour une nouvelle vérification en attendant qu’une carte avec le bon code soit insérée dans le lecteur.

Retour au schéma électrique
Arrivés à ce point, transférons les concepts que l’on vient d’acquérir sur le schéma électrique de notre appareil.
La tension de fonctionnement de 12 V est fournie directement par l’alimentation interne de l’ordinateur. Un fusible FUS assure une protection contre une éventuelle mauvaise installation du circuit.
Le microcontrôleur est alimenté par une tension de 5 V fournie par le circuit intégré régulateur U1.
Le lecteur, lui, fonctionne avec une tension de 12 V reliée à sa broche 2 (MEMORY CARD), tension fournie directement par l’ordinateur.
Lorsque la carte est insérée, une électrode présente sur cette dernière, provoque la fermeture des deux contacteurs à l’intérieur du lecteur. Les 12 volts arrivent alors sur la broche 1 du lecteur, alimentant ainsi le transistor T2 et le circuit intégré régulateur U2.
La broche 18 de U3 passe à l’état logique 1. Cette modification d’état est interprétée par le microcontrôleur comme une insertion de carte et provoque le déroulement des phases décrites précédemment. Le circuit intégré U2 est un 7805 encapsulé dans un boîtier TO-92. Il alimente le microcircuit de la carte via la broche 3 du lecteur et la résistance R11 (qui sert de protection contre un contact accidentel des +5 V avec d’autres pistes du micro-circuit).
Note : Remarquez que le strap 1 n’est pas utilisé dans notre application.
Les broches 5 à 10 du lecteur sont utilisées par le microcontrôleur pour gérer le microcircuit de la carte clé : la broche 5 est le « reset » RST (initialisation), la broche 7 est le « clock » CLK (horloge), la broche 8 est le canal bidirectionnel d’entrée/sortie des données, la broche 9 est le contact T, la broche 10 est le contact P. La broche 6 n’est pas utilisée dans notre application.
Le microcontrôleur fonctionne avec une horloge stable assurée par le quartz Q1 et par le circuit de compensation formé par C5 et C6. La sortie de contrôle de la ligne d’initialisation de l’ordinateur est la broche 2 tandis que la sortie pour la gestion de la signalisation lumineuse est la broche 17.

Figure 3 : Circuit imprimé de la clé à échelle 1.

Figure 4 : Plan d’implantation des composants.

Liste des composants
R1 : 470 Ω 1/4 W
R2 : 47 kΩ 1/4 W
R3 : 10 kΩ 1/4 W
R4 : 10 kΩ 1/4 W
R5 : 15 kΩ 1/4 W
R6 : 100 kΩ 1/4 W
R7 : 33 kΩ 1/4 W
R8 : 27 kΩ 1/4 W
R9 : 10 kΩ 1/4 W
R10 : 2,2 MΩ 1/4 W
R11 : 47 Ω 1/4 W
R12 : 1 kΩ 1/4 W
R13 : 100 kΩ 1/4 W
R14 : 1 kΩ 1/4 W
R15 : 1 kΩ 1/4 W
R16 : 1 kΩ 1/4 W
R17 : 1 kΩ 1/4 W
R18 : 10 kΩ 1/4 W
C1 : 100 μF 25 V électr.
C2 : 2,2 μF 100 V électr.
C3 : 220 nF multicouche
C4 : 220 μF 25 V électr.
C5 : 15 pF céram.
C6 : 15 pF céram.
D1 : 1N4148
D2 : 1N4002
T1 : BC547
T2 : BC547
U1 : 7805
U2 : 78L05
U3 : PIC16C56-HS (MF102)
Q1 : Quartz 8 MHz
LD1 : LED verte
RL1 : Relais en miniature 12 V, 1 position

Divers :
- Cavalier pour DS1
- Fusible
- Connecteur pour Memory Card (lecteur)
- Support 2 x 9 broches
- Circuit imprimé réf. H033


Figure 5 : Configuration des broches du PIC16C56-HS.

Figure 6 : Schéma de perçage du cache.

Vue de la platine montée sur le cache récupéré.

Montage du circuit de la clé
Sur le circuit imprimé (donné à l’échelle 1, figure 3), commencez par installer les résistances, les diodes, les condensateurs et le support pour le microcontrôleur.
Ensuite, montez les transistors T1 et T2 et les deux circuits intégrés régulateurs, en respectant bien leurs orientations. Insérez et soudez le cavalier DS1, le porte fusible pour circuit imprimé, le quartz 8 MHz, le lecteur (Memory Card) et le relais miniature.
Une fois toutes les soudures terminées, insérez, dans leurs supports respectifs, le fusible et le circuit intégré (U3), en faisant attention à positionner l’encoche-détrompeur comme illustré sur le schéma d’implantation des composants.
Le microcontrôleur PIC16C56 est fourni avec son programme MF102 embarqué.

Installation dans l’ordinateur
L’installation de la clé dans l’ordinateur doit s’effectuer machine éteinte, bien entendu ! Commencez donc par débrancher la prise d’alimentation 220V du secteur et ouvrez le boîtier de votre PC.
Déposez un des caches en plastique de la face avant sur lequel vous devez pratiquer, au centre, une fente de 60 mm de long sur 5 mm de large destiné à l’insertion de la carte clé (voir figure 6). De chaque côté de cette fente, à 39 mm du centre, percez deux trous de diamètre 3 mm. Sur la gauche du cache, à 55 mm du centre, pratiquez un trou de diamètre 5 mm destiné à recevoir la diode LED. A l’aide de deux équerres et de leurs vis, fixez le circuit au couvercle de façon à ce que la fente soit bien en ligne avec le lecteur de carte. L’entrée du lecteur faisant 55 mm il y a suffisamment de marge.
Remontez le cache sur la face avant de l’ordinateur. Sans rien connecter, alimentez et mettez sous tension le PC puis cherchez, à l’aide d’un multimètre, dans les toujours nombreuses prises disponibles dans la nappe alimentation de votre machine, une tension de 12 volts. Arrêtez l’ordinateur et débranchez-le à nouveau du secteur. Coupez les deux fils d’alimentation qui vous intéressent (un +12 V et un – 12 V) et connectez-les (en respectant les polarités) sur le bornier à 6 emplacements de notre circuit de clé.
Repérez les broches du bouton « reset » de l’ordinateur sur lesquels doivent être reliés, en parallèle, les contacts normalement ouverts du relais du circuit de protection (emplacements RESET sur le bornier).
En dernier lieu, reliez la LED également au bornier du circuit clé et vérifiez la fermeture du cavalier DS1.

Utilisation de la carte à microcircuit
La clé de notre dispositif de sécurité est une carte à microcircuit de type SLE4404 de chez Siemens. Il s’agit d’un circuit intégré 416 bits disposant d’une mémoire structurée en blocs auxquels on accède grâce à un ou plusieurs codes.
Dans notre cas, nous utilisons seulement la partie la plus simple du circuit, c’est-à-dire l’EEPROM 1.
En pratique, le code de déverrouillage est mémorisé sur les 12 premiers bits de l’EEPROM du SLE4404.
Dans le tableau de référence (tableau 1), nous voyons qu’il est possible d’écrire les données dans l’EEPROM 1 sans avoir besoin d’entrer de code d’accès. Par contre, un code est indispensable lorsqu’il s’agit de faire passer à l’état logique 1 tous les bits de la carte pour effacer son contenu.
Dans notre application, le contrôleur se limite à écrire et à lire son propre code.
En d’autres termes, une commande d’écriture en EEPROM 1 part vers le microcircuit de la carte sous forme de message série avec l’adresse hexadécimale 49. Les 12 bits identifiant le code, divisés en groupes de 4 bits, complètent l’instruction. Le message commence par STX (départ), suivi par 49H et par les trois valeurs hexadécimales formées chacune de 4 bits. Ces trois dernières informations représentent, dans l’ordre, les allocations de 84 à 87 (84 est le premier bit), celles de 88 à 91 et de 92 à 95 (95 est le dernier des 12 bits). Le message se termine par ETX (fin).
Dans la phase d’identification de la carte, le microcontrôleur interroge le microcircuit sur son contenu à travers une autre commande : STX, suivie par la valeur hexadécimale 4A et enfin par ETX.
La carte, de son côté, répond avec STX suivie par les trois groupes de 4 bits et l’ETX de fin message.
Le processus d’initialisation des données mémorisées sur l’EEPROM 1 de la carte est possible mais il n’est pas supporté par le programme dont nous disposons.

Tableau 1 : Structure de la mémoire EEPROM du Siemens SLE4404. Nous n’utilisons, dans notre application, que le bloc EEPROM-1.

Mise en oeuvre de la clé
Au démarrage de la machine, le relais de la carte clé colle. L’ordinateur voit alors son RESET à la masse et reste bloqué. En insérant une carte vierge à l’intérieur du lecteur, la sous-routine du programme MF102 copie le code sur l’EEPROM 1 de la carte. Maintenant, vous pouvez ouvrir le cavalier DS1 et, si tout a été correctement effectué, l’ordinateur démarrera sans aucun problème après avoir libéré le RESET !
Si vous avez des doutes sur votre montage (on en a toujours et si on n’en a pas, mieux vaudrait en avoir !), vous pouvez le tester sur votre table de montage.
Sur les sorties « – V + » du bornier, raccordez une alimentation 12 V (toujours en respectant les polarités), et sur les sorties RESET, connectez un multimètre, de préférence à aiguille, réglé en ohmmètre sur le calibre 100k½. Mettez sous tension et pratiquez comme expliqué plus avant.
Lorsque le multimètre indique une continuité, cela simule le blocage du RESET de l’ordinateur et vice-versa.
Entrez la carte une fois programmée et voyez le fonctionnement. Il faut, bien entendu, couper et remettre l’alimentation avant chaque introduction de la carte pour simuler l’extinction et la mise sous tension de l’ordinateur.

Aucun commentaire:

Enregistrer un commentaire