draft-ietf-kitten-gssapi-prf-04.txt   draft-ietf-kitten-gssapi-prf-05.txt 
NETWORK WORKING GROUP N. Williams NETWORK WORKING GROUP N. Williams
Internet-Draft Sun Internet-Draft Sun
Expires: December 15, 2005 June 13, 2005 Expires: January 25, 2006 July 24, 2005
A PRF API extension for the GSS-API A PRF API extension for the GSS-API
draft-ietf-kitten-gssapi-prf-04.txt draft-ietf-kitten-gssapi-prf-05.txt
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 33 skipping to change at page 1, line 33
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on December 15, 2005. This Internet-Draft will expire on January 25, 2006.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2005). Copyright (C) The Internet Society (2005).
Abstract Abstract
This document defines a Pseudo-Random Function (PRF) extension to the This document defines a Pseudo-Random Function (PRF) extension to the
Generic Security Service Application Programming Interface (GSS-API) Generic Security Service Application Programming Interface (GSS-API)
for keying application protocols given an established GSS-API for keying application protocols given an established GSS-API
security context. The primary intended use of this function is to security context. The primary intended use of this function is to
key secure session layers that don't or cannot use GSS-API per- key secure session layers that don't or cannot use GSS-API per-
message MIC (message integrity check) and wrap tokens for session message MIC (message integrity check) and wrap tokens for session
protection. protection.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Conventions used in this document . . . . . . . . . . . . . . 3 1.1 Conventions used in this document . . . . . . . . . . . . . . 3
2. GSS_Pseudo_random() . . . . . . . . . . . . . . . . . . . . . 3 2. GSS_Pseudo_random() . . . . . . . . . . . . . . . . . . . . . 3
2.1 C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1 C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Java Bindings . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Java Bindings . . . . . . . . . . . . . . . . . . . . . . . . 6
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
4. Security Considerations . . . . . . . . . . . . . . . . . . . 6 4. Security Considerations . . . . . . . . . . . . . . . . . . . 7
5. References . . . . . . . . . . . . . . . . . . . . . . . . . . 7 5. References . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.1 Normative References . . . . . . . . . . . . . . . . . . . . . 7 5.1 Normative References . . . . . . . . . . . . . . . . . . . . . 7
5.2 Informative References . . . . . . . . . . . . . . . . . . . . 7 5.2 Informative References . . . . . . . . . . . . . . . . . . . . 8
Author's Address . . . . . . . . . . . . . . . . . . . . . . . 8 Author's Address . . . . . . . . . . . . . . . . . . . . . . . 8
Intellectual Property and Copyright Statements . . . . . . . . 9 Intellectual Property and Copyright Statements . . . . . . . . 9
1. Introduction 1. Introduction
A need has arisen for users of the GSS-API to key applications' A need has arisen for users of the GSS-API to key applications'
cryptographic protocols using established GSS-API security contexts. cryptographic protocols using established GSS-API security contexts.
Such applications can use the GSS-API for authentication, but not for Such applications can use the GSS-API for authentication, but not for
transport security (for whatever reasons), and since the GSS-API does transport security (for whatever reasons), and since the GSS-API does
not provide a method for obtaining keying material from established not provide a method for obtaining keying material from established
security contexts such applications cannot make effective use of the security contexts such applications cannot make effective use of the
GSS-API. GSS-API.
To address this need we define a pseudo-random function (PRF) To address this need we define a pseudo-random function (PRF)
extension to the GSS-API. extension to the GSS-API.
Though this document specifies an abstract API as an extension to the
GSS-API version 2, update 1, and though it specifies the bindings of
this extension for the C and Java programming languages, it does not
specify a revision of the GSS-API and so does not address the matter
of how portable applications detect support for and ensure access to
this extension. We defer this matter to an expected, comprehensive
update to the GSS-API.
1.1 Conventions used in this document 1.1 Conventions used in this document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
2. GSS_Pseudo_random() 2. GSS_Pseudo_random()
Inputs: Inputs:
skipping to change at page 4, line 37 skipping to change at page 4, line 43
that is 2^14 or fewer octets. that is 2^14 or fewer octets.
If a mechanism cannot consume as much input data as provided by the If a mechanism cannot consume as much input data as provided by the
caller, then GSS_Pseudo_random() MUST return GSS_S_FAILURE. caller, then GSS_Pseudo_random() MUST return GSS_S_FAILURE.
The minimum desired_output_len is one. The minimum desired_output_len is one.
Mechanisms MUST be able to output at least up to 2^14 octets. Mechanisms MUST be able to output at least up to 2^14 octets.
If the implementation cannot produce the desired output due to lack If the implementation cannot produce the desired output due to lack
of resources then it MUST output what it can and still return of resources then it MUST return GSS_S_FAILURE and MUST set a
GSS_S_COMPLETE. suitable minor status code.
The prf_key can take on the following values: GSS_C_PRF_KEY_FULL, The prf_key can take on the following values: GSS_C_PRF_KEY_FULL,
GSS_C_PRF_KEY_PARTIAL or mechanism-specific values, if any. This GSS_C_PRF_KEY_PARTIAL or mechanism-specific values, if any. This
parameter is intended to distinguish between the best cryptographic parameter is intended to distinguish between the best cryptographic
keys that may be available only after full security context keys that may be available only after full security context
establishment and keys that may be available prior to full security establishment and keys that may be available prior to full security
context establishment. For some mechanisms, or contexts, those two context establishment. For some mechanisms, or contexts, those two
prf_key values MAY refer to the same cryptographic keys; for prf_key values MAY refer to the same cryptographic keys; for
mechanisms like the Kerberos V GSS-API mechanism [RFC1964] where one mechanisms like the Kerberos V GSS-API mechanism [RFC1964] where one
peer may assert a key that may be considered better than the others peer may assert a key that may be considered better than the others
skipping to change at page 6, line 23 skipping to change at page 6, line 30
Additional major status codes for the C-bindings: Additional major status codes for the C-bindings:
o GSS_S_CALL_INACCESSIBLE_READ o GSS_S_CALL_INACCESSIBLE_READ
o GSS_S_CALL_INACCESSIBLE_WRITE o GSS_S_CALL_INACCESSIBLE_WRITE
See [RFC2744]. See [RFC2744].
2.2 Java Bindings 2.2 Java Bindings
For Java GSS_Pseudo_random() maps to a GSSContext method, 'prf': For Java GSS_Pseudo_random() maps to a method, 'prf', of the class
that implements the GSSContext interface. Note that this document
does not modify any Java interfaces and does not specify a method by
which portable Java applications detect support for this GSS-API
extension -- we leave that to a subsequent, comprehensive update to
the GSS-API.
public static final int GSS_C_PRF_KEY_FULL = 0 public static final int GSS_C_PRF_KEY_FULL = 0
public static final int GSS_C_PRF_KEY_PARTIAL = 1 public static final int GSS_C_PRF_KEY_PARTIAL = 1
public byte[] prf(int prf_key, byte inBuf[], int outlen) public byte[] prf(int prf_key, byte inBuf[], int outlen)
throws GSSException throws GSSException
See [RFC2853]. See [RFC2853].
3. IANA Considerations 3. IANA Considerations
skipping to change at page 7, line 22 skipping to change at page 7, line 35
Pseudo-random functions are, by their nature, capable of producing Pseudo-random functions are, by their nature, capable of producing
only limited amounts of cryptographically secure output. The exact only limited amounts of cryptographically secure output. The exact
amount of output that one can safely use, unfortunately, varies from amount of output that one can safely use, unfortunately, varies from
one PRF to another (which prevents us from recommending specific one PRF to another (which prevents us from recommending specific
numbers). Because of this we recommend that unless you really know numbers). Because of this we recommend that unless you really know
what you are doing (i.e. you are a cryptographer and are qualified to what you are doing (i.e. you are a cryptographer and are qualified to
pass judgement on cryptographic functions in areas of period, pass judgement on cryptographic functions in areas of period,
presence of short cycles, etc), you limit the amount of the PRF presence of short cycles, etc), you limit the amount of the PRF
output used to the necessary minimum. output used to the necessary minimum.
For some mechanisms the computational cost of computing
GSS_Pseudo_random() may increase significantly as the length of the
prf_in data and/or the desired_output_length increase. This means
that if an application can be tricked into providing very large input
octet strings and requesting very long output octet strings then that
may constitute a denial of service attack on the application;
therefore applications SHOULD place appropriate limits on the size of
any input octet strings received from their peers without integrity
protection.
5. References 5. References
5.1 Normative References 5.1 Normative References
[GGM1] Goldreich, O., Goldwasser, S., and S. Micali, "How to [GGM1] Goldreich, O., Goldwasser, S., and S. Micali, "How to
Construct Random Functions", October 1986. Construct Random Functions", October 1986.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
 End of changes. 

This html diff was produced by rfcdiff 1.25, available from http://www.levkowetz.com/ietf/tools/rfcdiff/