Paul Moore | 8802f61 | 2006-08-03 16:45:49 -0700 | [diff] [blame] | 1 | IETF CIPSO Working Group |
| 2 | 16 July, 1992 |
| 3 | |
| 4 | |
| 5 | |
| 6 | COMMERCIAL IP SECURITY OPTION (CIPSO 2.2) |
| 7 | |
| 8 | |
| 9 | |
| 10 | 1. Status |
| 11 | |
| 12 | This Internet Draft provides the high level specification for a Commercial |
| 13 | IP Security Option (CIPSO). This draft reflects the version as approved by |
| 14 | the CIPSO IETF Working Group. Distribution of this memo is unlimited. |
| 15 | |
| 16 | This document is an Internet Draft. Internet Drafts are working documents |
| 17 | of the Internet Engineering Task Force (IETF), its Areas, and its Working |
| 18 | Groups. Note that other groups may also distribute working documents as |
| 19 | Internet Drafts. |
| 20 | |
| 21 | Internet Drafts are draft documents valid for a maximum of six months. |
| 22 | Internet Drafts may be updated, replaced, or obsoleted by other documents |
| 23 | at any time. It is not appropriate to use Internet Drafts as reference |
| 24 | material or to cite them other than as a "working draft" or "work in |
| 25 | progress." |
| 26 | |
| 27 | Please check the I-D abstract listing contained in each Internet Draft |
| 28 | directory to learn the current status of this or any other Internet Draft. |
| 29 | |
| 30 | |
| 31 | |
| 32 | |
| 33 | 2. Background |
| 34 | |
| 35 | Currently the Internet Protocol includes two security options. One of |
| 36 | these options is the DoD Basic Security Option (BSO) (Type 130) which allows |
| 37 | IP datagrams to be labeled with security classifications. This option |
| 38 | provides sixteen security classifications and a variable number of handling |
| 39 | restrictions. To handle additional security information, such as security |
| 40 | categories or compartments, another security option (Type 133) exists and |
| 41 | is referred to as the DoD Extended Security Option (ESO). The values for |
| 42 | the fixed fields within these two options are administered by the Defense |
| 43 | Information Systems Agency (DISA). |
| 44 | |
| 45 | Computer vendors are now building commercial operating systems with |
| 46 | mandatory access controls and multi-level security. These systems are |
| 47 | no longer built specifically for a particular group in the defense or |
| 48 | intelligence communities. They are generally available commercial systems |
| 49 | for use in a variety of government and civil sector environments. |
| 50 | |
| 51 | The small number of ESO format codes can not support all the possible |
| 52 | applications of a commercial security option. The BSO and ESO were |
| 53 | designed to only support the United States DoD. CIPSO has been designed |
| 54 | to support multiple security policies. This Internet Draft provides the |
| 55 | format and procedures required to support a Mandatory Access Control |
| 56 | security policy. Support for additional security policies shall be |
| 57 | defined in future RFCs. |
| 58 | |
| 59 | |
| 60 | |
| 61 | |
| 62 | Internet Draft, Expires 15 Jan 93 [PAGE 1] |
| 63 | |
| 64 | |
| 65 | |
| 66 | CIPSO INTERNET DRAFT 16 July, 1992 |
| 67 | |
| 68 | |
| 69 | |
| 70 | |
| 71 | 3. CIPSO Format |
| 72 | |
| 73 | Option type: 134 (Class 0, Number 6, Copy on Fragmentation) |
| 74 | Option length: Variable |
| 75 | |
| 76 | This option permits security related information to be passed between |
| 77 | systems within a single Domain of Interpretation (DOI). A DOI is a |
| 78 | collection of systems which agree on the meaning of particular values |
| 79 | in the security option. An authority that has been assigned a DOI |
| 80 | identifier will define a mapping between appropriate CIPSO field values |
| 81 | and their human readable equivalent. This authority will distribute that |
| 82 | mapping to hosts within the authority's domain. These mappings may be |
| 83 | sensitive, therefore a DOI authority is not required to make these |
| 84 | mappings available to anyone other than the systems that are included in |
| 85 | the DOI. |
| 86 | |
| 87 | This option MUST be copied on fragmentation. This option appears at most |
| 88 | once in a datagram. All multi-octet fields in the option are defined to be |
| 89 | transmitted in network byte order. The format of this option is as follows: |
| 90 | |
| 91 | +----------+----------+------//------+-----------//---------+ |
| 92 | | 10000110 | LLLLLLLL | DDDDDDDDDDDD | TTTTTTTTTTTTTTTTTTTT | |
| 93 | +----------+----------+------//------+-----------//---------+ |
| 94 | |
| 95 | TYPE=134 OPTION DOMAIN OF TAGS |
| 96 | LENGTH INTERPRETATION |
| 97 | |
| 98 | |
| 99 | Figure 1. CIPSO Format |
| 100 | |
| 101 | |
| 102 | 3.1 Type |
| 103 | |
| 104 | This field is 1 octet in length. Its value is 134. |
| 105 | |
| 106 | |
| 107 | 3.2 Length |
| 108 | |
| 109 | This field is 1 octet in length. It is the total length of the option |
| 110 | including the type and length fields. With the current IP header length |
| 111 | restriction of 40 octets the value of this field MUST not exceed 40. |
| 112 | |
| 113 | |
| 114 | 3.3 Domain of Interpretation Identifier |
| 115 | |
| 116 | This field is an unsigned 32 bit integer. The value 0 is reserved and MUST |
| 117 | not appear as the DOI identifier in any CIPSO option. Implementations |
| 118 | should assume that the DOI identifier field is not aligned on any particular |
| 119 | byte boundary. |
| 120 | |
| 121 | To conserve space in the protocol, security levels and categories are |
| 122 | represented by numbers rather than their ASCII equivalent. This requires |
| 123 | a mapping table within CIPSO hosts to map these numbers to their |
| 124 | corresponding ASCII representations. Non-related groups of systems may |
| 125 | |
| 126 | |
| 127 | |
| 128 | Internet Draft, Expires 15 Jan 93 [PAGE 2] |
| 129 | |
| 130 | |
| 131 | |
| 132 | CIPSO INTERNET DRAFT 16 July, 1992 |
| 133 | |
| 134 | |
| 135 | |
| 136 | have their own unique mappings. For example, one group of systems may |
| 137 | use the number 5 to represent Unclassified while another group may use the |
| 138 | number 1 to represent that same security level. The DOI identifier is used |
| 139 | to identify which mapping was used for the values within the option. |
| 140 | |
| 141 | |
| 142 | 3.4 Tag Types |
| 143 | |
| 144 | A common format for passing security related information is necessary |
| 145 | for interoperability. CIPSO uses sets of "tags" to contain the security |
| 146 | information relevant to the data in the IP packet. Each tag begins with |
| 147 | a tag type identifier followed by the length of the tag and ends with the |
| 148 | actual security information to be passed. All multi-octet fields in a tag |
| 149 | are defined to be transmitted in network byte order. Like the DOI |
| 150 | identifier field in the CIPSO header, implementations should assume that |
| 151 | all tags, as well as fields within a tag, are not aligned on any particular |
| 152 | octet boundary. The tag types defined in this document contain alignment |
| 153 | bytes to assist alignment of some information, however alignment can not |
| 154 | be guaranteed if CIPSO is not the first IP option. |
| 155 | |
| 156 | CIPSO tag types 0 through 127 are reserved for defining standard tag |
| 157 | formats. Their definitions will be published in RFCs. Tag types whose |
| 158 | identifiers are greater than 127 are defined by the DOI authority and may |
| 159 | only be meaningful in certain Domains of Interpretation. For these tag |
| 160 | types, implementations will require the DOI identifier as well as the tag |
| 161 | number to determine the security policy and the format associated with the |
| 162 | tag. Use of tag types above 127 are restricted to closed networks where |
| 163 | interoperability with other networks will not be an issue. Implementations |
| 164 | that support a tag type greater than 127 MUST support at least one DOI that |
| 165 | requires only tag types 1 to 127. |
| 166 | |
| 167 | Tag type 0 is reserved. Tag types 1, 2, and 5 are defined in this |
| 168 | Internet Draft. Types 3 and 4 are reserved for work in progress. |
| 169 | The standard format for all current and future CIPSO tags is shown below: |
| 170 | |
| 171 | +----------+----------+--------//--------+ |
| 172 | | TTTTTTTT | LLLLLLLL | IIIIIIIIIIIIIIII | |
| 173 | +----------+----------+--------//--------+ |
| 174 | TAG TAG TAG |
| 175 | TYPE LENGTH INFORMATION |
| 176 | |
| 177 | Figure 2: Standard Tag Format |
| 178 | |
| 179 | In the three tag types described in this document, the length and count |
| 180 | restrictions are based on the current IP limitation of 40 octets for all |
| 181 | IP options. If the IP header is later expanded, then the length and count |
| 182 | restrictions specified in this document may increase to use the full area |
| 183 | provided for IP options. |
| 184 | |
| 185 | |
| 186 | 3.4.1 Tag Type Classes |
| 187 | |
| 188 | Tag classes consist of tag types that have common processing requirements |
| 189 | and support the same security policy. The three tags defined in this |
| 190 | Internet Draft belong to the Mandatory Access Control (MAC) Sensitivity |
| 191 | |
| 192 | |
| 193 | |
| 194 | Internet Draft, Expires 15 Jan 93 [PAGE 3] |
| 195 | |
| 196 | |
| 197 | |
| 198 | CIPSO INTERNET DRAFT 16 July, 1992 |
| 199 | |
| 200 | |
| 201 | |
| 202 | class and support the MAC Sensitivity security policy. |
| 203 | |
| 204 | |
| 205 | 3.4.2 Tag Type 1 |
| 206 | |
| 207 | This is referred to as the "bit-mapped" tag type. Tag type 1 is included |
| 208 | in the MAC Sensitivity tag type class. The format of this tag type is as |
| 209 | follows: |
| 210 | |
| 211 | +----------+----------+----------+----------+--------//---------+ |
| 212 | | 00000001 | LLLLLLLL | 00000000 | LLLLLLLL | CCCCCCCCCCCCCCCCC | |
| 213 | +----------+----------+----------+----------+--------//---------+ |
| 214 | |
| 215 | TAG TAG ALIGNMENT SENSITIVITY BIT MAP OF |
| 216 | TYPE LENGTH OCTET LEVEL CATEGORIES |
| 217 | |
| 218 | Figure 3. Tag Type 1 Format |
| 219 | |
| 220 | |
| 221 | 3.4.2.1 Tag Type |
| 222 | |
| 223 | This field is 1 octet in length and has a value of 1. |
| 224 | |
| 225 | |
| 226 | 3.4.2.2 Tag Length |
| 227 | |
| 228 | This field is 1 octet in length. It is the total length of the tag type |
| 229 | including the type and length fields. With the current IP header length |
| 230 | restriction of 40 bytes the value within this field is between 4 and 34. |
| 231 | |
| 232 | |
| 233 | 3.4.2.3 Alignment Octet |
| 234 | |
| 235 | This field is 1 octet in length and always has the value of 0. Its purpose |
| 236 | is to align the category bitmap field on an even octet boundary. This will |
| 237 | speed many implementations including router implementations. |
| 238 | |
| 239 | |
| 240 | 3.4.2.4 Sensitivity Level |
| 241 | |
| 242 | This field is 1 octet in length. Its value is from 0 to 255. The values |
| 243 | are ordered with 0 being the minimum value and 255 representing the maximum |
| 244 | value. |
| 245 | |
| 246 | |
| 247 | 3.4.2.5 Bit Map of Categories |
| 248 | |
| 249 | The length of this field is variable and ranges from 0 to 30 octets. This |
| 250 | provides representation of categories 0 to 239. The ordering of the bits |
| 251 | is left to right or MSB to LSB. For example category 0 is represented by |
| 252 | the most significant bit of the first byte and category 15 is represented |
| 253 | by the least significant bit of the second byte. Figure 4 graphically |
| 254 | shows this ordering. Bit N is binary 1 if category N is part of the label |
| 255 | for the datagram, and bit N is binary 0 if category N is not part of the |
| 256 | label. Except for the optimized tag 1 format described in the next section, |
| 257 | |
| 258 | |
| 259 | |
| 260 | Internet Draft, Expires 15 Jan 93 [PAGE 4] |
| 261 | |
| 262 | |
| 263 | |
| 264 | CIPSO INTERNET DRAFT 16 July, 1992 |
| 265 | |
| 266 | |
| 267 | |
| 268 | minimal encoding SHOULD be used resulting in no trailing zero octets in the |
| 269 | category bitmap. |
| 270 | |
| 271 | octet 0 octet 1 octet 2 octet 3 octet 4 octet 5 |
| 272 | XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX . . . |
| 273 | bit 01234567 89111111 11112222 22222233 33333333 44444444 |
| 274 | number 012345 67890123 45678901 23456789 01234567 |
| 275 | |
| 276 | Figure 4. Ordering of Bits in Tag 1 Bit Map |
| 277 | |
| 278 | |
| 279 | 3.4.2.6 Optimized Tag 1 Format |
| 280 | |
| 281 | Routers work most efficiently when processing fixed length fields. To |
| 282 | support these routers there is an optimized form of tag type 1. The format |
| 283 | does not change. The only change is to the category bitmap which is set to |
| 284 | a constant length of 10 octets. Trailing octets required to fill out the 10 |
| 285 | octets are zero filled. Ten octets, allowing for 80 categories, was chosen |
| 286 | because it makes the total length of the CIPSO option 20 octets. If CIPSO |
| 287 | is the only option then the option will be full word aligned and additional |
| 288 | filler octets will not be required. |
| 289 | |
| 290 | |
| 291 | 3.4.3 Tag Type 2 |
| 292 | |
| 293 | This is referred to as the "enumerated" tag type. It is used to describe |
| 294 | large but sparsely populated sets of categories. Tag type 2 is in the MAC |
| 295 | Sensitivity tag type class. The format of this tag type is as follows: |
| 296 | |
| 297 | +----------+----------+----------+----------+-------------//-------------+ |
| 298 | | 00000010 | LLLLLLLL | 00000000 | LLLLLLLL | CCCCCCCCCCCCCCCCCCCCCCCCCC | |
| 299 | +----------+----------+----------+----------+-------------//-------------+ |
| 300 | |
| 301 | TAG TAG ALIGNMENT SENSITIVITY ENUMERATED |
| 302 | TYPE LENGTH OCTET LEVEL CATEGORIES |
| 303 | |
| 304 | Figure 5. Tag Type 2 Format |
| 305 | |
| 306 | |
| 307 | 3.4.3.1 Tag Type |
| 308 | |
| 309 | This field is one octet in length and has a value of 2. |
| 310 | |
| 311 | |
| 312 | 3.4.3.2 Tag Length |
| 313 | |
| 314 | This field is 1 octet in length. It is the total length of the tag type |
| 315 | including the type and length fields. With the current IP header length |
| 316 | restriction of 40 bytes the value within this field is between 4 and 34. |
| 317 | |
| 318 | |
| 319 | 3.4.3.3 Alignment Octet |
| 320 | |
| 321 | This field is 1 octet in length and always has the value of 0. Its purpose |
| 322 | is to align the category field on an even octet boundary. This will |
| 323 | |
| 324 | |
| 325 | |
| 326 | Internet Draft, Expires 15 Jan 93 [PAGE 5] |
| 327 | |
| 328 | |
| 329 | |
| 330 | CIPSO INTERNET DRAFT 16 July, 1992 |
| 331 | |
| 332 | |
| 333 | |
| 334 | speed many implementations including router implementations. |
| 335 | |
| 336 | |
| 337 | 3.4.3.4 Sensitivity Level |
| 338 | |
| 339 | This field is 1 octet in length. Its value is from 0 to 255. The values |
| 340 | are ordered with 0 being the minimum value and 255 representing the |
| 341 | maximum value. |
| 342 | |
| 343 | |
| 344 | 3.4.3.5 Enumerated Categories |
| 345 | |
| 346 | In this tag, categories are represented by their actual value rather than |
| 347 | by their position within a bit field. The length of each category is 2 |
| 348 | octets. Up to 15 categories may be represented by this tag. Valid values |
| 349 | for categories are 0 to 65534. Category 65535 is not a valid category |
| 350 | value. The categories MUST be listed in ascending order within the tag. |
| 351 | |
| 352 | |
| 353 | 3.4.4 Tag Type 5 |
| 354 | |
| 355 | This is referred to as the "range" tag type. It is used to represent |
| 356 | labels where all categories in a range, or set of ranges, are included |
| 357 | in the sensitivity label. Tag type 5 is in the MAC Sensitivity tag type |
| 358 | class. The format of this tag type is as follows: |
| 359 | |
| 360 | +----------+----------+----------+----------+------------//-------------+ |
| 361 | | 00000101 | LLLLLLLL | 00000000 | LLLLLLLL | Top/Bottom | Top/Bottom | |
| 362 | +----------+----------+----------+----------+------------//-------------+ |
| 363 | |
| 364 | TAG TAG ALIGNMENT SENSITIVITY CATEGORY RANGES |
| 365 | TYPE LENGTH OCTET LEVEL |
| 366 | |
| 367 | Figure 6. Tag Type 5 Format |
| 368 | |
| 369 | |
| 370 | 3.4.4.1 Tag Type |
| 371 | |
| 372 | This field is one octet in length and has a value of 5. |
| 373 | |
| 374 | |
| 375 | 3.4.4.2 Tag Length |
| 376 | |
| 377 | This field is 1 octet in length. It is the total length of the tag type |
| 378 | including the type and length fields. With the current IP header length |
| 379 | restriction of 40 bytes the value within this field is between 4 and 34. |
| 380 | |
| 381 | |
| 382 | 3.4.4.3 Alignment Octet |
| 383 | |
| 384 | This field is 1 octet in length and always has the value of 0. Its purpose |
| 385 | is to align the category range field on an even octet boundary. This will |
| 386 | speed many implementations including router implementations. |
| 387 | |
| 388 | |
| 389 | |
| 390 | |
| 391 | |
| 392 | Internet Draft, Expires 15 Jan 93 [PAGE 6] |
| 393 | |
| 394 | |
| 395 | |
| 396 | CIPSO INTERNET DRAFT 16 July, 1992 |
| 397 | |
| 398 | |
| 399 | |
| 400 | 3.4.4.4 Sensitivity Level |
| 401 | |
| 402 | This field is 1 octet in length. Its value is from 0 to 255. The values |
| 403 | are ordered with 0 being the minimum value and 255 representing the maximum |
| 404 | value. |
| 405 | |
| 406 | |
| 407 | 3.4.4.5 Category Ranges |
| 408 | |
| 409 | A category range is a 4 octet field comprised of the 2 octet index of the |
| 410 | highest numbered category followed by the 2 octet index of the lowest |
| 411 | numbered category. These range endpoints are inclusive within the range of |
| 412 | categories. All categories within a range are included in the sensitivity |
| 413 | label. This tag may contain a maximum of 7 category pairs. The bottom |
| 414 | category endpoint for the last pair in the tag MAY be omitted and SHOULD be |
| 415 | assumed to be 0. The ranges MUST be non-overlapping and be listed in |
| 416 | descending order. Valid values for categories are 0 to 65534. Category |
| 417 | 65535 is not a valid category value. |
| 418 | |
| 419 | |
| 420 | 3.4.5 Minimum Requirements |
| 421 | |
| 422 | A CIPSO implementation MUST be capable of generating at least tag type 1 in |
| 423 | the non-optimized form. In addition, a CIPSO implementation MUST be able |
| 424 | to receive any valid tag type 1 even those using the optimized tag type 1 |
| 425 | format. |
| 426 | |
| 427 | |
| 428 | 4. Configuration Parameters |
| 429 | |
| 430 | The configuration parameters defined below are required for all CIPSO hosts, |
| 431 | gateways, and routers that support multiple sensitivity labels. A CIPSO |
| 432 | host is defined to be the origination or destination system for an IP |
| 433 | datagram. A CIPSO gateway provides IP routing services between two or more |
| 434 | IP networks and may be required to perform label translations between |
| 435 | networks. A CIPSO gateway may be an enhanced CIPSO host or it may just |
| 436 | provide gateway services with no end system CIPSO capabilities. A CIPSO |
| 437 | router is a dedicated IP router that routes IP datagrams between two or more |
| 438 | IP networks. |
| 439 | |
| 440 | An implementation of CIPSO on a host MUST have the capability to reject a |
| 441 | datagram for reasons that the information contained can not be adequately |
| 442 | protected by the receiving host or if acceptance may result in violation of |
| 443 | the host or network security policy. In addition, a CIPSO gateway or router |
| 444 | MUST be able to reject datagrams going to networks that can not provide |
| 445 | adequate protection or may violate the network's security policy. To |
| 446 | provide this capability the following minimal set of configuration |
| 447 | parameters are required for CIPSO implementations: |
| 448 | |
| 449 | HOST_LABEL_MAX - This parameter contains the maximum sensitivity label that |
| 450 | a CIPSO host is authorized to handle. All datagrams that have a label |
| 451 | greater than this maximum MUST be rejected by the CIPSO host. This |
| 452 | parameter does not apply to CIPSO gateways or routers. This parameter need |
| 453 | not be defined explicitly as it can be implicitly derived from the |
| 454 | PORT_LABEL_MAX parameters for the associated interfaces. |
| 455 | |
| 456 | |
| 457 | |
| 458 | Internet Draft, Expires 15 Jan 93 [PAGE 7] |
| 459 | |
| 460 | |
| 461 | |
| 462 | CIPSO INTERNET DRAFT 16 July, 1992 |
| 463 | |
| 464 | |
| 465 | |
| 466 | |
| 467 | HOST_LABEL_MIN - This parameter contains the minimum sensitivity label that |
| 468 | a CIPSO host is authorized to handle. All datagrams that have a label less |
| 469 | than this minimum MUST be rejected by the CIPSO host. This parameter does |
| 470 | not apply to CIPSO gateways or routers. This parameter need not be defined |
| 471 | explicitly as it can be implicitly derived from the PORT_LABEL_MIN |
| 472 | parameters for the associated interfaces. |
| 473 | |
| 474 | PORT_LABEL_MAX - This parameter contains the maximum sensitivity label for |
| 475 | all datagrams that may exit a particular network interface port. All |
| 476 | outgoing datagrams that have a label greater than this maximum MUST be |
| 477 | rejected by the CIPSO system. The label within this parameter MUST be |
| 478 | less than or equal to the label within the HOST_LABEL_MAX parameter. This |
| 479 | parameter does not apply to CIPSO hosts that support only one network port. |
| 480 | |
| 481 | PORT_LABEL_MIN - This parameter contains the minimum sensitivity label for |
| 482 | all datagrams that may exit a particular network interface port. All |
| 483 | outgoing datagrams that have a label less than this minimum MUST be |
| 484 | rejected by the CIPSO system. The label within this parameter MUST be |
| 485 | greater than or equal to the label within the HOST_LABEL_MIN parameter. |
| 486 | This parameter does not apply to CIPSO hosts that support only one network |
| 487 | port. |
| 488 | |
| 489 | PORT_DOI - This parameter is used to assign a DOI identifier value to a |
| 490 | particular network interface port. All CIPSO labels within datagrams |
| 491 | going out this port MUST use the specified DOI identifier. All CIPSO |
| 492 | hosts and gateways MUST support either this parameter, the NET_DOI |
| 493 | parameter, or the HOST_DOI parameter. |
| 494 | |
| 495 | NET_DOI - This parameter is used to assign a DOI identifier value to a |
| 496 | particular IP network address. All CIPSO labels within datagrams destined |
| 497 | for the particular IP network MUST use the specified DOI identifier. All |
| 498 | CIPSO hosts and gateways MUST support either this parameter, the PORT_DOI |
| 499 | parameter, or the HOST_DOI parameter. |
| 500 | |
| 501 | HOST_DOI - This parameter is used to assign a DOI identifier value to a |
| 502 | particular IP host address. All CIPSO labels within datagrams destined for |
| 503 | the particular IP host will use the specified DOI identifier. All CIPSO |
| 504 | hosts and gateways MUST support either this parameter, the PORT_DOI |
| 505 | parameter, or the NET_DOI parameter. |
| 506 | |
| 507 | This list represents the minimal set of configuration parameters required |
| 508 | to be compliant. Implementors are encouraged to add to this list to |
| 509 | provide enhanced functionality and control. For example, many security |
| 510 | policies may require both incoming and outgoing datagrams be checked against |
| 511 | the port and host label ranges. |
| 512 | |
| 513 | |
| 514 | 4.1 Port Range Parameters |
| 515 | |
| 516 | The labels represented by the PORT_LABEL_MAX and PORT_LABEL_MIN parameters |
| 517 | MAY be in CIPSO or local format. Some CIPSO systems, such as routers, may |
| 518 | want to have the range parameters expressed in CIPSO format so that incoming |
| 519 | labels do not have to be converted to a local format before being compared |
| 520 | against the range. If multiple DOIs are supported by one of these CIPSO |
| 521 | |
| 522 | |
| 523 | |
| 524 | Internet Draft, Expires 15 Jan 93 [PAGE 8] |
| 525 | |
| 526 | |
| 527 | |
| 528 | CIPSO INTERNET DRAFT 16 July, 1992 |
| 529 | |
| 530 | |
| 531 | |
| 532 | systems then multiple port range parameters would be needed, one set for |
| 533 | each DOI supported on a particular port. |
| 534 | |
| 535 | The port range will usually represent the total set of labels that may |
| 536 | exist on the logical network accessed through the corresponding network |
| 537 | interface. It may, however, represent a subset of these labels that are |
| 538 | allowed to enter the CIPSO system. |
| 539 | |
| 540 | |
| 541 | 4.2 Single Label CIPSO Hosts |
| 542 | |
| 543 | CIPSO implementations that support only one label are not required to |
| 544 | support the parameters described above. These limited implementations are |
| 545 | only required to support a NET_LABEL parameter. This parameter contains |
| 546 | the CIPSO label that may be inserted in datagrams that exit the host. In |
| 547 | addition, the host MUST reject any incoming datagram that has a label which |
| 548 | is not equivalent to the NET_LABEL parameter. |
| 549 | |
| 550 | |
| 551 | 5. Handling Procedures |
| 552 | |
| 553 | This section describes the processing requirements for incoming and |
| 554 | outgoing IP datagrams. Just providing the correct CIPSO label format |
| 555 | is not enough. Assumptions will be made by one system on how a |
| 556 | receiving system will handle the CIPSO label. Wrong assumptions may |
| 557 | lead to non-interoperability or even a security incident. The |
| 558 | requirements described below represent the minimal set needed for |
| 559 | interoperability and that provide users some level of confidence. |
| 560 | Many other requirements could be added to increase user confidence, |
| 561 | however at the risk of restricting creativity and limiting vendor |
| 562 | participation. |
| 563 | |
| 564 | |
| 565 | 5.1 Input Procedures |
| 566 | |
| 567 | All datagrams received through a network port MUST have a security label |
| 568 | associated with them, either contained in the datagram or assigned to the |
| 569 | receiving port. Without this label the host, gateway, or router will not |
| 570 | have the information it needs to make security decisions. This security |
| 571 | label will be obtained from the CIPSO if the option is present in the |
| 572 | datagram. See section 4.1.2 for handling procedures for unlabeled |
| 573 | datagrams. This label will be compared against the PORT (if appropriate) |
| 574 | and HOST configuration parameters defined in section 3. |
| 575 | |
| 576 | If any field within the CIPSO option, such as the DOI identifier, is not |
| 577 | recognized the IP datagram is discarded and an ICMP "parameter problem" |
| 578 | (type 12) is generated and returned. The ICMP code field is set to "bad |
| 579 | parameter" (code 0) and the pointer is set to the start of the CIPSO field |
| 580 | that is unrecognized. |
| 581 | |
| 582 | If the contents of the CIPSO are valid but the security label is |
| 583 | outside of the configured host or port label range, the datagram is |
| 584 | discarded and an ICMP "destination unreachable" (type 3) is generated |
| 585 | and returned. The code field of the ICMP is set to "communication with |
| 586 | destination network administratively prohibited" (code 9) or to |
| 587 | |
| 588 | |
| 589 | |
| 590 | Internet Draft, Expires 15 Jan 93 [PAGE 9] |
| 591 | |
| 592 | |
| 593 | |
| 594 | CIPSO INTERNET DRAFT 16 July, 1992 |
| 595 | |
| 596 | |
| 597 | |
| 598 | "communication with destination host administratively prohibited" |
| 599 | (code 10). The value of the code field used is dependent upon whether |
| 600 | the originator of the ICMP message is acting as a CIPSO host or a CIPSO |
| 601 | gateway. The recipient of the ICMP message MUST be able to handle either |
| 602 | value. The same procedure is performed if a CIPSO can not be added to an |
| 603 | IP packet because it is too large to fit in the IP options area. |
| 604 | |
| 605 | If the error is triggered by receipt of an ICMP message, the message |
| 606 | is discarded and no response is permitted (consistent with general ICMP |
| 607 | processing rules). |
| 608 | |
| 609 | |
| 610 | 5.1.1 Unrecognized tag types |
| 611 | |
| 612 | The default condition for any CIPSO implementation is that an |
| 613 | unrecognized tag type MUST be treated as a "parameter problem" and |
| 614 | handled as described in section 4.1. A CIPSO implementation MAY allow |
| 615 | the system administrator to identify tag types that may safely be |
| 616 | ignored. This capability is an allowable enhancement, not a |
| 617 | requirement. |
| 618 | |
| 619 | |
| 620 | 5.1.2 Unlabeled Packets |
| 621 | |
| 622 | A network port may be configured to not require a CIPSO label for all |
| 623 | incoming datagrams. For this configuration a CIPSO label must be |
| 624 | assigned to that network port and associated with all unlabeled IP |
| 625 | datagrams. This capability might be used for single level networks or |
| 626 | networks that have CIPSO and non-CIPSO hosts and the non-CIPSO hosts |
| 627 | all operate at the same label. |
| 628 | |
| 629 | If a CIPSO option is required and none is found, the datagram is |
| 630 | discarded and an ICMP "parameter problem" (type 12) is generated and |
| 631 | returned to the originator of the datagram. The code field of the ICMP |
| 632 | is set to "option missing" (code 1) and the ICMP pointer is set to 134 |
| 633 | (the value of the option type for the missing CIPSO option). |
| 634 | |
| 635 | |
| 636 | 5.2 Output Procedures |
| 637 | |
| 638 | A CIPSO option MUST appear only once in a datagram. Only one tag type |
| 639 | from the MAC Sensitivity class MAY be included in a CIPSO option. Given |
| 640 | the current set of defined tag types, this means that CIPSO labels at |
| 641 | first will contain only one tag. |
| 642 | |
| 643 | All datagrams leaving a CIPSO system MUST meet the following condition: |
| 644 | |
| 645 | PORT_LABEL_MIN <= CIPSO label <= PORT_LABEL_MAX |
| 646 | |
| 647 | If this condition is not satisfied the datagram MUST be discarded. |
| 648 | If the CIPSO system only supports one port, the HOST_LABEL_MIN and the |
| 649 | HOST_LABEL_MAX parameters MAY be substituted for the PORT parameters in |
| 650 | the above condition. |
| 651 | |
| 652 | The DOI identifier to be used for all outgoing datagrams is configured by |
| 653 | |
| 654 | |
| 655 | |
| 656 | Internet Draft, Expires 15 Jan 93 [PAGE 10] |
| 657 | |
| 658 | |
| 659 | |
| 660 | CIPSO INTERNET DRAFT 16 July, 1992 |
| 661 | |
| 662 | |
| 663 | |
| 664 | the administrator. If port level DOI identifier assignment is used, then |
| 665 | the PORT_DOI configuration parameter MUST contain the DOI identifier to |
| 666 | use. If network level DOI assignment is used, then the NET_DOI parameter |
| 667 | MUST contain the DOI identifier to use. And if host level DOI assignment |
| 668 | is employed, then the HOST_DOI parameter MUST contain the DOI identifier |
| 669 | to use. A CIPSO implementation need only support one level of DOI |
| 670 | assignment. |
| 671 | |
| 672 | |
| 673 | 5.3 DOI Processing Requirements |
| 674 | |
| 675 | A CIPSO implementation MUST support at least one DOI and SHOULD support |
| 676 | multiple DOIs. System and network administrators are cautioned to |
| 677 | ensure that at least one DOI is common within an IP network to allow for |
| 678 | broadcasting of IP datagrams. |
| 679 | |
| 680 | CIPSO gateways MUST be capable of translating a CIPSO option from one |
| 681 | DOI to another when forwarding datagrams between networks. For |
| 682 | efficiency purposes this capability is only a desired feature for CIPSO |
| 683 | routers. |
| 684 | |
| 685 | |
| 686 | 5.4 Label of ICMP Messages |
| 687 | |
| 688 | The CIPSO label to be used on all outgoing ICMP messages MUST be equivalent |
| 689 | to the label of the datagram that caused the ICMP message. If the ICMP was |
| 690 | generated due to a problem associated with the original CIPSO label then the |
| 691 | following responses are allowed: |
| 692 | |
| 693 | a. Use the CIPSO label of the original IP datagram |
| 694 | b. Drop the original datagram with no return message generated |
| 695 | |
| 696 | In most cases these options will have the same effect. If you can not |
| 697 | interpret the label or if it is outside the label range of your host or |
| 698 | interface then an ICMP message with the same label will probably not be |
| 699 | able to exit the system. |
| 700 | |
| 701 | |
| 702 | 6. Assignment of DOI Identifier Numbers = |
| 703 | |
| 704 | Requests for assignment of a DOI identifier number should be addressed to |
| 705 | the Internet Assigned Numbers Authority (IANA). |
| 706 | |
| 707 | |
| 708 | 7. Acknowledgements |
| 709 | |
| 710 | Much of the material in this RFC is based on (and copied from) work |
| 711 | done by Gary Winiger of Sun Microsystems and published as Commercial |
| 712 | IP Security Option at the INTEROP 89, Commercial IPSO Workshop. |
| 713 | |
| 714 | |
| 715 | 8. Author's Address |
| 716 | |
| 717 | To submit mail for distribution to members of the IETF CIPSO Working |
| 718 | Group, send mail to: cipso@wdl1.wdl.loral.com. |
| 719 | |
| 720 | |
| 721 | |
| 722 | Internet Draft, Expires 15 Jan 93 [PAGE 11] |
| 723 | |
| 724 | |
| 725 | |
| 726 | CIPSO INTERNET DRAFT 16 July, 1992 |
| 727 | |
| 728 | |
| 729 | |
| 730 | |
| 731 | To be added to or deleted from this distribution, send mail to: |
| 732 | cipso-request@wdl1.wdl.loral.com. |
| 733 | |
| 734 | |
| 735 | 9. References |
| 736 | |
| 737 | RFC 1038, "Draft Revised IP Security Option", M. St. Johns, IETF, January |
| 738 | 1988. |
| 739 | |
| 740 | RFC 1108, "U.S. Department of Defense Security Options |
| 741 | for the Internet Protocol", Stephen Kent, IAB, 1 March, 1991. |
| 742 | |
| 743 | |
| 744 | |
| 745 | |
| 746 | |
| 747 | |
| 748 | |
| 749 | |
| 750 | |
| 751 | |
| 752 | |
| 753 | |
| 754 | |
| 755 | |
| 756 | |
| 757 | |
| 758 | |
| 759 | |
| 760 | |
| 761 | |
| 762 | |
| 763 | |
| 764 | |
| 765 | |
| 766 | |
| 767 | |
| 768 | |
| 769 | |
| 770 | |
| 771 | |
| 772 | |
| 773 | |
| 774 | |
| 775 | |
| 776 | |
| 777 | |
| 778 | |
| 779 | |
| 780 | |
| 781 | |
| 782 | |
| 783 | |
| 784 | |
| 785 | |
| 786 | |
| 787 | |
| 788 | Internet Draft, Expires 15 Jan 93 [PAGE 12] |
| 789 | |
| 790 | |
| 791 | |