home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1848.txt < prev    next >
Text File  |  1996-05-07  |  97KB  |  1,516 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                         S. Crocker Request For Comments: 1848                               CyberCash, Inc. Category: Standards Track                                       N. Freed                                             Innosoft International, Inc.                                                                J. Galvin                                                                S. Murphy                                              Trusted Information Systems                                                             October 1995 
  8.  
  9.                       MIME Object Security Services 
  10.  
  11. Status of this Memo 
  12.  
  13.    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. 
  14.  
  15. Abstract 
  16.  
  17.    This document defines MIME Object Security Services (MOSS), a    protocol that uses the multipart/signed and multipart/encrypted    framework [7] to apply digital signature and encryption services to    MIME objects.  The services are offered through the use of end-to-end    cryptography between an originator and a recipient at the application    layer.  Asymmetric (public key) cryptography is used in support of    the digital signature service and encryption key management.    Symmetric (secret key) cryptography is used in support of the    encryption service.  The procedures are intended to be compatible    with a wide range of public key management approaches, including both    ad hoc and certificate-based schemes.  Mechanisms are provided to    support many public key management approaches. 
  18.  
  19. Table of Contents 
  20.  
  21.    1.  Introduction .............................................    3    2.  Applying MIME Object Security Services ...................    4    2.1  Digital Signature Service ...............................    4    2.1.1  Canonicalization ......................................    5    2.1.2  Digital Signature Control Information .................    7    2.1.2.1  Version: ............................................    8    2.1.2.2  Originator-ID: ......................................    8    2.1.2.3  MIC-Info: ...........................................    8    2.1.3  application/moss-signature Content Type Definition ....    9    2.1.4  Use of multipart/signed Content Type ..................   10    2.2  Encryption Service ......................................   11 
  22.  
  23.  
  24.  
  25. Crocker, et al              Standards Track                     [Page 1] 
  26.  RFC 1848             MIME Object Security Services          October 1995 
  27.  
  28.     2.2.1  Encryption Control Information ........................   12    2.2.1.1  DEK-Info: ...........................................   13    2.2.1.2  Recipient-ID: .......................................   14    2.2.1.3  Key-Info: ...........................................   14    2.2.2  application/moss-keys Content Type Definition .........   15    2.2.3  Use of multipart/encrypted Content Type ...............   16    3.  Removing MIME Object Security Services ...................   17    3.1  Digital Signature Service ...............................   18    3.1.1  Preparation ...........................................   18    3.1.2  Verification ..........................................   19    3.1.3  Results ...............................................   19    3.2  Encryption Service ......................................   20    3.2.1  Preparation ...........................................   20    3.2.2  Decryption ............................................   20    3.2.3  Results ...............................................   21    4.  Identifying Originators, Recipients, and Their Keys ......   21    4.1  Name Forms ..............................................   23    4.1.1  Email Addresses .......................................   23    4.1.2  Arbitrary Strings .....................................   23    4.1.3  Distinguished Names ...................................   23    4.2  Identifiers .............................................   24    4.2.1  Email Address .........................................   25    4.2.2  Arbitrary String ......................................   25    4.2.3  Distinguished Name ....................................   26    4.2.4  Public Key ............................................   26    4.2.5  Issuer Name and Serial Number .........................   27    5.  Key Management Content Types .............................   27    5.1  application/mosskey-request Content Type Definition .....   28    5.2  application/mosskey-data Content Type Definition ........   29    6.  Examples .................................................   31    6.1  Original Message Prepared for Protection ................   31    6.2  Sign Text of Original Message ...........................   32    6.3  Sign Headers and Text of Original Message ...............   32    6.4  Encrypt Text of a Message ...............................   33    6.5  Encrypt the Signed Text of a Message ....................   35    6.6  Protecting Audio Content ................................   37    6.6.1  Sign Audio Content ....................................   37    6.6.2  Encrypt Audio Content .................................   37    7.  Observations .............................................   38    8.  Comparison of MOSS and PEM Protocols .....................   39    9.  Security Considerations ..................................   41    10.  Acknowledgements ........................................   41    11.  References ..............................................   41    12.  Authors' Addresses ......................................   43      Appendix A: Collected Grammar ..............................   44      Appendix B: Imported Grammar ...............................   47 
  29.  
  30.  
  31.  
  32.  
  33.  
  34. Crocker, et al              Standards Track                     [Page 2] 
  35.  RFC 1848             MIME Object Security Services          October 1995 
  36.  
  37.  1.  Introduction 
  38.  
  39.    MIME [2], an acronym for "Multipurpose Internet Mail Extensions",    defines the format of the contents of Internet mail messages and    provides for multi-part textual and non-textual message bodies.  An    Internet electronic mail message consists of two parts: the headers    and the body.  The headers form a collection of field/value pairs    structured according to STD 11, RFC 822 [1], whilst the body, if    structured, is defined according to MIME.  MIME does not provide for    the application of security services. 
  40.  
  41.    PEM [3-6], an acronym for "Privacy Enhanced Mail", defines message    encryption and message authentication procedures for text-based    electronic mail messages using a certificate-based key management    mechanism.  The specifications include several features that are    easily and more naturally supported by MIME, for example, the    transfer encoding operation, the Content-Domain header, and the    support services specified by its Part IV [6].  The specification is    limited by specifying the application of security services to text    messages only. 
  42.  
  43.    MOSS is based in large part on the PEM protocol as defined by RFC    1421.  Many of PEMs features and most of its protocol specification    are included here.  A comparison of MOSS and PEM may be found in    Section 8. 
  44.  
  45.    In order to make use of the MOSS services, a user (where user is not    limited to being a human, e.g., it could be a process or a role) is    required to have at least one public/private key pair.  The public    key must be made available to other users with whom secure    communication is desired.  The private key must not be disclosed to    any other user. 
  46.  
  47.    An originator's private key is used to digitally sign MIME objects; a    recipient would use the originator's public key to verify the digital    signature.  A recipient's public key is used to encrypt the data    encrypting key that is used to encrypt the MIME object; a recipient    would use the corresponding private key to decrypt the data    encrypting key so that the MIME object can be decrypted. 
  48.  
  49.    As long as the private keys are protected from disclosure, i.e., the    private keys are accessible only to the user to whom they have been    assigned, the recipient of a digitally signed message will know from    whom the message was sent and the originator of an encrypted message    will know that only the intended recipient is able to read it.  For    assurance, the ownership of the public keys used in verifying digital    signatures and encrypting messages should be verified.  A stored    public key should be protected from modification. 
  50.  
  51.  
  52.  
  53. Crocker, et al              Standards Track                     [Page 3] 
  54.  RFC 1848             MIME Object Security Services          October 1995 
  55.  
  56.     The framework defined in [7] provides an embodiment of a MIME object    and its digital signature or encryption keys.  When used by MOSS the    framework provides digital signature and encryption services to    single and multi-part textual and non-textual MIME objects. 
  57.  
  58. 2.  Applying MIME Object Security Services 
  59.  
  60.    The application of the MOSS digital signature service requires the    following components. 
  61.  
  62.    (1)  The data to be signed. 
  63.  
  64.    (2)  The private key of the originator. 
  65.  
  66.    The data to be signed is prepared according to the description below.    The digital signature is created by generating a hash of the data and    encrypting the hash value with the private key of the originator.    The digital signature, some additional ancillary information    described below, and the data are then embodied in a multipart/signed    body part.  Finally, the multipart/signed body part may be    transferred to a recipient or processed further, for example, it may    be encrypted. 
  67.  
  68.    The application of the MOSS encryption service requires the following    components. 
  69.  
  70.    (1)  The data to be encrypted. 
  71.  
  72.    (2)  A data encrypting key to encrypt the data. 
  73.  
  74.    (3)  The public key of the recipient. 
  75.  
  76.    The data to be encrypted is prepared according to the description    below.  The originator creates a data encrypting key and encrypts the    data.  The recipient's public key is used to encrypt the data    encrypting key.  The encrypted data, the encrypted data encrypting    key, and some additional ancillary information described below are    then embodied in a multipart/encrypted body part, ready to be    transferred to a recipient or processed further, for example, it may    be signed. 
  77.  
  78.    The next two sections describe the digital signature and encryption    services, respectively, in detail. 
  79.  
  80. 2.1.  Digital Signature Service 
  81.  
  82.    The MOSS digital signature service is applied to MIME objects,    specifically a MIME body part.  The MIME body part is created 
  83.  
  84.  
  85.  
  86. Crocker, et al              Standards Track                     [Page 4] 
  87.  RFC 1848             MIME Object Security Services          October 1995 
  88.  
  89.     according to a local convention and then made available to the    digital signature service. 
  90.  
  91.    The following sequence of steps comprises the application of the    digital signature service. 
  92.  
  93.     (1)  The body part to be signed must be canonicalized. 
  94.  
  95.     (2)  The digital signature and other control information must be gen-         erated. 
  96.  
  97.     (3)  The control information must be embodied in an appropriate MIME         content type. 
  98.  
  99.     (4)  The control information body part and the data body part must be         embodied in a multipart/signed content type. 
  100.  
  101.     Each of these steps is described below. 
  102.  
  103. 2.1.1.  Canonicalization 
  104.  
  105.    The body part must be converted to a canonical form that is uniquely    and unambiguously representable in at least the environment where the    digital signature is created and the environment where the digital    signature will be verified, i.e., the originator and recipient's    environment, respectively.  This is required in order to ensure that    both the originator and recipient have the same data with which to    calculate the digital signature; the originator needs to be able to    create the digital signature value while the recipient needs to be    able to compare a re-computed value with the received value.  If the    canonical form is representable on many different host computers, the    signed data may be forwarded by recipients to additional recipients,    who will also be able to verify the original signature.  This service    is called forwardable authentication. 
  106.  
  107.    The canonicalization transformation is a two step process.  First,    the body part must be converted to a form that is unambiguously    representable on as many different host computers as possible.    Second, the body part must have its line delimiters converted to a    unique and unambiguous representation. 
  108.  
  109.    The representation chosen to satisfy the first step is 7bit, as    defined by MIME; the high order bit of each octet of the data to be 
  110.  
  111.  
  112.  
  113. Crocker, et al              Standards Track                     [Page 5] 
  114.  RFC 1848             MIME Object Security Services          October 1995 
  115.  
  116.     signed must be zero.  A MIME body part is comprised of two parts:    headers and content.  Since the headers of body parts are already    required to be represented in 7bit, this step does not require    changes to the headers.  This step requires that if the content is    not already 7bit then it must be encoded with an appropriate MIME    content transfer encoding and a Content-Transfer-Encoding: header    must be added to the headers.  For example, if the content to be    signed contains 8bit or binary data, the content must be encoded with    either the quoted-printable or base64 encoding as defined by MIME. 
  117.  
  118.       IMPLEMENTORS NOTE: Since the MIME standard explicitly disallows       nested content transfer encodings, i.e., the content types       multipart and message may not themselves be encoded, the 7bit       transformation requires each nested body part to be individually       encoded in a 7bit representation.  Any valid MIME encoding, e.g.,       quoted-printable or base64, may be used and, in fact, a different       encoding may be used on each of the non-7bit body parts. 
  119.  
  120.    Representing all content types in a 7bit format transforms them into    text-based content types.  However, text-based content types present    a unique problem.  In particular, the line delimiter used for a    text-based content type is specific to a local environment; different    environments use the single character carriage-return (<CR>), the    single character line-feed (<LF>), or the two character sequence    "carriage-return line-feed (<CR><LF>)". 
  121.  
  122.    The application of the digital signature service requires that the    same line delimiter be used by both the originator and the recipient.    This document specifies that the two character sequence "<CR><LF>"    must be used as the line delimiter.  Thus, the second step of the    canonicalization transformation includes the conversion of the local    line delimiter to the two character sequence "<CR><LF>". 
  123.  
  124.    The conversion to the canonical line delimiter is only required for    the purposes of computing the digital signature.  Thus, originators    must apply the line delimiter conversion before computing the digital    signature but must transfer the data without the line delimiter    conversion.  Similarly, recipients must apply the line delimiter    conversion before computing the digital signature. 
  125.  
  126.       NOTE: An originator can not transfer the content with the line       delimiter conversion intact because the conversion process is not       idempotent.  In particular, SMTP servers may themselves convert       the line delimiter to a local line delimiter, prior to the message       being delivered to the recipient.  Thus, a recipient has no way of       knowing if the conversion is present or not.  If the recipient       applies the conversion to a content in which it is already       present, the resulting content may have two line delimiters 
  127.  
  128.  
  129.  
  130. Crocker, et al              Standards Track                     [Page 6] 
  131.  RFC 1848             MIME Object Security Services          October 1995 
  132.  
  133.        present, which would cause the verification of the signature to       fail. 
  134.  
  135.       IMPLEMENTORS NOTE: Implementors should be aware that the       conversion to a 7bit representation is a function that is required       in a minimally compliant MIME user agent.  Further, the line       delimiter conversion required here is distinct from the same       conversion included in that function.  Specifically, the line       delimiter conversion applied when a body part is converted to a       7bit representation (transfer encoded) is performed prior to the       application of the transfer encoding.  The line delimiter       conversion applied when a body part is signed is performed after       the body part is converted to 7bit (transfer encoded).  Both line       delimiter conversions are required. 
  136.  
  137. 2.1.2.  Digital Signature Control Information 
  138.  
  139.    The application of the digital signature service generates control    information which includes the digital signature itself.  The syntax    of the control information is that of a set of RFC 822 headers,    except that the folding of header values onto continuation lines is    explicitly forbidden.  Each header and value pair generated by the    digital signature service must be output on exactly one line. 
  140.  
  141.    The complete set of headers generated by the digital signature    service is as follows. 
  142.  
  143.    Version:       indicates which version of the MOSS protocol the remaining headers       represent. 
  144.  
  145.    Originator-ID:       indicates the private key used to create the digital signature and       the corresponding public key to be used to verify it. 
  146.  
  147.    MIC-Info:       contains the digital signature value. 
  148.  
  149.    Each invocation of the digital signature service must emit exactly    one Version: header and at least one pair of Originator-ID: and MIC-    Info: headers.  The Version: header must always be emitted first.    The Originator-ID: and MIC-Info: headers are always emitted in pairs    in the order indicated.  This specification allows an originator to    generate multiple signatures of the data, presumably with different    signature algorithms, and to include them all in the control    information.  The interpretation of the presence of multiple    signatures is outside the scope of this specification except that a    MIC-Info: header is always interpreted in the context of the 
  150.  
  151.  
  152.  
  153. Crocker, et al              Standards Track                     [Page 7] 
  154.  RFC 1848             MIME Object Security Services          October 1995 
  155.  
  156.     immediately preceding Originator-ID: header. 
  157.  
  158. 2.1.2.1.  Version: 
  159.  
  160.    The version header is defined by the grammar token <version> as    follows. 
  161.  
  162.       <version>  ::= "Version:" "5" CRLF 
  163.  
  164.    Its value is constant and MOSS implementations compliant with this    specification must recognize only this value and generate an error if    any other value is found. 
  165.  
  166. 2.1.2.2.  Originator-ID: 
  167.  
  168.    The purpose of the originator header is two-fold: to directly    identify the public key to be used to verify the digital signature    and to indirectly identify the user who owns both it and its    corresponding private key.  Typically, a recipient is less interested    in the actual public key value, although obviously the recipient    needs the value to verify the signature, and more interested in    identifying its owner.  Thus, the originator header may convey either    or both pieces of information: 
  169.  
  170.       the public key to be used to verify the signature 
  171.  
  172.       the name of the owner and which of the owner's public keys to use       to verify the signature 
  173.  
  174.    The decision as to what information to place in the value rests    entirely with the originator.  The suggested value is to include    both.  Recipients with whom the originator has previously    communicated will have to verify that the information presented is    consistent with what is already known.  New recipients will want all    of the information, which they will need to verify prior to storing    in their local database. 
  175.  
  176.    The originator header is defined by the grammar token <origid> as    follows. 
  177.  
  178.       <origid>  ::= "Originator-ID:" <id> CRLF 
  179.  
  180.    The grammar token <id> is defined in Section 4. 
  181.  
  182. 2.1.2.3.  MIC-Info: 
  183.  
  184.    The purpose of the Message Integrity Check (MIC) header is to convey    the digital signature value.  Its value is a comma separated list of 
  185.  
  186.  
  187.  
  188. Crocker, et al              Standards Track                     [Page 8] 
  189.  RFC 1848             MIME Object Security Services          October 1995 
  190.  
  191.     three arguments: the hash (or MIC) algorithm identifier, the    signature algorithm identifier, and the digital signature. 
  192.  
  193.    The MIC header is defined by the grammar token <micinfo> as follows. 
  194.  
  195.       <micinfo>  ::= "MIC-Info:" <micalgid> "," <ikalgid> ","                      <asymsignmic> CRLF 
  196.  
  197.    The grammar tokens for the MIC algorithms and identifiers    (<micalgid>), signature algorithms and identifiers (<ikalgid>), and    signed MIC formats (<asymsignmic>) are defined by RFC 1423.  They are    also reprinted in Appendix B. 
  198.  
  199.       IMPLEMENTORS NOTE: RFC 1423 is referenced by the PEM protocol,       which includes support for symmetric signatures and key       management.  As a result, some of the grammar tokens defined       there, for example, <ikalgid>, will include options that are not       legal for this protocol.  These options must be ignored and have       not been included in the appendix. 
  200.  
  201. 2.1.3.  application/moss-signature Content Type Definition 
  202.  
  203.    (1)  MIME type name: application 
  204.  
  205.    (2)  MIME subtype name: moss-signature 
  206.  
  207.    (3)  Required parameters: none 
  208.  
  209.    (4)  Optional parameters: none 
  210.  
  211.    (5)  Encoding considerations: quoted-printable is always sufficient 
  212.  
  213.    (6)  Security considerations: none 
  214.  
  215.    The "application/moss-signature" content type is used on the second    body part of an enclosing multipart/signed.  Its content is comprised    of the digital signature of the data in the first body part of the    enclosing multipart/signed and other control information required to    verify that signature, as defined by Section 2.1.2.  The label    "application/moss-signature" must be used as the value of the    protocol parameter of the enclosing multipart/signed; the protocol    parameter must be present. 
  216.  
  217.    Part of the signature verification information will be the Message    Integrity Check (MIC) algorithm(s) used during the signature creation    process.  The MIC algorithm(s) identified in this body part must    match the MIC algorithm(s) identified in the micalg parameter of the    enclosing multipart/signed.  If it does (they do) not, a user agent 
  218.  
  219.  
  220.  
  221. Crocker, et al              Standards Track                     [Page 9] 
  222.  RFC 1848             MIME Object Security Services          October 1995 
  223.  
  224.     should identify the discrepancy to a user and it may choose to either    halt or continue processing, giving precedence to the algorithm(s)    identified in this body part. 
  225.  
  226.    An application/moss-signature body part is constructed as follows: 
  227.  
  228.       Content-Type: application/moss-signature 
  229.  
  230.       <mosssig> 
  231.  
  232.    where the grammar token <mosssig> is defined as follows. 
  233.  
  234.       <mosssig>       ::= <version> ( 1*<origasymflds> ) 
  235.  
  236.       <version>       ::= "Version:" "5" CRLF 
  237.  
  238.       <origasymflds>  ::= <origid> <micinfo> 
  239.  
  240.       <origid>        ::= "Originator-ID:" <id> CRLF 
  241.  
  242.       <micinfo>       ::= "MIC-Info:" <micalgid> "," <ikalgid> ","                           <asymsignmic> CRLF 
  243.  
  244.    The token <id> is defined in Section 4.  All other tokens are defined    in Section 2.1.2.3. 
  245.  
  246. 2.1.4.  Use of multipart/signed Content Type 
  247.  
  248.    The definition of the multipart/signed content type in [7] specifies    three steps for creating the body part. 
  249.  
  250.     (1)  The body part to be digitally signed is created according to a         local convention, for example, with a text editor or a mail user         agent. 
  251.  
  252.     (2)  The body part is prepared for the digital signature service         according to the protocol parameter, in this case according to         Section 2.1.1. 
  253.  
  254.     (3)  The prepared body part is digitally signed according to the         protocol parameter, in this case according to Section 2.1.2. 
  255.  
  256.     The multipart/signed content type is constructed as follows. 
  257.  
  258.  
  259.  
  260.  Crocker, et al              Standards Track                    [Page 10] 
  261.  RFC 1848             MIME Object Security Services          October 1995 
  262.  
  263.     (1)  The value of its required parameter "protocol" is set to         "application/moss-signature". 
  264.  
  265.     (2)  The signed body part becomes its first body part. 
  266.  
  267.     (3)  Its second body part is labeled "application/moss-signature" and         is filled with the control information generated by the digital         signature service. 
  268.  
  269.     (4)  The value of its required parameter "micalg" is set to the same         value used in the MIC-Info: header in the control information.         If there is more than one MIC-Info: header present the value is         set to a comma separated list of values from the MIC-Info         headers.  The interpretation of the order of the list of values         is outside the scope of this specification. 
  270.  
  271.     A multipart/signed content type with the MOSS protocol might look as    follows: 
  272.  
  273.       Content-Type: multipart/signed;         protocol="application/moss-signature";         micalg="rsa-md5"; boundary="Signed Message" 
  274.  
  275.       --Signed Message       Content-Type: text/plain 
  276.  
  277.       This is some example text. 
  278.  
  279.       --Signed Message       Content-Type: application/moss-signature 
  280.  
  281.       Version: 5       Originator-ID: ID-INFORMATION       MIC-Info: RSA-MD5,RSA,SIGNATURE-INFORMATION       --Signed Message-- 
  282.  
  283.    where ID-INFORMATION and SIGNATURE-INFORMATION are descriptive of the    content that would appear in a real body part. 
  284.  
  285. 2.2.  Encryption Service 
  286.  
  287.    The MOSS encryption service is applied to MIME objects, specifically    a MIME body part.  The MIME body part is created according to a local    convention and then made available to the encryption service. 
  288.  
  289.  
  290.  
  291. Crocker, et al              Standards Track                    [Page 11] 
  292.  RFC 1848             MIME Object Security Services          October 1995 
  293.  
  294.     The following sequence of steps comprises the application of the    encryption service. 
  295.  
  296.     (1)  The body part to be encrypted must be in MIME canonical form. 
  297.  
  298.     (2)  The data encrypting key and other control information must be         generated. 
  299.  
  300.     (3)  The control information must be embodied in an appropriate MIME         content type. 
  301.  
  302.     (4)  The control information body part and the encrypted data body         part must be embodied in a multipart/encrypted content type. 
  303.  
  304.     The first step is defined by MIME.  The latter three steps are    described below. 
  305.  
  306. 2.2.1.  Encryption Control Information 
  307.  
  308.    The application of the encryption service generates control    information which includes the data encrypting key used to encrypt    the data itself.  The syntax of the control information is that of a    set of RFC 822 headers, except that the folding of header values onto    continuation lines is explicitly forbidden.  Each header and value    pair generated by the encryption service must be output on exactly    one line. 
  309.  
  310.    First, the originator must retrieve the public key of the recipient.    The retrieval may be from a local database or from a remote service.    The acquisition of the recipient's public key is outside the scope of    the specification, although Section 5 defines one possible mechanism. 
  311.  
  312.    With the public key, the originator encrypts the data encrypting key    according to the Key-Info: header defined below.  The complete set of    headers generated by the encryption service is as follows. 
  313.  
  314.    Version:       indicates which version of the MOSS protocol the remaining headers       represent and is defined in Section 2.1.2.1. 
  315.  
  316.    DEK-Info:       indicates the algorithm and mode used to encrypt the data. 
  317.  
  318.  
  319.  
  320.  Crocker, et al              Standards Track                    [Page 12] 
  321.  RFC 1848             MIME Object Security Services          October 1995 
  322.  
  323.     Recipient-ID:       indicates the public key used to encrypt the data encrypting key       that was used to encrypt the data. 
  324.  
  325.    Key-Info:       contains data encrypting key encrypted with the recipient's public       key. 
  326.  
  327.    Each invocation of the encryption service must emit exactly one    Version: header, exactly one DEK-Info: header, and at least one pair    of Recipient-ID: and Key-Info: headers.  Headers are always emitted    in the order indicated.  The Recipient-ID: and Key-Info: headers are    always emitted in pairs in the order indicated, one pair for each    recipient of the encrypted data.  A Key-Info: header is always    interpreted in the context of the immediately preceding Recipient-ID:    header. 
  328.  
  329.       IMPLEMENTORS NOTE: Implementors should always generate a       Recipient-ID: and Key-Info header pair representing the originator       of the encrypted data.  By doing so, if an originator sends a       message to a recipient that is returned undelivered, the       originator will be able to decrypt the message and determine an       appropriate course of action based on its content.  If not, an       originator will not be able to review the message that was sent. 
  330.  
  331. 2.2.1.1.  DEK-Info: 
  332.  
  333.    The purpose of the data encrypting key information header is to    indicate the algorithm and mode used to encrypt the data, along with    any cryptographic parameters that may be required, e.g.,    initialization vectors.  Its value is either a single argument    indicating the algorithm and mode or a comma separated pair of    arguments where the second argument carries any cryptographic    parameters required by the algorithm and mode indicated in the first    argument. 
  334.  
  335.    The data encrypting key information header is defined by the grammar    token <dekinfo> as follows. 
  336.  
  337.       <dekinfo>  ::= "DEK-Info" ":" <dekalgid>                      [ "," <dekparameters> ] CRLF 
  338.  
  339.    The grammar tokens for the encryption algorithm and mode identifier    (<dekalgid>) and the optional cryptographic parameters    (<dekparameters>) are defined by RFC 1423.  They are also reprinted    in Appendix B. 
  340.  
  341.  
  342.  
  343.  
  344.  
  345. Crocker, et al              Standards Track                    [Page 13] 
  346.  RFC 1848             MIME Object Security Services          October 1995 
  347.  
  348.  2.2.1.2.  Recipient-ID: 
  349.  
  350.    The purpose of the recipient header is to identify the private key    that must be used to decrypt the data encrypting key that will be    used to decrypt the data.  Presumably the recipient owns the private    key and thus is less interested in identifying the owner of the key    and more interested in the private key value itself.  Nonetheless,    the recipient header may convey either or both pieces of information: 
  351.  
  352.       the public key corresponding to the private key to be used to       decrypt the data encrypting key 
  353.  
  354.       the name of the owner and which of the owner's private keys to use       to decrypt the data encrypting key 
  355.  
  356.    The decision as to what information to place in the value rests    entirely with the originator.  The suggested choice is to include    just the public key.  However, some recipients may prefer that    originators not include their public key.  How this preference is    conveyed to and managed by the originator is outside the scope of    this specification. 
  357.  
  358.    The recipient header is defined by the grammar token <recipid> as    follows. 
  359.  
  360.       <recipid>  ::= "Recipient-ID:" <id> CRLF 
  361.  
  362.    The grammar token <id> is defined in Section 4. 
  363.  
  364. 2.2.1.3.  Key-Info: 
  365.  
  366.    The purpose of the key information header is to convey the encrypted    data encrypting key.  Its value is a comma separated list of two    arguments: the algorithm and mode identifier in which the data    encrypting key is encrypted and the encrypted data encrypting key. 
  367.  
  368.    The key information header is defined by the grammar token    <asymkeyinfo> as follows. 
  369.  
  370.       <asymkeyinfo>  ::= "Key-Info" ":" <ikalgid> "," <asymencdek> CRLF     The grammar tokens for the encryption algorithm and mode identifier    (<ikalgid>) and the encrypted data encrypting key format    (<asymsignmic>) are defined by RFC 1423.  They are also reprinted in    Appendix B. 
  371.  
  372.       IMPLEMENTORS NOTE: RFC 1423 is referenced by the PEM protocol,       which includes support for symmetric signatures and key 
  373.  
  374.  
  375.  
  376. Crocker, et al              Standards Track                    [Page 14] 
  377.  RFC 1848             MIME Object Security Services          October 1995 
  378.  
  379.        management.  As a result, some of the grammar tokens defined       there, for example, <ikalgid>, will include options that are not       legal for this protocol.  These options must be ignored and have       not been included in the appendix. 
  380.  
  381. 2.2.2.  application/moss-keys Content Type Definition 
  382.  
  383.    (1)  MIME type name: application 
  384.  
  385.    (2)  MIME subtype name: moss-keys 
  386.  
  387.    (3)  Required parameters: none 
  388.  
  389.    (4)  Optional parameters: none 
  390.  
  391.    (5)  Encoding considerations: quoted-printable is always sufficient 
  392.  
  393.    (6)  Security considerations: none 
  394.  
  395.    The "application/moss-keys" content type is used on the first body    part of an enclosing multipart/encrypted.  Its content is comprised    of the data encryption key used to encrypt the data in the second    body part and other control information required to decrypt the data,    as defined by Section 2.2.1.  The label "application/moss-keys" must    be used as the value of the protocol parameter of the enclosing    multipart/encrypted; the protocol parameter must be present. 
  396.  
  397.    An application/moss-keys body part is constructed as follows: 
  398.  
  399.       Content-Type: application/moss-keys 
  400.  
  401.       <mosskeys> 
  402.  
  403.    where the <mosskeys> token is defined as follows. 
  404.  
  405.       <mosskeys>      ::= <version> <dekinfo> 1*<recipasymflds> 
  406.  
  407.       <version>       ::= "Version:" "5" CRLF 
  408.  
  409.       <dekinfo>       ::= "DEK-Info" ":" <dekalgid>                           [ "," <dekparameters> ] CRLF 
  410.  
  411.       <recipasymflds> ::= <recipid> <asymkeyinfo> 
  412.  
  413.       <recipid>       ::= "Recipient-ID:" <id> CRLF 
  414.  
  415.       <asymkeyinfo>   ::= "Key-Info" ":" <ikalgid> "," <asymencdek> CRLF 
  416.  
  417.  
  418.  
  419.  Crocker, et al              Standards Track                    [Page 15] 
  420.  RFC 1848             MIME Object Security Services          October 1995 
  421.  
  422.     The token <id> is defined in Section 4.  The token <version> is    defined in Section 2.1.2.1.  All other tokens are defined in Section    2.2.1.3. 
  423.  
  424. 2.2.3.  Use of multipart/encrypted Content Type 
  425.  
  426.    The definition of the multipart/encrypted body part in [7] specifies    three steps for creating the body part. 
  427.  
  428.     (1)  The body part to be encrypted is created according to a local         convention, for example, with a text editor or a mail user         agent. 
  429.  
  430.     (2)  The body part is prepared for encryption according to the         protocol parameter, in this case the body part must be in MIME         canonical form. 
  431.  
  432.     (3)  The prepared body part is encrypted according to the protocol         parameter, in this case according to Section 2.2.1. 
  433.  
  434.     The multipart/encrypted content type is constructed as follows. 
  435.  
  436.     (1)  The value of its required parameter "protocol" is set to         "application/moss-keys". 
  437.  
  438.     (2)  The first body part is labeled "application/moss-keys" and is         filled with the control information generated by the encryption         service. 
  439.  
  440.     (3)  The encrypted body part becomes the content of its second body         part, which is labeled "application/octet-stream". 
  441.  
  442.     A multipart/encrypted content type with the MOSS protocol might look    as follows: 
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452. Crocker, et al              Standards Track                    [Page 16] 
  453.  RFC 1848             MIME Object Security Services          October 1995 
  454.  
  455.        Content-Type: multipart/encrypted;         protocol="application/moss-keys";         boundary="Encrypted Message" 
  456.  
  457.       --Encrypted Message       Content-Type: application/moss-keys 
  458.  
  459.       Version: 5       DEK-Info: DES-CBC,DEK-INFORMATION       Recipient-ID: ID-INFORMATION       Key-Info: RSA,KEY-INFORMATION 
  460.  
  461.       --Encrypted Message       Content-Type: application/octet-stream 
  462.  
  463.       ENCRYPTED-DATA       --Encrypted Message-- 
  464.  
  465.    where DEK-INFORMATION, ID-INFORMATION, and KEY-INFORMATION are    descriptive of the content that would appear in a real body part. 
  466.  
  467. 3.  Removing MIME Object Security Services 
  468.  
  469.    The verification of the MOSS digital signature service requires the    following components. 
  470.  
  471.     (1)  A recipient to verify the digital signature. 
  472.  
  473.     (2)  A multipart/signed body part with two body parts: the signed         data and the control information. 
  474.  
  475.     (3)  The public key of the originator. 
  476.  
  477.     The signed data and control information of the enclosing    multipart/signed are prepared according to the description below.    The digital signature is verified by re-computing the hash of the    data, decrypting the hash value in the control information with the    originator's public key, and comparing the two hash values.  If the    two hash values are equal, the signature is valid. 
  478.  
  479.    The decryption of the MOSS encryption service requires the following    components. 
  480.  
  481.  
  482.  
  483.  
  484.  
  485. Crocker, et al              Standards Track                    [Page 17] 
  486.  RFC 1848             MIME Object Security Services          October 1995 
  487.  
  488.     (1)  A recipient to decrypt the data. 
  489.  
  490.     (2)  A multipart/encrypted body part with two body parts: the         encrypted data and the control information. 
  491.  
  492.     (3)  The private key of the recipient. 
  493.  
  494.     The encrypted data and control information of the enclosing    multipart/encrypted are prepared according to the description below.    The data encrypting key is decrypted with the recipient's private key    and used to decrypt the data. 
  495.  
  496.    The next two sections describe the digital signature and encryption    services in detail, respectively. 
  497.  
  498. 3.1.  Digital Signature Service 
  499.  
  500.    This section describes the processing steps necessary to verify the    MOSS digital signature service.  The definition of the    multipart/signed body part in [7] specifies three steps for receiving    it. 
  501.  
  502.     (1)  The digitally signed body part and the control information body         part are prepared for processing. 
  503.  
  504.     (2)  The prepared body parts are made available to the digital         signature verification process. 
  505.  
  506.     (3)  The results of the digital signature verification process are         made available to the user and processing continues with the         digitally signed body part, as returned by the digital signature         verification process. 
  507.  
  508.     Each of these steps is described below. 
  509.  
  510. 3.1.1.  Preparation 
  511.  
  512.    The digitally signed body part (the data) and the control information    body part are separated from the enclosing multipart/signed body    part. 
  513.  
  514.  
  515.  
  516.  Crocker, et al              Standards Track                    [Page 18] 
  517.  RFC 1848             MIME Object Security Services          October 1995 
  518.  
  519.     The control information is prepared by removing any content transfer    encodings that may be present. 
  520.  
  521.    The digitally signed body part is prepared by leaving the content    transfer encodings intact and canonicalizing the line delimiters    according to Step 2 of Section 2.1.1. 
  522.  
  523. 3.1.2.  Verification 
  524.  
  525.    First, the recipient must obtain the public key of the originator.    The public key may be contained in the control information or it may    be necessary for the recipient to retrieve the public key based on    information present in the control information.  The retrieval may be    from a local database or from a remote service.  The acquisition of    the originator's public key is outside the scope of the    specification, although Section 5 defines one possible mechanism. 
  526.  
  527.    With the public key, the recipient decrypts the hash value contained    in the control information.  Then, a new hash value is computed over    the body part purported to have been digitally signed. 
  528.  
  529.    Finally, the two hash values are compared to determine the accuracy    of the digital signature. 
  530.  
  531. 3.1.3.  Results 
  532.  
  533.    There are two required components of the results of the verification    process.  The first is an indication as to whether a public key could    be found that allows the hash values in the previous step to compare    equal.  Such an indication verifies only that the data received is    the same data that was digitally signed. 
  534.  
  535.    The second indication identifies the owner of the public key who is    presumably the holder of the private key that created the digital    signature.  The indication must include a testament as to the    accuracy of the owner identification. 
  536.  
  537.    At issue is a recipient knowing who created the digital signature.    In order for the recipient to know with certainty who digitally    signed the message, the binding between the owner's name and the    public key must have been verified by the recipient prior to the    verification of the digital signature.  The verification of the    binding may have been completed offline and stored in a trusted,    local database or, if the owner's name and public key are embodied in    a certificate, it may be possible to complete it in realtime.  See    Section 5 for more information. 
  538.  
  539.  
  540.  
  541.  
  542.  
  543. Crocker, et al              Standards Track                    [Page 19] 
  544.  RFC 1848             MIME Object Security Services          October 1995 
  545.  
  546.  3.2.  Encryption Service 
  547.  
  548.    This section describes the processing steps necessary to decrypt the    MOSS encryption service.  The definition of the multipart/encrypted    body part in [7] specifies three steps for receiving it. 
  549.  
  550.     (1)  The encrypted body part and the control information body part         are prepared for processing. 
  551.  
  552.     (2)  The prepared body parts are made available to the decryption         process. 
  553.  
  554.     (3)  The results of the decryption process are made available to the         user and processing continues with the decrypted body part, as         returned by the decryption process. 
  555.  
  556.     Each of these steps is described below. 
  557.  
  558. 3.2.1.  Preparation 
  559.  
  560.    The encrypted body part (the data) and the control information body    part are separated from the enclosing multipart/encrypted body part.    The body parts are prepared for the decryption process by removing    any content transfer encodings that may be present. 
  561.  
  562. 3.2.2.  Decryption 
  563.  
  564.    First, the recipient must locate the encrypted data encrypting key in    the control information.  Each Recipient-ID: header is checked in    order to see if it identifies the recipient or a public key of the    recipient. 
  565.  
  566.    If it does, the immediately following Key-Info: header will contain    the data encrypting key encrypted with the public key of the    recipient.  The recipient must use the corresponding private key to    decrypt the data encrypting key. 
  567.  
  568.    The data is decrypted with the data encrypting key.  The decrypted    data will be a MIME object, a body part, ready to be processed by a    MIME agent. 
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576. Crocker, et al              Standards Track                    [Page 20] 
  577.  RFC 1848             MIME Object Security Services          October 1995 
  578.  
  579.  3.2.3.  Results 
  580.  
  581.    If the recipient is able to locate and decrypt a data encrypting key,    from the point of view of MOSS the decryption should be considered    successful.  An indication of the owner of the private key used to    decrypt the data encrypting key must be made available to the user. 
  582.  
  583.    Ultimately, the success of the decryption is dependent on the ability    of a MIME agent to continue processing with the decrypted body part. 
  584.  
  585. 4.  Identifying Originators, Recipients, and Their Keys 
  586.  
  587.    In the PEM specifications, public keys are required to be embodied in    certificates, an object that binds each public key with a    distinguished name.  A distinguished name is a name form that    identifies the owner of the public key.  The embodiment is issued by    a certification authority, a role that is expected to be trustworthy    insofar as the certification authority would have procedures to    verify the identity of the owner prior to issuing the certificate. 
  588.  
  589.    In MOSS, a user is not required to have a certificate.  The MOSS    services require that the user have at least one public/private key    pair.  The MOSS protocol requires the digital signature and    encryption services to emit Originator-ID: and Recipient-ID: headers,    as appropriate.  In the discussion above the actual value of these    headers was omitted, having been relegated to this section.  Although    the value of each of these headers serves a distinct purpose, for    simplicity the single grammar token <id> represents the value that    may be assigned to either header. 
  590.  
  591.    One possible value for the Originator-ID: and Recipient-ID: headers    is the public key values themselves.  However, while it is true that    the public keys alone could be exchanged and used by users to    communicate, the values are, in fact, large and cumbersome.  In    addition, public keys would appear as a random sequence of characters    and, as a result, would not be immediately consumable by human users. 
  592.  
  593.       NOTE: It should be pointed out that a feature of being able to       specify the public key explicitly is that it allows users to       exchange encrypted, anonymous mail.  In particular, receiving       users will always know a message comes from the same originating       user even if the real identity of the originating user is unknown. 
  594.  
  595.    Recognizing that the use of public keys is, in general, unsuitable    for use by humans, MOSS allows other identifiers in Originator-ID:    and Recipient-ID: headers.  These other identifiers are comprised of    two parts: a name form and a key selector. 
  596.  
  597.  
  598.  
  599.  Crocker, et al              Standards Track                    [Page 21] 
  600.  RFC 1848             MIME Object Security Services          October 1995 
  601.  
  602.     The name form is chosen and asserted by the user who owns the    public/private key pair.  Three name forms are specified by this    document.  The use of a distinguished name is retained for    compatibility with PEM (and compatibility with the X.500 Directory    should it become a ubiquitous service).  However, the Internet    community has a great deal of experience with the use of electronic    mail addresses as a name form.  Also, arbitrary strings are useful to    identify the owners of public keys when private name forms are used.    Hence, email addresses and arbitrary strings are included as name    forms to increase flexibility. 
  603.  
  604.    Since a user may have more than one public key and may wish to use    the same name form for each public key, a name form is insufficient    for uniquely identifying a public key.  A unique "key selector" must    be assigned to each public key.  The combination of a name form and    the key selector uniquely identifies a public key.  Throughout this    document, this combination is called an identifier.  There are 5    identifiers specified by this document. 
  605.  
  606.       NOTE: In the simplest case, key selectors will be assigned by the       owners of the public/private key pairs.  This works best when       users generate their own key pairs for personal use, from which       they distribute their public key to others asserting by       declaration that the public key belongs to them.  When the       assertion that the public key belongs to them is made by a third       party, for example when a certification authority issues a       certificate to a user according to [4], the key selector may be       assigned by that third party. 
  607.  
  608.    The value of the key selector must be unique with respect to the name    form with which it forms an identifier.  Although the same key    selector value may be used by more than one name form it must not be    used for two different keys with the same name form.  When considered    separately, neither a name form nor a key selector is sufficient for    identifying the public key to be used.  Either could be used to    determine a set of public keys that may be tried in turn until the    desired public key is identified. 
  609.  
  610.    With a public/private key pair for one's self and software that is    MOSS aware, an originating user may digitally sign arbitrary data and    send it to one or more recipients.  With the public keys of the    recipients, a user may encrypt the data so that only the intended    recipients can decrypt and read it.  With the name forms assigned to    the public keys, originators and recipients can easily recognize    their peers in a communication. 
  611.  
  612.    In the next section the 3 name forms are described in detail.    Following that is the specification of the 5 identifiers. 
  613.  
  614.  
  615.  
  616. Crocker, et al              Standards Track                    [Page 22] 
  617.  RFC 1848             MIME Object Security Services          October 1995 
  618.  
  619.  4.1.  Name Forms 
  620.  
  621.    There are 3 name forms specified by this document: email addresses,    distinguished names, and arbitrary strings. 
  622.  
  623. 4.1.1.  Email Addresses 
  624.  
  625.    The email address (grammar token <emailstr>) used must be a valid    RFC822 address, which is defined in terms of one of the two grammar    tokens <addr-spec> or <route-addr>.  The grammar for these two tokens    is included in the Appendix as a convenience; the definitive source    for these tokens is necessarily RFC822 [1]. 
  626.  
  627.       <emailstr>      ::= <addr-spec> / <route-addr>                           ; an electronic mail address as defined by                           ; one of these two tokens from RFC822 
  628.  
  629.    For example, the strings "crocker@tis.com", "galvin@tis.com",    "murphy@tis.com", and "ned@innosoft.com" are all email addresses. 
  630.  
  631. 4.1.2.  Arbitrary Strings 
  632.  
  633.    The arbitrary string (grammar token <string>) must have a length of    at least 1.  There are no other restrictions on the value chosen. 
  634.  
  635.       <string>        ::= ; a non-null sequence of characters 
  636.  
  637.    For example, the string 
  638.  
  639.       the SAAG mailing list maintainer 
  640.  
  641.    is an arbitrary string. 
  642.  
  643. 4.1.3.  Distinguished Names 
  644.  
  645.    The distinguished name (grammar token <dnamestr>) must be constructed    according to the guidelines of the X.500 Directory.  The actual    syntax of the distinguished name is outside the scope of this    specification.  However, RFC1422, for example, specifies syntactic    restrictions based on its choice of a certification hierarchy for    certificates. 
  646.  
  647.    For the purposes of conveying a distinguished name from an originator    to a recipient, it must be ASN.1 encoded and then printably encoded    according to the base64 encoding defined by MIME. 
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  Crocker, et al              Standards Track                    [Page 23] 
  654.  RFC 1848             MIME Object Security Services          October 1995 
  655.  
  656.        <dnamestr>      ::= <encbin>                           ; a printably encoded, ASN.1 encoded                           ; distinguished name (as defined by the 'Name'                           ; production specified in X.501 [8]) 
  657.  
  658.    For example, 
  659.  
  660.       /Country Name=US       /State or Province Name=MD       /Organization Name=Trusted Information Systems       /Organizational Unit Name=Glenwood       /Common Name=James M. Galvin/ 
  661.  
  662.    is a distinguished name in a user friendly format (line breaks and    leading spaces present only to improve readability).  When encoded,    it would appear as follows (line breaks present only to improve    readability): 
  663.  
  664.       MG0xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNRDEkMCIGA1UEChMbVHJ1c3RlZCBJ       bmZvcm1hdGlvbiBTeXN0ZW1zMREwDwYDVQQLEwhHbGVud29vZDEYMBYGA1UEAxMP       SmFtZXMgTS4gR2Fsdmlu 
  665.  
  666. 4.2.  Identifiers 
  667.  
  668.    There are 5 types of identifiers specified by this document: 
  669.  
  670.       email address identifiers 
  671.  
  672.       arbitrary string identifiers 
  673.  
  674.       distinguished name identifiers 
  675.  
  676.       the public keys themselves 
  677.  
  678.       issuer name serial number pairs from a certificate 
  679.  
  680.    All of these have approximately the same structure (except issuer    name and serial number which has 'TYPE, STRING, KEYSEL' for    historical reasons): 
  681.  
  682.       TYPE, KEYSEL, STRING 
  683.  
  684.    The TYPE field is a literal string chosen from the set "EN", "STR",    "DN", "PK", and "IS", one for each of the possible identifiers. 
  685.  
  686.    The KEYSEL field is used to distinguish between the multiple public    keys that may be associated with the name form in the STRING field.    Its value must be unique with respect to all other key selectors used 
  687.  
  688.  
  689.  
  690. Crocker, et al              Standards Track                    [Page 24] 
  691.  RFC 1848             MIME Object Security Services          October 1995 
  692.  
  693.     with the same name form.  An example would be to use a portion (low-    order 16 or 32 bits) or all of the actual public key used. 
  694.  
  695.    The STRING field is the name form and has a different syntax    according to the value of the TYPE field. 
  696.  
  697.    The identifier used in each of the originator and recipient fields is    described by the following grammar.  The definition of the key    selector token is included here since it used by several of the    identifiers below. 
  698.  
  699.       <id>            ::=   <id-email> / <id-string>    / <id-dname>                           / <id-publickey> / <id-issuer> 
  700.  
  701.       <keysel>        ::= 1*<hexchar>                           ; hex dump of a non-null sequence of octets 
  702.  
  703.    Each of the identifier name forms is described below. 
  704.  
  705. 4.2.1.  Email Address 
  706.  
  707.    The email address identifier has the following syntax. 
  708.  
  709.       <id-email>      ::= "EN"  "," <keysel> "," <emailstr> CRLF 
  710.  
  711.    The syntax of the token <emailstr> is defined in Section 4.1.1. 
  712.  
  713.    For example: 
  714.  
  715.       EN,1,galvin@tis.com 
  716.  
  717.    is an email address identifier. 
  718.  
  719. 4.2.2.  Arbitrary String 
  720.  
  721.    The arbitrary string identifier has the following syntax. 
  722.  
  723.       <id-string>     ::= "STR" "," <keysel> "," <string> CRLF 
  724.  
  725.    The syntax of the token <string> is defined in Section 4.1.2. 
  726.  
  727.    For example: 
  728.  
  729.       STR,1,The SAAG mailing list maintainer 
  730.  
  731.    is an arbitrary string identifier. 
  732.  
  733.  
  734.  
  735.  
  736.  
  737. Crocker, et al              Standards Track                    [Page 25] 
  738.  RFC 1848             MIME Object Security Services          October 1995 
  739.  
  740.  4.2.3.  Distinguished Name 
  741.  
  742.    The distinguished name identifier has the following syntax. 
  743.  
  744.       <id-dname>      ::= "DN"  "," <keysel> "," <dnamestr> CRLF 
  745.  
  746.    The syntax of the token <dnamestr> is defined in Section 4.1.3. 
  747.  
  748.    For example (line breaks present only to improve readability): 
  749.  
  750.       DN,1,MG0xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNRDEkMCIGA1UEChMbVHJ1c3R       lZCBJbmZvcm1hdGlvbiBTeXN0ZW1zMREwDwYDVQQLEwhHbGVud29vZDEYMBYGA1U       EAxMPSmFtZXMgTS4gR2Fsdmlu 
  751.  
  752.    is a distinguished name identifier. 
  753.  
  754. 4.2.4.  Public Key 
  755.  
  756.    The public key identifier has the following syntax. 
  757.  
  758.       <id-publickey>  ::= "PK"  "," <publickey> [ "," <id-subset> ] CRLF 
  759.  
  760.       <publickey>     ::= <encbin>                           ; a printably encoded, ASN.1 encoded public                           ; key (as defined by the                           ; 'SubjectPublicKeyInfo' production specified                           ; in X.509 [9]) 
  761.  
  762.       <id-subset>     ::= <id-email> / <id-string> / <id-dname> 
  763.  
  764.    The production SubjectPublicKeyInfo is imported from the X.500    Directory from the certificate object.  It is currently the best    choice for a general purpose public key encoding. 
  765.  
  766.    For example, (line breaks present only to improve readability): 
  767.  
  768.       PK,MHkwCgYEVQgBAQICAwADawAwaAJhAMAHQ45ywA357G4fqQ61aoC1fO6BekJmG       4475mJkwGIUxvDkwuxe/EFdPkXDGBxzdGrW1iuh5K8kl8KRGJ9wh1HU4TrghGdhn       0Lw8gG67Dmb5cBhY9DGwq0CDnrpKZV3cQIDAQAB 
  769.  
  770.    is a public key identifier without the optional <id-subset>. 
  771.  
  772.    In normal usage, the token <id-subset> is expected to be present.  It    represents a mechanism by which an identifier (name form and key    selector) can be associated with a public key.  Recipients of a    public key identifier must take care to verify the accuracy of the    purported association.  If they do not, it may be possible for a    malicious originator to assert an identifier that accords the 
  773.  
  774.  
  775.  
  776. Crocker, et al              Standards Track                    [Page 26] 
  777.  RFC 1848             MIME Object Security Services          October 1995 
  778.  
  779.     originator unauthorized privileges.  See Section 5.2 for more    details. 
  780.  
  781.    For example, (line breaks present only to improve readability): 
  782.  
  783.       PK,MHkwCgYEVQgBAQICAwADawAwaAJhAMAHQ45ywA357G4fqQ61aoC1fO6BekJmG       4475mJkwGIUxvDkwuxe/EFdPkXDGBxzdGrW1iuh5K8kl8KRGJ9wh1HU4TrghGdhn       0Lw8gG67Dmb5cBhY9DGwq0CDnrpKZV3cQIDAQAB,EN,2,galvin@tis.com 
  784.  
  785.    is a public key identifier with the optional <id-subset>. 
  786.  
  787. 4.2.5.  Issuer Name and Serial Number 
  788.  
  789.    The issuer name and serial number identifier has the following    syntax. 
  790.  
  791.       <id-issuer>     ::= "IS"  "," <dnamestr>  "," <serial> CRLF 
  792.  
  793.       <serial>        ::= 1*<hexchar>                           ; hex dump of a certificate serial number 
  794.  
  795.    The <id-issuer> identifier is included for compatibility with the    ID-ASymmetric fields defined in [3] (and compatibility with X.500    Directory certificates should they become ubiquitously available).    Its syntax was chosen such that the older fields are easily converted    to this new form by prefixing the old value with "IS" (and replacing    the field name of [3] with an appropriate new ID field name).  For    example, (line breaks present only to improve readability): 
  796.  
  797.       IS,MFMxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNRDEkMCIGA1UEChMbVHJ1c3       RlZCBJbmZvcm1hdGlvbiBTeXN0ZW1zMREwDwYDVQQLEwhHbGVud29vZA==,02 
  798.  
  799.    is an issuer name and serial number identifier according to MOSS,    while 
  800.  
  801.       MFMxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNRDEkMCIGA1UEChMbVHJ1c3       RlZCBJbmZvcm1hdGlvbiBTeXN0ZW1zMREwDwYDVQQLEwhHbGVud29vZA==,02 
  802.  
  803.    is an issuer name and serial number identifier according to PEM. 
  804.  
  805. 5.  Key Management Content Types 
  806.  
  807.    This document defines two key management content types: one for    requesting cryptographic key material and one for sending    cryptographic key material.  Since MOSS depends only on the existence    of public/private key pairs, these content types provide a means for    conveying public keys and an assertion as to the identity of the    owner.  In addition, in order to be compatible with the certificate- 
  808.  
  809.  
  810.  
  811. Crocker, et al              Standards Track                    [Page 27] 
  812.  RFC 1848             MIME Object Security Services          October 1995 
  813.  
  814.     base key management system proposed by RFC 1422, the content types    may also be used to convey certificate and certificate revocation    list material. 
  815.  
  816.    The functions defined here are based on the exchange of body parts.    In particular, a user would send a message containing at least one    application/mosskey-request content, as defined below.  In response,    a user would expect to receive a message containing at least one    application/mosskey-data content, as defined below.  MIME provides a    convenient framework for a user to send several request body parts    and to receive several data (response) body parts in one message. 
  817.  
  818. 5.1.  application/mosskey-request Content Type Definition 
  819.  
  820.    (1)  MIME type name: application 
  821.  
  822.    (2)  MIME subtype name: mosskey-request 
  823.  
  824.    (3)  Required parameters: none 
  825.  
  826.    (4)  Optional parameters: none 
  827.  
  828.    (5)  Encoding considerations: quoted-printable is always sufficient 
  829.  
  830.    (6)  Security Considerations: none 
  831.  
  832.    The content of this body part corresponds to the following    production. 
  833.  
  834.       <request>       ::= <version>                           ( <subject> / <issuer> / <certification> ) 
  835.  
  836.       <version>       ::= "Version:" "5" CRLF 
  837.  
  838.       <subject>       ::= "Subject:" <id> CRLF 
  839.  
  840.       <issuer>        ::= "Issuer:" <id> CRLF 
  841.  
  842.       <certification> ::= "Certification:" <encbin> CRLF 
  843.  
  844.    A user would use this content type to specify needed cryptographic    key information.  The message containing this content type might be    directed towards an automatic or manual responder, which may be    mail-based, depending on the local implementation and environment.    The application/mosskey-request content type is an independent body    part because it is entirely independent of any other body part. 
  845.  
  846.  
  847.  
  848.  
  849.  
  850. Crocker, et al              Standards Track                    [Page 28] 
  851.  RFC 1848             MIME Object Security Services          October 1995 
  852.  
  853.     If the application/mosskey-request content contains a Certification:    field it requests certification of the self-signed certificate in the    field value.  If the content contains an Issuer: field it requests    the Certificate Revocation List (CRL) chain beginning with the CRL of    the issuer identified in the field value.  If the content contains a    Subject: field it requests either the public key of the subject or a    certificate chain beginning with the subject identified in the field    value, or both if both exist. 
  854.  
  855.    The Subject: and Issuer: fields each contain a value of type <id>,    which is defined in Section 4. 
  856.  
  857.    One possible response to receiving an application/mosskey-request    body part is to construct and return an application/mosskey-data body    part.  When returning public keys, certificate chains, and    certificate revocation list chains, if there exists more than one,    several application/mosskey-data body parts are to be returned in the    reply message, one for each. 
  858.  
  859. 5.2.  application/mosskey-data Content Type Definition 
  860.  
  861.    The principal objective of this content type is to convey    cryptographic keying material from a source to a destination.  This    might be in response to the receipt of an application/mosskey-request    content type or it might be in anticipation of receiving an    application/mosskey-request if it is not sent, e.g., it may be    combined with a multipart/signed object by an originator to ensure    that a recipient has the cryptographic keying material necessary to    verify the signature.  When combined with other content types, the    processing by a recipient is enhanced if the application/mosskey-data    content type is positioned in its enclosing content type prior to the    content types that will make use of its cryptographic keying    material. 
  862.  
  863.    However, no explicit provision is made in this document for    determining the authenticity or accuracy of the data being conveyed.    In particular, when a public key and its identifier is conveyed,    there is nothing to prevent the source or an interloper along the    path from the source to the destination from substituting alternate    values for either the public key or the identifier. 
  864.  
  865.    It is incumbent upon a recipient to verify the authenticity and    accuracy of the data received in this way prior to its use.  This    problem can be addressed by the use of certificates, since a    certification hierarchy is a well-defined mechanism that conveniently    supports the automatic verification of the data.  Alternatively, the    source of the application/mosskey-data body part could digitally sign    it.  In this way, if the destination believes that a correct source's 
  866.  
  867.  
  868.  
  869. Crocker, et al              Standards Track                    [Page 29] 
  870.  RFC 1848             MIME Object Security Services          October 1995 
  871.  
  872.     public key is available locally and if the destination believes the    source would convey accurate data, then the contents of the    application/mosskey-data from the source could be believed to be    accurate. 
  873.  
  874.       NOTE: Insofar as a certificate represents a mechanism by which a       third party vouches for the binding between a name and a public       key, the signing of an application/mosskey-data body part is a       similar mechanism. 
  875.  
  876.    (1)  MIME type name: application 
  877.  
  878.    (2)  MIME subtype name: mosskey-data 
  879.  
  880.    (3)  Required parameters: none 
  881.  
  882.    (4)  Optional parameters: none 
  883.  
  884.    (5)  Encoding considerations: quoted-printable is always sufficient. 
  885.  
  886.    (6)  Security Considerations: none 
  887.  
  888.    The content of this body part corresponds to the following    production. 
  889.  
  890.       <mosskeydata>   ::= <version>                           ( <publickeydata> / <certchain> / <crlchain> ) 
  891.  
  892.       <version>       ::= "Version:" "5" CRLF 
  893.  
  894.       <publickeydata> ::= "Key:" "PK" "," <publickey> ","                           <id-subset> CRLF 
  895.  
  896.       <certchain>     ::= <cert> *( [ <crl> ] <cert> ) 
  897.  
  898.       <crlchain>      ::= 1*( <crl> [ <cert> ] ) 
  899.  
  900.       <cert>          ::= "Certificate:" <encbin> CRLF 
  901.  
  902.       <crl>           ::= "CRL:" <encbin> CRLF 
  903.  
  904.    This content type is used to transfer public keys, certificate    chains, or Certificate Revocation List (CRL) chains.  The information    in the body part is entirely independent of any other body part.    (Note that the converse is not true: the validity of a protected body    part cannot be determined without the proper public keys,    certificates, or current CRL information.)  As such, the    application/mosskey-data content type is an independent body part. 
  905.  
  906.  
  907.  
  908. Crocker, et al              Standards Track                    [Page 30] 
  909.  RFC 1848             MIME Object Security Services          October 1995 
  910.  
  911.     The <publickeydata> production contains exactly one public key.  It    is used to bind a public key with its corresponding name form and key    selector.  It is recommended that when responders are returning this    information that the enclosing body part be digitally signed by the    responder in order to protect the information.  The <id-subset> token    is defined in Section 4.2.4. 
  912.  
  913.    The <certchain> production contains one certificate chain.  A    certificate chain starts with the requested certificate and continues    with the certificates of subsequent issuers.  Each issuer certificate    included must have issued the preceding certificate.  For each    issuer, a CRL may be supplied.  A CRL in the chain belongs to the    immediately following issuer.  Therefore, it potentially contains the    immediately preceding certificate. 
  914.  
  915.    The <crlchain> production contains one certificate revocation list    chain.  The CRLs in the chain begin with the requested CRL and    continue with the CRLs of subsequent issuers.  The issuer of each CRL    is presumed to have issued a certificate for the issuer of the    preceding CRL.  For each CRL, the issuer's certificate may be    supplied.  A certificate in the chain must belong to the issuer of    the immediately preceding CRL.     The relationship between a certificate and an immediately preceding    CRL is the same in both <certchain> and <crlchain>.  In a <certchain>    the CRLs are optional.  In a <crlchain> the certificates are    optional. 
  916.  
  917. 6.  Examples 
  918.  
  919.    Each example is included as a separate section for ease of reference. 
  920.  
  921. 6.1.  Original Message Prepared for Protection 
  922.  
  923.    Except as explicitly indicated, the following message is used as the    message to be protected. 
  924.  
  925.       To: Ned Freed <ned@innosoft.com>       Subject: Hi Ned! 
  926.  
  927.       How do you like the new MOSS? 
  928.  
  929.       Jim 
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  Crocker, et al              Standards Track                    [Page 31] 
  938.  RFC 1848             MIME Object Security Services          October 1995 
  939.  
  940.  6.2.  Sign Text of Original Message 
  941.  
  942.    When the text of the original message is signed, it will look like    this, where lines with an ampersand '&' are digitally signed (note    the use of the public key identifier with the included email name    identifier, on the lines marked with an asterisk '*'): 
  943.  
  944.         To: Ned Freed <ned@innosoft.com>         Subject: Hi Ned!         MIME-Version: 1.0         Content-Type: multipart/signed;           protocol="application/moss-signature";           micalg="rsa-md5"; boundary="Signed Boundary" 
  945.  
  946.         --Signed Boundary       & Content-Type: text/plain; charset="us-ascii"       & Content-ID: <21436.785186814.2@tis.com>       &       & How do you like the new MOSS?       &       & Jim 
  947.  
  948.         --Signed Boundary         Content-Type: application/moss-signature         Content-ID: <21436.785186814.1@tis.com>         Content-Transfer-Encoding: quoted-printable 
  949.  
  950.         Version: 5       * Originator-ID: PK,MHkwCgYEVQgBAQICAwADawAwaAJhAMAHQ45ywA357G4f=       * qQ61aoC1fO6BekJmG4475mJkwGIUxvDkwuxe/EFdPkXDGBxzdGrW1iuh5K8kl8=       * KRGJ9wh1HU4TrghGdhn0Lw8gG67Dmb5cBhY9DGwq0CDnrpKZV3cQIDAQAB,EN,=       * 2,galvin@tis.com         MIC-Info: RSA-MD5,RSA,PnEvyFV3sSyTSiGh/HFgWUIFa22jbHoTrFIMVERf=         MZXUKzFsHbmKtIowJlJR56OoImo+t7WjRfzpMH7MOKgPgzRnTwk0T5dOcP/lfb=         sOVJjleV7vTe9yoNp2P8mi/hs7 
  951.  
  952.         --Signed Boundary-- 
  953.  
  954. 6.3.  Sign Headers and Text of Original Message 
  955.  
  956.    If, instead, we choose to protect the headers with the text of the    original message, it will look like this, where lines with an    ampersand '&' are encrypted: 
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  Crocker, et al              Standards Track                    [Page 32] 
  965.  RFC 1848             MIME Object Security Services          October 1995 
  966.  
  967.          To: Ned Freed <ned@innosoft.com>         Subject: Hi Ned!         MIME-Version: 1.0         Content-Type: multipart/signed;           protocol="application/moss-signature";           micalg="rsa-md5"; boundary="Signed Boundary" 
  968.  
  969.         --Signed Boundary       & Content-Type: message/rfc822       & Content-ID: <21468.785187044.2@tis.com>       &       & To:         Ned Freed <ned@innosoft.com>       & Subject:    Hi Ned!       &       &       & How do you like the new MOSS?       &       & Jim 
  970.  
  971.         --Signed Boundary         Content-Type: application/moss-signature         Content-ID: <21468.785187044.1@tis.com>         Content-Transfer-Encoding: quoted-printable 
  972.  
  973.         Version: 5         Originator-ID: PK,MHkwCgYEVQgBAQICAwADawAwaAJhAMAHQ45ywA357G4f=         qQ61aoC1fO6BekJmG4475mJkwGIUxvDkwuxe/EFdPkXDGBxzdGrW1iuh5K8kl8=         KRGJ9wh1HU4TrghGdhn0Lw8gG67Dmb5cBhY9DGwq0CDnrpKZV3cQIDAQAB,EN,=         2,galvin@tis.com         MIC-Info: RSA-MD5,RSA,ctbDBgkYtFW1sisb5w4/Y/p94LftgQ0IrEn3d6WT=         wjfxFBvAceVWfawsZPLijVKZUYtbIqJmjKtzTJlagBawfA/KhUsvTZdR6Dj+4G=         d8dBBwMKvqMKTHAUxGXYxwNdbK 
  974.  
  975.         --Signed Boundary-- 
  976.  
  977. 6.4.  Encrypt Text of a Message 
  978.  
  979.    If we choose to encrypt the text of the following message, that is,    encrypt the lines marked with asterisk '*': 
  980.  
  981.         To: Jim Galvin <galvin@tis.com>         Subject: an encrypted message 
  982.  
  983.       * How do you like the new MOSS?       *       * Jim 
  984.  
  985.  
  986.  
  987.  
  988.  
  989. Crocker, et al              Standards Track                    [Page 33] 
  990.  RFC 1848             MIME Object Security Services          October 1995 
  991.  
  992.     the message would look as follows (note the use of the email name    identifier, on the line marked with an asterisk '*'): 
  993.  
  994.         To: Jim Galvin <galvin@tis.com>         Subject: an encrypted message         MIME-Version: 1.0         Content-Type: multipart/encrypted;           protocol="application/moss-keys";           boundary="Encrypted Boundary" 
  995.  
  996.         --Encrypted Boundary         Content-Type: application/moss-keys         Content-ID: <21535.785187667.1@tis.com>         Content-Transfer-Encoding: quoted-printable 
  997.  
  998.         Version: 5         DEK-Info: DES-CBC,D488AAAE271C8159       * Recipient-ID: EN,2,galvin@tis.com         Key-Info: RSA,ISbC3IR01BrYq2rp493X+Dt7WrVq3V3/U/YXbxOTY5cmiy1/=         7NvSqqXSK/WZq05lN99RDUQhdNxXI64ePAbFWQ6RGoiCrRs+Dc95oQh7EFEPoT=         9P6jyzcV1NzZVwfp+u 
  999.  
  1000.         --Encrypted Boundary         Content-Type: application/octet-stream         Content-Transfer-Encoding: base64 
  1001.  
  1002.         AfR1WSeyLhy5AtcX0ktUVlbFC1vvcoCjYWy/yYjVj48eqzUVvGTGMsV6MdlynU         d4jcJgRnQIQvIxm2VRgH8W8MkAlul+RWGu7jnxjp0sNsU562+RZr0f4F3K3n4w         onUUP265UvvMj23RSTguZ/nl/OxnFM6SzDgV39V/i/RofqI= 
  1003.  
  1004.         --Encrypted Boundary-- 
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  Crocker, et al              Standards Track                    [Page 34] 
  1025.  RFC 1848             MIME Object Security Services          October 1995 
  1026.  
  1027.  6.5.  Encrypt the Signed Text of a Message 
  1028.  
  1029.    If, instead, we choose to sign the text before we encrypt it, the    structure would be as follows, where lines with an asterisk '*' are    digitally signed and lines with an ampersand '&' are encrypted: 
  1030.  
  1031.           Content-Type: multipart/encrypted;             protocol="application/moss-keys";             boundary="Encrypted Boundary" 
  1032.  
  1033.           --Encrypted Boundary           Content-Type: application/moss-keys 
  1034.  
  1035.           KEY INFORMATION 
  1036.  
  1037.           --Encrypted Boundary           Content-Type: application/octet-stream 
  1038.  
  1039.       &   Content-Type: multipart/signed;       &     protocol="application/moss-signature";       &     micalg="rsa-md5"; boundary="Signed Boundary"       &       &   --Signed Boundary       & * Content-Type: text/plain       & *       & * How do you like the new MOSS?       & *       & * Jim       &       &   --Signed Boundary       &   Content-Type: application/moss-signature       &       &   SIGNATURE INFORMATION       &       &   --Signed Boundary-- 
  1040.  
  1041.           --Encrypted Boundary-- 
  1042.  
  1043.    where KEY INFORMATION and SIGNATURE INFORMATION are descriptive of    the actual content that would appear in a real body part.  The actual    message would be like this: 
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  Crocker, et al              Standards Track                    [Page 35] 
  1054.  RFC 1848             MIME Object Security Services          October 1995 
  1055.  
  1056.        To: Jim Galvin <galvin@tis.com>       Subject: an encrypted message       MIME-Version: 1.0       Content-Type: multipart/encrypted;         protocol="application/moss-keys";         boundary="Encrypted Boundary" 
  1057.  
  1058.       --Encrypted Boundary       Content-Type: application/moss-keys       Content-ID: <21546.785188458.1@tis.com>       Content-Transfer-Encoding: quoted-printable 
  1059.  
  1060.       Version: 5       DEK-Info: DES-CBC,11CC89F8D90F1DFE       Recipient-ID: EN,2,galvin@tis.com       Key-Info: RSA,AZTtlEc6xm0vjkvtVUITUh7sz+nOuOwP0tsym6CQozD9IwVIJz=       Y8+vIfbh5BpR0kS6prq3EGFBFR8gRMUvbgHtEKPD/4ICQ7b6ssZ7FmKhl/cJC5rV=       jpb4EOUlwOXwRZ 
  1061.  
  1062.       --Encrypted Boundary       Content-Type: application/octet-stream       Content-Transfer-Encoding: base64 
  1063.  
  1064.       ZvWvtosDzRBXJzkDFFRb9Qjrgm2nDWg3zotJ3ZpExpWUG/aRJ7Vwd+PWkSfrDPJ5       2V/wkxwMrum6xJHZonrtyd0AvaztvriMm2zXTefzwpGG1i5zK47PBqreLA3HDTK2       U6B13vzpE8wMSVefzaCTSpXRSCh08ceVEZrIYS53/CKZV2/Sga71pGNlux8MsJpY       Lwdj5Q3NKocg1LMngMo8yrMAe+avMjfOnhui49Xon1Gft+N5XDH/+wI9qxI9fkQv       NZVDlWIhCYEkxd5ke549tLkJjEqHQbgJW5C+K/uxdiD2dBt+nRCXcuO0Px3yKRyY       g/9BgTf36padSHuv48xBg5YaqaEWpEzLI0Qd31vAyP23rqiPhfBn6sjhQ2KrWhiF       2l3TV8kQsIGHHZUkaUbqkXJe6PEdWWhwsqCFPDdkpjzQRrTuJH6xleNUFg+CG1V+       tL4IgMjQqm3KVojRXx8bG2auVN89NfwFswmoq4fXTrh3xyVS1VgxjKkcYI8SVVmk       YjCxVviJP3zO2UzBvCoMfADtBVBz1njYETtVGDO97uT39MqL85uEgiF4E5TkOj/m       04+88G0/vvN/RISKJiFQJ3FyVIB/ShX9Dixl8WCx3rxwN5g2QFLiyQVulzuNhimS       D4ZxEo7smcTsAXUjwSLRtdjmTTutw2GmFESUaIrY81NcpQJRPNAvF0IkN6ddwL4q       vzUS99vjQp15g9FUv82lHtHwhM18a9GokVG8xYOjBBsn9anp9abh4Tp/c/vpbunQ       UqnpV29rF4wj+8OwUOMi9ymGabBXAjw7DhNH2RdRVr1upQO896OX81VWB0LsA0cp       +ymxhTrEI+wCHcrsNMoRK/7zAeuAi0f1t9bN594EFlLoIrBnKEa1/OUAhMT7kG1f       NkSRnc8BZswIoPyRetsTurQfD40nsVHvNwE9Jz7wbBo00gd6blPADOUYFxfW5zu6       ubygBqJiKPM4II2fCdNj7CptfQcoRTeguKMVPLVmFg/EINuWBFm10GqlYT7p4zhf       zysV/3r5LVZ1E8armTCRJ2GoYG5h+SKcytaQ0IT8S2nLPCZl1hzdajsrqHFe8omQ 
  1065.  
  1066.       --Encrypted Boundary-- 
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076. Crocker, et al              Standards Track                    [Page 36] 
  1077.  RFC 1848             MIME Object Security Services          October 1995 
  1078.  
  1079.  6.6.  Protecting Audio Content 
  1080.  
  1081.    In addition to text, the MOSS services as defined here will protect    arbitrary body parts, for example, the following audio body part: 
  1082.  
  1083.       Content-Type: audio/basic 
  1084.  
  1085.       AUDIO DATA HERE 
  1086.  
  1087. 6.6.1.  Sign Audio Content 
  1088.  
  1089.    When signed an audio content would appear as follows, where lines    with an ampersand '&' are digitally signed: 
  1090.  
  1091.         Content-Type: multipart/signed;           protocol="application/moss-signature";           micalg="rsa-md5"; boundary="Signed Boundary" 
  1092.  
  1093.         --Signed Boundary       & Content-Type: audio/basic       & Content-Transfer-Encoding: base64       &       & base64(AUDIO-DATA-HERE) 
  1094.  
  1095.         --Signed Boundary         Content-Type: application/moss-signature 
  1096.  
  1097.         SIGNATURE-INFORMATION-HERE 
  1098.  
  1099.         --Signed Boundary-- 
  1100.  
  1101.    where AUDIO-DATA-HERE and SIGNATURE-INFORMATION-HERE are descriptive    of the content that would appear in a real body part. 
  1102.  
  1103. 6.6.2.  Encrypt Audio Content 
  1104.  
  1105.    When encrypted an audio content would appear as follows, where lines    with an ampersand '&' are encrypted: 
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119. Crocker, et al              Standards Track                    [Page 37] 
  1120.  RFC 1848             MIME Object Security Services          October 1995 
  1121.  
  1122.          Content-Type: multipart/encrypted;           protocol="application/moss-keys";           boundary="Encrypted Boundary" 
  1123.  
  1124.         --Encrypted Boundary         Content-Type: application/moss-keys 
  1125.  
  1126.         KEY-INFORMATION-HERE 
  1127.  
  1128.         --Encrypted Boundary         Content-Type: application/octet-stream         Content-Transfer-Encoding: base64 
  1129.  
  1130.       & Content-Type: audio/basic       &       & base64(encrypted(AUDIO-DATA-HERE)) 
  1131.  
  1132.         --Encrypted Boundary-- 
  1133.  
  1134.    where KEY-INFORMATION-HERE and AUDIO-DATA-HERE are descriptive of the    content that would appear in a real body part. 
  1135.  
  1136. 7.  Observations 
  1137.  
  1138.    The use of MIME and the framework defined by [7] exhibits several    properties: 
  1139.  
  1140.     (1)  It allows arbitrary content types to be protected, not just the         body of an RFC822 message. 
  1141.  
  1142.     (2)  It allows a message to contain several body parts which may or         may not be protected. 
  1143.  
  1144.     (3)  It allows the components of a multipart or message content to be         protected with different services. 
  1145.  
  1146.     The use of a MIME-capable user agent makes complex nesting of    protected message body parts much easier.  For example, the user can    separately sign and encrypt a message.  This allows complete    separation of the confidentiality security service from the digital    signature security service.  That is, different key pairs could be    used for the different services and could be protected separately. 
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152. Crocker, et al              Standards Track                    [Page 38] 
  1153.  RFC 1848             MIME Object Security Services          October 1995 
  1154.  
  1155.     This is useful for at least two reasons.  First, some public key    algorithms do not support both digital signatures and encryption; two    key pairs would be required in this case.  Second, an employee's    company could be given access to the (private) decryption key but not    the (private) signature key, thereby granting the company the ability    to decrypt messages addressed to the employee in emergencies without    also granting the company the ability to sign messages as the    employee. 
  1156.  
  1157. 8.  Comparison of MOSS and PEM Protocols 
  1158.  
  1159.    MOSS differs from PEM in the following ways. 
  1160.  
  1161.     (1)  When using PEM, users are required to have certificates.  When         using MOSS, users need only have a public/private key pair. 
  1162.  
  1163.     (2)  MOSS broadens the allowable name forms that users may use to         identify their public keys, including arbitrary strings, email         addresses, or distinguished names. 
  1164.  
  1165.     (3)  PEM currently only supports text-based electronic mail messages         and the message text is required to be represented by the ASCII         character set with "<CR><LF>" line delimiters.  These         restrictions no longer apply. 
  1166.  
  1167.     (4)  The PEM specification currently requires that encryption         services be applied only to message bodies that have been         signed.  By providing for each of the services separately, they         may be applied in any order according to the needs of the         requesting application. 
  1168.  
  1169.     (5)  MIME includes transfer encoding operations to ensure the         unmodified transfer of body parts.  Therefore, unlike PEM, MOSS         does not need to include these functions. 
  1170.  
  1171.     (6)  PEM specifies a Proc-Type: header field to identify the type of         processing that was performed on the message.  This         functionality is subsumed by the MIME Content-Type: headers.         The Proc-Type: header also includes a decimal number that is         used to distinguish among incompatible encapsulated header field         interpretations which may arise as changes are made to the PEM         standard.  This functionality is replaced by the Version: header 
  1172.  
  1173.  
  1174.  
  1175. Crocker, et al              Standards Track                    [Page 39] 
  1176.  RFC 1848             MIME Object Security Services          October 1995 
  1177.  
  1178.          specified in this document. 
  1179.  
  1180.     (7)  PEM specifies a Content-Domain: header, the purpose of which is         to describe the type of the content which is represented within         a PEM message's encapsulated text.  This functionality is         subsumed by the MIME Content-Type: headers. 
  1181.  
  1182.     (8)  The PEM specifications include a document that defines new types         of PEM messages, specified by unique values used in the Proc-         Type: header, to be used to request certificate and certificate         revocation list information.  This functionality is subsumed by         two new content types specified in this document:         application/mosskey- request and application/mosskey-data. 
  1183.  
  1184.     (9)  The header fields having to do with certificates (Originator-         Certificate: and Issuer-Certificate:) and CRLs (CRL:) are         relegated for use only in the application/mosskey-data and         application/mosskey-request content types and are no longer         allowed in the header portion of a PEM signed or encrypted         message.  This separates key management services from the         digital signature and encryption services. 
  1185.  
  1186.     (10) The grammar specified here explicitly separates the header         fields that may appear for the encryption and signature security         services.  It is the intent of this document to specify a         precise expression of the allowed header fields; there is no         intent to disallow the functionality of combinations of         encryption and signature security found in [3]. 
  1187.  
  1188.     (11) With the separation of the encryption and signature security         services, there is no need for a MIC-Info: field in the headers         associated with an encrypted message. 
  1189.  
  1190.     (12) In [3], when asymmetric key management is used, an Originator-ID         field is required in order to identify the private key used to         sign the MIC argument in the MIC-Info: field.  Because no MIC-         Info: field is associated with the encryption security service         under asymmetric key management, there is no requirement in that         case to include an Originator-ID field. 
  1191.  
  1192.     (13) The protocol specified here explicitly excludes symmetric key 
  1193.  
  1194.  
  1195.  
  1196. Crocker, et al              Standards Track                    [Page 40] 
  1197.  RFC 1848             MIME Object Security Services          October 1995 
  1198.  
  1199.          management. 
  1200.  
  1201.     (14) This document requires all data that is to be digitally signed         to be represented in 7bit form. 
  1202.  
  1203.  9.  Security Considerations 
  1204.  
  1205.    This entire document is about security. 
  1206.  
  1207. 10.  Acknowledgements 
  1208.  
  1209.    David H. Crocker suggested the use of a multipart structure for the    MIME and PEM interaction, which has evolved into the MOSS protocol. 
  1210.  
  1211.    The MOSS protocol is a direct descendant of the PEM protocol.  The    authors gratefully acknowledge the editors of those specification,    especially John Linn and Steve Kent.  This work would not have been    possible had it not been for all of the PEM developers, users, and    interested persons who are always present on the PEM developers    mailing list and at PEM working group meetings at IETF meetings,    especially, Amanda Walker, Bob Juenemann, Steve Dusse, Jeff Thomson,    and Rhys Weatherly. 
  1212.  
  1213. 11.  References 
  1214.  
  1215.    [1] Crocker, D., "Standard for the Format of ARPA Internet Text        Messages", STD 11, RFC 822, University of Delaware, August 1982. 
  1216.  
  1217.    [2] Borenstein, N., and N. Freed, "MIME (Multipurpose Internet Mail        Extension) Part One: Mechanisms for Specifying and Describing the        Format of Internet Message Bodies", RFC 1521, Bellcore and        Innosoft, September 1993. 
  1218.  
  1219.    [3] Linn, J., "Privacy Enhancement for Internet Electronic Mail: Part        I: Message Encryption and Authentication Procedures", RFC 1421,        IAB IRTF PSRG, IETF PEM WG, February 1993. 
  1220.  
  1221.    [4] Kent, S., "Privacy Enhancement for Internet Electronic Mail: Part        II: Certificate-Based Key Management", RFC 1422, BBN        Communications, February 1993. 
  1222.  
  1223.    [5] Balenson, D., "Privacy Enhancement for Internet Electronic Mail:        Part III: Algorithms, Modes, and Identifiers", RFC 1423, Trusted        Information Systems, February 1993. 
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229. Crocker, et al              Standards Track                    [Page 41] 
  1230.  RFC 1848             MIME Object Security Services          October 1995 
  1231.  
  1232.     [6] Kaliski, B., "Privacy Enhancement for Internet Electronic Mail:        Part IV: Key Certification and Related Services", RFC 1424, RSA        Laboratories, February 1993. 
  1233.  
  1234.    [7] Galvin, J., Murphy, S., Crocker, S., and N. Freed, "Security        Multiparts for MIME: Multipart/Signed and Multipart/Encrypted",        RFC 1847, Trusted Information Systems and Innosoft, September        1995. 
  1235.  
  1236.    [8] The Directory -- Models.  X.501, 1988.  Developed in        collaboration, and technically aligned, with ISO 9594-2. 
  1237.  
  1238.    [9] The Directory -- Authentication Framework.  X.509, 1988.        Developed in collaboration, and technically aligned, with ISO        9594-8. 
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  Crocker, et al              Standards Track                    [Page 42] 
  1275.  RFC 1848             MIME Object Security Services          October 1995 
  1276.  
  1277.  12.  Authors' Addresses 
  1278.  
  1279.    Steve Crocker    CyberCash, Inc.    2086 Hunters Crest Way    Vienna, VA 22181 
  1280.  
  1281.    Phone: +1 703 620 1222    Fax: +1 703 391 2651    EMail:  crocker@cybercash.com 
  1282.  
  1283.     James M. Galvin    Trusted Information Systems    3060 Washington Road    Glenwood, MD  21738 
  1284.  
  1285.    Phone: +1 301 854 6889    Fax: +1 301 854 5363    EMail:  galvin@tis.com 
  1286.  
  1287.     Sandra Murphy    Trusted Information Systems    3060 Washington Road    Glenwood, MD  21738 
  1288.  
  1289.    Phone: +1 301 854 6889    Fax: +1 301 854 5363    EMail:  murphy@tis.com 
  1290.  
  1291.     Ned Freed    Innosoft International, Inc.    1050 East Garvey Avenue South    West Covina, CA 91790 
  1292.  
  1293.    Phone: +1 818 919 3600    Fax: +1 818 919 3614    EMail:  ned@innosoft.com 
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305. Crocker, et al              Standards Track                    [Page 43] 
  1306.  RFC 1848             MIME Object Security Services          October 1995 
  1307.  
  1308.  Appendix A: Collected Grammar 
  1309.  
  1310.    The version of the grammar in this document is as follows: 
  1311.  
  1312.       <version>       ::= "Version:" "5" CRLF 
  1313.  
  1314.     The following grammar tokens are used throughout this specification: 
  1315.  
  1316.       <encbin>        ::= 1*<encbingrp> 
  1317.  
  1318.       <encbingrp>     ::= 4*4<encbinchar> 
  1319.  
  1320.       <encbinchar>    ::= <ALPHA> / <DIGIT> / "+" / "/" / "=" 
  1321.  
  1322.       <hexchar>       ::= <DIGIT> / "A" / "B" / "C" / "D" / "E" / "F"                           ; no lower case 
  1323.  
  1324.     The content of an application/moss-signature body part is as follows: 
  1325.  
  1326.       <mosssig>       ::= <version> ( 1*<origasymflds> ) 
  1327.  
  1328.       <version>       ::= "Version:" "5" CRLF 
  1329.  
  1330.       <origasymflds>  ::= <origid> <micinfo> 
  1331.  
  1332.       <origid>        ::= "Originator-ID:" <id> CRLF 
  1333.  
  1334.       <micinfo>       ::= "MIC-Info:" <micalgid> "," <ikalgid> ","                           <asymsignmic> CRLF 
  1335.  
  1336.     The content of an application/moss-keys body part is as follows: 
  1337.  
  1338.       <mosskeys>      ::= <version> <dekinfo> 1*<recipasymflds> 
  1339.  
  1340.       <version>       ::= "Version:" "5" CRLF 
  1341.  
  1342.       <dekinfo>       ::= "DEK-Info" ":" <dekalgid>                           [ "," <dekparameters> ] CRLF 
  1343.  
  1344.       <recipasymflds> ::= <recipid> <asymkeyinfo> 
  1345.  
  1346.       <recipid>       ::= "Recipient-ID:" <id> CRLF 
  1347.  
  1348.       <asymkeyinfo>   ::= "Key-Info" ":" <ikalgid> "," <asymencdek> CRLF 
  1349.  
  1350.  
  1351.  
  1352.  Crocker, et al              Standards Track                    [Page 44] 
  1353.  RFC 1848             MIME Object Security Services          October 1995 
  1354.  
  1355.     Identifiers are defined as follows:        <id>            ::= <id-subset> / <id-publickey> / <id-issuer> 
  1356.  
  1357.       <id-subset>     ::= <id-email> / <id-string> / <id-dname> 
  1358.  
  1359.       <id-email>      ::= "EN"  "," <keysel> "," <emailstr> CRLF 
  1360.  
  1361.       <id-string>     ::= "STR" "," <keysel> "," <string> CRLF 
  1362.  
  1363.       <id-dname>      ::= "DN"  "," <keysel> "," <dnamestr> CRLF 
  1364.  
  1365.       <id-publickey>  ::= "PK"  "," <publickey> [ "," <id-subset> ] CRLF 
  1366.  
  1367.       <id-issuer>     ::= "IS"  "," <dnamestr>  "," <serial> CRLF 
  1368.  
  1369.       <keysel>        ::= 1*<hexchar>                           ; hex dump of a non-null sequence of octets 
  1370.  
  1371.       <emailstr>      ::= <addr-spec> / <route-addr>                           ; an electronic mail address as defined by                           ; these two tokens from RFC822 
  1372.  
  1373.       <string>        ::= ; a non-null sequence of characters 
  1374.  
  1375.       <dnamestr>      ::= <encbin>                           ; a printably encoded, ASN.1 encoded                           ; distinguished name (as defined by the 'Name'                           ; production specified in X.501 [8]) 
  1376.  
  1377.       <publickey>     ::= <encbin>                           ; a printably encoded, ASN.1 encoded public                           ; key (as defined by the                           ; 'SubjectPublicKeyInfo' production specified                           ; in X.509 [9]) 
  1378.  
  1379.       <serial>        ::= 1*<hexchar>                           ; hex dump of a certificate serial number 
  1380.  
  1381.     The content of an application/mosskey-request body part is as    follows: 
  1382.  
  1383.       <request>       ::= <version>                           ( <subject> / <issuer> / <certification> ) 
  1384.  
  1385.       <version>       ::= "Version:" "5" CRLF 
  1386.  
  1387.  
  1388.  
  1389.  Crocker, et al              Standards Track                    [Page 45] 
  1390.  RFC 1848             MIME Object Security Services          October 1995 
  1391.  
  1392.        <subject>       ::= "Subject:" <id> CRLF 
  1393.  
  1394.       <issuer>        ::= "Issuer:" <id> CRLF 
  1395.  
  1396.       <certification> ::= "Certification:" <encbin> CRLF 
  1397.  
  1398.     The content of an application/mosskey-data body part is as follows: 
  1399.  
  1400.       <mosskeydata>   ::= <version>                           ( <publickeydata> / <certchain> / <crlchain> ) 
  1401.  
  1402.       <version>       ::= "Version:" "5" CRLF 
  1403.  
  1404.       <publickeydata> ::= "Key:" "PK" "," <publickey> ","                           <id-subset> CRLF 
  1405.  
  1406.       <certchain>     ::= <cert> *( [ <crl> ] <cert> ) 
  1407.  
  1408.       <crlchain>      ::= 1*( <crl> [ <cert> ] ) 
  1409.  
  1410.       <cert>          ::= "Certificate:" <encbin> CRLF 
  1411.  
  1412.       <crl>           ::= "CRL:" <encbin> CRLF 
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440. Crocker, et al              Standards Track                    [Page 46] 
  1441.  RFC 1848             MIME Object Security Services          October 1995 
  1442.  
  1443.  Appendix B: Imported Grammar 
  1444.  
  1445.    Options normally present in the grammar reprinted here which are    illegal in MOSS are excluded in this reprinting, for the convenience    of the reader. 
  1446.  
  1447.    The following productions are taken from [5].  The grammar presented    in [5] remains the authoritative source for these productions; they    are repeated here for the convenience of the reader. 
  1448.  
  1449.       <dekalgid>         ::= "DES-CBC"       <ikalgid>          ::= "RSA"       <micalgid>         ::= "RSA-MD2" / "RSA-MD5" 
  1450.  
  1451.       <dekparameters>    ::= <DESCBCparameters>       <DESCBCparameters> ::= <IV>       <IV>               ::= <hexchar16>       <hexchar16>        ::= 16*16<hexchar> 
  1452.  
  1453.       <asymsignmic>      ::= <RSAsignmic>       <RSAsignmic>       ::= <encbin> 
  1454.  
  1455.       <asymencdek>       ::= <RSAencdek>       <RSAencdek>        ::= <encbin> 
  1456.  
  1457.    The following productions are taken from [1].  The grammar presented    in [1] remains the authoritative source for these productions; they    are repeated here for the convenience of the reader. 
  1458.  
  1459.       <route-addr>    ::= "<" [ <route> ] <addr-spec> ">" 
  1460.  
  1461.       <route>         ::=  1# ( "@" <domain> ) ":" ; path-relative 
  1462.  
  1463.        <addr-spec>     ::= <local-part> "@" <domain>; global address 
  1464.  
  1465.       <local-part>    ::= <word> *( "." <word> )   ; uninterpreted                                                    ; case-preserved 
  1466.  
  1467.       <domain>        ::= <sub-domain> *( "." <sub-domain> ) 
  1468.  
  1469.       <sub-domain>    ::= <domain-ref> / <domain-literal> 
  1470.  
  1471.       <domain-ref>    ::= <atom>                   ; symbolic                                                    ; reference 
  1472.  
  1473.       <domain-literal>::= "[" *( <dtext> / <quoted-pair> ) "]" 
  1474.  
  1475.  
  1476.  
  1477.  Crocker, et al              Standards Track                    [Page 47] 
  1478.  RFC 1848             MIME Object Security Services          October 1995 
  1479.  
  1480.        <dtext>         ::= <any CHAR excluding "[", "]",                           "\" & <CR>, & including                           linear-white-space>                                                    ; => may be folded 
  1481.  
  1482.        <word>          ::= <atom> / <quoted-string> 
  1483.  
  1484.       <quoted-string> ::= """ *( <qtext> / <quoted-pair> ) """ 
  1485.  
  1486.       <qtext>         ::= (any <CHAR> excepting """, "\", and CR,                            and including <linear-white-space>) 
  1487.  
  1488.       <quoted-pair>   ::= "\" <CHAR>               ; may quote any                                                    ; char 
  1489.  
  1490.       <linear-white-space> ::= 1*( [ CRLF ] <LWSP-char> )                                                    ; semantics = SPACE                                                    ; CRLF => folding 
  1491.  
  1492.       <LWSP-char>     ::= SPACE / HTAB             ; semantics = SPACE 
  1493.  
  1494.        <atom>          ::= 1*(any <CHAR>                           except <specials>, SPACE and <CTL>s) 
  1495.  
  1496.       <CHAR>          ::= <any ASCII character> 
  1497.  
  1498.       <CTL>           ::= <any ASCII control character and DEL> 
  1499.  
  1500.       <specials>      ::= "(" / ")" / "<" / ">" / "@"                           /  "," / ";" / ":" / "\" / <">                           /  "." / "[" / "]"                                                    ; Must be in quoted-                                                    ; string, to use                                                    ;  within a word. 
  1501.  
  1502.       <ALPHA>         ::= <any ASCII alphabetic character>                                                    ; (101-132, 65.-90.)                                                    ; (141-172, 97.-122.) 
  1503.  
  1504.       <DIGIT>         ::= <any ASCII decimal digit>; (60-71, 48.-57.) 
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514. Crocker, et al              Standards Track                    [Page 48] 
  1515.  
  1516.