> Tech > La fonction intégrée _CIPHER

La fonction intégrée _CIPHER

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

La fonction ILE CIPHER constitue le moyen le plus simple de mettre en oeuvre le cryptage DES sur l'AS/400. Notez bine qu'il ne faut pas confondre la fonction intégrée ILE CIPHER avec une fonction intégrée ILE. Les fonctions “intégrées” (built-in function ou BIF) sont des constructions RPG ILE, telles que

La fonction intégrée _CIPHER

%SUBST.
Le type de fonctions “intégrées” dont nous parlons ici sont des instructions en
langage MI, dont le nom commence par un caractère souligné
(_). Ces instructions
font souvent partie du code source RPG ILE, et les appels à  ces fonctions ressemblent
aux appels à  des procédures liées, sauf qu’ils ne créent aucune entrée supplémentaire
dans la pile d’appel.

Le manuel IBM Machine Interface Functional Reference (SC41-5810) documente
la fonction _CIPHER. La figure 1 décrit les trois paramètres obligatoires de la
fonction. Le premier et le troisième paramètres représentent respectivement des
pointeurs vers le texte chiffré en sortie et le texte en clair en entrée. Le deuxième
paramètre est une structure de données de 32 octets dans laquelle on place les
cinq renseignements suivants :

  • un identificateur de fonction entière sur deux octets, dont la valeur doit
    être égale à  2 pour crypter
  • un entier codé sur deux octets et représentant la longueur du texte en
    clair. Cette valeur doit être un multiple de 8 et inférieure à  64
  • un sélecteur de mode d’un octet qui doit être égal à  X’00’ pour le mode
    ECB ou X’40’ pour le mode CBC
  • la clé de 56 bits, repartie sur huit octets
  • une valeur de chaînage initiale de huit octets, utilisée lorsque le sélecteur
    de mode est X’40’ pour le mode CBC

A partir du RPG/400 ILE, on peut utiliser le code opération CALLP ou CALLB pour
invoquer la fonction _CIPHER (même si _CIPHER ne peut pas être appelé via un pointeur
de procédure, ni même voir son adresse récupérée avec la fonction intégrée ILE
%PADDR). La figure 2 présente un programme RPG/400 ILE appelant _CIPHER pour crypter
une ID utilisateur de 16 octets. A partir d’un mot de passe de huit octets, le
programme RPG commence par générer une clé DES de 56 bits utilisant des opérations
BITON/BITOFF. Il invoque ensuite _CIPHER pour coder le texte en clair de l’ID
utilisateur en mode CBC. Le mot de passe converti représente la clé. En principe,
la fonction appelant ce programme compare l’ID utilisateur cryptée avec une ID
utilisateur cryptée enregistrée précédemment dans la base de données. Si les deux
coïncident, l’application autorise l’utilisateur à  continuer.

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010