| < draft-ietf-ipsec-isakmp-08.txt | draft-ietf-ipsec-isakmp-09.txt > | |||
|---|---|---|---|---|
| IPSEC Working Group Douglas Maughan, Mark Schertler | IPSEC Working Group Douglas Maughan, Mark Schertler | |||
| INTERNET-DRAFT Mark Schneider, Jeff Turner | INTERNET-DRAFT Mark Schneider, Jeff Turner | |||
| draft-ietf-ipsec-isakmp-08.txt, .ps July 26, 1997 | draft-ietf-ipsec-isakmp-09.txt, .ps March 10, 1998 | |||
| Internet Security Association and Key Management Protocol (ISAKMP) | Internet Security Association and Key Management Protocol (ISAKMP) | |||
| Abstract | Abstract | |||
| This memo describes a protocol utilizing security concepts | This memo describes a protocol utilizing security concepts | |||
| necessary for establishing Security Associations (SA) and crypto- | necessary for establishing Security Associations (SA) and crypto- | |||
| graphic keys in an Internet environment. A Security Association | graphic keys in an Internet environment. A Security Association | |||
| protocol that negotiates, establishes, modifies and deletes | protocol that negotiates, establishes, modifies and deletes | |||
| Security Associations and their attributes is required for an | Security Associations and their attributes is required for an | |||
| skipping to change at page 3, line 9 ¶ | skipping to change at page 3, line 9 ¶ | |||
| abstracts.txt'' listing contained in the Internet- Drafts Shadow Di- | abstracts.txt'' listing contained in the Internet- Drafts Shadow Di- | |||
| rectories on ds.internic.net (US East Coast), nic.nordu.net (Europe), | rectories on ds.internic.net (US East Coast), nic.nordu.net (Europe), | |||
| ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim). | ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim). | |||
| Distribution of this document is unlimited. | Distribution of this document is unlimited. | |||
| Contents | Contents | |||
| 1 Introduction 6 | 1 Introduction 6 | |||
| 1.1 Requirements Terminology . . . . . . . . . . . . . . . . . . . . 7 | 1.1 Requirements Terminology . . . . . . . . . . . . . . . . . . . . 7 | |||
| 1.2 The Need for Negotiation . . . . . . . . . . . . . . . . . . . . 8 | 1.2 The Need for Negotiation . . . . . . . . . . . . . . . . . . . . 7 | |||
| 1.3 What can be Negotiated? . . . . . . . . . . . . . . . . . . . . . 8 | 1.3 What can be Negotiated? . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 1.4 Security Associations and Management . . . . . . . . . . . . . . 9 | 1.4 Security Associations and Management . . . . . . . . . . . . . . 8 | |||
| 1.4.1Security Associations and Registration . . . . . . . . . . . . 9 | 1.4.1Security Associations and Registration . . . . . . . . . . . . 8 | |||
| 1.4.2ISAKMP Requirements . . . . . . . . . . . . . . . . . . . . . 10 | 1.4.2ISAKMP Requirements . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 1.5 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 1.5 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 1.5.1Certificate Authorities . . . . . . . . . . . . . . . . . . . 11 | 1.5.1Certificate Authorities . . . . . . . . . . . . . . . . . . . 10 | |||
| 1.5.2Entity Naming . . . . . . . . . . . . . . . . . . . . . . . . 11 | 1.5.2Entity Naming . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 1.5.3ISAKMP Requirements . . . . . . . . . . . . . . . . . . . . . 11 | 1.5.3ISAKMP Requirements . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 1.6 Public Key Cryptography . . . . . . . . . . . . . . . . . . . . . 12 | 1.6 Public Key Cryptography . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 1.6.1Key Exchange Properties . . . . . . . . . . . . . . . . . . . 13 | 1.6.1Key Exchange Properties . . . . . . . . . . . . . . . . . . . 12 | |||
| 1.6.2ISAKMP Requirements . . . . . . . . . . . . . . . . . . . . . 14 | 1.6.2ISAKMP Requirements . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 1.7 ISAKMP Protection . . . . . . . . . . . . . . . . . . . . . . . . 14 | 1.7 ISAKMP Protection . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 1.7.1Anti-Clogging (Denial of Service) . . . . . . . . . . . . . . 14 | 1.7.1Anti-Clogging (Denial of Service) . . . . . . . . . . . . . . 13 | |||
| 1.7.2Connection Hijacking . . . . . . . . . . . . . . . . . . . . . 14 | 1.7.2Connection Hijacking . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 1.7.3Man-in-the-Middle Attacks . . . . . . . . . . . . . . . . . . 15 | 1.7.3Man-in-the-Middle Attacks . . . . . . . . . . . . . . . . . . 14 | |||
| 1.8 Multicast Communications . . . . . . . . . . . . . . . . . . . . 15 | 1.8 Multicast Communications . . . . . . . . . . . . . . . . . . . . 14 | |||
| 2 Terminology and Concepts 15 | 2 Terminology and Concepts 15 | |||
| 2.1 ISAKMP Terminology . . . . . . . . . . . . . . . . . . . . . . . 15 | 2.1 ISAKMP Terminology . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 2.2 ISAKMP Placement . . . . . . . . . . . . . . . . . . . . . . . . 17 | 2.2 ISAKMP Placement . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 2.3 Negotiation Phases . . . . . . . . . . . . . . . . . . . . . . . 18 | 2.3 Negotiation Phases . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 2.4 Identifying Security Associations . . . . . . . . . . . . . . . . 19 | 2.4 Identifying Security Associations . . . . . . . . . . . . . . . . 19 | |||
| 2.5 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 2.5 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 2.5.1Transport Protocol . . . . . . . . . . . . . . . . . . . . . . 21 | 2.5.1Transport Protocol . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 2.5.2RESERVED Fields . . . . . . . . . . . . . . . . . . . . . . . 21 | 2.5.2RESERVED Fields . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 2.5.3Anti-Clogging Token (``Cookie'') Creation . . . . . . . . . . 22 | 2.5.3Anti-Clogging Token (``Cookie'') Creation . . . . . . . . . . 21 | |||
| 3 ISAKMP Payloads 22 | 3 ISAKMP Payloads 22 | |||
| 3.1 ISAKMP Header Format . . . . . . . . . . . . . . . . . . . . . . 23 | 3.1 ISAKMP Header Format . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 3.2 Payload Generic Header . . . . . . . . . . . . . . . . . . . . . 26 | 3.2 Generic Payload Header . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 3.3 Data Attributes . . . . . . . . . . . . . . . . . . . . . . . . . 27 | 3.3 Data Attributes . . . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 3.4 Security Association Payload . . . . . . . . . . . . . . . . . . 28 | 3.4 Security Association Payload . . . . . . . . . . . . . . . . . . 27 | |||
| 3.5 Proposal Payload . . . . . . . . . . . . . . . . . . . . . . . . 29 | 3.5 Proposal Payload . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 3.6 Transform Payload . . . . . . . . . . . . . . . . . . . . . . . . 30 | 3.6 Transform Payload . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 3.7 Key Exchange Payload . . . . . . . . . . . . . . . . . . . . . . 31 | 3.7 Key Exchange Payload . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 3.8 Identification Payload . . . . . . . . . . . . . . . . . . . . . 32 | 3.8 Identification Payload . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 3.9 Certificate Payload . . . . . . . . . . . . . . . . . . . . . . . 33 | 3.9 Certificate Payload . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 3.10Certificate Request Payload . . . . . . . . . . . . . . . . . . . 35 | 3.10Certificate Request Payload . . . . . . . . . . . . . . . . . . . 35 | |||
| 3.11Hash Payload . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 3.11Hash Payload . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 3.12Signature Payload . . . . . . . . . . . . . . . . . . . . . . . . 37 | 3.12Signature Payload . . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 3.13Nonce Payload . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | 3.13Nonce Payload . . . . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 3.14Notification Payload . . . . . . . . . . . . . . . . . . . . . . 38 | 3.14Notification Payload . . . . . . . . . . . . . . . . . . . . . . 38 | |||
| 3.14.1Notify Message Types . . . . . . . . . . . . . . . . . . . . . 40 | 3.14.1Notify Message Types . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 3.15Delete Payload . . . . . . . . . . . . . . . . . . . . . . . . . 41 | 3.15Delete Payload . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 3.16Vendor ID Payload . . . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
| 4 ISAKMP Exchanges 43 | 4 ISAKMP Exchanges 45 | |||
| 4.1 Security Association Establishment . . . . . . . . . . . . . . . 43 | 4.1 ISAKMP Exchange Types . . . . . . . . . . . . . . . . . . . . . . 45 | |||
| 4.1.1Security Association Establishment Examples . . . . . . . . . 45 | 4.1.1Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 4.2 Security Association Modification . . . . . . . . . . . . . . . . 47 | 4.2 Security Association Establishment . . . . . . . . . . . . . . . 46 | |||
| 4.3 ISAKMP Exchange Types . . . . . . . . . . . . . . . . . . . . . . 48 | 4.2.1Security Association Establishment Examples . . . . . . . . . 48 | |||
| 4.3.1Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 | 4.3 Security Association Modification . . . . . . . . . . . . . . . . 50 | |||
| 4.4 Base Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . 49 | 4.4 Base Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
| 4.5 Identity Protection Exchange . . . . . . . . . . . . . . . . . . 50 | 4.5 Identity Protection Exchange . . . . . . . . . . . . . . . . . . 52 | |||
| 4.6 Authentication Only Exchange . . . . . . . . . . . . . . . . . . 51 | 4.6 Authentication Only Exchange . . . . . . . . . . . . . . . . . . 53 | |||
| 4.7 Aggressive Exchange . . . . . . . . . . . . . . . . . . . . . . . 53 | 4.7 Aggressive Exchange . . . . . . . . . . . . . . . . . . . . . . . 54 | |||
| 4.8 Informational Exchange . . . . . . . . . . . . . . . . . . . . . 54 | 4.8 Informational Exchange . . . . . . . . . . . . . . . . . . . . . 56 | |||
| 5 ISAKMP Payload Processing 54 | 5 ISAKMP Payload Processing 56 | |||
| 5.1 General Message Processing . . . . . . . . . . . . . . . . . . . 55 | 5.1 General Message Processing . . . . . . . . . . . . . . . . . . . 57 | |||
| 5.2 ISAKMP Header Processing . . . . . . . . . . . . . . . . . . . . 55 | 5.2 ISAKMP Header Processing . . . . . . . . . . . . . . . . . . . . 57 | |||
| 5.3 Generic Payload Header Processing . . . . . . . . . . . . . . . . 57 | 5.3 Generic Payload Header Processing . . . . . . . . . . . . . . . . 59 | |||
| 5.4 Security Association Payload Processing . . . . . . . . . . . . . 58 | 5.4 Security Association Payload Processing . . . . . . . . . . . . . 60 | |||
| 5.4.1Proposal Payload Processing . . . . . . . . . . . . . . . . . 60 | 5.5 Proposal Payload Processing . . . . . . . . . . . . . . . . . . . 62 | |||
| 5.4.2Transform Payload Processing . . . . . . . . . . . . . . . . . 61 | 5.6 Transform Payload Processing . . . . . . . . . . . . . . . . . . 63 | |||
| 5.5 Key Exchange Payload Processing . . . . . . . . . . . . . . . . . 62 | 5.7 Key Exchange Payload Processing . . . . . . . . . . . . . . . . . 64 | |||
| 5.6 Identification Payload Processing . . . . . . . . . . . . . . . . 63 | 5.8 Identification Payload Processing . . . . . . . . . . . . . . . . 65 | |||
| 5.7 Certificate Payload Processing . . . . . . . . . . . . . . . . . 63 | 5.9 Certificate Payload Processing . . . . . . . . . . . . . . . . . 66 | |||
| 5.8 Certificate Request Payload Processing . . . . . . . . . . . . . 64 | 5.10Certificate Request Payload Processing . . . . . . . . . . . . . 67 | |||
| 5.9 Hash Payload Processing . . . . . . . . . . . . . . . . . . . . . 66 | 5.11Hash Payload Processing . . . . . . . . . . . . . . . . . . . . . 68 | |||
| 5.10Signature Payload Processing . . . . . . . . . . . . . . . . . . 67 | 5.12Signature Payload Processing . . . . . . . . . . . . . . . . . . 69 | |||
| 5.11Nonce Payload Processing . . . . . . . . . . . . . . . . . . . . 68 | 5.13Nonce Payload Processing . . . . . . . . . . . . . . . . . . . . 70 | |||
| 5.12Notification Payload Processing . . . . . . . . . . . . . . . . . 68 | 5.14Notification Payload Processing . . . . . . . . . . . . . . . . . 71 | |||
| 5.13Delete Payload Processing . . . . . . . . . . . . . . . . . . . . 70 | 5.15Delete Payload Processing . . . . . . . . . . . . . . . . . . . . 73 | |||
| 6 Conclusions 73 | 6 Conclusions 75 | |||
| A ISAKMP Security Association Attributes 74 | A ISAKMP Security Association Attributes 76 | |||
| A.1 Background/Rationale . . . . . . . . . . . . . . . . . . . . . . 74 | A.1 Background/Rationale . . . . . . . . . . . . . . . . . . . . . . 76 | |||
| A.2 Assigned Values for the Internet IP Security DOI . . . . . . . . 74 | A.2 Internet IP Security DOI Assigned Value . . . . . . . . . . . . . 76 | |||
| A.2.1Internet IP Security DOI Assigned Value . . . . . . . . . . . 74 | A.3 Supported Security Protocols . . . . . . . . . . . . . . . . . . 76 | |||
| A.2.2Supported Security Protocols . . . . . . . . . . . . . . . . . 74 | A.4 ISAKMP Identification Type Values . . . . . . . . . . . . . . . . 77 | |||
| B Defining a new Domain of Interpretation 76 | A.4.1ID_IPV4_ADDR . . . . . . . . . . . . . . . . . . . . . . . . . 77 | |||
| B.1 Situation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 | A.4.2ID_IPV4_ADDR_SUBNET . . . . . . . . . . . . . . . . . . . . . . 77 | |||
| B.2 Security Policies . . . . . . . . . . . . . . . . . . . . . . . . 77 | A.4.3ID_IPV6_ADDR . . . . . . . . . . . . . . . . . . . . . . . . . 77 | |||
| B.3 Naming Schemes . . . . . . . . . . . . . . . . . . . . . . . . . 77 | A.4.4ID_IPV6_ADDR_SUBNET . . . . . . . . . . . . . . . . . . . . . . 77 | |||
| B.4 Syntax for Specifying Security Services . . . . . . . . . . . . . 77 | B Defining a new Domain of Interpretation 78 | |||
| B.5 Payload Specification . . . . . . . . . . . . . . . . . . . . . . 77 | B.1 Situation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 | |||
| B.6 Defining new Exchange Types . . . . . . . . . . . . . . . . . . . 77 | B.2 Security Policies . . . . . . . . . . . . . . . . . . . . . . . . 79 | |||
| B.3 Naming Schemes . . . . . . . . . . . . . . . . . . . . . . . . . 79 | ||||
| B.4 Syntax for Specifying Security Services . . . . . . . . . . . . . 79 | ||||
| B.5 Payload Specification . . . . . . . . . . . . . . . . . . . . . . 79 | ||||
| B.6 Defining new Exchange Types . . . . . . . . . . . . . . . . . . . 79 | ||||
| List of Figures | List of Figures | |||
| 1 ISAKMP Relationships . . . . . . . . . . . . . . . . . . . . . . 18 | 1 ISAKMP Relationships . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 2 ISAKMP Header Format . . . . . . . . . . . . . . . . . . . . . . 23 | 2 ISAKMP Header Format . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 3 Generic Payload Header . . . . . . . . . . . . . . . . . . . . . 26 | 3 Generic Payload Header . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 4 Data Attributes . . . . . . . . . . . . . . . . . . . . . . . . . 27 | 4 Data Attributes . . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 5 Security Association Payload . . . . . . . . . . . . . . . . . . 28 | 5 Security Association Payload . . . . . . . . . . . . . . . . . . 28 | |||
| 6 Proposal Payload Format . . . . . . . . . . . . . . . . . . . . . 29 | 6 Proposal Payload Format . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 7 Transform Payload Format . . . . . . . . . . . . . . . . . . . . 30 | 7 Transform Payload Format . . . . . . . . . . . . . . . . . . . . 30 | |||
| 8 Key Exchange Payload Format . . . . . . . . . . . . . . . . . . . 32 | 8 Key Exchange Payload Format . . . . . . . . . . . . . . . . . . . 32 | |||
| 9 Identification Payload Format . . . . . . . . . . . . . . . . . . 33 | 9 Identification Payload Format . . . . . . . . . . . . . . . . . . 33 | |||
| 10 Certificate Payload Format . . . . . . . . . . . . . . . . . . . 34 | 10 Certificate Payload Format . . . . . . . . . . . . . . . . . . . 34 | |||
| 11 Certificate Request Payload Format . . . . . . . . . . . . . . . 35 | 11 Certificate Request Payload Format . . . . . . . . . . . . . . . 35 | |||
| 12 Hash Payload Format . . . . . . . . . . . . . . . . . . . . . . . 36 | 12 Hash Payload Format . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 13 Signature Payload Format . . . . . . . . . . . . . . . . . . . . 37 | 13 Signature Payload Format . . . . . . . . . . . . . . . . . . . . 37 | |||
| 14 Nonce Payload Format . . . . . . . . . . . . . . . . . . . . . . 38 | 14 Nonce Payload Format . . . . . . . . . . . . . . . . . . . . . . 38 | |||
| 15 Notification Payload Format . . . . . . . . . . . . . . . . . . . 39 | 15 Notification Payload Format . . . . . . . . . . . . . . . . . . . 39 | |||
| 16 Delete Payload Format . . . . . . . . . . . . . . . . . . . . . . 42 | 16 Delete Payload Format . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 17 Vendor ID Payload Format . . . . . . . . . . . . . . . . . . . . 44 | ||||
| 1 Introduction | 1 Introduction | |||
| This document describes an Internet Security Association and Key Manage- | This document describes an Internet Security Association and Key Manage- | |||
| ment Protocol (ISAKMP). ISAKMP combines the security concepts of authen- | ment Protocol (ISAKMP). ISAKMP combines the security concepts of authen- | |||
| tication, key management, and security associations to establish the re- | tication, key management, and security associations to establish the re- | |||
| quired security for government, commercial, and private communications on | quired security for government, commercial, and private communications on | |||
| the Internet. | the Internet. | |||
| The Internet Security Association and Key Management Protocol (ISAKMP) de- | The Internet Security Association and Key Management Protocol (ISAKMP) de- | |||
| skipping to change at page 7, line 10 ¶ | skipping to change at page 7, line 10 ¶ | |||
| gether as exchange types to establish security associations and perform | gether as exchange types to establish security associations and perform | |||
| key exchanges in an authenticated manner. Additionally, security as- | key exchanges in an authenticated manner. Additionally, security as- | |||
| sociation modification, deletion, and error notification are discussed. | sociation modification, deletion, and error notification are discussed. | |||
| Section 5 describes the processing of each payload within the context of | Section 5 describes the processing of each payload within the context of | |||
| ISAKMP exchanges, including error handling and associated actions. The | ISAKMP exchanges, including error handling and associated actions. The | |||
| appendices provide the attribute values necessary for ISAKMP and require- | appendices provide the attribute values necessary for ISAKMP and require- | |||
| ment for defining a new Domain of Interpretation (DOI) within ISAKMP. | ment for defining a new Domain of Interpretation (DOI) within ISAKMP. | |||
| 1.1 Requirements Terminology | 1.1 Requirements Terminology | |||
| In this document, the words that are used to define the significance of | The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD | |||
| each particular requirement are usually capitalised. These words are: | NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this document, | |||
| are to be interpreted as described in [RFC-2119]. | ||||
| - MUST | ||||
| This word or the adjective "REQUIRED" means that implementation of | ||||
| the item is an absolute requirement of the specification. | ||||
| - MUST NOT | ||||
| This phrase means that the definition is an absolute prohibition | ||||
| of the specification. | ||||
| - SHOULD | ||||
| This word or the adjective "RECOMMENDED" means that there might | ||||
| exist valid reasons in particular circumstances to not implement | ||||
| this item, but the full implications should be understood and the | ||||
| case carefully weighed before not implementing this or not | ||||
| implementing in a conforming manner. | ||||
| - MAY | ||||
| This word or the adjective "OPTIONAL" means that implementation of | ||||
| this item is truly optional. One vendor might choose to include | ||||
| the item because particular buyers require it or it enhances the | ||||
| product, while another vendor may omit the same item. | ||||
| - CONFORMANCE and COMPLIANCE | ||||
| Conformance to this specification has the same meaning as | ||||
| compliance to this specification. In either case, the | ||||
| mandatory-to-implement, or MUST, items MUST be fully implemented | ||||
| as specified here. If any mandatory item is not implemented as | ||||
| specified here, that implementation is not conforming and not | ||||
| compliant with this specification. | ||||
| 1.2 The Need for Negotiation | 1.2 The Need for Negotiation | |||
| ISAKMP extends the assertion in [DOW92] that authentication and key ex- | ISAKMP extends the assertion in [DOW92] that authentication and key ex- | |||
| changes must be combined for better security to include security associa- | changes must be combined for better security to include security associa- | |||
| tion exchanges. The security services required for communications depends | tion exchanges. The security services required for communications depends | |||
| on the individual network configurations and environments. Organizations | on the individual network configurations and environments. Organizations | |||
| are setting up Virtual Private Networks (VPN), also known as Intranets, | are setting up Virtual Private Networks (VPN), also known as Intranets, | |||
| that will require one set of security functions for communications within | that will require one set of security functions for communications within | |||
| the VPN and possibly many different security functions for communications | the VPN and possibly many different security functions for communications | |||
| skipping to change at page 10, line 17 ¶ | skipping to change at page 9, line 27 ¶ | |||
| Security Association (SA) establishment MUST be part of the key manage- | Security Association (SA) establishment MUST be part of the key manage- | |||
| ment protocol defined for IP based networks. The SA concept is required | ment protocol defined for IP based networks. The SA concept is required | |||
| to support security protocols in a diverse and dynamic networking envi- | to support security protocols in a diverse and dynamic networking envi- | |||
| ronment. Just as authentication and key exchange must be linked to pro- | ronment. Just as authentication and key exchange must be linked to pro- | |||
| vide assurance that the key is established with the authenticated party | vide assurance that the key is established with the authenticated party | |||
| [DOW92], SA establishment must be linked with the authentication and the | [DOW92], SA establishment must be linked with the authentication and the | |||
| key exchange protocol. | key exchange protocol. | |||
| ISAKMP provides the protocol exchanges to establish a security association | ISAKMP provides the protocol exchanges to establish a security association | |||
| between negotiating entities followed by the establishment of a security | between negotiating entities followed by the establishment of a security | |||
| association by these negotiated entities in behalf of some protocol (e.g. | association by these negotiating entities in behalf of some protocol (e.g. | |||
| ESP/AH). First, an initial protocol exchange allows a basic set of secu- | ESP/AH). First, an initial protocol exchange allows a basic set of secu- | |||
| rity attributes to be agreed upon. This basic set provides protection for | rity attributes to be agreed upon. This basic set provides protection for | |||
| subsequent ISAKMP exchanges. It also indicates the authentication method | subsequent ISAKMP exchanges. It also indicates the authentication method | |||
| and key exchange that will be performed as part of the ISAKMP protocol. | and key exchange that will be performed as part of the ISAKMP protocol. | |||
| If a basic set of security attributes is already in place between the ne- | If a basic set of security attributes is already in place between the ne- | |||
| gotiating server entities, the initial ISAKMP exchange may be skipped and | gotiating server entities, the initial ISAKMP exchange may be skipped and | |||
| the establishment of a security association can be done directly. After | the establishment of a security association can be done directly. After | |||
| the basic set of security attributes has been agreed upon, initial iden- | the basic set of security attributes has been agreed upon, initial iden- | |||
| tity authenticated, and required keys generated, the established SA can | tity authenticated, and required keys generated, the established SA can | |||
| be used for subsequent communications by the entity that invoked ISAKMP. | be used for subsequent communications by the entity that invoked ISAKMP. | |||
| The basic set of SA attributes that MUST be implemented to provide ISAKMP | The basic set of SA attributes that MUST be implemented to provide ISAKMP | |||
| interoperability are defined in Appendix A. | interoperability are defined in Appendix A. | |||
| 1.5 Authentication | 1.5 Authentication | |||
| A very important step in establishing secure network communications is au- | A very important step in establishing secure network communications is au- | |||
| thentication of the entity at the other end of the communication. Many | thentication of the entity at the other end of the communication. Many | |||
| authentication mechanisms are available. Authentication mechanisms fall | authentication mechanisms are available. Authentication mechanisms fall | |||
| into two catagories of strength - weak and strong. Passwords are an ex- | into two catagories of strength - weak and strong. Sending cleartext keys | |||
| ample of a mechanism that provides weak authentication. The reason pass- | or other unprotected authenticating information over a network is weak, | |||
| words are considered weak is the fact that most users pick passwords that | due to the threat of reading them with a network sniffer. Additionally, | |||
| are easy to guess and when used over an unprotected network are easily | sending one-way hashed poorly-chosen keys with low entropy is also weak, | |||
| read by network sniffers. Digital signatures, such as the Digital Sig- | due to the threat of brute-force guessing attacks on the sniffed mes- | |||
| nature Standard (DSS) and the Rivest-Shamir-Adleman (RSA) signature, are | sages. While passwords can be used for establishing identity, they are | |||
| public key based strong authentication mechanisms. When using public | not considered in this context because of recent statements from the In- | |||
| key digital signatures each entity requires a public key and a private | ternet Architecture Board [IAB]. Digital signatures, such as the Digital | |||
| key. Certificates are an essential part of a digital signature authen- | Signature Standard (DSS) and the Rivest-Shamir-Adleman (RSA) signature, | |||
| tication mechanism. Certificates bind a specific entity's identity (be | are public key based strong authentication mechanisms. When using pub- | |||
| it host, network, user, or application) to its public keys and possi- | lic key digital signatures each entity requires a public key and a pri- | |||
| bly other security-related information such as privileges, clearances, | vate key. Certificates are an essential part of a digital signature au- | |||
| thentication mechanism. Certificates bind a specific entity's identity | ||||
| (be it host, network, user, or application) to its public keys and pos- | ||||
| sibly other security-related information such as privileges, clearances, | ||||
| and compartments. Authentication based on digital signatures requires a | and compartments. Authentication based on digital signatures requires a | |||
| trusted third party or certificate authority to create, sign and properly | trusted third party or certificate authority to create, sign and properly | |||
| distribute certificates. For more detailed information on digital signa- | distribute certificates. For more detailed information on digital signa- | |||
| tures, such as DSS and RSA, and certificates see [Schneier]. | tures, such as DSS and RSA, and certificates see [Schneier]. | |||
| 1.5.1 Certificate Authorities | 1.5.1 Certificate Authorities | |||
| Certificates require an infrastructure for generation, verification, re- | Certificates require an infrastructure for generation, verification, re- | |||
| vocation, management and distribution. The Internet Policy Registration | vocation, management and distribution. The Internet Policy Registration | |||
| Authority (IPRA) [RFC-1422] has been established to direct this infras- | Authority (IPRA) [RFC-1422] has been established to direct this infras- | |||
| skipping to change at page 11, line 35 ¶ | skipping to change at page 10, line 49 ¶ | |||
| 1.5.2 Entity Naming | 1.5.2 Entity Naming | |||
| An entity's name is its identity and is bound to its public keys in cer- | An entity's name is its identity and is bound to its public keys in cer- | |||
| tificates. The CA MUST define the naming semantics for the certificates | tificates. The CA MUST define the naming semantics for the certificates | |||
| it issues. See the UNINETT PCA Policy Statements [Berge] for an example | it issues. See the UNINETT PCA Policy Statements [Berge] for an example | |||
| of how a CA defines its naming policy. When the certificate is verified, | of how a CA defines its naming policy. When the certificate is verified, | |||
| the name is verified and that name will have meaning within the realm of | the name is verified and that name will have meaning within the realm of | |||
| that CA. An example is the DNS security extensions which make DNS servers | that CA. An example is the DNS security extensions which make DNS servers | |||
| CAs for the zones and nodes they serve. Resource records are provided for | CAs for the zones and nodes they serve. Resource records are provided for | |||
| public keys and signatures on those keys. The names associatied with the | public keys and signatures on those keys. The names associated with the | |||
| keys are IP addresses and domain names which have meaning to entities ac- | keys are IP addresses and domain names which have meaning to entities ac- | |||
| cessing the DNS for this information. A Web of Trust is another example. | cessing the DNS for this information. A Web of Trust is another example. | |||
| When webs of trust are set up, names are bound with the public keys. In | When webs of trust are set up, names are bound with the public keys. In | |||
| PGP the name is usually the entity's e-mail address which has meaning to | PGP the name is usually the entity's e-mail address which has meaning to | |||
| those, and only those, who understand e-mail. Another web of trust could | those, and only those, who understand e-mail. Another web of trust could | |||
| use an entirely different naming scheme. | use an entirely different naming scheme. | |||
| 1.5.3 ISAKMP Requirements | 1.5.3 ISAKMP Requirements | |||
| Strong authentication MUST be provided on ISAKMP exchanges. Without being | Strong authentication MUST be provided on ISAKMP exchanges. Without being | |||
| able to authenticate the entity at the other end, the Security Association | able to authenticate the entity at the other end, the Security Association | |||
| (SA) and session key established are suspect. Without authentication you | (SA) and session key established are suspect. Without authentication you | |||
| are unable to trust an entity's identification, this makes access control | are unable to trust an entity's identification, which makes access control | |||
| questionable. While encryption (e.g. ESP) and integrity (e.g. AH) will | questionable. While encryption (e.g. ESP) and integrity (e.g. AH) will | |||
| protect subsequent communications from passive eavesdroppers, without au- | protect subsequent communications from passive eavesdroppers, without au- | |||
| thentication it is possible that the SA and key may have been established | thentication it is possible that the SA and key may have been established | |||
| with an adversary who performed an active man-in-the-middle attack and is | with an adversary who performed an active man-in-the-middle attack and is | |||
| now stealing all your personal data. | now stealing all your personal data. | |||
| A digital signature algorithm MUST be used within ISAKMP's authentication | A digital signature algorithm MUST be used within ISAKMP's authentication | |||
| component. However, ISAKMP does not mandate a specific signature algo- | component. However, ISAKMP does not mandate a specific signature algo- | |||
| rithm or certificate authority (CA). ISAKMP allows an entity initiating | rithm or certificate authority (CA). ISAKMP allows an entity initiating | |||
| communications to indicate which CAs it supports. After selection of a | communications to indicate which CAs it supports. After selection of a | |||
| CA, the protocol provides the messages required to support the actual au- | CA, the protocol provides the messages required to support the actual au- | |||
| thentication exchange. The protocol provides a facility for identifica- | thentication exchange. The protocol provides a facility for identifica- | |||
| tion of different certificate authorities, certificate types (e.g. X.509, | tion of different certificate authorities, certificate types (e.g. X.509, | |||
| PKCS #7, PGP, DNS SIG and KEY records), and the exchange of the certifi- | PKCS #7, PGP, DNS SIG and KEY records), and the exchange of the certifi- | |||
| cates identified. | cates identified. | |||
| ISAKMP utilizes digital signatures, based on public cryptography, for au- | ISAKMP utilizes digital signatures, based on public key cryptography, for | |||
| thentication. There are other strong authentication systems available, | authentication. There are other strong authentication systems available, | |||
| which could be specified as additional optional authentication mechanisms | which could be specified as additional optional authentication mechanisms | |||
| for ISAKMP. Some of these authentication systems rely on a trusted third | for ISAKMP. Some of these authentication systems rely on a trusted third | |||
| party called a key distribution center (KDC) to distribute secret session | party called a key distribution center (KDC) to distribute secret session | |||
| keys. An example is Kerberos, where the trusted third party is the Ker- | keys. An example is Kerberos, where the trusted third party is the Ker- | |||
| beros server, which holds secret keys for all clients and servers within | beros server, which holds secret keys for all clients and servers within | |||
| its network domain. A client's proof that it holds its secret key pro- | its network domain. A client's proof that it holds its secret key pro- | |||
| vides authenticaton to a server. | vides authenticaton to a server. | |||
| The ISAKMP specification does not specify the protocol for communicating | The ISAKMP specification does not specify the protocol for communicating | |||
| with the trusted third parties (TTP) or certificate directory services. | with the trusted third parties (TTP) or certificate directory services. | |||
| skipping to change at page 13, line 7 ¶ | skipping to change at page 12, line 22 ¶ | |||
| include the key establishment method, authentication, symmetry, perfect | include the key establishment method, authentication, symmetry, perfect | |||
| forward secrecy, and back traffic protection. | forward secrecy, and back traffic protection. | |||
| NOTE: Cryptographic keys can protect information for a considerable length | NOTE: Cryptographic keys can protect information for a considerable length | |||
| of time. However, this is based on the assumption that keys used for pro- | of time. However, this is based on the assumption that keys used for pro- | |||
| tection of communications are destroyed after use and not kept for any | tection of communications are destroyed after use and not kept for any | |||
| reason. | reason. | |||
| 1.6.1 Key Exchange Properties | 1.6.1 Key Exchange Properties | |||
| Key Establishment (Key Generation / Key Transport) The two common methods | Key Establishment (Key Generation / Key Transport): The two common methods | |||
| of using public key cryptography for key establishment are key transport | of using public key cryptography for key establishment are key transport | |||
| and key generation. An example of key transport is the use of the RSA al- | and key generation. An example of key transport is the use of the RSA al- | |||
| gorithm to encrypt a randomly generated session key (for encrypting subse- | gorithm to encrypt a randomly generated session key (for encrypting subse- | |||
| quent communications) with the recipient's public key. The encrypted ran- | quent communications) with the recipient's public key. The encrypted ran- | |||
| dom key is then sent to the recipient, who decrypts it using his private | dom key is then sent to the recipient, who decrypts it using his private | |||
| key. At this point both sides have the same session key, however it was | key. At this point both sides have the same session key, however it was | |||
| created based on input from only one side of the communications. The ben- | created based on input from only one side of the communications. The ben- | |||
| efit of the key transport method is that it has less computational over- | efit of the key transport method is that it has less computational over- | |||
| head than the following method. The Diffie-Hellman (D-H) algorithm il- | head than the following method. The Diffie-Hellman (D-H) algorithm il- | |||
| lustrates key generation using public key cryptography. The D-H algorithm | lustrates key generation using public key cryptography. The D-H algorithm | |||
| skipping to change at page 13, line 31 ¶ | skipping to change at page 12, line 46 ¶ | |||
| can be used as a session key or as a key encryption key for encrypting a | can be used as a session key or as a key encryption key for encrypting a | |||
| randomly generated session key. This method generates a session key based | randomly generated session key. This method generates a session key based | |||
| on public and secret information held by both users. The benefit of the | on public and secret information held by both users. The benefit of the | |||
| D-H algorithm is that the key used for encrypting messages is based on | D-H algorithm is that the key used for encrypting messages is based on | |||
| information held by both users and the independence of keys from one key | information held by both users and the independence of keys from one key | |||
| exchange to another provides perfect forward secrecy. Detailed descrip- | exchange to another provides perfect forward secrecy. Detailed descrip- | |||
| tions of these algorithms can be found in [Schneier]. There are a number | tions of these algorithms can be found in [Schneier]. There are a number | |||
| of variations on these two key generation schemes and these variations do | of variations on these two key generation schemes and these variations do | |||
| not necessarily interoperate. | not necessarily interoperate. | |||
| Key Exchange Authentication Key exchanges may be authenticated during the | Key Exchange Authentication: Key exchanges may be authenticated during the | |||
| protocol or after protocol completion. Authentication of the key exchange | protocol or after protocol completion. Authentication of the key exchange | |||
| during the protocol is provided when each party provides proof it has the | during the protocol is provided when each party provides proof it has the | |||
| secret session key before the end of the protocol. Proof can be provided | secret session key before the end of the protocol. Proof can be provided | |||
| by encrypting known data in the secret session key during the protocol ex- | by encrypting known data in the secret session key during the protocol ex- | |||
| change. Authentication after the protocol must occur in subsequent commu- | change. Authentication after the protocol must occur in subsequent commu- | |||
| nications. Authentication during the protocol is preferred so subsequent | nications. Authentication during the protocol is preferred so subsequent | |||
| communications are not initiated if the secret session key is not estab- | communications are not initiated if the secret session key is not estab- | |||
| lished with the desired party. | lished with the desired party. | |||
| Key Exchange Symmetry A key exchange provides symmetry if either party can | Key Exchange Symmetry: A key exchange provides symmetry if either party | |||
| initiate the exchange and exchanged messages can cross in transit with- | can initiate the exchange and exchanged messages can cross in transit | |||
| out affecting the key that is generated. This is desirable so that com- | without affecting the key that is generated. This is desirable so that | |||
| putation of the keys does not require either party to know who initiated | computation of the keys does not require either party to know who initi- | |||
| the exchange. While key exchange symmetry is desirable, symmetry in the | ated the exchange. While key exchange symmetry is desirable, symmetry in | |||
| entire key management protocol may provide a vulnerablity to reflection | the entire key management protocol may provide a vulnerablity to reflec- | |||
| attacks. | tion attacks. | |||
| Perfect Forward Secrecy As described in [DOW92], an authenticated key ex- | Perfect Forward Secrecy: As described in [DOW92], an authenticated key ex- | |||
| change protocol provides perfect forward secrecy if disclosure of long- | change protocol provides perfect forward secrecy if disclosure of long- | |||
| term secret keying material does not compromise the secrecy of the ex- | term secret keying material does not compromise the secrecy of the ex- | |||
| changed keys from previous communications. The property of perfect for- | changed keys from previous communications. The property of perfect for- | |||
| ward secrecy does not apply to key exchange without authentication. | ward secrecy does not apply to key exchange without authentication. | |||
| 1.6.2 ISAKMP Requirements | 1.6.2 ISAKMP Requirements | |||
| An authenticated key exchange MUST be supported by ISAKMP. Users SHOULD | An authenticated key exchange MUST be supported by ISAKMP. Users SHOULD | |||
| choose additional key establishment algorithms based on their require- | choose additional key establishment algorithms based on their require- | |||
| ments. ISAKMP does not specify a specific key exchange. However, | ments. ISAKMP does not specify a specific key exchange. However, [IKE] | |||
| [IO-Res] describes a proposal for using the Oakley key exchange [Oakley] | describes a proposal for using the Oakley key exchange [Oakley] in con- | |||
| in conjunction with ISAKMP. Requirements that should be evaluated when | junction with ISAKMP. Requirements that should be evaluated when choosing | |||
| choosing a key establishment algorithm include establishment method (gen- | a key establishment algorithm include establishment method (generation vs. | |||
| eration vs. transport), perfect forward secrecy, computational overhead, | transport), perfect forward secrecy, computational overhead, key escrow, | |||
| key escrow, and key strength. Based on user requirements, ISAKMP allows | and key strength. Based on user requirements, ISAKMP allows an entity | |||
| an entity initiating communications to indicate which key exchanges it | initiating communications to indicate which key exchanges it supports. | |||
| supports. After selection of a key exchange, the protocol provides the | After selection of a key exchange, the protocol provides the messages re- | |||
| messages required to support the actual key establishment. | quired to support the actual key establishment. | |||
| 1.7 ISAKMP Protection | 1.7 ISAKMP Protection | |||
| 1.7.1 Anti-Clogging (Denial of Service) | 1.7.1 Anti-Clogging (Denial of Service) | |||
| Of the numerous security services available, protection against denial | Of the numerous security services available, protection against denial | |||
| of service always seems to be one of the most difficult to address. A | of service always seems to be one of the most difficult to address. A | |||
| ``cookie'' or anti-clogging token (ACT) is aimed at protecting the com- | ``cookie'' or anti-clogging token (ACT) is aimed at protecting the com- | |||
| puting resources from attack without spending excessive CPU resources to | puting resources from attack without spending excessive CPU resources to | |||
| determine its authenticity. An exchange prior to CPU-intensive public key | determine its authenticity. An exchange prior to CPU-intensive public key | |||
| operations can thwart some denial of service attempts (e.g. simple flood- | operations can thwart some denial of service attempts (e.g. simple flood- | |||
| ing with bogus IP source addresses). Absolute protection against denial | ing with bogus IP source addresses). Absolute protection against denial | |||
| of service is impossible, but this anti-clogging token provides a tech- | of service is impossible, but this anti-clogging token provides a tech- | |||
| nique for making it easier to handle. The use of an anti-clogging token | nique for making it easier to handle. The use of an anti-clogging token | |||
| was introduced by Karn and Simpson in [Karn]. | was introduced by Karn and Simpson in [Karn]. | |||
| It should be noted that in the exchanges shown in section 4, the anti- | ||||
| clogging mechanism should be used in conjuction with a garbage-state col- | ||||
| lection mechanism; an attacker can still flood a server using packets with | ||||
| bogus IP addresses and cause state to be created. Such aggressive memory | ||||
| management techniques SHOULD be employed by protocols using ISAKMP that | ||||
| do not go through an initial, anti-clogging only phase, as was done in | ||||
| [Karn]. | ||||
| 1.7.2 Connection Hijacking | 1.7.2 Connection Hijacking | |||
| ISAKMP prevents connection hijacking by linking the authentication, key | ISAKMP prevents connection hijacking by linking the authentication, key | |||
| exchange and security association exchanges. This linking prevents an | exchange and security association exchanges. This linking prevents an | |||
| attacker from allowing the authentication to complete and then jumping | attacker from allowing the authentication to complete and then jumping | |||
| in and impersonating one entity to the other during the key and security | in and impersonating one entity to the other during the key and security | |||
| association exchanges. | association exchanges. | |||
| 1.7.3 Man-in-the-Middle Attacks | 1.7.3 Man-in-the-Middle Attacks | |||
| skipping to change at page 15, line 39 ¶ | skipping to change at page 15, line 12 ¶ | |||
| ticast traffic are presented in [RFC-1825]. Multicast security issues are | ticast traffic are presented in [RFC-1825]. Multicast security issues are | |||
| also discussed in [RFC-1949] and [BC]. A future extension to ISAKMP will | also discussed in [RFC-1949] and [BC]. A future extension to ISAKMP will | |||
| support multicast key distribution. For an introduction to the issues re- | support multicast key distribution. For an introduction to the issues re- | |||
| lated to multicast security, consult the Internet Drafts, [RFC-2094] and | lated to multicast security, consult the Internet Drafts, [RFC-2094] and | |||
| [RFC-2093], describing Sparta's research in this area. | [RFC-2093], describing Sparta's research in this area. | |||
| 2 Terminology and Concepts | 2 Terminology and Concepts | |||
| 2.1 ISAKMP Terminology | 2.1 ISAKMP Terminology | |||
| Security Protocol A Security Protocol consists of an entity at a single | Security Protocol: A Security Protocol consists of an entity at a single | |||
| point in the network stack, performing a security service for network com- | point in the network stack, performing a security service for network com- | |||
| munication. For example, IPSEC ESP and IPSEC AH are two different secu- | munication. For example, IPSEC ESP and IPSEC AH are two different secu- | |||
| rity protocols. TLS is another example. Security Protocols may perform | rity protocols. TLS is another example. Security Protocols may perform | |||
| more than one service, for example providing integrity and confidentiality | more than one service, for example providing integrity and confidentiality | |||
| in one module. | in one module. | |||
| Protection Suite A protection suite is a list of the security services | Protection Suite: A protection suite is a list of the security services | |||
| that must be applied by various security protocols. For example, a pro- | that must be applied by various security protocols. For example, a pro- | |||
| tection suite may consist of DES encryption in IP ESP, and keyed MD5 in IP | tection suite may consist of DES encryption in IP ESP, and keyed MD5 in IP | |||
| AH. All of the protections in a suite must be treated as a single unit. | AH. All of the protections in a suite must be treated as a single unit. | |||
| This is necessary because security services in different security pro- | This is necessary because security services in different security pro- | |||
| tocols can have subtle interactions, and the effects of a suite must be | tocols can have subtle interactions, and the effects of a suite must be | |||
| analyzed and verified as a whole. | analyzed and verified as a whole. | |||
| Security Association (SA) A Security Association is a security-protocol- | Security Association (SA): A Security Association is a security-protocol- | |||
| specific set of parameters that completely defines the services and mech- | specific set of parameters that completely defines the services and mech- | |||
| anisms necessary to protect traffic at that security protocol location. | anisms necessary to protect traffic at that security protocol location. | |||
| These parameters can include algorithm identifiers, modes, cryptographic | These parameters can include algorithm identifiers, modes, cryptographic | |||
| keys, etc. The SA is referred to by its associated security protocol (for | keys, etc. The SA is referred to by its associated security protocol (for | |||
| example, ``ISAKMP SA'', ``ESP SA'', ``TLS SA''). | example, ``ISAKMP SA'', ``ESP SA'', ``TLS SA''). | |||
| ISAKMP SA An SA used by the ISAKMP servers to protect their own traffic. | ISAKMP SA: An SA used by the ISAKMP servers to protect their own traffic. | |||
| Sections 2.3 and 2.4 provide more details about ISAKMP SAs. | Sections 2.3 and 2.4 provide more details about ISAKMP SAs. | |||
| Security Parameter Index (SPI) An identifier for a Security Assocation, | Security Parameter Index (SPI): An identifier for a Security Assocation, | |||
| relative to some security protocol. Each security protocol has its own | relative to some security protocol. Each security protocol has its own | |||
| ``SPI-space''. A (security protocol, SPI) pair may uniquely identify an | ``SPI-space''. A (security protocol, SPI) pair may uniquely identify an | |||
| SA. The uniqueness of the SPI is implementation dependent, but could be | SA. The uniqueness of the SPI is implementation dependent, but could be | |||
| based per system, per protocol, or other options. Depending on the DOI, | based per system, per protocol, or other options. Depending on the DOI, | |||
| additional information (e.g. host address) may be necessary to identify | additional information (e.g. host address) may be necessary to identify | |||
| an SA. The DOI will also determine which SPIs (i.e. initiator's or re- | an SA. The DOI will also determine which SPIs (i.e. initiator's or re- | |||
| sponder's) are sent during communication. | sponder's) are sent during communication. | |||
| Domain of Interpretation A Domain of Interpretation (DOI) defines payload | Domain of Interpretation: A Domain of Interpretation (DOI) defines payload | |||
| formats, exchange types, and conventions for naming security-relevant in- | formats, exchange types, and conventions for naming security-relevant in- | |||
| formation such as security policies or cryptographic algorithms and modes. | formation such as security policies or cryptographic algorithms and modes. | |||
| A Domain of Interpretation (DOI) identifier is used to interpret the pay- | A Domain of Interpretation (DOI) identifier is used to interpret the pay- | |||
| loads of ISAKMP payloads. A system SHOULD support multiple Domains of In- | loads of ISAKMP payloads. A system SHOULD support multiple Domains of In- | |||
| terpretation simultaneously. The concept of a DOI is based on previous | terpretation simultaneously. The concept of a DOI is based on previous | |||
| work by the TSIG CIPSO Working Group, but extends beyond security label | work by the TSIG CIPSO Working Group, but extends beyond security label | |||
| interpretation to include naming and interpretation of security services. | interpretation to include naming and interpretation of security services. | |||
| A DOI defines: | A DOI defines: | |||
| o A ``situation'': the set of information that will be used to | o A ``situation'': the set of information that will be used to | |||
| skipping to change at page 17, line 13 ¶ | skipping to change at page 16, line 34 ¶ | |||
| attributes, and certificate authorities. | attributes, and certificate authorities. | |||
| o The specific formats of the various payload contents. | o The specific formats of the various payload contents. | |||
| o Additional exchange types, if required. | o Additional exchange types, if required. | |||
| The rules for the IETF IP Security DOI are presented in [IPDOI]. Speci- | The rules for the IETF IP Security DOI are presented in [IPDOI]. Speci- | |||
| fications of the rules for customized DOIs will be presented in separate | fications of the rules for customized DOIs will be presented in separate | |||
| documents. | documents. | |||
| Situation A situation contains all of the security-relevant information | Situation: A situation contains all of the security-relevant information | |||
| that a system considers necessary to decide the security services required | that a system considers necessary to decide the security services required | |||
| to protect the session being negotiated. The situation may include ad- | to protect the session being negotiated. The situation may include ad- | |||
| dresses, security classifications, modes of operation (normal vs. emer- | dresses, security classifications, modes of operation (normal vs. emer- | |||
| gency), etc. | gency), etc. | |||
| Proposal A proposal is a list, in decreasing order of preference, of the | Proposal: A proposal is a list, in decreasing order of preference, of the | |||
| protection suites that a system considers acceptable to protect traffic | protection suites that a system considers acceptable to protect traffic | |||
| under a given situation. | under a given situation. | |||
| Payload ISAKMP defines several types of payloads, which are used to trans- | Payload: ISAKMP defines several types of payloads, which are used to | |||
| fer information such as security association data, or key exchange data, | transfer information such as security association data, or key exchange | |||
| in DOI-defined formats. A payload consists of a generic payload header | data, in DOI-defined formats. A payload consists of a generic payload | |||
| and a string of octects that is opaque to ISAKMP. ISAKMP uses DOI-specific | header and a string of octects that is opaque to ISAKMP. ISAKMP uses DOI- | |||
| functionality to synthesize and interpret these payloads. Multiple pay- | specific functionality to synthesize and interpret these payloads. Mul- | |||
| loads can be sent in a single ISAKMP message. See section 3 for more de- | tiple payloads can be sent in a single ISAKMP message. See section 3 for | |||
| tails on the payload types, and [IPDOI] for the formats of the IETF IP Se- | more details on the payload types, and [IPDOI] for the formats of the IETF | |||
| curity DOI payloads. | IP Security DOI payloads. | |||
| Exchange Type An exchange type is a specification of the number of mes- | Exchange Type: An exchange type is a specification of the number of mes- | |||
| sages in an ISAKMP exchange, and the payload types that are contained in | sages in an ISAKMP exchange, and the payload types that are contained in | |||
| each of those messages. Each exchange type is designed to provide a par- | each of those messages. Each exchange type is designed to provide a par- | |||
| ticular set of security services, such as anonymity of the participants, | ticular set of security services, such as anonymity of the participants, | |||
| perfect forward secrecy of the keying material, authentication of the par- | perfect forward secrecy of the keying material, authentication of the par- | |||
| ticipants, etc. Section 4.3 defines the default set of ISAKMP exchange | ticipants, etc. Section 4.1 defines the default set of ISAKMP exchange | |||
| types. Other exchange types can be added to support additional key ex- | types. Other exchange types can be added to support additional key ex- | |||
| changes, if required. | changes, if required. | |||
| 2.2 ISAKMP Placement | 2.2 ISAKMP Placement | |||
| Figure 1 is a high level view of the placement of ISAKMP within a system | Figure 1 is a high level view of the placement of ISAKMP within a system | |||
| context in a network architecture. An important part of negotiating secu- | context in a network architecture. An important part of negotiating secu- | |||
| rity services is to consider the entire ``stack'' of individual SAs as a | rity services is to consider the entire ``stack'' of individual SAs as a | |||
| unit. This is referred to as a ``protection suite''. | unit. This is referred to as a ``protection suite''. | |||
| +------------+ +--------+ +--------------+ | +------------+ +--------+ +--------------+ | |||
| ! DOI ! ! ! ! Application ! | ! DOI ! ! ! ! Application ! | |||
| ! Definition ! <----> ! ISAKMP ! ! Process ! | ! Definition ! <----> ! ISAKMP ! ! Process ! | |||
| +------------+ ! ! !--------------! | +------------+ --> ! ! !--------------! | |||
| +--------+ ! Appl Protocol! | +--------------+ ! +--------+ ! Appl Protocol! | |||
| ^ +--------------+ | ! Key Exchange ! ! ^ ^ +--------------+ | |||
| ! ^ | ! Definition !<-- ! ! ^ | |||
| ! ! | +--------------+ ! ! ! | |||
| v v | ! ! ! | |||
| +---------------------------------------------+ | !----------------! ! ! | |||
| ! Socket Layer ! | v ! ! | |||
| !---------------------------------------------! | +-------+ v v | |||
| ! Transport Protocol (TCP / UDP) ! | ! API ! +---------------------------------------------+ | |||
| +-------+ ! Socket Layer ! | ||||
| ! !---------------------------------------------! | ||||
| v ! Transport Protocol (TCP / UDP) ! | ||||
| +----------+ !---------------------------------------------! | +----------+ !---------------------------------------------! | |||
| ! Security ! <----> ! IP ! | ! Security ! <----> ! IP ! | |||
| ! Protocol ! !---------------------------------------------! | ! Protocol ! !---------------------------------------------! | |||
| +----------+ ! Link Layer Protocol ! | +----------+ ! Link Layer Protocol ! | |||
| +---------------------------------------------+ | +---------------------------------------------+ | |||
| Figure 1: ISAKMP Relationships | Figure 1: ISAKMP Relationships | |||
| 2.3 Negotiation Phases | 2.3 Negotiation Phases | |||
| ISAKMP offers two ``phases'' of negotiation. In the first phase, two en- | ISAKMP offers two ``phases'' of negotiation. In the first phase, two en- | |||
| tities (e.g. ISAKMP servers) agree on how to protect further negotiation | tities (e.g. ISAKMP servers) agree on how to protect further negotiation | |||
| traffic between themselves, establishing an ISAKMP SA. This ISAKMP SA is | traffic between themselves, establishing an ISAKMP SA. This ISAKMP SA is | |||
| then used to protect the negotiations for the Protocol SA being requested. | then used to protect the negotiations for the Protocol SA being requested. | |||
| Two entities (e.g. ISAKMP servers) can negotiate (and have active) multi- | Two entities (e.g. ISAKMP servers) can negotiate (and have active) multi- | |||
| ple ISAKMP SAs. | ple ISAKMP SAs. | |||
| The second phase of negotiation is used to establish security associa- | The second phase of negotiation is used to establish security associations | |||
| tions for other security protocols. This second phase can be used to pro- | for other security protocols. This second phase can be used to estab- | |||
| tect many security associations. The security associations established | lish many security associations. The security associations established | |||
| by ISAKMP during this phase can be used by a security protocol to protect | by ISAKMP during this phase can be used by a security protocol to protect | |||
| many message/data exchanges. | many message/data exchanges. | |||
| While the two-phased approach has a higher start-up cost for most simple | While the two-phased approach has a higher start-up cost for most simple | |||
| scenarios, there are several reasons that it is beneficial for most cases. | scenarios, there are several reasons that it is beneficial for most cases. | |||
| First, entities (e.g. ISAKMP servers) can amortize the cost of the first | First, entities (e.g. ISAKMP servers) can amortize the cost of the first | |||
| phase across several second phase negotiations. This allows multiple SAs | phase across several second phase negotiations. This allows multiple SAs | |||
| to be established between peers over time without having to start over for | to be established between peers over time without having to start over for | |||
| each communication. | each communication. | |||
| skipping to change at page 19, line 30 ¶ | skipping to change at page 19, line 9 ¶ | |||
| Note that security services may be applied differently in each negotiation | Note that security services may be applied differently in each negotiation | |||
| phase. For example, different parties are being authenticated during each | phase. For example, different parties are being authenticated during each | |||
| of the phases of negotiation. During the first phase, the parties being | of the phases of negotiation. During the first phase, the parties being | |||
| authenticated may be the ISAKMP servers/hosts, while during the second | authenticated may be the ISAKMP servers/hosts, while during the second | |||
| phase, users or application level programs are being authenticated. | phase, users or application level programs are being authenticated. | |||
| 2.4 Identifying Security Associations | 2.4 Identifying Security Associations | |||
| While bootstrapping secure channels between systems, ISAKMP cannot assume | While bootstrapping secure channels between systems, ISAKMP cannot assume | |||
| the existence of security services, and must provide some protections for | the existence of security services, and must provide some protections for | |||
| itself. Therefore, ISAKMP considers an ISAKMP Security Association to be | itself. Therefore, ISAKMP considers an ISAKMP Security Association to | |||
| different than other types, and manages ISAKMP SAs itself, in their own | be different than other types, and manages ISAKMP SAs itself, in their | |||
| name space. ISAKMP uses the two cookie fields in the ISAKMP header to | own name space. ISAKMP uses the two cookie fields in the ISAKMP header | |||
| identify ISAKMP SAs. The Message ID and SPI fields in the ISAKMP Header | to identify ISAKMP SAs. The Message ID in the ISAKMP Header and the SPI | |||
| are used during SA establishment to identify the SA for other security | field in the Proposal payload are used during SA establishment to identify | |||
| protocols. The interpretation of these four fields is dependent on the | the SA for other security protocols. The interpretation of these four | |||
| operation taking place. | fields is dependent on the operation taking place. | |||
| The following table shows the presence or absence of the cookies in the | The following table shows the presence or absence of several fields during | |||
| ISAKMP header, the ISAKMP Header Message ID field, and the SPI field in | SA establishment. The following fields are necessary for various opera- | |||
| the Proposal payload for various operations. An 'X' in the column means | tions associated with SA establishment: cookies in the ISAKMP header, the | |||
| the value MUST be present. An 'NA' in the column means a value in the | ISAKMP Header Message ID field, and the SPI field in the Proposal payload. | |||
| column is Not Applicable to the operation. | An 'X' in the column means the value MUST be present. An 'NA' in the col- | |||
| umn means a value in the column is Not Applicable to the operation. | ||||
| __#_____________Operation____________I-Cookie__R-Cookie__Message_ID__SPI_ | __#_____________Operation____________I-Cookie__R-Cookie__Message_ID__SPI_ | |||
| (1) Start ISAKMP SA negotiation X 0 0 0 | (1) Start ISAKMP SA negotiation X 0 0 0 | |||
| (2) Respond ISAKMP SA negotiation X X 0 0 | (2) Respond ISAKMP SA negotiation X X 0 0 | |||
| (3) Init other SA negotiation X X X X | (3) Init other SA negotiation X X X X | |||
| (4) Respond other SA negotiation X X X X | (4) Respond other SA negotiation X X X X | |||
| (5) Other (KE, ID, etc.) X X X/0 NA | (5) Other (KE, ID, etc.) X X X/0 NA | |||
| (6) Security Protocol (ESP, AH) NA NA NA X | (6) Security Protocol (ESP, AH) NA NA NA X | |||
| In the first line (1) of the table, the initiator includes the Initiator | In the first line (1) of the table, the initiator includes the Initiator | |||
| skipping to change at page 23, line 14 ¶ | skipping to change at page 22, line 35 ¶ | |||
| 3.1 ISAKMP Header Format | 3.1 ISAKMP Header Format | |||
| An ISAKMP message has a fixed header format, shown in Figure 2, followed | An ISAKMP message has a fixed header format, shown in Figure 2, followed | |||
| by a variable number of payloads. A fixed header simplifies parsing, pro- | by a variable number of payloads. A fixed header simplifies parsing, pro- | |||
| viding the benefit of protocol parsing software that is less complex and | viding the benefit of protocol parsing software that is less complex and | |||
| easier to implement. The fixed header contains the information required | easier to implement. The fixed header contains the information required | |||
| by the protocol to maintain state, process payloads and possibly prevent | by the protocol to maintain state, process payloads and possibly prevent | |||
| denial of service or replay attacks. | denial of service or replay attacks. | |||
| The ISAKMP Header fields are defined as follows: | ||||
| o Initiator Cookie (8 octets) - Cookie of entity that initiated SA | ||||
| establishment, SA notification, or SA deletion. | ||||
| o Responder Cookie (8 octets) - Cookie of entity that is responding to | ||||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Initiator ! | ! Initiator ! | |||
| ! Cookie ! | ! Cookie ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Responder ! | ! Responder ! | |||
| ! Cookie ! | ! Cookie ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Next Payload ! MjVer ! MnVer ! Exchange Type ! Flags ! | ! Next Payload ! MjVer ! MnVer ! Exchange Type ! Flags ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Message ID ! | ! Message ID ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Length ! | ! Length ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 2: ISAKMP Header Format | Figure 2: ISAKMP Header Format | |||
| The ISAKMP Header fields are defined as follows: | ||||
| o Initiator Cookie (8 octets) - Cookie of entity that initiated SA | ||||
| establishment, SA notification, or SA deletion. | ||||
| o Responder Cookie (8 octets) - Cookie of entity that is responding to | ||||
| an SA establishment request, SA notification, or SA deletion. | an SA establishment request, SA notification, or SA deletion. | |||
| o Next Payload (1 octet) - Indicates the type of the first payload in | o Next Payload (1 octet) - Indicates the type of the first payload in | |||
| the message. The format for each payload is defined in sections 3.4 | the message. The format for each payload is defined in sections 3.4 | |||
| through 3.15. The processing for the payloads is defined in section | through 3.16. The processing for the payloads is defined in section | |||
| 5. | 5. | |||
| _____Next_Payload_Type_______Value____ | _____Next_Payload_Type_______Value____ | |||
| NONE 0 | NONE 0 | |||
| Security Association (SA) 1 | Security Association (SA) 1 | |||
| Proposal (P) 2 | Proposal (P) 2 | |||
| Transform (T) 3 | Transform (T) 3 | |||
| Key Exchange (KE) 4 | Key Exchange (KE) 4 | |||
| Identification (ID) 5 | Identification (ID) 5 | |||
| Certificate (CERT) 6 | Certificate (CERT) 6 | |||
| Certificate Request (CR) 7 | Certificate Request (CR) 7 | |||
| Hash (HASH) 8 | Hash (HASH) 8 | |||
| Signature (SIG) 9 | Signature (SIG) 9 | |||
| Nonce (NONCE) 10 | Nonce (NONCE) 10 | |||
| Notification (N) 11 | Notification (N) 11 | |||
| Delete (D) 12 | Delete (D) 12 | |||
| RESERVED 13- 127 | Vendor ID (VID) 13 | |||
| RESERVED 14 - 127 | ||||
| Private USE 128 - 255 | Private USE 128 - 255 | |||
| o Major Version (4 bits) - indicates the major version of the ISAKMP | o Major Version (4 bits) - indicates the major version of the ISAKMP | |||
| protocol in use. Implementations based on this version of the ISAKMP | protocol in use. Implementations based on this version of the ISAKMP | |||
| Internet-Draft MUST set the Major Version to 1. Implementations | Internet-Draft MUST set the Major Version to 1. Implementations | |||
| based on previous versions of ISAKMP Internet-Drafts MUST set the | based on previous versions of ISAKMP Internet-Drafts MUST set the | |||
| Major Version to 0. Implementations SHOULD never accept packets with | Major Version to 0. Implementations SHOULD never accept packets with | |||
| a major version number larger than its own. | a major version number larger than its own. | |||
| o Minor Version (4 bits) - indicates the minor version of the ISAKMP | o Minor Version (4 bits) - indicates the minor version of the ISAKMP | |||
| skipping to change at page 25, line 19 ¶ | skipping to change at page 24, line 34 ¶ | |||
| Authentication Only 3 | Authentication Only 3 | |||
| Aggressive 4 | Aggressive 4 | |||
| Informational 5 | Informational 5 | |||
| ISAKMP Future Use 6 - 31 | ISAKMP Future Use 6 - 31 | |||
| DOI Specific Use 32 - 255 | DOI Specific Use 32 - 255 | |||
| o Flags (1 octet) - indicates specific options that are set for the | o Flags (1 octet) - indicates specific options that are set for the | |||
| ISAKMP exchange. The flags listed below are specified in the Flags | ISAKMP exchange. The flags listed below are specified in the Flags | |||
| field beginning with the least significant bit, i.e the Encryption | field beginning with the least significant bit, i.e the Encryption | |||
| bit is bit 0 of the Flags field, the Commit bit is bit 1 of the Flags | bit is bit 0 of the Flags field, the Commit bit is bit 1 of the Flags | |||
| field, etc. | field, and the Authentication Only bit is bit 2 of the Flags field. | |||
| The remaining bits of the Flags field MUST be set to 0 prior to | ||||
| transmission. | ||||
| -- E(ncryption Bit) (1 bit) - If set (1), all payloads following the | -- E(ncryption Bit) (1 bit) - If set (1), all payloads following the | |||
| header are encrypted using the encryption algorithm identified in | header are encrypted using the encryption algorithm identified in | |||
| the ISAKMP SA. The ISAKMP SA Identifier is the combination of the | the ISAKMP SA. The ISAKMP SA Identifier is the combination of the | |||
| initiator and responder cookie. It is RECOMMENDED that | initiator and responder cookie. It is RECOMMENDED that | |||
| encryption of communications be done as soon as possible between | encryption of communications be done as soon as possible between | |||
| the peers. For all ISAKMP exchanges described in section 4.3, | the peers. For all ISAKMP exchanges described in section 4.1, | |||
| the encryption SHOULD begin after both parties have exchanged Key | the encryption SHOULD begin after both parties have exchanged Key | |||
| Exchange payloads. If the E(ncryption Bit) is not set (0), the | Exchange payloads. If the E(ncryption Bit) is not set (0), the | |||
| payloads are not encrypted. | payloads are not encrypted. | |||
| -- C(ommit Bit) (1 bit) - This bit is used to signal key exchange | -- C(ommit Bit) (1 bit) - This bit is used to signal key exchange | |||
| synchronization. It is used to ensure that encrypted material is | synchronization. It is used to ensure that encrypted material is | |||
| not received prior to completion of the SA establishment. The | not received prior to completion of the SA establishment. The | |||
| Commit Bit can be set (at anytime) by either party participating | Commit Bit can be set (at anytime) by either party participating | |||
| in the SA establishment, and can be used during both phases of an | in the SA establishment, and can be used during both phases of an | |||
| ISAKMP SA establishment. However, the value MUST be reset after | ISAKMP SA establishment. However, the value MUST be reset after | |||
| skipping to change at page 26, line 11 ¶ | skipping to change at page 25, line 31 ¶ | |||
| following a Phase 2 exchange. Handling of this situation is not | following a Phase 2 exchange. Handling of this situation is not | |||
| standardized, but we propose the following possibilities. If the | standardized, but we propose the following possibilities. If the | |||
| entity awaiting the Informational Exchange can verify the re- | entity awaiting the Informational Exchange can verify the re- | |||
| ceived message (i.e. Phase 2 SA negotiation message or encrypted | ceived message (i.e. Phase 2 SA negotiation message or encrypted | |||
| traffic), then they MAY consider the SA was established and | traffic), then they MAY consider the SA was established and | |||
| continue processing. The other option is to retransmit the last | continue processing. The other option is to retransmit the last | |||
| ISAKMP message to force the other entity to retransmit the final mes- | ISAKMP message to force the other entity to retransmit the final mes- | |||
| sage. This suggests that implementations may consider retaining the | sage. This suggests that implementations may consider retaining the | |||
| last message (locally) until they are sure the SA is established. | last message (locally) until they are sure the SA is established. | |||
| -- A(uthentication Only Bit) (1 bit) - This bit is intended for use | ||||
| with the Informational Exchange with a Notify payload and will | ||||
| allow the transmission of information with integrity checking, | ||||
| but no encryption (e.g. "emergency mode"). Section 4.8 states | ||||
| that a Phase 2 Informational Exchange MUST be sent under the | ||||
| protection of an ISAKMP SA. This is the only exception to that | ||||
| policy. If the Authentication Only bit is set (1), only | ||||
| authentication security services will be applied to the entire | ||||
| Notify payload of the Informational Exchange and the payload will | ||||
| not be encrypted. | ||||
| o Message ID (4 octets) - Unique Message Identifier used to identify | o Message ID (4 octets) - Unique Message Identifier used to identify | |||
| protocol state during Phase 2 negotiations. This value is randomly | protocol state during Phase 2 negotiations. This value is randomly | |||
| generated by the initiator of the Phase 2 negotiation. During Phase | generated by the initiator of the Phase 2 negotiation. In the event | |||
| 1 negotiations, the value MUST be set to 0. | of simultaneous SA establishments (i.e. collisions), the value of | |||
| this field will likely be different because they are independently | ||||
| generated and, thus, two security associations will progress toward | ||||
| establishment. However, it is unlikely there will be absolute | ||||
| simultaneous establishments. During Phase 1 negotiations, the value | ||||
| MUST be set to 0. | ||||
| o Length (4 octets) - Length of total message (header + payloads) in | o Length (4 octets) - Length of total message (header + payloads) in | |||
| octets. Encryption can expand the size of an ISAKMP message. This | octets. Encryption can expand the size of an ISAKMP message. | |||
| issue is addressed in [IPDOI] and [IO-Res]. | ||||
| 3.2 Payload Generic Header | 3.2 Generic Payload Header | |||
| Each ISAKMP payload defined in sections 3.4 through 3.15 begins with a | Each ISAKMP payload defined in sections 3.4 through 3.16 begins with a | |||
| generic header, shown in Figure 3, which provides a payload "chaining" | generic header, shown in Figure 3, which provides a payload "chaining" | |||
| capability and clearly defines the boundaries of a payload. | capability and clearly defines the boundaries of a payload. | |||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Next Payload ! RESERVED ! Payload Length ! | ! Next Payload ! RESERVED ! Payload Length ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 3: Generic Payload Header | Figure 3: Generic Payload Header | |||
| skipping to change at page 27, line 11 ¶ | skipping to change at page 26, line 37 ¶ | |||
| o Payload Length (2 octets) - Length in octets of the current payload, | o Payload Length (2 octets) - Length in octets of the current payload, | |||
| including the generic payload header. | including the generic payload header. | |||
| 3.3 Data Attributes | 3.3 Data Attributes | |||
| There are several instances within ISAKMP where it is necessary to repre- | There are several instances within ISAKMP where it is necessary to repre- | |||
| sent Data Attributes. An example of this is the Security Association (SA) | sent Data Attributes. An example of this is the Security Association (SA) | |||
| Attributes contained in the Transform payload (described in section 3.6). | Attributes contained in the Transform payload (described in section 3.6). | |||
| These Data Attributes are not an ISAKMP payload, but are contained within | These Data Attributes are not an ISAKMP payload, but are contained within | |||
| ISAKMP payloads. The format of the Data Attributes provides the flexi- | ISAKMP payloads. The format of the Data Attributes provides the flexibil- | |||
| bility for representation of many different types of information. There | ity for representation of many different types of information. There can | |||
| can be multiple Data Attributes within a payload. This is done using the | be multiple Data Attributes within a payload. The length of the Data At- | |||
| Attribute Format bit described below. The length of the Data Attributes | tributes will either be 4 octets or defined by the Attribute Length field. | |||
| will either be 4 octets or defined by the Attribute Length field. Spe- | This is done using the Attribute Format bit described below. Specific in- | |||
| cific information about the attributes for each domain will be described | formation about the attributes for each domain will be described in a DOI | |||
| in a DOI document, e.g. IPSEC DOI [IPDOI]. | document, e.g. IPSEC DOI [IPDOI]. | |||
| The Data Attributes fields are defined as follows: | ||||
| o Attribute Type (2 octets) - Unique identifier for each type of | ||||
| attribute. These attributes are defined as part of the DOI-specific | ||||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| !A! Attribute Type ! AF=0 Attribute Length ! | !A! Attribute Type ! AF=0 Attribute Length ! | |||
| !F! ! AF=1 Attribute Value ! | !F! ! AF=1 Attribute Value ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . AF=0 Attribute Value . | . AF=0 Attribute Value . | |||
| . AF=1 Not Transmitted . | . AF=1 Not Transmitted . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 4: Data Attributes | Figure 4: Data Attributes | |||
| The Data Attributes fields are defined as follows: | ||||
| o Attribute Type (2 octets) - Unique identifier for each type of | ||||
| attribute. These attributes are defined as part of the DOI-specific | ||||
| information. | information. | |||
| The most significant bit, or Attribute Format (AF), indicates whether | The most significant bit, or Attribute Format (AF), indicates whether | |||
| the data attributes follow the Type/Length/Value (TLV) format or a | the data attributes follow the Type/Length/Value (TLV) format or a | |||
| shortened Type/Value (TV) format. If the AF bit is a zero (0), then | shortened Type/Value (TV) format. If the AF bit is a zero (0), then | |||
| the Data Attributes are of the Type/Length/Value (TLV) form. If the | the Data Attributes are of the Type/Length/Value (TLV) form. If the | |||
| AF bit is a one (1), then the Data Attributes are of the Type/Value | AF bit is a one (1), then the Data Attributes are of the Type/Value | |||
| form. | form. | |||
| o Attribute Length (2 octets) - Length in octets of the Attribute | o Attribute Length (2 octets) - Length in octets of the Attribute | |||
| Value. When the AF bit is a one (1), the Attribute Value is only 2 | Value. When the AF bit is a one (1), the Attribute Value is only 2 | |||
| octets and the Attribute Length field is not present. | octets and the Attribute Length field is not present. | |||
| o Attribute Value (variable length) - Value of the attribute associated | o Attribute Value (variable length) - Value of the attribute associated | |||
| with the DOI-specific Attribute Type. If the AF bit is a zero (0), | with the DOI-specific Attribute Type. If the AF bit is a zero (0), | |||
| this field has a variable length defined by the Attribute Length | this field has a variable length defined by the Attribute Length | |||
| field. If the Attribute Value is not aligned at a 4-byte multiple, | field. If the AF bit is a one (1), the Attribute Value has a length | |||
| the field is right justified and the remaining bits MUST be prepended | of 2 octets. | |||
| with 0 for 4-byte alignment. If the AF bit is a one (1), the | ||||
| Attribute Value has a length of 2 octets. | ||||
| 3.4 Security Association Payload | 3.4 Security Association Payload | |||
| The Security Association Payload is used to negotiate security attributes | The Security Association Payload is used to negotiate security attributes | |||
| and to indicate the Domain of Interpretation (DOI) and Situation under | and to indicate the Domain of Interpretation (DOI) and Situation under | |||
| which the negotiation is taking place. Figure 5 shows the format of the | which the negotiation is taking place. Figure 5 shows the format of the | |||
| Security Association payload. | Security Association payload. | |||
| The Security Association Payload fields are defined as follows: | ||||
| o Next Payload (1 octet) - Identifier for the payload type of the next | ||||
| payload in the message. If the current payload is the last in the | ||||
| message, then this field will be 0. This field MUST NOT contain the | ||||
| values for the Proposal or Transform payloads as they are considered | ||||
| part of the security association negotiation. For example, this | ||||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Next Payload ! RESERVED ! Payload Length ! | ! Next Payload ! RESERVED ! Payload Length ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Domain of Interpretation (DOI) ! | ! Domain of Interpretation (DOI) ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! ! | ! ! | |||
| ~ Situation ~ | ~ Situation ~ | |||
| ! ! | ! ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 5: Security Association Payload | Figure 5: Security Association Payload | |||
| The Security Association Payload fields are defined as follows: | ||||
| o Next Payload (1 octet) - Identifier for the payload type of the next | ||||
| payload in the message. If the current payload is the last in the | ||||
| message, then this field will be 0. This field MUST NOT contain the | ||||
| values for the Proposal or Transform payloads as they are considered | ||||
| part of the security association negotiation. For example, this | ||||
| field would contain the value "10" (Nonce payload) in the first | field would contain the value "10" (Nonce payload) in the first | |||
| message of a Base Exchange (see Section 4.4) and the value "0" in the | message of a Base Exchange (see Section 4.4) and the value "0" in the | |||
| first message of an Identity Protect Exchange (see Section 4.5). | first message of an Identity Protect Exchange (see Section 4.5). | |||
| o RESERVED (1 octet) - Unused, set to 0. | o RESERVED (1 octet) - Unused, set to 0. | |||
| o Payload Length (2 octets) - Length in octets of the entire Security | o Payload Length (2 octets) - Length in octets of the entire Security | |||
| Association payload, including the SA payload, all Proposal payloads, | Association payload, including the SA payload, all Proposal payloads, | |||
| and all Transform payloads associated with the proposed Security | and all Transform payloads associated with the proposed Security | |||
| Association. | Association. | |||
| o Domain of Interpretation (4 octets) - Identifies the DOI (as | o Domain of Interpretation (4 octets) - Identifies the DOI (as | |||
| described in Section 2.1) under which this negotiation is taking | described in Section 2.1) under which this negotiation is taking | |||
| place. For the Internet, the DOI is one (1). Other DOI's can be | place. The DOI is a 32-bit unsigned integer. A DOI value of 0 | |||
| defined using the description in appendix B. | during a Phase 1 exchange specifies a Generic ISAKMP SA which can be | |||
| used for any protocol during the Phase 2 exchange. The necessary SA | ||||
| Attributes are defined in A.4. A DOI value of 1 is assigned to the | ||||
| IPsec DOI [IPDOI]. All other DOI values are reserved to IANA for | ||||
| future use. IANA will not normally assign a DOI value without | ||||
| referencing some public specification, such as an Internet RFC. Other | ||||
| DOI's can be defined using the description in appendix B. This field | ||||
| MUST be present within the Security Association payload. | ||||
| o Situation (variable length) - A DOI-specific field that identifies | o Situation (variable length) - A DOI-specific field that identifies | |||
| the situation under which this negotiation is taking place. The | the situation under which this negotiation is taking place. The | |||
| Situation is used to make policy decisions regarding the security | Situation is used to make policy decisions regarding the security | |||
| attributes being negotiated. Specifics for the IETF IP Security DOI | attributes being negotiated. Specifics for the IETF IP Security DOI | |||
| Situation are detailed in [IPDOI]. | Situation are detailed in [IPDOI]. This field MUST be present within | |||
| the Security Association payload. | ||||
| The payload type for the Security Association Payload is one (1). | The payload type for the Security Association Payload is one (1). | |||
| 3.5 Proposal Payload | 3.5 Proposal Payload | |||
| The Proposal Payload contains information used during Security Associa- | The Proposal Payload contains information used during Security Associa- | |||
| tion negotiation. The proposal consists of security mechanisms, or trans- | tion negotiation. The proposal consists of security mechanisms, or trans- | |||
| forms, to be used to secure the communications channel. Figure 6 shows | forms, to be used to secure the communications channel. Figure 6 shows | |||
| the format of the Proposal Payload. A description of its use can be found | the format of the Proposal Payload. A description of its use can be found | |||
| in section 4.1. | in section 4.2. | |||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Next Payload ! RESERVED ! Payload Length ! | ! Next Payload ! RESERVED ! Payload Length ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Proposal # ! Protocol-Id ! SPI Size !# of Transforms! | ! Proposal # ! Protocol-Id ! SPI Size !# of Transforms! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! SPI (variable) ! | ! SPI (variable) ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 29, line 46 ¶ | skipping to change at page 29, line 37 ¶ | |||
| o Next Payload (1 octet) - Identifier for the payload type of the next | o Next Payload (1 octet) - Identifier for the payload type of the next | |||
| payload in the message. This field MUST only contain the value "2" | payload in the message. This field MUST only contain the value "2" | |||
| or "0". If there are additional Proposal payloads in the message, | or "0". If there are additional Proposal payloads in the message, | |||
| then this field will be 2. If the current Proposal payload is the | then this field will be 2. If the current Proposal payload is the | |||
| last within the security association proposal, then this field will | last within the security association proposal, then this field will | |||
| be 0. | be 0. | |||
| o RESERVED (1 octet) - Unused, set to 0. | o RESERVED (1 octet) - Unused, set to 0. | |||
| o Payload Length (2 octets) - Length in octets of the entire Proposal | o Payload Length (2 octets) - Length in octets of the entire Proposal | |||
| payload, including the Proposal payload, and all Transform payloads | payload, including generic payload header, the Proposal payload, and | |||
| associated with this proposal. In the event there are multiple | all Transform payloads associated with this proposal. In the event | |||
| proposals with the same proposal number (see section 4.1), the | there are multiple proposals with the same proposal number (see | |||
| Payload Length field only applies to the current Proposal payload and | section 4.2), the Payload Length field only applies to the current | |||
| not to all Proposal payloads. | Proposal payload and not to all Proposal payloads. | |||
| o Proposal # (1 octet) - Identifies the Proposal number for the current | o Proposal # (1 octet) - Identifies the Proposal number for the current | |||
| payload. A description of the use of this field is found in section | payload. A description of the use of this field is found in section | |||
| 4.1. | 4.2. | |||
| o Protocol-Id (1 octet) - Specifies the protocol identifier for the | o Protocol-Id (1 octet) - Specifies the protocol identifier for the | |||
| current negotiation. Examples might include IPSEC ESP, IPSEC AH, | current negotiation. Examples might include IPSEC ESP, IPSEC AH, | |||
| OSPF, TLS, etc. | OSPF, TLS, etc. | |||
| o SPI Size (1 octet) - Length in octets of the SPI as defined by the | o SPI Size (1 octet) - Length in octets of the SPI as defined by the | |||
| Protocol-Id. | Protocol-Id. In the case of ISAKMP, the Initiator and Responder | |||
| cookie pair from the ISAKMP Header is the ISAKMP SPI, therefore, the | ||||
| SPI Size is irrelevant and MAY be from zero (0) to sixteen (16). If | ||||
| the SPI Size is non-zero, the content of the SPI field MUST be | ||||
| ignored. If the SPI Size is not a multiple of 4 octets it will have | ||||
| some impact on the SPI field and the alignment of all payloads in the | ||||
| message. The Domain of Interpretation (DOI) will dictate the SPI | ||||
| Size for other protocols. | ||||
| o # of Transforms (1 octet) - Specifies the number of transforms for | o # of Transforms (1 octet) - Specifies the number of transforms for | |||
| the Proposal. Each of these is contained in a Transform payload. | the Proposal. Each of these is contained in a Transform payload. | |||
| o SPI (variable) - The sending entity's SPI. | o SPI (variable) - The sending entity's SPI. In the event the SPI Size | |||
| is not a multiple of 4 octets, there is no padding applied to the | ||||
| payload, however, it can be applied at the end of the message. | ||||
| The payload type for the Proposal Payload is two (2). | The payload type for the Proposal Payload is two (2). | |||
| 3.6 Transform Payload | 3.6 Transform Payload | |||
| The Transform Payload contains information used during Security Associa- | The Transform Payload contains information used during Security Associa- | |||
| tion negotiation. The Transform payload consists of security mechanisms, | tion negotiation. The Transform payload consists of a specific security | |||
| or transforms, to be used to secure the communications channel. The | mechanism, or transforms, to be used to secure the communications chan- | |||
| Transform payload also contains the security association attributes asso- | nel. The Transform payload also contains the security association at- | |||
| ciated with the specific transform. These SA attributes are DOI-specific. | tributes associated with the specific transform. These SA attributes are | |||
| Figure 7 shows the format of the Transform Payload. A description of its | DOI-specific. Figure 7 shows the format of the Transform Payload. A de- | |||
| use can be found in section 4.1. | scription of its use can be found in section 4.2. | |||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Next Payload ! RESERVED ! Payload Length ! | ! Next Payload ! RESERVED ! Payload Length ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Transform # ! Transform-Id ! RESERVED2 ! | ! Transform # ! Transform-Id ! RESERVED2 ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! ! | ! ! | |||
| ~ SA Attributes ~ | ~ SA Attributes ~ | |||
| skipping to change at page 31, line 21 ¶ | skipping to change at page 31, line 19 ¶ | |||
| o RESERVED (1 octet) - Unused, set to 0. | o RESERVED (1 octet) - Unused, set to 0. | |||
| o Payload Length (2 octets) - Length in octets of the current payload, | o Payload Length (2 octets) - Length in octets of the current payload, | |||
| including the generic payload header, Transform values, and all SA | including the generic payload header, Transform values, and all SA | |||
| Attributes. | Attributes. | |||
| o Transform # (1 octet) - Identifies the Transform number for the | o Transform # (1 octet) - Identifies the Transform number for the | |||
| current payload. If there is more than one transform proposed for a | current payload. If there is more than one transform proposed for a | |||
| specific protocol within the Proposal payload, then each Transform | specific protocol within the Proposal payload, then each Transform | |||
| payload has a unique Transform number. A description of the use of | payload has a unique Transform number. A description of the use of | |||
| this field is found in section 4.1. | this field is found in section 4.2. | |||
| o Transform-Id (1 octet) - Specifies the Transform identifier for the | o Transform-Id (1 octet) - Specifies the Transform identifier for the | |||
| protocol within the current proposal. These transforms are defined | protocol within the current proposal. These transforms are defined | |||
| by the DOI and are dependent on the protocol being negotiated. | by the DOI and are dependent on the protocol being negotiated. | |||
| o RESERVED2 (2 octets) - Unused, set to 0. | o RESERVED2 (2 octets) - Unused, set to 0. | |||
| o SA Attributes (variable length) - This field contains the security | o SA Attributes (variable length) - This field contains the security | |||
| association attributes as defined for the transform given in the | association attributes as defined for the transform given in the | |||
| Transform-Id field. The SA Attributes SHOULD be represented using | Transform-Id field. The SA Attributes SHOULD be represented using | |||
| the Data Attributes format described in section 3.3. | the Data Attributes format described in section 3.3. If the SA | |||
| Attributes are not aligned on 4-byte boundaries, then subsequent | ||||
| payloads will not be aligned and any padding will be added at the end | ||||
| of the message to make the message 4-octet aligned. | ||||
| The payload type for the Transform Payload is three (3). | The payload type for the Transform Payload is three (3). | |||
| 3.7 Key Exchange Payload | 3.7 Key Exchange Payload | |||
| The Key Exchange Payload supports a variety of key exchange techniques. | The Key Exchange Payload supports a variety of key exchange techniques. | |||
| Example key exchanges are Oakley [Oakley], Diffie-Hellman, the enhanced | Example key exchanges are Oakley [Oakley], Diffie-Hellman, the enhanced | |||
| Diffie-Hellman key exchange described in X9.42 [ANSI], and the RSA-based | Diffie-Hellman key exchange described in X9.42 [ANSI], and the RSA-based | |||
| key exchange used by PGP. Figure 8 shows the format of the Key Exchange | key exchange used by PGP. Figure 8 shows the format of the Key Exchange | |||
| payload. | payload. | |||
| The Key Exchange Payload fields are defined as follows: | The Key Exchange Payload fields are defined as follows: | |||
| o Next Payload (1 octet) - Identifier for the payload type of the next | o Next Payload (1 octet) - Identifier for the payload type of the next | |||
| payload in the message. If the current payload is the last in the | payload in the message. If the current payload is the last in the | |||
| message, then this field will be 0. | message, then this field will be 0. | |||
| o RESERVED (1 octet) - Unused, set to 0. | ||||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Next Payload ! RESERVED ! Payload Length ! | ! Next Payload ! RESERVED ! Payload Length ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! ! | ! ! | |||
| ~ Key Exchange Data ~ | ~ Key Exchange Data ~ | |||
| ! ! | ! ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 8: Key Exchange Payload Format | Figure 8: Key Exchange Payload Format | |||
| o RESERVED (1 octet) - Unused, set to 0. | ||||
| o Payload Length (2 octets) - Length in octets of the current payload, | o Payload Length (2 octets) - Length in octets of the current payload, | |||
| including the generic payload header. | including the generic payload header. | |||
| o Key Exchange Data (variable length) - Data required to generate a | o Key Exchange Data (variable length) - Data required to generate a | |||
| session key. The interpretation of this data is specified by the DOI | session key. The interpretation of this data is specified by the DOI | |||
| and the associated Key Exchange algorithm. This field may also | and the associated Key Exchange algorithm. This field may also | |||
| contain pre-placed key indicators. | contain pre-placed key indicators. | |||
| The payload type for the Key Exchange Payload is four (4). | The payload type for the Key Exchange Payload is four (4). | |||
| skipping to change at page 32, line 47 ¶ | skipping to change at page 33, line 4 ¶ | |||
| o Next Payload (1 octet) - Identifier for the payload type of the next | o Next Payload (1 octet) - Identifier for the payload type of the next | |||
| payload in the message. If the current payload is the last in the | payload in the message. If the current payload is the last in the | |||
| message, then this field will be 0. | message, then this field will be 0. | |||
| o RESERVED (1 octet) - Unused, set to 0. | o RESERVED (1 octet) - Unused, set to 0. | |||
| o Payload Length (2 octets) - Length in octets of the current payload, | o Payload Length (2 octets) - Length in octets of the current payload, | |||
| including the generic payload header. | including the generic payload header. | |||
| o ID Type (1 octet) - Specifies the type of Identification being used. | o ID Type (1 octet) - Specifies the type of Identification being used. | |||
| This field is DOI-dependent. | ||||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Next Payload ! RESERVED ! Payload Length ! | ! Next Payload ! RESERVED ! Payload Length ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! ID Type ! RESERVED2 ! | ! ID Type ! DOI Specific ID Data ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! ! | ! ! | |||
| ~ Identification Data ~ | ~ Identification Data ~ | |||
| ! ! | ! ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 9: Identification Payload Format | Figure 9: Identification Payload Format | |||
| o RESERVED2 (3 octets) - Unused, set to 0. | This field is DOI-dependent. | |||
| o DOI Specific ID Data (3 octets) - Contains DOI specific | ||||
| Identification data. If unused, then this field MUST be set to 0. | ||||
| o Identification Data (variable length) - Contains identity | o Identification Data (variable length) - Contains identity | |||
| information. The values for this field are DOI-specific and the | information. The values for this field are DOI-specific and the | |||
| format is specified by the ID Type field. Specific details for the | format is specified by the ID Type field. Specific details for the | |||
| IETF IP Security DOI Identification Data are detailed in [IPDOI]. | IETF IP Security DOI Identification Data are detailed in [IPDOI]. | |||
| The payload type for the Identification Payload is five (5). | The payload type for the Identification Payload is five (5). | |||
| 3.9 Certificate Payload | 3.9 Certificate Payload | |||
| skipping to change at page 33, line 46 ¶ | skipping to change at page 34, line 4 ¶ | |||
| the Certificate Payload. | the Certificate Payload. | |||
| NOTE: Certificate types and formats are not generally bound to a DOI - it | NOTE: Certificate types and formats are not generally bound to a DOI - it | |||
| is expected that there will only be a few certificate types, and that most | is expected that there will only be a few certificate types, and that most | |||
| DOIs will accept all of these types. | DOIs will accept all of these types. | |||
| The Certificate Payload fields are defined as follows: | The Certificate Payload fields are defined as follows: | |||
| o Next Payload (1 octet) - Identifier for the payload type of the next | o Next Payload (1 octet) - Identifier for the payload type of the next | |||
| payload in the message. If the current payload is the last in the | payload in the message. If the current payload is the last in the | |||
| message, then this field will be 0. | ||||
| o RESERVED (1 octet) - Unused, set to 0. | ||||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Next Payload ! RESERVED ! Payload Length ! | ! Next Payload ! RESERVED ! Payload Length ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Cert Encoding ! ! | ! Cert Encoding ! ! | |||
| +-+-+-+-+-+-+-+-+ ! | +-+-+-+-+-+-+-+-+ ! | |||
| ~ Certificate Data ~ | ~ Certificate Data ~ | |||
| ! ! | ! ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 10: Certificate Payload Format | Figure 10: Certificate Payload Format | |||
| message, then this field will be 0. | ||||
| o RESERVED (1 octet) - Unused, set to 0. | ||||
| o Payload Length (2 octets) - Length in octets of the current payload, | o Payload Length (2 octets) - Length in octets of the current payload, | |||
| including the generic payload header. | including the generic payload header. | |||
| o Certificate Encoding (1 octet) - This field indicates the type of | o Certificate Encoding (1 octet) - This field indicates the type of | |||
| certificate or certificate-related information contained in the | certificate or certificate-related information contained in the | |||
| Certificate Data field. | Certificate Data field. | |||
| __________Certificate_Type___________Value___ | _________Certificate_Type____________Value____ | |||
| NONE 0 | NONE 0 | |||
| PKCS #7 wrapped X.509 certificate 1 | PKCS #7 wrapped X.509 certificate 1 | |||
| PGP Certificate 2 | PGP Certificate 2 | |||
| DNS Signed Key 3 | DNS Signed Key 3 | |||
| X.509 Certificate - Signature 4 | X.509 Certificate - Signature 4 | |||
| X.509 Certificate - Key Exchange 5 | X.509 Certificate - Key Exchange 5 | |||
| Kerberos Tokens 6 | Kerberos Tokens 6 | |||
| Certificate Revocation List (CRL) 7 | Certificate Revocation List (CRL) 7 | |||
| Authority Revocation List (ARL) 8 | Authority Revocation List (ARL) 8 | |||
| SPKI Certificate 9 | SPKI Certificate 9 | |||
| RESERVED 10- 255 | X.509 Certificate - Attribute 10 | |||
| RESERVED 11 - 255 | ||||
| o Certificate Data (variable length) - Actual encoding of certificate | o Certificate Data (variable length) - Actual encoding of certificate | |||
| data. The type of certificate is indicated by the Certificate | data. The type of certificate is indicated by the Certificate | |||
| Encoding field. | Encoding field. | |||
| The payload type for the Certificate Payload is six (6). | The payload type for the Certificate Payload is six (6). | |||
| 3.10 Certificate Request Payload | 3.10 Certificate Request Payload | |||
| The Certificate Request Payload provides a means to request certificates | The Certificate Request Payload provides a means to request certificates | |||
| via ISAKMP and can appear in any message. Certificate Request payloads | via ISAKMP and can appear in any message. Certificate Request payloads | |||
| SHOULD be included in an exchange whenever an appropriate directory ser- | SHOULD be included in an exchange whenever an appropriate directory ser- | |||
| vice (e.g. Secure DNS [DNSSEC]) is not available to distribute certifi- | vice (e.g. Secure DNS [DNSSEC]) is not available to distribute certifi- | |||
| cates. The Certificate Request payloads MUST be accepted at any point | cates. The Certificate Request payload MUST be accepted at any point dur- | |||
| during the exchange. The responder to the Certificate Request payload | ing the exchange. The responder to the Certificate Request payload MUST | |||
| MUST send its immediate certificate, if certificates are supported, and | send its certificate, if certificates are supported, based on the values | |||
| SHOULD send as much of its certificate chain as possible. Figure 11 shows | contained in the payload. If multiple certificates are required, then | |||
| the format of the Certificate Request Payload. | multiple Certificate Request payloads SHOULD be transmitted. Figure 11 | |||
| shows the format of the Certificate Request Payload. | ||||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Next Payload ! RESERVED ! Payload Length ! | ! Next Payload ! RESERVED ! Payload Length ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! # Cert. Types ! ! | ! Cert. Type ! ! | |||
| +-+-+-+-+-+-+-+-+ ! | ||||
| ~ Certificate Types ~ | ||||
| ! ! | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ! # Cert. Auths ! ! | ||||
| +-+-+-+-+-+-+-+-+ ! | +-+-+-+-+-+-+-+-+ ! | |||
| ~ Certificate Authorities ~ | ~ Certificate Authority ~ | |||
| ! ! | ! ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 11: Certificate Request Payload Format | Figure 11: Certificate Request Payload Format | |||
| The Certificate Payload fields are defined as follows: | The Certificate Payload fields are defined as follows: | |||
| o Next Payload (1 octet) - Identifier for the payload type of the next | o Next Payload (1 octet) - Identifier for the payload type of the next | |||
| payload in the message. If the current payload is the last in the | payload in the message. If the current payload is the last in the | |||
| message, then this field will be 0. | message, then this field will be 0. | |||
| o RESERVED (1 octet) - Unused, set to 0. | o RESERVED (1 octet) - Unused, set to 0. | |||
| o Payload Length (2 octets) - Length in octets of the current payload, | o Payload Length (2 octets) - Length in octets of the current payload, | |||
| including the generic payload header. | including the generic payload header. | |||
| o # Certificate Types (1 octet) - The number of Certificate Types | o Certificate Type (1 octet) - Contains an encoding of the type of | |||
| contained in the Certificate Types field. | certificate requested. Acceptable values are listed in section 3.9. | |||
| o Certificate Types (variable length) - Contains a list of the types of | ||||
| certificates requested, sorted in order of preference. Each | ||||
| individual certificate type is 1 octet. This field is NOT required | ||||
| to end on a 4-octet boundary. It is shown as ending on a 4-octet | ||||
| boundary in Figure 11 for drawing purposes only. | ||||
| o # Certificate Authorities (1 octet) - The number of Certificate Au- | ||||
| thorities contained in the Certificate Authorities field. This field | ||||
| is NOT required to begin on a 4-octet boundary. It is shown as be- | ||||
| ginning on a 4-octet boundary in Figure 11 for drawing purposes only. | ||||
| o Certificate Authorities (variable length) - Contains a list of Data | o Certificate Authority (variable length) - Contains an encoding of an | |||
| Attributes (see section 3.3) which indicate the Distinguished Names | acceptable certificate authority for the type of certificate | |||
| of acceptable certificate authorities. See [IPDOI] for the | requested. As an example, for an X.509 certificate this field would | |||
| Distinguished Name Attribute Type value. | contain the Distinguished Name encoding of the Issuer Name of an | |||
| X.509 certificate authority acceptable to the sender of this payload. | ||||
| This would be included to assist the responder in determining how | ||||
| much of the certificate chain would need to be sent in response to | ||||
| this request. If there is no specific certificate authority | ||||
| requested, this field SHOULD not be included. | ||||
| The payload type for the Certificate Request Payload is seven (7). | The payload type for the Certificate Request Payload is seven (7). | |||
| 3.11 Hash Payload | 3.11 Hash Payload | |||
| The Hash Payload contains data generated by the hash function (selected | The Hash Payload contains data generated by the hash function (selected | |||
| during the SA establishment exchange), over some part of the message | during the SA establishment exchange), over some part of the message | |||
| and/or ISAKMP state. This payload may be used to verify the integrity of | and/or ISAKMP state. This payload may be used to verify the integrity of | |||
| the data in an ISAKMP message or for authentication of the negotiating en- | the data in an ISAKMP message or for authentication of the negotiating en- | |||
| tities. Figure 12 shows the format of the Hash Payload. | tities. Figure 12 shows the format of the Hash Payload. | |||
| skipping to change at page 38, line 10 ¶ | skipping to change at page 37, line 47 ¶ | |||
| o Signature Data (variable length) - Data that results from applying | o Signature Data (variable length) - Data that results from applying | |||
| the digital signature function to the ISAKMP message and/or state. | the digital signature function to the ISAKMP message and/or state. | |||
| The payload type for the Signature Payload is nine (9). | The payload type for the Signature Payload is nine (9). | |||
| 3.13 Nonce Payload | 3.13 Nonce Payload | |||
| The Nonce Payload contains random data used to guarantee liveness dur- | The Nonce Payload contains random data used to guarantee liveness dur- | |||
| ing an exchange and protect against replay attacks. Figure 14 shows the | ing an exchange and protect against replay attacks. Figure 14 shows the | |||
| format of the Nonce Payload. If nonces are used by a particular key ex- | format of the Nonce Payload. If nonces are used by a particular key ex- | |||
| change, the use of the Nonce payload would be dictated by the key ex- | change, the use of the Nonce payload will be dictated by the key exchange. | |||
| change. The nonces may be transmitted as part of the key exchange data, | The nonces may be transmitted as part of the key exchange data, or as a | |||
| or as a separate payload. However, this is defined by the key exchange, | separate payload. However, this is defined by the key exchange, not by | |||
| not by ISAKMP. | ISAKMP. | |||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! Next Payload ! RESERVED ! Payload Length ! | ! Next Payload ! RESERVED ! Payload Length ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ! ! | ! ! | |||
| ~ Nonce Data ~ | ~ Nonce Data ~ | |||
| ! ! | ! ! | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 40, line 4 ¶ | skipping to change at page 39, line 44 ¶ | |||
| payload in the message. If the current payload is the last in the | payload in the message. If the current payload is the last in the | |||
| message, then this field will be 0. | message, then this field will be 0. | |||
| o RESERVED (1 octet) - Unused, set to 0. | o RESERVED (1 octet) - Unused, set to 0. | |||
| o Payload Length (2 octets) - Length in octets of the current payload, | o Payload Length (2 octets) - Length in octets of the current payload, | |||
| including the generic payload header. | including the generic payload header. | |||
| o Domain of Interpretation (4 octets) - Identifies the DOI (as | o Domain of Interpretation (4 octets) - Identifies the DOI (as | |||
| described in Section 2.1) under which this notification is taking | described in Section 2.1) under which this notification is taking | |||
| place. For the Internet, the DOI is one (1). Other DOI's can be | place. For ISAKMP this value is zero (0) and for the IPSEC DOI it is | |||
| defined using the description in appendix B. | one (1). Other DOI's can be defined using the description in | |||
| appendix B. | ||||
| o Protocol-Id (1 octet) - Specifies the protocol identifier for the | o Protocol-Id (1 octet) - Specifies the protocol identifier for the | |||
| current notification. Examples might include ISAKMP, IPSEC ESP, | current notification. Examples might include ISAKMP, IPSEC ESP, | |||
| IPSEC AH, OSPF, TLS, etc. | IPSEC AH, OSPF, TLS, etc. | |||
| o SPI Size (1 octet) - Length in octets of the SPI as defined by the | o SPI Size (1 octet) - Length in octets of the SPI as defined by the | |||
| Protocol-Id. In the case of ISAKMP, the Initiator and Responder | Protocol-Id. In the case of ISAKMP, the Initiator and Responder | |||
| cookie pair is the ISAKMP SPI, therefore, the SPI Size would be 16 | cookie pair from the ISAKMP Header is the ISAKMP SPI, therefore, the | |||
| octets for the SPI. | SPI Size is irrelevant and MAY be from zero (0) to sixteen (16). If | |||
| the SPI Size is non-zero, the content of the SPI field MUST be | ||||
| ignored. The Domain of Interpretation (DOI) will dictate the SPI | ||||
| Size for other protocols. | ||||
| o Notify Message Type (2 octets) - Specifies the type of notification | o Notify Message Type (2 octets) - Specifies the type of notification | |||
| message (see section 3.14.1). Additional text, if specified by the | message (see section 3.14.1). Additional text, if specified by the | |||
| DOI, is placed in the Notification Data field. | DOI, is placed in the Notification Data field. | |||
| o SPI (variable length) - Security Parameter Index. The receiving | o SPI (variable length) - Security Parameter Index. The receiving | |||
| entity's SPI. The use of the SPI field is described in section 2.4. | entity's SPI. The use of the SPI field is described in section 2.4. | |||
| The length of this field is determined by the SPI Size field. | The length of this field is determined by the SPI Size field and is | |||
| not necessarily aligned to a 4 octet boundary. | ||||
| o Notification Data (variable length) - Informational or error data | o Notification Data (variable length) - Informational or error data | |||
| transmitted in addition to the Notify Message Type. Values for this | transmitted in addition to the Notify Message Type. Values for this | |||
| field are DOI-specific. | field are DOI-specific. | |||
| The payload type for the Notification Payload is eleven (11). | The payload type for the Notification Payload is eleven (11). | |||
| 3.14.1 Notify Message Types | 3.14.1 Notify Message Types | |||
| Notification information can be error messages specifying why an SA could | Notification information can be error messages specifying why an SA could | |||
| skipping to change at page 41, line 28 ¶ | skipping to change at page 41, line 28 ¶ | |||
| INVALID-SPI 11 | INVALID-SPI 11 | |||
| INVALID-TRANSFORM-ID 12 | INVALID-TRANSFORM-ID 12 | |||
| ATTRIBUTES-NOT-SUPPORTED 13 | ATTRIBUTES-NOT-SUPPORTED 13 | |||
| NO-PROPOSAL-CHOSEN 14 | NO-PROPOSAL-CHOSEN 14 | |||
| BAD-PROPOSAL-SYNTAX 15 | BAD-PROPOSAL-SYNTAX 15 | |||
| PAYLOAD-MALFORMED 16 | PAYLOAD-MALFORMED 16 | |||
| INVALID-KEY-INFORMATION 17 | INVALID-KEY-INFORMATION 17 | |||
| INVALID-ID-INFORMATION 18 | INVALID-ID-INFORMATION 18 | |||
| INVALID-CERT-ENCODING 19 | INVALID-CERT-ENCODING 19 | |||
| INVALID-CERTIFICATE 20 | INVALID-CERTIFICATE 20 | |||
| BAD-CERT-REQUEST-SYNTAX 21 | CERT-TYPE-UNSUPPORTED 21 | |||
| INVALID-CERT-AUTHORITY 22 | INVALID-CERT-AUTHORITY 22 | |||
| INVALID-HASH-INFORMATION 23 | INVALID-HASH-INFORMATION 23 | |||
| AUTHENTICATION-FAILED 24 | AUTHENTICATION-FAILED 24 | |||
| INVALID-SIGNATURE 25 | INVALID-SIGNATURE 25 | |||
| ADDRESS-NOTIFICATION 26 | ADDRESS-NOTIFICATION 26 | |||
| RESERVED (Future Use) 27-8191 | NOTIFY-SA-LIFETIME 27 | |||
| CERTIFICATE-UNAVAILABLE 28 | ||||
| RESERVED (Future Use) 29 - 8191 | ||||
| Private Use 8192 - 16383 | Private Use 8192 - 16383 | |||
| NOTIFY MESSAGES - STATUS TYPES | NOTIFY MESSAGES - STATUS TYPES | |||
| ________Status_____________Value______ | _________Status_____________Value______ | |||
| CONNECTED 16384 | CONNECTED 16384 | |||
| RESERVED (Future Use) 16385- 24575 | RESERVED (Future Use) 16385 - 24575 | |||
| Private Use 24576 - 32767 | DOI-specific codes 24576 - 32767 | |||
| Private Use 32768 - 40959 | ||||
| RESERVED (Future Use) 40960 - 65535 | ||||
| 3.15 Delete Payload | 3.15 Delete Payload | |||
| The Delete Payload contains a protocol-specific security association iden- | The Delete Payload contains a protocol-specific security association iden- | |||
| tifier that the sender has removed from its security association database | tifier that the sender has removed from its security association database | |||
| and is, therefore, no longer valid. Figure 16 shows the format of the | and is, therefore, no longer valid. Figure 16 shows the format of the | |||
| Delete Payload. It is possible to send multiple SPIs in a Delete payload, | Delete Payload. It is possible to send multiple SPIs in a Delete payload, | |||
| however, each SPI MUST be for the same protocol. Mixing of Protocol Iden- | however, each SPI MUST be for the same protocol. Mixing of Protocol Iden- | |||
| tifiers MUST NOT be performed with the Delete payload. | tifiers MUST NOT be performed with the Delete payload. | |||
| Deletion which is concerned with an ISAKMP SA will contain a Protocol-Id | Deletion which is concerned with an ISAKMP SA will contain a Protocol-Id | |||
| of ISAKMP and the SPIs are the initiator and responder cookies. Deletion | of ISAKMP and the SPIs are the initiator and responder cookies from the | |||
| which is concerned with a Protocol SA, such as ESP or AH, will contain the | ISAKMP Header. Deletion which is concerned with a Protocol SA, such as | |||
| Protocol-Id of that protocol (e.g. ESP, AH) and the SPI is the sending | ESP or AH, will contain the Protocol-Id of that protocol (e.g. ESP, AH) | |||
| entity's SPI(s). | and the SPI is the sending entity's SPI(s). | |||
| NOTE: The Delete Payload is not a request for the responder to delete an | NOTE: The Delete Payload is not a request for the responder to delete an | |||
| SA, but an advisory from the initiator to the responder. If the responder | SA, but an advisory from the initiator to the responder. If the responder | |||
| chooses to ignore the message, the next communication from the responder | chooses to ignore the message, the next communication from the responder | |||
| to the initiator, using that security association, will fail. A responder | to the initiator, using that security association, will fail. A responder | |||
| is not expected to acknowledge receipt of a Delete payload. | is not expected to acknowledge receipt of a Delete payload. | |||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 42, line 44 ¶ | skipping to change at page 42, line 48 ¶ | |||
| payload in the message. If the current payload is the last in the | payload in the message. If the current payload is the last in the | |||
| message, then this field will be 0. | message, then this field will be 0. | |||
| o RESERVED (1 octet) - Unused, set to 0. | o RESERVED (1 octet) - Unused, set to 0. | |||
| o Payload Length (2 octets) - Length in octets of the current payload, | o Payload Length (2 octets) - Length in octets of the current payload, | |||
| including the generic payload header. | including the generic payload header. | |||
| o Domain of Interpretation (4 octets) - Identifies the DOI (as | o Domain of Interpretation (4 octets) - Identifies the DOI (as | |||
| described in Section 2.1) under which this deletion is taking place. | described in Section 2.1) under which this deletion is taking place. | |||
| For the Internet, the DOI is one (1). Other DOI's can be defined | For ISAKMP this value is zero (0) and for the IPSEC DOI it is one | |||
| using the description in appendix B. | (1). Other DOI's can be defined using the description in appendix B. | |||
| o Protocol-Id (1 octet) - ISAKMP can establish security associations | o Protocol-Id (1 octet) - ISAKMP can establish security associations | |||
| for various protocols, including ISAKMP and IPSEC. This field identi- | for various protocols, including ISAKMP and IPSEC. This field identi- | |||
| fies which security association database to apply the delete request. | fies which security association database to apply the delete request. | |||
| o SPI Size (1 octet) - Length in octets of the SPI as defined by the | o SPI Size (1 octet) - Length in octets of the SPI as defined by the | |||
| Protocol-Id. In the case of ISAKMP, the Initiator and Responder | Protocol-Id. In the case of ISAKMP, the Initiator and Responder | |||
| cookie pair is the ISAKMP SPI. In this case, the SPI Size would be 16 | cookie pair is the ISAKMP SPI. In this case, the SPI Size would be 16 | |||
| octets for each SPI being deleted. | octets for each SPI being deleted. | |||
| o # of SPIs (2 octets) - The number of SPIs contained in the Delete | o # of SPIs (2 octets) - The number of SPIs contained in the Delete | |||
| payload. The size of each SPI is defined by the SPI Size field. | payload. The size of each SPI is defined by the SPI Size field. | |||
| o Security Parameter Index(es) (variable length) - Identifies the | o Security Parameter Index(es) (variable length) - Identifies the | |||
| specific security association(s) to delete. Values for this field | specific security association(s) to delete. Values for this field | |||
| are DOI and protocol specific. The length of this field is | are DOI and protocol specific. The length of this field is | |||
| determined by the SPI Size and # of SPIs fields. | determined by the SPI Size and # of SPIs fields. | |||
| The payload type for the Delete Payload is twelve (12). | The payload type for the Delete Payload is twelve (12). | |||
| 3.16 Vendor ID Payload | ||||
| The Vendor ID Payload contains a vendor defined constant. The constant | ||||
| is used by vendors to identify and recognize remote instances of their | ||||
| implementations. This mechanism allows a vendor to experiment with new | ||||
| features while maintaining backwards compatibility. This is not a general | ||||
| extension facility of ISAKMP. Figure 17 shows the format of the Vendor ID | ||||
| Payload. | ||||
| The Vendor ID payload is not an announcement from the sender that it will | ||||
| send private payload types. A vendor sending the Vendor ID MUST not make | ||||
| any assumptions about private payloads that it may send unless a Vendor ID | ||||
| is received as well. Multiple Vendor ID payloads MAY be sent. An imple- | ||||
| mentation is NOT REQUIRED to understand any Vendor ID payloads. An imple- | ||||
| mentation is NOT REQUIRED to send any Vendor ID payload at all. If a pri- | ||||
| vate payload was sent without prior agreement to send it, a compliant im- | ||||
| plementation may reject a proposal with a notify message of type INVALID- | ||||
| PAYLOAD-TYPE. | ||||
| If a Vendor ID payload is sent, it MUST be sent during the Phase 1 negoti- | ||||
| ation. Reception of a familiar Vendor ID payload in the Phase 1 negotia- | ||||
| tion allows an implementation to make use of Private USE payload numbers | ||||
| (128-255), described in section 3.1 for vendor specific extensions during | ||||
| Phase 2 negotiations. The definition of "familiar" is left to implementa- | ||||
| tions to determine. Some vendors may wish to implement another vendor's | ||||
| extension prior to standardization. However, this practice SHOULD not be | ||||
| widespread and vendors should work towards standardization instead. | ||||
| The vendor defined constant MUST be unique. The choice of hash and text | ||||
| to hash is left to the vendor to decide. As an example, vendors could | ||||
| generate their vendor id by taking a plain (non-keyed) hash of a string | ||||
| containing the product name, and the version of the product. A hash is | ||||
| used instead of a vendor registry to avoid local cryptographic policy | ||||
| problems with having a list of "approved" products, to keep away from | ||||
| maintaining a list of vendors, and to allow classified products to avoid | ||||
| having to appear on any list. For instance: | ||||
| "Example Company IPsec. Version 97.1" | ||||
| (not including the quotes) has MD5 hash: | ||||
| 48544f9b1fe662af98b9b39e50c01a5a, when using MD5file. Vendors may include | ||||
| all of the hash, or just a portion of it, as the payload length will bound | ||||
| the data. There are no security implications of this hash, so its choice | ||||
| is arbitrary. | ||||
| 1 2 3 | ||||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ! Next Payload ! RESERVED ! Payload Length ! | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ! ! | ||||
| ~ Vendor ID (VID) ~ | ||||
| ! ! | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Figure 17: Vendor ID Payload Format | ||||
| The Vendor ID Payload fields are defined as follows: | ||||
| o Next Payload (1 octet) - Identifier for the payload type of the next | ||||
| payload in the message. If the current payload is the last in the | ||||
| message, then this field will be 0. | ||||
| o RESERVED (1 octet) - Unused, set to 0. | ||||
| o Payload Length (2 octets) - Length in octets of the current payload, | ||||
| including the generic payload header. | ||||
| o Vendor ID (variable length) - Hash of the vendor string plus version | ||||
| (as described above). | ||||
| The payload type for the Vendor ID Payload is thirteen (13). | ||||
| 4 ISAKMP Exchanges | 4 ISAKMP Exchanges | |||
| ISAKMP supplies the basic syntax of a message exchange. The basic build- | ISAKMP supplies the basic syntax of a message exchange. The basic build- | |||
| ing blocks for ISAKMP messages are the payload types described in section | ing blocks for ISAKMP messages are the payload types described in section | |||
| 3. This section describes the procedures for SA establishment and SA mod- | 3. This section describes the procedures for SA establishment and SA mod- | |||
| ification, followed by a default set of exchanges that MAY be used for | ification, followed by a default set of exchanges that MAY be used for | |||
| initial interoperability. Other exchanges will be defined depending on | initial interoperability. Other exchanges will be defined depending on | |||
| the DOI and key exchange. [IPDOI] and [?] are examples of how this is | the DOI and key exchange. [IPDOI] and [IKE] are examples of how this is | |||
| achieved. Appendix ?? explains the procedures for accomplishing these | achieved. Appendix B explains the procedures for accomplishing these ad- | |||
| additions. | ditions. | |||
| 4.1 Security Association Establishment | 4.1 ISAKMP Exchange Types | |||
| ISAKMP allows the creation of exchanges for the establishment of Security | ||||
| Associations and keying material. There are currently five default Ex- | ||||
| change Types defined for ISAKMP. Sections 4.4 through 4.8 describe these | ||||
| exchanges. Exchanges define the content and ordering of ISAKMP messages | ||||
| during communications between peers. Most exchanges will include all the | ||||
| basic payload types - SA, KE, ID, SIG - and may include others. The pri- | ||||
| mary difference between exchange types is the ordering of the messages and | ||||
| the payload ordering within each message. While the ordering of payloads | ||||
| within messages is not mandated, for processing efficiency it is RECOM- | ||||
| MENDED that the Security Association payload be the first payload within | ||||
| an exchange. Processing of each payload within an exchange is described | ||||
| in section 5. | ||||
| Sections 4.4 through 4.8 provide a default set of ISAKMP exchanges. These | ||||
| exchanges provide different security protection for the exchange itself | ||||
| and information exchanged. The diagrams in each of the following sections | ||||
| show the message ordering for each exchange type as well as the payloads | ||||
| included in each message, and provide basic notes describing what has hap- | ||||
| pened after each message exchange. None of the examples include any "op- | ||||
| tional payloads", like certificate and certificate request. Additionally, | ||||
| none of the examples include an initial exchange of ISAKMP Headers (con- | ||||
| taining initiator and responder cookies) which would provide protection | ||||
| against clogging (see section 2.5.3). | ||||
| The defined exchanges are not meant to satisfy all DOI and key exchange | ||||
| protocol requirements. If the defined exchanges meet the DOI require- | ||||
| ments, then they can be used as outlined. If the defined exchanges do | ||||
| not meet the security requirements defined by the DOI, then the DOI MUST | ||||
| specify new exchange type(s) and the valid sequences of payloads that make | ||||
| up a successful exchange, and how to build and interpret those payloads. | ||||
| All ISAKMP implementations MUST implement the Informational Exchange and | ||||
| SHOULD implement the other four exchanges. However, this is dependent on | ||||
| the definition of the DOI and associated key exchange protocols. | ||||
| As discussed above, these exchange types can be used in either phase of | ||||
| negotiation. However, they may provide different security properties | ||||
| in each of the phases. With each of these exchanges, the combination of | ||||
| cookies and SPI fields identifies whether this exchange is being used in | ||||
| the first or second phase of a negotiation. | ||||
| 4.1.1 Notation | ||||
| The following notation is used to describe the ISAKMP exchange types, | ||||
| shown in the next section, with the message formats and associated pay- | ||||
| loads: | ||||
| HDR is an ISAKMP header whose exchange type defines the payload orderings | ||||
| SA is an SA negotiation payload with one or more Proposal and | ||||
| Transform payloads. An initiator MAY provide multiple proposals | ||||
| for negotiation; a responder MUST reply with only one. | ||||
| KE is the key exchange payload. | ||||
| IDx is the identity payload for "x". x can be: "ii" or "ir" | ||||
| for the ISAKMP initiator and responder, respectively, or x can | ||||
| be: "ui", "ur" (when the ISAKMP daemon is a proxy negotiator), | ||||
| for the user initiator and responder, respectively. | ||||
| HASH is the hash payload. | ||||
| SIG is the signature payload. The data to sign is exchange-specific. | ||||
| AUTH is a generic authentication mechanism, such as HASH or SIG. | ||||
| NONCE is the nonce payload. | ||||
| '*' signifies payload encryption after the ISAKMP header. This | ||||
| encryption MUST begin immediately after the ISAKMP header and | ||||
| all payloads following the ISAKMP header MUST be encrypted. | ||||
| => signifies "initiator to responder" communication | ||||
| <= signifies "responder to initiator" communication | ||||
| 4.2 Security Association Establishment | ||||
| The Security Association, Proposal, and Transform payloads are used to | The Security Association, Proposal, and Transform payloads are used to | |||
| build ISAKMP messages for the negotiation and establishment of SAs. An | build ISAKMP messages for the negotiation and establishment of SAs. An | |||
| SA establishment message consists of a single SA payload followed by at | SA establishment message consists of a single SA payload followed by at | |||
| least one, and possibly many, Proposal payloads and at least one, and pos- | least one, and possibly many, Proposal payloads and at least one, and pos- | |||
| sibly many, Transform payloads associated with each Proposal payload. Be- | sibly many, Transform payloads associated with each Proposal payload. Be- | |||
| cause these payloads are considered together, the SA payload will point to | cause these payloads are considered together, the SA payload will point to | |||
| any following payloads and not to the Proposal payload included with the | any following payloads and not to the Proposal payload included with the | |||
| SA payload. The SA Payload contains the DOI and Situation for the pro- | SA payload. The SA Payload contains the DOI and Situation for the pro- | |||
| posed SA. Each Proposal payload contains a Security Parameter Index (SPI) | posed SA. Each Proposal payload contains a Security Parameter Index (SPI) | |||
| and ensures that the SPI is associated with the Protocol-Id in accordance | and ensures that the SPI is associated with the Protocol-Id in accordance | |||
| with the Internet Security Architecture [RFC-1825]. Proposal payloads may | with the Internet Security Architecture [RFC-1825]. Proposal payloads may | |||
| or may not have the same SPI, as this is implementation dependent. Each | or may not have the same SPI, as this is implementation dependent. Each | |||
| Transform Payload contains the specific security mechanisms to be used for | Transform Payload contains the specific security mechanisms to be used for | |||
| the designated protocol. It is expected that the Proposal and Transform | the designated protocol. It is expected that the Proposal and Transform | |||
| payloads will be used only during SA establishment negotiation. The cre- | payloads will be used only during SA establishment negotiation. The cre- | |||
| ation of payloads for security association negotiation and establishment | ation of payloads for security association negotiation and establishment | |||
| described here in this section are applicable for all ISAKMP exchanges de- | described here in this section are applicable for all ISAKMP exchanges de- | |||
| scribed later in sections 4.4 through 4.8. The examples shown in 4.1.1 | scribed later in sections 4.4 through 4.8. The examples shown in 4.2.1 | |||
| contain only the SA, Proposal, and Transform payloads and do not contain | contain only the SA, Proposal, and Transform payloads and do not contain | |||
| other payloads that might exist for a given ISAKMP exchange. | other payloads that might exist for a given ISAKMP exchange. | |||
| The Proposal payload provides the initiating entity with the capability | The Proposal payload provides the initiating entity with the capability | |||
| to present to the responding entity the security protocols and associated | to present to the responding entity the security protocols and associated | |||
| security mechanisms for use with the security association being negoti- | security mechanisms for use with the security association being negoti- | |||
| ated. If the SA establishment negotiation is for a combined protection | ated. If the SA establishment negotiation is for a combined protection | |||
| suite consisting of multiple protocols, then there MUST be multiple Pro- | suite consisting of multiple protocols, then there MUST be multiple Pro- | |||
| posal payloads each with the same Proposal number. These proposals MUST | posal payloads each with the same Proposal number. These proposals MUST | |||
| be considered as a unit and MUST NOT be separated by a proposal with a | be considered as a unit and MUST NOT be separated by a proposal with a | |||
| skipping to change at page 45, line 11 ¶ | skipping to change at page 48, line 17 ¶ | |||
| payload associated with the Protocol. The responder SHOULD retain the | payload associated with the Protocol. The responder SHOULD retain the | |||
| Proposal # field in the Proposal payload and the Transform # field in | Proposal # field in the Proposal payload and the Transform # field in | |||
| each Transform payload of the selected Proposal. Retention of Proposal | each Transform payload of the selected Proposal. Retention of Proposal | |||
| and Transform numbers should speed the initiator's protocol processing by | and Transform numbers should speed the initiator's protocol processing by | |||
| negating the need to compare the respondor's selection with every offered | negating the need to compare the respondor's selection with every offered | |||
| option. These values enable the initiator to perform the comparison di- | option. These values enable the initiator to perform the comparison di- | |||
| rectly and quickly. The initiator MUST verify that the Security Associa- | rectly and quickly. The initiator MUST verify that the Security Associa- | |||
| tion payload received from the responder matches one of the proposals sent | tion payload received from the responder matches one of the proposals sent | |||
| initially. | initially. | |||
| 4.1.1 Security Association Establishment Examples | 4.2.1 Security Association Establishment Examples | |||
| This example shows a Proposal for a combined protection suite with two | This example shows a Proposal for a combined protection suite with two | |||
| different protocols. The first protocol is presented with two transforms | different protocols. The first protocol is presented with two transforms | |||
| supported by the proposer. The second protocol is presented with a sin- | supported by the proposer. The second protocol is presented with a sin- | |||
| gle transform. An example for this proposal might be: Protocol 1 is ESP | gle transform. An example for this proposal might be: Protocol 1 is ESP | |||
| with Transform 1 as 3DES and Transform 2 as DES AND Protocol 2 is AH with | with Transform 1 as 3DES and Transform 2 as DES AND Protocol 2 is AH with | |||
| Transform 1 as SHA. The responder MUST select from the two transforms pro- | Transform 1 as SHA. The responder MUST select from the two transforms pro- | |||
| posed for ESP. The resulting protection suite will be either (1) 3DES AND | posed for ESP. The resulting protection suite will be either (1) 3DES AND | |||
| SHA OR (2) DES AND SHA, depending on which ESP transform was selected by | SHA OR (2) DES AND SHA, depending on which ESP transform was selected by | |||
| the responder. Note this example is shown using the Base Exchange. | the responder. Note this example is shown using the Base Exchange. | |||
| skipping to change at page 47, line 26 ¶ | skipping to change at page 50, line 32 ¶ | |||
| \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| \ ! SA Attributes ! | \ ! SA Attributes ! | |||
| >+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | >+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| / ! NP = 0 ! RESERVED ! Payload Length ! | / ! NP = 0 ! RESERVED ! Payload Length ! | |||
| / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Tran 2 ! Transform # 2 ! Transform ID ! RESERVED2 ! | Tran 2 ! Transform # 2 ! Transform ID ! RESERVED2 ! | |||
| \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| \ ! SA Attributes ! | \ ! SA Attributes ! | |||
| \+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | \+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 4.2 Security Association Modification | 4.3 Security Association Modification | |||
| Security Association modification within ISAKMP is accomplished by cre- | Security Association modification within ISAKMP is accomplished by cre- | |||
| ating a new SA and initiating communications using that new SA. Deletion | ating a new SA and initiating communications using that new SA. Deletion | |||
| of the old SA can be done anytime after the new SA is established. Dele- | of the old SA can be done anytime after the new SA is established. Dele- | |||
| tion of the old SA is dependent on local security policy. Modification of | tion of the old SA is dependent on local security policy. Modification of | |||
| SAs by using a "Create New SA followed by Delete Old SA" method is done to | SAs by using a "Create New SA followed by Delete Old SA" method is done to | |||
| avoid potential vulnerabilities in synchronizing modification of existing | avoid potential vulnerabilities in synchronizing modification of existing | |||
| SA attributes. The procedures for creating new SAs is outlined in section | SA attributes. The procedure for creating new SAs is outlined in section | |||
| 4.1. The procedures for deleting SAs is outlined in section 5.13. | 4.2. The procedure for deleting SAs is outlined in section 5.15. | |||
| Modification of an ISAKMP SA (phase 1 negotiation) follows the same proce- | Modification of an ISAKMP SA (phase 1 negotiation) follows the same proce- | |||
| dure as creation of an ISAKMP SA. There is no relationship between the two | dure as creation of an ISAKMP SA. There is no relationship between the two | |||
| SAs and the initiator and responder cookie pairs SHOULD be different, as | SAs and the initiator and responder cookie pairs SHOULD be different, as | |||
| outlined in section 2.5.3. | outlined in section 2.5.3. | |||
| Modification of a Protocol SA (phase 2 negotiation) follows the same pro- | Modification of a Protocol SA (phase 2 negotiation) follows the same pro- | |||
| cedure as creation of a Protocol SA. The creation of a new SA is protected | cedure as creation of a Protocol SA. The creation of a new SA is protected | |||
| by the existing ISAKMP SA. There is no relationship between the two Proto- | by the existing ISAKMP SA. There is no relationship between the two Proto- | |||
| col SAs. A protocol implementation SHOULD begin using the newly created | col SAs. A protocol implementation SHOULD begin using the newly created | |||
| SA for outbound traffic and SHOULD continue to support incoming traffic on | SA for outbound traffic and SHOULD continue to support incoming traffic | |||
| the old SA until it is deleted. | on the old SA until it is deleted or until traffic is received under the | |||
| protection of the newly created SA. As stated previously in this section, | ||||
| 4.3 ISAKMP Exchange Types | deletion of an old SA is then dependent on local security policy. | |||
| ISAKMP allows the creation of exchanges for the establishment of Security | ||||
| Associations and keying material. There are currently five default Ex- | ||||
| change Types defined for ISAKMP. Sections 4.4 through 4.8 describe these | ||||
| exchanges. Exchanges define the content and ordering of ISAKMP messages | ||||
| during communications between peers. Most exchanges will include all the | ||||
| basic payload types - SA, KE, ID, SIG - and may include others. The pri- | ||||
| mary difference between exchange types is the ordering of the messages | ||||
| and the payload ordering within each message. Processing of each payload | ||||
| within an exchange is described in section 5. | ||||
| Sections 4.4 through 4.8 provide a default set of ISAKMP exchanges. These | ||||
| exchanges provide different security protection for the exchange itself | ||||
| and information exchanged. The diagrams in each of the following sections | ||||
| show the message ordering for each exchange type as well as the payloads | ||||
| included in each message, and provide basic notes describing what has hap- | ||||
| pened after each message exchange. None of the examples include any "op- | ||||
| tional payloads", like certificate and certificate request. Additionally, | ||||
| none of the examples include an initial exchange of ISAKMP Headers (con- | ||||
| taining initiator and responder cookies) which would provide protection | ||||
| against clogging (see section 2.5.3). | ||||
| The defined exchanges are not meant to satisfy all DOI and key exchange | ||||
| protocol requirements. If the defined exchanges meet the DOI require- | ||||
| ments, then they can be used as outlined. If the defined exchanges do | ||||
| not meet the security requirements defined by the DOI, then the DOI MUST | ||||
| specify new exchange type(s) and the valid sequences of payloads that make | ||||
| up a successful exchange, and how to build and interpret those payloads. | ||||
| All ISAKMP implementations MUST implement the Informational Exchange and | ||||
| SHOULD implement the other four exchanges. However, this is dependent on | ||||
| the definition of the DOI and associated key exchange protocols. | ||||
| As discussed above, these exchange types can be used in either phase of | ||||
| negotiation. However, they may provide different security properties | ||||
| in each of the phases. With each of these exchanges, the combination of | ||||
| cookies and SPI fields identifies whether this exchange is being used in | ||||
| the first or second phase of a negotiation. | ||||
| 4.3.1 Notation | ||||
| The following notation is used to describe the ISAKMP exchange types, | ||||
| shown in the next section, with the message formats and associated pay- | ||||
| loads: | ||||
| HDR is an ISAKMP header whose exchange type defines the payload orderings | ||||
| SA is an SA negotiation payload with one or more Proposal and | ||||
| Transform payloads. An initiator MAY provide multiple proposals | ||||
| for negotiation; a responder MUST reply with only one. | ||||
| KE is the key exchange payload. | ||||
| IDx is the identity payload for "x". x can be: "ii" or "ir" | ||||
| for the ISAKMP initiator and responder, respectively, or x can | ||||
| be: "ui", "ur" (when the ISAKMP daemon is a proxy negotiator), | ||||
| for the user initiator and responder, respectively. | ||||
| HASH is the hash payload. | ||||
| SIG is the signature payload. The data to sign is exchange-specific. | ||||
| AUTH is a generic authentication mechanism, such as HASH or SIG. | ||||
| NONCE is the nonce payload. | ||||
| '*' signifies payload encryption after the ISAKMP header. This | ||||
| encryption MUST begin immediately after the ISAKMP header and | ||||
| all payloads following the ISAKMP header MUST be encrypted. | ||||
| => signifies "initiator to responder" communication | ||||
| <= signifies "responder to initiator" communication | ||||
| 4.4 Base Exchange | 4.4 Base Exchange | |||
| The Base Exchange is designed to allow the Key Exchange and Authentica- | The Base Exchange is designed to allow the Key Exchange and Authentica- | |||
| tion related information to be transmitted together. Combining the Key | tion related information to be transmitted together. Combining the Key | |||
| Exchange and Authentication-related information into one message reduces | Exchange and Authentication-related information into one message reduces | |||
| the number of round-trips at the expense of not providing identity pro- | the number of round-trips at the expense of not providing identity pro- | |||
| tection. Identity protection is not provided because identities are ex- | tection. Identity protection is not provided because identities are ex- | |||
| changed before a common shared secret has been established and, therefore, | changed before a common shared secret has been established and, therefore, | |||
| encryption of the identities is not possible. The following diagram shows | encryption of the identities is not possible. The following diagram shows | |||
| skipping to change at page 49, line 43 ¶ | skipping to change at page 51, line 29 ¶ | |||
| an example of the Base Exchange. | an example of the Base Exchange. | |||
| BASE EXCHANGE | BASE EXCHANGE | |||
| _#______Initiator____Direction_____Responder______________________NOTE____________________ | _#______Initiator____Direction_____Responder______________________NOTE____________________ | |||
| (1) HDR; SA; NONCE => Begin ISAKMP-SA or Proxy negotiation | (1) HDR; SA; NONCE => Begin ISAKMP-SA or Proxy negotiation | |||
| (2) <= HDR; SA; NONCE | (2) <= HDR; SA; NONCE | |||
| Basic SA agreed upon | Basic SA agreed upon | |||
| (3) HDR; KE; => | (3) HDR; KE; => | |||
| IDii; AUTH Key Generated | IDii; AUTH Key Generated (by responder) | |||
| Initiator Identity Verified by Responder | Initiator Identity Verified by Responder | |||
| (4) <= HDR; KE; | (4) <= HDR; KE; | |||
| IDir; AUTH | IDir; AUTH | |||
| Responder Identity Verified by Initiator | Responder Identity Verified by Initiator | |||
| Key Generated | Key Generated (by initiator) | |||
| SA established | SA established | |||
| In the first message (1), the initiator generates a proposal it considers | In the first message (1), the initiator generates a proposal it considers | |||
| adequate to protect traffic for the given situation. The Security Associ- | adequate to protect traffic for the given situation. The Security Associ- | |||
| ation, Proposal, and Transform payloads are included in the Security Asso- | ation, Proposal, and Transform payloads are included in the Security Asso- | |||
| ciation payload (for notation purposes). Random information which is used | ciation payload (for notation purposes). Random information which is used | |||
| to guarantee liveness and protect against replay attacks is also trans- | to guarantee liveness and protect against replay attacks is also trans- | |||
| mitted. Random information provided by both parties SHOULD be used by the | mitted. Random information provided by both parties SHOULD be used by the | |||
| authentication mechanism to provide shared proof of participation in the | authentication mechanism to provide shared proof of participation in the | |||
| exchange. | exchange. | |||
| In the second message (2), the responder indicates the protection suite it | In the second message (2), the responder indicates the protection suite it | |||
| has accepted with the Security Association, Proposal, and Transform pay- | has accepted with the Security Association, Proposal, and Transform pay- | |||
| loads. Again, random information which is used to guarantee liveness and | loads. Again, random information which is used to guarantee liveness and | |||
| protect against replay attacks is also transmitted. Random information | protect against replay attacks is also transmitted. Random information | |||
| provide by both parties SHOULD be used by the authentication mechanism | provided by both parties SHOULD be used by the authentication mechanism | |||
| to provide shared proof of participation in the exchange. Local secu- | to provide shared proof of participation in the exchange. Local secu- | |||
| rity policy dictates the action of the responder if no proposed protection | rity policy dictates the action of the responder if no proposed protection | |||
| suite is accepted. One possible action is the transmission of a Notify | suite is accepted. One possible action is the transmission of a Notify | |||
| payload as part of an Informational Exchange. | payload as part of an Informational Exchange. | |||
| In the third (3) and fourth (4) messages, the initiator and responder, re- | In the third (3) and fourth (4) messages, the initiator and responder, re- | |||
| spectively, exchange keying material used to arrive at a common shared | spectively, exchange keying material used to arrive at a common shared | |||
| secret and identification information. This information is transmitted | secret and identification information. This information is transmitted | |||
| under the protection of the agreed upon authentication function. Local | under the protection of the agreed upon authentication function. Local | |||
| security policy dictates the action if an error occurs during these mes- | security policy dictates the action if an error occurs during these mes- | |||
| sages. One possible action is the transmission of a Notify payload as | sages. One possible action is the transmission of a Notify payload as | |||
| part of an Informational Exchange. | part of an Informational Exchange. | |||
| 4.5 Identity Protection Exchange | 4.5 Identity Protection Exchange | |||
| The Identity Protection Exchange is designed to separate the Key Exchange | The Identity Protection Exchange is designed to separate the Key Exchange | |||
| information from the Identity and Authentication related information. | information from the Identity and Authentication related information. | |||
| Separating the Key Exchange from the Identity and Authentication related | Separating the Key Exchange from the Identity and Authentication related | |||
| information provides protection of the communicating identities at the ex- | information provides protection of the communicating identities at the ex- | |||
| pense of an additional message. Identities are exchanged under the pro- | pense of two additional messages. Identities are exchanged under the pro- | |||
| tection of a previously established common shared secret. The following | tection of a previously established common shared secret. The following | |||
| diagram shows the messages with the possible payloads sent in each message | diagram shows the messages with the possible payloads sent in each message | |||
| and notes for an example of the Identity Protection Exchange. | and notes for an example of the Identity Protection Exchange. | |||
| IDENTITY PROTECTION EXCHANGE | IDENTITY PROTECTION EXCHANGE | |||
| _#_______Initiator_____Direction______Responder_____NOTE______________________________________ | _#_______Initiator_____Direction______Responder_____NOTE________________________________________ | |||
| (1) HDR; SA => Begin ISAKMP-SA or Proxy negotiation | (1) HDR; SA => Begin ISAKMP-SA or Proxy negotiation | |||
| (2) <= HDR; SA | (2) <= HDR; SA | |||
| Basic SA agreed upon | Basic SA agreed upon | |||
| (3) HDR; KE; NONCE => | (3) HDR; KE; NONCE => | |||
| (4) <= HDR; KE; NONCE | (4) <= HDR; KE; NONCE | |||
| Key Generated | Key Generated (by Initiator and Responder) | |||
| (5) HDR*; IDii; AUTH => | (5) HDR*; IDii; AUTH => | |||
| Initiator Identity Verified by Responder | Initiator Identity Verified by Responder | |||
| (6) <= HDR*; IDir; AUTH | (6) <= HDR*; IDir; AUTH | |||
| Responder Identity Verified by Initiator | Responder Identity Verified by Initiator | |||
| SA established | SA established | |||
| In the first message (1), the initiator generates a proposal it consid- | In the first message (1), the initiator generates a proposal it consid- | |||
| ers adequate to protect traffic for the given situation. The Security As- | ers adequate to protect traffic for the given situation. The Security As- | |||
| sociation, Proposal, and Transform payloads are included in the Security | sociation, Proposal, and Transform payloads are included in the Security | |||
| Association payload (for notation purposes). | Association payload (for notation purposes). | |||
| skipping to change at page 53, line 36 ¶ | skipping to change at page 55, line 26 ¶ | |||
| (2) <= HDR; SA; KE; | (2) <= HDR; SA; KE; | |||
| NONCE; IDir; AUTH | NONCE; IDir; AUTH | |||
| Initiator Identity Verified by Responder | Initiator Identity Verified by Responder | |||
| Key Generated | Key Generated | |||
| Basic SA agreed upon | Basic SA agreed upon | |||
| (3) HDR*; AUTH => | (3) HDR*; AUTH => | |||
| Responder Identity Verified by Initiator | Responder Identity Verified by Initiator | |||
| SA established | SA established | |||
| In the first message (1), the initiator generates a proposal it consid- | In the first message (1), the initiator generates a proposal it considers | |||
| ers adequate to protect traffic for the given situation. The Security | adequate to protect traffic for the given situation. The Security Associ- | |||
| Association, Proposal, and Transform payloads are included in the Secu- | ation, Proposal, and Transform payloads are included in the Security Asso- | |||
| rity Association payload (for notation purposes). Keying material used | ciation payload (for notation purposes). There can be only one Proposal | |||
| to arrive at a common shared secret and random information which is used | and one Transform offered (i.e. no choices) in order for the aggressive | |||
| to guarantee liveness and protect against replay attacks are also trans- | exchange to work. Keying material used to arrive at a common shared se- | |||
| mitted. Random information provided by both parties SHOULD be used by the | cret and random information which is used to guarantee liveness and pro- | |||
| authentication mechanism to provide shared proof of participation in the | tect against replay attacks are also transmitted. Random information pro- | |||
| exchange. Additionally, the initiator transmits identification informa- | vided by both parties SHOULD be used by the authentication mechanism to | |||
| tion. | provide shared proof of participation in the exchange. Additionally, the | |||
| initiator transmits identification information. | ||||
| In the second message (2), the responder indicates the protection suite | In the second message (2), the responder indicates the protection suite | |||
| it has accepted with the Security Association, Proposal, and Transform | it has accepted with the Security Association, Proposal, and Transform | |||
| payloads. Keying material used to arrive at a common shared secret and | payloads. Keying material used to arrive at a common shared secret and | |||
| random information which is used to guarantee liveness and protect against | random information which is used to guarantee liveness and protect against | |||
| replay attacks is also transmitted. Random information provided by both | replay attacks is also transmitted. Random information provided by both | |||
| parties SHOULD be used by the authentication mechanism to provide shared | parties SHOULD be used by the authentication mechanism to provide shared | |||
| proof of participation in the exchange. Additionally, the responder | proof of participation in the exchange. Additionally, the responder | |||
| transmits identification information. All of this information is trans- | transmits identification information. All of this information is trans- | |||
| mitted under the protection of the agreed upon authentication function. | mitted under the protection of the agreed upon authentication function. | |||
| skipping to change at page 54, line 36 ¶ | skipping to change at page 56, line 27 ¶ | |||
| and notes for an example of the Informational Exchange. | and notes for an example of the Informational Exchange. | |||
| INFORMATIONAL EXCHANGE | INFORMATIONAL EXCHANGE | |||
| __#___Initiator__Direction_Responder_______________NOTE_______________ | __#___Initiator__Direction_Responder_______________NOTE_______________ | |||
| (1) HDR*; N/D => Error Notification or Deletion | (1) HDR*; N/D => Error Notification or Deletion | |||
| In the first message (1), the initiator or responder transmits an ISAKMP | In the first message (1), the initiator or responder transmits an ISAKMP | |||
| Notify or Delete payload. | Notify or Delete payload. | |||
| If the Informational Exchange occurs during an ISAKMP Phase 1 negotiation | If the Informational Exchange occurs prior to the exchange of keying me- | |||
| there will be no protection provided for the Informational Exchange. Once | terial during an ISAKMP Phase 1 negotiation, there will be no protection | |||
| keying material has been exchanged or an ISAKMP SA has been established, | provided for the Informational Exchange. Once keying material has been | |||
| the Informational Exchange MUST be transmitted under the protection pro- | exchanged or an ISAKMP SA has been established, the Informational Exchange | |||
| vided by the keying material or the ISAKMP SA. | MUST be transmitted under the protection provided by the keying material | |||
| or the ISAKMP SA. | ||||
| All exchanges are similar in that with the beginning of any exchange cryp- | ||||
| tographic synchronization MUST occur. The Informational Exchange is an | ||||
| exchange and not an ISAKMP message. Thus, the generation of an Initial- | ||||
| ization Vector (IV) for an Informational Exchange SHOULD be independent | ||||
| of IVs of other on-going communication. This will ensure cryptographic | ||||
| synchronization is maintained for existing communications and the Informa- | ||||
| tional Exchange will be processed correctly. | ||||
| 5 ISAKMP Payload Processing | 5 ISAKMP Payload Processing | |||
| Section 3 describes the ISAKMP payloads. These payloads are used in the | Section 3 describes the ISAKMP payloads. These payloads are used in the | |||
| exchanges described in section 4 and can be used in exchanges defined for | exchanges described in section 4 and can be used in exchanges defined for | |||
| a specific DOI. This section describes the processing for each of the | a specific DOI. This section describes the processing for each of the | |||
| payloads. This section suggests the logging of events to a system au- | payloads. This section suggests the logging of events to a system au- | |||
| dit file. This action is controlled by a system security policy and is, | dit file. This action is controlled by a system security policy and is, | |||
| therefore, only a suggested action. | therefore, only a suggested action. | |||
| 5.1 General Message Processing | 5.1 General Message Processing | |||
| Every ISAKMP message has basic processing applied to insure protocol re- | Every ISAKMP message has basic processing applied to insure protocol re- | |||
| liability, and to minimize threats, such as denial of service and replay | liability, and to minimize threats, such as denial of service and replay | |||
| attacks. | attacks. All processing SHOULD include packet length checks to insure | |||
| the packet received is at least as long as the length given in the ISAKMP | ||||
| Header. | ||||
| When transmitting an ISAKMP message, the transmitting entity (initiator or | When transmitting an ISAKMP message, the transmitting entity (initiator or | |||
| responder) MUST do the following: | responder) MUST do the following: | |||
| 1. Set a timer and initialize a retry counter. | 1. Set a timer and initialize a retry counter. | |||
| 2. If the timer expires, the ISAKMP message is resent and the retry | 2. If the timer expires, the ISAKMP message is resent and the retry | |||
| counter is decremented. | counter is decremented. | |||
| 3. If the retry counter reaches zero (0), the event, RETRY LIMIT | 3. If the retry counter reaches zero (0), the event, RETRY LIMIT | |||
| REACHED, is logged in the appropriate system audit file. | REACHED, MAY be logged in the appropriate system audit file. | |||
| 4. The ISAKMP protocol machine clears all states and returns to IDLE. | 4. The ISAKMP protocol machine clears all states and returns to IDLE. | |||
| 5.2 ISAKMP Header Processing | 5.2 ISAKMP Header Processing | |||
| When creating an ISAKMP message, the transmitting entity MUST do the fol- | When creating an ISAKMP message, the transmitting entity (initiator or | |||
| lowing: | responder) MUST do the following: | |||
| 1. Create the respective cookie. See section 2.5.3 for details. | 1. Create the respective cookie. See section 2.5.3 for details. | |||
| 2. Determine the relevant security characteristics of the session (i.e. | 2. Determine the relevant security characteristics of the session (i.e. | |||
| DOI and situation). | DOI and situation). | |||
| 3. Construct an ISAKMP Header with fields as described in section 3.1. | 3. Construct an ISAKMP Header with fields as described in section 3.1. | |||
| 4. Construct other ISAKMP payloads, depending on the exchange type. | 4. Construct other ISAKMP payloads, depending on the exchange type. | |||
| 5. Transmit the message to the destination host as described in section | 5. Transmit the message to the destination host as described in section | |||
| 5.1. | 5.1. | |||
| When an ISAKMP message is received, the receiving entity (initiator or | When an ISAKMP message is received, the receiving entity (initiator or | |||
| responder) MUST do the following: | responder) MUST do the following: | |||
| 1. Verify the Initiator and Responder ``cookies''. If the cookie | 1. Verify the Initiator and Responder ``cookies''. If the cookie | |||
| validation fails, the message is discarded and the following actions | validation fails, the message is discarded and the following actions | |||
| are taken: | are taken: | |||
| (a) The event, INVALID COOKIE, is logged in the appropriate system | (a) The event, INVALID COOKIE, MAY be logged in the appropriate | |||
| audit file. | system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-COOKIE message type MAY be sent to the initiating | the INVALID-COOKIE message type MAY be sent to the transmitting | |||
| entity. This action is dictated by a system security policy. | entity. This action is dictated by a system security policy. | |||
| 2. Check the Next Payload field to confirm it is valid. If the Next | 2. Check the Next Payload field to confirm it is valid. If the Next | |||
| Payload field validation fails, the message is discarded and the | Payload field validation fails, the message is discarded and the | |||
| following actions are taken: | following actions are taken: | |||
| (a) The event, INVALID NEXT PAYLOAD, is logged in the appropriate | (a) The event, INVALID NEXT PAYLOAD, MAY be logged in the appropriate | |||
| system audit file. | system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-PAYLOAD-TYPE message type MAY be sent to the initiat- | the INVALID-PAYLOAD-TYPE message type MAY be sent to the | |||
| ing entity. This action is dictated by a system security policy. | transmitting entity. This action is dictated by a system | |||
| security policy. | ||||
| 3. Check the Major and Minor Version fields to confirm they are correct. | 3. Check the Major and Minor Version fields to confirm they are correct. | |||
| If the Version field validation fails, the message is discarded and | If the Version field validation fails, the message is discarded and | |||
| the following actions are taken: | the following actions are taken: | |||
| (a) The event, INVALID ISAKMP VERSION, is logged in the appropriate | (a) The event, INVALID ISAKMP VERSION, MAY be logged in the | |||
| system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-MAJOR-VERSION or INVALID-MINOR-VERSION message type | the INVALID-MAJOR-VERSION or INVALID-MINOR-VERSION message type | |||
| MAY be sent to the initiating entity. This action is dictated by | MAY be sent to the transmitting entity. This action is dictated | |||
| a system security policy. | by a system security policy. | |||
| 4. Check the Exchange Type field to confirm it is valid. If the | 4. Check the Exchange Type field to confirm it is valid. If the | |||
| Exchange Type field validation fails, the message is discarded and | Exchange Type field validation fails, the message is discarded and | |||
| the following actions are taken: | the following actions are taken: | |||
| (a) The event, INVALID EXCHANGE TYPE, is logged in the appropriate | (a) The event, INVALID EXCHANGE TYPE, MAY be logged in the | |||
| system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-EXCHANGE-TYPE message type MAY be sent to the | the INVALID-EXCHANGE-TYPE message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 5. Check the Flags field to ensure it contains correct values. If the | 5. Check the Flags field to ensure it contains correct values. If the | |||
| Flags field validation fails, the message is discarded and the | Flags field validation fails, the message is discarded and the | |||
| following actions are taken: | following actions are taken: | |||
| (a) The event, INVALID FLAGS, is logged in the appropriate system | (a) The event, INVALID FLAGS, MAY be logged in the appropriate system | |||
| audit file. | audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-FLAGS message type MAY be sent to the initiating | the INVALID-FLAGS message type MAY be sent to the transmitting | |||
| entity. This action is dictated by a system security policy. | entity. This action is dictated by a system security policy. | |||
| 6. Check the Message ID field to ensure it contains correct values. If | 6. Check the Message ID field to ensure it contains correct values. If | |||
| the Message ID validation fails, the message is discarded and the | the Message ID validation fails, the message is discarded and the | |||
| following actions are taken: | following actions are taken: | |||
| (a) The event, INVALID MESSAGE ID, is logged in the appropriate | (a) The event, INVALID MESSAGE ID, MAY be logged in the appropriate | |||
| system audit file. | system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-MESSAGE-ID message type MAY be sent to the initiating | the INVALID-MESSAGE-ID message type MAY be sent to the | |||
| entity. This action is dictated by a system security policy. | transmitting entity. This action is dictated by a system | |||
| security policy. | ||||
| 7. Processing of the ISAKMP message continues using the value in the | 7. Processing of the ISAKMP message continues using the value in the | |||
| Next Payload field. | Next Payload field. | |||
| 5.3 Generic Payload Header Processing | 5.3 Generic Payload Header Processing | |||
| When creating any of the ISAKMP Payloads described in sections 5.4 through | When creating any of the ISAKMP Payloads described in sections 3.4 through | |||
| 5.13 a Generic Payload Header is placed at the beginning of these pay- | 3.15 a Generic Payload Header is placed at the beginning of these pay- | |||
| loads. When creating the Generic Payload Header, the transmitting entity | loads. When creating the Generic Payload Header, the transmitting entity | |||
| MUST do the following: | (initiator or responder) MUST do the following: | |||
| 1. Place the value of the Next Payload in the Next Payload field. These | 1. Place the value of the Next Payload in the Next Payload field. These | |||
| values are described in section 3.1. | values are described in section 3.1. | |||
| 2. Place the value zero (0) in the RESERVED field. | 2. Place the value zero (0) in the RESERVED field. | |||
| 3. Place the length (in octets) of the payload in the Payload Length | 3. Place the length (in octets) of the payload in the Payload Length | |||
| field. | field. | |||
| 4. Construct the payloads as defined in the remainder of this section. | 4. Construct the payloads as defined in the remainder of this section. | |||
| When any of the ISAKMP Payloads are received, the receiving entity (ini- | When any of the ISAKMP Payloads are received, the receiving entity (ini- | |||
| tiator or responder) MUST do the following: | tiator or responder) MUST do the following: | |||
| 1. Check the Next Payload field to confirm it is valid. If the Next | 1. Check the Next Payload field to confirm it is valid. If the Next | |||
| Payload field validation fails, the message is discarded and the | Payload field validation fails, the message is discarded and the | |||
| following actions are taken: | following actions are taken: | |||
| (a) The event, INVALID NEXT PAYLOAD, is logged in the appropriate | (a) The event, INVALID NEXT PAYLOAD, MAY be logged in the appropriate | |||
| system audit file. | system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-PAYLOAD-TYPE message type MAY be sent to the initiat- | the INVALID-PAYLOAD-TYPE message type MAY be sent to the | |||
| ing entity. This action is dictated by a system security policy. | transmitting entity. This action is dictated by a system | |||
| security policy. | ||||
| 2. Verify the RESERVED field contains the value zero. If the value in | 2. Verify the RESERVED field contains the value zero. If the value in | |||
| the RESERVED field is not zero, the message is discarded and the | the RESERVED field is not zero, the message is discarded and the | |||
| following actions are taken: | following actions are taken: | |||
| (a) The event, INVALID RESERVED FIELD, is logged in the appropriate | (a) The event, INVALID RESERVED FIELD, MAY be logged in the | |||
| system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the BAD-PROPOSAL-SYNTAX or PAYLOAD-MALFORMED message type MAY be | the BAD-PROPOSAL-SYNTAX or PAYLOAD-MALFORMED message type MAY be | |||
| sent to the initiating entity. This action is dictated by a | sent to the transmitting entity. This action is dictated by a | |||
| system security policy. | system security policy. | |||
| 3. Process the remaining payloads as defined by the Next Payload field. | 3. Process the remaining payloads as defined by the Next Payload field. | |||
| 5.4 Security Association Payload Processing | 5.4 Security Association Payload Processing | |||
| When creating a Security Association Payload, the transmitting entity MUST | When creating a Security Association Payload, the transmitting entity | |||
| do the following: | (initiator or responder) MUST do the following: | |||
| 1. Determine the Domain of Interpretation for which this negotiation is | 1. Determine the Domain of Interpretation for which this negotiation is | |||
| being performed. | being performed. | |||
| 2. Determine the situation within the determined DOI for which this | 2. Determine the situation within the determined DOI for which this | |||
| negotiation is being performed. | negotiation is being performed. | |||
| 3. Determine the proposal(s) and transform(s) within the situation. | 3. Determine the proposal(s) and transform(s) within the situation. | |||
| These are described, respectively, in sections 3.5, 5.4.1, 3.6, and | These are described, respectively, in sections 3.5 and 3.6. | |||
| 5.4.2. | ||||
| 4. Construct a Security Association payload. | 4. Construct a Security Association payload. | |||
| 5. Transmit the message to the receiving entity as described in section | 5. Transmit the message to the receiving entity as described in section | |||
| 5.1. | 5.1. | |||
| When a Security Association payload is received, the receiving entity | When a Security Association payload is received, the receiving entity | |||
| (initiator or responder) MUST do the following: | (initiator or responder) MUST do the following: | |||
| 1. Determine if the Domain of Interpretation (DOI) is supported. If the | 1. Determine if the Domain of Interpretation (DOI) is supported. If the | |||
| DOI determination fails, the message is discarded and the following | DOI determination fails, the message is discarded and the following | |||
| actions are taken: | actions are taken: | |||
| (a) The event, INVALID DOI, is logged in the appropriate system audit | (a) The event, INVALID DOI, MAY be logged in the appropriate system | |||
| file. | audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the DOI-NOT-SUPPORTED message type MAY be sent to the initiating | the DOI-NOT-SUPPORTED message type MAY be sent to the | |||
| entity. This action is dictated by a system security policy. | transmitting entity. This action is dictated by a system | |||
| security policy. | ||||
| 2. Determine if the given situation can be protected. If the Situation | 2. Determine if the given situation can be protected. If the Situation | |||
| determination fails, the message is discarded and the following | determination fails, the message is discarded and the following | |||
| actions are taken: | actions are taken: | |||
| (a) The event, INVALID SITUATION, is logged in the appropriate system | (a) The event, INVALID SITUATION, MAY be logged in the appropriate | |||
| audit file. | system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the SITUATION-NOT-SUPPORTED message type MAY be sent to the | the SITUATION-NOT-SUPPORTED message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 3. Process the remaining payloads (i.e. Proposal, Transform) of the | 3. Process the remaining payloads (i.e. Proposal, Transform) of the | |||
| Security Association Payload. If the Security Association Proposal | Security Association Payload. If the Security Association Proposal | |||
| (as described in sections 5.4.1 and 5.4.2) is not accepted, then the | (as described in sections 5.5 and 5.6) is not accepted, then the | |||
| following actions are taken: | following actions are taken: | |||
| (a) The event, INVALID PROPOSAL, is logged in the appropriate system | (a) The event, INVALID PROPOSAL, MAY be logged in the appropriate | |||
| audit file. | system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the NO-PROPOSAL-CHOSEN message type MAY be sent to the initiating | the NO-PROPOSAL-CHOSEN message type MAY be sent to the | |||
| entity. This action is dictated by a system security policy. | transmitting entity. This action is dictated by a system | |||
| security policy. | ||||
| 5.4.1 Proposal Payload Processing | 5.5 Proposal Payload Processing | |||
| When creating a Proposal Payload, the transmitting entity MUST do the fol- | When creating a Proposal Payload, the transmitting entity (initiator or | |||
| lowing: | responder) MUST do the following: | |||
| 1. Determine the Protocol for this proposal. | 1. Determine the Protocol for this proposal. | |||
| 2. Determine the number of proposals to be offered for this protocol and | 2. Determine the number of proposals to be offered for this protocol and | |||
| the number of transforms for each proposal. Transforms are described | the number of transforms for each proposal. Transforms are described | |||
| in sections 3.6 and 5.4.2. | in section 3.6. | |||
| 3. Generate a unique pseudo-random SPI. | 3. Generate a unique pseudo-random SPI. | |||
| 4. Construct a Proposal payload. | 4. Construct a Proposal payload. | |||
| When a Proposal payload is received, the receiving entity (initiator or | When a Proposal payload is received, the receiving entity (initiator or | |||
| responder) MUST do the following: | responder) MUST do the following: | |||
| 1. Determine if the Protocol is supported. If the Protocol-ID field is | 1. Determine if the Protocol is supported. If the Protocol-ID field is | |||
| invalid, the message is discarded and the following actions are | invalid, the payload is discarded and the following actions are | |||
| taken: | taken: | |||
| (a) The event, INVALID PROTOCOL, is logged in the appropriate system | (a) The event, INVALID PROTOCOL, MAY be logged in the appropriate | |||
| audit file. | system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-PROTOCOL-ID message type MAY be sent to the initiat- | the INVALID-PROTOCOL-ID message type MAY be sent to the | |||
| ing entity. This action is dictated by a system security policy. | transmitting entity. This action is dictated by a system | |||
| security policy. | ||||
| 2. Determine if the SPI is valid. If the SPI is invalid, the message is | 2. Determine if the SPI is valid. If the SPI is invalid, the payload is | |||
| discarded and the following actions are taken: | discarded and the following actions are taken: | |||
| (a) The event, INVALID SPI, is logged in the appropriate system audit | (a) The event, INVALID SPI, MAY be logged in the appropriate system | |||
| file. | audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-SPI message type MAY be sent to the initiating | the INVALID-SPI message type MAY be sent to the transmitting | |||
| entity. This action is dictated by a system security policy. | entity. This action is dictated by a system security policy. | |||
| 3. Ensure the Proposals are presented according to the details given in | 3. Ensure the Proposals are presented according to the details given in | |||
| section 3.5 and 4.1. If the proposals are not formed correctly, the | section 3.5 and 4.2. If the proposals are not formed correctly, the | |||
| following actions are taken: | following actions are taken: | |||
| (a) Possible events, BAD PROPOSAL SYNTAX, INVALID PROPOSAL, are | (a) Possible events, BAD PROPOSAL SYNTAX, INVALID PROPOSAL, are | |||
| logged in the appropriate system audit file. | logged in the appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the BAD-PROPOSAL-SYNTAX or PAYLOAD-MALFORMED message type MAY be | the BAD-PROPOSAL-SYNTAX or PAYLOAD-MALFORMED message type MAY be | |||
| sent to the initiating entity. This action is dictated by a | sent to the transmitting entity. This action is dictated by a | |||
| system security policy. | system security policy. | |||
| 4. Process the Proposal and Transform payloads as defined by the Next | 4. Process the Proposal and Transform payloads as defined by the Next | |||
| Payload field. Examples of processing these payloads is given in | Payload field. Examples of processing these payloads are given in | |||
| section 4.1.1. | section 4.2.1. | |||
| 5.4.2 Transform Payload Processing | 5.6 Transform Payload Processing | |||
| When creating a Transform Payload, the transmitting entity MUST do the | When creating a Transform Payload, the transmitting entity (initiator or | |||
| following: | responder) MUST do the following: | |||
| 1. Determine the Transform # for this transform. | 1. Determine the Transform # for this transform. | |||
| 2. Determine the number of transforms to be offered for this proposal. | 2. Determine the number of transforms to be offered for this proposal. | |||
| Transforms are described in sections 3.6. | Transforms are described in sections 3.6. | |||
| 3. Construct a Transform payload. | 3. Construct a Transform payload. | |||
| When a Transform payload is received, the receiving entity (initiator or | When a Transform payload is received, the receiving entity (initiator or | |||
| responder) MUST do the following: | responder) MUST do the following: | |||
| 1. Determine if the Transform is supported. If the Transform-ID field | 1. Determine if the Transform is supported. If the Transform-ID field | |||
| is invalid, the message is discarded and the following actions are | contains an unknown or unsupported value, then that Transform payload | |||
| taken: | MUST be ignored and MUST NOT cause the generation of an INVALID | |||
| TRANSFORM event. If the Transform-ID field is invalid, the payload | ||||
| is discarded and the following actions are taken: | ||||
| (a) The event, INVALID TRANSFORM, is logged in the appropriate system | (a) The event, INVALID TRANSFORM, MAY be logged in the appropriate | |||
| audit file. | system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-TRANSFORM-ID message type MAY be sent to the initiat- | the INVALID-TRANSFORM-ID message type MAY be sent to the | |||
| ing entity. This action is dictated by a system security policy. | transmitting entity. This action is dictated by a system | |||
| security policy. | ||||
| 2. Ensure the Transforms are presented according to the details given in | 2. Ensure the Transforms are presented according to the details given in | |||
| section 3.6 and 4.1. If the transforms are not formed correctly, the | section 3.6 and 4.2. If the transforms are not formed correctly, the | |||
| following actions are taken: | following actions are taken: | |||
| (a) Possible events, BAD PROPOSAL SYNTAX, INVALID TRANSFORM, INVALID | (a) Possible events, BAD PROPOSAL SYNTAX, INVALID TRANSFORM, INVALID | |||
| ATTRIBUTES, are logged in the appropriate system audit file. | ATTRIBUTES, are logged in the appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the BAD-PROPOSAL-SYNTAX, PAYLOAD-MALFORMED or ATTRIBUTES-NOT- | the BAD-PROPOSAL-SYNTAX, PAYLOAD-MALFORMED or ATTRIBUTES-NOT- | |||
| SUPPORTED message type MAY be sent to the initiating entity. | SUPPORTED message type MAY be sent to the transmitting entity. | |||
| This action is dictated by a system security policy. | This action is dictated by a system security policy. | |||
| 3. Process the subsequent Transform and Proposal payloads as defined by | 3. Process the subsequent Transform and Proposal payloads as defined by | |||
| the Next Payload field. Examples of processing these payloads is | the Next Payload field. Examples of processing these payloads are | |||
| given in section 4.1.1. | given in section 4.2.1. | |||
| 5.5 Key Exchange Payload Processing | 5.7 Key Exchange Payload Processing | |||
| When creating a Key Exchange Payload, the transmitting entity MUST do the | When creating a Key Exchange Payload, the transmitting entity (initiator | |||
| following: | or responder) MUST do the following: | |||
| 1. Determine the Key Exchange to be used as defined by the DOI. | 1. Determine the Key Exchange to be used as defined by the DOI. | |||
| 2. Determine the usage of the Key Exchange Data field as defined by the | 2. Determine the usage of the Key Exchange Data field as defined by the | |||
| DOI. | DOI. | |||
| 3. Construct a Key Exchange payload. | 3. Construct a Key Exchange payload. | |||
| 4. Transmit the message to the receiving entity as described in section | 4. Transmit the message to the receiving entity as described in section | |||
| 5.1. | 5.1. | |||
| When a Key Exchange payload is received, the receiving entity (initiator | When a Key Exchange payload is received, the receiving entity (initiator | |||
| or responder) MUST do the following: | or responder) MUST do the following: | |||
| 1. Determine if the Key Exchange is supported. If the Key Exchange | 1. Determine if the Key Exchange is supported. If the Key Exchange | |||
| determination fails, the message is discarded and the following | determination fails, the message is discarded and the following | |||
| actions are taken: | actions are taken: | |||
| (a) The event, INVALID KEY INFORMATION, is logged in the appropriate | (a) The event, INVALID KEY INFORMATION, MAY be logged in the | |||
| system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-KEY-INFORMATION message type MAY be sent to the | the INVALID-KEY-INFORMATION message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 5.6 Identification Payload Processing | 5.8 Identification Payload Processing | |||
| When creating an Identification Payload, the transmitting entity MUST do | When creating an Identification Payload, the transmitting entity (initia- | |||
| the following: | tor or responder) MUST do the following: | |||
| 1. Determine the Identification information to be used as defined by the | 1. Determine the Identification information to be used as defined by the | |||
| DOI (and possibly the situation). | DOI (and possibly the situation). | |||
| 2. Determine the usage of the Identification Data field as defined by | 2. Determine the usage of the Identification Data field as defined by | |||
| the DOI. | the DOI. | |||
| 3. Construct an Identification payload. | 3. Construct an Identification payload. | |||
| 4. Transmit the message to the receiving entity as described in section | 4. Transmit the message to the receiving entity as described in section | |||
| 5.1. | 5.1. | |||
| When an Identification payload is received, the receiving entity (initia- | When an Identification payload is received, the receiving entity (initia- | |||
| tor or responder) MUST do the following: | tor or responder) MUST do the following: | |||
| 1. Determine if the Identification Type is supported. This may be based | 1. Determine if the Identification Type is supported. This may be based | |||
| on the DOI and Situation. If the Identification determination fails, | on the DOI and Situation. If the Identification determination fails, | |||
| the message is discarded and the following actions are taken: | the message is discarded and the following actions are taken: | |||
| (a) The event, INVALID ID INFORMATION, is logged in the appropriate | (a) The event, INVALID ID INFORMATION, MAY be logged in the | |||
| system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-ID-INFORMATION message type MAY be sent to the | the INVALID-ID-INFORMATION message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 5.7 Certificate Payload Processing | 5.9 Certificate Payload Processing | |||
| When creating a Certificate Payload, the transmitting entity MUST do the | When creating a Certificate Payload, the transmitting entity (initiator or | |||
| following: | responder) MUST do the following: | |||
| 1. Determine the Certificate Encoding to be used. This may be specified | 1. Determine the Certificate Encoding to be used. This may be specified | |||
| by the DOI. | by the DOI. | |||
| 2. Ensure the existence of a certificate formatted as defined by the | 2. Ensure the existence of a certificate formatted as defined by the | |||
| Certificate Encoding. | Certificate Encoding. | |||
| 3. Construct a Certificate payload. | 3. Construct a Certificate payload. | |||
| 4. Transmit the message to the receiving entity as described in section | 4. Transmit the message to the receiving entity as described in section | |||
| 5.1. | 5.1. | |||
| When a Certificate payload is received, the receiving entity (initiator or | When a Certificate payload is received, the receiving entity (initiator or | |||
| responder) MUST do the following: | responder) MUST do the following: | |||
| 1. Determine if the Certificate Encoding is supported. If the | 1. Determine if the Certificate Encoding is supported. If the | |||
| Certificate Encoding is not supported, the message is discarded and | Certificate Encoding is not supported, the payload is discarded and | |||
| the following actions are taken: | the following actions are taken: | |||
| (a) The event, INVALID CERTIFICATE TYPE, is logged in the appropriate | (a) The event, INVALID CERTIFICATE TYPE, MAY be logged in the | |||
| system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-CERT-ENCODING message type MAY be sent to the | the INVALID-CERT-ENCODING message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 2. Process the Certificate Data field. If the Certificate Data is | 2. Process the Certificate Data field. If the Certificate Data is | |||
| invalid or improperly formatted, the message is discarded and the | invalid or improperly formatted, the payload is discarded and the | |||
| following actions are taken: | following actions are taken: | |||
| (a) The event, INVALID CERTIFICATE, is logged in the appropriate | (a) The event, INVALID CERTIFICATE, MAY be logged in the appropriate | |||
| system audit file. | system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-CERTIFICATE message type MAY be sent to the initiat- | the INVALID-CERTIFICATE message type MAY be sent to the | |||
| ing entity. This action is dictated by a system security policy. | transmitting entity. This action is dictated by a system | |||
| security policy. | ||||
| 5.8 Certificate Request Payload Processing | 5.10 Certificate Request Payload Processing | |||
| When creating a Certificate Request Payload, the transmitting entity MUST | When creating a Certificate Request Payload, the transmitting entity (ini- | |||
| do the following: | tiator or responder) MUST do the following: | |||
| 1. Determine the number and types of acceptable Certificate Encodings to | 1. Determine the type of Certificate Encoding to be requested. This may | |||
| be requested. This may be specified by the DOI. | be specified by the DOI. | |||
| 2. Determine the number and names of Certificate Authorities which are | 2. Determine the name of an acceptable Certificate Authority which is to | |||
| acceptable and are to be requested. | be requested (if applicable). | |||
| 3. Construct a Certificate Request payload. | 3. Construct a Certificate Request payload. | |||
| 4. Transmit the message to the receiving entity as described in section | 4. Transmit the message to the receiving entity as described in section | |||
| 5.1. | 5.1. | |||
| When a Certificate Request payload is received, the receiving entity (ini- | When a Certificate Request payload is received, the receiving entity (ini- | |||
| tiator or responder) MUST do the following: | tiator or responder) MUST do the following: | |||
| 1. Ensure that the # of Certificate Types and the actual values | 1. Determine if the Certificate Encoding is supported. If the | |||
| contained in the Certificate Types field are equivalent. If not, | Certificate Encoding is invalid, the payload is discarded and the | |||
| then the following actions are taken: | following actions are taken: | |||
| (a) The event, BAD CERTIFICATE REQUEST SYNTAX, is logged in the | (a) The event, INVALID CERTIFICATE TYPE, MAY be logged in the | |||
| appropriate system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the BAD-CERT-REQUEST-SYNTAX message type MAY be sent to the | the INVALID-CERT-ENCODING message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 2. Determine if the Certificate Types are supported. If any of the | If the Certificate Encoding is not supported, the payload is | |||
| Certificate Types are not supported, the message is discarded and the | discarded and the following actions are taken: | |||
| following actions are taken: | ||||
| (a) The event, INVALID CERTIFICATE TYPE, is logged in the appropriate | (a) The event, CERTIFICATE TYPE UNSUPPORTED, MAY be logged in the | |||
| system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-CERT-ENCODING message type MAY be sent to the | the CERT-TYPE-UNSUPPORTED message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 3. Ensure that the # of Certificate Authorities and the actual values | 2. Determine if the Certificate Authority is supported for the specified | |||
| contained in the Certificate Authorities field are equivalent. If | Certificate Encoding. If the Certificate Authority is invalid or | |||
| not, then the following actions are taken: | improperly formatted, the payload is discarded and the following | |||
| actions are taken: | ||||
| (a) The event, BAD CERTIFICATE REQUEST SYNTAX, is logged in the | (a) The event, INVALID CERTIFICATE AUTHORITY, MAY be logged in the | |||
| appropriate system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the BAD-CERT-REQUEST-SYNTAX message type MAY be sent to the | the INVALID-CERT-AUTHORITY message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 4. Process the Certificate Authorities field. If the Certificate | 3. Process the Certificate Request. If a requested Certificate Type | |||
| Authorities are invalid or improperly formatted, the message is | with the specified Certificate Authority is not available, then the | |||
| discarded and the following actions are taken: | payload is discarded and the following actions are taken: | |||
| (a) The event, INVALID CERTIFICATE AUTHORITIES, is logged in the | (a) The event, CERTIFICATE-UNAVAILABLE, MAY be logged in the | |||
| appropriate system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-CERT-AUTHORITY message type MAY be sent to the | the CERTIFICATE-UNAVAILABLE message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 5.9 Hash Payload Processing | 5.11 Hash Payload Processing | |||
| When creating a Hash Payload, the transmitting entity MUST do the follow- | When creating a Hash Payload, the transmitting entity (initiator or re- | |||
| ing: | sponder) MUST do the following: | |||
| 1. Determine the Hash function to be used as defined by the SA | 1. Determine the Hash function to be used as defined by the SA | |||
| negotiation. | negotiation. | |||
| 2. Determine the usage of the Hash Data field as defined by the DOI. | 2. Determine the usage of the Hash Data field as defined by the DOI. | |||
| 3. Construct a Hash payload. | 3. Construct a Hash payload. | |||
| 4. Transmit the message to the receiving entity as described in section | 4. Transmit the message to the receiving entity as described in section | |||
| 5.1. | 5.1. | |||
| When a Hash payload is received, the receiving entity (initiator or re- | When a Hash payload is received, the receiving entity (initiator or re- | |||
| sponder) MUST do the following: | sponder) MUST do the following: | |||
| 1. Determine if the Hash is supported. If the Hash determination fails, | 1. Determine if the Hash is supported. If the Hash determination fails, | |||
| the message is discarded and the following actions are taken: | the message is discarded and the following actions are taken: | |||
| (a) The event, INVALID HASH INFORMATION, is logged in the appropriate | (a) The event, INVALID HASH INFORMATION, MAY be logged in the | |||
| system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-HASH-INFORMATION message type MAY be sent to the | the INVALID-HASH-INFORMATION message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 2. Perform the Hash function as outlined in the DOI and/or Key Exchange | 2. Perform the Hash function as outlined in the DOI and/or Key Exchange | |||
| protocol documents. If the Hash function fails, the message is | protocol documents. If the Hash function fails, the message is | |||
| discarded and the following actions are taken: | discarded and the following actions are taken: | |||
| (a) The event, INVALID HASH VALUE, is logged in the appropriate | (a) The event, INVALID HASH VALUE, MAY be logged in the appropriate | |||
| system audit file. | system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the AUTHENTICATION-FAILED message type MAY be sent to the | the AUTHENTICATION-FAILED message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 5.10 Signature Payload Processing | 5.12 Signature Payload Processing | |||
| When creating a Signature Payload, the transmitting entity MUST do the | When creating a Signature Payload, the transmitting entity (initiator or | |||
| following: | responder) MUST do the following: | |||
| 1. Determine the Signature function to be used as defined by the SA | 1. Determine the Signature function to be used as defined by the SA | |||
| negotiation. | negotiation. | |||
| 2. Determine the usage of the Signature Data field as defined by the | 2. Determine the usage of the Signature Data field as defined by the | |||
| DOI. | DOI. | |||
| 3. Construct a Signature payload. | 3. Construct a Signature payload. | |||
| 4. Transmit the message to the receiving entity as described in section | 4. Transmit the message to the receiving entity as described in section | |||
| 5.1. | 5.1. | |||
| When a Signature payload is received, the receiving entity (initiator or | When a Signature payload is received, the receiving entity (initiator or | |||
| responder) MUST do the following: | responder) MUST do the following: | |||
| 1. Determine if the Signature is supported. If the Signature | 1. Determine if the Signature is supported. If the Signature | |||
| determination fails, the message is discarded and the following | determination fails, the message is discarded and the following | |||
| actions are taken: | actions are taken: | |||
| (a) The event, INVALID SIGNATURE INFORMATION, is logged in the | (a) The event, INVALID SIGNATURE INFORMATION, MAY be logged in the | |||
| appropriate system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the INVALID-SIGNATURE message type MAY be sent to the initiating | the INVALID-SIGNATURE message type MAY be sent to the | |||
| entity. This action is dictated by a system security policy. | transmitting entity. This action is dictated by a system | |||
| security policy. | ||||
| 2. Perform the Signature function as outlined in the DOI and/or Key | 2. Perform the Signature function as outlined in the DOI and/or Key | |||
| Exchange protocol documents. If the Signature function fails, the | Exchange protocol documents. If the Signature function fails, the | |||
| message is discarded and the following actions are taken: | message is discarded and the following actions are taken: | |||
| (a) The event, INVALID SIGNATURE VALUE, is logged in the appropriate | (a) The event, INVALID SIGNATURE VALUE, MAY be logged in the | |||
| system audit file. | appropriate system audit file. | |||
| (b) An Informational Exchange with a Notification payload containing | (b) An Informational Exchange with a Notification payload containing | |||
| the AUTHENTICATION-FAILED message type MAY be sent to the | the AUTHENTICATION-FAILED message type MAY be sent to the | |||
| initiating entity. This action is dictated by a system security | transmitting entity. This action is dictated by a system | |||
| policy. | security policy. | |||
| 5.11 Nonce Payload Processing | 5.13 Nonce Payload Processing | |||
| When creating a Nonce Payload, the transmitting entity MUST do the follow- | When creating a Nonce Payload, the transmitting entity (initiator or re- | |||
| ing: | sponder) MUST do the following: | |||
| 1. Create a unique random value to be used as a nonce. | 1. Create a unique random value to be used as a nonce. | |||
| 2. Construct a Nonce payload. | 2. Construct a Nonce payload. | |||
| 3. Transmit the message to the receiving entity as described in section | 3. Transmit the message to the receiving entity as described in section | |||
| 5.1. | 5.1. | |||
| When a Nonce payload is received, the receiving entity (initiator or re- | When a Nonce payload is received, the receiving entity (initiator or re- | |||
| sponder) MUST do the following: | sponder) MUST do the following: | |||
| 1. There are no specific procedures for handling Nonce payloads. The | 1. There are no specific procedures for handling Nonce payloads. The | |||
| procedures are defined by the exchange types (and possibly the DOI | procedures are defined by the exchange types (and possibly the DOI | |||
| and Key Exchange descriptions). | and Key Exchange descriptions). | |||
| 5.12 Notification Payload Processing | 5.14 Notification Payload Processing | |||
| During communications it is possible that errors may occur. The Infor- | During communications it is possible that errors may occur. The Infor- | |||
| mational Exchange with a Notify Payload provides a controlled method of | mational Exchange with a Notify Payload provides a controlled method of | |||
| informing a peer entity that errors have occurred during protocol process- | informing a peer entity that errors have occurred during protocol process- | |||
| ing. | ing. It is RECOMMENDED that Notify Payloads be sent in a separate Infor- | |||
| mational Exchange rather than appending a Notify Payload to an existing | ||||
| exchange. | ||||
| When creating a Notification Payload, the transmitting entity MUST do the | When creating a Notification Payload, the transmitting entity (initiator | |||
| following: | or responder) MUST do the following: | |||
| 1. Determine the DOI for this Notification. | 1. Determine the DOI for this Notification. | |||
| 2. Determine the Protocol-ID for this Notification. | 2. Determine the Protocol-ID for this Notification. | |||
| 3. Determine the SPI size based on the Protocol-ID field. This field is | 3. Determine the SPI size based on the Protocol-ID field. This field is | |||
| necessary because different security protocols have different SPI | necessary because different security protocols have different SPI | |||
| sizes. For example, ISAKMP combines the Initiator and Responder | sizes. For example, ISAKMP combines the Initiator and Responder | |||
| cookie pair (16 octets) as a SPI, while ESP and AH have 8 octet SPIs. | cookie pair (16 octets) as a SPI, while ESP and AH have 8 octet SPIs. | |||
| skipping to change at page 69, line 44 ¶ | skipping to change at page 72, line 7 ¶ | |||
| terial during an ISAKMP Phase 1 negotiation there will be no protection | terial during an ISAKMP Phase 1 negotiation there will be no protection | |||
| provided for the Informational Exchange. Once the keying material has | provided for the Informational Exchange. Once the keying material has | |||
| been exchanged or the ISAKMP SA has been established, the Informational | been exchanged or the ISAKMP SA has been established, the Informational | |||
| Exchange MUST be transmitted under the protection provided by the keying | Exchange MUST be transmitted under the protection provided by the keying | |||
| material or the ISAKMP SA. | material or the ISAKMP SA. | |||
| When a Notification payload is received, the receiving entity (initiator | When a Notification payload is received, the receiving entity (initiator | |||
| or responder) MUST do the following: | or responder) MUST do the following: | |||
| 1. Determine if the Informational Exchange has any protection applied to | 1. Determine if the Informational Exchange has any protection applied to | |||
| it by checking the Encryption Bit in the ISAKMP Header. If the | it by checking the Encryption Bit and the Authentication Only Bit in | |||
| Informational Exchange is not encrypted the payload processing can | the ISAKMP Header. If the Encryption Bit is set, i.e. the Informa- | |||
| continue as described below. If the Informational Exchange is | tional Exchange is encrypted, then the message MUST be decrypted | |||
| encrypted, then the message MUST be decrypted using the (in-progress | using the (in-progress or completed) ISAKMP SA. Once the decryption | |||
| or completed) ISAKMP SA. Once the decryption is complete the | is complete the processing can continue as described below. If the | |||
| processing can continue as described below. | Authentication Only Bit is set, then the message MUST be authenti- | |||
| cated using the (in-progress or completed) ISAKMP SA. Once the | ||||
| authentication is completed, the processing can continue as described | ||||
| below. If the Informational Exchange is not encrypted or authentica- | ||||
| tion, the payload processing can continue as described below. | ||||
| 2. Determine if the Domain of Interpretation (DOI) is supported. If the | 2. Determine if the Domain of Interpretation (DOI) is supported. If the | |||
| DOI determination fails, the message is discarded and the following | DOI determination fails, the payload is discarded and the following | |||
| action is taken: | action is taken: | |||
| (a) The event, INVALID DOI, is logged in the appropriate system audit | (a) The event, INVALID DOI, MAY be logged in the appropriate system | |||
| file. | audit file. | |||
| 3. Determine if the Protocol-Id is supported. If the Protocol-Id | 3. Determine if the Protocol-Id is supported. If the Protocol-Id | |||
| determination fails, the message is discarded and the following | determination fails, the payload is discarded and the following | |||
| action is taken: | action is taken: | |||
| (a) The event, INVALID PROTOCOL-ID, is logged in the appropriate | (a) The event, INVALID PROTOCOL-ID, MAY be logged in the appropriate | |||
| system audit file. | system audit file. | |||
| 4. Determine if the SPI is valid. If the SPI is invalid, the message is | 4. Determine if the SPI is valid. If the SPI is invalid, the payload is | |||
| discarded and the following action is taken: | discarded and the following action is taken: | |||
| (a) The event, INVALID SPI, is logged in the appropriate system audit | (a) The event, INVALID SPI, MAY be logged in the appropriate system | |||
| file. | audit file. | |||
| 5. Determine if the Notify Message Type is valid. If the Notify Message | 5. Determine if the Notify Message Type is valid. If the Notify Message | |||
| Type is invalid, the message is discarded and the following action is | Type is invalid, the payload is discarded and the following action is | |||
| taken: | taken: | |||
| (a) The event, INVALID MESSAGE TYPE, is logged in the appropriate | (a) The event, INVALID MESSAGE TYPE, MAY be logged in the appropriate | |||
| system audit file. | system audit file. | |||
| 6. Process the Notification payload, including additional Notification | 6. Process the Notification payload, including additional Notification | |||
| Data, and take appropriate action, according to local security | Data, and take appropriate action, according to local security | |||
| policy. | policy. | |||
| 5.13 Delete Payload Processing | 5.15 Delete Payload Processing | |||
| During communications it is possible that hosts may be compromised or that | During communications it is possible that hosts may be compromised or that | |||
| information may be intercepted during transmission. Determining whether | information may be intercepted during transmission. Determining whether | |||
| this has occurred is not an easy task and is outside the scope of this | this has occurred is not an easy task and is outside the scope of this | |||
| Internet-Draft. However, if it is discovered that transmissions are being | Internet-Draft. However, if it is discovered that transmissions are being | |||
| compromised, then it is necessary to establish a new SA and delete the | compromised, then it is necessary to establish a new SA and delete the | |||
| current SA. | current SA. | |||
| The Informational Exchange with a Delete Payload provides a controlled | The Informational Exchange with a Delete Payload provides a controlled | |||
| method of informing a peer entity that the initiating entity has deleted | method of informing a peer entity that the transmitting entity has deleted | |||
| the SA(s). Deletion of Security Associations MUST always be performed | the SA(s). Deletion of Security Associations MUST always be performed un- | |||
| under the protection of an ISAKMP SA. The receiving entity SHOULD clean up | der the protection of an ISAKMP SA. The receiving entity SHOULD clean up | |||
| its local SA database. However, upon receipt of a Delete message the SAs | its local SA database. However, upon receipt of a Delete message the SAs | |||
| listed in the Security Parameter Index (SPI) field of the Delete payload | listed in the Security Parameter Index (SPI) field of the Delete payload | |||
| cannot be used with the initiating entity. The SA Establishment procedure | cannot be used with the transmitting entity. The SA Establishment proce- | |||
| must be invoked to re-establish secure communications. | dure must be invoked to re-establish secure communications. | |||
| When creating a Delete Payload, the transmitting entity MUST do the fol- | When creating a Delete Payload, the transmitting entity (initiator or re- | |||
| lowing: | sponder) MUST do the following: | |||
| 1. Determine the DOI for this Deletion. | 1. Determine the DOI for this Deletion. | |||
| 2. Determine the Protocol-ID for this Deletion. | 2. Determine the Protocol-ID for this Deletion. | |||
| 3. Determine the SPI size based on the Protocol-ID field. This field is | 3. Determine the SPI size based on the Protocol-ID field. This field is | |||
| necessary because different security protocols have different SPI | necessary because different security protocols have different SPI | |||
| sizes. For example, ISAKMP combines the Initiator and Responder | sizes. For example, ISAKMP combines the Initiator and Responder | |||
| cookie pair (16 octets) as a SPI, while ESP and AH have 8 octet SPIs. | cookie pair (16 octets) as a SPI, while ESP and AH have 8 octet SPIs. | |||
| skipping to change at page 71, line 40 ¶ | skipping to change at page 74, line 12 ¶ | |||
| policy will dictate the procedures for continuing. However, we RECOMMEND | policy will dictate the procedures for continuing. However, we RECOMMEND | |||
| that a DELETE PAYLOAD ERROR event be logged in the appropriate system au- | that a DELETE PAYLOAD ERROR event be logged in the appropriate system au- | |||
| dit file by the receiving entity. | dit file by the receiving entity. | |||
| As described above, the Informational Exchange with a Delete payload MUST | As described above, the Informational Exchange with a Delete payload MUST | |||
| be transmitted under the protection provided by an ISAKMP SA. | be transmitted under the protection provided by an ISAKMP SA. | |||
| When a Delete payload is received, the receiving entity (initiator or re- | When a Delete payload is received, the receiving entity (initiator or re- | |||
| sponder) MUST do the following: | sponder) MUST do the following: | |||
| 1. Because the Informational Exchange is encrypted, then the message | 1. Because the Informational Exchange is protected by some security | |||
| MUST be decrypted using the ISAKMP SA. Once the decryption is | service (e.g. authentication for an Auth-Only SA, encryption for | |||
| other exchanges), the message MUST have these security services | ||||
| applied using the ISAKMP SA. Once the security service processing is | ||||
| complete the processing can continue as described below. Any errors | complete the processing can continue as described below. Any errors | |||
| that occur during the decryption process will be evident when | that occur during the security service processing will be evident | |||
| checking information in the Delete payload. The local security | when checking information in the Delete payload. The local security | |||
| policy SHOULD dictate any action to be taken as a result of | policy SHOULD dictate any action to be taken as a result of security | |||
| decryption errors. | service processing errors. | |||
| 2. Determine if the Domain of Interpretation (DOI) is supported. If the | 2. Determine if the Domain of Interpretation (DOI) is supported. If the | |||
| DOI determination fails, the message is discarded and the following | DOI determination fails, the payload is discarded and the following | |||
| action is taken: | action is taken: | |||
| (a) The event, INVALID DOI, is logged in the appropriate system audit | (a) The event, INVALID DOI, MAY be logged in the appropriate system | |||
| file. | audit file. | |||
| 3. Determine if the Protocol-Id is supported. If the Protocol-Id | 3. Determine if the Protocol-Id is supported. If the Protocol-Id | |||
| determination fails, the message is discarded and the following | determination fails, the payload is discarded and the following | |||
| action is taken: | action is taken: | |||
| (a) The event, INVALID PROTOCOL-ID, is logged in the appropriate | (a) The event, INVALID PROTOCOL-ID, MAY be logged in the appropriate | |||
| system audit file. | system audit file. | |||
| 4. Determine if the SPI is valid for each SPI included in the Delete | 4. Determine if the SPI is valid for each SPI included in the Delete | |||
| payload. For each SPI that is invalid, the following action is | payload. For each SPI that is invalid, the following action is | |||
| taken: | taken: | |||
| (a) The event, INVALID SPI, is logged in the appropriate system audit | (a) The event, INVALID SPI, MAY be logged in the appropriate system | |||
| file. | audit file. | |||
| 5. Process the Delete payload and take appropriate action, according to | 5. Process the Delete payload and take appropriate action, according to | |||
| local security policy. As described above, one appropriate action | local security policy. As described above, one appropriate action | |||
| SHOULD include cleaning up the local SA database. | SHOULD include cleaning up the local SA database. | |||
| 6 Conclusions | 6 Conclusions | |||
| The Internet Security Association and Key Management Protocol (ISAKMP) is | The Internet Security Association and Key Management Protocol (ISAKMP) is | |||
| a well designed protocol aimed at the Internet of the future. The mas- | a well designed protocol aimed at the Internet of the future. The mas- | |||
| sive growth of the Internet will lead to great diversity in network uti- | sive growth of the Internet will lead to great diversity in network uti- | |||
| skipping to change at page 74, line 19 ¶ | skipping to change at page 76, line 19 ¶ | |||
| As detailed in previous sections, ISAKMP is designed to provide a flexible | As detailed in previous sections, ISAKMP is designed to provide a flexible | |||
| and extensible framework for establishing and managing Security Associa- | and extensible framework for establishing and managing Security Associa- | |||
| tions and cryptographic keys. The framework provided by ISAKMP consists | tions and cryptographic keys. The framework provided by ISAKMP consists | |||
| of header and payload definitions, exchange types for guiding message and | of header and payload definitions, exchange types for guiding message and | |||
| payload exchanges, and general processing guidelines. ISAKMP does not | payload exchanges, and general processing guidelines. ISAKMP does not | |||
| define the mechanisms that will be used to establish and manage Security | define the mechanisms that will be used to establish and manage Security | |||
| Associations and cryptographic keys in an authenticated and confidential | Associations and cryptographic keys in an authenticated and confidential | |||
| manner. The definition of mechanisms and their application is the purview | manner. The definition of mechanisms and their application is the purview | |||
| of individual Domains of Interpretation (DOIs). | of individual Domains of Interpretation (DOIs). | |||
| This section describes the ISAKMP values for the Internet IP Security DOI. | This section describes the ISAKMP values for the Internet IP Security DOI, | |||
| The Internet IP Security DOI is MANDATORY to implement for IP Security. | supported security protocols, and identification values for ISAKMP Phase 1 | |||
| [Oakley] and [IO-Res] describe, in detail, the mechanisms and their ap- | negotiations. The Internet IP Security DOI is MANDATORY to implement for | |||
| plication for establishing and managing Security Associations and crypto- | IP Security. [Oakley] and [IKE] describe, in detail, the mechanisms and | |||
| graphic keys for IP Security. | their application for establishing and managing Security Associations and | |||
| cryptographic keys for IP Security. | ||||
| A.2 Assigned Values for the Internet IP Security DOI | ||||
| A.2.1 Internet IP Security DOI Assigned Value | A.2 Internet IP Security DOI Assigned Value | |||
| As described in [IPDOI], the Internet IP Security DOI Assigned Number is | As described in [IPDOI], the Internet IP Security DOI Assigned Number is | |||
| one (1). | one (1). | |||
| A.2.2 Supported Security Protocols | A.3 Supported Security Protocols | |||
| Values for supported security protocols are specified in the most recent | Values for supported security protocols are specified in the most recent | |||
| ``Assigned Numbers'' RFC [STD-2]. Presented in the following table are | ``Assigned Numbers'' RFC [STD-2]. Presented in the following table are | |||
| the values for the security protocols supported by ISAKMP for the Internet | the values for the security protocols supported by ISAKMP for the Internet | |||
| IP Security DOI. | IP Security DOI. | |||
| _Protocol_Assigned_Value__ | _Protocol_Assigned_Value__ | |||
| RESERVED 0 | RESERVED 0 | |||
| ISAKMP 1 | ISAKMP 1 | |||
| All DOIs MUST reserve ISAKMP with a Protocol-ID of 1. All other security | All DOIs MUST reserve ISAKMP with a Protocol-ID of 1. All other security | |||
| protocols within that DOI will be numbered accordingly. | protocols within that DOI will be numbered accordingly. | |||
| Security protocol values 2-1023 are reserved for IANA use. Values 1024- | Security protocol values 2-15359 are reserved to IANA for future use. | |||
| 15359 are reserved for future use. Values 15360-16383 are reserved for | Values 15360-16383 are permanently reserved for private use amongst mu- | |||
| private use. | tually consenting implementations. Such private use values are unlikely | |||
| to be interoperable across different implementations. | ||||
| A.4 ISAKMP Identification Type Values | ||||
| The following table lists the assigned values for the Identification Type | ||||
| field found in the Identification payload during a generic Phase 1 ex- | ||||
| change, which is not for a specific protocol. | ||||
| ______ID_Type_______Value_ | ||||
| ID_IPV4_ADDR 0 | ||||
| ID_IPV4_ADDR_SUBNET 1 | ||||
| ID_IPV6_ADDR 2 | ||||
| ID_IPV6_ADDR_SUBNET 3 | ||||
| A.4.1 ID_IPV4_ADDR | ||||
| The ID_IPV4_ADDR type specifies a single four (4) octet IPv4 address. | ||||
| A.4.2 ID_IPV4_ADDR_SUBNET | ||||
| The ID_IPV4_ADDR_SUBNET type specifies a range of IPv4 addresses, repre- | ||||
| sented by two four (4) octet values. The first value is an IPv4 address. | ||||
| The second is an IPv4 network mask. Note that ones (1s) in the network | ||||
| mask indicate that the corresponding bit in the address is fixed, while | ||||
| zeros (0s) indicate a "wildcard" bit. | ||||
| A.4.3 ID_IPV6_ADDR | ||||
| The ID_IPV6_ADDR type specifies a single sixteen (16) octet IPv6 address. | ||||
| A.4.4 ID_IPV6_ADDR_SUBNET | ||||
| The ID_IPV6_ADDR_SUBNET type specifies a range of IPv6 addresses, repre- | ||||
| sented by two sixteen (16) octet values. The first value is an IPv6 ad- | ||||
| dress. The second is an IPv6 network mask. Note that ones (1s) in the | ||||
| network mask indicate that the corresponding bit in the address is fixed, | ||||
| while zeros (0s) indicate a "wildcard" bit. | ||||
| B Defining a new Domain of Interpretation | B Defining a new Domain of Interpretation | |||
| The Internet DOI may be sufficient to meet the security requirements of | The Internet DOI may be sufficient to meet the security requirements of | |||
| a large portion of the internet community. However, some groups may have | a large portion of the internet community. However, some groups may have | |||
| a need to customize some aspect of a DOI, perhaps to add a different set | a need to customize some aspect of a DOI, perhaps to add a different set | |||
| of cryptographic algorithms, or perhaps because they want to make their | of cryptographic algorithms, or perhaps because they want to make their | |||
| security-relevant decisions based on something other than a host id or | security-relevant decisions based on something other than a host id or | |||
| user id. Also, a particular group may have a need for a new exchange | user id. Also, a particular group may have a need for a new exchange | |||
| type, for example to support key management for multicast groups. | type, for example to support key management for multicast groups. | |||
| skipping to change at page 79, line 36 ¶ | skipping to change at page 81, line 36 ¶ | |||
| Another issue that must be considered in the development of ISAKMP is the | Another issue that must be considered in the development of ISAKMP is the | |||
| effect of firewalls on the protocol. Many firewalls filter out all UDP | effect of firewalls on the protocol. Many firewalls filter out all UDP | |||
| packets, making reliance on UDP questionable in certain environments. | packets, making reliance on UDP questionable in certain environments. | |||
| A number of very important security considerations are presented in | A number of very important security considerations are presented in | |||
| [RFC-1825]. One bears repeating. Once a private session key is created, | [RFC-1825]. One bears repeating. Once a private session key is created, | |||
| it must be safely stored. Failure to properly protect the private key | it must be safely stored. Failure to properly protect the private key | |||
| from access both internal and external to the system completely nullifies | from access both internal and external to the system completely nullifies | |||
| any protection provided by the IP Security services. | any protection provided by the IP Security services. | |||
| IANA Considerations | ||||
| This document contains many "magic" numbers to be maintained by the IANA. | ||||
| This section explains the criteria to be used by the IANA to assign addi- | ||||
| tional numbers in each of these lists. | ||||
| Domain of Interpretation | ||||
| The Domain of Interpretation (DOI) is a 32-bit field which identifies the | ||||
| domain under which the security association negotiation is taking place. | ||||
| Requests for assignments of new DOIs must be accompanied by a standards- | ||||
| track RFC which describes the specific domain. | ||||
| Supported Security Protocols | ||||
| ISAKMP is designed to provide security association negotiation and key | ||||
| management for many security protocols. Requests for identifiers for ad- | ||||
| ditional security protocols must be accompanied by a standards-track RFC | ||||
| which describes the security protocol and its relationship to ISAKMP. | ||||
| Acknowledgements | Acknowledgements | |||
| Dan Harkins, Dave Carrel, and Derrell Piper of Cisco Systems provided de- | Dan Harkins, Dave Carrel, and Derrell Piper of Cisco Systems provided | |||
| sign assistance with the protocol and coordination for the [IO-Res] and | design assistance with the protocol and coordination for the [IKE] and | |||
| [IPDOI] documents. | [IPDOI] documents. | |||
| Hilarie Orman, via the Oakley key exchange protocol, has significantly | Hilarie Orman, via the Oakley key exchange protocol, has significantly | |||
| influenced the design of ISAKMP. | influenced the design of ISAKMP. | |||
| Marsha Gross, Bill Kutz, Mike Oehler, Pete Sell, and Ruth Taylor provided | Marsha Gross, Bill Kutz, Mike Oehler, Pete Sell, and Ruth Taylor provided | |||
| significant input and review to this document. | significant input and review to this document. | |||
| Scott Carlson ported the TIS DNSSEC prototype to FreeBSD for use with the | Scott Carlson ported the TIS DNSSEC prototype to FreeBSD for use with the | |||
| ISAKMP prototype. | ISAKMP prototype. | |||
| skipping to change at page 81, line 11 ¶ | skipping to change at page 83, line 11 ¶ | |||
| ISAKMP implementors. | ISAKMP implementors. | |||
| Thanks to Carl Muckenhirn of SPARTA, Inc. for his assistance with LaTeX. | Thanks to Carl Muckenhirn of SPARTA, Inc. for his assistance with LaTeX. | |||
| References | References | |||
| [ANSI] ANSI, X9.42: Public Key Cryptography for the Financial Services | [ANSI] ANSI, X9.42: Public Key Cryptography for the Financial Services | |||
| Industry -- Establishment of Symmetric Algorithm Keys Using | Industry -- Establishment of Symmetric Algorithm Keys Using | |||
| Diffie-Hellman, Working Draft, April 19, 1996. | Diffie-Hellman, Working Draft, April 19, 1996. | |||
| [RFC-1825] Randall Atkinson, Security Architecture for the Internet | ||||
| Protocol, RFC-1825, August, 1995. | ||||
| [BC] Ballardie, A. and J. Crowcroft, Multicast-specific Security Threats | [BC] Ballardie, A. and J. Crowcroft, Multicast-specific Security Threats | |||
| and Countermeasures, Proceedings of 1995 ISOC Symposium on Networks | and Countermeasures, Proceedings of 1995 ISOC Symposium on Networks | |||
| & Distributed Systems Security, pp. 17-30, Internet Society, San | & Distributed Systems Security, pp. 17-30, Internet Society, San | |||
| Diego, CA, February 1995. | Diego, CA, February 1995. | |||
| [RFC-1949] A. Ballardie, Scalable Multicast Key Distribution, RFC-1949, | ||||
| May, 1996. | ||||
| [Berge] Berge, N.H., UNINETT PCA Policy Statements, Internet-Draft, work | [Berge] Berge, N.H., UNINETT PCA Policy Statements, Internet-Draft, work | |||
| in progress, November, 1995. | in progress, November, 1995. | |||
| [CW87] Clark, D.D. and D.R. Wilson, A Comparison of Commercial and | [CW87] Clark, D.D. and D.R. Wilson, A Comparison of Commercial and | |||
| Military Computer Security Policies, Proceedings of the IEEE | Military Computer Security Policies, Proceedings of the IEEE | |||
| Symposium on Security & Privacy, Oakland, CA, 1987, pp 184-193. | Symposium on Security & Privacy, Oakland, CA, 1987, pp. 184-193. | |||
| [DNSSEC] D. Eastlake III, Domain Name System Protocol Security | ||||
| Extensions, Internet-Draft: draft-ietf-dnssec-secext2-03.txt, Work | ||||
| in Progress, January 1998. | ||||
| [DOW92] Diffie, W., M.Wiener, P. Van Oorschot, Authentication and | [DOW92] Diffie, W., M.Wiener, P. Van Oorschot, Authentication and | |||
| Authenticated Key Exchanges, Designs, Codes, and Cryptography, 2, | Authenticated Key Exchanges, Designs, Codes, and Cryptography, 2, | |||
| 107-125, Kluwer Academic Publishers, 1992. | 107-125, Kluwer Academic Publishers, 1992. | |||
| [DNSSEC] D. Eastlake III, Domain Name System Protocol Security | [IAB] Bellovin, S., Report of the IAB Security Architecture Workshop, | |||
| Extensions, Internet-Draft: draft-ietf-dnssec-secext2-00.txt, Work | Internet-Draft: draft-iab-secwks-report-00.txt, Work in Progress, | |||
| in Progress, July 1997. | November 1997. | |||
| [Karn] Karn, P. and B. Simpson, The Photuris Session Key Management | [IKE] Harkins, D. and D. Carrel, The Internet Key Exchange (IKE), | |||
| Internet-Draft: draft-ietf-ipsec-isakmp-oakley-06.txt, Work in | ||||
| Progress, February 1998. | ||||
| [IPDOI] Derrell Piper, The Internet IP Security Domain of Interpretation | ||||
| for ISAKMP, Internet-Draft: draft-ietf-ipsec-ipsec-doi-07.txt, Work | ||||
| in Progress, February 1998. | ||||
| [Karn] Karn, P. and B. Simpson, Photuris: Session Key Management | ||||
| Protocol, Internet-Draft: draft-simpson-photuris-15.txt, Work in | Protocol, Internet-Draft: draft-simpson-photuris-15.txt, Work in | |||
| Progress, July 1997. | Progress, July 1997. | |||
| [RFC-1422] Steve Kent, Privacy Enhancement for Internet Electronic Mail: | ||||
| Part II: Certificate-Based Key Management, RFC-1422, February 1993. | ||||
| [Kent94] Steve Kent, IPSEC SMIB, e-mail to ipsec@ans.net, August 10, | [Kent94] Steve Kent, IPSEC SMIB, e-mail to ipsec@ans.net, August 10, | |||
| 1994. | 1994. | |||
| [Oakley] H. K. Orman, The Oakley Key Determination Protocol, Internet- | [Oakley] H. K. Orman, The Oakley Key Determination Protocol, Internet- | |||
| Draft: draft-ietf-ipsec-oakley-02.txt, Work in Progress, July 1997. | Draft: draft-ietf-ipsec-oakley-02.txt, Work in Progress, July 1997. | |||
| [IO-Res] Harkins, D. and D. Carrel, The Resolution of ISAKMP with Oakley, | [RFC-1422] Steve Kent, Privacy Enhancement for Internet Electronic Mail: | |||
| Internet-Draft: draft-ietf-ipsec-isakmp-oakley-04.txt, Work in | Part II: Certificate-Based Key Management, RFC-1422, February 1993. | |||
| Progress, July 1997. | ||||
| [IPDOI] Derrell Piper, The Internet IP Security Domain of Interpretation | [RFC-1825] Randall Atkinson, Security Architecture for the Internet | |||
| for ISAKMP, Internet-Draft: draft-ietf-ipsec-ipsec-doi-03.txt, Work | Protocol, RFC-1825, August, 1995. | |||
| in Progress, July 1997. | ||||
| [STD-2] Reynolds, J. and J. Postel, Assigned Numbers, STD 2, October, | [RFC-1949] A. Ballardie, Scalable Multicast Key Distribution, RFC-1949, | |||
| 1994. | May 1996. | |||
| [Schneier] Bruce Schneier, Applied Cryptography - Protocols, Algorithms, | [RFC-2093] Harney, H. and C. Muckenhirn, Group Key Management Protocol | |||
| and Source Code in C (Second Edition), John Wiley & Sons, Inc., | (GKMP) Specification, SPARTA, Inc., RFC-2093, July 1997. | |||
| 1996. | ||||
| [RFC-2094] Harney, H. and C. Muckenhirn, Group Key Management Protocol | [RFC-2094] Harney, H. and C. Muckenhirn, Group Key Management Protocol | |||
| (GKMP) Architecture, SPARTA, Inc., RFC-2094, July 1997. | (GKMP) Architecture, SPARTA, Inc., RFC-2094, July 1997. | |||
| [RFC-2093] Harney, H. and C. Muckenhirn, Group Key Management Protocol | [RFC-2119] S. Bradner, Key Words for use in RFCs to Indicate Requirement | |||
| (GKMP) Specification, SPARTA, Inc., RFC-2093, July 1997. | Levels, Harvard University, RFC-2119, March 1997. | |||
| [Schneier] Bruce Schneier, Applied Cryptography - Protocols, Algorithms, | ||||
| and Source Code in C (Second Edition), John Wiley & Sons, Inc., | ||||
| 1996. | ||||
| [STD-2] Reynolds, J. and J. Postel, Assigned Numbers, STD 2, October, | ||||
| 1994. | ||||
| Addresses of Authors | Addresses of Authors | |||
| The authors can be contacted at: | The authors can be contacted at: | |||
| Douglas Maughan | Douglas Maughan | |||
| Phone: 301-688-0847 | Phone: 301-688-0847 | |||
| E-mail:wdmaugh@tycho.ncsc.mil | E-mail:wdm@tycho.ncsc.mil | |||
| Mark Schneider | Mark Schneider | |||
| Phone: 301-688-0851 | Phone: 301-688-0851 | |||
| E-mail:mss@tycho.ncsc.mil | E-mail:mss@tycho.ncsc.mil | |||
| Jeff Turner | ||||
| Phone: 301-688-0849 | ||||
| E-mail:sjt@epoch.ncsc.mil | ||||
| National Security Agency | National Security Agency | |||
| ATTN: R23 | ATTN: R23 | |||
| 9800 Savage Road | 9800 Savage Road | |||
| Ft. Meade, MD. 20755-6000 | Ft. Meade, MD. 20755-6000 | |||
| Mark Schertler | Mark Schertler | |||
| Terisa Systems, Inc. | Terisa Systems, Inc. | |||
| 4984 El Camino Real | 4984 El Camino Real | |||
| Los Altos, CA. 94022 | Los Altos, CA. 94022 | |||
| Phone: 415-919-1773 | Phone: 650-919-1773 | |||
| E-mail:mjs@terisa.com | E-mail:mjs@terisa.com | |||
| Jeff Turner | ||||
| RABA Technologies, Inc. | ||||
| 10500 Little Patuxent Parkway | ||||
| Columbia, MD. 21044 | ||||
| Phone: 410-715-9399 | ||||
| E-mail:jeff.turner@raba.com | ||||
| End of changes. 247 change blocks. | ||||
| 646 lines changed or deleted | 839 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||