summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc5485.txt
blob: 06db9f1a400672d43c525f39e5dc0fe4c8ac1e16 (plain) (blame)
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
782
783
784
785
786
787
Network Working Group                                         R. Housley
Request for Comments: 5485                                Vigil Security
Category: Informational                                       March 2009


             Digital Signatures on Internet-Draft Documents

Status of This Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard of any kind.  Distribution of this
   memo is unlimited.

Copyright Notice

   Copyright (c) 2009 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents in effect on the date of
   publication of this document (http://trustee.ietf.org/license-info).
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.

Abstract

   This document specifies the conventions for digital signatures on
   Internet-Drafts.  The Cryptographic Message Syntax (CMS) is used to
   create a detached signature, which is stored in a separate companion
   file so that no existing utilities are impacted by the addition of
   the digital signature.




















Housley                      Informational                      [Page 1]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


1.  Introduction

   This document specifies the conventions for storing a digital
   signature on Internet-Drafts.  The Cryptographic Message Syntax (CMS)
   [CMS] is used to create a detached signature.  The signature is
   stored in a separate companion file so that no existing utilities are
   impacted by the addition of the digital signature.

   Shortly after the IETF Secretariat posts the Internet-Draft in the
   repository, the digital signature is generated and posted as a
   companion file in the same repository.  The digital signature allows
   anyone to confirm that the contents of the Internet-Draft have not
   been altered since the time that the document was posted in the
   repository.

   The signature of the IETF Secretariat is intended to provide a
   straightforward way for anyone to determine whether a particular file
   contains the document that was made available by the IETF
   Secretariat.  The signing-time included by the IETF Secretariat
   provides the wall-clock time; it is not intended to provide a trusted
   timestamp.

1.1.  Terminology

   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 RFC 2119 [STDWORDS].

1.2.  ASN.1

   The CMS uses Abstract Syntax Notation One (ASN.1) [X.680].  ASN.1 is
   a formal notation used for describing data protocols, regardless of
   the programming language used by the implementation.  Encoding rules
   describe how the values defined in ASN.1 will be represented for
   transmission.  The Basic Encoding Rules (BER) [X.690] are the most
   widely employed rule set, but they offer more than one way to
   represent data structures.  For example, both definite-length
   encoding and indefinite-length encoding are supported.  This
   flexibility is not desirable when digital signatures are used.  As a
   result, the Distinguished Encoding Rules (DER) [X.690] were invented.
   DER is a subset of BER that ensures a single way to represent a given
   value.  For example, DER always employs definite-length encoding.









Housley                      Informational                      [Page 2]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


2.  Internet-Draft Signature File

   All Internet-Draft file names begin with "draft-".  The next portion
   of the file name depends on the source of the document.  For example,
   documents from IETF working groups usually have "ietf-" followed by
   the working group abbreviation, and this is followed by a string that
   helps people figure out the subject of the document.

   All Internet-Draft file names end with a hyphen followed by a two-
   digit version number and a suffix.  The suffix indicates the type of
   file.  A plain text file with a suffix of ".txt" is required.  Other
   formats may also be provided, and they employ the appropriate suffix
   for the file format.

   The companion signature file has exactly the same file name as the
   Internet-Draft, except that ".p7s" is added to the end.  This file
   name suffix conforms to the conventions in [MSG].  Here are a few
   example names:

      Internet-Draft: draft-ietf-example-widgets-03.txt
      Signature File: draft-ietf-example-widgets-03.txt.p7s

      Internet-Draft: draft-ietf-example-widgets-03.ps
      Signature File: draft-ietf-example-widgets-03.ps.p7s

      Internet-Draft: draft-housley-internet-draft-sig-file-00.txt
      Signature File: draft-housley-internet-draft-sig-file-00.txt.p7s

   The IETF Secretariat will post the signature file in the repository
   shortly after the Internet-Draft is posted.

2.1.  Need for Canonicalization

   In general, the content of the Internet-Draft is treated like a
   single octet string for the generation of the digital signature.
   Unfortunately, the plain text file requires canonicalization to avoid
   signature validation problems.  The primary concern is the manner in
   which different operating systems indicate the end of a line of text.
   Some systems use a single new-line character, other systems use the
   combination of the carriage-return character followed by a line-feed
   character, and other systems use fixed-length records padded with
   space characters.  For the digital signature to validate properly, a
   single convention must be employed.








Housley                      Informational                      [Page 3]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


2.2.  Text File Canonicalization

   The canonicalization procedure follows the conventions used for text
   files in the File Transfer Protocol (FTP) [FTP].  Such files must be
   supported by FTP implementations, so code reuse seems likely.

   The canonicalization procedure converts the data from its internal
   character representation to the standard 8-bit NVT-ASCII
   representation (see TELNET [TELNET]).  In accordance with the NVT
   standard, the <CRLF> sequence MUST be used to denote the end of a
   line of text.  Using the standard NVT-ASCII representation means that
   data MUST be interpreted as 8-bit bytes.

   Trailing space characters MUST NOT appear on a line of text.  That
   is, the space character must not be followed by the <CRLF> sequence.
   Thus, a blank line is represented solely by the <CRLF> sequence.

   The form-feed nonprintable character (0x0C) is expected in Internet-
   Drafts.  Other nonprintable characters, such as tab and backspace,
   are not expected, but they do occur.  For robustness, any
   nonprintable or non-ASCII characters (ones outside the range 0x20 to
   0x7E) MUST NOT be changed in any way not covered by the rules for
   end-of-line handling in the previous paragraph.

   Trailing blank lines MUST NOT appear at the end of the file.  That
   is, the file must not end with multiple consecutive <CRLF> sequences.

   Any end-of-file marker used by an operating system is not considered
   to be part of the file content.  When present, such end-of-file
   markers MUST NOT be processed by the digital signature algorithm.

   Note: This text file canonicalization procedure is consistent with
   the ASCII NVT definition offered in Appendix B of RFC 5198 [UFNI].

2.3.  XML File Canonicalization

   In accordance with the guidance of the World Wide Web Consortium
   (W3C) in Section 2.11 of [R20060816], a <LF> character MUST be used
   to denote the end of a line of text within an XML file.  Any two-
   character <CRLF> sequence and any <CR> that is not followed by <LF>
   are to be translated to a single <LF> character.

2.4.  Canonicalization of Other File Formats

   No canonicalization is needed for file formats currently used for
   Internet-Drafts other than plain text files and XML files.  Other
   file formats are treated as a simple sequence of octets by the
   digital signature algorithm.



Housley                      Informational                      [Page 4]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


3.  CMS Profile

   CMS is used to construct the detached signature of the Internet-
   Draft.  The CMS ContentInfo content type MUST always be present, and
   it MUST encapsulate the CMS SignedData content type.  Since a
   detached signature is being created, the CMS SignedData content type
   MUST NOT encapsulate the Internet-Draft.  The CMS detached signature
   is summarized by:

    ContentInfo {
      contentType          id-signedData, -- (1.2.840.113549.1.7.2)
      content              SignedData
    }

    SignedData {
      version              CMSVersion, -- Always set to 3
      digestAlgorithms     DigestAlgorithmIdentifiers,
      encapContentInfo     EncapsulatedContentInfo,
      certificates         CertificateSet, -- Secretariat certificate(s)
      crls                 CertificateRevocationLists, -- Optional
      signerInfos          SET OF SignerInfo -- Only one signer
    }

    SignerInfo {
      version              CMSVersion, -- Always set to 3
      sid                  SignerIdentifier,
      digestAlgorithm      DigestAlgorithmIdentifier,
      signedAttrs          SignedAttributes, -- Always present
      signatureAlgorithm   SignatureAlgorithmIdentifier,
      signature            SignatureValue,
      unsignedAttrs        UnsignedAttributes -- Optional
    }

    EncapsulatedContentInfo {
      eContentType         id-ct-asciiTextWithCRLF,
                                       -- (1.2.840.113549.1.9.16.1.27)
      eContent             OCTET STRING  -- Always absent
    }













Housley                      Informational                      [Page 5]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


3.1.  ContentInfo

   The CMS requires the outer-most encapsulation to be ContentInfo
   [CMS].  The fields of ContentInfo are used as follows:

      contentType
         indicates the type of the associated content.  For the detached
         Internet-Draft signature file, the encapsulated type is always
         SignedData, so the id-signedData (1.2.840.113549.1.7.2) object
         identifier MUST be present in this field.

      content
         holds the content.  For the detached Internet-Draft signature
         file, the content is always a SignedData content.

3.2.  SignedData

   The SignedData content type [CMS] contains the signature of the
   Internet-Draft and information to aid in the validation of that
   signature.  The fields of SignedData are used as follows:

      version
         is the syntax version number.  For this specification, the
         version number MUST be set to 3.

      digestAlgorithms
         is a collection of one-way hash function identifiers.  It MUST
         contain the identifier used by the IETF Secretariat to generate
         the digital signature.  See the discussion of digestAlgorithm
         in Section 3.2.1.

      encapContentInfo
         is the signed content, including a content type identifier.
         Since a detached signature is being created, it does not
         encapsulate the Internet-Draft.  The use of the
         EncapsulatedContentInfo type is discussed further in Section
         3.2.2.

      certificates
         is an optional collection of certificates.  It SHOULD include
         the X.509 certificate needed to validate the digital signature
         value.  Certification Authority (CA) certificates and end
         entity certificates MUST conform to the certificate profile
         specified in [PKIX1].







Housley                      Informational                      [Page 6]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


      crls
         is an optional collection of certificate revocation lists
         (CRLs).  It SHOULD NOT include any CRLs; however, any CRLs that
         are present MUST conform to the CRL profile specified in
         [PKIX1].

      signerInfos
         is a collection of per-signer information.  For this
         specification, each item in the collection must represent the
         IETF Secretariat.  More than one SignerInfo MAY appear to
         facilitate transitions between keys or algorithms.  The use of
         the SignerInfo type is discussed further in Section 3.2.1.

3.2.1.  SignerInfo

   The IETF Secretariat is represented in the SignerInfo type.  The
   fields of SignerInfo are used as follows:

      version
         is the syntax version number.  In this specification, the
         version MUST be set to 3.

      sid
         identifies the IETF Secretariat's public key.  In this
         specification, the subjectKeyIdentifier alternative is always
         used, which identifies the public key directly.  This
         identifier MUST match the value included in the
         subjectKeyIdentifier certificate extension in the IETF
         Secretariat's X.509 certificate.

      digestAlgorithm
         identifies the one-way hash function, and any associated
         parameters, used by the IETF Secretariat to generate the
         digital signature.

      signedAttrs
         is an optional set of attributes that are signed along with the
         content.  The signedAttrs are optional in the CMS, but
         signedAttrs is required by this specification.  The SET OF
         Attribute must be encoded with the distinguished encoding rules
         (DER) [X.690].  Section 3.2.3 of this document lists the signed
         attributes that MUST be included in the collection.  Other
         signed attributes MAY also be included.

      signatureAlgorithm
         identifies the digital signature algorithm, and any associated
         parameters, used by the IETF Secretariat to generate the
         digital signature.



Housley                      Informational                      [Page 7]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


      signature
         is the digital signature value generated by the IETF
         Secretariat.

      unsignedAttrs
         is an optional set of attributes that are not signed.  Unsigned
         attributes are usually omitted; however, the unsigned
         attributes MAY hold a trusted timestamp generated in accordance
         with [TSP].  Appendix A of [TSP] provides more information
         about this unsigned attribute.

3.2.2.  EncapsulatedContentInfo

   The EncapsulatedContentInfo structure contains a content type
   identifier.  Since a detached signature is being created, it does not
   encapsulate the Internet-Draft.  The fields of
   EncapsulatedContentInfo are used as follows:

      eContentType
         is an object identifier that uniquely specifies the content
         type.  The content type associated with the plain text file
         MUST be id-ct-asciiTextWithCRLF.  Other file formats may also
         be posted, and the appropriate content type for each format is
         discussed in Section 4.  Additional file formats can be added
         if the Internet community chooses.

      eContent
         is optional.  When an encapsulated signature is generated, the
         content to be signed is carried in this field.  Since a
         detached signature is being created, eContent MUST be absent.

3.2.3.  Signed Attributes

   The IETF Secretariat MUST digitally sign a collection of attributes
   along with the Internet-Draft.  Each attribute in the collection MUST
   be DER-encoded.  The syntax for attributes is defined in [X.501], and
   the X.500 Directory provides a rich attribute syntax.  A very simple
   subset of this syntax is used extensively in [CMS], where
   ATTRIBUTE.&Type and ATTRIBUTE.&id are the only parts of the ATTRIBUTE
   class that are employed.

   Each of the attributes used with this CMS profile has a single
   attribute value.  Even though the syntax is defined as a SET OF
   AttributeValue, there MUST be exactly one instance of AttributeValue
   present.






Housley                      Informational                      [Page 8]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


   The SignedAttributes syntax within signerInfo is defined as a SET OF
   Attribute.  The SignedAttributes MUST include only one instance of
   any particular attribute.

   The IETF Secretariat MUST include the content-type, message-digest,
   and signing-time attributes.  The IETF Secretariat MAY also include
   the binary-signing-time signed attribute as well as any other
   attribute that is deemed appropriate.  The intent is to allow
   additional signed attributes to be included if a future need is
   identified.  This does not cause an interoperability concern because
   unrecognized signed attributes are ignored at verification.

3.2.3.1.  Content-Type Attribute

   A content-type attribute is required to contain the same object
   identifier as the content type contained in the
   EncapsulatedContentInfo.  The appropriate content type for each
   format is discussed in Section 4.  The IETF Secretariat MUST include
   a content-type attribute containing the appropriate content type.
   Section 11.1 of [CMS] defines the content-type attribute.

3.2.3.2.  Message-Digest Attribute

   The IETF Secretariat MUST include a message-digest attribute, having
   as its value the output of a one-way hash function computed on the
   Internet-Draft that is being signed.  Section 11.2 of [CMS] defines
   the message-digest attribute.

3.2.3.3.  Signing-Time Attribute

   The IETF Secretariat MUST include a signing-time attribute,
   specifying the time, based on the local system clock, at which the
   digital signature was applied to the Internet-Draft.  Since the IETF
   Secretariat may choose to perform signatures in batches, the signing-
   time may be several hours or days after the time that the Internet-
   Draft was actually posted.  Section 11.3 of [CMS] defines the
   content-type attribute.

3.2.3.4.  Binary-Signing-Time Attribute

   The IETF Secretariat MAY include a binary-signing-time attribute,
   specifying the time at which the digital signature was applied to the
   Internet-Draft.  If present, the time that is represented MUST match
   the time represented in the signing-time attribute.  The binary-
   signing-time attribute is defined in [BinTime].






Housley                      Informational                      [Page 9]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


3.2.4.  Unsigned Attributes

   Unsigned attributes are usually omitted.  However, an unsigned
   attribute MAY hold a trusted timestamp generated in accordance with
   [TSP].  The idea is to timestamp the IETF Secretariat digital
   signature to prove that it was created before a given time.  If the
   IETF Secretariat's certificate is revoked the timestamp allows a
   verifier to know whether the signature was created before or after
   the revocation date.  Appendix A of [TSP] defines the signature time-
   stamp attribute that can be used to timestamp a digital signature.

4.  Content Types

   This section lists the content types that are used in this
   specification.  The eContentType field as described in Section 3.2.2
   contains a content type identifier, and the same value appears in the
   content-type attribute as described in Section 3.2.3.1.

   The following table lists the file formats and the associated content
   type.

      File Format                        Content Type
      -----------                        ------------
      Plain text                         id-ct-asciiTextWithCRLF
      Extensible Markup Language (XML)   id-ct-xml
      Portable Document Format (PDF)     id-ct-pdf
      PostScript                         id-ct-postscript

   The object identifiers associated with the content types listed in
   the above table are:

      id-ct  OBJECT IDENTIFIER  ::= { iso(1) member-body(2)
           us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) 1 }

      id-ct-asciiTextWithCRLF  OBJECT IDENTIFIER  ::= { id-ct 27 }

      id-ct-xml  OBJECT IDENTIFIER  ::= { id-ct 28 }

      id-ct-pdf  OBJECT IDENTIFIER  ::= { id-ct 29 }

      id-ct-postscript  OBJECT IDENTIFIER  ::= { id-ct 30 }

5.  Security Considerations

   The IETF Secretariat MUST protect its private key.  The use of a
   hardware security module (HSM) is strongly RECOMMENDED because
   compromise of the IETF Secretariat's private key permits masquerade.




Housley                      Informational                     [Page 10]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


   The IETF Secretariat currently maintains servers at a primary
   location and a backup location.  This configuration requires two
   HSMs, one at each location.  However, the two HSMs do not need to use
   the same signing key.  Each HSM can have a different signing key, as
   long as each one has their own certificate.

   The generation of a public/private key pair for signature operations
   relies on random number generation.  The use of an inadequate pseudo-
   random number generator (PRNG) can result in little or no security.
   An attacker may find it much easier to reproduce the PRNG environment
   that produced the key pair, searching the resulting small set of
   possibilities, than to brute-force search the whole private key
   space.  The generation of quality random numbers is difficult, but
   [RANDOM] offers important guidance in this area.

   The IETF Secretariat should be aware that cryptographic algorithms
   become weaker with time.  As new cryptanalysis techniques are
   developed and computing performance improves, the work factor to
   break a particular digital signature algorithm or one-way hash
   function will be reduced.  Therefore, it SHOULD be possible to
   migrate these algorithms.  That is, the IETF Secretariat SHOULD be
   prepared for the supported algorithms to change over time.

   The IETF Secretariat must take care to use the correct time in
   signing-time and binary-signing-time attributes.  The inclusion of a
   date within the Internet-Draft by the authors that is shortly before
   the signing time attributes supplied by the IETF Secretariat provides
   confidence about the date that the Internet-Draft was posted to the
   repository.  However, the IETF Secretariat may choose to perform
   signatures in batches, and the signing-time may be several hours or
   days after the time that the Internet-Draft was actually posted.

   As stated above, the IETF Secretariat may choose to sign Internet-
   Drafts in batches.  This allows a single HSM to be used if multiple
   servers are located in one geographic location, and it allows the HSM
   to be off-line except when signatures are being generated.  Further,
   this allows the IETF Secretariat to include manual steps, such as
   entering an HSM passphrase or inserting a smartcard, as part of the
   signing procedure to improve operations security.

6.  Deployment and Operational Considerations

   The private key used to generate the IETF Secretariat signature ought
   to be stored in an HSM to provide protection from unauthorized
   disclosure.  While the HSM will be operated by the IETF Secretariat,
   it ought to be owned by the IETF Trust.  Accordingly, the Trustees of
   the IETF Trust will designate an appropriate certification authority




Housley                      Informational                     [Page 11]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


   to issue a certificate to the IETF Secretariat, and they will approve
   any procedures used by the IETF Secretariat for signing documents
   consistent with this specification.

7.  Design Rationale

   A detached signature is used for all file formats.  Some file
   formats, such as PDF and XML, have file-format-specific ways of
   handling digital signatures.  These file-format-specific approaches
   are not used for two reasons.  First, a single way to sign Internet-
   Drafts will ease implementation by the IETF Secretariat.  Second, if
   the author includes a signature using one of these file-format-
   specific approaches, the IETF Secretariat signature does not harm it
   in any way.

   File names are the means linking the detached signature to the signed
   document.  A CMS signed attribute could have been specified to
   include another form of linkage, and this could be added in the
   future.  At this point in time, it is important to support signature
   validation of expired Internet-Drafts that are obtained from non-IETF
   repositories.  Therefore, the appropriate value for such a signed
   attribute is unclear.  This specification allows an Internet-Draft
   and companion signature file to be stored anywhere without hindering
   signature validation.

8.  Acknowledgments

   The idea for the Internet-Draft signature file came from a discussion
   with Scott Bradner at IETF 69 in Chicago.  Many helpful suggestions
   came from Jim Schaad, Pasi Eronen, and Chris Newman.

9.  References

9.1.  Normative References

   [CMS]       Housley, R., "Cryptographic Message Syntax (CMS)", RFC
               3852, July 2004.

   [PKIX1]     Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
               Housley, R., and W. Polk, "Internet X.509 Public Key
               Infrastructure Certificate and Certificate Revocation
               List (CRL) Profile", RFC 5280, May 2008.

   [STDWORDS]  Bradner, S., "Key words for use in RFCs to Indicate
               Requirement Levels", BCP 14, RFC 2119, March 1997.






Housley                      Informational                     [Page 12]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


   [X.680]     ITU-T Recommendation X.680: ISO/IEC 8824-1:2002,
               Information technology - Abstract Syntax Notation One
               (ASN.1): Specification of basic notation, 2002.

   [X.690]     ITU-T Recommendation X.690: ISO/IEC 8825-1:2002,
               Information technology - ASN.1 encoding rules:
               Specification of Basic Encoding Rules (BER), Canonical
               Encoding Rules (CER) and Distinguished Encoding Rules
               (DER), 2002.

9.2.  Informative References

   [BinTime]   Housley, R., "BinaryTime: An Alternate Format for
               Representing Date and Time in ASN.1", RFC 4049, April
               2005.

   [FTP]       Postel, J. and J. Reynolds, "File Transfer Protocol", STD
               9, RFC 959, October 1985.

   [MSG]       Ramsdell, B., Ed., "Secure/Multipurpose Internet Mail
               Extensions (S/MIME) Version 3.1 Message Specification",
               RFC 3851, July 2004.

   [OpenSSL]   "OpenSSL: The Open Source toolkit for SSL/TLS",
               http://www.openssl.org/.

   [R20060816] Bray, T., J. Paoli, C. M. Sperberg-McQueen, E. Maler, and
               F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fourth
               Edition)", W3C Recommendation, 16 August 2006,
               http://www.w3.org/TR/2006/REC-xml-20060816/.

   [RANDOM]    Eastlake, D., 3rd, Schiller, J., and S. Crocker,
               "Randomness Requirements for Security", BCP 106, RFC
               4086, June 2005.

   [TELNET]    Postel, J. and J. Reynolds, "Telnet Protocol
               Specification", STD 8, RFC 854, May 1983.

   [TSP]       Adams, C., Cain, P., Pinkas, D., and R. Zuccherato,
               "Internet X.509 Public Key Infrastructure Time-Stamp
               Protocol (TSP)", RFC 3161, August 2001.

   [UFNI]      Klensin, J. and M. Padlipsky, "Unicode Format for Network
               Interchange", RFC 5198, March 2008.

   [X.501]     ITU-T Recommendation X.501: Information Technology - Open
               Systems Interconnection - The Directory: Models, 1993.




Housley                      Informational                     [Page 13]
^L
RFC 5485         Digital Signatures on Internet-Drafts        March 2009


Appendix: A

   OpenSSL 0.9.9 [OpenSSL] includes an implementation of CMS.  The
   following command line can be used to verify an Internet-Draft
   signature:

     openssl cms -verify -CAfile <cert-file> -content <internet-draft> /
          -inform DER -in <p7s-file> -out /dev/null

   The arguments need to be provided as follows:

      <cert-file>
         the name of the file containing the trust anchor, which is
         typically the self-signed certificate of the certification
         authority that issued a certificate to the IETF Secretariat.

      <internet-draft>
         the name of the file containing the Internet-Draft after
         canonicalization.

      <p7s-file>
         the name of the file containing the detached signature that was
         generated in accordance with this specification.

Author's Address

   Russell Housley
   Vigil Security, LLC
   918 Spring Knoll Drive
   Herndon, VA 20170
   USA

   EMail: housley@vigilsec.com


















Housley                      Informational                     [Page 14]
^L