ISO/IEC 11770-3:2008(E)
10
© ISO/IEC 2008 – All rights reserved
8 Key commitment
Clause 10 describes key agreement mechanisms where the established key is the result of applying a one-
way function of the private key-agreement keys. However, one entity may know the other entity’s public key or
key token prior to choosing their private key. The entity can control the value of s bits in the established key, at
the cost of generating 2
s
candidate values for their private key-agreement key in the time interval between
discovering the other entity’s public key or key token and choosing their own private key [19].
A way to address this concern (if it is a concern) at the cost of one additional message/pass in the protocol is
through the use of key commitment. Commitment can be done by having the first entity hash the public key or
key token and send the hash-code to the second entity, the second entity replies with his public key or key
token and the first entity replies with his public key or key token, which the second entity can hash and verify
that the result is equal to the hash-code sent earlier.
ISO 22895 defines cryptographic syntax and processing that can be used to implement the key commitment
protocol defined in this part of ISO/IEC 11770. A DigestedData message, with its optional content absent, is
used to send the key commitment hash along with the digest algorithm and any associated parameters. The
same message with its optional content present is used to exchange the keys. The message recipient retains
the first hash and ensures that this value is identical to the hash on the keys in the second message. When
origin authentication of the key commitment is needed, the DigestedData message can be encapsulated in a
SignedData message. These ISO 22895 messages can be represented in a compact binary form or as XML
markup.
9 Key confirmation
Explicit key confirmation is the process of adding additional messages to a key establishment protocol
providing implicit key authentication so that explicit key authentication and entity authentication are provided.
Explicit key confirmation can be added to any method that does not possess it inherently. Key confirmation is
typically provided by exchanging a value that can (in all likelihood) only be calculated correctly if the key
establishment calculations were successful. Key confirmation from entity A to entity B is provided by entity A
calculating a value and sending it to entity B for confirmation by entity B of entity A’s correct calculation. If
mutual key confirmation is desired, then each entity sends a different value to the other.
Key confirmation is often provided by subsequent use of an established key, and if something is wrong then it
is immediately detected. This is called implicit key confirmation. Explicit key confirmation in this case may be
unnecessary. If one entity is not online (for example, in one-pass protocols used in store and forward (email)
scenarios), then it is simply not possible for the other entity to obtain key confirmation. However, sometimes a
key is established yet used only later (if at all), or perhaps the key establishment process may simply not know
if the resulting key will be used immediately or not. In these cases, it is often desirable to use a method of
explicit key confirmation, as it may otherwise be too late to correct an error once detected. Explicit key
confirmation can also be seen as a way of “firming up” some security properties during the key establishment
process and may be warranted if following a process of conservative protocol design.
An example method of providing key confirmation using a MAC is as follows:
Entities A and B first perform one of the key establishment procedures specified in Clauses 10 and 11 of this
part of ISO/IEC 11770. As a result, they expect to share a secret MAC key K
AB
. They then perform the
following procedure.
1) Entity B forms the message M octet string consisting of the message identifier octet 0x02, entity B’s
identifier, entity A’s identifier, the octet string KT
B
corresponding to entity B’s key token (or omit the
fields if such does not exist), the octet string KT
A
corresponding to entity A’s key token (or omit the
fields if such does not exist), the octet string P
B
corresponding to entity B’s public key-establishment
key (or omit the fields if such does not exist), the octet string P
A
corresponding to entity A’s public
key-establishment key (or omit the fields if such does not exist) and if present optional additional
Text1:
Text1, || P || P || KT || KT ||A || B || 02 M
ABAB
=