Cryptographie
OR est l'opérateur logique « OU » inclusif : il renvoie vrai (1) dès qu'au moins une de ses deux entrées est vraie, et faux (0) seulement quand les deux sont fausses.
Table de vérité : 0 OR 0 donne 0 ; 0 OR 1, 1 OR 0 et 1 OR 1 donnent 1. Appliqué bit à bit, il combine deux valeurs position par position.
Différence avec XOR : XOR renvoie 0 quand les deux entrées valent 1, OR renvoie 1. Cette seule case change tout : XOR est réversible, OR ne l'est pas, car on ne peut pas retrouver les entrées à partir du résultat.
Usages : En programmation, OR sert à allumer des bits (drapeaux, masques de permissions) ou à combiner des conditions. En cryptographie, il ne sert pas à chiffrer : un OR avec une clé tend à remplir le résultat de 1 et perd de l'information.
Piège classique : Remplacer un XOR par un OR dans une routine de chiffrement fait-maison produit un texte chiffré qu'on ne sait plus déchiffrer, ce qui reste la forme de confidentialité la plus radicale.
Ce qui arrive si on s'en passe
Remplacer un XOR par un OR dans une routine de chiffrement faite maison produit un résultat que personne ne sait déchiffrer, destinataire légitime compris, puisque l'opération n'est pas réversible. Pire, un OR avec une clé tend à remplir le résultat de 1 : chaque bit à 0 dans le chiffré révèle que le bit correspondant du clair et de la clé valaient 0, et le texte fuit par morceaux. Dans un masque de permissions, un OR employé là où il fallait retirer un droit en ajoute un. L'opérateur n'y est pour rien : il fait exactement ce qu'on lui demande, défaut qu'il partage avec la plupart des machines et bon nombre de comités.
Explication de la marmotte
Imaginons une pièce avec deux interrupteurs branchés sur la même lampe, montés de façon que la lampe s'allume si l'un ou l'autre est enclenché, ou les deux à la fois. La lampe ne reste éteinte que si les deux interrupteurs sont en position basse. C'est exactement la règle de ce « ou » : il suffit d'une condition remplie pour que la réponse soit oui. On l'utilise tous les jours sans y penser, par exemple pour dire qu'on accepte de payer en espèces ou par carte.
