1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 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
|
<pre>Network Working Group J. Walker
Request for Comments: 4261 A. Kulkarni, Ed.
Updates: <a href="./rfc2748">2748</a> Intel Corp.
Category: Standards Track December 2005
<span class="h1">Common Open Policy Service (COPS)</span>
<span class="h1">Over Transport Layer Security (TLS)</span>
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
This document describes how to use Transport Layer Security (TLS) to
secure Common Open Policy Service (COPS) connections over the
Internet.
This document also updates <a href="./rfc2748">RFC 2748</a> by modifying the contents of the
Client-Accept message.
<span class="grey">Walker & Kulkarni Standards Track [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
Table Of Contents
<a href="#section-1">1</a>. Introduction ....................................................<a href="#page-2">2</a>
<a href="#section-2">2</a>. COPS Over TLS ...................................................<a href="#page-3">3</a>
<a href="#section-3">3</a>. Separate Ports versus Upward Negotiation ........................<a href="#page-3">3</a>
<a href="#section-4">4</a>. COPS/TLS Objects and Error codes ................................<a href="#page-4">4</a>
<a href="#section-4.1">4.1</a>. The TLS Message Integrity Object (Integrity-TLS) ...........<a href="#page-4">4</a>
<a href="#section-4.2">4.2</a>. Error Codes ................................................<a href="#page-4">4</a>
<a href="#section-5">5</a>. COPS/TLS Secure Connection Initiation ...........................<a href="#page-5">5</a>
<a href="#section-5.1">5.1</a>. PEP Initiated Security Negotiation .........................<a href="#page-5">5</a>
<a href="#section-5.2">5.2</a>. PDP Initiated Security Negotiation .........................<a href="#page-6">6</a>
<a href="#section-6">6</a>. Connection Closure ..............................................<a href="#page-7">7</a>
<a href="#section-6.1">6.1</a>. PEP System Behavior ........................................<a href="#page-7">7</a>
<a href="#section-6.2">6.2</a>. PDP System Behavior ........................................<a href="#page-8">8</a>
<a href="#section-7">7</a>. Endpoint Identification and Access Control ......................<a href="#page-8">8</a>
<a href="#section-7.1">7.1</a>. PEP Identity ...............................................<a href="#page-9">9</a>
<a href="#section-7.2">7.2</a>. PDP Identity ...............................................<a href="#page-9">9</a>
<a href="#section-8">8</a>. Cipher Suite Requirements ......................................<a href="#page-10">10</a>
<a href="#section-9">9</a>. Backward Compatibility .........................................<a href="#page-10">10</a>
<a href="#section-10">10</a>. IANA Considerations ...........................................<a href="#page-10">10</a>
<a href="#section-11">11</a>. Security Considerations .......................................<a href="#page-11">11</a>
<a href="#section-12">12</a>. Acknowledgements ..............................................<a href="#page-11">11</a>
<a href="#section-13">13</a>. References ....................................................<a href="#page-12">12</a>
<a href="#section-13.1">13.1</a>. Normative References .....................................<a href="#page-12">12</a>
<a href="#section-13.2">13.2</a>. Informative References ...................................<a href="#page-12">12</a>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
COPS [<a href="./rfc2748" title=""The COPS (Common Open Policy Service) Protocol"">RFC2748</a>] was designed to distribute clear-text policy
information from a centralized Policy Decision Point (PDP) to a set
of Policy Enforcement Points (PEP) in the Internet. COPS provides
its own security mechanisms to protect the per-hop integrity of the
deployed policy. However, the use of COPS for sensitive applications
(e.g., some types of security policy distribution) requires
additional security measures, such as data confidentiality. This is
because some organizations find it necessary to hide some or all of
their security policies, e.g., because policy distribution to devices
such as mobile platforms can cross domain boundaries.
TLS [<a href="./rfc2246" title=""The TLS Protocol Version 1.0"">RFC2246</a>] was designed to provide channel-oriented security. TLS
standardizes SSL and may be used with any connection-oriented
service. TLS provides mechanisms for both one- and two-way
authentication, dynamic session keying, and data stream privacy and
integrity.
This document describes how to use COPS over TLS. "COPS over TLS" is
abbreviated COPS/TLS.
<span class="grey">Walker & Kulkarni Standards Track [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
Glossary
COPS - Common Open Policy Service. See [<a href="./rfc2748" title=""The COPS (Common Open Policy Service) Protocol"">RFC2748</a>].
COPS/TCP - A plain-vanilla implementation of COPS.
COPS/TLS - A secure implementation of COPS using TLS.
PDP - Policy Decision Point. Also referred to as the Policy Server.
See [<a href="./rfc2753" title=""A Framework for Policy-based Admission Control"">RFC2753</a>].
PEP - Policy Enforcement Point. Also referred to as the Policy
Client. See [<a href="./rfc2753" title=""A Framework for Policy-based Admission Control"">RFC2753</a>].
Conventions used in this document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <a href="./rfc2119">RFC 2119</a> [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119</a>].
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. COPS Over TLS</span>
COPS/TLS is very simple: use COPS over TLS similar to how you would
use COPS over TCP (COPS/TCP). Apart from a specific procedure used
to initialize the connection, there is no difference between COPS/TLS
and COPS/TCP.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Separate Ports versus Upward Negotiation</span>
There are two ways in which insecure and secure versions of the same
protocol can be run simultaneously.
In the first method, the secure version of the protocol is also
allocated a well-known port. This strategy of having well-known port
numbers for both, the secure and insecure versions, is known as
'Separate Ports'. The clients requiring security can simply connect
to the well-known secure port. This method is easy to implement,
with no modifications needed to existing insecure implementations.
The disadvantage, however, is that it doesn't scale well, because a
new port is required for each secure implementation. More problems
with this approach have been listed in [<a href="./rfc2595" title=""Using TLS with IMAP, POP3 and ACAP"">RFC2595</a>].
The second method is known as 'Upward Negotiation'. In this method,
the secure and insecure versions of the protocol run on the same
port. The client connects to the server, both discover each others'
capabilities, and start security negotiations if desired. This
method usually requires some changes to the protocol being secured.
<span class="grey">Walker & Kulkarni Standards Track [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
In view of the many issues with the Separate Ports approach, the
authors have decided to use the Upward Negotiation method for
COPS/TLS.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. COPS/TLS Objects and Error codes</span>
This section describes the COPS objects and error codes needed to
support COPS/TLS.
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. The TLS Message Integrity Object (Integrity-TLS)</span>
The TLS Integrity object is used by the PDP and the PEP to start the
TLS negotiation. This object should be included only in the Client-
Open or Client-Accept messages. It MUST NOT be included in any other
COPS message.
0 1 2 3
+----------+----------+----------+----------+
| Length (Octets) | C-Num=16 | C-Type=2 |
+----------+----------+----------+----------+
| //////// | Flags |
+----------+----------+----------+----------+
Note: //// implies the field is reserved, set to 0, and should
be ignored on receipt.
Flags: 16 bits
0x01 = StartTLS
This flag indicates that the sender of the message
wishes to initiate a TLS handshake.
The Client-Type of any message containing this object MUST be 0.
Client-Type 0 is used to negotiate COPS connection level security and
must only be used during the connection establishment phase. Please
refer to <a href="./rfc2748#section-4.1">section 4.1 of [RFC2748]</a> for more details.
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. Error Codes</span>
This section uses the error codes described in <a href="#section-2.2.8">section 2.2.8</a> (Error
Object) of [<a href="./rfc2748" title=""The COPS (Common Open Policy Service) Protocol"">RFC2748</a>].
Error Code: 13= Unknown COPS Object:
<span class="grey">Walker & Kulkarni Standards Track [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
Sub-code (octet 2) contains the unknown object's C-Num, and (octet 3)
contains unknown object's C-Type. If the PEP or PDP does not support
TLS, the C-Num specified MUST be 16 and the C-Type MUST be 2. This
demonstrates that the TLS version of the Integrity object is not
known.
This error code MUST be used by either PEP or PDP to indicate a
security-related connection closure if it cannot support a TLS
connection for the COPS protocol.
If the PDP wishes to negotiate a different security mechanism than
requested by the PEP in the Client-Open, it MUST send the following
error code:
Error Code: 15= Authentication Required
Where the Sub-code (octet 2) contains the C-Num=16 value for the
Integrity Object and (octet 3) MUST specify the PDP
required/preferred Integrity object C-Type. If the server does not
support any form of COPS-Security, it MUST set the Sub-code (octet 2)
to 16 and (octet 3) to zero instead, signifying that no type of the
Integrity object is supported.
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. COPS/TLS Secure Connection Initiation</span>
Security negotiation may be initiated by either the PDP or the PEP.
The PEP can initiate a negotiation via a Client-Open message, while a
PDP can initiate a negotiation via a Client-Accept message.
Once the TLS connection is established, all COPS data MUST be sent as
TLS "application data".
<span class="h3"><a class="selflink" id="section-5.1" href="#section-5.1">5.1</a>. PEP Initiated Security Negotiation</span>
A PEP MAY initiate a TLS security negotiation with a PDP using the
Client-Open message. To do this, the Client-Open message MUST have a
Client-Type of 0 and MUST include the Integrity-TLS object.
Upon receiving the Client-Open message, the PDP SHOULD respond with a
Client-Accept message containing the Integrity-TLS object.
Note that in order to carry the Integrity-TLS object, the contents of
the Client-Accept message defined in <a href="./rfc2748#section-3.7">section 3.7 of [RFC2748]</a> need
not change, except that the C-Type of the integrity object contained
there-in should now be C-Type=2. For Example:
<span class="grey">Walker & Kulkarni Standards Track [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
<Client-Accept> ::= <Common Header>
<KA Timer>
[<ACCT Timer>]
[<Integrity (C-Num=16, C-Type=2)>]
Note also that this new format of the Client-Accept message does not
replace or obsolete the existing Client-Accept message format, which
can continue to be used for non-secure COPS session negotiations.
Upon receiving the appropriate Client-Accept message, the PEP SHOULD
initiate the TLS handshake.
The message exchange is as follows:
C: Client-Open (Client-Type = 0, Integrity-TLS)
S: Client-Accept (Client-Type = 0, Integrity-TLS)
<TLS handshake>
C/S: <...further messages...>
In case the PDP does not wish to open a secure connection with the
PEP, it MUST reply with a Client-Close message and close the
connection. The Client-Close message MUST include the error code 15=
Authentication required, with the Sub-code (octet 2) set to 16 for
the Integrity object's C-Num, and (octet 3) set to the C-Type
corresponding to the server's preferred Integrity type, or zero for
no security.
A PEP requiring the Integrity-TLS object in a Client-Accept message
MUST close the connection if the Integrity-TLS object is missing.
The ensuing Client-Close message MUST include the error code 15=
Authentication required, with the Sub-code (octet 2) containing the
required Integrity object's C-Num=16, and (octet 3) containing the
required Integrity object's C-Type=2.
<span class="h3"><a class="selflink" id="section-5.2" href="#section-5.2">5.2</a>. PDP Initiated Security Negotiation</span>
The PEP initially opens a TCP connection with the PDP on the standard
COPS port and sends a Client-Open message. This Client-Open message
MUST have a Client-Type of 0.
The PDP SHOULD then reply with a Client-Accept message. In order to
signal the PEP to start the TLS handshake, the PDP MUST include the
Integrity-TLS object in the Client-Accept message.
Upon receiving the Client-Accept message with the Integrity-TLS
object, the PEP SHOULD initiate the TLS handshake. If for any reason
the PEP cannot initiate the handshake, it MUST close the connection.
<span class="grey">Walker & Kulkarni Standards Track [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
The message exchange is as follows:
C: Client-Open (Client-Type = 0)
S: Client-Accept (Client-Type = 0, Integrity-TLS)
<TLS handshake>
C/S: <...further messages...>
After receiving the Client-Accept, the PEP MUST NOT send any messages
until the TLS handshake is complete. Upon receiving any message from
the PEP before the TLS handshake starts, the PDP MUST issue a
Client-Close message with an error code 15= Authentication Required.
A PDP wishing to negotiate security with a PEP having an existing
non-secure connection MUST send a Client-Close with the error code
15= Authentication required, with the Sub-code (octet 2) containing
the required Integrity object's C-Num=16, and (octet 3) containing
the required Integrity object's C-Type=2, and then wait for the PEP
to reconnect. Upon receiving the Client-Open message, it SHOULD use
the Client-Accept message to initiate security negotiation.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Connection Closure</span>
TLS provides facilities to securely close its connections. Reception
of a valid closure alert assures an implementation that no further
data will arrive on that connection. The TLS specification requires
TLS implementations to initiate a closure alert exchange before
closing a connection. It also permits TLS implementations to close
connections without waiting to receive closure alerts from the peer,
provided they send their own first. A connection closed in this way
is known as an "incomplete close". TLS allows implementations to
reuse the session in this case, but COPS/TLS makes no use of this
capability.
A connection closed without first sending a closure alert is known as
a "premature close". Note that a premature close does not call into
question the security of the data already received, but simply
indicates that subsequent data might have been truncated. Because
TLS is oblivious to COPS message boundaries, it is necessary to
examine the COPS data itself (specifically the Message header) to
determine whether truncation occurred.
<span class="h3"><a class="selflink" id="section-6.1" href="#section-6.1">6.1</a>. PEP System Behavior</span>
PEP implementations MUST treat premature closes as errors and any
data received as potentially truncated. The COPS protocol allows the
PEP system to find out whether truncation took place. A PEP system
detecting an incomplete close SHOULD recover gracefully.
<span class="grey">Walker & Kulkarni Standards Track [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
PEP systems SHOULD send a closure alert before closing the
connection. PEPs unprepared to receive any more data MAY choose not
to wait for the PDP system's closure alert and simply close the
connection, thus generating an incomplete close on the PDP side.
<span class="h3"><a class="selflink" id="section-6.2" href="#section-6.2">6.2</a>. PDP System Behavior</span>
COPS permits a PEP to close the connection at any time, and requires
PDPs to recover gracefully. In particular, PDPs SHOULD be prepared
to receive an incomplete close from the PEP, since a PEP often shuts
down for operational reasons unrelated to the transfer of policy
information between the PEP and PDP.
Implementation note: The PDP ordinarily expects to be able to
signal the end of data by closing the connection. However, the
PEP may have already sent the closure alert and dropped the
connection.
PDP systems MUST attempt to initiate an exchange of closure alerts
with the PEP system before closing the connection. PDP systems MAY
close the connection after sending the closure alert, thus generating
an incomplete close on the PEP side.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. Endpoint Identification and Access Control</span>
All PEP implementations of COPS/TLS MUST support an access control
mechanism to identify authorized PDPs. This requirement provides a
level of assurance that the policy arriving at the PEP is actually
valid. PEP deployments SHOULD require the use of this access control
mechanism for operation of COPS over TLS. When access control is
enabled, the PEP implementation MUST NOT initiate COPS/TLS
connections to systems not authorized as PDPs by the access control
mechanism.
Similarly, PDP COPS/TLS implementations MUST support an access
control mechanism permitting them to restrict their services to
authorized PEP systems only. However, deployments MAY choose not to
use an access control mechanism at the PDP, as organizations might
not consider the types of policy being deployed as sensitive, and
therefore do not need to incur the expense of managing credentials
for the PEP systems. If access controls are used, however, the PDP
implementation MUST terminate COPS/TLS connections from unauthorized
PEP systems and log an error if an auditable logging mechanism is
present.
Implementations of COPS/TLS MUST use X.509 v3 certificates conforming
to [<a href="./rfc3280" title=""Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile"">RFC3280</a>] to identify PDP and PEP systems. COPS/TLS systems MUST
perform certificate verification processing conforming to [<a href="./rfc3280" title=""Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile"">RFC3280</a>].
<span class="grey">Walker & Kulkarni Standards Track [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
If a subjectAltName extension of type dNSName or iPAddress is present
in the PDP's certificate, it MUST be used as the PDP identity. If
both types are present, dNSName SHOULD be used as the PDP identity.
If neither type is present, the most specific Common Name field in
the Subject field of the certificate SHOULD be used.
Matching is performed using the matching rules specified by
[<a href="./rfc3280" title=""Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile"">RFC3280</a>]. If more than one identity of a given type is present in
the certificate (e.g., more than one dNSName in the subjectAltName
certificate extension), a match in any one of the provided identities
is acceptable. Generally, the COPS system uses the first name for
matching, except as noted below in the IP address checking
requirements.
<span class="h3"><a class="selflink" id="section-7.1" href="#section-7.1">7.1</a>. PEP Identity</span>
When PEP systems are not access controlled, the PDP does not need
external knowledge of what the PEP's identity ought to be and so
checks are neither possible nor necessary. In this case, there is no
requirement for PEP systems to register with a certificate authority,
and COPS over TLS uses one-way authentication, of the PDP to the PEP.
When PEP systems are access controlled, PEPs MUST be the subjects of
end entity certificates [<a href="./rfc3280" title=""Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile"">RFC3280</a>]. In this case, COPS over TLS uses
two-way authentication, and the PDP MUST perform the same identity
checks for the PEPs as described above for the PDP.
When access controls are in effect at the PDP, PDP implementations
MUST have a mechanism to securely acquire the trust anchor for each
authorized Certification Authority (CA) that issues certificates to
supported PEPs.
<span class="h3"><a class="selflink" id="section-7.2" href="#section-7.2">7.2</a>. PDP Identity</span>
Generally, COPS/TLS requests are generated by the PEP consulting
bootstrap policy information that identifies PDPs that the PEP is
authorized to connect to. This policy provides the PEP with the
hostname or IP address of the PDP. How this bootstrap policy
information arrives at the PEP is outside the scope of this document.
However, all PEP implementations MUST provide a mechanism to securely
deliver or configure the bootstrap policy.
All PEP implementations MUST be able to securely acquire the trust
anchor for each authorized Certification Authority (CA) that issues
PDP certificates. Also, the PEPs MUST support a mechanism to
securely acquire an access control list (ACL) or filter identifying
the set of authorized PDPs associated with each CA. Deployments must
take care to avoid circular dependencies in accessing trust anchors
<span class="grey">Walker & Kulkarni Standards Track [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
and ACLs. At a minimum, trust anchors and ACLs may be installed
manually.
PEP deployments that participate in multiple domains, such as those
on mobile platforms, MAY use different CAs and access control lists
in each domain.
If the PDP hostname or IP address is available via the bootstrap
policy, the PEP MUST check it against the PDP's identity as presented
in the PDP's TLS Certificate message.
In some cases, the bootstrap policy will identify the authorized PDP
only by an IP address of the PDP system. In this case, the
subjectAltName MUST be present in the certificate, and it MUST
include an iPAddress format matching the expected name of the policy
server.
If the hostname of the PDP does not match the identity in the
certificate, a PEP on a user-oriented system MUST either notify the
user (PEP systems MAY afford the user the opportunity to continue
with the connection in any case) or terminate the connection with a
bad certificate error. PEPs on unattended systems MUST log the error
to an appropriate audit log (if available) and MUST terminate the
connection with a bad certificate error. Unattended PEP systems MAY
provide a configuration setting that disables this check, but then
MUST provide a setting that enables it.
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. Cipher Suite Requirements</span>
Implementations MUST support the TLS_RSA_WITH_3DES_EDE_CBC_SHA cipher
suite. All other cipher suites are optional.
<span class="h2"><a class="selflink" id="section-9" href="#section-9">9</a>. Backward Compatibility</span>
The PEP and PDP SHOULD be backward compatible with peers that have
not been modified to support COPS/TLS. They SHOULD handle errors
generated in response to the Integrity-TLS object.
<span class="h2"><a class="selflink" id="section-10" href="#section-10">10</a>. IANA Considerations</span>
The IANA has added the following C-Num, C-Type combination for the
Integrity-TLS object to the registry at
<a href="http://www.iana">http://www.iana</a>.org/assignments/cops-parameters:
0x10 0x02 Message Integrity, Integrity-TLS [<a href="./rfc4261">RFC4261</a>]
<span class="grey">Walker & Kulkarni Standards Track [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
For Client-Type 0, the IANA has added the following Flags value for
the Integrity-TLS object:
0x01 = StartTLS
Further, for Client-Type 0, the IANA has added the following text for
Error Sub-Codes:
Error Code: 15
Error Sub-Code:
Octet 2: C-Num of the Integrity object
Octet 3: C-Type of the supported/preferred Integrity object or
Zero.
Error-Code Error-SubCode Description
Octet 2 Octet 3
---------------------------------------------------
15 16 0 No security
15 16 2 Integrity-TLS supported/preferred
Further values for the Flags field and the reserved field can only be
assigned by IETF Consensus rule, as defined in [<a href="./rfc2434" title="">RFC2434</a>].
<span class="h2"><a class="selflink" id="section-11" href="#section-11">11</a>. Security Considerations</span>
A COPS PDP and PEP MUST check the results of the TLS negotiation to
see whether an acceptable degree of authentication and privacy have
been achieved. If the negotiation has resulted in unacceptable
algorithms or key lengths, either side MAY choose to terminate the
connection.
A man-in-the-middle attack can be launched by deleting the
Integrity-TLS object or altering the Client-Open or Client-Accept
messages. If security is required, the PEP and PDP bootstrap policy
must specify this, and PEP and PDP implementations should reject
Client-Open or Client-Accept messages that fail to include an
Integrity-TLS object.
<span class="h2"><a class="selflink" id="section-12" href="#section-12">12</a>. Acknowledgements</span>
This document freely plagiarizes and adapts Eric Rescorla's similar
document [<a href="./rfc2818" title=""HTTP Over TLS"">RFC2818</a>] that specifies how HTTP runs over TLS.
Discussions with David Durham, Scott Hahn, and Ylian Sainte-Hillaire
also lead to improvements in this document.
The authors wish to thank Uri Blumenthal for doing a thorough
security review of the document.
<span class="grey">Walker & Kulkarni Standards Track [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
<span class="h2"><a class="selflink" id="section-13" href="#section-13">13</a>. References</span>
<span class="h3"><a class="selflink" id="section-13.1" href="#section-13.1">13.1</a>. Normative References</span>
[<a id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
[<a id="ref-RFC2748">RFC2748</a>] Durham, D., Boyle, J., Cohen, R., Herzog, S., Rajan, R.,
and A. Sastry, "The COPS (Common Open Policy Service)
Protocol", <a href="./rfc2748">RFC 2748</a>, January 2000.
[<a id="ref-RFC2753">RFC2753</a>] Yavatkar, R., Pendarakis, D., and R. Guerin, "A Framework
for Policy-based Admission Control", <a href="./rfc2753">RFC 2753</a>, January
2000.
[<a id="ref-RFC3280">RFC3280</a>] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet
X.509 Public Key Infrastructure Certificate and Certificate
Revocation List (CRL) Profile", <a href="./rfc3280">RFC 3280</a>, April 2002.
[<a id="ref-RFC2246">RFC2246</a>] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
<a href="./rfc2246">RFC 2246</a>, January 1999.
<span class="h3"><a class="selflink" id="section-13.2" href="#section-13.2">13.2</a>. Informative References</span>
[<a id="ref-RFC2818">RFC2818</a>] Rescorla, E., "HTTP Over TLS", <a href="./rfc2818">RFC 2818</a>, May 2000.
[<a id="ref-RFC2595">RFC2595</a>] Newman, C., "Using TLS with IMAP, POP3 and ACAP", <a href="./rfc2595">RFC 2595</a>,
June 1999.
[<a id="ref-RFC2434">RFC2434</a>] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", <a href="https://www.rfc-editor.org/bcp/bcp26">BCP 26</a>, <a href="./rfc2434">RFC 2434</a>,
October 1998.
<span class="grey">Walker & Kulkarni Standards Track [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
Authors' Addresses
Amol Kulkarni
Intel Corporation
2111 N.E. 25th Avenue
Hillsboro, OR 97214
USA
EMail: amol.kulkarni@intel.com
Jesse R. Walker
Intel Corporation
2111 N.E. 25th Avenue
Hillsboro, OR 97214
USA
EMail: jesse.walker@intel.com
<span class="grey">Walker & Kulkarni Standards Track [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc4261">RFC 4261</a> COPS Over TLS December 2005</span>
Full Copyright Statement
Copyright (C) The Internet Society (2005).
This document is subject to the rights, licenses and restrictions
contained in <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a>, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and <a href="https://www.rfc-editor.org/bcp/bcp79">BCP 79</a>.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
<a href="http://www.ietf.org/ipr">http://www.ietf.org/ipr</a>.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at ietf-
ipr@ietf.org.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Walker & Kulkarni Standards Track [Page 14]
</pre>
|