Aller au contenu

ASCII : American Standard Code for Information Interchange

Infrastructure

ASCII : American Standard Code for Information Interchange, code américain normalisé pour l'échange d'informations. « La table qui fait correspondre 128 nombres à des lettres, des chiffres, des signes et des caractères de commande », par analogie avec l'alphabet du morse, à ceci près qu'il a été conçu par des Américains qui ne voyaient pas l'utilité des accents, ce que la suite de l'informatique leur a amplement fait payer.

Contenu : Norme publiée en 1963, codée sur 7 bits : 128 valeurs, dont 95 caractères imprimables (lettres latines sans accent, chiffres, ponctuation, espace) et 33 caractères de commande, comme le retour chariot (13), le saut de ligne (10) ou le caractère nul (0). Les jeux plus larges, comme Latin-1 puis Unicode et son encodage UTF-8, reprennent ces 128 premières valeurs à l'identique.

Diagramme ASCII : Dessin réalisé uniquement avec ces caractères, courant dans la documentation technique pour représenter une pile mémoire ou un en-tête de paquet. C'est une illustration simplifiée, utile pour comprendre, trompeuse pour conclure : le compilateur, lui, ne lit pas les dessins.

Enjeux de sécurité : Les caractères de commande servent à de nombreuses injections : un retour chariot suivi d'un saut de ligne glissé dans une entrée peut fabriquer une fausse ligne de journal ou un faux en-tête HTTP, et un caractère nul peut tronquer une chaîne en C. Hors de l'ASCII, les caractères Unicode d'apparence identique (un « а » cyrillique pour un « a » latin) servent à imiter des noms de domaine.

Ce qui arrive si on s'en passe

Un programme qui accepte n'importe quel octet là où il attend du texte ASCII imprimable laisse entrer les caractères de commande : retours à la ligne qui fabriquent de fausses entrées dans les journaux et égarent l'enquête, en-têtes HTTP injectés, chaînes tronquées par un octet nul au moment de vérifier une extension de fichier. Un filtre qui ne compare que des lettres ASCII se fait contourner par des caractères Unicode qui leur ressemblent. Et une analyse de sécurité tirée d'un seul diagramme ASCII conduit à des certitudes que le binaire réel ne partage pas.

Explication de la marmotte

Un ordinateur ne connaît que des nombres. Pour écrire du texte, il faut une table qui dit quel nombre correspond à quelle lettre : l'ASCII est la plus ancienne et la plus répandue, avec 128 caractères (lettres sans accents, chiffres, ponctuation). Certains de ces caractères ne s'affichent pas mais donnent des ordres, comme « aller à la ligne ». Mal filtrés, ils permettent à un attaquant de glisser de fausses lignes dans un fichier de journal ou de tromper un programme.

Où ce terme est utilisé

← Tout le glossaire