Annotation of 43BSDReno/contrib/mh/papers/trusted/text.tex, revision 1.1.1.1

1.1       root        1: % begin text
                      2: 
                      3: \banner
                      4: 
                      5: \section{Introduction}
                      6: Initially,
                      7: a brief model of a user community employing a trusted mail service is
                      8: introduced.
                      9: Following this introduction,
                     10: a prototype system is described which attempts to meet the needs of a user
                     11: community.
                     12: Finally,
                     13: open issues are discussed,
                     14: which are currently not satisfied by the prototype system or its model of
                     15: operation.
                     16: 
                     17: Two or more entities,
                     18: called {\it users},
                     19: wish to communicate in a {\it secure} environment.
                     20: Depending on their available resources,
                     21: different levels of security are possible.
                     22: At the extreme,
                     23: two parties with substantial resources may wish to communicate in a fashion
                     24: which prevents any third parties,
                     25: known as {\it adversaries},
                     26: from observing their communication.
                     27: At this level,
                     28: not only is an adversary unable to capture the communication for analysis,
                     29: but in fact, the adversary is unaware that any communication is occurring at
                     30: all.
                     31: In most applications,
                     32: this level of security is prohibitively expensive.
                     33: A more economic method is to translate messages into a form which is useless
                     34: to an adversary and then to communicate those messages on an insecure medium.
                     35: 
                     36: This latter method requires the two users to have some sort of {\it key}
                     37: with which to ``lock'' the plaintext into ciphertext when transmitting,
                     38: and then to ``unlock'' the ciphertext back into useful form when receiving.
                     39: Hence, there are two central issues to deal with:
                     40: \underbar{first},
                     41: keys must be generated, distributed, and maintained in a secure fashion;
                     42: and,
                     43: \underbar{second},
                     44: the keys must be ``intricate'' enough so that sense can't be made out of the
                     45: ciphertext without knowledge of the key.
                     46: The first part is handled by a {\it key distribution center} (\KDC/),
                     47: which maintains a list of users and a set of keys for each pair of users.
                     48: The second part relies on sophisticated encryption and decryption algorithms.
                     49: It is beyond the scope of this paper to describe cryptographic techniques in
                     50: detail.
                     51: For a detailed survey of this area, the reader should consult \cite{VVoyd83}.
                     52: 
                     53: \tagfigure{1}{The \MTS/ Model}{mtsmodel}
                     54: In the context of our discussion (using the terminology of \cite{X.400}),
                     55: the medium used to transport is supplied
                     56: by a {\it message transport system} (\MTS/),
                     57: which is composed of one or more {\it message transport agents} (\MTA/s).
                     58: Usually,
                     59: the entire \MTS/ is distributed in nature,
                     60: and not under a single administrative entity;
                     61: in contrast, an \MTA/ is usually controlled by a single administration and
                     62: resides in a particular domain.
                     63: At every end-point in the medium,
                     64: a {\it user agent} (\UA/) acts on behalf of a user and interfaces
                     65: to a local \MTA/.
                     66: This model is briefly summarized in Figure~\mtsmodel.
                     67: 
                     68: A message, in our context, consists of two parts:
                     69: the {\it headers} and the {\it body}.
                     70: The headers are rigorously structured;
                     71: they contain addressing information and other forms useful to a \UA/.
                     72: The body is freely formatted and is usually not meaningful to a \UA/.
                     73: 
                     74: When a message is sent from one user to another,
                     75: the following activities occur:
                     76: The originating user indicates to the \UA/ the address of the recipient;
                     77: the \UA/ then posts the message through a {\it posting slot} to an \MTA/,
                     78: which involves a posting protocol in which the validity of the address
                     79: and the syntax of the message are considered.
                     80: Upon successful completion of the protocol,
                     81: the \MTA/ accepts responsibility for delivering the message,
                     82: or if delivery fails, to inform the originating user of the failure.
                     83: The \MTA/ then decides if it can deliver the message directly to the
                     84: recipient;
                     85: if so, it delivers the message through a {\it delivery slot} to the
                     86: recipient's \UA/,
                     87: using a delivery protocol.
                     88: If not, it contacts an adjacent \MTA/, closer to the recipient,
                     89: and negotiates its transfer (using a protocol similar to the posting protocol).
                     90: This process repeats until an \MTA/ is able to deliver the message,
                     91: or an \MTA/ determines that the message can't be delivered.
                     92: In this latter case,
                     93: a failure notice is sent to the originating user.
                     94: 
                     95: \tagfigure{2}{Mappings in the \MTS/ model}{mappings}
                     96: It is important to note that there are two mappings which occur here.
                     97: The first, which is performed implicitly by the originating user,
                     98: maps the name of the recipient into the recipient's address;
                     99: the second, which is performed explicitly by the \MTS/,
                    100: maps the address of the recipient into a route to get from the originator's
                    101: \MTA/ to the recipient's \MTA/.
                    102: These mappings are depicted in Figure~\mappings.
                    103: 
                    104: Obviously, there is no guarantee that the \MTS/ can be made secure,
                    105: in {\it any} sense of the word.
                    106: This is particularly true if it is under several administrations.
                    107: Regardless of the number of administrations in the \MTS/,
                    108: this problem quickly degenerates to a problem of
                    109: Byzantine generals\cite{LLamp82}.
                    110: Further, trying to secure each \MTA/ in the path that a message travels is
                    111: equally questionable.
                    112: 
                    113: \tagfigure{3}{Modifications to the \MTS/ model}{tmodel}
                    114: To support secure communications in this environment,
                    115: a new entity,
                    116: the {\it trusted mail agent} (\TMA/) is introduced into our model.
                    117: A solution is to have the \UA/ interact with this entity
                    118: both when posting a message and when taking delivery of a message.
                    119: The \UA/ first contacts a \TMA/ to encrypt the body of the message for the
                    120: recipient,
                    121: prior to pushing it through the posting slot.
                    122: Upon receipt from the destination \MTA/,
                    123: the \UA/ examines the message and contacts
                    124: the \TMA/ to decipher the body of the message from the source.
                    125: An overview of the relationship between the standard \MTS/ model
                    126: and the augmentations made for the \trustedmail/ system is shown in
                    127: Figure~\tmodel.
                    128: 
                    129: To achieve these tasks,
                    130: the \TMA/ interacts with a {\it key distribution service} (\KDS/),
                    131: which manages keys between pairwise users.
                    132: At this point, a third mapping takes place:
                    133: the \UA/ must be able to map addresses into the identifier(s)
                    134: by which the originator and recipient are known by the \TMA/ and \KDS/.
                    135: These identifiers are known as \KDS/ IDs, or simply IDs.
                    136: Usually, a fourth mapping also occurs,
                    137: which maps the ID of a user into the name of a user.
                    138: In our context,
                    139: there is an exact one-to-one mapping between the name of a user and the ID
                    140: of that user.
                    141: In contrast,
                    142: there may be a one-to-many mapping between the name of a user and
                    143: that user's address in the \MTS/.
                    144: Further, there are usually many different routes which a message may traverse
                    145: when going from an originating user to a recipient user.
                    146: 
                    147: The \TMA/ is said to be {\it trusted} because it can be relied on to perform
                    148: only those actions specifically requested by the user.
                    149: In the context of this paper,
                    150: this means, given proper construction and maintenance of the \TMA/,
                    151: that the software will communicate with the \KDC/ in some secure fashion to
                    152: negotiate key relationships and that it will not disclose those key
                    153: relationships to other parties.
                    154: Furthermore,
                    155: the body of mail messages exchanged between users which employ
                    156: a trusted mail agent will be unintelligible to other parties.
                    157: Finally,
                    158: a recipient of a message receives authenticated information from the
                    159: trusted mail agent as to the identify of the sender.
                    160: 
                    161: Hence,
                    162: when each user employs a \TMA/,
                    163: end-to-end encryption occurs at the \UA/ level
                    164: (to avoid any problems with malicious \MTA/s).%
                    165: \nfootnote{Note that in the scope of this system,
                    166: the end-points are the user agents, not the hosts they reside on.
                    167: In fact,
                    168: it may very well be the case that the user agent and the local message
                    169: transport agent do not reside on the same host.}
                    170: Any adversary listening in on the \MTS/,
                    171: may observe messages,
                    172: but make no sense out of them
                    173: (other than rudimentary traffic analysis).
                    174: Note, however,
                    175: that since the medium itself is not secure,
                    176: an adversary may still introduce new messages,
                    177: corrupt messages,
                    178: or remove messages,
                    179: as they traverse the \MTS/.
                    180: In the first two cases, however,
                    181: the recipient would be suspicious
                    182: because the adversary lacks the encrypting key employed by the source user.
                    183: In the third case,
                    184: the source user can retransmit the message after a suitable time.
                    185: Of course,
                    186: there is no built-in retransmission policy~---~this aspect depends on the
                    187: user's sending mail and is beyond the scope of the system.
                    188: 
                    189: It is important to understand the target community for the \trustedmail/ system
                    190: described herein.
                    191: In particular,
                    192: the \TMA/ is intended for a commercial and not a military environment.
                    193: This distinction is important,
                    194: since it is the {\it fundamental} assumption of this paper that
                    195: the latter community has much stricter requirements than the former.
                    196: Because of this,
                    197: the prototype system is able to make certain simplifying assumptions which
                    198: permit it to operate in a mode which is less secure than military
                    199: applications would permit.
                    200: Although these issues are explored in greater detail at the end of the paper,
                    201: for the moment recall that, like most qualities, trustedness is not absolute:
                    202: there are varying degrees of trustedness,
                    203: and as a system becomes more trusted,
                    204: it becomes more expensive, in some sense, to operate and maintain.
                    205: 
                    206: It is perhaps instructive at this point to consider why the introduction of a
                    207: key distribution center is appropriate in this environment,
                    208: and why the {\it fundamental} assumption that trusted mail agents do not
                    209: directly communicate with each other is necessary.
                    210: Although a user agent is able to converse with the local message transport
                    211: agent in real-time,
                    212: it is frequently not able to communicate with other user agents in real-time.
                    213: Furthermore,
                    214: considering the vast problems and overhead
                    215: of trying to establish secure communications from ``scratch''
                    216: (a problem far beyond the scope of this paper),
                    217: it is would not be a good idea to try and communicate key relationships with
                    218: other user agents,
                    219: even if it were always possible to do so.
                    220: In addition,
                    221: by separating the trusted aspects of the message transport system from the
                    222: system itself,
                    223: many other advantages can be seen.
                    224: These are presented in greater detail at the end of the paper.
                    225: 
                    226: The discussion thus far has considered only a single recipient.
                    227: In practice, a user might wish to send to several others,
                    228: using a different key for each.
                    229: Hence each copy of the message is encrypted differently,
                    230: depending on the particular recipient in question.
                    231: Note that this has the effect of {\it un-bundling} message transfer in the
                    232: \MTS/,
                    233: as advanced \MTA/s tend to keep only a single copy of the message for any
                    234: number of recipients in order to save both cpu, disk, and I/O resources.
                    235: 
                    236: For example,
                    237: in some existing mail systems,
                    238: if a message was sent to $n$ users on a remote system,
                    239: then the $n$ addresses would be sent from the source \MTA/ to the remote \MTA/
                    240: along with one copy of the message.
                    241: Upon delivery,
                    242: the remote \MTA/ would deliver a copy to each of the $n$ recipients,
                    243: but the virtual wire between the source \MTA/ and the recipient \MTA/ was
                    244: burdened with only one copy of the message.
                    245: But in a secure environment,
                    246: since a different key is used by the source user when communicating with each
                    247: of the $n$ recipients,
                    248: $n$ different messages will be posted with the local \MTA/,
                    249: and the advantages of recipient bundling are lost.
                    250: 
                    251: Along these lines however,
                    252: private discussion groups may wish to avoid this problem by establishing
                    253: access to a single ID for their use.
                    254: In this case,
                    255: a subscriber to the \KDS/ may actually have more than one ID,
                    256: one for ``personal'' use and one for each discussion group.
                    257: The appropriate ID is used when posting messages to the discussion group.
                    258: Naturally the administrative policy for deciding who is allowed to use the
                    259: \KDS/ ID of a discussion group is left to the moderator of the group.
                    260: Observant readers will note that this vastly decreases the aspect of
                    261: secure communications for the discussion group.
                    262: This method is suggested as a compromise
                    263: which permits the bundling of messages for multiple recipients
                    264: to reduce \MTS/ traffic.
                    265: The price is high however,
                    266: as a compromise on behalf of {\it any} member of the discussion group
                    267: compromises the entire group.
                    268: For large discussion groups and a bandwidth limited \MTS/,
                    269: this price may be worth paying.
                    270: The prototype implementation of the \TMA/ supports multiple recipients but
                    271: not multiple \KDS/ IDs.
                    272: 
                    273: Having described this environment for communication,
                    274: the designs of a \KDS/ and \TMA/ which form the heart of the \TTI/
                    275: \trustedmail/ system are discussed.
                    276: The prototype system was developed on a \vax/-11/780 running 4.2\bsd/ \unix/.
                    277: The system is based on the \ansi/ draft\cite{FIKM}
                    278: for financial key management,
                    279: but diverges somewhat in operation
                    280: owing to the differences between the electronic mail (CBMS)
                    281: and electronic funds (EFT) environments.
                    282: Note however that the \ansi/ data encryption algorithm\cite{DEA,FIPS46} is
                    283: used in the current implementation.
                    284: A public-key cipher system was not considered as the basis for the prototype
                    285: since, to the authors' knowledge,
                    286: an open standard for a public-key system has yet to be adopted by the
                    287: commercial community.
                    288: In contrast,
                    289: the \ansi/ draft for financial key management appears to be receiving
                    290: wide support from the commercial community.
                    291: 
                    292: \tagtable{4}{Abbreviations used in this paper}{terms}
                    293: In the description that follows,
                    294: a large number of acronyms are employed to denote commonly used terms.
                    295: In order to aid the reader,
                    296: these are summarized in Table~\terms.
                    297: 
                    298: \section{The Key Distribution Service}
                    299: The prototype version of the \KDS/
                    300: was designed to provide key distribution services for
                    301: user agents under both the same or different administrations.
                    302: As a result,
                    303: the means by which a trusted mail agent connects to a key distribution server
                    304: is quite flexible.
                    305: For example,
                    306: the prototype system supports connections via
                    307: standard terminal lines,
                    308: dial-ups (e.g., over a toll-free 800 number),
                    309: \unix/ pipes,
                    310: and over TCP sockets\cite{IP,TCP}.
                    311: In the interests of simplicity,
                    312: for the remainder of this paper,
                    313: a TCP/IP model of communication is used.
                    314: Initially,
                    315: a server on a well-known service host in the ARPA Internet community
                    316: listens for connections on a well-known port.%
                    317: \nfootnote{The term {\it well known} in this context means that the 
                    318: location of the service is known {\it a priori} to the clients.}
                    319: As each connection is established,
                    320: it services one or more transactions over the lifetime of the session.
                    321: When all transactions for a session have been made,
                    322: the connection is closed.
                    323: If the necessary locking operations are performed by the server
                    324: to avoid the usual database problems,
                    325: then more than one connection may be in progress simultaneously.
                    326: Of course,
                    327: a time-out facility should also be employed to prevent a rogue agent from
                    328: monopolizing the key distribution server.
                    329: 
                    330: Once a session has been started,
                    331: the client (a.k.a.~\TMA/) initiates transactions with the server
                    332: (a.k.a.~\KDS/).
                    333: Each transaction consists of the exchange of two or three
                    334: {\it cryptographic service messages} (\CSM/s):
                    335: the client sends a request,
                    336: the server attempts to honor the request and sends a response,
                    337: and,
                    338: if the server responded positively,
                    339: the client then acknowledges the transaction.
                    340: By exchanging these cryptographic service messages,
                    341: the \KDS/ and the \TMA/ are able to communicate key relationships.
                    342: Obviously, the relationships themselves must be transmitted in encrypted
                    343: form.%
                    344: \nfootnote{Otherwise an adversary could simply impersonate a \TMA/ and ask
                    345: for the desired key relationships.
                    346: Similarly, this also prevents an adversary from successfully impersonating a
                    347: key distribution server.}
                    348: Hence, not only are key relationships between two \TMA/s communicated,
                    349: but key relationships between the \KDS/ and the \TMA/ are communicated as well.
                    350: 
                    351: This leads us to consider the key relationships that exist
                    352: between a \TMA/ and the \KDS/.
                    353: A client usually has three keys dedicated for use with the server.
                    354: The first is the {\it master key} (denoted MK),
                    355: which has an infinite cryptoperiod, and is rarely used.
                    356: This key is distributed manually.
                    357: The second is the {\it key-encrypting key} (denoted KK),
                    358: which has a shorter cryptoperiod.
                    359: Whenever a KK is transmitted to the \TMA/,
                    360: it is encrypted with the master key.
                    361: The third is the {\it authentication key} (denoted KA),
                    362: which is used to authenticate transactions that do not contain data keys
                    363: (a count field is also used to avoid play-back attacks).
                    364: Whenever a KA is transmitted to the \TMA/,
                    365: it is encrypted with the key-encrypting key.
                    366: When transactions contain keys,
                    367: an associated count field is included to indicate the number of
                    368: keys encrypted with the key-encrypting key used.
                    369: Although not used by the prototype implementation,
                    370: a production system would employ audit mechanisms to monitor usage histories.
                    371: 
                    372: Currently four types of requests are honored by the \KDS/:
                    373: two key relationship primitives, and two name service primitives.
                    374: The type is indicated by the {\it message class} (MCL) of the first
                    375: cryptographic service message sent in the transaction.
                    376: As each message class  is discussed,
                    377: the appropriate datastructures used by the \KDS/ are introduced.
                    378: Space considerations prevent a detailed description of the information
                    379: exchanged in each transaction.
                    380: Appendix~B of this paper presents a short example of an interaction between
                    381: the \KDS/ and a \TMA/.
                    382: 
                    383: The first two requests are used to create (or retrieve) key relationships,
                    384: and to destroy key relationships:
                    385: 
                    386: The {\it request service initialization} (RSI) message class
                    387: is used to establish a {\it key-encrypting key} (KK) relationship
                    388: between the \TMA/ and another \TMA/,
                    389: or between the \TMA/ and the \KDS/.
                    390: As implied by the name,
                    391: a key-encrypting key is used to cipher keys which are used to cipher data
                    392: exchanged between peers.
                    393: These other keys are called {\it data keys} (KDs).
                    394: 
                    395: The {\it disconnect service message} (DSM) message class
                    396: is used to discontinue a KK-relationship
                    397: between the \TMA/ and another \TMA/,
                    398: or between the \TMA/ and the \KDS/.
                    399: This prevents keys which are felt to have been compromised,
                    400: or are vulnerable to compromise,
                    401: from receiving further use in the system.
                    402: It should be noted that,
                    403: owing to mail messages (not \CSM/s) in transit,
                    404: a discontinued key relationship
                    405: may be needed to decipher the key used to encipher a mail message.
                    406: The prototype \KDS/ supports this capability.
                    407: 
                    408: In addition to maintaining an MK/KK/KA triple for each \TMA/,
                    409: the \KDS/ also remembers KK-relationships between \TMA/s.
                    410: The reason for this stems from a fundamental difference between the
                    411: electronic funds transfer and computer-based message system worlds.
                    412: The \KDS/ assumes that no two arbitrarily chosen \TMA/s can communicate in
                    413: real-time,
                    414: and as a result,
                    415: \TMA/s do not exchange cryptographic service messages.
                    416: (See Appendix~C for a more detailed discussion.)
                    417: This means that when a \TMA/ establishes a KK-relationship with another \TMA/,
                    418: the former \TMA/ may start using the KK before the latter \TMA/ knows of the
                    419: new KK-relationship.
                    420: In fact,
                    421: it is quite possible for a KK-relationship to be established,
                    422: used,
                    423: and then discontinued,
                    424: all unilaterally on the part of one \TMA/.
                    425: It is up to the \KDS/ to retain old cryptographic material
                    426: (possibly for an indefinite period of time),
                    427: and aid the latter \TMA/ in reconstructing KK-relationships as the need arises.
                    428: Naturally,
                    429: discontinued KKs are not used to encode any new information,
                    430: but rather to decode old information.
                    431: (Again, refer to Appendix~C for additional details.)
                    432: 
                    433: The other two requests are used to query the directory service aspects of the
                    434: key distribution server:
                    435: 
                    436: The {\it request user identification} (RUI) message class
                    437: is used to identify a subscriber to the \KDS/.
                    438: Both  the \KDS/ and \TMA/ are independent of any underlying mail transport
                    439: system (\MTS/).
                    440: As a result,
                    441: a subscriber to the \KDS/ is known by two unique attributes:
                    442: a ``real-world'' name,
                    443: and a \KDS/ identifier (ID).
                    444: The user of a mail system,
                    445: or the \UA/,
                    446: is responsible for mapping an \MTS/-specific address
                    447: (e.g., {\tx [email protected]})
                    448: to the person associated with that maildrop
                    449: (e.g., \eg{Marshall\ T.\ Rose}).
                    450: When conversing with the \KDS/,
                    451: the \TMA/ uses the \KDS/ ID of another user to reference that person's \TMA/.
                    452: Since it is inconvenient to remember the IDs (as opposed to people's names),
                    453: the \KDS/ provides the RUI message class to permit a \TMA/ to query the
                    454: mapping between names and IDs.
                    455: If the \KDS/ cannot return an exact match,
                    456: it may respond with a list of possible matches
                    457: (if the identifying information given was ambiguous),
                    458: or it may respond with a response that there is no matching user.
                    459: 
                    460: Finally,
                    461: the {\it request identified user} (RIU) message class
                    462: performs the inverse operation:
                    463: given a \KDS/ ID, a ``real-world'' name is returned.
                    464: This request is useful for disambiguating unsuccessful RUI requests
                    465: and in boot-strapping a \TMA/.
                    466: 
                    467: The \KDS/ maintains two directories:
                    468: a private directory and a public directory.
                    469: The private directory contains all information on all clients to the \KDS/.
                    470: The public directory is a subset of this,
                    471: and is used by the \KDS/ when processing RUI and RIU requests.%
                    472: \nfootnote{In the prototype implementation,
                    473: the two directories are, for the moment, identical.}
                    474: As a result,
                    475: certain clients of the \KDS/ may have unlisted IDs and names.
                    476: 
                    477: \section{The Trusted Mail Agent}
                    478: The prototype version of the \TMA/
                    479: was designed to interface directly to the user agent in order to maximize
                    480: transparency to the user.
                    481: In present form,
                    482: the \TMA/ is available as a load-time library under 4.2\bsd/ \unix/,
                    483: although efforts are currently underway to transport the \TMA/ to a PC-based
                    484: environment.
                    485: 
                    486: The software modules which compose the \TMA/ contain a rich set of interfaces
                    487: to the \KDS/.
                    488: In addition,
                    489: the \TMA/ manages a local database,
                    490: so responses from the \KDS/ may be cached and used at a later time.
                    491: In all cases,
                    492: the \KDS/ is consulted only if the information is not present
                    493: in the \TMA/ database,
                    494: or if the information in question has expired (e.g., KK-relationships).
                    495: This caching activity minimizes connections to the \KDS/.
                    496: Although connections are relatively cheap in the ARPA Internet,
                    497: substantial savings are achieved for PCs which contact the \KDS/ over a
                    498: public phone network (dial-up) connection.
                    499: 
                    500: The \TMA/ performs mappings between pairs of the following objects:
                    501: user names, \KDS/ IDs, and \MTS/ addresses.
                    502: The \TMA/ considers all trusted mail agents, including itself,
                    503: as a user name, \KDS/ ID, and one or more \MTS/ addresses.
                    504: Although the \TMA/ does not interpret addresses itself,
                    505: in order to simplify mail handling,
                    506: the \TMA/ remembers the relationship between these objects so the user enters
                    507: this information only once.
                    508: 
                    509: Initially,
                    510: when a \TMA/ is booted,
                    511: the user supplies it with the master key and the user's \KDS/ ID.
                    512: Both of these quantities are assigned by the personnel at the key
                    513: distribution center,
                    514: and subsequently transmitted to the user via an alternate, bonded service.%
                    515: \nfootnote{In this fashion,
                    516: the problems of boot-strapping over an unsecure medium are avoided.}
                    517: The \TMA/ connects with the \KDS/ and verifies its identity.
                    518: From this point on,
                    519: the \TMA/ manages its KK-relationships between the \KDS/ and other \TMA/s
                    520: without user intervention.
                    521: 
                    522: The current implementation of the \TMA/ assumes a ``general memo framework''
                    523: in the context of the Standards for ARPA Internet Text Messages\cite{DCroc82}:
                    524: \smallskip
                    525: {\advance\leftskip by\parindent
                    526: \item{1.} A message consists of two parts:
                    527: the {\it headers} and the {\it body}.
                    528: A blank line separates the headers from the body.
                    529: 
                    530: \item{2.} Each (virtual) line in the headers consists of a keyword/value
                    531: pair, in which the keyword is separated from the value by a colon (:).
                    532: The headers are rigorously structured in the sense that they contain
                    533: addressing and other information useful to a user agent.
                    534: 
                    535: \item{3.} The body is freely formatted and must not be meaningful to a
                    536: user agent.
                    537: However, as will be seen momentarily,
                    538: the body of encrypted messages must have an initial fixed format which the
                    539: \TMA/ enforces.
                    540: \smallskip}
                    541: \noindent
                    542: This format is widely called ``822'' after the number assigned to the
                    543: defining report\cite{DCroc82}.%
                    544: \nfootnote{Although an 822--style framework is employed by the \TMA/ prototype,
                    545: the 822 \eg{Encrypted:} header is not currently present in encrypted messages.
                    546: This is due to a design decision which assumes that nothing in the headers of
                    547: a message is sacred to the transport system,
                    548: and that ``helpful'' munging might occur at any time.
                    549: In the real world, such helpfulness is often a problem.}
                    550: 
                    551: To support the cipher activities described below,
                    552: the \TMA/ contains internal routines to perform the following DES functions:
                    553: electronic code book (ECB) for key encryption,
                    554: cipher block chaining (CBC) for mail message encryption,
                    555: checksumming (CKS) for mail message and \CSM/ authentication.
                    556: Readers interested in these different modes of operation for the DES should
                    557: consult \cite{FIPS81}.
                    558: 
                    559: \subsection{Encrypting Mail}
                    560: To encipher a message, the method used is a straightforward adaptation
                    561: of the standard encrypting/authentication techniques
                    562: (though the terminology is tedious).
                    563: Consider the following notation:
                    564: \smallskip
                    565: {\advance\leftskip by\parindent
                    566: \itemm $a_x(s)$ the checksum of the string $s$ using the key $x$
                    567: (DEA~{\it checksumming} authentication)
                    568: 
                    569: \itemm $a_{x+y}(s)$ the checksum of the string $s$ using the exclusive-or
                    570: of the two keys $x$ and $y$
                    571: 
                    572: \itemm $e_x(y)$ the encryption of the key $y$ using the key $x$
                    573: (DEA~{\it electronic code book} encryption)
                    574: 
                    575: \itemm $e_{x,y}(s)$ the encryption of the string $s$ using the key $x$
                    576: and initialization vector $y$
                    577: (DEA~{\it cipher block chaining} encryption)
                    578: 
                    579: \itemm $h$ the headers of the message
                    580: 
                    581: \noindent and,
                    582: 
                    583: \itemm $b$ the body of the message
                    584: \smallskip}
                    585: \noindent
                    586: For each message to be encrypted,
                    587: a data key, initialization vector, authentication key (KD/IV/KA)
                    588: triple is generated by a random process.
                    589: (It goes without saying that the integrity of the system depends on the
                    590: process being {\it random\/}).
                    591: Then, for each user to receive a copy of the encrypted message,
                    592: the following actions are taken:
                    593: 
                    594: First, the headers of the message are output in the clear.
                    595: Then, a {\it banner} string, $i$, is constructed and placed at the beginning
                    596: of the body of the message:
                    597: \example ENCRYPTED MESSAGE: TTI TMA\endexample
                    598: which identifies the message as being encrypted by the \TTI/ \TMA/.
                    599: Following the banner string is a structure, $m$,
                    600: which takes on the syntax and most of the semantics of a cryptographic
                    601: service message:
                    602: $$\displayindent=\leftskip     \advance\displayindent by1.5\parindent
                    603:     \halign{\hfil#/&   \enspace#\hfil\cr
                    604:        MCL&    MAIL\cr
                    605:        RCV&    rcvid\cr
                    606:        ORG&    orgid\cr
                    607:        IDK&    kkid\cr
                    608:        KD&     $e_{kk}(ka)$\cr
                    609:        KD&     $e_{kk}(kd)$\cr
                    610:        IV&     $e_{kd}(iv)$\cr
                    611:        MIC&    $a_{ka}(b)$\cr
                    612:        MAC&    $a_{kd+ka}(m)$\cr
                    613: }$$
                    614: After this, the encrypted body is output, $e_{kd,iv}(b)$.
                    615: In short, the entire output consists of
                    616: $$h+i+m+e_{kd,iv}(b).$$
                    617: 
                    618: The purpose of the structure $m$ is many-fold.
                    619: The MCL field indicates the structure $m$'s type;
                    620: currently only the type MAIL is generated and understood.
                    621: The RCV and ORG fields identify the intended recipient of the message
                    622: and the originator.
                    623: The IDK field identifies the key-encrypting key, KK,
                    624: used to encrypt the next two fields.
                    625: The first KD field has the encrypted authentication key, KA,
                    626: used to calculate the MIC of the plaintext of the body of the message.
                    627: After the body of the message is deciphered, $a_{ka}(b)$ is calculated and
                    628: compared to the value of the MIC field.
                    629: Hence, the MIC field authenticates the message body.
                    630: The second KD field has the encrypted data encrypting key, KD,
                    631: which along with the encrypted initialization vector in the IV field
                    632: was used to generate the ciphertext of the body.
                    633: Finally, the MAC field authenticates the $m$ structure itself.
                    634: The use of a data key, initialization vector, authentication key (KD/IV/KA)
                    635: triple permits us to perform key distribution in a hierarchical fashion and
                    636: allows the system to use a KK-relationship over a longer cryptoperiod
                    637: without fear of compromise.
                    638: 
                    639: The \TMA/ provides three primary interfaces to a \UA/ to send encrypted mail:
                    640: the first takes a file-descriptor to a message
                    641: and returns a structure $g$ (called a {\it group})
                    642: describing the ciphertext version of the body
                    643: (this structure contains a KD, IV, and KA generated at random,
                    644: along with a file-descriptor to the plaintext headers,
                    645: a file-descriptor to the ciphertext body,
                    646: and the checksum of the plaintext body);
                    647: the second takes a user entry (or \MTS/ address) and $g$,
                    648: and returns a file-descriptor to the encrypted message
                    649: for that user (or \MTS/ address);
                    650: the third takes $g$ and performs clean-up operations.
                    651: The chief advantage to this scheme of encryption
                    652: is that if the message is to be sent to more than one recipient,
                    653: then the MIC and the encrypted body need only be calculated once,
                    654: since the KD, IV, and KA remain constant
                    655: (only the KK's change with each recipient,
                    656: hence for each copy of the encrypted message,
                    657: only the structure $m$ need be re-calculated).
                    658: 
                    659: There are, however, a few subtleties involved:
                    660: \underbar{first},
                    661: the \MTS/ usually accepts only 7--bit characters,
                    662: so the encrypted text is exploded to consist of only printable characters;%
                    663: \nfootnote{%
                    664: As a rule, in all \CSM/s,
                    665: when encrypted information is transmitted,
                    666: it is exploded after encryption by the sender,
                    667: and imploded prior to decryption by the receiver.}
                    668: \underbar{second},
                    669: since the \MTS/ may impose limits on the length of a line,
                    670: each line of output is limited to 64~characters;
                    671: and,
                    672: \underbar{third},
                    673: since the body may require trailing padding,
                    674: during encryption
                    675: one last unit of 8~bytes is written (and encrypted),
                    676: naming the number of characters (presently, nulls) padded in the
                    677: previous 8~bytes ($0\tdots7$).
                    678: 
                    679: \subsection{Decrypting Mail}
                    680: To decipher a message, the method is also straightforward:
                    681: The headers are output in the clear.
                    682: The banner string is essentially ignored,
                    683: and the structure $m$ is consulted to identify the correct key-encrypting key.
                    684: The \TMA/ checks to see if it knows of that KK.
                    685: If not, it asks the \KDS/ to supply it.
                    686: From that point,
                    687: the KA, KD, and IV are deciphered.
                    688: The $m$ structure is then authenticated.
                    689: With the correct key,
                    690: the remainder of the body is deciphered,
                    691: and all except for the last 16~bytes are output.
                    692: The last 8~bytes indicate how many of the previous 8~bytes should be output.
                    693: So,
                    694: the appropriate number of bytes is output,
                    695: and the plaintext body is authenticated and compared to the MIC.
                    696: Needless to say,
                    697: as the body is deciphered,
                    698: it is imploded back to 8--bit characters and lines are restored to their
                    699: previous lengths.
                    700: To indicate that the message was correctly deciphered,
                    701: a new header of the form
                    702: \example X-KDS-ID: orgid (originator's name)\endexample
                    703: is appended to the headers of the message.
                    704: Note that this provides an authentication mechanism.
                    705: Note, further,
                    706: that the \UA/ did not have to know the identity of the sender of the message.
                    707: 
                    708: \section{Modifications to MH}
                    709: \MH/ is a public domain \UA/ for \unix/,
                    710: which is widely used in dealing with both a large number of electronic mail
                    711: application and a large number of messages.
                    712: Although this document does not intend to describe \MH/,
                    713: parts of the system are described as they relate to the \TMA/.
                    714: Readers interested in \MH/ should consult either the user's
                    715: manual\cite{MRose85a} for a detailed description,
                    716: or \cite{MRose85d} for a higher-level description.
                    717: 
                    718: To modify \MH/ in order to make use of a \TMA/,
                    719: three programs were changed (with a high degree of transparency to the user),
                    720: and two new programs were introduced.
                    721: 
                    722: In \MH/,
                    723: when a user wishes to send a composed draft
                    724: (which may be an entirely new message,
                    725: a re-distribution of a message,
                    726: a forwarding of messages,
                    727: or a reply to a message),
                    728: the user invokes the \pgm{send} program.
                    729: This program performs some minor front-end work for a program called
                    730: \pgm{post} which actually interacts with the \MTS/.
                    731: A new option to the \pgm{send} and \pgm{post} programs,
                    732: the \switch{encrypt} switch,
                    733: is introduced.
                    734: If the user indicates
                    735: \example send\ -encrypt\endexample
                    736: then \pgm{post} encrypts the messages it sends.
                    737: 
                    738: When sending an encrypted message,
                    739: \pgm{post} first checks that each addressee has a mapping to a \KDS/ ID
                    740: during address verification.
                    741: Then, instead of batching all addresses for a message in a single posting
                    742: transaction,
                    743: for each addressee,
                    744: \pgm{post} consults the \TMA/ for the appropriately encrypted text and
                    745: posts that instead.
                    746: (Appendix~A discusses the reasons for this more fully.)
                    747: Hence,
                    748: assuming the user has established mappings between \MTS/ addresses
                    749: and \KDS/ IDs,
                    750: the \TMA/ does all the work necessary to encrypt the message,
                    751: including contacting the \KDS/ as necessary.%
                    752: \nfootnote{Once the \TMA/ establishes a connection to the \KDS/,
                    753: it retains that connection until the \UA/ terminates.
                    754: This is done to minimize connections to the \KDS/.
                    755: In the context of \MH/,
                    756: since the trusted mail agent is active over the lifetime of an invocation of
                    757: a program such as \pgm{post},
                    758: this means that the connection is terminated just before the program
                    759: terminates.}
                    760: 
                    761: In \MH/,
                    762: when a user is notified that new mail has arrived,
                    763: the \pgm{inc} program is run.
                    764: As each message is incorporated into the user's message handling area,
                    765: a scan (one-line) listing of the message is generated.
                    766: 
                    767: By default,
                    768: the \pgm{inc} program upon detecting one or more encrypted messages,
                    769: after the scanning process,
                    770: asks the \TMA/ to decipher the message,
                    771: and if successful,
                    772: scans the deciphered messages.
                    773: This action can be inhibited with the \switch{nodecrypt} switch.
                    774: Hence, if the user wishes to retain messages in encrypted form,
                    775: \pgm{inc} can be told to note the presence of encrypted messages,
                    776: but otherwise not to process them.
                    777: By using the \MH/ user profile mechanism,
                    778: \pgm{inc} can be easily customized to reflect the user's tastes.
                    779: Again,
                    780: the actions of the \TMA/ are transparent to the user.
                    781: In fact,
                    782: if encrypted mail is received from users unknown to the \TMA/,
                    783: it queries the \KDS/ as to their identity prior to retrieving the
                    784: KK-relationship.
                    785: 
                    786: If \pgm{inc} fails to decrypt a message for some reason,
                    787: or if \pgm{inc} was told not to decrypt a message,
                    788: the \pgm{decipher} program can be used.
                    789: This simple program merely deciphers each message given in its argument
                    790: list.
                    791: The \pgm{decipher} program can be given the \switch{insitu} switch,
                    792: which directs it to replace the ciphertext version of the message with the
                    793: plaintext version;
                    794: or,
                    795: the \switch{noinsitu} switch can be used indicating that the ciphertext
                    796: version of the message should be left untouched and the plaintext version
                    797: should be listed on the standard output.
                    798: 
                    799: Finally,
                    800: the \pgm{tma} program is used to manipulate the \TMA/ database,
                    801: containing commands to boot the database,
                    802: add new users to the database,
                    803: and to establish mappings between addresses and users in the \TMA/ database.
                    804: This program can also be used to disconnect KKs between other \TMA/s,
                    805: and the KK/KA between itself and the \KDS/.
                    806: 
                    807: Appendix~A of this paper contains a transcript of an \MH/ session.
                    808: 
                    809: \section{Remarks}
                    810: We now consider the merit of the system described.
                    811: After presenting some of the basic strengths of the system
                    812: and a few unresolved questions,
                    813: the discussion centers on the simplifying assumptions made by the system,
                    814: and how these can be defended in a non-military environment.
                    815: 
                    816: \subsection{Strengths}
                    817: It can be argued that the prototype system
                    818: (and the augmented model in which it finds its basis)
                    819: present many strengths.
                    820: 
                    821: Perhaps the most important is the high-level of independence from the \MTS/
                    822: enjoyed by the system.
                    823: As a result,
                    824: since the \TMA/ does not interact directly with the \MTS/,
                    825: it can be made to be completely free from any \MTS/-specific attributes,
                    826: such as naming, addressing, and routing conventions.
                    827: Furthermore,
                    828: when interfacing a \trustedmail/ system,
                    829: no modifications need be made to the \MTS/ or local \MTA/.
                    830: 
                    831: In addition to the systems-level advantage to this scheme,
                    832: users of the system profit as well,
                    833: since many disjoint \MTS/s can be employed by a user with a single \TMA/.
                    834: This reduces the number of weaknesses in the system and allows a user to keep
                    835: a single database of ``trusted'' correspondents.
                    836: It should also make analysis and verification of the \TMA/ easier.
                    837: 
                    838: Of course from the user-viewpoint,
                    839: once the \TMA/ has been initially booted,
                    840: all key management is automatic.
                    841: Not only does this reduce the risk of compromise of cryptographic material
                    842: (given proper construction and maintenance of the \TMA/),
                    843: but it relieves the user of a tedious and error-prone task.
                    844: 
                    845: Finally,
                    846: although the \KDS/ described herein is used to support \trustedmail/,
                    847: other applications which require key management,
                    848: could employ the services offered by the key distribution center.
                    849: 
                    850: \subsection{Open Questions}
                    851: At present, there are many restrictions on the prototype implementation
                    852: described.
                    853: Some of these result from that fact that the implementation is a prototype
                    854: and not a production system.
                    855: Others deal with more fundamental issues.
                    856: 
                    857: In terms of the \TMA/,
                    858: the expiration delay for keys is hard-wired in;
                    859: it should be user-settable.
                    860: In the prototype version,
                    861: the KK and KA with the \KDS/ are good for 2~days or 10~uses
                    862: (whichever comes first),
                    863: while a KK for use with another \TMA/ is good for 1~day or 5~uses.
                    864: In actual practice,
                    865: keys with long cryptoperiods might be good for 6~months or 100~uses,
                    866: while keys with short cryptoperiods might be good for 1~month or 25~uses.
                    867: The choice of actual values is an open question
                    868: beyond the scope of prototype system.%
                    869: \nfootnote{The current values were chosen by guess work.
                    870: Although not necessarily technically sound,
                    871: the small numbers were very good for debugging purposes.}
                    872: In many respects, this issue is a classic trade-off:
                    873: with relatively small cryptoperiods,
                    874: an adversary has less chance of breaking a key,
                    875: but with longer cryptoperiods less connections have to be made to the key
                    876: distribution server.
                    877: 
                    878: A fundamental issue,
                    879: owing to differences between the EFT and CBMS environments,
                    880: is that the \KDS/ implements only a subset of the \ansi/ draft
                    881: and the semantics of certain operations have changed somewhat.
                    882: It would be nice to unify the CBMS and EFT views
                    883: of a {\it key distribution center}
                    884: (in the former environment, the center is called a \KDC/,
                    885: while in the latter environment, the center is known as a \CKD/).
                    886: Appendix~C of this paper discusses the differences between the two
                    887: perspectives in greater detail.
                    888: 
                    889: At present,
                    890: the relationship between errors in the \TMA/ and the posting process is an
                    891: open question.
                    892: For example,
                    893: if an address doesn't have a mapping in the \TMA/ database,
                    894: \pgm{post} treats this as an address verification error.
                    895: This prevents the draft from being posted.
                    896: The philosophy of the \UA/ is unclear at this point,
                    897: with respect to how recovery should occur.
                    898: A second area, also in question, deals with the way in which plaintext and
                    899: ciphertext versions of a message are present in a system.
                    900: Clearly, it is a bad idea to make both versions available,
                    901: but since the \TMA/ doesn't try to concern itself with first party
                    902: observation,
                    903: there seems to be little possibility of preventing this behavior.
                    904: The best that can be done,
                    905: at this stage,
                    906: is simply to choose a consistent policy that user's should attempt to adhere
                    907: to.
                    908: The software can help somewhat in implementing this policy,
                    909: but it certainly can't circumvent the user.
                    910: 
                    911: The prototype is built on the assumption that a single key
                    912: distribution server is present.
                    913: Since the \ansi/ draft\cite{FIKM} makes provisions for
                    914: {\it key translation centers},
                    915: the \trustedmail/ prototype should perhaps be made to operate in a more diverse
                    916: environment.
                    917: Until the issues become clearer,
                    918: this remains open.
                    919: 
                    920: Finally,
                    921: for distribution lists,
                    922: a large number of people would need to share the same \KDS/ ID.
                    923: The current implementation doesn't support this.
                    924: Each \TMA/ database is for a particular ID.
                    925: A user with multiple IDs would need multiple databases,
                    926: or the database should be re-organized.
                    927: 
                    928: \subsection{Weaknesses}
                    929: As pointed out earlier,
                    930: this prototype system situates itself in a commercial, not military,
                    931: environment.
                    932: With respect to this decision,
                    933: several aspects of the system are now discussed,
                    934: which we feel are acceptable in a commercial environment,
                    935: but which would be considered weaknesses in a military environment:
                    936: 
                    937: \item{1.} Traffic Flow\hbreak
                    938: The prototype \TMA/ makes no attempt whatsoever to prevent or confuse traffic
                    939: analysis by augmenting traffic flow.
                    940: 
                    941: \item{2.} The Database of \KDS/ Subscribers\hbreak
                    942: Since information returned by the request user identification (RUI)
                    943: and request identified user (RIU) MCLs are returned in the clear,
                    944: this allows an adversary to ascertain subscribers to the \KDS/,
                    945: and perhaps deduce some information about the system.
                    946: Without knowledge of the master key however,
                    947: an adversary could not impersonate a subscriber though.
                    948: Still, in the military sense, this is a weakness.
                    949: However,
                    950: all this assumes that the database maintained by the \KDS/ accurately
                    951: reflects the real-world.
                    952: 
                    953: \item{3.} Multiple Recipients\hbreak
                    954: It is possible, though not proven to the authors' knowledge,
                    955: that the scheme used to avoid encrypting the body of a message more than once
                    956: for multiple recipients might permit one of the recipients who is also an
                    957: adversary to compromise the key relationship between the sender and another
                    958: recipient.
                    959: 
                    960: \item{} The scenario goes like this:
                    961: When a message is being prepared for encryption,
                    962: a single KD/IV/KA triple is generated to encrypt the body.
                    963: Since the sender has a different key relationship with each recipient,
                    964: each message sent is different, since the structure $m$ depends not only on
                    965: the KD/IV/KA triple but also on the key relation between the sender and a
                    966: particular recipient.
                    967: Now suppose that one of the recipients, $r_1$,
                    968: in addition to receiving the copy of the message meant for him/her also
                    969: intercepts a copy of the message destined for another recipient, $r_2$.
                    970: At this point,
                    971: the recipient $r_1$ has both the plaintext and ciphertext version of the body,
                    972: the plaintext version of the KD/IV/KA triple,
                    973: and the ciphertext version of the KD/IV/KA triple that was generated using
                    974: the key relationship between the sender and the recipient $r_2$.
                    975: The question is:
                    976: can $r_1$ now deduce the key relationship between the sender and $r_2$?
                    977: 
                    978: \item{} If so, then the way that the \TMA/ attempts to minimize the use of
                    979: encryption resources is a weakness.
                    980: But, even if this is possible,
                    981: given relatively short cryptoperiods for key relationships between \TMA/
                    982: peers,
                    983: this becomes a non-problem.
                    984: 
                    985: \item{4.} Discussion Groups\hbreak
                    986: As discussed earlier,
                    987: the proposed method of associating a single \KDS/ ID with the membership of a
                    988: discussion group does introduce a significant weakness for the security of
                    989: messages sent to the discussion group.
                    990: Since the \TMA/ does not assume a general broadcast facility,
                    991: it appears that there are no good solutions to the problem of discussion
                    992: group traffic.
                    993: Of course,
                    994: it is easy enough to simply send to each member of the group.
                    995: 
                    996: \item{} For the sake of argument,
                    997: let's assume that the discussion group has $n$ members.
                    998: Now,
                    999: since a different key relationship would exist between the sender and
                   1000: each of the $n$ recipients,
                   1001: the structure $m$ would be different for each recipient
                   1002: and so a different message would have to be sent to each recipient.
                   1003: To make matters worse,
                   1004: if one rejects the way the \TMA/ handles multiple recipients,
                   1005: not only does the \MTS/ get burdened with $n$ different messages,
                   1006: but the sender's \TMA/ gets burdened by having to encrypt
                   1007: the body of the message $n$ times.
                   1008: For meaningful values of $n$ (say on the order of~500, or even~25),
                   1009: the amount of resources required for any trusted discussion group are simply
                   1010: too costly.
                   1011: 
                   1012: \subsection{Compromises, Compromises}
                   1013: Each of the possible weaknesses discussed above represent a compromise
                   1014: between the expense of the system and the level of security it can provide.
                   1015: 
                   1016: The first two areas, if addressed by the \TMA/,
                   1017: could result in much less background information being available to an
                   1018: adversary.
                   1019: In an application where it is important that an adversary not know who is
                   1020: talking to whom,
                   1021: or who can talk at all,
                   1022: this is very important.
                   1023: It is the authors' position that in the commercial environment,
                   1024: this issue is not paramount.
                   1025: By ignoring the issue of traffic flow,
                   1026: the \TMA/ has a lot less work to do and the \MTS/ is kept clear of
                   1027: ``useless'' messages.
                   1028: By keeping the information returned by the RUI and RIU MCLs in the clear,
                   1029: the complexity of the \TMA/ is significantly reduced.
                   1030: 
                   1031: The second two areas, if addressed by the \TMA/,
                   1032: could result in a lesser probability of traffic being deciphered by an
                   1033: adversary.
                   1034: Regardless of the application,
                   1035: this is always extremely important.
                   1036: However,
                   1037: the authors' feel that the compromise made by the \TMA/ in these two issues
                   1038: is not substantial,
                   1039: and does not result in an explicit weakness when a message is sent to
                   1040: multiple recipients
                   1041: (note that when there is only a single recipient of a message,
                   1042: these two policies can not introduce weaknesses).
                   1043: In return, efficient use can be made of both the \MTS/ and the \TMA/ when
                   1044: messages are being sent to multiple recipients.
                   1045: Given scarce resources or large numbers of recipients,
                   1046: this approach may prove to be quite winning.
                   1047: 
                   1048: Of course, much work remains to be done to prove the success of the \TMA/ in
                   1049: all four of these areas.
                   1050: 
                   1051: \section{Acknowledgements}
                   1052: The prototype implementation described herein utilizes a public domain
                   1053: implementation of the DES algorithm\cite{DEA}
                   1054: which was originally implemented by James J.~Gillogly in May, 1977
                   1055: (who at that time was with the Rand Corporation,
                   1056: and is now affiliated with Gillogly Software).
                   1057: Interfaces to Dr.~Gillogly's implementation were subsequently coded by
                   1058: Richard W.~Outerbridge in September, 1984
                   1059: (who at that time was with the Computer Systems Research Institute
                   1060: at the University of Toronto,
                   1061: and is now affiliated with Perle Systems, Incorporated).
                   1062: 
                   1063: The authors would like to acknowledge Dennis Branstad,
                   1064: Elaine Barker, and David Balensen of the National Bureau of Standards
                   1065: for their comments on the prototype system
                   1066: and insights on the ANSI draft\cite{FIKM}.
                   1067: In particular, Dr.~Branstad originally suggested the method used for
                   1068: encrypting a single message for multiple recipients under different keys.
                   1069: 
                   1070: The authors (and all those who have read this paper) would like to thank
                   1071: Willis H.~Ware of the Rand Corporation,
                   1072: and Jonathon B.~Postel of the USC/Information Sciences Institute.
                   1073: Their extensive comments resulted in a much more readable paper.
                   1074: In addition,
                   1075: the authors would like to thank
                   1076: Dr. Stephen P.~Smith and Major Douglas A.~Brothers
                   1077: for their insightful comments.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.