|
|
|
Jim DrayNISTFebruary 9, 1996The draft AMI specification is NOT in any way an official NIST publication, is subject to change, and comes with no guarantee of an eventual FIPS. The purpose of this document is to solicit comments and encourage proof-of-concept prototyping efforts. Comments should be addressed to the author at:
Jim Dray, National Institute of Standards and Technology
SPECIFICATION FOR THE PROPOSED NIST
AUTHENTICATION MODULE INTERFACE STANDARD
***** PRELIMINARY DRAFT *****
February 9, 1996
TABLE OF CONTENTS
1. INTRODUCTION ....................................... aa
2. CONFORMANCE ........................................ bb
3. DESIGN GOALS ....................................... cc
4. SYSTEM MODEL ....................................... dd
4.1 Data Objects ............................... ee
4.1.1 Client Credentials Object Class .... ff
4.1.2 Client Session Object Class ........ gg
4.2 Multiple Authentication Sessions ........... hh
4.3 Security Administration Issues ............. ii
5. FUNCTIONAL SPECIFICATION ........................... jj
5.1 Function Index ............................. kk
5.2 Notation ................................... ll
5.3 Functional Specification ................... mm
APPENDIX A - Example Authentication Sequences .............. nn
APPENDIX B - Example ASN.1 Encoding of AMI Message Set ..... oo
1. INTRODUCTION
This standard provides the specification for a general purpose
interface between an authentication module and any entity
communicating with the module. An authentication module may
consist of software, hardware, or a combination of both. The
primary functions of an authentication module are to collect
authentication data from a human user or other claimant in a
distributed computing environment, verify the identity of the
claimant based on this data, and convey this decision to other
entities in a secure manner. In some cases, the authentication
module may act as both claimant and verifier on behalf of locally
authenticated entities in mutual authentication exchanges. Some
example authentication modules include the software component of
an operating system which retrieves and verifies passwords, a
portable authentication token, and a biometric authentication
device.
2. CONFORMANCE
Conformance to the standard does not require implementation of
all specified functions; authentication module designers may add
functions which extend the core specification in a manner
consistent with the conventions of the standard, or choose a subset
thereof to match the capabilities of a particular technology.
Authorization and access control issues are outside the scope of
this standard.
3. DESIGN GOALS
Two primary criteria were used in the design of the
Authentication Module Interface (AMI). First, the functionality
provided by the interface supports a general set of
authentication processes which are applicable to as broad a range
of authentication modules as possible. These processes include
support for multiple concurrent authentication sessions, entity
authentication based on the exchange of static or dynamic
authentication data, symmetric, asymmetric or hash based
cryptographic authentication techniques, unilateral and bilateral
exchanges. Support for device specific system administration and
maintenance functions is not included in the AMI since these
functions are implementation dependent.
Placement of the AMI at a specific layer within a multilayer
architecture is the second design criterion. The AMI resides
immediately above the highest level communications layer of the
interface stack between application level programs and
authentication modules, allowing applications to communicate with
these modules with minimal concern for communications protocols
and hardware differences. Conceptually, the AMI is the dividing
line between layers involved in the security context of messages
and lower level layers that perform communications functions.
FIGURE - Layered Interface Model
4. SYSTEM MODEL
The scope of this standard is restricted to specification of the
interface between an authentication module and other entities.
However, the primary purpose of the functions which comprise the
AMI is to instruct an authentication module to perform operations
which involve data objects stored within the module. It is
therefore necessary to provide a logical description of these
data objects from the perspective of the interface. The low
level format and details of the internal manipulation of these
objects are not relevant to the interface specification and are
beyond the scope of this standard.
4.1 Data Objects
FIGURE - User -- Host -- AM [CSO - CCO]
The AMI specification is based on a conceptual model of the
authentication process with three primary object classes. These
include Module Information, Client Credentials, and Client
Session classes. There is generally one instance of the Module
Information object for a given authentication module, which
contains information about the configuration and current
operational status of the module. The Module Information object
is not directly related to authentication processes and will not
be discussed in detail.
Client Credentials objects are created for each client that
registers with a given module, and these objects exist for the
life of the module or until explicitly terminated. Client
Session objects are created when a registered client
authenticates successfully to the module, and terminate when the
client's authentication session ends or the module is reset.
Authentication modules must be able to distinguish between
security administrators and other clients, since security
administrators will have a unique set of privleges in most
implementations.
4.1.1 Client Credentials Object Class
Authentication modules will contain one Client Credentials
object for each registered client identity. The AMI places no
restriction on the number of unique identities that can be
assigned to one client, since the number of identities that a
client can assume is a policy issue that will vary from system to
system. The Client Credentials class allows for the binding of
static authentication data (i.e. passwords and cryptographic
keys) to the identity of one client. Client Credentials objects
are created by a security administrator through a registration
process that associates labeled static authentication data with a
client name. The identity of the security administrator who created a
Client Credentials object is contained in the object, so that the
authentication module can enforce appropriate controls for
subsequent security administration procedures involving the
object. A Client Credentials object is therefore owned by both
the client and the security administrator who initially created the
object.
4.1.2 Client Session Object Class
A client may authenticate to the module through a variety of
mechanisms involving passwords and/or cryptographic keys, as
determined by the capabilities of a given implementation.
Successful authentication of a client shall result in the
creation of a Client Session object linked to that client's
identity and logically separate from all other Client Session
objects. Likewise, an authentication module may prove the
identity of a client with a valid authentication session to
another entity through a variety of mechanisms. It is expected
that not all module implementations will support all
authentication mechanisms; entities can determine which
mechanisms a given module implements from the output of the
Status function. Client Session objects shall exist for the time
period specified in the Lifetime (L) field or until explicitly
terminated.
Once a Client Session object is created, the mechanism used to
prove the client's identity to another entity depends on the
degree of coupling between the authentication module and the
other entity. For example, a software module which uses static
passwords for authentication may be an integral component of the
operating system on a workstation. Because the authentication
module is tightly integrated with other components of the
operating system, these components can access the Client Session
objects directly to determine the authentication status of
various clients. No further effort beyond the creation and
termination of Client Session objects is required of the
authentication module to communicate authentication status.
In a loosely coupled authentication system, more sophisticated
methods are used to communicate authentication status. As an
example, some authentication modules are physical tokens
containing a microprocessor and memory. Clients first
authenticate to the token through submission of a password and
physical possession of the token, and then use the token to prove
identity to other entities. In these situations, entities
outside the boundaries of the token do not have direct access to
Client Session objects within the token. The token must
communicate the existence of a valid Client Session object to
outside entites upon request in a secure manner. This process
requires a formal exchange between the token and the outside
entity through the AMI, which may also involve authentication of
the entity to the token to assure the client of the entity's
identity (bidirectional authentication).
4.2 Multiple Authentication Sessions
The AMI supports multiple concurrent authentication sessions
through the use of an optional client label and digital signature
included in each message as subfields of the CMDx field. These
fields are optional because single session authentication modules
do not need to differentiate between users. However,
multisession modules must have a mechanism for associating
messages with the appropriate session. The client label
identifies the source of the message, and the digital signature
proves this identity and provides message integrity. This
process is equivalent to continuous re-authentication on a per
message basis. If used, the signature value will be calculated
on the entire message excluding the signature itself.
This standard does not specify the internal mechanisms that a
multi-session authentication module will use to isolate client
session objects from each other; these mechanisms will generally
be provided by a multitasking operating system or equivalent.
FIGURE - Multi-Session Authentication Modules
4.3 Security Administration Issues
Security models which differentiate between the roles of security
administrator and other clients imply the presence of mechanisms
to enforce this distinction. The initial registration of a
security administrator is a potential problem because most
security systems do not have knowledge that would allow them to
distinguish between a legitimate security administrator and any
other entity prior to installation and use. These systems are
generally installed in an uninitialized state, and information
which allows the system to identify the security administrator(s)
is loaded as one of the first steps after the system becomes
operational. The system is therefore in a vulnerable state for
some period of time before a valid security administrator's
credentials are loaded, since anyone with physical access to the
system could in fact become the security administrator by loading
security administrator credentials into the authentication
module. The AMI cannot protect against such attacks;
organizational policies which restrict access to the system prior
to the registration of a valid system security administrator must
be enforced.
5. FUNCTIONAL SPECIFICATION
5.1 Function Index
5.2.1 Reset General device reset.
5.2.2 Reset_CS Reset a specific Client session.
5.2.3 Status Return current device status.
5.2.4 Bind_EF Set execution sequence for a
client.
5.2.5 Bind_LF Bind message mnemonic.
5.2.6 Bind_ADS Bind static authentication data
to a client identity.
5.2.7 Generate_ADS Generate static authentication
data.
5.2.8 Verify_ADS Compare static authentication
data to previously stored
value.
5.2.9 Return_ADS Return static authentication
data.
5.2.10 Delete_ADS Delete previously stored static
authentication data.
5.2.11 Accept_ADD Receive dynamic authentication
data for processing.
5.2.12 Generate_ADD Generate dynamic authentication
data.
5.2 Notation
The notation used to specify data elements for each function is
an extension of the notation used in the current draft of FIPS
standard JJJ for public key cryptographic entity authentication
mechanisms. The vertical bar symbol "|" represents concatenation
of data fields to form a message string. Functions within an
authentication module are invoked through the interface by
passing a message string to the module. CMDx (i.e. CMD1,
CMD2,...) is a compound field containing the function name,
client name, and signature value. The client name and signature
values are optional fields because they are not relevant to
single user modules. In the interest of generality, message
formats are not specified at the bit level.
The module's response to a message consists of a positive (+) or
negative (-) acknowledgement with an optional error code field
ECODE. In come cases a data field RDATA is included in the response.
Abbreviations for field names:
CMDx: Message field containing the function label,
optional client name and digital signature
ADD: Dynamic authentication data
ADDL: Dynamic authentication data label
ADS: Static authentication data
ADSL: Static authentication data label
ADT: Authentication data type (password, key, etc.)
L: Lifetime for a Client Session object
ECODE: Optional error code response field
RDATA: Response data field
+/-: Positive/negative response
5.3 Functional Specification
5.3.1 Reset
Format : CMD1
Objects : Client Session (all instances)
Return : +/- [| ECODE]
Reset the module to a power-on state, clearing all temporary
data. This message terminates all active Client Session objects.
The session identifier component of the CMD1 string is present
but has no meaning since this message affects all sessions.
5.3.2 Reset_CS
Format : CMD2
Objects : Client Session
Return : +/- [| ECODE]
Terminate authentication session for specific client.
5.3.3 Status
Format : CMD3
Objects : Module Configuration
Return : +/- [| ECODE] | RDATA
Return information about the current status of all authentication
sessions and type of the device in RDATA. The session identifier
component of the CMD1 string is present but has no meaning since
this message does not affect individual sessions.
For the Status message, RDATA contains two subfields:
Implementation-Dependent Data (IID) and
Implementation-Independent Data (IDD). The content of the IDD
subfield is not defined by this standard. The IID subfield
contains the following information:
1. Client identifier for each existing Client Session
Object
2. Logical machine state for the authentication module
3. Authentication mechanisms supported
5.3.4 Bind_EF
Format : CMD4 | CMDA | CMDB [| CMDC | CMDE ...]
Objects : Client Credentials, Client Session
Return : +/- [| ECODE]
Set the execution sequence of functions for a client. The
function of highest precedence is CMDA in the list. Once this
sequence has been set, the client cannot execute a specified
function until the required preceeding function(s) in the list
have been executed successfully.
5.3.5 Bind_LF
Format : CMD5 | CMDA | CMDB
Objects : Function Labels
Return : +/- [| ECODE]
Bind the function currently labeled CMDA to the new label CMDB.
Some implementations will use a static command label binding,
whereby the label format is predetermined and cannot be changed.
In these cases, this function will return an error code
indicating that the attempted label binding failed because the
authentication module supports only static binding.
For implementations that use dynamic command label binding, it is
recommended that functions should be initially referenced by
ordinal value (1-13) as defined in this standard for reasons of
interoperability. Although mnemonic function labels are used in
the standard for convenience, they are not mandatory. The session
identifier component of the CMD1 string is present but has no
meaning since this message affects all sessions. This message
requires an active Client Session Object for the security
administrator.
NOTE: This function may be removed in future revisions of the
AMI specification, since an implementation is free to use any
command labeling convention it chooses. Dynamic labeling would
only be of use in situations where labels need to be loaded as
part of the authentication module initialization process, or when
it is anticipated that the label format might change during the
lifetime of the module. This might be necessary if, for example,
an authentication module were used with multiple host systems
having different label conventions.
5.3.6 Bind_ADS
Format : CMD6 | ADSL | ADS | ADT
Objects : Client Credentials
Return : +/- [| ECODE]
Associate static authentication data ADS of type ADT
with specified client. The ADSL field contains the name
that will be used to index the authentication data. The
type specified by ADT shall be associated with the authentication
data ADS within a Client Credentials Object. The authentication
module will use the authentication data type to determine which
comparison algorithm to use in subsequent authentications. For
example, the ADT field might contain the ASCII string
"Biometric:Voiceprint:AlgorithmXY". The authentication module
would then know that ADS contains voiceprint data that will be
compared against live scan data using AlgorithmXY as requested.
Static data marked as cryptographic keys shall only be used as
such.
5.3.7 Generate_ADS
Format : CMD7 | ADSL | ADT [| L]
Objects : Client Credentials
Return : +/- [| ECODE]
Generate static authentication data of type ADT (password, crypto
key) and associate with specified client. ADSL contains the name
used to index the static authentication data. Generation of
static authentication data shall be in accordance with applicable
Federal Standards for password and key generation, and the static
authentication data shall exist for the lifetime specified in the
optional L field if present.
5.3.8 Load_ADS
Format : CMD7B | ADSL | ADS | ADT | E [| ADSL2] [| L]
Objects : Client Credentials
Return : +/- [| ECODE]
Receive static authentication data ADSL | ADS of type ADT
(password, crypto key) and associate with specified client. ADSL
contains the name used to index the static authentication data.
If cryptographic protection is indicated by the E field, the
optional ADSL2 field contains the name of the cryptographic key
to be used. This function may create a Client Credentials
object, in which case a security administrator Client Session object
must exist. If created, the Client Session object shall exist
for the lifetime specified in the optional L field if present.
5.3.9 Verify_ADS
Format : CMD8 | ADSL | ADS | L | E [| ADSL2] [| L]
Objects : Client Session
Return : +/- [| ECODE]
Receive static authentication data ADSL | ADS for specified
client. Perform appropriate comparison of static authentication
data with value stored by Bind_ADS and initiate a session object
for the client if the comparison succeeds. The Client Session
object shall exist for the time period contained in the L field.
Static authentication data may be ciphertext or plaintext as
indicated by the E field. If ciphertext, the authentication
module shall decrypt the encrypted authentication data using the
cryptographic key stored in the client credentials under the
label ADL2.
The comparison algorithm for static authentication data is
selected by the authentication module based on the authentication
data type associated with original static authentication data
stored in the client credentials object by a prior Bind_ADS or
Generate_ADS message.
5.3.10 Return_ADS
Format : CMD9 | ADSL | E [| ADSL2]
Objects : Client Credentials
Return : +/- [| ECODE] | RDATA
Return static authentication data ADSL associated with specified
client in RDATA. Option E allows cryptographic protection for
confidentiality through encryption under the key specified by
optional field ADSL2.
5.3.11 Delete_ADS
Format : CMD10 | ADSL
Objects : Client Credentials
Return : +/- [| ECODE]
Remove static authentication data ADSL associated with specified
client. Passwords and cryptographic keys may be deleted
individually but deletion of the last static authentication data
element shall automatically delete the Client Credentials object.
This function requires an active Client Session object for the
module security administrator or the client who owns the client
credentials object.
5.3.12 Accept_ADD
Format : CMD11 | ADD | ADT | L | CRYPT [| ADSL] [| L]
Return : +/- [| ECODE] [| RDATA]
This function supports several authentication mechanisms based on
dynamic (time-variant) data. The dynamic authentication data is
received in the ADD field, and processed according to the values
of the ADT and CRYPT fields. If the CRYPT field indicates a
cryptographic operation, the optional ADSL field contains the
name of the symmetric or asymmetric key to be used.
Authentication mechanisms include synchronized passwords and
random challenge protocols using symmetric, asymmetric or hash
based techniques. Both unilateral and bilateral authentication
are available. Resulting Client Session objects shall exist for
the time period specified in the L field or until explicitly
terminated. Processing of the ADD field proceeds as follows:
ADT CRYPT ACTION
------ ------ -------------------------------------------------
SYNC X Authentication of Client to Module via
synchronized authentication data. The Module
compares ADD against a synchronized internal
value, and initiates a client session if the
values match.
RC_O SYM Response verification step of a challenge
response protocol using symmetric key
cryptography. ADD contains the encrypted
response to a challenge originated by the Module
in a previous Generate_ADD message. The module
decrypts the ADD value using a secret key shared
with claimant and compares the plaintext to the
original stored value. If the values match, a
session is created for the Client or the Client
is notified of the verification of a host
identity.
RC_I SYM Generate encrypted response to a random challenge
contained in the ADD field to prove the identity
of a Client to a host. The Module encrypts
the random challenge using a symmetric key
obtained from the Client Object, which is shared
with the target system. Return the encrypted
response in RDATA.
RC_O ASYM Equivalent to RC_O/SYM process, except the ADD
field contains a signature value on a challenge
previously generated by the Module. The Module
verifies the signature using the public key of
the Client and initiates a session if one does
not already exist.
RC_I ASYM Equivalent to the RC_I/SYM process, except the
ADD field contains a random value which will be
signed by the Module using the Client's private
key. The signature is returned in RDATA.
5.3.13 Generate_ADD
Format: CMD12 | ADD | ADT | E
Objects : Client Session
Return : +/- [| ECODE] | RDATA
Generate dynamic authentication data and store generated value in
a temporary area associated with the Client Session object for
use in future verification. Return in plaintext or encrypted
(signed) form in RDATA. This function can be used as the first
step in a random challenge-response authentication protocol, in
which case a call would be made to the Accept_ADD function to
complete the protocol. Generate_ADD can also be used to generate
random numbers for other purposes.
APPENDIX A: EXAMPLE AUTHENTICATION SEQUENCES
A1. OVERVIEW
Sections A2 through A5 describe example message sequences for
module initialization, user to module authentication, module to
module authentication, and client session termination. The module
used for this example is initialized for security administrator
authentication via a password. In addition, a client credentials
object containing a password, a secret key, and a public/private
key pair is created for one user. In this example, the host
system inserts the string "NoSig" in the optional signature
subfield to indicate that signatures are not calculated on each
message. Some implementations may choose to eliminate the
signature subfield entirely in this situation.
A2. MODULE INITIALIZATION
The authentication module is assumed to be in an uninitialized
state prior to this series of exchanges. The module is reset,
and then client credentials objects are created for a security
administrator "Security_Administrator" and a user "User1". A
cryptographic key is not installed for the security
administrator, because he/she will authenticate to the module
using a password. The user's client credentials object contains
three forms of static authentication data: a password, a secret
cryptographic key, and a public/private key pair. A client
session object can be created using any of the three forms of
static authentication data. The {public/private key pair} field
contains the data for User1's public and private keys, in an
implementation-dependent format.
1. CMD1 = "Reset | NoClient | NoSig"
Message to module = CMD1
Response from module = "+"
2. CMD6 = "Bind_ADS | Security_Administrator | NoSig"
Message to module = CMD6 | "SA_Password1" | "R)1%a7" | "Password"
Response from module = "+"
3. CMD8 = "Verify_ADS | Security_Administrator | NoSig"
Message to module = CMD8 | "SA_Password1" | "R)1%a7" |
"Plaintext"
Response from module = "+"
4. CMD6 = "Bind_ADS | User1 | NoSig"
Message to module = CMD6 | "User1_Password1" | "zxmcov" | "Password"
Response from module = "+"
5. CMD6 = "Bind_ADS | User1 | NoSig"
Message to module = CMD6 | "User1_Key1" | "f0335c75a981cca1" |
"Secret_Key"
Response from module = "+"
6. CMD6 = "Bind_ADS | User1 | NoSig"
Message to module = CMD6 | "User1_Key2" | {public/private key pair} |
"Public/Private_Keys"
Response from module = "+"
A3. USER TO MODULE AUTHENTICATION
The module is reset by a host computer system, and then "User1"
authenticates to the module by submitting the password "zxmcov".
A client session object now exists for "User1" until explicitly
terminated.
1. CMD1 = "Reset | NoClient | NoSig"
Message to module = CMD1
Response from module = "+"
2. CMD8 = "Verify_ADS | User1 | NoSig"
Message to module = CMD8 | "User1_Password1" | "zxmcov" |
"Plaintext"
Response from module = "+"
A4. MODULE TO MODULE AUTHENTICATION
The existence of "User1"'s client session object within module 1
is communicated to a second module, module 2, through a signature
based authentication scheme. Module 2 is instructed to generate
a random challenge represented by the string "Time_Variant_Data".
The random challenge is conveyed to module 1 in the Accept_ADD
message. The Module retrieves the private component of the
public/private key pair for "User1" and generates a digital
signature on the random challenge, as indicated by the
values of the ADT and CRYPT fields. The signature is returned to
the host in the RDATA field of the message response, and conveyed
to module 2 in another Accept_ADD command. Module 2 then
verifies the signature with "User1"'s public key. If the
signature is valid, module 1 has successfully proven "User1"'s
identity to module 2. Module 2 creates its own client session
object for "User1".
1. CMD13 = "Generate_ADD | User1 | NoSig"
Message to module 2 = CMD11
Response from module 2 = "+" | "Time_Variant_Data"
2. CMD11 = "Accept_ADD | User1 | NoSig"
Message to module 1 = CMD11 | "Time_Variant_Data" | "RC_I" | "ASYM"
| "User1_Key2"
Response from module 1 = "+" | "{Signature Value}"
3. CMD11 = "Accept_ADD | User1 | NoSig"
Message to module 2 = CMD11 | {Signature Value} | "RC_O" | "ASYM"
| "User1_Key2"
Response from module 2 = "+"
A5. SESSION TERMINATION
User1's client session object is terminated at the appropriate
time through a Reset_CS message.
1. CMD2 = "Reset_CS | User1 | NoSig"
Message to module = CMD2
Response from module = "+"
APPENDIX B: EXAMPLE ASN.1 ENCODING OF AMI MESSAGE SET
In progress.
The draft AMI specification is NOT in any way an official NIST
publication, is subject to change, and comes with no guarantee of
an eventual FIPS. The purpose of this document is to solicit
comments and encourage proof-of-concept prototyping efforts.
Comments should be addressed to the author at:
Jim Dray, National Institute of Standards and Technology |