La sécurité des transactions est plus cruciale que jamais dans cette industrie de niche en rapide croissance : crypto. En raison de l'usage croissant de la blockchain, le nombre de façons dont les pirates peuvent exploiter les faiblesses augmente. L'attaque par rejeu est l'une des menaces graves et mal comprises.
Qu'est-ce qu'une attaque de rejeu ?
Une attaque par rejeu se produit lorsqu'un attaquant réémet une transaction légitime afin de tromper le système. L'attaquant ne modifie pas la signature, mais l'utilise ailleurs. Cela peut entraîner la répétition de la même transaction, ce qui représente une menace pour l'utilisateur.
Étant donné que la signature reste identique, il est possible que la blockchain accepte le message redondant. Dans les cas où les blockchains ou les applications ne sont pas vérifiées, l'attaquant exploite la relecture. Cela peut être particulièrement dangereux dans les forks ou entre ces chaînes de blockchain.
Quand se produisent les attaques par rejeu ?
Les attaques par rejeu peuvent se produire fréquemment lorsqu'une blockchain est divisée ou lorsque deux chaînes sont du même format. Une transaction signée peut être utilisée sur les deux chaînes sans protection suffisante. Cela signifie que les fonds peuvent être envoyés sur une chaîne et en même temps sur une autre.
L'absence de limites claires entre les blockchains dans les systèmes offre une opportunité aux pirates. Ils ciblent également les applications qui présentent une validation des messages faible. Dans les deux cas, l'attaquant cherche à gagner de l'argent en répétant des activités qui semblent valides.
Un tel exemple est le cas d'Ethereum et Ethereum classic en 2016. Les attaquants ont répété des transactions sur les deux réseaux, car ils n'avaient aucune protection initiale. En conséquence, les utilisateurs ont involontairement dépensé de l'argent en effectuant des transactions deux fois.
Comment les wallets empêchent les attaques par rejeu
Les portefeuilles crypto disposent d'outils de sécurité robustes mis en œuvre avant toute attaque de rejeu. L'un d'entre eux est un ID de chaîne associé à chaque message signé. Cela garantit que la signature ne peut être valide que sur une seule blockchain et échoue sur les autres.
L'autre outil important est appelé le nonce, et est un nombre incrémenté à chaque transaction. Le wallet rejette la transaction si le nonce est réutilisé. Cela garantit que les pirates ne pourront pas répéter le même message ou paiement.
Des limites de temps sont également utilisées dans certains wallets pour recevoir un paiement. Par exemple, un message peut durer jusqu'à cinq minutes. La signature devient alors inutilisable, et la relecture n'est plus possible.
Défenses au niveau du contrat intelligent et de l'application
Bien que les wallets soient fonctionnels, les contrats intelligents et les applications doivent également se sécuriser. La plupart des contrats comportent un nonce/utilisateur, un compteur nonce pour empêcher la duplication des actions. Cela permet au contrat de récuser toute signature qu'il a observée.
Les applications qui facilitent la signature hors chaîne suivent probablement la norme EIP-712. Ce format inclut l'ID de chaîne, le nom de l'application et du contrat. En utilisant cette norme, les applications lient chaque message à son objectif prévu et évitent les rejeux.
Selon QuillAudits, une entreprise de sécurité blockchain, les applications ne doivent pas omettre la séparation de domaine dans les approbations hors chaîne. L'absence du bon contexte permettra aux attaquants d'abuser de l'interopérabilité. Cela illustre pourquoi les audits sont essentiels pour sécuriser les systèmes Web3.
Composants clés
La protection contre les rejeux repose sur des outils distincts et explicites pour garantir le bon contexte. Ces outils sont les identifiants de chaîne, les nonces de compte et le délai d'expiration. La combinaison de ces éléments complique considérablement les tentatives de rejeu par les attaquants.
Les éléments les plus importants sont :
- ID de chaîne – La transaction est valide sur une seule blockchain et rejetée par les autres blockchains.
- Nonce – Il s'agit d'un nombre utilisé pour garantir qu'un message signé ne soit pas réutilisé plusieurs fois.
- Horodatage ou limites de temps – Cela ajoutera une fenêtre temporelle pendant laquelle un message rejoué sera refusé après l'écoulement du temps.
- Séparateur de domaine – Délimitez les messages hors chaîne de Tether à une application, un contrat et une chaîne spécifique via les normes EIP-712.
- Suivi du nonce du contrat intelligent – permet aux applications et contrats de bloquer les messages utilisés ou dupliqués au niveau du contrat.
Une combinaison de ces outils empêche la majorité des menaces de relecture. Toutes ces techniques sont utilisées par les wallets, les applications et les protocoles pour se protéger contre la duplication des messages. Le résultat est une expérience plus sûre pour les développeurs et les utilisateurs.
Pourquoi la protection de répétition est importante pour les utilisateurs
La protection contre les rejeux est ce qui rassure les utilisateurs lorsqu'ils utilisent des wallets, des ponts et des plateformes d'échange. En son absence, les utilisateurs ne savent pas qu'ils ont perdu de l'argent. Les systèmes deviennent plus sûrs et plus fiables en refusant d'effectuer des transactions répétées ou abusées.
Les portefeuilles de nom de chaîne-ID-prompt permettent aux utilisateurs d'éviter les erreurs. Lorsque les utilisateurs comprennent clairement où leur transaction est dirigée, ils sont en mesure de prendre le contrôle. Cela réduit également la confusion lors de la transition entre chaînes ou applications.
La protection de répétition est également utilisée pour effectuer des retraits et des dépôts en toute sécurité par les plateformes d'échange et les custodians. Ils développent généralement des outils personnalisés qui autorisent uniquement les transactions sur le réseau approprié. Cela garantit la sécurité des clients et la stabilité des opérations en cas de fork ou de mise à jour.
Conclusion
Les attaques par rejeu constituent une menace pour la sécurité de la blockchain en exploitant des signatures réutilisées sur une ou plusieurs chaînes ou systèmes. Toutefois, l'utilisation d'un ID de chaîne, de nonces et de contraintes temporelles permet aux wallets de contribuer de manière significative à leur prévention. Les applications et les contrats intelligents doivent également y contribuer en surveillant leur utilisation et leurs signatures.
Les systèmes doivent collaborer et être conscients les uns des autres, car c'est la seule manière dont ils peuvent offrir la meilleure protection. Les utilisateurs réduisent le risque de replay en utilisant des wallets de confiance, des dApps vérifiées et des contrats intelligents audités. L'écosystème blockchain s'étend, et les efforts pour assurer sa sécurité doivent être intensifiés.

