home *** CD-ROM | disk | FTP | other *** search
/ Internet Standards / CD1.mdf / nist / oiw / agreemnt / 12s_9406.txt < prev    next >
Text File  |  1994-09-06  |  126KB  |  4,159 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.           Stable Implementation
  9.           Agreements for Open Systems
  10.           Interconnection Protocols:
  11.           Part 12 - OS Security
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.           Output  from the June 1994 Open Systems Environment Implementors'
  25.           Workshop (OIW)
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.           Acting SIG Chair:  Richard Harris, The Boeing Company
  60.           SIG Editor:    Dr. Mohammad Mirhakkak, MITRE
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.           PART 12 - SECURITY                             June 1994 (Stable)
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.           Foreword
  92.  
  93.           This part of the Stable Implementation Agreements was prepared by
  94.           the Security Special Interest Group (SECSIG) of the Open  Systems
  95.           Environment Implementors'  Workshop (OIW) hosted by  the National
  96.           Institute  of Standards  and Technology  (NIST).   See  Part 1  -
  97.           Workshop   Policies   and  Procedures   of  the   "Draft  Working
  98.           Implementation Agreements Document."
  99.  
  100.           Text in this part has been approved  by the Plenary of the above-
  101.           mentioned Workshop.   This part replaces the  previously existing
  102.           chapter on this subject.   There is significant technical  change
  103.           from this text as previously given.  
  104.  
  105.           Future changes and additions to this version of these Implementor
  106.           Agreements  will  be  published as  change  pages.   Deleted  and
  107.           replaced text  will be shown  as strikeout.  New and  replacement
  108.           text will be shown as shaded.
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.                                           ii
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.           PART 12 - SECURITY                             June 1994 (Stable)
  141.  
  142.                                   Table of Contents
  143.  
  144.  
  145.           Part 12 - Security  . . . . . . . . . . . . . . . . . . . . .   1
  146.  
  147.           0   Introduction  . . . . . . . . . . . . . . . . . . . . . .   1
  148.  
  149.           1   Scope . . . . . . . . . . . . . . . . . . . . . . . . . .   1
  150.  
  151.           2   Normative References  . . . . . . . . . . . . . . . . . .   1
  152.  
  153.           3   Definitions . . . . . . . . . . . . . . . . . . . . . . .   2
  154.  
  155.           4   Symbols and Abbreviations . . . . . . . . . . . . . . . .   2
  156.  
  157.           5   Architectures . . . . . . . . . . . . . . . . . . . . . .   2
  158.               5.1  Introduction . . . . . . . . . . . . . . . . . . . .   3
  159.               5.2  Application Environments . . . . . . . . . . . . . .   3
  160.                    5.2.1    Base Environment  . . . . . . . . . . . . .   4
  161.                    5.2.2    Single Application Association Environment    5
  162.                    5.2.2.1  Architectural Diagram . . . . . . . . . . .   6
  163.                    5.2.2.2  Functional Groups . . . . . . . . . . . . .   6
  164.                    5.2.3    Application Relay Environment . . . . . . .   6
  165.                    5.2.3.1  Architectural Diagram . . . . . . . . . . .   7
  166.                    5.2.3.2  Functional Groups . . . . . . . . . . . . .   7
  167.                    5.2.4    Distributed  Applications Environment . . .   8
  168.                    5.2.4.1  Architectural diagram . . . . . . . . . . .   8
  169.                    5.2.4.2  Functional Groups . . . . . . . . . . . . .   9
  170.               5.3  Security Classes . . . . . . . . . . . . . . . . . .  10
  171.                    5.3.1    Security Class S0 . . . . . . . . . . . . .  11
  172.                    5.3.2    Security Class S1 . . . . . . . . . . . . .  11
  173.                    5.3.3    Security Class S2 . . . . . . . . . . . . .  11
  174.               5.4  Guidelines for OIW Application Profile Development .  12
  175.  
  176.           6   Key Management  . . . . . . . . . . . . . . . . . . . . .  12
  177.  
  178.           7   Security Algorithms . . . . . . . . . . . . . . . . . . .  12
  179.               7.1  Message Digests  . . . . . . . . . . . . . . . . . .  13
  180.                    7.1.1    Square-Mod-N  . . . . . . . . . . . . . . .  13
  181.                    7.1.2    MD2 . . . . . . . . . . . . . . . . . . . .  13
  182.                    7.1.3    MD4 . . . . . . . . . . . . . . . . . . . .  14
  183.                    7.1.4    MD5 . . . . . . . . . . . . . . . . . . . .  14
  184.                    7.1.5    SHA . . . . . . . . . . . . . . . . . . . .  15
  185.                    7.1.6    MDC-2 . . . . . . . . . . . . . . . . . . .  15
  186.               7.2  Reversible Public Key Algorithms . . . . . . . . . .  15
  187.                    7.2.1    RSA (X.509) . . . . . . . . . . . . . . . .  16
  188.                    7.2.2    RSA Encryption  . . . . . . . . . . . . . .  16
  189.                    7.2.3    RSA Signature . . . . . . . . . . . . . . .  17
  190.               7.3  Irreversible Public Key Algorithms . . . . . . . . .  17
  191.  
  192.  
  193.                                          iii
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.           PART 12 - SECURITY                             June 1994 (Stable)
  207.  
  208.                    7.3.1    El Gamal  . . . . . . . . . . . . . . . . .  17
  209.                    7.3.2    DSA . . . . . . . . . . . . . . . . . . . .  18
  210.                    7.3.3    DSA with Common Parameters  . . . . . . . .  19
  211.               7.4  Key Exchange   . . . . . . . . . . . . . . . . . . .  19
  212.                    7.4.1    Diffie-Hellman  . . . . . . . . . . . . . .  19
  213.                    7.4.2    Diffie-Hellman with Common Parameters . . .  20
  214.                    7.4.3    RSA Key Transport . . . . . . . . . . . . .  20
  215.               7.5  Signature Algorithms . . . . . . . . . . . . . . . .  20
  216.                    7.5.1    Message Digests with RSA  . . . . . . . . .  20
  217.                    7.5.1.1  Square-Mod-N with RSA . . . . . . . . . . .  21
  218.                    7.5.1.2  MD2 with RSA  . . . . . . . . . . . . . . .  21
  219.                    7.5.1.3  MD4 with RSA  . . . . . . . . . . . . . . .  21
  220.                    7.5.1.4  MD5 with RSA  . . . . . . . . . . . . . . .  21
  221.                    7.5.2    Message Digests with RSA Encryption . . . .  22
  222.                    7.5.2.1  MD2 with RSA Encryption . . . . . . . . . .  22
  223.                    7.5.2.2  MD4 with RSA Encryption . . . . . . . . . .  22
  224.                    7.5.2.3  MD5 with RSA Encryption . . . . . . . . . .  22
  225.                    7.5.3    DSA With SHA  . . . . . . . . . . . . . . .  22
  226.                    7.5.4    DSA With SHA with Common Parameters . . . .  23
  227.                    7.5.5    RSA Signature With MDC-2  . . . . . . . . .  23
  228.                    7.5.6    RSA Signature With SHA  . . . . . . . . . .  23
  229.                    7.5.7    RSA Signature With MD2  . . . . . . . . . .  23
  230.                    7.5.8    RSA Signature With MD5  . . . . . . . . . .  23
  231.               7.6  Symmetric Encryption Algorithms  . . . . . . . . . .  24
  232.                    7.6.1    Data Encryption Standard  . . . . . . . . .  24
  233.                    7.6.1.1  DES-ECB . . . . . . . . . . . . . . . . . .  24
  234.                    7.6.1.2  DES-CBC . . . . . . . . . . . . . . . . . .  25
  235.                    7.6.1.3  DES-OFB . . . . . . . . . . . . . . . . . .  26
  236.                    7.6.1.4  DES-CFB . . . . . . . . . . . . . . . . . .  26
  237.                    7.6.1.5  DES-MAC . . . . . . . . . . . . . . . . . .  26
  238.                    7.6.1.6  DES-EDE . . . . . . . . . . . . . . . . . .  27
  239.                    7.6.2    RC2-CBC . . . . . . . . . . . . . . . . . .  27
  240.                    7.6.3    RC-4  . . . . . . . . . . . . . . . . . . .  28
  241.               7.7  ASN.1  . . . . . . . . . . . . . . . . . . . . . . .  28
  242.                    7.7.1    Distinguished Encoding Rules  . . . . . . .  28
  243.  
  244.           8   Lower Layers Security . . . . . . . . . . . . . . . . . .  30
  245.  
  246.           9   Upper Layers Security . . . . . . . . . . . . . . . . . .  30
  247.               9.1  Security Mechanisms  . . . . . . . . . . . . . . . .  30
  248.                    9.1.1    Peer Entity Authentication  . . . . . . . .  30
  249.                    9.1.1.1  Simple-Strong Authentication  . . . . . . .  31
  250.                    9     .     1     .     1     .     1     .     1
  251.                             Operation . . . . . . . . . . . . . . . . .  31
  252.                    9     .     1     .     1     .     1     .     2
  253.                             Data Structure  . . . . . . . . . . . . . .  31
  254.                    9     .     1     .     1     .     1     .     3
  255.                             Options . . . . . . . . . . . . . . . . . .  32
  256.                    9.1.1.2  External Authentication Mechanisms  . . . .  33
  257.                    9     .     1     .     1     .     2     .     1
  258.  
  259.                                           iv
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.           PART 12 - SECURITY                             June 1994 (Stable)
  273.  
  274.                             Kerberos Version 5  . . . . . . . . . . . .  33
  275.                    9.1.2    Integrity/Data     Origin     Authentication
  276.                             Transformation  . . . . . . . . . . . . . .  33
  277.  
  278.           10  Message Handling System (MHS) Security  . . . . . . . . .  35
  279.  
  280.           11  Directory Services Security . . . . . . . . . . . . . . .  35
  281.  
  282.           12  Network Management Security . . . . . . . . . . . . . . .  36
  283.               12.1 Threats  . . . . . . . . . . . . . . . . . . . . . .  36
  284.               12.2 Security Services  . . . . . . . . . . . . . . . . .  37
  285.                    12.2.1   Basic Security Services . . . . . . . . . .  37
  286.                    12.2.2   Enhanced Security Services  . . . . . . . .  37
  287.               12.3 Security Mechanisms  . . . . . . . . . . . . . . . .  38
  288.                    12.3.1   Peer Entity Authentication  . . . . . . . .  38
  289.                    12.3.2   Connectionless  IntegrityProposed  text  for
  290.                             this clause appears  in WIA Part 12,  clause
  291.                             12.3.2.
  292.           Annex A (normative)
  293.  
  294.           ISPICS Requirements List  . . . . . . . . . . . . . . . . . .  39
  295.  
  296.           Annex B (normative)
  297.  
  298.           Errata  . . . . . . . . . . . . . . . . . . . . . . . . . . .  40
  299.  
  300.           Annex C (normative)
  301.  
  302.           TBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  41
  303.  
  304.           Annex D (informative)
  305.  
  306.           Security Algorithms and Attributes  . . . . . . . . . . . . .  42
  307.  
  308.           Annex E (normative)
  309.  
  310.           References for Security Algorithms  . . . . . . . . . . . . .  46
  311.  
  312.           Annex F (informative)
  313.  
  314.           Bibliography  . . . . . . . . . . . . . . . . . . . . . . . .  50
  315.  
  316.           Annex G (informative)
  317.  
  318.           ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . .  43
  319.               G.1  Background . . . . . . . . . . . . . . . . . . . . .  43
  320.               G.2  Digital Signature  . . . . . . . . . . . . . . . . .  44
  321.               G.3  Verification . . . . . . . . . . . . . . . . . . . .  45
  322.               G.4  Known Constraints on Parameters  . . . . . . . . . .  45
  323.  
  324.  
  325.                                           v
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.           PART 12 - SECURITY                             June 1994 (Stable)
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.                                           vi
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.           PART 12 - SECURITY                             June 1994 (Stable)
  405.  
  406.                                    List of Figures
  407.  
  408.           Figure  1 -  Basic  Elements of  a  Generic OSI  Application
  409.                Environment  . . . . . . . . . . . . . . . . . . . . . .   4
  410.           Figure  2 -  Architectural  Diagram for  Single  Application
  411.                Association Environment  . . . . . . . . . . . . . . . .   6
  412.           Figure 3  -  Architectural  diagram  for  Application  Relay
  413.                Environment  . . . . . . . . . . . . . . . . . . . . . .   7
  414.           Figure   4   -   Architectural   diagram   for   Distributed
  415.                Applications Environment . . . . . . . . . . . . . . . .   9
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.                                          vii
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.           PART 12 - SECURITY                             June 1994 (Stable)
  471.  
  472.                                     List of Tables
  473.  
  474.           Table 1 - Security Classes  . . . . . . . . . . . . . . . . .  10
  475.           Table B.1 - SIA Part 12 changes . . . . . . . . . . . . . . .  40
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.                                          viii
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.           Part 12 - Security
  537.  
  538.                Editor's  Note -  Previous  material in  this part  has been
  539.                deleted and is no longer applicable.
  540.  
  541.  
  542.           0   Introduction
  543.  
  544.           The  relationship between protocols  and security is accomplished
  545.           by developing a  security profile that binds  these two together.
  546.           Security  profiles  define protocol  specific  implementations of
  547.           security architectures.
  548.  
  549.           A security profile includes the following items:
  550.  
  551.                a)  A grouping of the security services to be offered;
  552.  
  553.                b)  The placement of those security services;
  554.  
  555.                c)    The  selection of  mechanisms  to  support the  placed
  556.                security services.
  557.  
  558.           This   part  completes  this   sequence  of  steps   for  several
  559.           generalized  security  architectures.    A  generalized  security
  560.           architecture is chosen and tailored to derive a protocol-specific
  561.           security  profile.  This  part is comprised  of protocol-specific
  562.           security profiles and other supporting functions.
  563.  
  564.  
  565.           1   Scope
  566.  
  567.  
  568.           2   Normative References
  569.  
  570.           [ISO7498-2]    ISO/IEC  7498-2 Information  Processing Systems  -
  571.                Open  Systems Interconnection - Basic Reference Model - Part
  572.                2: Security Architecture, February 1989.
  573.  
  574.           [ISO8649] ISO/IEC 8649:  1988/Amd 1:1990  Service Definition  for
  575.                the  Association  Control   Service  Element,  Amendment  1:
  576.                Peer-Entity Authentication During Association Establishment.
  577.  
  578.           [ISO8650] ISO/IEC  9594-3 Information  Technology -  Open Systems
  579.                Interconnection - The  Directory - Part 3:  Abstract Service
  580.                Definition.
  581.  
  582.           [ISO8650/1]    ISO/IEC    8650:    1988/Amd    1:1990    Protocol
  583.                Specification for  the Association Control  Service Element,
  584.                Amendment 1:  Peer-Entity Authentication  During Association
  585.                Establishment.
  586.  
  587.           [ISO9594-7]    ISO/IEC  9594-7 Information  Processing Systems  -
  588.  
  589.                                           1
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.           PART 12 - SECURITY                             June 1994 (Stable)
  603.  
  604.                Open  Systems  Interconnection  - The  Directory  -  Part 7:
  605.                Selected Object Classes, 1990.
  606.  
  607.           [ISO9594-8]    ISO/IEC  9594-8 Information  Processing Systems  -
  608.                Open  Systems  Interconnection  - The  Directory  -  Part 8:
  609.                Authentication Framework, 1990.
  610.  
  611.           [ISO10021-4]   ISO/IEC 10021-4  Information Processing  Systems -
  612.                Text Communication - MOTIS -  Message   Transfer   System  :
  613.                Abstract Service Definition and Procedures.
  614.  
  615.           [X.509-88]     CCITT  X.509:1988 The  Directory -  Authentication
  616.                Framework.
  617.  
  618.           [X.511-88]     CCITT X.511:1988 The Directory  - Abstract Service
  619.                Definition.
  620.  
  621.           [X.411-84]     CCITT X.411:1984 Message Transfer System - Message
  622.                Transfer Layer.
  623.  
  624.           [X.521-88]     CCITT X.521:1988 The  Directory - Selected  Object
  625.                Classes.
  626.  
  627.  
  628.           3   Definitions
  629.  
  630.  
  631.           4   Symbols and Abbreviations
  632.  
  633.  
  634.           5   Architectures
  635.  
  636.           The purpose of this clause is to provide guidance on how to build
  637.           a security architecture  based on an OSI  application environment
  638.           and its threats and vulnerabilities.
  639.  
  640.           A Security  Architecture specifies the  relationship between  the
  641.           set of  security services  and mechanisms  with which  protection
  642.           from threats and vulnerabilities is  achieved.  It is designed to
  643.           respond  to  assessed  vulnerabilities,  threats,  and  risks  as
  644.           identified by a security policy.   The establishment of  security
  645.           policies is beyond the scope of the OIW.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.                                           2
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.           PART 12 - SECURITY                             June 1994 (Stable)
  669.  
  670.           5.1    Introduction
  671.  
  672.           Open Systems Security provides for secure distributed information
  673.           processing   in   OSI   application   environments   which    are
  674.           heterogeneous in  terms of  technology and  administration.   For
  675.           example,  some environments may require protection from a minimal
  676.           set  of security  threats  while  others  require  more  complete
  677.           protection.
  678.  
  679.           The sequence of steps by which a security architecture is created
  680.           for a specific application environment is as follows:
  681.  
  682.                a)  Development of threat analysis; 
  683.  
  684.                b)  Determination of security services; 
  685.  
  686.                c)  Placement of security services; 
  687.  
  688.                d)  Selection of mechanisms;
  689.  
  690.                e)  Selection of algorithms.
  691.  
  692.           These implementation agreements  assume that steps  a  and b have
  693.           been completed for the specific application.  An introduction  to
  694.           the threat  analysis process  and the  determination of  security
  695.           services is included in Annex H.
  696.  
  697.           Generic OSI application  environments are defined in  Clause 5.2.
  698.           Generic  security services as  defined by ISO  7498-2 are grouped
  699.           into classes in  Clause 5.3.  A generalized security architecture
  700.           for  each  environment is    developed  by mapping  the  security
  701.           classes  onto the  functional  groups  of  each  environment  and
  702.           providing  guidance as to at which layer   to support the service
  703.           in Clause 5.4.  Guidance on how to select mechanisms suitable for
  704.           each security service is presented in Clause 5.5.
  705.  
  706.           It  is beyond  the  scope of  these implementation  agreements to
  707.           specify the use of one algorithm over another.  Clause 7 presents
  708.           a set of algorithms suitable for various mechanisms.
  709.  
  710.  
  711.           5.2    Application Environments
  712.  
  713.           It is useful  for the sake of  simplification to look at  the OSI
  714.           application environments and to  separate them into   generic OSI
  715.           application   environments  so  that  security  profiles  can  be
  716.           developed for each.   The  environments are:   Single Application
  717.           Association, Application  Relay, and  Distributed   Applications.
  718.           All  applications   will  operate  in   one  or  more   of  these
  719.           environments.  For  example, a Message Handling  application that
  720.  
  721.                                           3
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.           PART 12 - SECURITY                             June 1994 (Stable)
  735.  
  736.           uses a Message  Transfer Agent (MTA) to relay mail  from one User
  737.           Agent  (UA) to  another UA  would  map to  the Application  Relay
  738.           Environment.   Likewise a Message Handling application which only
  739.           includes a  UA accessing a  Message Store (MS)  would map to  the
  740.           Single Application Association Environment.
  741.  
  742.           For each environment,  an architectural diagram is  provided that
  743.           portrays the interconnection of the elements.  In addition, a set
  744.           of functional groups are defined each of which is comprised of an
  745.           interconnected set of  elements.
  746.  
  747.           5.2.1   Base Environment
  748.  
  749.           Figure 1 depicts the basic elements of a generic OSI  application
  750.           environment  from which all  OSI application environments  can be
  751.           derived.  In all  application environment figures,  dashed  lines
  752.           indicate an  optional communication  path   and the  double-lined
  753.           boxes indicate an optional basic element.  Ellipses indicate that
  754.           the previous basic element may be repeated zero or more times.
  755.  
  756.  
  757.           +---------------------------------------------------------------+
  758.           |                                                               |
  759.           |              +---------------------------------+              |
  760.           |              |                                 |              |
  761.           | +-----+      |   +-----+       +------+        |    +------+  |
  762.           | | SU  +------+---+ SA  + ...   | SA   +--------+----+  SU  |  |
  763.           | +-----+      |   +-----+       +------+        |    +------+  |
  764.           |              |                                 |              |
  765.           |              +-------------SS------------------+              |
  766.           |                                                               |
  767.           |                            SU = Service User                  |
  768.           |                            SA = Service Agent                 |
  769.           |                            SS = Service System                |
  770.           |                                                               |
  771.           +---------------------------------------------------------------+
  772.                 Figure 1 - Basic Elements of a Generic OSI Application
  773.                                      Environment 
  774.  
  775.  
  776.           The basic elements are as follows:
  777.  
  778.                Service  User (SU):  an entity  that functions as  a service
  779.                initiator or responder ;
  780.  
  781.                Service  Agent (SA): an  intermediate  entity  that actively
  782.                participates in providing the services  between an initiator
  783.                and a responder;
  784.  
  785.                Service  System  (SS):  zero  or  more  cooperating  service
  786.  
  787.                                           4
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.           PART 12 - SECURITY                             June 1994 (Stable)
  801.  
  802.                agents.
  803.  
  804.           Basic  elements   that  communicate,  either  through   a  direct
  805.           association or indirectly through intermediaries, are  classified
  806.           as a  functional group.   Functional groups  defined in  Figure 1
  807.           are:
  808.  
  809.                a.  f0: SU -> SU  (Service User to Service User directly);
  810.  
  811.                b.  f1: SU => SU  (Service User to Service User indirectly);
  812.  
  813.                c.  f2: SU -> SA  (Service User to Service Agent directly);
  814.  
  815.                d.    f3:  SU  =>  SA    (Service  User  to   Service  Agent
  816.                indirectly);
  817.  
  818.                e.  f4: SA -> SA  (Service Agent to Service Agent directly);
  819.  
  820.                f.    f5:  SA  =>  SA    (Service  Agent  to  Service  Agent
  821.                indirectly);
  822.  
  823.                g.  f6: SA -> SU  (Service Agent to Service User directly);
  824.  
  825.                h.    f7:  SA  =>  SU    (Service   Agent  to  Service  User
  826.                indirectly).
  827.  
  828.                Editor's Note  -   the "->"  notation indicates  association
  829.                security relationship  and  "=>"  indicates  relay  security
  830.                relationship.
  831.  
  832.           These definitions and  this functional group syntax  will be used
  833.           to   define  generic  OSI  application  environments.    In  some
  834.           applications, these functional groups may have to be combined for
  835.           the purpose of performing a security analysis.
  836.  
  837.  
  838.           5.2.2   Single Application Association Environment
  839.  
  840.           The   Single    Application   Association    Environment   covers
  841.           applications   which   are  designed   to  operate   over  Single
  842.           Application Associations  (as defined  in ISO  9545) between  one
  843.           pair of application-entity-invocations (AEIs).   This environment
  844.           specifically  includes  the  case of  recovery,  i.e.,  different
  845.           associations may  exist at  different times  between one  pair of
  846.           AEIs.
  847.  
  848.           Examples of applications to which this environment applies are as
  849.           follows:
  850.  
  851.                a)  FTAM;
  852.  
  853.                                           5
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.           PART 12 - SECURITY                             June 1994 (Stable)
  867.  
  868.                b)  Network Management;
  869.  
  870.                c)  Virtual Terminal.
  871.  
  872.           Applications  such as MHS,  Directory Services,  and TP  are only
  873.           partially  covered  by  this environment  because  some  of their
  874.           service elements may  use store and forward or  chaining types of
  875.           relay  functions.    The     environments  that  apply  to  these
  876.           applications   are   the   Application   Relay  and   Distributed
  877.           Applications Environments respectively.
  878.  
  879.  
  880.           5.2.2.1   Architectural Diagram
  881.  
  882.           Figure  2 portrays  the  architectural  diagram  for  the  Single
  883.           Application Association Environment.
  884.  
  885.  
  886.               +-------------------------------------------------------+
  887.               |                                                       |
  888.               |       +-----+                      +-----+            |
  889.               |       | SU  +----------------------+ SU  |            |
  890.               |       +-----+                      +-----+            |
  891.               |                     SU = Service User                 |
  892.               |                                                       |
  893.               +-------------------------------------------------------+
  894.                Figure 2 - Architectural Diagram for Single Application
  895.                                Association Environment
  896.  
  897.  
  898.  
  899.           5.2.2.2   Functional Groups
  900.  
  901.           The   following  functional  group  is  defined  for  the  Single
  902.           Application Association Environment:
  903.  
  904.                a)  f0:SU -> SU.
  905.  
  906.  
  907.           5.2.3   Application Relay Environment
  908.  
  909.           The  Application Relay Environment  covers applications which are
  910.           designed to operate with the active participation of at least one
  911.           service agent in  support of transferring a  service user request
  912.           from an  initiator to a  responder.   When more than  one service
  913.           agent is present, they function sequentially.
  914.  
  915.           An example of an application to which this environment applies is
  916.           Message Handling Systems.
  917.  
  918.  
  919.                                           6
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.           PART 12 - SECURITY                             June 1994 (Stable)
  933.  
  934.           5.2.3.1   Architectural Diagram
  935.  
  936.           Figure 3 portrays  the architectural diagram for  the Application
  937.           Relay Environment.    In  all  application  environment  figures,
  938.           dashed  lines indicate an  optional communication  path   and the
  939.           double-lined  boxes indicate an optional basic element.  Ellipses
  940.           indicate that the previous basic  element may be repeated zero or
  941.           more times.  
  942.  
  943.  
  944.           +----------------------------------------------------------------
  945.                                       ---------+
  946.           |                   +---------------------------------+           
  947.                                               |
  948.           |                   |                                 |           
  949.                                               |
  950.              |      +-----+      |   +-----+          +-----+      |    
  951.                                    +-----+       |
  952.           |      | SU  +------+---+ SA  |  ...     | SA  +------+-----+ SU 
  953.                                       |       |
  954.              |      +-----+      |   +-----+          +-----+      |    
  955.                                    +-----+       |
  956.           |                   |                                 |           
  957.                                               |
  958.           |                   +----------- SS  -----------------+           
  959.                                               |
  960.           |                                                                 
  961.                                               |
  962.           |                                          SU = Service User      
  963.                                               |
  964.           |                                          SA = Service Agent     
  965.                                               |
  966.           |                                          SS = Service System    
  967.                                               |
  968.           |                                                                 
  969.                                               |
  970.           |                                                                 
  971.                                               |
  972.           +----------------------------------------------------------------
  973.                                       ---------+
  974.                 Figure 3 - Architectural diagram for Application Relay
  975.                                      Environment
  976.  
  977.  
  978.  
  979.           5.2.3.2   Functional Groups
  980.  
  981.           The following  functional groups  are defined  and added for  the
  982.           Application Relay Environment:
  983.  
  984.  
  985.                                           7
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.           PART 12 - SECURITY                             June 1994 (Stable)
  999.  
  1000.                a.  f2: SU -> SA;
  1001.  
  1002.                b.  f3: SU => SA; 
  1003.  
  1004.                c.  f4: SA -> SA;
  1005.  
  1006.                d.  f6: SA -> SU. 
  1007.  
  1008.  
  1009.           5.2.4   Distributed  Applications Environment
  1010.  
  1011.           The Distributed Application Environment covers applications which
  1012.           are designed to operate with  the active participation of zero or
  1013.           more  service agents which  may process  a service  user request.
  1014.           Processing may include  modifying, interpreting, or  transferring
  1015.           the service user request or its data.  When more than one service
  1016.           agent is present, they may function in parallel, sequentially, or
  1017.           both.
  1018.  
  1019.  
  1020.           5.2.4.1   Architectural diagram
  1021.  
  1022.           Figure 4 portrays  the architectural diagram for  the Distributed
  1023.           Applications  Environment.     In  all  application   environment
  1024.           figures, dashed  lines indicate  an  optional communication  path
  1025.           and  the double-lined boxes  indicate an optional  basic element.
  1026.           Ellipses indicate that the previous basic element may be repeated
  1027.           zero or more times.
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.                                           8
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.           PART 12 - SECURITY                             June 1994 (Stable)
  1065.  
  1066.  
  1067.           +----------------------------------------------------------------
  1068.                                       ---------+
  1069.           |                   +---------------------------------+           
  1070.                                               |
  1071.           |                   |                                 |           
  1072.                                               |
  1073.              |      +-----+      |   +-----+                       |    
  1074.                                    +-----+       |
  1075.           |      | SU  +------+---+ SA  |    ...        --------|-----| SU 
  1076.                                       |       |
  1077.              |      +-----+      |   +-----+                       |    
  1078.                                    +-----+       |
  1079.           |                   |                                 |           
  1080.                                               |
  1081.           |                   +----------- SS  -----------------+           
  1082.                                               |
  1083.           |                                                                 
  1084.                                               |
  1085.           |                                          SU = Service User      
  1086.                                               |
  1087.           |                                          SA = Service Agent     
  1088.                                               |
  1089.           |                                          SS = Service System    
  1090.                                               |
  1091.           |                                                                 
  1092.                                               |
  1093.           |                                                                 
  1094.                                               |
  1095.           +----------------------------------------------------------------
  1096.                                       ---------+
  1097.             Figure 4 - Architectural diagram for Distributed Applications
  1098.                                      Environment
  1099.  
  1100.  
  1101.  
  1102.           5.2.4.2   Functional Groups
  1103.  
  1104.  
  1105.           The following  functional groups  are defined  and added  for the
  1106.           Distributed  Applications Environment:
  1107.  
  1108.                a)  f0: SU -> {SU; ... };
  1109.  
  1110.                b)  f1: SU => {SU; ... };
  1111.  
  1112.                c)  f2: SU -> {SA; ... };
  1113.  
  1114.                d)  f3: SU => {SA; ... };
  1115.  
  1116.  
  1117.                                           9
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.           PART 12 - SECURITY                             June 1994 (Stable)
  1131.  
  1132.                e)  f4: SA -> {SA; ... };
  1133.  
  1134.                f)  f5: SA => {SA; ... };
  1135.  
  1136.                g)  f6: SA -> {SU; ... };
  1137.  
  1138.                h)  f7: SA => {SU; ... }.
  1139.  
  1140.  
  1141.           5.3    Security Classes
  1142.  
  1143.           Security classes are  defined to provide a framework  on which to
  1144.           build  security  profiles.   Each  class  specifies  the required
  1145.           security services.  The services  specified in each class are the
  1146.           generic security  services as  defined by ISO  7498-2.   For each
  1147.           application's profile, specific security services are chosen  for
  1148.           each class.   For example,  data integrity is a  generic security
  1149.           service  for  which  there exists  five  distinct  data integrity
  1150.           services.   One  or  more   specific  security  services must  be
  1151.           specified  to meet  the requirements  of a  security class  in an
  1152.           application specific security profile.
  1153.  
  1154.           The classes are organized into  two similar hierarchies as  shown
  1155.           in Table 1.   Each level of each  hierarchy is a superset  of the
  1156.           security  services required  of the immediately  preceding level.
  1157.           For  each level  in the  hierarchies,  the same  set of  security
  1158.           services  are   required,  except  that  one  hierarchy  includes
  1159.           confidentiality services.
  1160.  
  1161.                               Table 1 - Security Classes
  1162.  
  1163.                     +------------------------+-------------------+
  1164.                     | SECURITY SERVICES      | SECURITY CLASSES  |
  1165.                     |                        +---------+---------+
  1166.                     |                        |         |ADD CONF |
  1167.                     +------------------------+---------+---------+
  1168.                     |  AUTH. & ACCESS CONTROL|    S0   |         |
  1169.                     |                        |         |   S0A   |
  1170.                     +------------------------+---------+---------+
  1171.                     |  ADD DATA INTEGRITY    |    S1   |         |
  1172.                     |                        |         |   S1A   |
  1173.                     +------------------------+---------+---------+
  1174.                     |  ADD NON-REPUDIATION   |    S2   |         |
  1175.                     |                        |         |   S2A   |
  1176.                     |                        |         |         |
  1177.                     +------------------------+---------+---------+
  1178.  
  1179.  
  1180.           There  are  two  interesting  properties  of these  relationships
  1181.           between  the classes.   First, each level  of the confidentiality
  1182.  
  1183.                                           10
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.           PART 12 - SECURITY                             June 1994 (Stable)
  1197.  
  1198.           hierarchy is a superset of the  other hierarchy at the same level
  1199.           and   a  superset  of   the  confidentiality  hierarchy   at  the
  1200.           immediately  preceding  level.   For  example,  class  S2A  is  a
  1201.           superset of classes S2 and S1A.
  1202.  
  1203.           Second,  for two  entities each  supporting  a distinct  security
  1204.           class in  a different hierarchy,  the best level of  service that
  1205.           can  be  achieved   between  them  is  the  class   in  the  non-
  1206.           confidentiality hierarchy at the  same level as the  lowest class
  1207.           of the two entities.   For example, if one entity  supports class
  1208.           S2 and the other  supports class S1A, the  best class of  service
  1209.           achievable is S1.
  1210.  
  1211.                Editor's Note  -  This is  not  a mechanism  for  negotiated
  1212.                services.  That is a future work item.
  1213.  
  1214.  
  1215.           5.3.1   Security Class S0
  1216.  
  1217.           The  Security Class S0  includes implementation of  the following
  1218.           security services: 
  1219.  
  1220.                a)  S0 = Authentication and Access Control.
  1221.  
  1222.           The Security  Class S0A adds  the confidentiality service  to the
  1223.           Class S0 as follows:
  1224.  
  1225.                b)  S0A = S0 + Confidentiality.
  1226.  
  1227.  
  1228.           5.3.2   Security Class S1
  1229.  
  1230.           The Security Class S1 adds the Data Integrity Service to class S0
  1231.           as follows:
  1232.  
  1233.                a)  S1 = S0 + Data Integrity.
  1234.  
  1235.           The  Security Class S1A adds the Confidentiality Service to Class
  1236.           S1 as follows:
  1237.  
  1238.                b)  S1A = S1 + Confidentiality
  1239.  
  1240.  
  1241.           5.3.3   Security Class S2
  1242.  
  1243.           The  Security Class S2 adds the  Non-repudiation Service to Class
  1244.           S1 as follows:
  1245.  
  1246.                a)  S2 = S1 + Non-repudiation
  1247.  
  1248.  
  1249.                                           11
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.           PART 12 - SECURITY                             June 1994 (Stable)
  1263.  
  1264.           The Security Class S2A adds the Confidentiality Service  to Class
  1265.           S2 as follows:
  1266.  
  1267.                b)  S2A = S2 + Confidentiality
  1268.  
  1269.  
  1270.           5.4    Guidelines for OIW Application Profile Development
  1271.  
  1272.  
  1273.           6   Key Management
  1274.  
  1275.           [ISO7498-2]  defines  Key  Management  (KM) as  the  "generation,
  1276.           storage, distribution,  deletion, archiving,  and application  of
  1277.           keys in  accordance with  a security policy."   The  Security SIG
  1278.           recognizes that  security policies are outside the  scope of IAs,
  1279.           and it  is inappropriate to  make general recommendations  in the
  1280.           absence of a KM framework.
  1281.  
  1282.  
  1283.           7   Security Algorithms
  1284.  
  1285.                Editor's  Note - Implementors are cautioned that security of
  1286.                an algorithm  may change  at any time.   Therefore,  the WIA
  1287.                must be  consulted in  order to determine  if there  is more
  1288.                current information.
  1289.  
  1290.           The algorithms included  here are listed  in no particular  order
  1291.           (beyond categorization by  type of algorithm).  It  is beyond the
  1292.           scope of these  agreements to recommend the use  of one algorithm
  1293.           over another.   However, if  a vulnerability is known  to exist a
  1294.           reference will be provided along with a recommendation not to use
  1295.           the algorithm.
  1296.  
  1297.           This  clause  references  a  definitive  specification  for  each
  1298.           algorithm,  which includes  an object  identifier.   In  general,
  1299.           control of the definitive specification is expected to be outside
  1300.           the scope  of  the  OIW.   The  benefit of  not  controlling  the
  1301.           specification  is  that  the   organization  that  developed  the
  1302.           algorithm is best situated to  maintain and have knowledge of the
  1303.           security  of the  algorithm.   Algorithms for  which there  is no
  1304.           controlling organization are defined in an Annex in this Part.
  1305.  
  1306.           For each algorithm, its  typical usage is stated, its  definitive
  1307.           reference is  given, and  its object  identifier is  included for
  1308.           reference  purposes.Optionally,  additional  information  may  be
  1309.           included, for example a reference to known vulnerabilities.
  1310.  
  1311.           Implementors  should be  aware  that  export  of  products  using
  1312.           cryptography may be subject to  export restrictions.  In general,
  1313.           use of cryptography  not involving confidentiality is  subject to
  1314.  
  1315.                                           12
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.           PART 12 - SECURITY                             June 1994 (Stable)
  1329.  
  1330.           Commerce Department  regulations, while  use of  cryptography for
  1331.           confidentiality   is  controlled   by   (more  stringent)   State
  1332.           Department regulations.   It is the  implementor's responsibility
  1333.           to  determine any  export  restrictions which  apply  to a  given
  1334.           product, as the export controls may change from time to time. 
  1335.  
  1336.                Editor's Note  - Some of  the references are  RFCs, Internet
  1337.                Drafts, and PKCS documents.   We need to include information
  1338.                on how to access these documents.
  1339.  
  1340.  
  1341.           7.1    Message Digests
  1342.  
  1343.           These  message digest algorithms  (or hash algorithms)  compute a
  1344.           fixed  size  representation  of  an  input  stream.    They  have
  1345.           different  performance   characteristics  and   employ  different
  1346.           computational  techniques,  making  each suitable  for  different
  1347.           applications.
  1348.  
  1349.  
  1350.           7.1.1   Square-Mod-N
  1351.  
  1352.           Square-Mod-N is a hash algorithm that  is used to compute a fixed
  1353.           size representation of an input stream.  It is defined in [X.509]
  1354.           and its object identifier is  defined there as:
  1355.  
  1356.                sqmod-n ALGORITHM
  1357.                PARAMETER BlockSize
  1358.                ::= {hashAlgorithm 1}
  1359.                BlockSize ::= INTEGER
  1360.  
  1361.           Recent  research regarding the square-mod-n one-way hash function
  1362.           described in Annex D of [X.509] has revealed that the function is
  1363.           not secure.  Its use, therefore, is discouraged.
  1364.  
  1365.                Editor's Note -  We need the  reference that identifies  its
  1366.                vulnerabilities so we can recommend it not be used.
  1367.  
  1368.  
  1369.           7.1.2   MD2
  1370.  
  1371.           MD2   is  a  message  digest  algorithm  that  employs  accepted,
  1372.           traditional computational techniques.   Its speed is  the slowest
  1373.           of the message digests listed here.
  1374.  
  1375.           It is defined in Internet Draft [a] and  its object identifier is
  1376.           defined there as: 
  1377.  
  1378.  
  1379.  
  1380.  
  1381.                                           13
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.           PART 12 - SECURITY                             June 1994 (Stable)
  1395.  
  1396.                md2 ALGORITHM
  1397.                PARAMETER NULL
  1398.                ::=    {iso(1)    member-body(2)    US(840)   rsadsi(113549)
  1399.           digestAlgorithm(2) 2}
  1400.  
  1401.                Editor's  Note -  There  is  a Directory  SIG  OID for  this
  1402.                algorithm.
  1403.  
  1404.           The    reference includes  a  source code  implementation  of the
  1405.           algorithm  written  in  the  C  programming  language.    MD2  is
  1406.           copyrighted  and its  use may  require  specific permission  or a
  1407.           license.  Details are stated in the Internet Draft.
  1408.  
  1409.  
  1410.           7.1.3   MD4
  1411.  
  1412.           MD4  is a message  digest algorithm that  employs non-traditional
  1413.           computational techniques  to enhance  its speed  in software  and
  1414.           hardware with native 32-bit arithmetic.  Its speed is the fastest
  1415.           of the message digests listed here.
  1416.  
  1417.           It is defined in  Internet Draft [b] and its object identifier is
  1418.           there as:
  1419.  
  1420.                md4 ALGORITHM
  1421.                PARAMETER NULL
  1422.                ::=    {iso(1)    member-body(2)    US(840)   rsadsi(113549)
  1423.           digestAlgorithm(2) 4}
  1424.  
  1425.           This  reference  includes  a source  code  implementation  of the
  1426.           algorithm written in the C programming language.
  1427.  
  1428.           It is suggested that MD4 be used only with applications for which
  1429.           performance is critical.
  1430.  
  1431.                Editor's  Note -  We need  to  include text  from the  MD4/5
  1432.                Internet Drafts which describes the differences between  the
  1433.                two algorithms and the preference for MD5.
  1434.  
  1435.  
  1436.           7.1.4   MD5
  1437.  
  1438.           MD5  is  a  message  digest  algorithm  which  is  based  on  the
  1439.           techniques  of MD4, but  with additional enhancements  to counter
  1440.           proposed attacks.   A detailed description of the  changes can be
  1441.           found in [c]..
  1442.  
  1443.           MD5 is defined in Internet Draft [c] and its object identifier is
  1444.           defined there as:   
  1445.  
  1446.  
  1447.                                           14
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.           PART 12 - SECURITY                             June 1994 (Stable)
  1461.  
  1462.                md5 ALGORITHM
  1463.                PARAMETER NULL
  1464.                ::=    {iso(1)    member-body(2)    US(840)   rsadsi(113549)
  1465.           digestAlgorithm(2) 5}
  1466.  
  1467.           This  reference  includes  a source  code  implementation  of the
  1468.           algorithm written in the C programming language.
  1469.  
  1470.  
  1471.           7.1.5   SHA
  1472.  
  1473.           This algorithm  is the NIST  Secure Hash  Algorithm [ab].   It is
  1474.           based on  concepts  similar to  those used  in MD4  and MD5,  and
  1475.           outputs a 160-bit digest.
  1476.  
  1477.                sha ALGORITHM 
  1478.                PARAMETER NULL
  1479.                ::= {algorithm 18}
  1480.  
  1481.  
  1482.           7.1.6   MDC-2
  1483.  
  1484.           This is  a DES-based hash  function [ac]  in which the  output of
  1485.           each block encryption is fed back as keying material for the next
  1486.           block.  It outputs a 128 bit digest.
  1487.  
  1488.                mdc-2 ALGORITHM 
  1489.                PARAMETER NULL
  1490.                ::= { algorithm 19 }
  1491.  
  1492.  
  1493.           7.2    Reversible Public Key Algorithms
  1494.  
  1495.           These  algorithms  are  asymmetric; separate  keys  are  used for
  1496.           encryption  and decryption.   They  also have  the property  that
  1497.           applying the  encipherment function followed by  the decipherment
  1498.           function  has  the  same  effect  as  applying  the  decipherment
  1499.           function followed by  the encipherment function.  This  is useful
  1500.           if  a single algorithm is  needed to provide both confidentiality
  1501.           (e.g., transport of symmetric keys) and  authentication/integrity
  1502.           (e.g., digital signatures).  
  1503.  
  1504.           RSA  is  a  public   key  (asymmetric)  cryptographic  algorithm,
  1505.           typically  used  in  conjunction with  message  digest  (or hash)
  1506.           algorithms  to create  digital  signatures  and for  confidential
  1507.           distribution of symmetric keys.  It may also  be used to exchange
  1508.           confidential messages.
  1509.  
  1510.           The  RSA algorithm  is defined  in [d]  and is also  described in
  1511.           Annex C of [X.509].  The RSA technology is patented in the United
  1512.  
  1513.                                           15
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.           PART 12 - SECURITY                             June 1994 (Stable)
  1527.  
  1528.           States [e][f].
  1529.  
  1530.           According to [X.509],  the ASN.1 BIT STRING containing the public
  1531.           key will contain the BER encoding of the modulus and exponent:
  1532.  
  1533.                SEQUENCE {
  1534.                     n    INTEGER,  -- modulus
  1535.                     e    INTEGER } -- public exponent
  1536.  
  1537.  
  1538.           7.2.1   RSA (X.509)
  1539.  
  1540.           RSA is  defined in [X.509]  and its object identifier  is defined
  1541.           there as:
  1542.  
  1543.                rsa ALGORITHM
  1544.                PARAMETER KeySize
  1545.                ::= {encryptionAlgorithm 1}
  1546.  
  1547.                KeySize ::= INTEGER
  1548.  
  1549.           The key size specifies the length  in bits of the RSA public  key
  1550.           modulus.
  1551.  
  1552.           The definition of  this algorithm does not  include specification
  1553.           of padding rules.  If one assumes that the  data is treated as an
  1554.           integer and padded with zero bits  on the left, the algorithm  is
  1555.           subject  to various  attacks,  such as  those described  in [ah],
  1556.           which  render it unsuitable  for some applications,  e.g., multi-
  1557.           recipient mail,  notarization.   In such  cases RSAEncryption  is
  1558.           preferred.  
  1559.  
  1560.           7.2.2   RSA Encryption
  1561.  
  1562.  
  1563.           RSA  Encryption  is  defined  in  PKCS  #1  [g]  and  its  object
  1564.           identifier is defined there as:
  1565.  
  1566.                rsaEncryption ALGORITHM
  1567.                PARAMETER NULL
  1568.                ::=  {iso(1) member-body(2)  US(840) rsadsi(113549)  pkcs(1)
  1569.           pkcs-1(1) 1}
  1570.  
  1571.           This algorithm defines  various types of block  padding depending
  1572.           on whether the block is being encrypted using a public or private
  1573.           key.  The padding protects against various attacks  documented in
  1574.           the literature.
  1575.  
  1576.  
  1577.  
  1578.  
  1579.                                           16
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.           PART 12 - SECURITY                             June 1994 (Stable)
  1593.  
  1594.           7.2.3   RSA Signature
  1595.  
  1596.           This algorithm  [ad] is  compatible with IS  9796 [ae],  with the
  1597.           Sign and Verify  functions required to be those in Annex A of ISO
  1598.           9796.
  1599.  
  1600.                rsaSignature ALGORITHM
  1601.                PARAMETER NULL
  1602.                ::= {algorithm 11}
  1603.  
  1604.           This algorithm provides additional redundancy in the construction
  1605.           of the  signature block,  and ensures  that it  is not  a natural
  1606.           power.  (If the signature block is a natural power, one can forge
  1607.           a signature by simply taking the e-th root where e is  the public
  1608.           exponent.   E.g.,  if  e is  3,  one could  potentially  forge  a
  1609.           signature,  if  the  block  is  a natural  cube,  by  taking  the
  1610.           (integer) cube root.  However, the  chance that an integer near a
  1611.           given x is a cube  is quite small if x is  large; the probability
  1612.           x-2/3, so if x  is about 2505 (as is  the case for 512-bit  RSA),
  1613.           then the probability is about 2-337.)
  1614.  
  1615.  
  1616.           7.3    Irreversible Public Key Algorithms
  1617.  
  1618.           These algorithms are not  reversible, as defined in section  7.2.
  1619.           Typically,  different  algorithms  are  used for  encryption  and
  1620.           signature.      This  section   defines   several  signature-only
  1621.           algorithms.   Note that  these algorithms  expand the  plaintext,
  1622.           producing output  which is  significantly larger  than the  input
  1623.           block or digest.  These  algorithms are of use in authentication-
  1624.           only  systems,   and  are   generally  not   subject  to   export
  1625.           restrictions.  
  1626.  
  1627.  
  1628.           7.3.1   El Gamal
  1629.  
  1630.           ElGamal is a public key (asymmetric) digital signature algorithm.
  1631.           It is defined in [k].  Its object identifier is:
  1632.  
  1633.                ElGamal ALGORITHM
  1634.                PARAMETER NULL
  1635.                ::= {encryptionAlgorithm 1}
  1636.  
  1637.                Editor's Note - This OID was assigned by the Directory SIG.
  1638.  
  1639.           In  [X.509], the ASN.1  data element subjectPublicKey  defined as
  1640.           BIT STRING should be interpreted in the case of ElGamal  as being
  1641.           of type:
  1642.  
  1643.  
  1644.  
  1645.                                           17
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.           PART 12 - SECURITY                             June 1994 (Stable)
  1659.  
  1660.                SEQUENCE {
  1661.                prime INTEGER, -- p
  1662.                base INTEGER,  -- alpha
  1663.                key INTEGER    -- public key, Y
  1664.                }
  1665.  
  1666.           Also, in [X.509], the  value associated with the ENCRYPTED  MACRO
  1667.           should be interpreted in the case of ElGamal as being of type:
  1668.  
  1669.                SEQUENCE {
  1670.                s INTEGER,
  1671.                r INTEGER
  1672.                }
  1673.  
  1674.           The ElGamal technology is patented in the United States [f].
  1675.  
  1676.                Editor's Note -  Should we describe and define  OIDs for the
  1677.                message  digest with ElGamal signature algorithms?  There is
  1678.                a Directory SIG OID for md2WithElGamal.
  1679.  
  1680.  
  1681.           7.3.2   DSA
  1682.  
  1683.           The NIST Digital Signature Algorithm [aa] is a variant of ElGamal
  1684.           which produces a shorter  signature size.  Its object  identifier
  1685.           is:
  1686.  
  1687.                dsa ALGORITHM
  1688.                PARAMETER DSAParameters
  1689.                ::= {algorithm 12}
  1690.  
  1691.           The ASN.1  data element  subjectPublicKey defined  as BIT  STRING
  1692.           should be interpreted in the case of DSA as being of type:
  1693.  
  1694.  
  1695.                DSAPublicKey ::= INTEGER
  1696.  
  1697.                DSAParameters ::= SEQUENCE {
  1698.                     prime1         INTEGER,  -- p
  1699.                     prime2         INTEGER,  -- q
  1700.                     base           INTEGER } -- g
  1701.  
  1702.           The DSAPublicKey is simply  an INTEGER, which is encapsulated  in
  1703.           the subjectPublicKey BIT  STRING in the obvious way:  The  MSB of
  1704.           the INTEGER becomes the MSB of the BIT STRING, and the LSB of the
  1705.           INTEGER becomes the LSB of the BIT STRING.
  1706.  
  1707.           In [X.509], the  value associated with the ENCRYPTED MACRO (i.e.,
  1708.           the signature value)  should be interpreted in the case of DSA as
  1709.           being of type:
  1710.  
  1711.                                           18
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.           PART 12 - SECURITY                             June 1994 (Stable)
  1725.  
  1726.                SEQUENCE {
  1727.                     r INTEGER,
  1728.                     s INTEGER }
  1729.  
  1730.  
  1731.           7.3.3   DSA with Common Parameters
  1732.  
  1733.           This version of DSA uses  common parameters which are distributed
  1734.           externally.  The DSAPublicKey is  till an INTEGER as described in
  1735.           the DSA case.  The algorithm's object identifier is:
  1736.  
  1737.                dsaCommon ALGORITHM
  1738.                PARAMETER NULL
  1739.                ::= { algorithm 20 }
  1740.  
  1741.  
  1742.           7.4    Key Exchange 
  1743.  
  1744.  
  1745.           7.4.1   Diffie-Hellman
  1746.  
  1747.           Diffie-Hellman  Key   Exchange  is  a  public   key  (asymmetric)
  1748.           algorithm  whereby  two parties, without any  prior arrangements,
  1749.           can  agree upon  some shared (secret)  information.   The parties
  1750.           exchange  public information  which, in conjunction  with private
  1751.           information  retained by  each user,  may  be used  to compute  a
  1752.           common value.  This value is  typically used as a symmetric  key,
  1753.           for  example,  to  encrypt  further  communications  between  the
  1754.           parties.  
  1755.  
  1756.           The Diffie-Hellman  Key Exchange  is defined in  [h] and  is also
  1757.           described in [j].  The Diffie-Hellman Key Exchange is patented in
  1758.           the United States [i][f].
  1759.  
  1760.           The object identifier is defined in PKCS #3 [j] as:
  1761.  
  1762.                dhKeyAgreement ALGORITHM
  1763.                PARAMETER DHParameter
  1764.                ::=  {iso(1) member-body(2)  US(840) rsadsi(113549)  pkcs(1)
  1765.           pkcs-3(3) 1}
  1766.  
  1767.                DHParameter ::= SEQUENCE {
  1768.                prime               INTEGER, -- p
  1769.                base                     INTEGER   -- g
  1770.                privateValueLength  INTEGER OPTIONAL
  1771.                }
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.                                           19
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.           PART 12 - SECURITY                             June 1994 (Stable)
  1791.  
  1792.           7.4.2   Diffie-Hellman with Common Parameters
  1793.  
  1794.           This version  of  Diffie-Hellman  assumes the  use  of  a  common
  1795.           modulus  and generator, which  are distributed by  external means
  1796.           rather than  being  conveyed in  the parameter  component of  the
  1797.           AlgorithmIdentifier.   The  patent restrictions  in  the previous
  1798.           section still apply.  
  1799.  
  1800.           The object identifier is defined as:
  1801.  
  1802.                dhWithCommonModulus ALGORITHM
  1803.                PARAMETER NULL
  1804.                ::= {algorithm 16}
  1805.  
  1806.                DHParameter ::= SEQUENCE {
  1807.                prime INTEGER, -- p
  1808.                base INTEGER   -- g
  1809.                }
  1810.  
  1811.  
  1812.           7.4.3   RSA Key Transport
  1813.  
  1814.           RSA  key transport is  used only for  encipherment, typically for
  1815.           transporting  symmetric  keys.    It  uses  the  type  2  padding
  1816.           mechanism of  [g]; other padding mechanisms (e.g., those used for
  1817.           signature) are not valid.  The algorithm's object identifier is:
  1818.  
  1819.                rsaKeyTransport ALGORITHM
  1820.                PARAMETER NULL
  1821.                ::= { algorithm 22 }
  1822.  
  1823.  
  1824.           7.5    Signature Algorithms
  1825.  
  1826.           This  section specifies a  number of signature  algorithms, i.e.,
  1827.           hash algorithms combined  with appropriate asymmetric  encryption
  1828.           algorithms.  
  1829.  
  1830.  
  1831.           7.5.1   Message Digests with RSA
  1832.  
  1833.           The algorithms listed below are signature algorithms that combine
  1834.           a message digest  algorithm with the RSA  cryptographic algorithm
  1835.           to produce a digital signature.
  1836.  
  1837.                Editor's Note  - The  OIDs below have  been assigned  by the
  1838.                Directory SIG and  the Security SIG.  Should  we explain why
  1839.                they do not appear in a single tree?
  1840.  
  1841.  
  1842.  
  1843.                                           20
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.           PART 12 - SECURITY                             June 1994 (Stable)
  1857.  
  1858.           7.5.1.1   Square-Mod-N with RSA
  1859.  
  1860.           Square-Mod-N  is   a  signature   algorithm  that   combines  the
  1861.           Square-Mod-N  hash algorithm with the RSA cryptographic algorithm
  1862.           to produce  a digital  signature.  This  algorithm is  defined in
  1863.           [X.509] and its object identifier is defined there as:
  1864.  
  1865.                sqmod-Nwithrsa ALGORITHM
  1866.                PARAMETER KeyAndBlockSize
  1867.                ::= {signatureAlgorithm 1}
  1868.  
  1869.                KeyAndBlockSize ::= INTEGER
  1870.  
  1871.           Recent research regarding the square-mod-n one-way  hash function
  1872.           described in Annex D of [X.509] has revealed that the function is
  1873.           not secure.  Its use, therefore, is discouraged.
  1874.  
  1875.  
  1876.           7.5.1.2   MD2 with RSA
  1877.  
  1878.           Its object identifier is:
  1879.  
  1880.                md2WithRsa ALGORITHM
  1881.                PARAMETER NULL
  1882.                ::= {signatureAlgorithm 1}
  1883.  
  1884.           This OID was assigned by the Directory SIG.
  1885.  
  1886.  
  1887.           7.5.1.3   MD4 with RSA
  1888.  
  1889.           Its object identifier is:
  1890.  
  1891.                md4WithRSA ALGORITHM
  1892.                PARAMETER NULL
  1893.                ::= {algorithm 2}
  1894.  
  1895.  
  1896.           7.5.1.4   MD5 with RSA
  1897.  
  1898.           Its object identifier is:
  1899.  
  1900.                md5WithRSA ALGORITHM
  1901.                PARAMETER NULL
  1902.                ::= {algorithm 3}
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.                                           21
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.           PART 12 - SECURITY                             June 1994 (Stable)
  1923.  
  1924.           7.5.2   Message Digests with RSA Encryption
  1925.  
  1926.           The algorithms listed below are signature algorithms that combine
  1927.           a  message digest algorithm with the RSA Encryption cryptographic
  1928.           algorithm to produce a digital signature.
  1929.  
  1930.  
  1931.           7.5.2.1   MD2 with RSA Encryption
  1932.  
  1933.           MD2 with RSA  encryption is defined in PKCS #1 [g] and its object
  1934.           identifier is defined there as:
  1935.  
  1936.                md2WithRSAEncryption ALGORITHM
  1937.                PARAMETER NULL
  1938.                ::=  {iso(1) member-body(2)  US(840) rsadsi(113549)  pkcs(1)
  1939.           pkcs-1(1) 2}
  1940.  
  1941.  
  1942.           7.5.2.2   MD4 with RSA Encryption
  1943.  
  1944.           Its object identifier is:
  1945.  
  1946.                md4WithRSAEncryption ALGORITHM
  1947.                PARAMETER NULL
  1948.                ::= {algorithm 4}
  1949.  
  1950.  
  1951.           7.5.2.3   MD5 with RSA Encryption
  1952.  
  1953.           MD5 with RSA Encryption is defined in  PKCS #1 [g] and its object
  1954.           identifier is defined there as:
  1955.  
  1956.                md5WithRSAEncryption ALGORITHM
  1957.                PARAMETER NULL
  1958.                ::=  {iso(1) member-body(2)  US(840) rsadsi(113549)  pkcs(1)
  1959.           pkcs-1(1) 4}
  1960.  
  1961.  
  1962.           7.5.3   DSA With SHA
  1963.  
  1964.           This  signature algorithm produces  a 320-bit signature.   SHA is
  1965.           the only hash algorithm  which may be used with DSA.   Its object
  1966.           identifier is
  1967.  
  1968.                dsaWithSHA ALGORITHM
  1969.                PARAMETER DSAParameters
  1970.                ::= {algorithm 13)
  1971.  
  1972.  
  1973.  
  1974.  
  1975.                                           22
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.  
  1988.           PART 12 - SECURITY                             June 1994 (Stable)
  1989.  
  1990.           7.5.4   DSA With SHA with Common Parameters
  1991.  
  1992.           This  version  DSA  with  SHA  signature  algorithm  uses  common
  1993.           parameters  which  are   distributed  externally.     Its  object
  1994.           identifier is
  1995.  
  1996.                dsaCommonWithSHA ALGORITHM
  1997.                PARAMETER NULL
  1998.                ::= { algorithm 21)
  1999.  
  2000.  
  2001.           7.5.5   RSA Signature With MDC-2
  2002.  
  2003.           This algorithm  uses  the RSA  Signature  algorithm to  sign  the
  2004.           digest  produced  by the  MDC-2  DES-based hash  algorithm.   Its
  2005.           object identifier is
  2006.  
  2007.                mdc2WithRSASignature
  2008.                PARAMETER NULL
  2009.                ::= { algorithm 14 }
  2010.  
  2011.  
  2012.           7.5.6   RSA Signature With SHA
  2013.  
  2014.           This algorithm uses the RSA Signature algorithm to sign a 160-bit
  2015.           SHA digest. Its object identifier is
  2016.  
  2017.                shaWithRSASignature
  2018.                PARAMETER NULL
  2019.                ::= {algorithm 15}
  2020.  
  2021.  
  2022.           7.5.7   RSA Signature With MD2
  2023.  
  2024.           This  algorithm uses  the  RSA Signature  algorithm  to sign  the
  2025.           digest produced by the MD2 hash algorithm.  Its object identifier
  2026.           is
  2027.  
  2028.                md2WithRSASignature
  2029.                PARAMETER NULL
  2030.                ::= { algorithm 24 }
  2031.  
  2032.  
  2033.           7.5.8   RSA Signature With MD5
  2034.  
  2035.           This  algorithm uses  the  RSA Signature  algorithm  to sign  the
  2036.           digest produced by the MD5 hash algorithm.  Its object identifier
  2037.           is
  2038.  
  2039.  
  2040.  
  2041.                                           23
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.           PART 12 - SECURITY                             June 1994 (Stable)
  2055.  
  2056.                md5WithRSASignature
  2057.                PARAMETER NULL
  2058.                ::= { algorithm 25 }
  2059.  
  2060.  
  2061.           7.6    Symmetric Encryption Algorithms
  2062.  
  2063.  
  2064.           7.6.1   Data Encryption Standard
  2065.  
  2066.           The  Data Encryption Standard  (DES) is a  secret key (symmetric)
  2067.           cryptographic algorithm.  It is defined in  FIPS 46-1 [l].  It is
  2068.           also  defined as DEA-1  in ANSI X3.92-1981  [m].Implementors will
  2069.           also  find several  other references  useful.   FIPS  PUB 74  [p]
  2070.           provides  guidance on  the  implementation  and  use of  DES  and
  2071.           includes  a complete  specification of  the algorithm.   SPEC PUB
  2072.           500-20  [p]  describes  the  design and  operation  of  the  NIST
  2073.           (formerly NBS)  testbed that  is used for  the validation  of DES
  2074.           implementations.  It specifies a set of 291 test  cases that have
  2075.           been designed to  exercise every basic element of  the algorithm,
  2076.           and as a  further check on the correctness  of an implementation,
  2077.           it specifies an extensive Monte  Carlo analysis.  SPEC PUB 500-61
  2078.           describes   the  design  of   four  maintenance  tests   for  DES
  2079.           implementations.     The  tests  consist  of  an  iterative  test
  2080.           procedure that uses a small program and minimum data.   The tests
  2081.           are designed to  be independent of implementation and  to be fast
  2082.           enough to  test devices during  actual operation.  The  tests are
  2083.           defined as  four specific stopping  points in  a general  testing
  2084.           process  and  satisfy  four testing  requirements  of  increasing
  2085.           degree of completeness on the thoroughness of testing desired.
  2086.            
  2087.           There  are four  modes of operation  of the DES,  as specified by
  2088.           FIPS 81 [n] and ANSI X3.106-1983 [o].   The modes specify how the
  2089.           data will be encrypted and decrypted.  In all cases the key is 64
  2090.           bits.  Use of DES for encryption (i.e., all modes discussed below
  2091.           except DES-MAC) are subject to export controls.  
  2092.  
  2093.  
  2094.           7.6.1.1   DES-ECB
  2095.  
  2096.           This is  the Electronic Codebook  mode of operation.   Its object
  2097.           identifier is: 
  2098.  
  2099.                desECB ALGORITHM
  2100.                PARAMETER NULL
  2101.                ::= {algorithm 6}
  2102.  
  2103.           This mode should be used to encrypt small blocks (e.g., other DES
  2104.           keys).   Its  use is  deprecated  for block  encryption since  it
  2105.           allows cryptanalysis  of repeated  block values  (i.e., the  same
  2106.  
  2107.                                           24
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.           PART 12 - SECURITY                             June 1994 (Stable)
  2121.  
  2122.           plaintext in  the same place relative  to the block), as  well as
  2123.           reassembling messages from known blocks.
  2124.  
  2125.  
  2126.           7.6.1.2   DES-CBC
  2127.  
  2128.           This is the Cipher Block Chaining mode  of operation.  Its object
  2129.           identifier is:  
  2130.  
  2131.                desCBC ALGORITHM
  2132.                PARAMETER CBCParameter
  2133.                ::= {algorithm 7}
  2134.  
  2135.           The PARAMETER  is needed  to specify  the Initialization  Vector,
  2136.           which need not be kept secret.
  2137.  
  2138.           This mode  should be used  to encrypt multiple blocks,  where the
  2139.           full  message  is available.    The random  IV  prevents codebook
  2140.           analysis of the start of the chain.  The IV may be public.
  2141.  
  2142.           This  mode will  propagate a  single bit  error in  one plaintext
  2143.           block into all succeeding blocks, and will propagate a single bit
  2144.           error  in  the  ciphertext  into  a  garbled plaintext  block  on
  2145.           decryption  as well as  a single bit error  in the next plaintext
  2146.           block. 
  2147.  
  2148.           The following  padding mechanism from  [w] should be used  if the
  2149.           data to be encrypted is octet aligned, unless the security policy
  2150.           dictates otherwise:
  2151.  
  2152.           The input to the DES CBC  encryption process must be padded to  a
  2153.           multiple of  8 octet,  in the  following manner.   Let  n be  the
  2154.           length in octets of  the input.  Pad the input  by appending 8-(n
  2155.           mod 8)  octet to the  end of the  message, each having  the value
  2156.           8-(n mod 8), the number  of octets being added.  In  hexadecimal,
  2157.           the   possible  paddings   are:  01,   0202,  030303,   04040404,
  2158.           0505050505, 060606060606,  07070707070707, and  0808080808080808.
  2159.           All input is padded with 1 to 8 octets to produce a multiple of 8
  2160.           octets in length.  The padding can be removed unambiguously after
  2161.           decryption.
  2162.  
  2163.                Editor's Note  - If  adding  the padding  rules would  cause
  2164.                existing implementations to break, this should be registered
  2165.                as a  separate algorithm  identifier.   Note, however,  that
  2166.                [FIPS 81] specifies its own padding rules for padding binary
  2167.                data,  in the absence  of application-defined rules  such as
  2168.                those  above; those rules require an indication (which could
  2169.                be  conveyed as an algorithm  PARAMETER) of whether the data
  2170.                has been padded or not.
  2171.  
  2172.  
  2173.                                           25
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.           PART 12 - SECURITY                             June 1994 (Stable)
  2187.  
  2188.           7.6.1.3   DES-OFB
  2189.  
  2190.           This  is the  Output  Feedback  mode of  operation.   Its  object
  2191.           identifier and parameters are:
  2192.  
  2193.  
  2194.                desOFB ALGORITHM
  2195.                PARAMETER FBParameter
  2196.                ::= {algorithm 8}
  2197.  
  2198.           The parameters  are needed  to specify  an IV  and the number  of
  2199.           feedback bits.
  2200.  
  2201.           This mode may be used to encrypt multiple blocks where  the error
  2202.           extension properties of  DES-CBC are undesirable.   A single  bit
  2203.           error in the ciphertext will cause only a single bit error in the
  2204.           output plaintext.
  2205.  
  2206.  
  2207.           7.6.1.4   DES-CFB
  2208.  
  2209.           This  is the  Cipher  Feedback  mode of  operation.   Its  object
  2210.           identifier and parameters are   
  2211.  
  2212.                desCFB ALGORITHM
  2213.                PARAMETER FBParameter
  2214.                ::= {algorithm 9}
  2215.  
  2216.           The parameters are  needed to  specify an  IV and  the number  of
  2217.           feedback bits.
  2218.  
  2219.           This  mode may  be used when  the plaintext is  made available in
  2220.           pieces, e.g., a character  (8-bit CFB) or a bit (1-bit  CFB) at a
  2221.           time.   This  mode  will  propagate a  single  bit  error in  one
  2222.           plaintext block into all succeeding  blocks, and will propagate a
  2223.           single bit error in the ciphertext into a single-bit error in the
  2224.           corresponding plaintext character as well as garbling of the next
  2225.           8 bytes or so of output (the exact amount depends on the feedback
  2226.           size). 
  2227.  
  2228.  
  2229.           7.6.1.5   DES-MAC
  2230.  
  2231.           DES-MAC is a Message Authentication Code algorithm (cryptographic
  2232.           checksum) based on the DES that uses a single 64-bit DES key.  
  2233.  
  2234.           It is  specified in FIPS 113 [s] and  is equivalent to the binary
  2235.           mode defined  in ANSI X9.9-1986  [t].  Its object  identifier and
  2236.           parameter are:
  2237.  
  2238.  
  2239.                                           26
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.  
  2252.           PART 12 - SECURITY                             June 1994 (Stable)
  2253.  
  2254.                desMAC ALGORITHM
  2255.                PARAMETER MACParameter
  2256.                ::= {algorithm 10}
  2257.  
  2258.           The parameter is needed to specify the MAC length in bits.
  2259.  
  2260.           DES-MAC is equivalent to DES-CBC using an all zero Initialization
  2261.           Vector (IV), with all but the last cipher output block discarded.
  2262.           Separate keys (where one  may simply be  a variant of the  other)
  2263.           should be  used if  both DES-CBC encrypting  and MACing  the same
  2264.           data.
  2265.  
  2266.                Editor's  Note -  We  need to  include  the reference  which
  2267.                specifies  the vulnerability when  the same  key is  used to
  2268.                DES-CBC encrypt and  MAC the same  data, and recommends  the
  2269.                use of separate keys.
  2270.  
  2271.  
  2272.           7.6.1.6   DES-EDE
  2273.  
  2274.           The  DES  algorithm  in  Encrypt-Decrypt-Encrypt  (EDE) mode,  as
  2275.           defined  by [af]  for  encryption and  decryption  with pairs  of
  2276.           64-bit  keys,  might be  used  for  key  or MAC  encryption  when
  2277.           symmetric key management is employed.  (The mechanism is  subject
  2278.           to the  same constraints  as DES  ECB,  but is  cryptographically
  2279.           stronger.)  Given the  pair of keys, the data  is enciphered with
  2280.           the first key,  deciphered with  the second  key, and  enciphered
  2281.           again with  the first key  to perform encryption; the  process is
  2282.           reversed for decryption.   Note that if  both keys are the  same,
  2283.           the result is equivalent to  a single encryption under the single
  2284.           key.  The  key may be represented as a single 128-bit string with
  2285.           the first 64 bits being the first key and the last 64 bits  being
  2286.           the second key.
  2287.  
  2288.                desEDE ALGORITHM
  2289.                PARAMETER NULL
  2290.                ::= {algorithm 17}
  2291.  
  2292.  
  2293.           7.6.2   RC2-CBC
  2294.  
  2295.           RC2-CBC  is  a  symmetric  block  encryption  algorithm.    It is
  2296.           proprietary to RSA  Data Security, Inc., and a  license from them
  2297.           is  required to use the algorithm.   The algorithm uses an 8-byte
  2298.           key and operates  on an 8-byte block, with  cipher block chaining
  2299.           as  in DES.   The recommended padding  is as  described above for
  2300.           DES-CBC:   the  final block is  padded to  an 8-byte  boundary by
  2301.           appending 8  - (n mod 8) bytes, each having  the value 8 - (n mod
  2302.           8), where  n is  the total number  of bytes being  encrypted. The
  2303.           speed is comparable to DES. 
  2304.  
  2305.                                           27
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.           PART 12 - SECURITY                             June 1994 (Stable)
  2319.  
  2320.                rc2CBC ALGORITHM
  2321.                PARAMETER RC2-CBCParameter
  2322.                ::={iso(1)     member-body(2)     US(840)     rsadsi(113549)
  2323.           encryptionAlgorithm(3) 2}
  2324.  
  2325.                RC2-CBCParameter   ::=   CHOICE   {IV,   SEQUENCE   {version
  2326.           RC2Version, IV}}
  2327.            
  2328.                -- with IV only, version defaults to 65
  2329.            
  2330.                IV ::= OCTET STRING -- 8 octets
  2331.                RC2Version ::= INTEGER -- 0 to 255, defined by RSADSI
  2332.  
  2333.           The version  number  relates to  the security  level.   Different
  2334.           versions of RC2 provide different security levels, some of  which
  2335.           are exportable. 
  2336.  
  2337.  
  2338.           7.6.3   RC-4
  2339.  
  2340.           RC-4   is  a  symmetric  block   encryption  algorithm.    It  is
  2341.           proprietary to RSA  Data Security, Inc., and a  license from them
  2342.           is required to use the algorithm.  The RC4 key size  is variable,
  2343.           1 to 256  bytes; the block  size is one  byte.  RC4  is a  stream
  2344.           cipher,  and it  exclusive-ors a pseudorandom  sequence generated
  2345.           from  the key to encrypt or decrypt; a given key should therefore
  2346.           be used only once.  RC4 is very fast.  
  2347.  
  2348.                rc4 ALGORITHM
  2349.                PARAMETER NULL
  2350.                ::={iso(1)     member-body(2)     US(840)     rsadsi(113549)
  2351.           encryptionAlgorithm(3) 4}
  2352.  
  2353.  
  2354.           7.7    ASN.1
  2355.  
  2356.  
  2357.           7.7.1   Distinguished Encoding Rules
  2358.  
  2359.           In order to allow verification  of digital signatures produced by
  2360.           the SIGNED and SIGNATURE MACROs  of [ISO9594-8], it is  necessary
  2361.           to define  a set  of distinguished encoding  rules to  produce an
  2362.           unambiguous   encoding  of   a  given   abstract  syntax   value.
  2363.           [ISO9594-8] defines  a number of  such encoding rules  (8.7), but
  2364.           is, unfortunately, underspecified in the following areas:
  2365.  
  2366.                a)  Ordering of SET OF components;
  2367.  
  2368.                b)  Handling of unused trailing zero bits;
  2369.  
  2370.  
  2371.                                           28
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384.           PART 12 - SECURITY                             June 1994 (Stable)
  2385.  
  2386.                c)  Invocation and designation of new character sets in some
  2387.                of the character string types.
  2388.  
  2389.           The following rules remove these ambiguities: 
  2390.  
  2391.                a)   The [ISO9594-8] distinguished encoding rules are always
  2392.                used;
  2393.  
  2394.                b)  For  SET OF types, components are  sorted into ascending
  2395.                order of the distinguished encodings of the components;
  2396.  
  2397.                c)  For  BIT STRINGS with unused trailing bits,  if the type
  2398.                definition that specifies the  bits have significance,  then
  2399.                they are included in the encoding; otherwise they are not;
  2400.  
  2401.                d)   For  those  character strings  which  allow it,  escape
  2402.                sequences are generated to invoke and designate new register
  2403.                entries  only  when  the register  entry  for  the character
  2404.                currently  being  encoded is  different from  that currently
  2405.                designated for G0, C0, or C1. All designations shall be into
  2406.                G0 or C0. (It is assumed that all characters have entries in
  2407.                the ISO Registry of Coded Character Sets.)
  2408.  
  2409.                NOTE - Rules b,c, and  d are taken from [ISO/CD8825-3] (Nov.
  2410.                1990),  the   ASN.1  Distinguished  Encoding   Rules.  Other
  2411.                features of [ISO/CD8825-3],  which conflict with [ISO9594-8]
  2412.                (e.g.,  length encoding for  constructors), are NOT  used by
  2413.                this IA.
  2414.  
  2415.           It is recommended that whenever  the SIGNED or SIGNATURE macro is
  2416.           to be applied  to an object, the object  should be transferred in
  2417.           its distinguished encoded form.   In this way, when the resources
  2418.           required  to  encode or  decode  an object  exceed  the resources
  2419.           required to  apply the  SIGNED or  SIGNATURE  macro, a  receiving
  2420.           entity may apply  the macro immediately, thus  realizing enhanced
  2421.           performance.   However, if the macro application is unsuccessful,
  2422.           the object must be distinguished encoded and the macro re-applied
  2423.           to determine its actual success or failure.
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.                                           29
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.           PART 12 - SECURITY                             June 1994 (Stable)
  2451.  
  2452.           8   Lower Layers Security
  2453.  
  2454.  
  2455.           9   Upper Layers Security
  2456.  
  2457.           This clause  addresses the provision of security  services in the
  2458.           Upper Layers.   The  Upper Layers  Security  Model specifies  the
  2459.           interactions  among the  Upper  Layers  in  providing  and  using
  2460.           security services [ISO/CD10745].
  2461.  
  2462.  
  2463.           9.1    Security Mechanisms
  2464.  
  2465.  
  2466.           9.1.1   Peer Entity Authentication
  2467.  
  2468.           ACSE authentication extensions  [ISO8649][ISO8650/1] support two-
  2469.           way authentication  through the  definition of  a new  functional
  2470.           unit.     When  this  functional  unit  is  employed,  additional
  2471.           parameters  are provided by  the A-ASSOCIATE service  to indicate
  2472.           this requirement  and convey  authentication information  between
  2473.           entities.   The ASN.1  definition for  this information  is given
  2474.           below:
  2475.  
  2476.           from [ISO8650/1]: 
  2477.  
  2478.           Mechanism-name ::= OBJECT IDENTIFIER  
  2479.                --This  field shall be present if authentication-value is of
  2480.           type ANY.
  2481.  
  2482.           Authentication-value   :=     CHOICE { 
  2483.                charstring          [0] IMPLICIT GraphicString,       
  2484.                bitstring                [1] IMPLICIT BIT STRING,  
  2485.                external                 [2] IMPLICIT EXTERNAL,         
  2486.                other               [3] ANY -- Defined by Mechanism-name }
  2487.  
  2488.                --The abstract syntax of authentication-value is  determined
  2489.                by the authentication-mechanism 
  2490.                --used     during     association     establishment.     The
  2491.           authentication-mechanism is either explicitly 
  2492.                --denoted by the OBJECT IDENTIFIER value for Mechanism-name,
  2493.           or it is know implicitly by 
  2494.                --prior agreement  between the  communicating partners.   If
  2495.           "other" is chosen, then 
  2496.                --"Mechanism-name" must  be present  in accordance  with ISO
  2497.           8824.
  2498.  
  2499.           These agreements  define the  following mechanisms  for use  with
  2500.           this ACSE functional unit:
  2501.  
  2502.  
  2503.                                           30
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.           PART 12 - SECURITY                             June 1994 (Stable)
  2517.  
  2518.                          simple-strong authentication mechanism.
  2519.  
  2520.  
  2521.           9.1.1.1   Simple-Strong Authentication
  2522.  
  2523.  
  2524.           9.1.1.1.1  Operation
  2525.  
  2526.           The operation of the simple-strong authentication mechanisms  are
  2527.           based  upon [ISO9594-3] and  [ISO9594-8] standards.   The sending
  2528.           system is the  entity requesting authentication of  its identity,
  2529.           and  the   receiving  system   is  the   entity  performing   the
  2530.           authentication.   The sending system  supplies data for  the ACSE
  2531.           authentication field of the A-ASSOCIATE primitive.  The receiving
  2532.           ACSE  obtains the ACSE  authentication data from  the A-ASSOCIATE
  2533.           PDU, and it performs the authentication  check.  If the check  is
  2534.           successful, the association formation succeeds or fails depending
  2535.           upon other  circumstances and  parameters.  The  use of  the ACSE
  2536.           authentication  fields  support   both  the  simple  and   strong
  2537.           credentials variants of the [ISO9594-8] authentication exchanges.
  2538.  
  2539.           Certificates  for   use  with   strong  authentication   must  be
  2540.           compatible with [ISO9594-8].
  2541.           Certificates procured for use with Internet Privacy Enhanced Mail
  2542.           [u][v][w][x] are completely  compatible with [ISO9594-8]  and may
  2543.           (subject  to  licensing  restrictions)  be  used  by  the  strong
  2544.           authentication  mechanism.  However, Privacy  Enhanced  Mail uses
  2545.           only a subset of the  suggested [ISO9594-7] name forms, and might
  2546.           not  support  certain name  forms  of  interest  to specific  OIW
  2547.           applications.  Examples  include  Application  Entity  names  and
  2548.           certain name forms defined by  the North American Directory Forum
  2549.           in NADF-123 [y].
  2550.  
  2551.           9.1.1.1.2  Data Structure
  2552.  
  2553.           Mechanism Name
  2554.  
  2555.           The following is the ASN.1 description of the authentication data
  2556.           structure for simple or strong authentication:
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.                                           31
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.           PART 12 - SECURITY                             June 1994 (Stable)
  2583.  
  2584.             simple-strong-auth-mechanism OBJECT IDENTIFIER ::= {iso (1)     
  2585.                                                
  2586.                           identified-organization (3)                       
  2587.                                                
  2588.                           oiw (14)                                          
  2589.                                                
  2590.                           secsig (3)                                        
  2591.                                                
  2592.                           authentication-mechanisms (3)                     
  2593.                                                
  2594.                           simple-strong-identity-authentication (1)         
  2595.                                                
  2596.                           }                                                 
  2597.                                                                             
  2598.                                                      
  2599.  
  2600.           Authentication Value
  2601.  
  2602.           The authentication value  is conveyed in the other  option of the
  2603.           authentication-value field of ACSE authentication.
  2604.  
  2605.               Authentication-Value ::=                                      
  2606.                                             
  2607.                    SEQUENCE OF DirectoryAbstractService.Credentials         
  2608.                                                    
  2609.  
  2610.           This    data     type    is     defined    in    ASN.1     module
  2611.           DirectoryAbstractService  of  [ISO9594-3]   as  modified  through
  2612.           resolution of Directory  Defect Report Numbers 9594/052  and 063.
  2613.           The semantics of all fields are as specified in clause 8.1.2.1 of
  2614.           [ISO9594-3].
  2615.  
  2616.           The Authentication-Value  is defined as a SEQUENCE  because it is
  2617.           permitted  to pass  credentials  for  multiple  entities  in  the
  2618.           authentication   value.    It   is  the  responsibility   of  the
  2619.           application to determine the specific meaning and use of multiple
  2620.           credentials  in such  a case.   It  is anticipated  that specific
  2621.           applications   (e.g.,    Network   Management)    would   provide
  2622.           specifications for handling multiple credentials within their own
  2623.           clauses of this Part.
  2624.  
  2625.           This   authentication   mechanism  may   employ   any  registered
  2626.           authentication  algorithm; however,  it is  recommended that  the
  2627.           algorithms identified in clause 7 be used.
  2628.  
  2629.  
  2630.           9.1.1.1.3  Options
  2631.  
  2632.           For the Simple  Credentials option of Credentials,  the following
  2633.           agreements apply.  Conforming implementations are not required to
  2634.  
  2635.                                           32
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.           PART 12 - SECURITY                             June 1994 (Stable)
  2649.  
  2650.           employ  the OPTIONAL  validity sequence  of the  SimpleCredential
  2651.           data element.   Receiving implementations that do not  employ the
  2652.           validity  sequence must reject an authentication value which does
  2653.           contain this sequence.   Conforming implementations  shall employ
  2654.           the optional password field of the SimpleCredential data element.
  2655.  
  2656.           Note that the password may be hashed  using one way functions and
  2657.           the  other  validity  fields.    Password  is  either  cleartext,
  2658.           Protected1 or Protected2 according to [ISO9594-8].
  2659.  
  2660.  
  2661.           9.1.1.2   External Authentication Mechanisms 
  2662.  
  2663.           Externally  defined  authentication   exchanges  may  employ  the
  2664.           external [2]  option of  the authentication-value  field of  ACSE
  2665.           authentication.  In  this   case  it  is  recommended   that  the
  2666.           mechanism-name be omitted,  with the particular mechanism  in use
  2667.           being implied by the  abstract syntax identified in  the external
  2668.           construct.
  2669.  
  2670.  
  2671.           9.1.1.2.1  Kerberos Version 5
  2672.  
  2673.  
  2674.  
  2675.           One  instance  of  an external  authentication  mechanism  is the
  2676.           Kerberos  mechanism defined  in [z].  The  Kerberos specification
  2677.           assigned  the following object  identifier to an  abstract syntax
  2678.           suitable for use in this way:
  2679.  
  2680.                     [TBD]
  2681.  
  2682.  
  2683.           9.1.2   Integrity/Data Origin Authentication Transformation
  2684.  
  2685.           This      transformation     is      a     specialization      of
  2686.           gulsSignedTransformation, which is  defined in clause D.4  of DIS
  2687.           11586-1.   This transformation uses the following parameters, and
  2688.           provides additional details  on the operation of the encoding and
  2689.           decoding processes.
  2690.  
  2691.                1)   The initEncRules field has the value  { joint-iso-ccitt
  2692.                     asn1(1) ber-derived(2) der(1) }, i.e., DER.
  2693.  
  2694.                2)   The  signOrSealAlgorithm element  shall be  keyed-hash-
  2695.                     seal:
  2696.  
  2697.                     keyed-hash-seal ALGORITHM
  2698.                          PARAMETER NULL
  2699.                     ::= { algorithm 23 }
  2700.  
  2701.                                           33
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.           PART 12 - SECURITY                             June 1994 (Stable)
  2715.  
  2716.                     The  keyed-hash-seal  algorithm  is  specified  in  the
  2717.           encoding process description below.
  2718.  
  2719.                3)   The hash algorithm, if the hashAlgorithm element is not
  2720.                     present, shall default to md5.
  2721.  
  2722.                Editor's Note -  Points 2 and 3  are redundant with text  in
  2723.                the  NM  Agreements.     This  should  be   resolved  before
  2724.                progressing to the Stable Agreements.
  2725.  
  2726.                4)   The keyInformation field is not present.
  2727.  
  2728.           Encoding process:   When a value of  an abstract syntax is  to be
  2729.           sealed for transmission, the following procedures apply:
  2730.  
  2731.                1)   Encode the output data type of the transformation using
  2732.                     the ASN.1 Distinguished Encoding Rules, with the shared
  2733.                     secret key used as the value of the appendix component.
  2734.                     (Since automatic tagging is used, this is equivalent to
  2735.                     encoding the  unprotectedItem using DER,  and enclosing
  2736.                     it  in the intermediateValue and output data type using
  2737.                     BER.)
  2738.  
  2739.                NOTE -  This encoding is  only for purposes of  the security
  2740.                transformation, and does not mean DER must be used to encode
  2741.                the PDU for transmission, i.e., as the transfer syntax.
  2742.  
  2743.                2)   Hash the complete DER encoding of the value  derived in
  2744.                     step 1.
  2745.  
  2746.                NOTE     -     The     current     definition     of     the
  2747.                gulsSignedTransformation  is  unduly   restrictive  in  that
  2748.                cryptographic   operations   are   only   applied   to   the
  2749.                intermediateValue element  of the  output data type,  rather
  2750.                than the entire type.   This is being submitted as a  ballot
  2751.                comment on DIS 11586-1.
  2752.  
  2753.                3)   Insert  the hash value  into the appendix  component of
  2754.                     the  output  data type,  which  is the  xformedDataType
  2755.                     element of the transmitted PDV.
  2756.  
  2757.           Encoding process local inputs:  Identifier of hash algorithm  and
  2758.           any required  algorithm parameters, and shared secret key.  (Most
  2759.           currently registered hash algorithms have a NULL parameter.)
  2760.  
  2761.           Decoding  process:   When  a  received PDV  to  be verified,  the
  2762.           following procedures apply:
  2763.  
  2764.                1)   Extract and save  the received hash value  contained in
  2765.                     the appendix component  of the received xformedDataType
  2766.  
  2767.                                           34
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.           PART 12 - SECURITY                             June 1994 (Stable)
  2781.  
  2782.                     component of the received PDV.
  2783.  
  2784.                2)   Replace  the value  in the  appendix  component of  the
  2785.                     xformedDataType component with the shared secret key.
  2786.  
  2787.                NOTE - The extraction and  replacement of the seal field may
  2788.                be performed directly on the ASN.1 encoded PDU if the length
  2789.                of the secret key and the hash digest are equal.  Otherwise,
  2790.                the PDU must be decoded and reencoded.
  2791.  
  2792.                3)   Hash the DER  encoding of the  xformedDataType element.
  2793.                     (Reencoding  may  be  avoided  if  the  unprotectedItem
  2794.                     encoding is  distinguished, and the  generic protecting
  2795.                     transfer syntax defined in DIS 11586-4 is used.)
  2796.  
  2797.                4)   Compare the  hash extracted  in step  1  with the  hash
  2798.                     derived in step 3.  If they are equal, then the seal is
  2799.                     valid; otherwise an error is signalled.
  2800.  
  2801.           Decoding  process local inputs:  Identifier of hash algorithm and
  2802.           any required algorithm parameters, and shared secret key.
  2803.  
  2804.           Decoding process  outputs:   Recovered unprotected  item. and  an
  2805.           indication of whether the seal is valid.
  2806.  
  2807.           Errors:   An error condition occurs if seal verification fails.
  2808.  
  2809.           Security services:  Data origin authentication, data integrity.
  2810.  
  2811.  
  2812.           10  Message Handling System (MHS) Security
  2813.  
  2814.           All current MHS security relevant  text appears in Part 8, clause
  2815.           10.
  2816.  
  2817.  
  2818.           11  Directory Services Security
  2819.  
  2820.  
  2821.  
  2822.  
  2823.  
  2824.  
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.                                           35
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.  
  2845.  
  2846.           PART 12 - SECURITY                             June 1994 (Stable)
  2847.  
  2848.           12  Network Management Security
  2849.  
  2850.           This clause outlines  an approach to providing  security services
  2851.           for  OSI Network Management.   The goals of  this approach are to
  2852.           provide security in a manner that is  simple and straight-forward
  2853.           to  implement, and  to avoid  any  unnecessary computational  and
  2854.           managerial  overhead.  The approach also takes into consideration
  2855.           the  need  for  different  levels  of  security  services  within
  2856.           different  network   management  domains,  and   the  near   term
  2857.           requirement for  interoperability of network  management entities
  2858.           over heterogeneous network types.
  2859.  
  2860.  
  2861.           12.1   Threats
  2862.  
  2863.           For  the purpose  of  discussion, threats  are  divided into  two
  2864.           categories: primary and  secondary threats.  Primary  threats are
  2865.           those considered  to be applicable  to the full range  of network
  2866.           management   implementations,   while   secondary   threats   are
  2867.           considered to be  applicable to the more limited  range of highly
  2868.           secure implementations.
  2869.  
  2870.           The primary threats to be protected against are the following:
  2871.  
  2872.                a)  The masquerading of a manager or agent entity;
  2873.  
  2874.                b)   The fabrication  or modification  of Common  Management
  2875.                Information Protocol (CMIP) data units.
  2876.  
  2877.           By countering  primary threats, disruption  of network management
  2878.           services by the casual user can be avoided.
  2879.  
  2880.           The secondary threats to be protected against are the following:
  2881.  
  2882.                a)  All primary threats;
  2883.  
  2884.                b)  The disclosure of CMIP data units;
  2885.  
  2886.                c)    The  replay,  reflection,  reordering,  insertion,  or
  2887.                deletion of CMIP data units.
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.                                           36
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.  
  2912.           PART 12 - SECURITY                             June 1994 (Stable)
  2913.  
  2914.           12.2   Security Services
  2915.  
  2916.  
  2917.           12.2.1  Basic Security Services
  2918.  
  2919.           The security services required to counter primary threats are:
  2920.  
  2921.                a)  Peer entity authentication;
  2922.  
  2923.                b)  Data origin authentication;
  2924.  
  2925.                c)  Connectionless integrity.
  2926.  
  2927.           Peer entity authentication  is to occur during  the establishment
  2928.           of  an   application  association.     If   the  association   is
  2929.           successfully  established,  the   underlying  security  mechanism
  2930.           provides information  that is  subsequently used  in data  origin
  2931.           authentication.  There the information  may be included in or, in
  2932.           some other way, transform the data units of  subsequent exchanges
  2933.           so   that  they  can   be  identified  as   originating  from  an
  2934.           authenticated entity.  Both authentication security  services are
  2935.           to be provided at the application level of the protocol.
  2936.  
  2937.           Connectionless integrity insures that data units originating from
  2938.           an authenticated  source are  not  modifiable without  detection.
  2939.           When combined with a strong data origin authentication mechanism,
  2940.           the  ability  to  fabricate new  data  units  is also  countered.
  2941.           Connectionless  integrity   may   be  provided   at  either   the
  2942.           application  level of  the protocol  or within  one of  the lower
  2943.           levels of the protocol (i.e., transport or network).  
  2944.  
  2945.  
  2946.           12.2.2  Enhanced Security Services
  2947.  
  2948.           The security services required to counter secondary threats are:
  2949.  
  2950.                a)  All basic security services with the  possible exception
  2951.                of connectionless integrity;
  2952.  
  2953.                b)  Connectionless confidentiality;
  2954.  
  2955.                c)  Connection integrity with or without recovery.
  2956.  
  2957.           Both connectionless confidentiality  and connection integrity may
  2958.           be provided at either the application level of protocol or within
  2959.           one  of the lower  levels of protocol.   The  latter provision is
  2960.           assumed  here.    Enhanced security  services  are  not discussed
  2961.           further in this note,  but to be issued as a  requirement for the
  2962.           lower  layer protocol  and service  standards,  and according  to
  2963.           functional standards to be developed.
  2964.  
  2965.                                           37
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.           PART 12 - SECURITY                             June 1994 (Stable)
  2979.  
  2980.  
  2981.           12.3   Security Mechanisms
  2982.  
  2983.  
  2984.  
  2985.           12.3.1  Peer Entity Authentication
  2986.  
  2987.  
  2988.           Peer  Entity  Authentication  will  use  the  ACSE authentication
  2989.           mechanism and  associated data  types as defined  in clause  9 of
  2990.           this Part of  the IAs.  The specific  authentication mechanism to
  2991.           be  supported  is  the  Simple-Strong Authentication  defined  in
  2992.           9.1.1.1.
  2993.  
  2994.           Support of ACSE authentication is optional.
  2995.  
  2996.  
  2997.           12.3.2  Connectionless  IntegrityProposed  text for  this  clause
  2998.                   appears in WIA Part 12, clause 12.3.2.
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.                                           38
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.           PART 12 - SECURITY                             June 1994 (Stable)
  3045.           
  3046.           Annex A (normative)
  3047.  
  3048.           ISPICS Requirements List
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.  
  3066.  
  3067.  
  3068.  
  3069.  
  3070.  
  3071.  
  3072.  
  3073.  
  3074.  
  3075.  
  3076.  
  3077.  
  3078.  
  3079.  
  3080.  
  3081.  
  3082.  
  3083.  
  3084.  
  3085.  
  3086.  
  3087.  
  3088.  
  3089.  
  3090.  
  3091.  
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097.                                           39
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.  
  3110.           PART 12 - SECURITY                             June 1994 (Stable)
  3111.  
  3112.           Annex B (normative)
  3113.  
  3114.           Errata
  3115.  
  3116.                            Table B.1 - SIA Part 12 changes
  3117.  
  3118.            NO. OF      TYPE     REFERENCED        CLAUS   NOTES
  3119.            ERRATA               DOCUMENT          E
  3120.  
  3121.                                                                           
  3122.                                                               
  3123.                                                                   
  3124.  
  3125.  
  3126.                                                                   
  3127.  
  3128.                                                                   
  3129.  
  3130.  
  3131.                                                                   
  3132.                                                     
  3133.  
  3134.  
  3135.  
  3136.  
  3137.  
  3138.  
  3139.  
  3140.  
  3141.  
  3142.  
  3143.  
  3144.  
  3145.  
  3146.  
  3147.  
  3148.  
  3149.  
  3150.  
  3151.  
  3152.  
  3153.  
  3154.  
  3155.  
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.                                           40
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.           PART 12 - SECURITY                             June 1994 (Stable)
  3177.  
  3178.           Annex C (normative)
  3179.  
  3180.           TBD
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.  
  3187.  
  3188.  
  3189.  
  3190.  
  3191.  
  3192.  
  3193.  
  3194.  
  3195.  
  3196.  
  3197.  
  3198.  
  3199.  
  3200.  
  3201.  
  3202.  
  3203.  
  3204.  
  3205.  
  3206.  
  3207.  
  3208.  
  3209.  
  3210.  
  3211.  
  3212.  
  3213.  
  3214.  
  3215.  
  3216.  
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.                                           41
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.  
  3242.           PART 12 - SECURITY                             June 1994 (Stable)
  3243.  
  3244.           Annex D (informative)
  3245.  
  3246.           Security Algorithms and Attributes
  3247.  
  3248.           OIWSECSIGAlgorithmObjectIdentifiers                         {i(1)
  3249.           identified-organization(3)
  3250.                                                oiw(14) secsig(3)
  3251.                                              
  3252.           oIWSECSIGAlgorithmObjectIdentifiers(1)}
  3253.           DEFINITIONS =
  3254.           BEGIN
  3255.  
  3256.           EXPORTS
  3257.           -- to be determined
  3258.  
  3259.           IMPORTS
  3260.           -- none
  3261.  
  3262.           -- category of information object
  3263.           --  defining  our  own  here; perhaps  the  definition  should be
  3264.           imported from
  3265.           -- {joint-iso-ccitt ds(5) modules(1) usefulDefinitions(0)}
  3266.  
  3267.           algorithm                      OBJECT   IDENTIFIER  ::=   {iso(1)
  3268.           identified-organization(3)
  3269.                                                     oiw(14)       secsig(3)
  3270.           algorithm(2)}
  3271.  
  3272.           -- macros
  3273.  
  3274.           --     taken    from     {joint-iso-ccitt     ds(5)    modules(1)
  3275.           authenticationFramework(7)}
  3276.           ALGORITHM MACRO::=
  3277.           BEGIN
  3278.           TYPE NOTATION::= "PARAMETER" type
  3279.           VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER)
  3280.           END -- of ALGORITHM
  3281.  
  3282.           -- algorithms
  3283.  
  3284.           md4WithRSA ALGORITHM
  3285.               PARAMETER NULL
  3286.               ::= {algorithm 2}
  3287.  
  3288.           md5WithRSA ALGORITHM
  3289.               PARAMETER NULL
  3290.               ::= {algorithm 3}
  3291.  
  3292.           md4WithRSAEncryption ALGORITHM
  3293.  
  3294.  
  3295.                                           42
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.  
  3308.           PART 12 - SECURITY                             June 1994 (Stable)
  3309.  
  3310.               PARAMETER NULL
  3311.               ::= {algorithm 4}
  3312.  
  3313.           desECB ALGORITHM
  3314.               PARAMETER NULL
  3315.               ::= {algorithm 6}
  3316.  
  3317.           desCBC ALGORITHM
  3318.                   PARAMETER CBCParameter
  3319.                   ::= {algorithm 7}
  3320.  
  3321.           CBCParameter ::= IV
  3322.  
  3323.           desOFB ALGORITHM
  3324.                   PARAMETER FBParameter
  3325.                   ::= {algorithm 8}
  3326.  
  3327.           desCFB ALGORITHM
  3328.                   PARAMETER FBParameter
  3329.                   ::= {algorithm 9}
  3330.           FBParameter ::= SEQUENCE {
  3331.                   iv IV,
  3332.                   numberOfBits NumberOfBits
  3333.                   }
  3334.  
  3335.           NumberOfBits ::= INTEGER     -- Number of feedback bits (1  to 64
  3336.           bits)
  3337.  
  3338.  
  3339.               Editor's  Note -  Check FIPS  PUB  81 for  allowed ranges  of
  3340.           feedback
  3341.               bits and specify ranges here as a comment.
  3342.  
  3343.  
  3344.                   IV ::= OCTET STRING  -- 8 octets
  3345.  
  3346.           desMAC ALGORITHM
  3347.                   PARAMETER MACParameter
  3348.                   ::= {algorithm 10}
  3349.  
  3350.           MACParameter ::= INTEGER    -- Length of MAC (16, 24,  32, 40, 40
  3351.           or 64 bits)
  3352.  
  3353.  
  3354.                   Editor's Note - Check FIPS PUB 113 for allowed
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.                                           43
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.  
  3374.           PART 12 - SECURITY                             June 1994 (Stable)
  3375.  
  3376.           rsaSignature ALGORITHM
  3377.                   PARAMETER NULL
  3378.                   ::= { algorithm 11 }
  3379.  
  3380.           dsa ALGORITHM
  3381.                   PARAMETER DSAParameters
  3382.                   ::= { algorithm 12 }
  3383.  
  3384.  
  3385.           dsaWithSHA ALGORITHM
  3386.                   PARAMETER DSAParameters
  3387.                   ::= { algorithm 13}
  3388.  
  3389.           mdc2WithRSASignature
  3390.                   PARAMETER NULL
  3391.                   ::= { algorithm 14 }
  3392.  
  3393.  
  3394.           shaWithRSASignature
  3395.                   PARAMETER NULL
  3396.                   ::= { algorithm 15 }
  3397.  
  3398.           dhWithCommonModulus ALGORITHM
  3399.                   PARAMETER NULL
  3400.                   ::= { algorithm 16 }
  3401.  
  3402.           desEDE ALGORITHM
  3403.                   PARAMETER NULL
  3404.                   ::= { algorithm 17 }
  3405.           sha ALGORITHM
  3406.                   PARAMETER NULL
  3407.                   ::= { algorithm 18 }
  3408.  
  3409.           mdc-2 ALGORITHM 
  3410.                   PARAMETER NULL
  3411.                   ::= { algorithm 19 }
  3412.  
  3413.           dsaCommon ALGORITHM
  3414.                   PARAMETER NULL
  3415.                   ::= { algorithm 20 }
  3416.  
  3417.           dsaCommonWithSHA ALGORITHM
  3418.                   PARAMETER NULL
  3419.                   ::= { algorithm 21)
  3420.  
  3421.           rsaKeyTransport ALGORITHM
  3422.                   PARAMETER NULL
  3423.                   ::= { algorithm 22 }
  3424.  
  3425.  
  3426.  
  3427.                                           44
  3428.  
  3429.  
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.  
  3438.  
  3439.  
  3440.           PART 12 - SECURITY                             June 1994 (Stable)
  3441.  
  3442.           keyed-hash-seal ALGORITHM
  3443.                   PARAMETER NULL
  3444.                   ::= { algorithm 23 }
  3445.  
  3446.           md2WithRSASignature
  3447.                   PARAMETER NULL
  3448.                   ::= { algorithm 24 }
  3449.  
  3450.           md5WithRSASignature
  3451.                   PARAMETER NULL
  3452.                   ::= { algorithm 25 }
  3453.           END -- of Algorithm Object Identifier Definitions
  3454.  
  3455.  
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493.                                           45
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.  
  3506.           PART 12 - SECURITY                             June 1994 (Stable)
  3507.  
  3508.           Annex E (normative)
  3509.  
  3510.           References for Security Algorithms
  3511.  
  3512.           [a]     Kaliski, B.,  The MD2 Message-Digest  Algorithm, Internet
  3513.                   Draft draft-rsadsi-kaliski-md2-00.txt, July 1, 1991.
  3514.  
  3515.           [b]     Rivest,   R.  and  S.   Dusse,  The   MD4  Message-Digest
  3516.                   Algorithm, Internet Draft draft-rsadsi-rivest-md4-00.txt,
  3517.                   July 1, 1991.
  3518.  
  3519.           [c]     Rivest,   R.  and   S.  Dusse,  The   MD5  Message-Digest
  3520.                   Algorithm, Internet Draft draft-rsadsi-rivest-md5-01.txt,
  3521.                   July 10, 1991.
  3522.  
  3523.           [d]     Rivest, R.  L., A. Shamir  and L.  Adleman, A method  for
  3524.                   obtaining    digital     signatures    and     public-key
  3525.                   cryptosystems,  Communications  of  the  ACM, Volume  21,
  3526.                   Number 2, February 1978, pp. 120-126.
  3527.  
  3528.           [e]     Rivest, Ronald  L., Adi  Shamir and  Leonard M.  Adleman,
  3529.                   Cryptographic  Communications System  and  Method, United
  3530.                   States Patent No.  4,405,829, September 20, 1983.
  3531.  
  3532.           [f]     Fougner,  R.B.,   Public  Key  Standards   and  Licenses,
  3533.                   Internet  Request for Comments (RFC) 1170, January 1991.
  3534.  
  3535.           [g]     RSA  Data  Security,  Inc.,   PKCS  #1:  RSA   Encryption
  3536.                   Standard,  Version 1.4, June 3, 1991.
  3537.  
  3538.           [h]     Diffie,  W.,   and  M.E.  Hellman,   New  directions   in
  3539.                   cryptography,   IEEE Transactions on  Information Theory,
  3540.                   IT-22, pp. 644-654,  1976.
  3541.  
  3542.           [i]     Hellman, Martin E., Bailey W. Diffie and Ralph C. Merkle,
  3543.                   Cryptographic Apparatus and Method,  United States Patent
  3544.                   No.  4,200,770, April 29, 1980.
  3545.  
  3546.           [j]     RSA  Data   Security,  Inc.,   PKCS  #3:   Diffie-Hellman
  3547.                   Key-Agreement Standard,  Version 1.3, June 3, 1991.
  3548.  
  3549.           [k]     ElGamal,  T., A public  key cryptosystem and  a signature
  3550.                   scheme   based on  discrete logarithms, IEEE Transactions
  3551.                   on Information   Theory, IT-31, Number 4, July  1985, pp.
  3552.                   469-472.
  3553.  
  3554.           [l]     Federal  Information  Processing   Standards  Publication
  3555.                   (FIPS  PUB)     46-1,  Data  Encryption  Standard,   U.S.
  3556.                   Department  of   Commerce/National  Bureau of  Standards,
  3557.  
  3558.  
  3559.                                           46
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.  
  3572.           PART 12 - SECURITY                             June 1994 (Stable)
  3573.  
  3574.                   Supersedes FIPS  PUB 46,   January  15, 1977,  Reaffirmed
  3575.                   January 22, 1988.
  3576.  
  3577.           [m]     ANSI  X3.92-1981,  Data  Encryption  Algorithm,  American
  3578.                   National    Standards  Institute, Approved  December  30,
  3579.                   1980.
  3580.  
  3581.           [n]     Federal  Information  Processing   Standards  Publication
  3582.                   (FIPS PUB)  81,  DES Modes of Operation,  U.S. Department
  3583.                   of   Commerce/National Bureau  of Standards,  December 2,
  3584.                   1980.
  3585.  
  3586.           [o]     ANSI X3.106-1983,  Data Encryption  Algorithm - Modes  of
  3587.                   Operation,   American   National   Standards   Institute,
  3588.                   Approved May  16, 1983.
  3589.  
  3590.           [p]     Federal  Information  Processing   Standards  Publication
  3591.                   (FIPS PUB)  74, Guidelines for Implementing and Using the
  3592.                   NBS  Data    Encryption  Standard,   U.S.  Department  of
  3593.                   Commerce/National  Bureau of Standards, April 1, 1981.
  3594.  
  3595.           [q]     Gait,  Jason,  Validating  the  Correctness  of  Hardware
  3596.                   Implementations  of  the  NBS Data  Encryption  Standard,
  3597.                   Special      Publication  500-20,   U.S.   Department  of
  3598.                   Commerce/National Bureau   of Standards,  Issued November
  3599.                   1977, Revised September 1980.
  3600.  
  3601.           [r]     Gait, Jason, Maintenance Testing for the  Data Encryption
  3602.                   Standard, Special Publication  500-61, U.S. Department of
  3603.                   Commerce/National Bureau of Standards, August 1980.
  3604.  
  3605.           [s]     Federal  Information  Processing   Standards  Publication
  3606.                   (FIPS  PUB)    113,  Computer Data  Authentication,  U.S.
  3607.                   Department of  Commerce/National Bureau of Standards, May
  3608.                   30, 1985.
  3609.  
  3610.           [t]     American   National    Standard   X9.9-1986,    Financial
  3611.                   Institution  Message Authentication (Wholesale), American
  3612.                   Bankers  Association, April 7, 1986.
  3613.  
  3614.           [u]     Linn, John,  Privacy Enhancement for  Internet Electronic
  3615.                   Mail:  Part I --  Message Encipherment and Authentication
  3616.                   Procedures, Internet Draft draft-ietf-pem-msgproc-01.txt,
  3617.                   September 1991.
  3618.  
  3619.           [v]     Kent, Steve, Privacy Enhancement for Internet  Electronic
  3620.                   Mail:  Part  II   --  Certificate-Based  Key  Management,
  3621.                   Internet Draft draft-ietf-pem-keymgmt-00.txt, June 1991.
  3622.  
  3623.           [w]     Balenson,  David.  M,  Privacy Enhancement  for  Internet
  3624.  
  3625.                                           47
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.  
  3638.           PART 12 - SECURITY                             June 1994 (Stable)
  3639.  
  3640.                   Electronic  Mail:  Part  III --  Algorithms,  Modes,  and
  3641.                   I d e n t i f i e r s ,     I n t e r n e t     D r a f t
  3642.                   draft-ietf-pem-algorithms-00.txt, August 1991.
  3643.  
  3644.           [x]     Kaliski,  Burton.  S,  Privacy Enhancement  for  Internet
  3645.                   Electronic   Mail:   Part   IV   --  Notary,   Co-Issuer,
  3646.                   CRL-Storing and  CRL-Retrieving Services,  Internet Draft
  3647.                   draft-ietf-pem-notary-00.txt, July 1991.
  3648.  
  3649.           [y]     North American Directory Forum, A Naming Scheme for c=US,
  3650.                   Request for Comments 1255, September 1991.
  3651.  
  3652.           [z]     Kohl, John and  B. Clifford Neuman, The  Kerberos Network
  3653.                   Authentication       Service,        Internet       Draft
  3654.                   cat-kerberos-00.txt, June 1991.
  3655.  
  3656.           [aa]    Proposed FIPS xx, Digital  Signature Standard, U.S. Dept.
  3657.                   of   Commerce/National   Institute   of   Standards   and
  3658.                   Technology,  1992.   Also  published  as  ANS X9.30-199x,
  3659.                   Public Key Cryptography Using Irreversible Algorithms for
  3660.                   the Financial  Services  Industry, Part  1:  The  Digital
  3661.                   Signature Algorithm (DSA). 
  3662.  
  3663.           [ab]    Proposed FIPS  xx, Secure  Hash Standard,  U.S. Dept.  of
  3664.                   Commerce/National Institute of  Standards and Technology,
  3665.                   1992.    Also  published as  ANS  X9.30-199x,  Public Key
  3666.                   Cryptography  Using   Irreversible  Algorithms   for  the
  3667.                   Financial Services  Industry,  Part 1:  The  Secure  Hash
  3668.                   Algorithm (SHA).
  3669.  
  3670.           [ac]    ANS X9.31-199x, Public Key Cryptography Using  Reversible
  3671.                   Algorithms for the  Financial Services Industry,  Part 2:
  3672.                   Hash Algorithms.
  3673.  
  3674.           [ad]    ANS X9.31-199x, Public  Key Cryptography Using Reversible
  3675.                   Algorithms for  the Financial Services Industry,  Part 1:
  3676.                   The RSA Signature Algorithm .
  3677.  
  3678.           [ae]    ISO/IEC  IS 9796, Digital Signature Scheme Giving Message
  3679.                   Recovery, 1991.
  3680.  
  3681.           [af]    ANS  X9.17-1985,  Financial  Institution  Key  Management
  3682.                   (Wholesale), American Bankers Association, April 4, 1985,
  3683.                   Section 7.2.
  3684.  
  3685.           [ag]    D. Coppersmith,  Analysis  of  ISO/CCITT  Document  X.509
  3686.                   Annex D, IBM  Research Division,  Yorktown Heights,  June
  3687.                   1989.
  3688.  
  3689.           [ah]    J.   Moore,   "Protocol   Failures   in   Cryptosystems,"
  3690.  
  3691.                                           48
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704.           PART 12 - SECURITY                             June 1994 (Stable)
  3705.  
  3706.                   Proceedings of the IEEE, vol. 76, no. 5, pp. 594-601, May
  3707.                   1988.
  3708.  
  3709.           [ai]    Miller,S.P.,  B.C.   Neuman,  J.I.  Schiller,   and  J.H.
  3710.                   Saltzer,  "Project Athena  Technical Plan  Section E.2.1:
  3711.                   Kerberos   Authentication   and   Authorization  System,"
  3712.                   Project Athena, MIT, December 1987.
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720.  
  3721.  
  3722.  
  3723.  
  3724.  
  3725.  
  3726.  
  3727.  
  3728.  
  3729.  
  3730.  
  3731.  
  3732.  
  3733.  
  3734.  
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741.  
  3742.  
  3743.  
  3744.  
  3745.  
  3746.  
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.  
  3755.  
  3756.  
  3757.                                           49
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768.  
  3769.  
  3770.           PART 12 - SECURITY                             June 1994 (Stable)
  3771.  
  3772.           Annex F (informative)
  3773.  
  3774.           Bibliography
  3775.  
  3776. [1]               ISO/IEC JTC1 SC21  N3614 Information Retrieval, Transfer,
  3777.                   and Management for OSI
  3778.  
  3779. [2]               ISO/IEC DP 9796 Data Cryptographic Techniques
  3780.  
  3781. [3]               Secure Data Network System (SDNS): Key Management Profile
  3782.                   - Communications  Protocol Requirements (SDN-601/NIST  IR
  3783.                   90-4262)
  3784.  
  3785. [4]               SDNS: Message Security Protocol (SDN-701/NIST IR 90-4250)
  3786.  
  3787. [5]               SDNS: Directory (SDN-702/NIST IR 90-4250)
  3788.  
  3789. [6]               ISO/IEC JTC1 SC21/WG1 N5002 Security ASE
  3790.  
  3791. [7]               Access Control Information Specification (ACIS)
  3792.  
  3793. [8]               SDNS:  Key Management Protocol  - Definition  of Services
  3794.                   Provided (SDN-902/NIST IR 90-4262)
  3795.  
  3796. [9]               SDNS:  Key Management  Protocol  -  Specification of  the
  3797.                   Protocol (SDN-903/NIST IR 90-4262)
  3798.  
  3799. [10]              ISO/IEC JTC1 SC21/WG1 N4110 Authentication ASE Exchange
  3800.  
  3801. [11]              SDNS: Security Protocol 3 (SDN-301/NIST IR 90-4250)
  3802.  
  3803. [12]              SDNS: Security Protocol 4 (SDN-401/NIST IR 90-4250)
  3804.  
  3805. [13]              SDNS:  Key  Management   Protocol  -  SDNS  Traffic   Key
  3806.                   (SDN-906/NIST IR 90-4262)
  3807.  
  3808. [14]              ISO/IEC JTC1 SC21/WG1 N5001 Upper Layers Security Model
  3809.  
  3810. [15]              ISO/IEC JTC1 SC21/WG1 F29 N5045 Access Control Framework
  3811.  
  3812. [16]              ISO/IEC JTC1 SC21/WG1 F30 Authentication Framework
  3813.  
  3814. [17]              ISO/IEC JTC1 SC21/WG1 F31 N5047 Integrity Framework
  3815.  
  3816. [18]              ISO/IEC JTC1 SC21/WG1 F32 N5046 Non-Repudiation
  3817.  
  3818. [19]              ISO/IEC JTC1 SC21/WG4 N3775 Security Audit Trail
  3819.  
  3820. [20]              ISO/IEC JTC1 SC21/WG1 N4110 Authentication ASE Exchange
  3821.  
  3822.  
  3823.                                           50
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.           PART 12 - SECURITY                             June 1994 (Stable)
  3837.  
  3838. [21]              ISO/IEC JTC1 SC21/WG7 N4022 Key Management Framework
  3839.  
  3840. [22]              ISO/IEC JTC1 SC21/WG1 N5048 Confidentiality Framework
  3841.  
  3842. [23]              ISO/IEC  JTC1  SC21/WG1  N5049  Guide   to  OSI  Security
  3843.                   Standards
  3844.  
  3845. [24]              ISO/IEC JTC1 SC21/WG1 N5044 Security Framework Overview
  3846.  
  3847. [25]              RFC-1113,  Privacy  Enhancement for  Internet  Electronic
  3848.                   Mail:  Part I  - Message Encipherment  and Authentication
  3849.                   Procedures.
  3850.  
  3851. [26]              RFC-1114,  Privacy  Enhancement for  Internet  Electronic
  3852.                   Mail: Part II - Certificate-Based Key Management.
  3853.  
  3854. [27]              RFC-1115,  Privacy  Enhancement for  Internet  Electronic
  3855.                   Mail: Part  III  -  Algorithms,  Modes,  and  Identifiers
  3856.                   (August 1989).
  3857.  
  3858. [28]              Network Layer ISO/IEC JTC1 SC6 
  3859.  
  3860. [29]              Transport Layer ISO/IEC JTC1 SC6 6285 
  3861.  
  3862. [30]              Lower Layer ISO/IEC JTC1 SC6 6227
  3863.  
  3864. [31]              ANSI X9.9 DES Encryption Algorithum
  3865.  
  3866.  
  3867.  
  3868.  
  3869.  
  3870.  
  3871.  
  3872.  
  3873.  
  3874.  
  3875.  
  3876.  
  3877.  
  3878.  
  3879.  
  3880.  
  3881.  
  3882.  
  3883.  
  3884.  
  3885.  
  3886.  
  3887.  
  3888.  
  3889.                                           51
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.  
  3900.  
  3901.  
  3902.           PART 12 - SECURITY                             June 1994 (Stable)
  3903.  
  3904.           Annex G (informative)
  3905.  
  3906.           ElGamal
  3907.  
  3908.           The information in this subclause includes a tutorial description
  3909.           of the ElGamal  scheme for digital  signature using the  notation
  3910.           defined in the  Directory Documents, [ISO9594-8]. It  is intended
  3911.           that  much of the tutorial information provided in this subclause
  3912.           will be moved to the security agreements sometime in the future.
  3913.  
  3914.  
  3915.           G.1    Background
  3916.  
  3917.           The ElGamal  digital signature  scheme is  based on  earlier work
  3918.           done by Diffie and  Hellman [b] in which it was  suggested that a
  3919.           likely  candidate  for   a  one-way  function  is   the  discrete
  3920.           exponential function
  3921.  
  3922.                                                                         (1)
  3923.  
  3924.           where x is an integer  between 1 and p-1 inclusive, where  p is a
  3925.           very large  prime number,  and where    is  an integer  such that
  3926.           1   p  and {  mod p,  2  mod p, ...,  p-1 mod  p} is equal to the
  3927.           set  {1, 2,  ..., p-1}. In  algebraic terminology,  such an    is
  3928.           called a primitive element. References on the topic  of primitive
  3929.           roots and elements are [aa] and [ab].
  3930.  
  3931.           Now, in the real  number system, if y =  x, then by definition of
  3932.           the logarithm we can solve for x using x = log (y). The same idea
  3933.           extends to solving  eq (1) for x so  that inverting f(x) requires
  3934.           calculating discrete  logarithms. The reason  Diffie and  Hellman
  3935.           suspected  eq  (1)  is one-way  is  that  for suitable  p,  it is
  3936.           computationally  difficult  to  invert  f(x).  According  to  the
  3937.           current state of the art, computing discrete logs  for suitable p
  3938.           has  been  found  to  require  a  number  of  operations  roughly
  3939.           equivalent to
  3940.  
  3941.                                                                         (2)
  3942.  
  3943.           where b is the number of bits in p, and c is estimated at c = .69
  3944.           according to [ac].  This can be compared  to only about 2  log2 p
  3945.           multiplications  for discrete exponentiation. If in fact the best
  3946.           known algorithm for computing discrete logs is near  optimal then
  3947.           Expression  (2)is a good measure of the problem's complexity (for
  3948.           a properly chosen  p) and the  discrete exponential function  has
  3949.           all the  qualities of a  one-way function as  described by Diffie
  3950.           and Hellman.
  3951.  
  3952.  
  3953.  
  3954.  
  3955.                                           43
  3956.  
  3957.  
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.  
  3965.  
  3966.  
  3967.  
  3968.           PART 12 - SECURITY                             June 1994 (Stable)
  3969.  
  3970.           G.2    Digital Signature
  3971.  
  3972.           Private Key:  Xs denotes  the private  key for  user X.  Xs is  a
  3973.           randomly chosen integer which user X keeps secret.
  3974.  
  3975.           Public  Key:  Xp  denotes  the  public key  for  user  X  and  is
  3976.           calculated using the corresponding private key such that
  3977.  
  3978.                                                                         (3)
  3979.  
  3980.           where
  3981.  
  3982.                   a)   p is a  prime satisfying the requirements  listed in
  3983.                   12.2.2.4.
  3984.  
  3985.                   b)    is a primitive element mod p.
  3986.  
  3987.                   c)  Note that p and   could be used globally, but because
  3988.                   they  should  be  easily  changeable  (see  12.2.2.4  for
  3989.                   information  about  why  these two  parameters  should be
  3990.                   easily  changeable) it would  probably be  preferable for
  3991.                   each user to choose  his/her own p and  . If users choose
  3992.                   their own,  then p and    must  be made available  to the
  3993.                   recipient for use in the signature verification process.
  3994.  
  3995.           Signing  Procedure:  Suppose  user  A wants  to  sign  a  message
  3996.           intended for recipient B. The basic idea is to compute a two part
  3997.           signature (r, s) for the message m such that
  3998.  
  3999.                                                                         (4)
  4000.  
  4001.           where h is a one-way hash function.
  4002.  
  4003.           Compute the signature (r, s) as follows.
  4004.  
  4005.                   a)  Choose a random number k, uniformly between 0 and p-1
  4006.                   such  that k  and p-1  have  no common  divisor except  1
  4007.                   (i.e., gcd(k,p-1)=1).
  4008.  
  4009.                   b)  Compute r such that
  4010.  
  4011.                                                                         (5)
  4012.  
  4013.                   c)  Use r to solve for the corresponding s as follows.
  4014.  
  4015.  
  4016.                   1)  rewrite eq (4) using eq (5) and the definition of the
  4017.                   public key to get
  4018.  
  4019.                                                                         (6)
  4020.  
  4021.                                           44
  4022.  
  4023.  
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.  
  4034.           PART 12 - SECURITY                             June 1994 (Stable)
  4035.  
  4036.  
  4037.                   Combining exponents, get
  4038.  
  4039.                                                                         (7)
  4040.  
  4041.  
  4042.                   eq (7) implies that
  4043.  
  4044.                                                                         (8)
  4045.  
  4046.  
  4047.                   Note that  eq (8) has a  single solution for s  because k
  4048.                   was  chosen   such  that   gcd(k,p-1)=1.  See  [ad]   for
  4049.                   supporting theorem.
  4050.  
  4051.  
  4052.                   2)  now solve for s and get
  4053.  
  4054.                                                                         (9)
  4055.  
  4056.  
  4057.                   where I is computed such that k * I   1 (mod p-1).
  4058.  
  4059.           The ElGamal signature is comparable in size to the  corresponding
  4060.           RSA signature.
  4061.  
  4062.  
  4063.           G.3    Verification
  4064.  
  4065.           The recipient receives  Ap, m, r, s,   , and p and  computes both
  4066.           sides of eq (4) and then compares the results.
  4067.  
  4068.  
  4069.           G.4    Known Constraints on Parameters
  4070.  
  4071.           The following list  of constraints is  the result of a  search of
  4072.           current literature and may not be complete:
  4073.  
  4074.                   a)  p must be prime;
  4075.  
  4076.                   b)  p must be large.
  4077.  
  4078.                   Note that Expression (2) can  be used to speculate on the
  4079.                   level of security afforded by crypto systems based on the
  4080.                   discrete log problem. Breaking the ElGamal scheme has not
  4081.                   been  proven to be  equivalent to finding  discrete logs,
  4082.                   but if  we assume  equivalence then we  can estimate  how
  4083.                   large p should be for a desired level of security.
  4084.  
  4085.                   For instance,suppose we  wanted to use Expression  (2) to
  4086.  
  4087.                                           45
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.  
  4098.  
  4099.  
  4100.           PART 12 - SECURITY                             June 1994 (Stable)
  4101.  
  4102.                   decide how large p should be so that we can be reasonably
  4103.                   sure  the system cannot  be broken (using  the best known
  4104.                   algorithm) in  a practical amount  of time. To be  on the
  4105.                   conservative side, we decide we want to protect against a
  4106.                   special purpose machine that can  perform 1015 operations
  4107.                   per  second. Specifically,  we want to  know how  large p
  4108.                   should be so that such a machine  would take at least one
  4109.                   year to break the system.
  4110.  
  4111.                   In one  year, the hypothetical  machine can  perform 3  x
  4112.                   1022 operations. To find the size of the desired p, solve
  4113.                   the following equation for b.
  4114.  
  4115.                                                                        (10)
  4116.  
  4117.                   We get       . This is the number of  bits in the desired
  4118.                   p. So, the magnitude of the desired p is about 2606 which
  4119.                   is roughly 266 x 10180.
  4120.  
  4121.                   Hence, to  be reasonably  sure of  attaining the  desired
  4122.                   level of  security, we find  a prime number  greater than
  4123.                   266 x 10180 which satisfies all the other criteria listed
  4124.                   in this  subclause. Our confidence,  however, is strictly
  4125.                   based  on  the  assumption that  breaking  ElGamal  is as
  4126.                   difficult as  finding discrete  logs  and the  assumption
  4127.                   that the best  known algorithm for finding  discrete logs
  4128.                   is near optimal.
  4129.  
  4130.                   c)  p should occasionally be changed. This requirement is
  4131.                   discussed in [ae] and is related to the discovery of  new
  4132.                   algorithms for computing discrete logarithms in GF(p).
  4133.  
  4134.                   d)  p-1  must have at least one large  prime factor. This
  4135.                   requirement is  discussed in [ae]  and is imposed  by the
  4136.                   Silverman-Pohlig-Hellman  algorithm   p  which   computes
  4137.  
  4138.                   discrete  logarithms  in  GF(p)  using   on  the  order
  4139.                   operations and a comparable amount of storage, where r is
  4140.                   the largest prime factor in p-1.
  4141.  
  4142.                   e)    p  should  not  be  the  square  of  any  prime.  A
  4143.                   subexponential-time  algorithm   for  computing  discrete
  4144.                   logarithms in GF(p2) has been found. See [af]for details.
  4145.  
  4146.  
  4147.  
  4148.  
  4149.  
  4150.  
  4151.  
  4152.  
  4153.                                           46
  4154.  
  4155.  
  4156.  
  4157.  
  4158.  
  4159.