Contexte et évolution des protocoles Tapo
Depuis 2023, les appareils TP‑Link Tapo ont connu deux changements majeurs de protocole. Le firmware 1.3.x a remplacé le protocole propriétaire AES par KLAP, un échange de hachages qui garde le mot de passe hors du fil mais permet à un attaquant d’intercepter un login et de lancer des attaques hors‑ligne. En 2025, le firmware 1.4.0 a introduit TPAP, un nouveau mécanisme d’authentification, tout en ajoutant le commutateur « Third‑Party Compatibility » dans l’application Tapo. Ce commutateur, désactivé par défaut, décide si l’appareil accepte le protocole KLAP (commutateur activé) ou le nouveau TPAP (commutateur désactivé). Les caméras, quant à elles, conservent le protocole AES sur SSL et ne sont pas affectées par le commutateur.
Ajout du support TPAP dans tapo 0.11.1
La bibliothèque open‑source tapo, écrite en Rust avec un wrapper Python, a publié trois versions en moins d’une semaine : v0.10.0 (28 septembre), v0.11.0 (2 octobre) et v0.11.1 (4 octobre). La version 0.11.1 introduit la prise en charge native de TPAP, ce qui permet aux clients tiers de communiquer avec les prises, ampoules, barres d’alimentation et hubs même lorsque le commutateur est désactivé. Le code détecte automatiquement le protocole supporté par l’appareil : il tente d’abord TPAP, puis, si le dispositif ne le supporte pas (par exemple certains modèles de caméras), il bascule sur AES SSL. Aucun changement d’API n’est requis ; les appels existants continuent de fonctionner.
Parallèlement, v0.11.0 a supprimé le support du protocole AES obsolète pour les prises et ampoules, car aucune version de firmware ne l’implémente depuis longtemps. Le support AES SSL reste uniquement pour les caméras et leurs hubs, qui utilisent toujours ce protocole.
Analyse de la sécurité de TPAP vs KLAP
TPAP repose sur SPAKE2+ (RFC 9383), un échange de clé authentifié par mot de passe. Contrairement à KLAP, aucune donnée capturée ne permet de vérifier un mot de passe hors‑ligne : chaque tentative doit être testée directement sur l’appareil. Cette contrainte rend les attaques par dictionnaire beaucoup moins efficaces, d’autant que le firmware impose un verrouillage après plusieurs échecs, signalé par l’erreur TPAP_AUTH_ATTEMPTS_LIMIT. En cas d’erreur de mot de passe, la bibliothèque renvoie TPAP_CREDENTIALS, ce qui permet à l’application appelante d’arrêter immédiatement les nouvelles tentatives.
Le passage à SPAKE2+ élimine le problème de « replay » présent avec KLAP, où un enregistrement de session pouvait être réutilisé pour décrypter le trafic ultérieur. De plus, les clés de session sont dérivées à chaque connexion, limitant la surface d’exposition en cas de compromission d’une clé unique.
Limitations et compatibilité actuelle
Le support TPAP n’est pas encore disponible pour tous les modèles. Les hubs H200 (firmware 1.7.5) et certaines caméras (C210 firmware 1.5.2) continuent d’utiliser AES SSL et refusent TPAP lorsque le commutateur est désactivé. Le développeur indique que ces appareils seront pris en charge dans de futures versions, mais aucune date n’est fournie. Enfin, le commutateur « Third‑Party Compatibility » reste un point de friction : bien qu’il puisse être laissé désactivé grâce à TPAP, il constitue une rétrogradation de sécurité lorsqu’il est activé, car il réactive le protocole KLAP, moins résistant aux attaques passives.