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>Internet Engineering Task Force (IETF) R. Kisteleki
Request for Comments: 7909 RIPE NCC
Updates: <a href="./rfc2622">2622</a>, <a href="./rfc4012">4012</a> B. Haberman
Category: Standards Track JHU APL
ISSN: 2070-1721 June 2016
<span class="h1">Securing Routing Policy Specification Language (RPSL) Objects</span>
<span class="h1">with Resource Public Key Infrastructure (RPKI) Signatures</span>
Abstract
This document describes a method that allows parties to
electronically sign Routing Policy Specification Language objects and
validate such electronic signatures. This allows relying parties to
detect accidental or malicious modifications of such objects. It
also allows parties who run Internet Routing Registries or similar
databases, but do not yet have authentication (based on Routing
Policy System Security) of the maintainers of certain objects, to
verify that the additions or modifications of such database objects
are done by the legitimate holder(s) of the Internet resources
mentioned in those objects. This document updates RFCs 2622 and 4012
to add the signature attribute to supported RPSL objects.
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in <a href="./rfc7841#section-2">Section 2 of RFC 7841</a>.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
<a href="http://www.rfc-editor.org/info/rfc7909">http://www.rfc-editor.org/info/rfc7909</a>.
<span class="grey">Kisteleki & Haberman Standards Track [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and the IETF Trust's Legal
Provisions Relating to IETF Documents
(<a href="http://trustee.ietf.org/license-info">http://trustee.ietf.org/license-info</a>) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
<a href="#section-1">1</a>. Introduction . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-3">3</a>
<a href="#section-2">2</a>. Signature Syntax and Semantics . . . . . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-2.1">2.1</a>. General Attributes and Meta Information . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-2.2">2.2</a>. Signed Attributes . . . . . . . . . . . . . . . . . . . . <a href="#page-5">5</a>
<a href="#section-2.3">2.3</a>. Storage of the Signature Data . . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-2.4">2.4</a>. Number Resource Coverage . . . . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-2.5">2.5</a>. Validity Time of the Signature . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-3">3</a>. Signature Creation and Validation Steps . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-3.1">3.1</a>. Canonicalization . . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-3.2">3.2</a>. Signature Creation . . . . . . . . . . . . . . . . . . . <a href="#page-8">8</a>
<a href="#section-3.3">3.3</a>. Signature Validation . . . . . . . . . . . . . . . . . . <a href="#page-9">9</a>
<a href="#section-4">4</a>. Signed Object Types and Set of Signed Attributes . . . . . . <a href="#page-9">9</a>
<a href="#section-5">5</a>. Keys and Certificates Used for Signature and Verification . . <a href="#page-11">11</a>
<a href="#section-6">6</a>. Security Considerations . . . . . . . . . . . . . . . . . . . <a href="#page-12">12</a>
<a href="#section-7">7</a>. References . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-12">12</a>
<a href="#section-7.1">7.1</a>. Normative References . . . . . . . . . . . . . . . . . . <a href="#page-12">12</a>
<a href="#section-7.2">7.2</a>. Informative References . . . . . . . . . . . . . . . . . <a href="#page-14">14</a>
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-14">14</a>
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-14">14</a>
<span class="grey">Kisteleki & Haberman Standards Track [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
Objects stored in resource databases, like the RIPE DB, are generally
protected by an authentication mechanism: anyone creating or
modifying an object in the database has to have proper authorization
to do so, and therefore has to go through an authentication procedure
(provide a password, certificate, email signature, etc.). However,
for objects transferred between resource databases, the
authentication is not guaranteed. This means that when a Routing
Policy Specification Language (RPSL) object is downloaded from a
database, the consumer can reasonably claim that the object is
authentic if it was locally created, but cannot make the same claim
for an object imported from a different database. Also, once such an
object is downloaded from the database, it becomes a simple (but
still structured) text file with no integrity protection. More
importantly, the authentication and integrity guarantees associated
with these objects do not always ensure that the entity that
generated them is authorized to make the assertions implied by the
data contained in the objects.
A potential use for resource certificates [<a href="./rfc6487" title=""A Profile for X.509 PKIX Resource Certificates"">RFC6487</a>] is to use them to
secure such (both imported and downloaded) database objects, by
applying a digital signature over the object contents in lieu of
methods such as Routing Policy System Security [<a href="./rfc2725" title=""Routing Policy System Security"">RFC2725</a>]. The signer
of such signed database objects MUST possess a relevant resource
certificate, which shows him/her as the legitimate holder of an
Internet number resource. This mechanism allows the users of such
database objects to verify that the contents are in fact produced by
the legitimate holder(s) of the Internet resources mentioned in those
objects. It also allows the signatures to cover whole RPSL objects,
or just selected attributes of them. In other words, a digital
signature created using the private key associated with a resource
certificate can offer object security in addition to the channel
security already present in most resource databases. Object security
in turn allows such objects to be hosted in different databases and
still be independently verifiable.
While the approach outlined in this document mandates the use of the
Resource Public Key Infrastructure (RPKI) for certificate
distribution, it is not dependent upon the RPKI for correct
functionality. Equivalent functionality can be achieved with a more
traditional Certification Authority (CA), using the extensions
described in [<a href="./rfc3779" title=""X.509 Extensions for IP Addresses and AS Identifiers"">RFC3779</a>] within the certificates, and the appropriate
trust anchor material to verify the digital signature.
<span class="grey">Kisteleki & Haberman Standards Track [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
The capitalized 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" 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>. Signature Syntax and Semantics</span>
When signing an RPSL object [<a href="./rfc2622" title=""Routing Policy Specification Language (RPSL)"">RFC2622</a>] [<a href="./rfc4012" title=""Routing Policy Specification Language next generation (RPSLng)"">RFC4012</a>], the input for the
signature process is transformed into a sequence of strings of ASCII
data. The approach is similar to the one used in Domain Key
Identified Mail (DKIM) [<a href="./rfc6376" title=""DomainKeys Identified Mail (DKIM) Signatures"">RFC6376</a>]. In the case of RPSL, the object to
be signed closely resembles an SMTP header, so it seems reasonable to
adapt DKIM's relevant features.
<span class="h3"><a class="selflink" id="section-2.1" href="#section-2.1">2.1</a>. General Attributes and Meta Information</span>
The digital signature associated with an RPSL object is itself a new
attribute named "signature". It consists of mandatory and optional
fields. These fields are structured in a sequence of name and value
pairs, separated by a semicolon ";" and a whitespace. Collectively,
these fields make up the value for the new "signature" attribute.
The "name" part of such a component is always a single ASCII
character that serves as an identifier; the value is an ASCII string
the contents of which depend on the field type. Mandatory fields
MUST appear exactly once, whereas optional fields MUST appear at most
once.
Mandatory fields of the "signature" attribute:
o Version of the signature (field "v"): This field MUST be set to
"rpkiv1" and MAY be the first field of the signature attribute to
simplify the parsing of the attributes' fields. The signature
format described in this document applies when the version field
is set to "rpkiv1". All the rest of the signature attributes are
defined by the value of the version field.
o Reference to the certificate corresponding to the private key used
to sign this object (field "c"): The value of this field MUST be a
URL of type "rsync" [<a href="./rfc5781" title=""The rsync URI Scheme"">RFC5781</a>] or "http(s)" [<a href="./rfc7230" title=""Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing"">RFC7230</a>] that points
to a specific resource certificate in an RPKI repository
[<a href="./rfc6481" title=""A Profile for Resource Certificate Repository Structure"">RFC6481</a>]. Any non URL-safe characters (including semicolon ";"
and plus "+") must be URL encoded [<a href="./rfc3986" title=""Uniform Resource Identifier (URI): Generic Syntax"">RFC3986</a>].
o Signature method (field "m"): What hash and signature algorithms
were used to create the signature. This specification follows the
algorithms defined in <a href="./rfc6485">RFC 6485</a> [<a href="./rfc6485" title=""The Profile for Algorithms and Key Sizes for Use in the Resource Public Key Infrastructure (RPKI)"">RFC6485</a>]. The algorithms are
referenced within the signature attribute by the ASCII names of
the algorithms.
<span class="grey">Kisteleki & Haberman Standards Track [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
o Time of signing (field "t"): The format of the value of this field
MUST be in the Internet Date/Time ABNF format [<a href="./rfc3339" title=""Date and Time on the Internet: Timestamps"">RFC3339</a>]. All
times MUST be converted to Universal Coordinated Time (UTC), i.e.,
the ABNF time-offset is always "Z".
o The signed attributes (field "a"): This is a list of attribute
names, separated by an ASCII "+" character (if more than one
attribute is enumerated). The list must include any attribute at
most once.
o The signature itself (field "b"): This MUST be the last field in
the list. The signature is the output of the signature algorithm
using the appropriate private key and the calculated hash value of
the object as inputs. The value of this field is the digital
signature in base64 encoding (<a href="./rfc4648#section-4">Section 4 of [RFC4648]</a>).
Optional fields of the "signature" attribute:
o Signature expiration time (field "x"): The format of the value of
this field MUST be in the Internet Date/Time format [<a href="./rfc3339" title=""Date and Time on the Internet: Timestamps"">RFC3339</a>].
All times MUST be represented in UTC.
<span class="h3"><a class="selflink" id="section-2.2" href="#section-2.2">2.2</a>. Signed Attributes</span>
One can look at an RPSL object as an (ordered) set of attributes,
each having a "key: value" syntax. Understanding this structure can
help in developing more flexible methods for applying digital
signatures.
Some of these attributes are automatically added by the database,
some are database-dependent, yet others do not carry operationally
important information. This specification allows the maintainer of
such an object to decide which attributes are important (signed) and
which are not (not signed), from among all the attributes of the
object; in other words, we define a way of including important
attributes while excluding irrelevant ones. Allowing the maintainer
of an object to select the attributes that are covered by the digital
signature achieves the goals established in <a href="#section-1">Section 1</a>.
The type of the object determines the minimum set of attributes that
MUST be signed. The signer MAY choose to sign additional attributes,
in order to provide integrity protection for those attributes too.
When verifying the signature of an object, the verifier has to check
whether the signature itself is valid, and whether all the specified
attributes are referenced in the signature. If not, the verifier
MUST reject the signature and treat the object as a regular, unsigned
RPSL object.
<span class="grey">Kisteleki & Haberman Standards Track [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
<span class="h3"><a class="selflink" id="section-2.3" href="#section-2.3">2.3</a>. Storage of the Signature Data</span>
The result of applying the signature mechanism once is exactly one
new attribute for the object. As an illustration, the structure of a
signed RPSL object is as follows:
attribute1: value1
attribute2: value2
attribute3: value3
...
signature: v=rpkiv1; c=rsync://.....; m=sha256WithRSAEncryption;
t=2014-12-31T23:59:60Z;
a=attribute1+attribute2+attribute3+...;
b=<base64 data>
<span class="h3"><a class="selflink" id="section-2.4" href="#section-2.4">2.4</a>. Number Resource Coverage</span>
Even if the signature over the object is valid according to the
signature validation rules, it may not be relevant to the object; it
also needs to cover the relevant Internet number resources mentioned
in the object.
Therefore, the Internet number resources present in [<a href="./rfc3779" title=""X.509 Extensions for IP Addresses and AS Identifiers"">RFC3779</a>]
extensions of the certificate referred to in the "c" field of the
signature MUST cover the resources in the primary key of the object
(e.g., value of the "aut-num:" attribute of an aut-num object, value
of the "inetnum:" attribute of an inetnum object, values of "route:",
and "origin:" attributes of a route object, etc.).
<span class="h3"><a class="selflink" id="section-2.5" href="#section-2.5">2.5</a>. Validity Time of the Signature</span>
The validity time interval of a signature is the intersection of the
validity time of the certificate used to verify the signature, the
"not before" time specified by the "t" field of the signature, and
the optional "not after" time specified by the "x" field of the
signature.
When checking multiple signatures, these checks are individually
applied to each signature.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Signature Creation and Validation Steps</span>
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. Canonicalization</span>
The notion of canonicalization is essential to digital signature
generation and validation whenever data representations may change
between a signer and one or more signature verifiers.
Canonicalization defines how one transforms a representation of data
<span class="grey">Kisteleki & Haberman Standards Track [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
into a series of bits for signature generation and verification. The
task of canonicalization is to make irrelevant differences in
representations of the same object, which would otherwise cause
signature verification to fail. Examples of this could be:
o data transformations applied by the databases that host these
objects (such as notational changes for IPv4/IPv6 prefixes,
automatic addition/modification of "changed" attributes, etc.)
o the difference of line terminators across different systems
This means that the destination database might change parts of the
submitted data after it was signed, which would cause signature
verification to fail. This document specifies strict
canonicalization rules to overcome this problem.
The following steps MUST be applied in order to achieve canonicalized
representation of an object, before the actual signature
(verification) process can begin:
1. Comments (anything beginning with a "#") MUST be omitted.
2. Any trailing whitespace MUST be omitted.
3. A multi-line attribute MUST be converted into its single-line
equivalent. This is accomplished by:
* Converting all line endings to a single blank space (ASCII
code 32).
* Concatenating all lines into a single line.
* Replacing the trailing blank space with a single new line
("\n", ASCII code 10).
4. Numerical fields MUST be converted to canonical representations.
These include:
* Date and time fields MUST be converted to UTC and MUST be
represented in the Internet Date/Time format [<a href="./rfc3339" title=""Date and Time on the Internet: Timestamps"">RFC3339</a>].
* AS numbers MUST be converted to ASPLAIN syntax [<a href="./rfc5396" title=""Textual Representation of Autonomous System (AS) Numbers"">RFC5396</a>].
* IPv6 addresses MUST be canonicalized as defined in [<a href="./rfc5952" title=""A Recommendation for IPv6 Address Text Representation"">RFC5952</a>].
* IPv4 addresses MUST be represented as the ipv4-address type
defined by RPSL [<a href="./rfc2622" title=""Routing Policy Specification Language (RPSL)"">RFC2622</a>].
<span class="grey">Kisteleki & Haberman Standards Track [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
* All IP prefixes (IPv4 and IPv6) MUST be represented in
Classless Inter-Domain Routing (CIDR) notation [<a href="./rfc4632" title=""Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan"">RFC4632</a>].
5. All ranges, lists, or sets of numerical fields are represented
using the appropriate RPSL attribute and each numerical element
contained within those attributes MUST conform to the
canonicalization rules in this document. The ordering of values
within such fields MUST be maintained during database transfers.
6. The name of each attribute MUST be converted into lower case, and
MUST be kept as part of the attribute line.
7. Tab characters ("\t", ASCII code 09) MUST be converted into
spaces.
8. Multiple whitespaces MUST be collapsed into a single space (" ",
ASCII code 32) character.
9. All line endings MUST be converted into a single new line ("\n",
ASCII code 10) character, (thus avoiding CR vs. CRLF
differences).
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. Signature Creation</span>
Given an RPSL object and corresponding certificate, in order to
create the digital signature, the following steps MUST be performed:
1. Create a list of attribute names referring to the attributes that
will be signed (contents of the "a" field). The minimum set of
these attributes is determined by the object type; the signer MAY
select additional attributes.
2. Arrange the selected attributes according to the selection
sequence specified in the "a" field as above, omitting all
attributes that will not be signed.
3. Construct the new "signature" attribute, with all its fields,
leaving the value of the "b" field empty.
4. Apply canonicalization rules to the result (including the
"signature" attribute).
5. Create the signature over the results of the canonicalization
process (according to the signature and hash algorithms specified
in the "m" field of the signature attribute).
6. Insert the base64-encoded value of the signature as the value of
the "b" field.
<span class="grey">Kisteleki & Haberman Standards Track [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
7. Append the resulting "signature" attribute to the original
object.
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Signature Validation</span>
In order to validate a signature over such an object, the following
steps MUST be performed:
1. Verify the syntax of the "signature" attribute (i.e., whether it
contains the mandatory and optional components and the syntax of
these fields matches the specification as described in
<a href="#section-2.1">Section 2.1</a>).
2. Fetch the certificate referred to in the "c" field of the
"signature" attribute, and check its validity using the steps
described in [<a href="./rfc6487" title=""A Profile for X.509 PKIX Resource Certificates"">RFC6487</a>].
3. Extract the list of attributes that were signed using the signer
from the "a" field of the "signature" attribute.
4. Verify that the list of signed attributes includes the minimum
set of attributes for that object type.
5. Arrange the selected attributes according to the selection
sequence provided in the value of the "a" field, omitting all
unsigned attributes.
6. Replace the value of the signature field "b" of the "signature"
attribute with an empty string.
7. Apply the canonicalization procedure to the selected attributes
(including the "signature" attribute).
8. Check the validity of the signature using the signature algorithm
specified in the "m" field of the signature attribute, the public
key contained in the certificate mentioned in the "c" field of
the signature, the signature value specified in the "b" field of
the signature attribute, and the output of the canonicalization
process.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Signed Object Types and Set of Signed Attributes</span>
This section describes a list of object types that MAY be signed
using this approach. For each object type, the set of attributes
that MUST be signed for these object types (the minimum set noted in
<a href="#section-3.3">Section 3.3</a> is enumerated.
<span class="grey">Kisteleki & Haberman Standards Track [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
This list generally excludes attributes that are used to maintain
referential integrity in the databases that carry these objects,
since these usually make sense only within the context of such a
database, whereas the scope of the signatures is only one specific
object. Since the attributes in the referred object (such as mnt-by,
admin-c, tech-c, etc.) can change without any modifications to the
signed object, signing such attributes could lead to a false sense of
security in terms of the contents of the signed data; therefore,
including such attributes should only be done in order to provide
full integrity protection of the object itself.
The newly constructed "signature" attribute is always included in the
list. The signature under construction MUST NOT include signature
attributes that are already present in the object.
as-block:
* as-block
* signature
aut-num:
* aut-num
* as-name
* member-of
* import
* mp-import
* export
* mp-export
* default
* mp-default
* signature
inet[6]num:
* inet[6]num
* netname
* country
* status
* signature
<span class="grey">Kisteleki & Haberman Standards Track [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
route[6]:
* route[6]
* origin
* holes
* member-of
* signature
It should be noted that the approach defined in this document has a
limitation in signing route[6] objects. This document only supports
a single signature per object. This means that it is not possible to
properly sign route[6] objects where one resource holder possesses
the Autonomous System Number (ASN) and another resource holder
possesses the referenced prefix. A future version of this
specification may resolve this limitation.
For each signature, the extension described in <a href="./rfc3779">RFC 3779</a> that appears
in the certificate used to verify the signature MUST include a
resource entry that is equivalent to, or covers (i.e., is "less
specific" than) the following resources mentioned in the object the
signature is attached to:
o For the as-block object type: the resource in the "as-block"
attribute.
o For the aut-num object type: the resource in the "aut-num"
attribute.
o For the inet[6]num object type: the resource in the "inet[6]num"
attribute.
o For the route[6] object type: the resource in the "route[6]" or
"origin" (or both) attributes.
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Keys and Certificates Used for Signature and Verification</span>
The certificate that is referred to in the signature (in the "c"
field):
o MUST be an end-entity (i.e., non-CA) certificate
o MUST conform to the X.509 PKIX Resource Certificate profile
[<a href="./rfc6487" title=""A Profile for X.509 PKIX Resource Certificates"">RFC6487</a>]
o MUST have the extension described in <a href="./rfc3779">RFC 3779</a> that covers the
Internet number resource included in a signed attribute [<a href="./rfc3779" title=""X.509 Extensions for IP Addresses and AS Identifiers"">RFC3779</a>]
<span class="grey">Kisteleki & Haberman Standards Track [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
The certificate generated will omit the Subject Information Access
(SIA) extension mandated by <a href="./rfc6487">RFC 6487</a> as that extension requires an
rsync URI for the accessLocation form and RPSL currently does not
support database access via rsync.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Security Considerations</span>
RPSL objects stored in the Internet Routing Registry (IRR) databases
are public, and as such there is no need for confidentiality. Each
signed RPSL object can have its integrity and authenticity verified
using the supplied digital signature and the referenced certificate.
Since the RPSL signature approach leverages X.509 extensions, the
security considerations in [<a href="./rfc3779" title=""X.509 Extensions for IP Addresses and AS Identifiers"">RFC3779</a>] apply here as well.
Additionally, implementers MUST follow the certificate validation
steps described in <a href="./rfc6487">RFC 6487</a>.
The maintainer of an object has the ability to include attributes in
the signature that are not included in the resource certificate used
to create the signature. Potentially, a maintainer may include
attributes that reference resources the maintainer is not authorized
to use.
It should be noted that this digital signature does not preclude
monkey-in-the-middle attacks where the adversary either intercepts
RPSL object transfers, deletes the signature attribute, modifies the
contents, or intercepts the transfer and drops the objects destined
for the requester.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. References</span>
<span class="h3"><a class="selflink" id="section-7.1" href="#section-7.1">7.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>,
DOI 10.17487/RFC2119, March 1997,
<<a href="http://www.rfc-editor.org/info/rfc2119">http://www.rfc-editor.org/info/rfc2119</a>>.
[<a id="ref-RFC2622">RFC2622</a>] Alaettinoglu, C., Villamizar, C., Gerich, E., Kessens, D.,
Meyer, D., Bates, T., Karrenberg, D., and M. Terpstra,
"Routing Policy Specification Language (RPSL)", <a href="./rfc2622">RFC 2622</a>,
DOI 10.17487/RFC2622, June 1999,
<<a href="http://www.rfc-editor.org/info/rfc2622">http://www.rfc-editor.org/info/rfc2622</a>>.
[<a id="ref-RFC3339">RFC3339</a>] Klyne, G. and C. Newman, "Date and Time on the Internet:
Timestamps", <a href="./rfc3339">RFC 3339</a>, DOI 10.17487/RFC3339, July 2002,
<<a href="http://www.rfc-editor.org/info/rfc3339">http://www.rfc-editor.org/info/rfc3339</a>>.
<span class="grey">Kisteleki & Haberman Standards Track [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
[<a id="ref-RFC3779">RFC3779</a>] Lynn, C., Kent, S., and K. Seo, "X.509 Extensions for IP
Addresses and AS Identifiers", <a href="./rfc3779">RFC 3779</a>,
DOI 10.17487/RFC3779, June 2004,
<<a href="http://www.rfc-editor.org/info/rfc3779">http://www.rfc-editor.org/info/rfc3779</a>>.
[<a id="ref-RFC3986">RFC3986</a>] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66,
<a href="./rfc3986">RFC 3986</a>, DOI 10.17487/RFC3986, January 2005,
<<a href="http://www.rfc-editor.org/info/rfc3986">http://www.rfc-editor.org/info/rfc3986</a>>.
[<a id="ref-RFC4012">RFC4012</a>] Blunk, L., Damas, J., Parent, F., and A. Robachevsky,
"Routing Policy Specification Language next generation
(RPSLng)", <a href="./rfc4012">RFC 4012</a>, DOI 10.17487/RFC4012, March 2005,
<<a href="http://www.rfc-editor.org/info/rfc4012">http://www.rfc-editor.org/info/rfc4012</a>>.
[<a id="ref-RFC4632">RFC4632</a>] Fuller, V. and T. Li, "Classless Inter-domain Routing
(CIDR): The Internet Address Assignment and Aggregation
Plan", <a href="https://www.rfc-editor.org/bcp/bcp122">BCP 122</a>, <a href="./rfc4632">RFC 4632</a>, DOI 10.17487/RFC4632, August
2006, <<a href="http://www.rfc-editor.org/info/rfc4632">http://www.rfc-editor.org/info/rfc4632</a>>.
[<a id="ref-RFC4648">RFC4648</a>] Josefsson, S., "The Base16, Base32, and Base64 Data
Encodings", <a href="./rfc4648">RFC 4648</a>, DOI 10.17487/RFC4648, October 2006,
<<a href="http://www.rfc-editor.org/info/rfc4648">http://www.rfc-editor.org/info/rfc4648</a>>.
[<a id="ref-RFC5396">RFC5396</a>] Huston, G. and G. Michaelson, "Textual Representation of
Autonomous System (AS) Numbers", <a href="./rfc5396">RFC 5396</a>,
DOI 10.17487/RFC5396, December 2008,
<<a href="http://www.rfc-editor.org/info/rfc5396">http://www.rfc-editor.org/info/rfc5396</a>>.
[<a id="ref-RFC5781">RFC5781</a>] Weiler, S., Ward, D., and R. Housley, "The rsync URI
Scheme", <a href="./rfc5781">RFC 5781</a>, DOI 10.17487/RFC5781, February 2010,
<<a href="http://www.rfc-editor.org/info/rfc5781">http://www.rfc-editor.org/info/rfc5781</a>>.
[<a id="ref-RFC5952">RFC5952</a>] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6
Address Text Representation", <a href="./rfc5952">RFC 5952</a>,
DOI 10.17487/RFC5952, August 2010,
<<a href="http://www.rfc-editor.org/info/rfc5952">http://www.rfc-editor.org/info/rfc5952</a>>.
[<a id="ref-RFC6481">RFC6481</a>] Huston, G., Loomans, R., and G. Michaelson, "A Profile for
Resource Certificate Repository Structure", <a href="./rfc6481">RFC 6481</a>,
DOI 10.17487/RFC6481, February 2012,
<<a href="http://www.rfc-editor.org/info/rfc6481">http://www.rfc-editor.org/info/rfc6481</a>>.
[<a id="ref-RFC6485">RFC6485</a>] Huston, G., "The Profile for Algorithms and Key Sizes for
Use in the Resource Public Key Infrastructure (RPKI)",
<a href="./rfc6485">RFC 6485</a>, DOI 10.17487/RFC6485, February 2012,
<<a href="http://www.rfc-editor.org/info/rfc6485">http://www.rfc-editor.org/info/rfc6485</a>>.
<span class="grey">Kisteleki & Haberman Standards Track [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc7909">RFC 7909</a> Securing RPSL June 2016</span>
[<a id="ref-RFC6487">RFC6487</a>] Huston, G., Michaelson, G., and R. Loomans, "A Profile for
X.509 PKIX Resource Certificates", <a href="./rfc6487">RFC 6487</a>,
DOI 10.17487/RFC6487, February 2012,
<<a href="http://www.rfc-editor.org/info/rfc6487">http://www.rfc-editor.org/info/rfc6487</a>>.
[<a id="ref-RFC7230">RFC7230</a>] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
Protocol (HTTP/1.1): Message Syntax and Routing",
<a href="./rfc7230">RFC 7230</a>, DOI 10.17487/RFC7230, June 2014,
<<a href="http://www.rfc-editor.org/info/rfc7230">http://www.rfc-editor.org/info/rfc7230</a>>.
<span class="h3"><a class="selflink" id="section-7.2" href="#section-7.2">7.2</a>. Informative References</span>
[<a id="ref-RFC2725">RFC2725</a>] Villamizar, C., Alaettinoglu, C., Meyer, D., and S.
Murphy, "Routing Policy System Security", <a href="./rfc2725">RFC 2725</a>,
DOI 10.17487/RFC2725, December 1999,
<<a href="http://www.rfc-editor.org/info/rfc2725">http://www.rfc-editor.org/info/rfc2725</a>>.
[<a id="ref-RFC6376">RFC6376</a>] Crocker, D., Ed., Hansen, T., Ed., and M. Kucherawy, Ed.,
"DomainKeys Identified Mail (DKIM) Signatures", STD 76,
<a href="./rfc6376">RFC 6376</a>, DOI 10.17487/RFC6376, September 2011,
<<a href="http://www.rfc-editor.org/info/rfc6376">http://www.rfc-editor.org/info/rfc6376</a>>.
Acknowledgements
The authors would like to acknowledge the valued contributions from
Jos Boumans, Tom Harrison, Steve Kent, Sandra Murphy, Magnus Nystrom,
Alvaro Retana, Sean Turner, Geoff Huston, and Stephen Farrell in
preparation of this document.
Authors' Addresses
Robert Kisteleki
RIPE NCC
Email: robert@ripe.net
URI: <a href="http://www.ripe.net">http://www.ripe.net</a>
Brian Haberman
Johns Hopkins University Applied Physics Lab
Email: brian@innovationslab.net
Kisteleki & Haberman Standards Track [Page 14]
</pre>
|