Conception d'un système d'authentification par mot de passe en VHDL : Guide d'implémentation FPGA
Le VHDL est un langage de description matériel, donc vous n'« écrivez pas un mot de passe » dedans — vous concevez un circuit numérique qui vérifie un mot de passe. Cela implique généralement une machine à états finis (FSM) comparant une entrée série ou parallèle à une valeur stockée.
Vue d'ensemble de l'architecture
- Stockage du mot de passe :
constantcodé en dur (mots de passe fixes), ROM/RAM bloc (modifiables sur site), ou Registres avec interface de chargement de clé. - Interface d'entrée : Scanner clavier matriciel (anti-rebond), UART/USB pour entrée série, ou SPI/I2C depuis un élément sécurisé.
- Logique de comparaison : Test d'égalité combinatoire (pour parallèle) ou FSM bit-à-bit séquentielle (pour entrée série).
- Sortie/Action : Drapeau
valid_password, signal de déverrouillage, déclenchement alarme, ou écriture journal d'audit.
Exemple VHDL simplifié (clavier parallèle 4 bits)
library ieee; use ieee.std_logic_1164.all; entity password_checker is port ( clk : in std_logic; rst_n : in std_logic; key_input : in std_logic_vector(3 downto 0); -- code clavier 4 bits key_valid : in std_logic; -- strobe quand touche stable unlock : out std_logic ); end entity; architecture rtl of password_checker is constant CORRECT_PASS : std_logic_vector(3 downto 0) := "0101"; -- '5' begin process(clk, rst_n) begin if rst_n = '0' then unlock <= '0'; elsif rising_edge(clk) then if key_valid = '1' then unlock <= '1' when key_input = CORRECT_PASS else '0'; end if; end if; end process; end architecture;
Considérations avancées
- Sécurité : Les netlists VHDL peuvent être rétro-ingénierées. Pour haute sécurité, stocker un hash salé (ex. SHA-256) en ROM et implémenter le hash en matériel, comparer les empreintes au lieu du clair.
- Protection force brute : Compteurs de tentatives, temporisations de verrouillage, backoff exponentiel dans la FSM.
- Résistance canaux auxiliaires : Logique de comparaison à temps constant pour éviter fuites temporelles/énergétiques.
- Support multi-utilisateur/rôles : Table de correspondance (RAM) indexant noms d'utilisateur vers hachages de mots de passe et niveaux de privilèges.
Prochaines étapes
Simuler avec ModelSim/Questa, synthétiser pour votre FPGA cible (Xilinx Vivado, Intel Quartus, Lattice Radiant), vérifier la fermeture des temps. Pour la production, envisager un MCU sécurisé dédié ou stockage de clé basé PUF au lieu de pure logique FPGA.
