Banking — Approved algorithms for message authentication — Part 2: Message authenticator algorithm

The algorithm described is specifically designed for high-speed authentication using a mainframe computer. It is also suitable for use with a programmable calculator. It works on the principle of a Message Authentication Code (MAC), a number sent with a message, so that a check can be made by the receiver of the message that it has not been altered since it left the sender. Annex A gives test examples for implementation of the algorithm, Annex B the specification of the algorithm in the Vienna Development Method (VDM).

Banque — Algorithmes approuvés pour l'authentification des messages — Partie 2: Algorithme authentificateur de message

General Information

Status
Withdrawn
Publication Date
02-Sep-1992
Withdrawal Date
02-Sep-1992
Current Stage
9599 - Withdrawal of International Standard
Completion Date
27-Feb-2004
Ref Project

Relations

Buy Standard

Standard
ISO 8731-2:1992 - Banking -- Approved algorithms for message authentication
English language
19 pages
sale 15% off
Preview
sale 15% off
Preview
Standard
ISO 8731-2:1992 - Banque -- Algorithmes approuvés pour l'authentification des messages
French language
22 pages
sale 15% off
Preview
sale 15% off
Preview
Standard
ISO 8731-2:1992 - Banque -- Algorithmes approuvés pour l'authentification des messages
French language
22 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)

INTERNATIONAL
STANDARD 8731-2
Second edition
1992-09-l 5
- ---____
----
Banking - Approved algorithms for message
authentication -
Part 2:
Message authenticator algorithm
Banque - Algorithmes approwks pour l’arlthentifkatior~ des
messages -
Partie 2: Algorithme d’authel-,tificatiol-, des messages
-- .--- --------.-----P--P
__----- --_-.- __- _.-___-
-- --__
-_ _
Reference number
----- --.--
_ ___ - -_ _-- -. _ . -- IS0 873 1-2: 1992(E)
._ -_. -.

---------------------- Page: 1 ----------------------
IS0 8731-2 : 1992 (E)
Contents Page
1 Scope . 1
2 Normative references
1
........................................
3 Brief description.
1
............................................
3.1 General . 1
3.2 Technical . 1
4 The segment algorithm
1
.......................................
4.1 Definition of the functions used in the algorithm. . 1
4.2 Specification of the algorithm. 3
..............................
5 Specification of the mode of operation 3
...........................
Annexes
A Test examples for implementation of the algorithm. . 5
B Specification of MAA in VDM. 9
..................................
0 IS0 1992
All rights reserved. No part of this publication may be reproduced or utilized in any form
or by any means, electronic or mechanical, including photocopying and microfilm, without
permission in writing from the publisher.
International Organization for Standardization
Case Postale 56 l CH-1211 Genkve 20 l Switzerland
Printed in Switzerland
ii

---------------------- Page: 2 ----------------------
IS0 8731-2 : 1992 (E)
Foreword
IS0 (the International Organization for Standardization) is a worldwide
federation of national standards bodies (IS0 member bodies). The work
of preparing International Standards is normally carried out through IS0
technical committees. Each member body interested in a subject for
which a technical committee has been established has the right to be
represented on that committee. International organizations, govern-
mental and non-governmental, in liaison with ISO, also take par-t in the
work. IS0 collaborates closely with the International Electrotechnical
Commission (IEC) on all matters of electrotechnical standardization.
Draft International Standards adopted by the technical committees are
circulated to the member bodies for voting. Publication as an Interna-
tional Standard requires approval by at least 75 % of the member bodies
casting a vote.
International Standard IS0 8731-2 was prepared by Technical Committee
ISO/TC 68, Banking and related financial services, Sub-Committee SC 2,
Operations and procedures.
This second edition cancels and replaces the first edition
(IS0 873%2:1987), of which it constitutes a technical revision.
IS0 8731 consists of the following parts, under the general title
Banking - Approved algorithms for message authentication:
-- Part 1: LEA
- Part 2: Message authenticator algorithm
Annexes A and 6 of this part of IS0 8731 are for information only.
. . .
III

---------------------- Page: 3 ----------------------
This page intentionally left blank

---------------------- Page: 4 ----------------------
IS0 8731-2 : 1992 (E)
INTERNATIONAL STANDARD
Banking -- Approved algorithms for message
authentication --
Part2:
Message authenticator algorithm
Messages to be authenticated may originate as a bit string of
1 Scope
any length. They shall be input to the algorithm as a sequence
IS0 8731 specifies, in individual parts, approved authentication of 32 bit numbers, MI, M2 -- M*, of which there are n, called
algorithms i.e. approved as meeting the authentication message blocks. The detail of how to pad out the last block M,,
requirements specified in IS0 8730. This part of IS0 8731 to 32 bits is not part of the algorithm but shall be defined in any
deals with the Message Authenticator Algorithm for use in the application. This algorithm shall not be used to authenticate
calculation of the Message Authentication Code (MAC). messages with more than 1 000 000 blocks, i.e. n c 1 000 000.
The Message Authenticator Algorithm (MAA) is specifically The key shall comprise two 32 bit numbers J and K and thus
designed for high-speed authentication using a mainframe has a size of 64 bits.
computer. This is a special purpose algorithm to be used
where data volumes are high, and efficient implementation by The result of the algorithm is a 32 bit authentication value.
software a desirable characteristic. MAA is also suitable for The calculation can be performed on messages as short as
use with a programmable calculator. one block (n = 1).
Test examples are given in annex A, which does not form Messages longer than 256 message blocks shall be divided
part of this part of IS0 8731. A further test example is given into segments of 256 blocks, except that the last segment
as an Annex in IS0 8730. may have less than 256 message blocks.
A specification of MAA in VDM is given in Annex B, which Clause 4 specifies the segment algorithm. If the whole
does not form part of this part of IS0 8731.
message is within one segment this completes the
calculation and its output (Z) is the value of the authenticator.
If there are more than 256 message blocks, the mode of
2 Normative references
operation specified in clause 5 shall be used.
The following standards contain provisions which, through
references in this text, constitute provisions of this part of IS0 The segment algorithm has three parts.
8731. At the time of publication, the editions indicated were
valid. All standards are subject to revision, and parties to a) The prelude shall be a calculation made with the key
agreements based on this part of IS0 8731 are encouraged to parts (J and K) alone and it shall generate six numbers X0,
investigate the possibility of applying the most recent editions Yo, VO, W, S and T which shall be used in the subsequent
of the standards indicated below. Members of IEC and IS0 calculations. This part need not be repeated until a new
maintain registers of currently valid International Standards. key is installed.
IS0 7185 : 1990, lnformaiion technology - Programming b) The main loop is a calculation which shall be repeated
languages - PASCAL. for each message block M, and therefore, for long
messages, dominates the calculation.
IS0 8730 : 1990, Banking - Requirements for message
authentication (wholesale). c) The coda shall consist of two operations of the main
loop, using as its message blocks the two numbers S and
T in turn, followed by a simple calculation of Z.
3 Brief description
The mode of operation (see clause 5) is an essential feature
3.1 General
of the implementation of this algorithm.
The Message Authenticator Algorithm works on the principle of
a Message Authentication Code (or MAC), a number sent with Figure 1 shows the data flow in schematic form.
a message, so that a check can be made by the receiver of the
message that it has not been altered since it left the sender.
4 The segment algorithm
3.2 Technical 4.1 Definition of the functions used in the
algorithm
All numbers manipulated in this algorithm shall be regarded
General definitions
as 32-bit unsigned integers, unless othewise stated. For 4.1 .I
such a number IV, 0 < N < 232. This algorithm can be
implemented conveniently and efficiently in a computer with a
A number of functions are used in the description of the
word length of 32 bits or more. algorithm. In the following, X and Y are 32 bit numbers and
the result is a 32 bit number except where stated otherwise.
1

---------------------- Page: 5 ----------------------
IS0 8731-2 : 1992 (E)
. . .
CYC(X) is the result of a one-bit cyclic left shift of X. MUL2(X,Y) := ADD(S,2C).
(9)
AND(X,Y) is the result of the logical AND operation carried Numerically the result is congruent to X*Y, the product of X
2). It is not necessarily the smallest
out on each of 32 bits. and Y, modulo (232 -
residue because it may equal 232 - 1 or 232 - 2.
is the result of the logical OR operation carried
OR(KY)
4.1.2.3 To calculate MUL2A(X,Y)
out on each of 32 bits.
XOR(X,Y) is the result of the XOR operation (modulo 2 This is a simplified form of MUL2(X,Y) used in the main loop,
addition) carried out on each of 32 bits. which yields the correct result only when at least one of the
numbers X and Y has a zero in its most significant bit.
ADD(X,Y) is the result of adding X and Y discarding any
carry from the 32nd bit, that is to say, addition This form of multiplication is employed for economy in
modulo 232. processing. D, S, C are local variables,
. . .
CAR(X,Y) is the value of the carry from the 32nd bit when D := ADD(U,U);
(10)
X is added to Y; it has the value of 0 or 1.
S := ADD(D,L); . . .
(11)
MULl (X,Y), MUL2(X,Y) and MUL2A(X,Y)
are three different forms of multiplication, each C := CAR(D,L); . . .
(12)
with a 32 bit result.
. . .
MUL2A(X,Y):= ADD(S,2C).
(13)
is the result of concatenating the binary numbers
Pwl
X and Y, in the left of most significant position. The result is congruent to X*Y modulo (232 - 2) under the
The notation is extended to concatenate more conditions stated because, in the notation of MUL2(X,Y)
than two numbers and is applied also to 8 bit above, the carry E = 0.
bytes and numbers longer than 32 bits.
4.1.3 Definition of the functions BYT[XI[Y] and
4.1.2 Definition of multiplication functions
PAWI VI
To explain the multiplications, let the 64 bit product of X and A procedure is used in the prelude to condition both the key
Y be [lJ]]L]. Hence U is the upper (most significant) half of the parts and the results in order to prevent long strings of ones
product and L the lower (least significant) half. or zeros. It produces two results which are the conditioned
values of X and Y and a number PAT[X,Y] which records the
4.1.2-l To calculate MULI (X,Y) changes that have been made. PAT[X,Y] c 255 so it is
essentially an 8 bit number.
Multiply X and Y to produce [lJ]]L] with S and C as local
variables, X and Y are regarded as strings of bytes.
S := ADD(U,L);
. . .
[xllyl = [Boll Bdi B*11 B311 f3411 B511 Bd1 B71
(1)
C := CAR(U,L); . . . Thus bytes BO to B3 are derived from X and B4 to B7 from Y.
(2)
The procedure is best described by a procedure where each
MULl (X,Y) : = ADD(S,C). . . .
(3)
byte Bi is regarded as an integer of length 8 bits.
That is to say, U shall be added to L with end around carry. begin
P := 0
Numerically the result is congruent to X*Y, the product of X
for i := 0 to 7 do
and Y, modulo (232 - 1). It is not necessarily the smallest
begin
residue because it may equal 232 - 1.
P := Z’P;
if B[i]= 0 then
4.1.2.2 To calculate MUL2(X,Y)
begin
P := P + 1;
This form of multiplication shall not be used in the main loop,
f’ ._
only in the prelude. With D, E, F, S and C as local variables, P
.-
B II
end
D := ADD(U,U);
. . .
(4)
else
if B[i]= 255 then
E := CAR(U,U); . . .
(5)
begin
P:= P+ 1;
F := ADD(D,2E);
. . .
(6)
B’[i] := 255-P
end
S := ADD(F,L); . . .
(7)
else
B’[i] := B[i];
C := CAR(F,L); . . .
(8)
end
end;

---------------------- Page: 6 ----------------------
IS0 8731-2 : 1992 (E)
NOTE 1 The procedure is written in the programming language
4.2.2 The main loop
PASCAL (see IS0 7185), except that the non-standard identifier B’
has been used to maintain continuity with the text. The symbols B[i]
This loop shall be performed in turn for each of the message
and B’[i] correspond to B; and B’; in the text. blocks Mi. In addition to Mi, the principal values employed shall
be X and Y and the main results shall be the new values of X
and Y. tt shall also use V and W and modify V at each
The results are
performance. X, Y and V shall be initialized with the values
provided by the prelude. In order to use the same keys again,
BYT[XllY] = [N/l Bill &II B;ll B’411 &II B’s11 B(7]
the initial values of X, Y and V shall be preserved, therefore
and they shall be denoted X0, YO and VO and there shall be an
initializing step X := &, Y := Yo, V := VO, after which the main
loop shall be entered for the first time.
PAT[XI(Y] = P
NOTE 2 The program is shown in columns to clarify its parallel operation
4.2 Specification of the algorithm
but it should be read in normal reading order, left to right on each line.
4.2.1 The prelude
v := CYC(V);
[JI II&] := BYT[JIIK];
. . .
E := XOR(V,W);
(21)
. . .
P := X := XOR(X,Mj); Y := XOR(Y,Mi);
PA-UJIIK]; (22)
F := ADD(E,Y); G := ADD(E,X);
Q := (1 d- P)*(l + P). . . .
(14
F := OR(F,A); G := OR(G,B);
First, by means of a calculation using Jl, produce H4, H6, and
F := AND(F,C); G := AND(G,D); . . .
(23)
H8 from which X0, VO and S are derived.
X := MULl (X,F); Y := MUL2A(Y,G). . .(24)
J12 := MULl (JI ,JI); J22 := MUL2(Jl ,JI);
The numbers A, B, C, D are constants which are, in
hexadecimal notation:
J14 := MULl (J12,Jl~); J24 := MUL2(J22,J22)
Constant A: 0204 0801
JIG := MULl (J 12,Jld); J26 := MUL2(J22,J24)
Constant B: 0080 4021
Constant C: BFEF 7FDF
JIB := MULI (Jlz,Jl~); J28 := MULZ?(J&,J&)
Constant D: 7DFE FBFF
H4 := XOR(J 14,J24);
NOTE 3 Lines (21) are common to both paths. Line (22) introduces
the message block Mi. Lines (23) prepare the multipliers and line (24)
H6 := xoR(J l&S);
generates new X and Y values. Only X, Y and V are modified for use
in the next cycle. F and G are local variables. Since the constant D
H8 := xoR(J 18,J28).
has its most significant digit zero, G < Z3’ and this ensures that
MUL2A in line (24) will give the correct result.
From a similar calculation using Kl, produce Hg, H7 and Hg,
from which Yo, W and T are derived. .
4.2.3 The coda
K12 := MULI (Kj ,KI); K22 := MUL2(Kl ,KI);
The coda shall be performed after the last message block of
the segment has been processed, by applying the main loop to
K14 := MULI (K12,K12); K24 := MUL2(K22,K22);
message block S, then again to message block T. Then the
result Z = XOR(X,Y) shall be calculated. This completes the
Kls := MULI (KY ,K14); K25 := MUL2(K1 ,K24);
coda. If the message contains no more than 256 message
blocks, Z is the value of the MAC. Otherwise the value of Z
K17 := MULI (K12,Kls); K27 := MUL2(K22,K2s);
shall be used in the mode of operation specified in clause 5.
Klg := MULI (K12,KlT); K2g := MUL2(K22,K27). . . .
(17)
NOTE 4 In order to calculate further Z values without repeating the
prelude (key calculation) until the key is changed the values X0, Yo.
H’ :=
XOR( Kls,K25);
VO, W, S and T should be retained.
Hg := MUL2(H’,Q);
5 Specification of the mode of operation
H7 := XOR(K17,K27);
Messages longer than 256 message blocks shall be divided
into segments SEGI,SEG~.SEG~ each of 256 blocks except
Hg := XOR(KI g,K2g).
419)
that the last segment may have from 1 to 256 blocks. The
number of segments is s.
Finally, condition the results using the BYT function
The result Z of the segment algorithm specified in clause 4,
[Xol IYo] := BYT[H41 It-k];
when applied to key J,K and a message M shall be denoted
[VOIIW] := BYT[Hsl It-b];
Z(J,W).
[SIlTI := BYT[bl It-b]-
(20)
3

---------------------- Page: 7 ----------------------
IS0 8731-2 : 1992 (E)
The mode of operation for calculating the MAC for a If there are no more segments, Z2 shall be the resultant MAC
message of more than 256 blocks shall employ the above for the whole message, otherwise the procedure shall
continue, and for the ith segment:
algorithm once for each segment. The algorithm specified in
clause 4 shall be applied to the first segment to produce:
Zi = Z(J,K, [Zi-1 ] (SEGi]).
21 = Z(J,K,SEG1).
There are in total s segments; then Zs shall be the resultant
MAC for the whole message.
Z1 shall be concatenated with the second segment to
produce [ZlllSEG2], to which the algorithm shall be applied:
NOTE 5 The prelude need be performed only once and its results (line
20) may be retained for use on each Z calculation. The main loop is
Z2 = Z(J, K,[& 1 ISEGz]).
performed once for each message block, including the prefixed Zi blocks.
The coda is performed at the end of each segment, since it is part of the
Note that Z1 is treated as a message block which is prefixed
.
segment algorithm specified in clause 4.
to SEG2 to form a segment of up to 257 blocks.
Keyparts
K
J
4 i
Prelude
i p;,;“sE + +:
Storage for
X0 Y. V. W S T
future use
Initialization
xv YI VT
‘W Segment
Main loop
Main loop
Ml
i-l
Ml
I I
Contains :
MUL 1
I I
MUL2A
I I
M
m
4-J
-’ I
Main loop
Coda
I
I
I
Figure 1 - Schematic showing data flow for the segment algorithm
applied to a segment of m message blocks

---------------------- Page: 8 ----------------------
IS0 8731-2 : 1992 (E)
Annex A
(informative)
Test examples for implementation of the algorithm
A.1 General
For most parts of the algorithm, simple test examples are given. The data used are not always realistic, i.e. they are not values
which could be produced by earlier parts of the algorithm, and artificial values of constants are used. This is done to keep the test
cases so simple that they can be verified by a pencil and paper calculation and thus the verification of the algorithm’s
implementations does not consist of comparing one machine implementation with another. The parts thus tested are:
- MULI, MUL2, MUL2A;
- BYT[X,Y] and PAT[X,Y];
- Prelude, except the initial BYT[J,K] operation;
- Main loop.
The coda is not tested separately because it uses only the main loop and one XOR function. For testing the whole algorithm,
some results from a trial implementation are given.
A.2 Test examples for MULl, MUL2, MUL2A
It is suggested that the multiplication operations should be tested with very small numbers and very large numbers. To represe
...

NORME
ISO
INTERNATIONALE
8731-2
Deuxième édition
1992-09-I 5
Banque - Algorithmes approuvés pour
l’authentification des messages -
Partie 2:
Algorithme authentificateur de message
Banking - Approved algorithms for message authentication -
Part 2: Message authen ticator algorithm
Numéro de référence
ISO 8731-2:1992(F)

---------------------- Page: 1 ----------------------
Sommaire
Page
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 Domaine d’application
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Références normatives
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3 Brève description
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3.1 Généralités
1
3.2 Aspects techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
4 L’algorithme applicable a un segment
. . . . . . . . . . . . . 2
4.1 Definitions des fonctions utilisees dans l’algorithme
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4.2 Spécification de l’algorithme
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5 Spécification du mode opératoire
Annexes
A Exemples d’essais pour la mise en œuvre de l’algorithme . . . . 6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
B Spécification de MAA en VDM
0 ISO 1992
Droits de reproduction réservés. Aucune partie de cette publication ne peut être reproduite
ni utilisée sous quelque forme que ce soit et par aucun procédé, électronique ou mécanique,
y compris la photocopie et les microfilms, sans l’accord écrit de l’éditeur.
Organisation internationale de normalisation
l CH-l 211 Geneve 20 l Suisse
Case Postale 56
Version française tirée en 1993
Imprimé en Suisse
ii

---------------------- Page: 2 ----------------------
ISO 8731=2:1992(F)
Avant-propos
L’ISO (Organisation internationale de normalisation) est une fédération
mondiale d’organismes nationaux de normalisation (comités membres de
I’ISO). L’élaboration des Normes internationales est en général confiée aux
comités techniques de I’ISO. Chaque comite membre intéressé par une
étude a le droit de faire partie du comité technique créé à cet effet. Les
organisations internationales, gouvernementales et non gouvernemen-
tales, en liaison avec I’ISO participent également aux travaux. L’ISO colla-
bore étroitement avec la Commission électrotechnique internationale (CEI)
en ce qui concerne la normalisation électrotechnique.
Les projets de Normes internationales adoptés par les comités techniques
sont soumis aux comités membres pour vote. Leur publication comme
Normes internationales requiert l’approbation de 75 % au moins des co-
mités membres votants.
La Norme internationale ISO 8731-2 a été élaborée par le comité techni-
que ISO/TC 68, Banque et services financiers Ii& aux opérations
bancaires, sous-comité SC 2, Opérations et procédures.
Cette deuxième édition annule et remplace la première édition
(ISO 8731.2:1987), dont elle constitue une révision technique.
L’ISO 8731 comprend les parties suivantes, présentées sous le titre gé-
néral Banque - Algorithmes approuvés pour l’authentification des mes-
sages:
- Partie 1: DEA
- Partie 2: Algorithme authentificateur de message
Les annexes A et B de la présente partie de I’ISO 8731 sont données
uniquement à titre d’information.
. . .
III

---------------------- Page: 3 ----------------------
Page blanche

---------------------- Page: 4 ----------------------
NORME INTERNATIONALE ISO 8731=2:1992(F)
Banque - Algorithmes approuvés pour
l’authentification des messages -
Partie 2:
Algorithme authentificateur de message
les plus récentes des normes indiquées ci-aprés. Les
1 Domaine d’application
membres de la CEI et de I’ISO possédent le registre
des Normes internationales en vigueur à un moment
L’ISO 8731, spécifie, en plusieurs parties distinctes,
donné.
les algorithmes d’authentification approuvés, c’est-à-
dire ceux qui ont été approuvés comme étant confor-
ISO 7185: 1990, Technologies de l’information -
mes aux spécifications d’authentification fixées dans
Langages de programmation - Pascal (Publiée ac-
I’ISO 8730. La présente partie de I’ISO 8731 traite de
tuellemen t en anglais seulement).
l’algorithme authentificateur de message a utiliser
dans le calcul du code d’authentification de message
I SO 8730: 1990, Opérations bancaires - Spécifica-
(MAC - Message Authentication Code).
tions liées à l’authentification des messages (service
aux entreprises).
L’algorithme authentificateur de message (MAA -
Message Authenticator Algorithm) est spécialement
conçu pour réaliser une authentification très rapide en
3 Brève description
utilisant un ordinateur de grande capacité. Cet algo-
rithme est spécialement conçu pour être utilisé lors-
3.1 Généralités
qu’il y a des volumes importants de données et
lorsque la mise en œuvre efficace par logiciel et sou-
haitée. Le MAA est aussi adapté pour être utilisé avec L’algorithme authentificateur de message (MAA) re- i
un calculateur programmable. pose sur le principe du code d’authentification de
message (MAC), qui est un nombre envoyé avec le
Les exemples d’essais sont donnés en annexe A qui
message, de telle sorte que le destinataire du mes-
ne fait pas partie intégrante de la présente partie de
sage puisse contrôler que celui-ci n’a fait l’objet d’au-
I’ISO 8731. Un exemple d’essai complémentaire est
cune modification depuis son envoi par l’expéditeur.
donné dans une annexe de I’ISO 8730.
3.2 Aspects techniques
Une spécification du MAA en VDM est donnée en
annexe B, qui ne fait pas partie intégrante de la pré-
Tous les nombres manipulés par cet algorithme doi-
sente partie de I’ISO 8731.
vent être considerés comme des entiers non signés
de 32 bits sauf indication contraire: Pour un tel nom-
2 Références normatives
bre N, 0 < N < 232. Cet algorithme peut être mis en
œuvre de façon aisée et efficace dans un calculateur
Les normes suivantes contiennent des dispositions
comportant des mots de 32 bits de long ou plus.
qui, par suite de la référence qui en est faite, consti-
tuent des dispositions valables pour la présente partie
Les messages à authentifier peuvent être formés
de I’ISO 8731. Au moment de la publication, les édi-
d’une chaîne de bits de n’importe quelle longueur. Ils
tions indiquées étaient en vigueur. Toute norme est devront être introduits dans l’algorithme comme une
sujette a révision et les parties prenantes des accords suite de nombre de 32 bits, M,, M, - M, au nombre
fondés sur la présente partie de I’ISO 8731 sont invi- de n, appelés ((blocs de messages)). La façon détaillée
tées a rechercher la possibilité d’appliquer les éditions
dont il convient de compléter le dernier bloc M, jus-
1

---------------------- Page: 5 ----------------------
ISO 8731=2:1992(F)
qu’a une longueur de 32 bits ne fait pas partie de CYC(X) est le resultat d’une rotation circu-
l’algorithme mais doit être definie dans toute applica- laire d’un bit vers la gauche de X.
tion. Cet algorithme ne doit pas être utilise pour au-
est le résultat de l’opération logique
E-WY)
thentifier des messages comportant plus de
ET effectuee sur chacun des
1 000 000 de blocs, c’est-a-dire yt < 1 000 000.
32 bits.
La clé doit être composée de 2 nombres de 32 bits J
est le résultat de l’opération logique
et K et a donc une taille de 64 bits.
OU effectuée sur chacun des
Le résultat de l’algorithme est une valeur d’authenti- 32 bits.
fication de 32 bits. Le calcul peut être effectue sur
est le résultat de l’opération OU
des messages ne comportant qu’un seul bloc (n = 1).
exclusif (addition modulo 2) effec-
Les messages comportant plus de 256 blocs de tuée sur chacun des 32 bits.
messages doivent être divises en segments de 256
ADD(X,Y) est le resultat de l’addition de X et
blocs, excepté le dernier segment qui peut comporter
Y sans tenir compte de la retenue
moins de 256 blocs de messages.
du 32e bit, c’est-à-dire l’addition
modulo 232.
L’article 4 donne la spécification de l’algorithme ap-
plicable à un segment. Si le message complet n’est
R ET(X,Y) est la valeur de la retenue du 32e
compose que d’un seul segment, cet algorithme per-
bit quand X est ajoute a Y. Elle peut
met d’effectuer le calcul complet, et le résultat du
prendre la value 0 ou 1.
calcul (Z) est la valeur d’authentification. S’il y a plus
de 256 blocs de messages, il conviendra d’utiliser le
MU Ll (X,Y), MU L2(X,Y) et MU L2A(X,Y)
mode d’opération spécifié dans l’article 5.
sont les trois formes différentes de
multiplication dont le résultat est
L’algorithme de segment comporte trois parties:
sur 32 bits.
a) le «prélude» doit être un calcul effectue avec les
est le résultat de la concaténation
CWI
seules parties de clés (J et K) et il doit en résulter
des nombres binaires X et Y, avec
6 nombres X,, Y,, V,, W, S et T qui seront utilises
cadrage à gauche ou sur la position
dans les calculs suivants. Ce calcul n’a pas besoin
la plus significative. La notation est
d’être répété tant qu’une nouvelle cle n’est pas
étendue pour concaténer plus de
mise en œuvre;
deux nombres et est appliquée
aussi à des octets et à des nombres
b) la ((boucle principale» est un calcul qui doit être
plus longs que 32 bits.
répété pour chaque bloc de message M, et en
conséquence constitue la part la plus importante
du calcul dans le cas des messages longs;
4.1.2 Définitions des fonctions de multiplication
c) la ((coda)) doit consister en deux opérations de la
((boucle principale)) utilisant comme ((blocs de
Pour expliquer ces multiplications, prenons le produit
message» les deux nombres S et T à tour de rôle,
sur 64 bits de X et de Y soit [UIIL]. En conséquence,
suivi d’un simple calcul de Z.
U est la moitié supérieure (poids fort) du produit et L
la moitié inferieure (poids faible).
L’utilisation de la boucle principale (voir article 5) est
un élément essentiel de l’application de cet algo-
rithme.
4.1.2.1 Définition de MULl(X,Y)
La figure 1 montre le flux de données de façon sché-
Multiplier X et Y pour obtenir [UllL]. S et C sont ici des
matique.
variables locales.
S := ADD(U,L); . . .
(1)
4 L’algorithme applicable à un segment
C := RET(U,L); . . .
(2)
4.1 Définitions des fonctions utilisées dans
. . .
MULl(X,Y) := ADD(S,C).
(3)
l’algorithme
C’est-à-dire que U doit être ajouté à L avec une rete-
4.1.1 Définitions générales
nue finale.
Un certain nombre de fonctions sont utilisées dans la Numériquement, le résultat est congru a X*Y, le pro-
description de l’algorithme. Dans ce qui suit, X et Y duit de X par Y, modulo (232 - 1). Cela n’est pas ne-
sont des nombres de 32 bits ainsi que le résultat, sauf cessairement le plus petit résidu car il peut être égal
32
spécification contraire. 32 - 1 .
2

---------------------- Page: 6 ----------------------
ISO 8731=2:1992(F)
4.1.2.2 Définition de MlJL2(X,Y) Donc les octets B, à B, sont dérivés de X et les octets
B, à B, sont dérivés de Y.
Cette forme de multiplication ne doit pas être utilisée
La procédure est mieux décrite par un programme où
dans la boucle principale, mais seulement dans le
chaque octet Bi est considéré comme étant un nom-
prélude. D,E,F,S, et C sont ici des variables locales.
bre entier d’une longueur de 8 bits.
:= ADD(U,U); . . .
D
(4)
P := 0
. . .
E := RET(U,U);
(5)
for i := 0 to 7 do
begin
. . .
F := ADD(D,2E);
(6)
P := 2’P;
. . . if B[i]= 0 then
S := ADD(F, L); 0
begin
. . .
C := RET(F,L);
(8)
P := P + 1;
B’[i] := P
MU L2(X,Y) := ADD(S,2C). . . .
(9)
end
else
Numériquement, le resultat est congru à X*Y, le pro-
if B[i]= 255 then
duit de X par Y, modulo (232 - 2). Ce n’est pas néces-
begin
sairement le FIUS petit résidu car il peut être égal à
P:= P+ 1;
232-l ou à 2 *-2.
B’[i] := 255 - P
end
4.1.2.3 Définition de MUL2A(X,Y)
else
B’[i] := B[i];
II s’agit d’une forme simplifiée de MUL2(X,Y) utilisée
end
dans la boucle principale, qui donne le bon résultat
end;
seulement dans le cas où au moins un des nombres
X ou Y comporte un zero dans son bit de poids fort.
NOTE 1 La procédure est écrite en langage de program-
mation PASCAL (voir ISO 7185), sauf que l’identificateur
Cette forme de multiplication est employée pour faire
non normalisé B’ a été utilisé pour maintenir la continuité
des économies dans le traitement. D, S, et C sont ici du texte. Les symboles B[i] et B’[i] correspondent à Bi et
des variables locales. B’i dans le texte.
. . .
D := ADD(U,U);
(10)
Les resultats sont
:= ADD(D,L); . . .
S (11)
BYT[X,Y] = [B’Oll B’, II B’*ll 8’311 B’d B’511 B’611 B’71
. . .
C := RET(D,L);
(12)
MU L2A(X,Y) := ADD(S,2C). . . .
(13)
PAT[X,Y] = P
Ce résultat est congru à X*Y modulo (232 - 2) dans les
conditions spécifiées car dans la notation de 4.2 Spécification de l’algorithme
MUL2(X,Y) ci-dessus, la retenue E = 0.
4.2.1 Le prélude
4.1.3 Définition des fonctions BYT[XllY] et
PATCXllYI
[JI llk] := BYT[JI(K];
l -
Une procédure est utilisée dans le prélude pour
P .-
PAT[JIIKl;
conditionner à la fois les parties de la clé et les resul-
. . .
tats de façon à éviter les longues chaînes de «un)) ou Q := (1 + P)*(l + P).
(14)
de «zer0)). Elle donne deux résultats qui sont les va-
En premier lieu, un calcul utilisant J, donne H,, H,,
leurs conditionnees de X et Y et un nombre
et H, desquels on deduit X,, V, et S.
PAT[X,Y] qui enregistre les modifications qui ont été
effectuees. PAT[X,Y] < 255 de façon a être essen-
J22 := MUL2(Jl ,JI);
J12 := MULl (JI ,JI);
tiellement un nombre de 8 bits.
J14:= MULl (J 12,Jlz); J24 := MUL2(J22,J22);
X et Y sont considérés comme des chaînes d’octets.
Jl6 := MULl (J 1 2,J 14); J26 := MUL2(J22,J24);
En utilisant la notation (X,Y.) pour concaténer,
[xlly] = [Bol1 B, 11 B211 B311 B411 B511 B611 B71
J18 := MULl(J12,J16); J&:= MuL2(J&J&). . l . (15)

---------------------- Page: 7 ----------------------
ISO 8731=2:1992(F)
H Les nombres A, B, C, D sont des constantes qui sont,
4 := X/OU(Jl,,J2,);
en notation hexadécimale:
H 6 := x/ou(Jl ,,J2,);
0801
Constante A: 0204
H, := X/OU(Jl ,,J2,). . . .
(16)
Constante B: 0080 4021
Constante C: BFEF 7FDF
Un calcul similaire utilisant K, donne H,, H, et H,
Constante D: 7DFE FBFF
desquels Y,, W et T sont dérivés.
NOTE 3 Les lignes (21) sont communes, aux deux che-
K12 := MULl (KI ,KI); K22 := MUL-~(KI ,KI 1;
mins. La ligne (22) introduit le bloc de message Mi. Les Ii-
gnes (23) préparent les multiplicateurs et la ligne (24)
K14 := MULl (K12,Klz); K24 := MUL2(K22,K22);
génère de nouvelles valeurs de X et Y. Seuls X, Y et V sont
modifies pour leur utilisation dans le cycle suivant. F et G
MULl (KI ,K14);
K15 := K25 := MUL~(KI ‘K24);
sont des variables locales. Comme la constante D a zéro
pour bit de poids fort, G < Z3’, cela assure que MULZA à la
Kl7 := MULI (Kl ;r,Kl$; K27 := MUL2(t@,K2s);
ligne (24) donnera le bon résultat.
Klg := MULl (K12,Kl 7); K2g := MUL2(K22,K27). . . . (17)
4.2.3 La coda
H ’ := X/OU(K15,K2,);
H := MUL2(H’,Q); Apres que le dernier bloc de message du segment ait
5
été traite, la coda doit être réalisée en appliquant la
H 7 := X/OU(Kl,,K2,);
boucle principale au bloc de message S, puis au bloc
T. Apres cela le résultat Z = X/OU(X,Y) doit être cal-
H := X/OU(Kl g,K2g). . . .
g
(19)
cule. Ceci termine la coda. Si le message ne contient
pas plus de 256 blocs de messages, Z est la valeur
En fin de compte, les résultats doivent être condi-
du MAC. Sinon la valeur de Z doit être utilisée dans
tionnés par la fonction BYT.
le mode opératoire spécifié dans l’article 5.
[x01 IYo] := BYT[H41 I&i];
NOTE 4 Les valeurs X0, Y,, V,, W, S et T devraient être
[VOIIW] := BYT[Hsl ~HT];
. . .
[SllT] := mémorisées de façon à calculer des valeurs ultérieures de
BYT[HslJHg]. (20)
Z sans avoir à répéter le prélude (calcul à l’aide de la clé) tant
que la clé n’aura pas été changée.
4.2.2 La boucle principale
Cette boucle doit être réitérée pour chacun des blocs
5 Spécification du mode opératoire
de message Mi. En plus de Mi, les valeurs principales
employées doivent être X et Y et les resultats princi-
Les messages comportant plus de 256 blocs de
paux sont les nouvelles valeurs de X et Y. Elle doit
messages doivent être divises en segments SEG,,
utiliser également V et W et modifier V a chaque
SEG,, . . . . SEG, de 256 blocs chacun sauf le dernier
itération. Notons que X, Y et V sont initialises avec les
segment qui peut avoir de 1 à 256 blocs. Le nombre
valeurs fournies par le prélude.
de segments est s.
Pour pouvoir réutiliser les mêmes clés, les valeurs
Le resultat Z d’un algorithme applicable à un segment,
initiales de X, Y et V doivent être conservées, en
tel que spécifié dans l’article 4, appliqué aux élé-
conséquence, elles sont appelées X0, Y, et V, et il doit
ments de cle J, K et au message M, doit être noté
y avoir un pas d’initialisation X := X,, Y := Y,, V := V,,
Z(J,KW
après lequel la boucle principale doit être effectuée
pour la première fois.
Pour calculer le MAC d’un message excédant 256
blocs, le mode opératoire doit utiliser l’algorithme ci-
NOTE 2 Le programme est présenté en colonnes pour
dessus une fois pour chaque segment. L’algorithme
clarifier son opération ((parallele» mais il devrait être lu dans
spécifie dans l’article 4 doit être appliqué au premier
l’ordre normal de lecture, de gauche a droite de chaque li-
segment pour produire:
gne.
Z, = Z(J,K,SEG,).
:=
v CY C(V);
E := x/OU(V,W); . . .
(21)
Z, doit être concaténe avec le second segment pour
produire [Z,II SEG,] auquel l’algorithme doit être ap-
. . l (22)
X := X/OU(X,Mi); Y := X/OU(Y,Mi);
pliqué:
F := ADD( E,Y); G := ADD(E,X);
Z, = Z(J,K[Z,II SEG,3)=
F := OU(F,A); G := OU(G,B);
Noter que Z, est traite comme un bloc de message
F := ET(F,C); G := ET(G,D); . . .
(23)
qui est préfixé a SEG, pour former un segment pou-
X Y := MULZA(Y,G). . . . (24)
:= MULl(X,F);
vant aller jusqu’à 257 blocs.
4

---------------------- Page: 8 ----------------------
NOTE 5 II est nécessaire de n’effectuer le prélude qu’une
S’il n’y a plus de segments, Z, sera le MAC résultant
seule fois et ses résultats (ligne 20) peuvent être mémori-
pour le message complet. Si ce n’est pas le cas, la
ses pour être utilises sur chaque calcul Zi. La boucle princi-
procédure devra continuer, et pour le léme segment:
pale est réalisée une fois pour chaque bloc de message, y
compris les blocs Zi, préfixés. La coda est réalisée à la fin
Zi = Z(JtK,[Zi-,l~SEGi])*
de chaque segment puisqu’elle fait partie de l’algorithme
spécifié dans l’article 4.
Le message Atant composé de s segments, Z, sera
le MAC résultant pour tout le message.
K
c1es
I 1
Le prelude, contient: BYT/PAT
MULI
Prelude
MULZ
Memorisation pour
W S T
X0 Y0 VO
utilisation future
-
Initialisation
Boucle principale Boucle principale
Contient:
MULI i
I I
I
MULZA
I I
I
I
I
f I
1
W
-
Boucle principale
4
M/n
-- -----.-----_.-----.--- ------ -_-
I I
I
W
I
-
Coda
Boucle principale I
e
I
I
\S
I
I
I
I I
l J l
W
f f
-
Boucle principale
I I
I
e
I I
T
I I
I t
I f
I
x/ou Rejeter V
t
I
I
I I
L ------------------------------~
\
2
Figure 1 - Schéma montrant le flux de données pour l’algorithme; de segment de m blocs de messages

---------------------- Page: 9 ----------------------
ISO 8731=2:1992(F)
...

NORME
ISO
INTERNATIONALE
8731-2
Deuxième édition
1992-09-I 5
Banque - Algorithmes approuvés pour
l’authentification des messages -
Partie 2:
Algorithme authentificateur de message
Banking - Approved algorithms for message authentication -
Part 2: Message authen ticator algorithm
Numéro de référence
ISO 8731-2:1992(F)

---------------------- Page: 1 ----------------------
Sommaire
Page
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 Domaine d’application
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Références normatives
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3 Brève description
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3.1 Généralités
1
3.2 Aspects techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
4 L’algorithme applicable a un segment
. . . . . . . . . . . . . 2
4.1 Definitions des fonctions utilisees dans l’algorithme
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4.2 Spécification de l’algorithme
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5 Spécification du mode opératoire
Annexes
A Exemples d’essais pour la mise en œuvre de l’algorithme . . . . 6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
B Spécification de MAA en VDM
0 ISO 1992
Droits de reproduction réservés. Aucune partie de cette publication ne peut être reproduite
ni utilisée sous quelque forme que ce soit et par aucun procédé, électronique ou mécanique,
y compris la photocopie et les microfilms, sans l’accord écrit de l’éditeur.
Organisation internationale de normalisation
l CH-l 211 Geneve 20 l Suisse
Case Postale 56
Version française tirée en 1993
Imprimé en Suisse
ii

---------------------- Page: 2 ----------------------
ISO 8731=2:1992(F)
Avant-propos
L’ISO (Organisation internationale de normalisation) est une fédération
mondiale d’organismes nationaux de normalisation (comités membres de
I’ISO). L’élaboration des Normes internationales est en général confiée aux
comités techniques de I’ISO. Chaque comite membre intéressé par une
étude a le droit de faire partie du comité technique créé à cet effet. Les
organisations internationales, gouvernementales et non gouvernemen-
tales, en liaison avec I’ISO participent également aux travaux. L’ISO colla-
bore étroitement avec la Commission électrotechnique internationale (CEI)
en ce qui concerne la normalisation électrotechnique.
Les projets de Normes internationales adoptés par les comités techniques
sont soumis aux comités membres pour vote. Leur publication comme
Normes internationales requiert l’approbation de 75 % au moins des co-
mités membres votants.
La Norme internationale ISO 8731-2 a été élaborée par le comité techni-
que ISO/TC 68, Banque et services financiers Ii& aux opérations
bancaires, sous-comité SC 2, Opérations et procédures.
Cette deuxième édition annule et remplace la première édition
(ISO 8731.2:1987), dont elle constitue une révision technique.
L’ISO 8731 comprend les parties suivantes, présentées sous le titre gé-
néral Banque - Algorithmes approuvés pour l’authentification des mes-
sages:
- Partie 1: DEA
- Partie 2: Algorithme authentificateur de message
Les annexes A et B de la présente partie de I’ISO 8731 sont données
uniquement à titre d’information.
. . .
III

---------------------- Page: 3 ----------------------
Page blanche

---------------------- Page: 4 ----------------------
NORME INTERNATIONALE ISO 8731=2:1992(F)
Banque - Algorithmes approuvés pour
l’authentification des messages -
Partie 2:
Algorithme authentificateur de message
les plus récentes des normes indiquées ci-aprés. Les
1 Domaine d’application
membres de la CEI et de I’ISO possédent le registre
des Normes internationales en vigueur à un moment
L’ISO 8731, spécifie, en plusieurs parties distinctes,
donné.
les algorithmes d’authentification approuvés, c’est-à-
dire ceux qui ont été approuvés comme étant confor-
ISO 7185: 1990, Technologies de l’information -
mes aux spécifications d’authentification fixées dans
Langages de programmation - Pascal (Publiée ac-
I’ISO 8730. La présente partie de I’ISO 8731 traite de
tuellemen t en anglais seulement).
l’algorithme authentificateur de message a utiliser
dans le calcul du code d’authentification de message
I SO 8730: 1990, Opérations bancaires - Spécifica-
(MAC - Message Authentication Code).
tions liées à l’authentification des messages (service
aux entreprises).
L’algorithme authentificateur de message (MAA -
Message Authenticator Algorithm) est spécialement
conçu pour réaliser une authentification très rapide en
3 Brève description
utilisant un ordinateur de grande capacité. Cet algo-
rithme est spécialement conçu pour être utilisé lors-
3.1 Généralités
qu’il y a des volumes importants de données et
lorsque la mise en œuvre efficace par logiciel et sou-
haitée. Le MAA est aussi adapté pour être utilisé avec L’algorithme authentificateur de message (MAA) re- i
un calculateur programmable. pose sur le principe du code d’authentification de
message (MAC), qui est un nombre envoyé avec le
Les exemples d’essais sont donnés en annexe A qui
message, de telle sorte que le destinataire du mes-
ne fait pas partie intégrante de la présente partie de
sage puisse contrôler que celui-ci n’a fait l’objet d’au-
I’ISO 8731. Un exemple d’essai complémentaire est
cune modification depuis son envoi par l’expéditeur.
donné dans une annexe de I’ISO 8730.
3.2 Aspects techniques
Une spécification du MAA en VDM est donnée en
annexe B, qui ne fait pas partie intégrante de la pré-
Tous les nombres manipulés par cet algorithme doi-
sente partie de I’ISO 8731.
vent être considerés comme des entiers non signés
de 32 bits sauf indication contraire: Pour un tel nom-
2 Références normatives
bre N, 0 < N < 232. Cet algorithme peut être mis en
œuvre de façon aisée et efficace dans un calculateur
Les normes suivantes contiennent des dispositions
comportant des mots de 32 bits de long ou plus.
qui, par suite de la référence qui en est faite, consti-
tuent des dispositions valables pour la présente partie
Les messages à authentifier peuvent être formés
de I’ISO 8731. Au moment de la publication, les édi-
d’une chaîne de bits de n’importe quelle longueur. Ils
tions indiquées étaient en vigueur. Toute norme est devront être introduits dans l’algorithme comme une
sujette a révision et les parties prenantes des accords suite de nombre de 32 bits, M,, M, - M, au nombre
fondés sur la présente partie de I’ISO 8731 sont invi- de n, appelés ((blocs de messages)). La façon détaillée
tées a rechercher la possibilité d’appliquer les éditions
dont il convient de compléter le dernier bloc M, jus-
1

---------------------- Page: 5 ----------------------
ISO 8731=2:1992(F)
qu’a une longueur de 32 bits ne fait pas partie de CYC(X) est le resultat d’une rotation circu-
l’algorithme mais doit être definie dans toute applica- laire d’un bit vers la gauche de X.
tion. Cet algorithme ne doit pas être utilise pour au-
est le résultat de l’opération logique
E-WY)
thentifier des messages comportant plus de
ET effectuee sur chacun des
1 000 000 de blocs, c’est-a-dire yt < 1 000 000.
32 bits.
La clé doit être composée de 2 nombres de 32 bits J
est le résultat de l’opération logique
et K et a donc une taille de 64 bits.
OU effectuée sur chacun des
Le résultat de l’algorithme est une valeur d’authenti- 32 bits.
fication de 32 bits. Le calcul peut être effectue sur
est le résultat de l’opération OU
des messages ne comportant qu’un seul bloc (n = 1).
exclusif (addition modulo 2) effec-
Les messages comportant plus de 256 blocs de tuée sur chacun des 32 bits.
messages doivent être divises en segments de 256
ADD(X,Y) est le resultat de l’addition de X et
blocs, excepté le dernier segment qui peut comporter
Y sans tenir compte de la retenue
moins de 256 blocs de messages.
du 32e bit, c’est-à-dire l’addition
modulo 232.
L’article 4 donne la spécification de l’algorithme ap-
plicable à un segment. Si le message complet n’est
R ET(X,Y) est la valeur de la retenue du 32e
compose que d’un seul segment, cet algorithme per-
bit quand X est ajoute a Y. Elle peut
met d’effectuer le calcul complet, et le résultat du
prendre la value 0 ou 1.
calcul (Z) est la valeur d’authentification. S’il y a plus
de 256 blocs de messages, il conviendra d’utiliser le
MU Ll (X,Y), MU L2(X,Y) et MU L2A(X,Y)
mode d’opération spécifié dans l’article 5.
sont les trois formes différentes de
multiplication dont le résultat est
L’algorithme de segment comporte trois parties:
sur 32 bits.
a) le «prélude» doit être un calcul effectue avec les
est le résultat de la concaténation
CWI
seules parties de clés (J et K) et il doit en résulter
des nombres binaires X et Y, avec
6 nombres X,, Y,, V,, W, S et T qui seront utilises
cadrage à gauche ou sur la position
dans les calculs suivants. Ce calcul n’a pas besoin
la plus significative. La notation est
d’être répété tant qu’une nouvelle cle n’est pas
étendue pour concaténer plus de
mise en œuvre;
deux nombres et est appliquée
aussi à des octets et à des nombres
b) la ((boucle principale» est un calcul qui doit être
plus longs que 32 bits.
répété pour chaque bloc de message M, et en
conséquence constitue la part la plus importante
du calcul dans le cas des messages longs;
4.1.2 Définitions des fonctions de multiplication
c) la ((coda)) doit consister en deux opérations de la
((boucle principale)) utilisant comme ((blocs de
Pour expliquer ces multiplications, prenons le produit
message» les deux nombres S et T à tour de rôle,
sur 64 bits de X et de Y soit [UIIL]. En conséquence,
suivi d’un simple calcul de Z.
U est la moitié supérieure (poids fort) du produit et L
la moitié inferieure (poids faible).
L’utilisation de la boucle principale (voir article 5) est
un élément essentiel de l’application de cet algo-
rithme.
4.1.2.1 Définition de MULl(X,Y)
La figure 1 montre le flux de données de façon sché-
Multiplier X et Y pour obtenir [UllL]. S et C sont ici des
matique.
variables locales.
S := ADD(U,L); . . .
(1)
4 L’algorithme applicable à un segment
C := RET(U,L); . . .
(2)
4.1 Définitions des fonctions utilisées dans
. . .
MULl(X,Y) := ADD(S,C).
(3)
l’algorithme
C’est-à-dire que U doit être ajouté à L avec une rete-
4.1.1 Définitions générales
nue finale.
Un certain nombre de fonctions sont utilisées dans la Numériquement, le résultat est congru a X*Y, le pro-
description de l’algorithme. Dans ce qui suit, X et Y duit de X par Y, modulo (232 - 1). Cela n’est pas ne-
sont des nombres de 32 bits ainsi que le résultat, sauf cessairement le plus petit résidu car il peut être égal
32
spécification contraire. 32 - 1 .
2

---------------------- Page: 6 ----------------------
ISO 8731=2:1992(F)
4.1.2.2 Définition de MlJL2(X,Y) Donc les octets B, à B, sont dérivés de X et les octets
B, à B, sont dérivés de Y.
Cette forme de multiplication ne doit pas être utilisée
La procédure est mieux décrite par un programme où
dans la boucle principale, mais seulement dans le
chaque octet Bi est considéré comme étant un nom-
prélude. D,E,F,S, et C sont ici des variables locales.
bre entier d’une longueur de 8 bits.
:= ADD(U,U); . . .
D
(4)
P := 0
. . .
E := RET(U,U);
(5)
for i := 0 to 7 do
begin
. . .
F := ADD(D,2E);
(6)
P := 2’P;
. . . if B[i]= 0 then
S := ADD(F, L); 0
begin
. . .
C := RET(F,L);
(8)
P := P + 1;
B’[i] := P
MU L2(X,Y) := ADD(S,2C). . . .
(9)
end
else
Numériquement, le resultat est congru à X*Y, le pro-
if B[i]= 255 then
duit de X par Y, modulo (232 - 2). Ce n’est pas néces-
begin
sairement le FIUS petit résidu car il peut être égal à
P:= P+ 1;
232-l ou à 2 *-2.
B’[i] := 255 - P
end
4.1.2.3 Définition de MUL2A(X,Y)
else
B’[i] := B[i];
II s’agit d’une forme simplifiée de MUL2(X,Y) utilisée
end
dans la boucle principale, qui donne le bon résultat
end;
seulement dans le cas où au moins un des nombres
X ou Y comporte un zero dans son bit de poids fort.
NOTE 1 La procédure est écrite en langage de program-
mation PASCAL (voir ISO 7185), sauf que l’identificateur
Cette forme de multiplication est employée pour faire
non normalisé B’ a été utilisé pour maintenir la continuité
des économies dans le traitement. D, S, et C sont ici du texte. Les symboles B[i] et B’[i] correspondent à Bi et
des variables locales. B’i dans le texte.
. . .
D := ADD(U,U);
(10)
Les resultats sont
:= ADD(D,L); . . .
S (11)
BYT[X,Y] = [B’Oll B’, II B’*ll 8’311 B’d B’511 B’611 B’71
. . .
C := RET(D,L);
(12)
MU L2A(X,Y) := ADD(S,2C). . . .
(13)
PAT[X,Y] = P
Ce résultat est congru à X*Y modulo (232 - 2) dans les
conditions spécifiées car dans la notation de 4.2 Spécification de l’algorithme
MUL2(X,Y) ci-dessus, la retenue E = 0.
4.2.1 Le prélude
4.1.3 Définition des fonctions BYT[XllY] et
PATCXllYI
[JI llk] := BYT[JI(K];
l -
Une procédure est utilisée dans le prélude pour
P .-
PAT[JIIKl;
conditionner à la fois les parties de la clé et les resul-
. . .
tats de façon à éviter les longues chaînes de «un)) ou Q := (1 + P)*(l + P).
(14)
de «zer0)). Elle donne deux résultats qui sont les va-
En premier lieu, un calcul utilisant J, donne H,, H,,
leurs conditionnees de X et Y et un nombre
et H, desquels on deduit X,, V, et S.
PAT[X,Y] qui enregistre les modifications qui ont été
effectuees. PAT[X,Y] < 255 de façon a être essen-
J22 := MUL2(Jl ,JI);
J12 := MULl (JI ,JI);
tiellement un nombre de 8 bits.
J14:= MULl (J 12,Jlz); J24 := MUL2(J22,J22);
X et Y sont considérés comme des chaînes d’octets.
Jl6 := MULl (J 1 2,J 14); J26 := MUL2(J22,J24);
En utilisant la notation (X,Y.) pour concaténer,
[xlly] = [Bol1 B, 11 B211 B311 B411 B511 B611 B71
J18 := MULl(J12,J16); J&:= MuL2(J&J&). . l . (15)

---------------------- Page: 7 ----------------------
ISO 8731=2:1992(F)
H Les nombres A, B, C, D sont des constantes qui sont,
4 := X/OU(Jl,,J2,);
en notation hexadécimale:
H 6 := x/ou(Jl ,,J2,);
0801
Constante A: 0204
H, := X/OU(Jl ,,J2,). . . .
(16)
Constante B: 0080 4021
Constante C: BFEF 7FDF
Un calcul similaire utilisant K, donne H,, H, et H,
Constante D: 7DFE FBFF
desquels Y,, W et T sont dérivés.
NOTE 3 Les lignes (21) sont communes, aux deux che-
K12 := MULl (KI ,KI); K22 := MUL-~(KI ,KI 1;
mins. La ligne (22) introduit le bloc de message Mi. Les Ii-
gnes (23) préparent les multiplicateurs et la ligne (24)
K14 := MULl (K12,Klz); K24 := MUL2(K22,K22);
génère de nouvelles valeurs de X et Y. Seuls X, Y et V sont
modifies pour leur utilisation dans le cycle suivant. F et G
MULl (KI ,K14);
K15 := K25 := MUL~(KI ‘K24);
sont des variables locales. Comme la constante D a zéro
pour bit de poids fort, G < Z3’, cela assure que MULZA à la
Kl7 := MULI (Kl ;r,Kl$; K27 := MUL2(t@,K2s);
ligne (24) donnera le bon résultat.
Klg := MULl (K12,Kl 7); K2g := MUL2(K22,K27). . . . (17)
4.2.3 La coda
H ’ := X/OU(K15,K2,);
H := MUL2(H’,Q); Apres que le dernier bloc de message du segment ait
5
été traite, la coda doit être réalisée en appliquant la
H 7 := X/OU(Kl,,K2,);
boucle principale au bloc de message S, puis au bloc
T. Apres cela le résultat Z = X/OU(X,Y) doit être cal-
H := X/OU(Kl g,K2g). . . .
g
(19)
cule. Ceci termine la coda. Si le message ne contient
pas plus de 256 blocs de messages, Z est la valeur
En fin de compte, les résultats doivent être condi-
du MAC. Sinon la valeur de Z doit être utilisée dans
tionnés par la fonction BYT.
le mode opératoire spécifié dans l’article 5.
[x01 IYo] := BYT[H41 I&i];
NOTE 4 Les valeurs X0, Y,, V,, W, S et T devraient être
[VOIIW] := BYT[Hsl ~HT];
. . .
[SllT] := mémorisées de façon à calculer des valeurs ultérieures de
BYT[HslJHg]. (20)
Z sans avoir à répéter le prélude (calcul à l’aide de la clé) tant
que la clé n’aura pas été changée.
4.2.2 La boucle principale
Cette boucle doit être réitérée pour chacun des blocs
5 Spécification du mode opératoire
de message Mi. En plus de Mi, les valeurs principales
employées doivent être X et Y et les resultats princi-
Les messages comportant plus de 256 blocs de
paux sont les nouvelles valeurs de X et Y. Elle doit
messages doivent être divises en segments SEG,,
utiliser également V et W et modifier V a chaque
SEG,, . . . . SEG, de 256 blocs chacun sauf le dernier
itération. Notons que X, Y et V sont initialises avec les
segment qui peut avoir de 1 à 256 blocs. Le nombre
valeurs fournies par le prélude.
de segments est s.
Pour pouvoir réutiliser les mêmes clés, les valeurs
Le resultat Z d’un algorithme applicable à un segment,
initiales de X, Y et V doivent être conservées, en
tel que spécifié dans l’article 4, appliqué aux élé-
conséquence, elles sont appelées X0, Y, et V, et il doit
ments de cle J, K et au message M, doit être noté
y avoir un pas d’initialisation X := X,, Y := Y,, V := V,,
Z(J,KW
après lequel la boucle principale doit être effectuée
pour la première fois.
Pour calculer le MAC d’un message excédant 256
blocs, le mode opératoire doit utiliser l’algorithme ci-
NOTE 2 Le programme est présenté en colonnes pour
dessus une fois pour chaque segment. L’algorithme
clarifier son opération ((parallele» mais il devrait être lu dans
spécifie dans l’article 4 doit être appliqué au premier
l’ordre normal de lecture, de gauche a droite de chaque li-
segment pour produire:
gne.
Z, = Z(J,K,SEG,).
:=
v CY C(V);
E := x/OU(V,W); . . .
(21)
Z, doit être concaténe avec le second segment pour
produire [Z,II SEG,] auquel l’algorithme doit être ap-
. . l (22)
X := X/OU(X,Mi); Y := X/OU(Y,Mi);
pliqué:
F := ADD( E,Y); G := ADD(E,X);
Z, = Z(J,K[Z,II SEG,3)=
F := OU(F,A); G := OU(G,B);
Noter que Z, est traite comme un bloc de message
F := ET(F,C); G := ET(G,D); . . .
(23)
qui est préfixé a SEG, pour former un segment pou-
X Y := MULZA(Y,G). . . . (24)
:= MULl(X,F);
vant aller jusqu’à 257 blocs.
4

---------------------- Page: 8 ----------------------
NOTE 5 II est nécessaire de n’effectuer le prélude qu’une
S’il n’y a plus de segments, Z, sera le MAC résultant
seule fois et ses résultats (ligne 20) peuvent être mémori-
pour le message complet. Si ce n’est pas le cas, la
ses pour être utilises sur chaque calcul Zi. La boucle princi-
procédure devra continuer, et pour le léme segment:
pale est réalisée une fois pour chaque bloc de message, y
compris les blocs Zi, préfixés. La coda est réalisée à la fin
Zi = Z(JtK,[Zi-,l~SEGi])*
de chaque segment puisqu’elle fait partie de l’algorithme
spécifié dans l’article 4.
Le message Atant composé de s segments, Z, sera
le MAC résultant pour tout le message.
K
c1es
I 1
Le prelude, contient: BYT/PAT
MULI
Prelude
MULZ
Memorisation pour
W S T
X0 Y0 VO
utilisation future
-
Initialisation
Boucle principale Boucle principale
Contient:
MULI i
I I
I
MULZA
I I
I
I
I
f I
1
W
-
Boucle principale
4
M/n
-- -----.-----_.-----.--- ------ -_-
I I
I
W
I
-
Coda
Boucle principale I
e
I
I
\S
I
I
I
I I
l J l
W
f f
-
Boucle principale
I I
I
e
I I
T
I I
I t
I f
I
x/ou Rejeter V
t
I
I
I I
L ------------------------------~
\
2
Figure 1 - Schéma montrant le flux de données pour l’algorithme; de segment de m blocs de messages

---------------------- Page: 9 ----------------------
ISO 8731=2:1992(F)
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.