1、 Reference number ISO/IEC 9797-3:2011(E) ISO/IEC 2011INTERNATIONAL STANDARD ISO/IEC 9797-3 First edition 2011-11-15 Information technology Security techniques Message Authentication Codes (MACs) Part 3: Mechanisms using a universal hash- function Technologies de linformation Techniques de scurit Cod
2、es dauthentification de message (MAC) Partie 3: Mcanismes utilisant une fonction de hachage universelle ISO/IEC 9797-3:2011(E) COPYRIGHT PROTECTED DOCUMENT ISO/IEC 2011 All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized in any form or by any me
3、ans, electronic or mechanical, including photocopying and microfilm, without permission in writing from either ISO at the address below or ISOs member body in the country of the requester. ISO copyright office Case postale 56 CH-1211 Geneva 20 Tel. + 41 22 749 01 11 Fax + 41 22 749 09 47 E-mail copy
4、rightiso.org Web www.iso.org Published in Switzerland ii ISO/IEC 2011 All rights reservedISO/IEC 9797-3:2011(E) ISO/IEC 2011 All rights reserved iiiContents Page Foreword iv Introduction . v 1 Scope 1 2 Normative references 1 3 Terms and definitions . 1 4 Symbols and abbreviated terms 2 5 General mo
5、del 4 6 Mechanisms . 5 6.1 Introduction 5 6.2 UMAC 5 6.2.1 Description of UMAC . 5 6.2.2 Requirements . 5 6.2.3 Notation and auxiliary functions 5 6.2.4 Key preprocessing 9 6.2.5 Message preprocessing 9 6.2.6 Message hashing . 9 6.2.7 Layered hash-functions 10 6.2.8 Finalization . 12 6.3 Badger 12 6
6、.3.1 Description of Badger . 12 6.3.2 Requirements . 12 6.3.3 Notation and auxiliary functions 13 6.3.4 Key preprocessing 13 6.3.5 Message preprocessing 14 6.3.6 Message hashing . 14 6.3.7 Finalization . 16 6.4 Poly1305-AES 16 6.4.1 Description of Poly1305-AES . 16 6.4.2 Requirements . 16 6.4.3 Key
7、preprocessing 16 6.4.4 Message preprocessing 16 6.4.5 Message hashing . 17 6.4.6 Finalization . 17 6.5 GMAC 18 6.5.1 Description of GMAC 18 6.5.2 Requirements . 18 6.5.3 Notation and auxiliary functions 18 6.5.4 Key preprocessing 19 6.5.5 Message preprocessing 19 6.5.6 Message hashing . 19 6.5.7 Fin
8、alization . 19 Annex A (normative) Object Identifiers 20 Annex B (informative) Test Vectors 22 Annex C (informative) Security Information . 24 Bibliography 25 ISO/IEC 9797-3:2011(E) iv ISO/IEC 2011 All rights reservedForeword ISO (the International Organization for Standardization) and IEC (the Inte
9、rnational Electrotechnical Commission) form the specialized system for worldwide standardization. National bodies that are members of ISO or IEC participate in the development of International Standards through technical committees established by the respective organization to deal with particular f
10、ields of technical activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other international organizations, governmental and non-governmental, in liaison with ISO and IEC, also take part in the work. In the field of information technology, ISO and IEC have established
11、a joint technical committee, ISO/IEC JTC 1. International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 2. The main task of the joint technical committee is to prepare International Standards. Draft International Standards adopted by the joint technical com
12、mittee are circulated to national bodies for voting. Publication as an International Standard requires approval by at least 75 % of the national bodies casting a vote. Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. ISO and IEC sh
13、all not be held responsible for identifying any or all such patent rights. ISO/IEC 9797-3 was prepared by Joint Technical Committee ISO/IEC JTC 1, Information technology, Subcommittee SC 27, IT Security techniques. ISO/IEC 9797 consists of the following parts, under the general title Information tec
14、hnology Security techniques Message Authentication Codes (MACs): Part 1: Mechanisms using a block cipher Part 2: Mechanisms using a dedicated hash-function Part 3: Mechanisms using a universal hash-function ISO/IEC 9797-3:2011(E) ISO/IEC 2011 All rights reserved vIntroduction In an IT environment, i
15、t is often required that one can verify that electronic data has not been altered in an unauthorized manner and that one can provide assurance that a message has been originated by an entity in possession of the secret key. A MAC (Message Authentication Code) algorithm is a commonly used data integr
16、ity mechanism that can satisfy these requirements. This part of ISO/IEC 9797 specifies four MAC algorithms using universal hash-functions: UMAC, Badger, Poly1305-AES and GMAC. These mechanisms can be used as data integrity mechanisms to verify that data has not been altered in an unauthorized manner
17、. They can also be used as message authentication mechanisms to provide assurance that a message has been originated by an entity in possession of the secret key. The strength of the data integrity mechanism and message authentication mechanism is dependent on the length (in bits) and secrecy of the
18、 key, on the length (in bits) of a hash-code produced by the hash-function, on the strength of the hash- function, on the length (in bits) of the MAC, and on the specific mechanism. NOTE A general framework for the provision of integrity services is specified in ISO/IEC 10181-6 7 . INTERNATIONAL STA
19、NDARD ISO/IEC 9797-3:2011(E) ISO/IEC 2011 All rights reserved 1Information technology Security techniques Message Authentication Codes (MACs) Part 3: Mechanisms using a universal hash-function 1 Scope This part of ISO/IEC 9797 specifies the following MAC algorithms that use a secret key and a univer
20、sal hash-function with an n-bit result to calculate an m-bit MAC based on the block ciphers specified in ISO/IEC 18033-3 and the stream ciphers specified in ISO/IEC 18033-4: a) UMAC; b) Badger; c) Poly1305-AES; d) GMAC. 2 Normative references The following referenced documents are indispensable for
21、the application of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies. ISO/IEC 9797-1, Information technology Security techniques Message Authentication Codes (MACs) Part 1: Mec
22、hanisms using a block cipher ISO/IEC 18031, Information technology Security techniques Random bit generation ISO/IEC 18033-3, Information technology Security techniques Encryption algorithms Part 3: Block ciphers ISO/IEC 18033-4, Information technology Security techniques Encryption algorithms Part
23、4: Stream ciphers 3 Terms and definitions For the purposes of this document, the terms and definitions given in ISO/IEC 9797-1 and the following apply. 3.1 empty string string of symbols of length zero ISO/IEC 9797-3:2011(E) 2 ISO/IEC 2011 All rights reserved3.2 key sequence of symbols that controls
24、 the operation of a cryptographic transformation 3.3 nonce number used once 3.4 prime number positive integer greater than 1 which has no integer divisors other than 1 and itself 3.5 tag result of a MAC algorithm, adjoined to a possibly encrypted message to provide integrity protection 3.6 universal
25、 hash-function function mapping strings of bits to fixed-length strings of bits, indexed by a parameter called the key, satisfying the property that for all distinct inputs, the probability over all keys that the outputs collide is small NOTE Universal hash-functions were introduced by Carter and We
26、gman 4 , and their application in MAC algorithms was first described by Wegman and Carter 10 . 4 Symbols and abbreviated terms The following notation is used in this part of ISO/IEC 9797: bit(S,n) Returns the integer 1 if the n thbit of the string S is 1, otherwise returns the integer 0 (indices beg
27、in at 1). bitlength(S) Length of a string S in bits. bitstr2uint(S) The non-negative integer whose binary representation is the string S. More formally, if S is t bits long then bitstr2uint(S) = 2 t-1* bit(S,1) + 2 t-2* bit(S,2) + . + 2 1* bit(S,t-1) + bit(S,t). NOTE Bit strings are treated big-endi
28、an, i.e. the first bit is the most significant. blocklen Block length of the underlying block cipher in octets. ceil Rounding-up operation, i.e. if x is a floating-point number, then ceil(x) is the smallest integer n with n x. Enc(K, X) Encryption of a plaintext block X under a key K using a block c
29、ipher Enc. floor Rounding-down operation, i.e. if x is a floating-point number, then floor(x) is the largest integer n with n x. H Hash value. K Master key. K EEncryption key. K HHash key. keylen Block cipher key length in octets. ISO/IEC 9797-3:2011(E) ISO/IEC 2011 All rights reserved 3log 2Binary
30、logarithm function. M Message. MAC Message authentication code. max Largest value amongst those given as argument. N Nonce. octetlength(S) Length of a string S in octets (where S is assumed to have bitlength a multiple of 8). octetstr2uint(S) The non-negative integer defined as S0 + 2 8* S1 + 2 16*
31、S2 + . + 2 8n-8* Sn-1, where n = octetlength(S). NOTE Octet strings are treated little-endian, i.e. the first octet is the least significant. prime(n) Largest prime number smaller than 2 n , for any positive integer n. NOTE The prime numbers used in this part of ISO/IEC 9797 are listed in Table 1. T
32、able 1 Prime numbers n prime(n) prime(n) in hexadecimal format 32 2 32- 5 0x FFFFFFFB 36 2 36- 5 0x 0000000F FFFFFFFB 64 2 64- 59 0x FFFFFFFF FFFFFFC5 128 2 128- 159 0x FFFFFFFF FFFFFFFF FFFFFFFF FFFFFF61 130 2 130- 5 0x 00000003 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFB Si The i-th octet of the string S
33、(indices begin at 0). NOTE The specification for UMAC in 6.2 uses a starting index of 1 rather than 0. Si.j The substring of S consisting of octets i through j. taglen Length of the tag, in octets. uint2bitstr(x,n) The n-octet string S such that bitstr2uint(S) = x. uint2octetstr(x,n) The n-octet str
34、ing S such that x = octetstr2uint(S). X| sLeft-truncation of the block of bits X: if X has bit-length greater than or equal to s, then X| sis the s-bit block consisting of the left-most s bits of X. X| sRight-truncation of the block of bits X: if X has bit-length greater than or equal to s, then X|
35、sis the s-bit block consisting of the right-most s bits of X. X1 Right shift of a block of bits X by one position: the leftmost bit of Y = X1 will always be set to zero. |X| The length of X in bits. zeropad(S,n) For positive integer n, the string S is padded with zero-bits to the nearest positive mu
36、ltiple of n octets. Formally, zeropad(S,n) = S | T, where T is the shortest string of zero-bits (possibly empty) so that S | T is non-empty and n divides octetlength(S | T). ISO/IEC 9797-3:2011(E) 4 ISO/IEC 2011 All rights reserved Bit-wise exclusive-OR operation on bit-strings. If A, B are strings
37、of the same length then A B is the string equal to the bit-wise logical exclusive-OR of A and B. Bit-wise logical AND operation on bit-strings. If A, B are strings of the same length then A B is the string equal to the bit-wise logical AND of A and B. + 32Addition of two 32-bit strings, resulting in
38、 a 32-bit string. More formally, S + 32T = uint2bitstr(bitstr2uint(S) + bitstr2uint(T) mod 2 32 , 4). + 64Addition of two 64-bit strings, resulting in a 64-bit string. More formally, S + 64T = uint2bitstr(bitstr2uint(S) + bitstr2uint(T) mod 2 64 , 8). * Multiplication operator on integers. * 64Multi
39、plication of two 64-bit strings, resulting in a 64-bit string. More formally, S * 64T = uint2bitstr(bitstr2uint(S) * bitstr2uint(T) mod 2 64 , 8). NOTE The operations + 32 , + 64and * 64correspond well with the addition and multiplication operations that are performed efficiently by modern computers
40、. | Concatenation of two bit strings. If A and B are bit strings of lengths a and b respectively, then A | B is the bit string of length a+b whose left most (first) a bits are the bits of A, and whose rightmost (last) b bits are the bits of B. 0 nString consisting of n zero-bits. 1 nString consistin
41、g of n one-bits. A bit-string with zero length. Multiplication in the field GF(2 128 ). The defining polynomial that determines the representation of GF(2 128 ) is . 128 7 2 1 NOTE Let U and V be 128-bit blocks. Then the 128-bit block W = U V can be computed as follows: a) Let W = 0 128and Z = U. b)
42、 For i = 1, 2, , 128, perform the following two steps: 1) If bit(V,i) = 1 then let W = W Z; 2) If bit(Z,128) = 0 then let Z = Z1; otherwise let Z = (Z1) (11100001 | 0 120 ). Variables in capital letters denote strings; variables in small letters are integers. 5 General model Message authentication c
43、odes based on universal hashing makes use of an encryption algorithm (block cipher or stream cipher). This type of message authentication codes has the special property that their security can be proven under the assumption that the encryption algorithm is secure. MAC algorithms based on universal h
44、ashing require a master key K, a message M and a nonce value N as input. A MAC is computed using the following sequence of steps: 1) Key preprocessing. The master key K is used to generate a hash key K Hand an encryption key K E . 2) Message preprocessing. The input message M is encoded into the nec
45、essary input format for the hash-function. ISO/IEC 9797-3:2011(E) ISO/IEC 2011 All rights reserved 53) Message hashing. The encoded message is hashed under the control of the hash key K H , using a universal hash-function. The result is a hash value H of fixed, short length. 4) Finalization. The has
46、h value H is encrypted under the control of the encryption key K E . The result is the message authentication code MAC. For all mechanisms presented in this part of ISO/IEC 9797, the length of the input message is expected to consist of an integer number of octets. NOTE For all universal-hash based
47、MAC algorithms, it is of utmost importance that a different nonce is used for each new message that is authenticated under the same key. If this security requirement is not met, the security of the algorithm is severely reduced. 6 Mechanisms 6.1 Introduction In this clause, four mechanisms using a u
48、niversal hash-function are specified. 6.2 UMAC 6.2.1 Description of UMAC UMAC is a family of four MAC algorithms optimized for different output bit-lengths, denoted by UMAC-32, UMAC-64, UMAC-96, and UMAC-128. UMAC can be used with any block cipher from ISO/IEC 18033-3. If the block cipher used has k
49、ey length |K| bits and block length |B| bits, then UMAC uses a |K|-bit key K, and the length of the nonce N is between 8 and |B| bits. Depending on which member of the UMAC family is used, the length of the MAC produced is 32, 64, 96, or 128 bits. This is represented by the parameter taglen, which can be 4, 8, 12 or 16 octets, respectively. The length of the input message shall be less than 2 67octets. The message input to the UMAC func