Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!uunet!seismo!rutgers!ucla-cs!zen!ucbvax!hoptoad!gnu
From: gnu@hoptoad.uucp (John Gilmore)
Newsgroups: sci.crypt
Subject: FidoNet proposal for public key email encryption
Message-ID: <2583@hoptoad.uucp>
Date: Fri, 31-Jul-87 02:54:30 EDT
Article-I.D.: hoptoad.2583
Posted: Fri Jul 31 02:54:30 1987
Date-Received: Sat, 1-Aug-87 21:11:53 EDT
References: <2573@hoptoad.uucp>
Organization: Nebula Consultants in San Francisco
Lines: 392

[This appeared in comp.org.fidonet, the FidoNet Newsletter, V4 #28.
You can read the whole newsletter, in vnews, by typing "p" to this article.]

     Copyright 1987 by  the  International  FidoNet  Association.  All
     rights  reserved.  Duplication  and/or distribution permitted for
     noncommercial purposes only.  For  use  in  other  circumstances,
     please contact IFNA at (314) 576-4067.

        AUTHENTIC SECURE SECRET FIDO MAIL WITH PUBLIC KEY ENCRYPTION

     INTRODUCTION
     ============
     This article was written by  Prodex  Labs,  for  examination  and
     comment  by  IFNA  (International  Fidonet  Association)  Sysops,
     members, Fidonet users,  and others interested in electronic mail
     and  security.  Prodex  Labs  (Lee  Rothstein,  Phil Zimmermann &
     Steve Welch)  is  very  much  interested  in  your  comments  and
     suggestions.

     PRODEX LABS, PUBLIC KEY ENCRYPTION & FIDO
     -----------------------------------------
     We  are now about ready to deliver C-based modules that can carry
     out public key encryption.

     We are writing this article because of the extreme  relevance  we
     see  of  public  key  cryptography to electronic mail.  We assume
     electronic mail is near and dear to your hearts, and we think you
     might be interested in the application of public  key  encryption
     to  Fidomail  and Fidonet transfers.  The discussion,  we provide
     here,  on public key cryptography aims specifically at electronic
     mail applications.

     Public   key   encryption   technology   allows   the  convenient
     distribution of messages through an electronic mail system secure
     against other  users,  sysops  ("superusers")  and  even  systems
     programmers.  It  allows  this security in the face of inherently
     insecure networks and hosts.  This we think is  a  feature  whose
     time has come.  We think it lends itself well to the expansion of
     Fidonet  services,  as well as the opportunity for Fido sysops to
     unobtrusively draw revenue  from  a  subset  of  Fido  services--
     specifically  those  that  have to do with private and commercial
     mail.

     Specifically,  we suspect the lack of privacy of  messages  (from
     Sysops  and  technotwits)  has  discouraged  the use of Fido as a
     national distribution medium  for  personal  mail,  and  business
     mail.  Second,  the  lack  of  an  authentication  mechanism  has
     discouraged  commercial  concerns  from  using  Fidomail   as   a
     distribution  mechanism  for  authentic  marketing  programs  and
     documents such as ads,  coupons and purchase  orders.  By  adding
     these commercial services to Fido,  the revenue produced could be
     used to subsidize  other  Fido  services  such  as  mass  storage
     (downloads) and Techline distribution (long distance charges).

     The authentication capability mentioned in the previous paragraph
     might   also   be  of  use  directly  to  Fidonet  as  it  grows.
     Authentication would allow nodes that are operating  in  a  store
     and  forward  sub-net  to prove their legitimacy prior to a relay
     operation.  Since we are not familiar with the daily  operational
     problems of Hosts,  we do not know if we have proposed a solution
     to a non-existent problem.

     Finally,  we think that the recent introduction of "Dutchie"  may
     be  one of the key ingredients to the success of the introduction
     and use of public key encryption in Fidonet.  For  those  of  you
     not  yet familiar with it,  Dutchie is the private delivery point
     implementation for Fidonet by Henk Wevers.

     SINGLE KEY ENCRYPTION: WHY PUBLIC KEY ENCRYPTION IS REQUIRED!
     --------------------------------------------------------------
     Public key encryption technology differs from the more well-known
     single key technology in that each person has two keys associated
     with  him/her--a  public  key,  and  a  private  key.  (DES--Data
     Encryption Standard--is the most well-known example of single key
     encryption.)

     In public key encryption, the public key is known by everyone and
     either  can  be looked up by the user from a table of keys versus
     user  names  or  automatically  looked  up  by  the  applications
     software (e.g., electronic mail software).

     In single key encryption,  Fred encrypts file 'nerd.msg' with the
     key "secret_potion".  When Bill wants to  decrypt  the  file,  he
     must  have  been  told by Fred what the key for decrypting (i.e.,
     encrypting) 'nerd.msg' is.  Specifically,  Bill must  supply  the
     key "secret_potion" to decrypt 'nerd.msg'.  If "secret_potion" is
     always associated with Fred's files,  then Bill knows the key for
     those files that Fred does not want him to see.  More succinctly,
     the decryption and encryption  functions  are  inverses  of  each
     other.  Symbolically:

         (1)  encrypted_file <- sk_encrypt(file, key)
         (2)  file <- sk_encrypt(encrypted_file, key) i.e., decryption
                                                      is encryption
                                                      and the key is
                                                      the same going
                                                      in both
                                                      directions

          The  above  notation assumes that objects with the same name
          and only objects with the same name are identical.

     Let's look at  the  consequences  of  the  logic  of  single  key
     encryption  within  an electronic mail system.  Anyone that wants
     to send secret messages to someone  else  must  either  know  the
     recipient's  one  and  only  secret key,  or relinquish their own
     secret key,  or maintain a list of secret keys  by  recipient  or
     file; not a very attractive alternative.

     What's  worse,  if  the  key  information  is  exchanged by users
     through the mail system,  then the sysop has a crack at the  key.
     This  seems  very likely when you consider that you probably want
     the mail system itself to  automatically  monitor,  maintain  and
     administer the keys because of the previously described problems.

     PUBLIC KEY ENCRYPTION
     =====================

     PUBLIC KEY ENCRYPTION EXPLAINED
     -------------------------------
     These  and  other problems can be made to disappear with a public
     key encryption  system.  The  public  and  private  keys  make  a
     matched, idiosyncratic set.  A file encrypted with the public key
     can  only  be  decrypted by the private key.  A file encrypted by
     the private key can only be decrypted by the  public  key.  These
     properties  can be used to significant advantage in an electronic
     mail system.  The obvious advantage of the public key  technology
     over  the  more normal single private key technology such as DES,
     is that a user does not have to give away his/her private key.

     Secrecy
     -------
     If you want secrecy in a message that you send  us,  you  encrypt
     the  message  with our public key and then we decrypt it with our
     private key.

     Signature Function
     ------------------
     If you want to authenticate a message as really coming from  you,
     you  encrypt it with your private key and then we decrypt it with
     your public key.  If your public key does not  make  the  message
     intelligible  then  it wasn't encrypted with your private key and
     therefore it didn't come from you--the one and  only  person  who
     has access to your private key.

     Secrecy & Authentication
     ------------------------
     The  secrecy and authentication encryptions outlined above can be
     combined sequentially to provide a complete framework of security
     for electronic mail.

     Symbolically, we could describe these properties as:

     If A were sending a message to B:

          (1)  encrypted_file <- pk_encrypt(file, public_key_B)
          (2)  file           <- pk_decrypt(encrypted_file,
               private_key_B)

               (1)  Would be used by the sender to achieve privacy.
               (2)  Would be used by the receiver to achieve
                    "legibility."

               AND

          (3)  encrypted_file <- pk_encrypt(file, private_key_A)
          (4)  file           <- pk_decrypt(encrypted_file,
               public_key_A)

               (3)  Would be used by the sender to achieve
                    authentication.
               (4)  Would be used by the receiver to prove
                    authentication and achieve "legibility."

     If we wished privacy and authentication in a message from A to B:

          (5)  double_encrypted_file <-
                    pk_encrypt(pk_encrypt(file, public_key_B),
                    private_key_A)
          (6)  file <- pk_decrypt(pk_decrypt(double_encrypted_file,
                    private_key_B), public_key_A)

               (5)  Would be used by the sender to achieve privacy and
                    authentication.
               (6)  Would be used by the receiver to achieve
                    "legibility", and prove authentication.

          In the above notation we again assume that objects with  the
          same   name   and  only  objects  with  the  same  name  are
          equivalent.

     OTHER REQUIREMENTS & PROPERTIES
     -------------------------------
     Several  other  properties  of  public  key  encryption   require
     explanation  to  fully  understand how security can be maintained
     and how a mail system can work.

     First,  the program that generates the key pairs  can  be  widely
     distributed  so  that  it  can be used by each user privately and
     securely.

     Second,  the algorithm that generates the  public  key  from  the
     private key is not reversible either by the generating program or
     by any other program a hacker would write.

     Third,  the kinds of keys generated and required by the encrypt /
     decrypt function(s) are on the order of  a  1000  bits.  This  is
     what  makes  trial  and  error  computation  of  the  private key
     extremely unlikely to the point of impossibility,  and also  what
     makes users generating like public keys unlikely.

     Fourth, the electronic mail nodes (for Fidonet, Fido nodes) would
     have  to  provide  a  key  server  function.   Once  a  user  had
     calculated his public key from a private key  he  would  have  to
     submit  it  to  a  node  to  be paired with his/her user ID.  The
     server function would also have  to  supply  the  public  key  to
     private  mail  sent  to the corresponding user ID.  Another major
     function of the key server is an automatic certification  process
     that  is  beyond  the  scope  of  a first release product or this
     paper.

     Finally,  for performance sake,  any reasonable implementation of
     public  key  cryptography  would transparently (unknown to users)
     invoke an internal method of single key encryption.  However, all
     user and crackers would ever (or could ever) see  is  the  public
     key mechanisms.

     IMPLEMENTING PUBLIC KEY ENCRYPTION WITHIN THE FIDO ENVIRONMENT
     ==============================================================

     THE IMPOSSIBLE DREAM
     --------------------
     If  we  were  to  directly  implement  an  automatic,  public key
     cryptography security system into  Fido  mail  that  would  avoid
     sysops  having  any  possibility of access to the private keys or
     the mail prior to encryption,  we would have  to  accomplish  the
     following:

     (a)  We  would  have  to add a secure mail option to the terminal
          emulation program.  We would  further  have  to  modify  the
          user's  terminal  emulation  program  so  that all mail text
          entered was encrypted before each line was sent by the  user
          to the mail edit/entry function on the BBS.

          There  are  some  outs  here,   but  they  are  pretty  well
          invalidated by several properties of  BBS  software.  First,
          mail  entry  is  designed  to  be an online editing activity
          rather than via upload.  Second,  the mail entry function is
          designed  to  handle pure text and not the binary files that
          result from encryption.  Third,  most  mail  input  software
          strongly  limits  the length and format (e.g.,  line length,
          blank lines,  use of tabs) of input messages.  If  one  uses
          "ASCII  transfer" capability there is a possibility the file
          will fail the length test  or  be  modified  by  the  format
          assumptions,  because  it was not edited with the length and
          format tests operative.  Fourth,  the prompting  feature  of
          the mail editor very often interferes with ASCII upload.

     (b)  We  would  have  to  make  modifications  to  the  BBS  mail
          edit/entry function  so  that  some  text  was  accepted  in
          unencrypted format (i.e., 'To:' and 'From:' information) and
          the remainder was in encrypted format (i.e.,  'Subject:' and
          body of message. ('From:' can be hidden if BBS Sysops do not
          object.)

     (c)  We would have to add a public key server function to the BBS
          that would maintain and  service  public  keys.  This  would
          also have to allow for the distribution of keys from node to
          node.

     (d)  We would have to make sure that encryption did not interfere
          with Fidomail routing line additions to the text body.

     This  theory  will  not  work  or  rather will not work without a
     ground swell of support for private mail.  We cannot get  control
     of  all  of  the  following  simultaneously:  (a)  user  terminal
     emulation software,  (b)  Fido  mail  entry  software,  (c)  Fido
     general  BBS  software,  (d)  Fido  networking  and mail exchange
     software.  How do we create the ground swell, then?

     FIRST STEPS
     -----------

     Step 1
     ------
     We develop two program functions (they may or may not actually be
     separate programs) that can be distributed via  Fido.  Currently,
     we  estimate  we  can  have  these  two  programs done within two
     months.

     The first program is a  DOS  (Unix  style)  filter.  It  has  two
     functions.  First,  given  one file that contains the private key
     and a second file that contains the text to  be  encrypted,  this
     first program,  which I will call 'pk_crypt',  provides an output
     file that is encrypted and can be decrypted with the public  key.
     This serves the authentication function.  Second,  'pk_crypt' can
     encrypt a file with public key so that it can be  decrypted  with
     the private key.  This provides the privacy function.

     The second program generates unique key pairs.

     Step 2
     ------
     Sysops  provide a message section and a coordinated file section.
     The message section allows users to notify each other that  there
     are  secure  messages  that  have been uploaded to the respective
     users that have been notified via  standard  Fido  text  message.
     The  file section is not only a safe (reliable,  not secure) port
     for uploaded secure message files but also for a single text file
     that contains a list of the mapping of user IDs to  public  keys.
     Users  upload  their  public  keys  as they generate them and the
     sysops collate these  standard  format  subfiles  into  a  single
     standard format public key-user ID list.

     We  will  provide  documentation  not  only  for  the  use of the
     program,  but also for how users can "certify" new users and  new
     keys,  since  we  will not at this stage be able to provide a key
     server automated certification process.

     Step 3
     ------
     Sysops provide a standard service that allows binary files to  be
     "attached to" Fidomail messages.  Nothing automatic is implied by
     the previous sentence.

     Step 4
     ------
     We would have to provide a mail function that from the same level
     of  menu allowed the entry of a text tag message into the message
     system, followed by the immediate upload of an encrypted (perhaps
     archived) file to the secure message file section.

     The inverse  of  these  two  processes  would  also  have  to  be
     provided.  Users  would  have to be able,  from the same level of
     message  menu,   to  first  read  a  tag  message,   and,   then,
     immediately, download the associated secure binary message file.

          .
          .
          .

     WHAT DO YOU THINK?
     ==================
     This  is  a  lot to lay on anyone in one swell foop.  What do you
     think  about  practically  any  of  this?   We   are   especially
     interested  in  your views and ideas as to how (or if) it can fit
     into Fidonet.  We await your responses.


     Lee Rothstein, Phil Zimmermann, Steve Welch


                            Prodex Laboratories
                            ------ ------------

                    COMPUTER AND COMMUNICATIONS SYSTEMS
                      PRODUCT DEVELOPMENT CONSULTING

          o    Computer and communications system product development:
               Software, Hardware & Integration
          o    Marketing requirements,  product,  business & strategic
               plans
          o    Market research
          o    New venture evaluation
          o    Technical   marketing,   marketing  programs,   seminar
               development
          o    Product definition,  architecture development,  systems
               engineering, human interface design
          o    Strategic information systems & computerized marketing

                             Lee D. Rothstein
                            Prodex Laboratories
                           7723 Arlington Drive
                          Boulder, CO  80303-3207
                          (303) 499-8716  (Voice)

     We can be contacted via any of these BBSes, or via FidoNet at one
     of these BBSes:

          o    Microlink B Fido.   Fido 104/108.   (303) 972-4181.
          o    Eighth Sea Fido.    Fido 104/610.   (303) 252-9235.
          o    Day's End Fido.     Fido 104/ 20.   (303) 650-5636.
          o    Mile Hi Tech Fido.  Fido 104/ 56.   (303) 973-9338.

[There is an experimental FidoNet/Usenet gateway currently operating through
hoptoad, due to a lot of work by Tim Pozar (hoptoad!pozar) and others.  You
can try reaching the author through
	...!hoptoad!node108.net104.zone1.fido.net!lee_rothstein
and note that I haven't tried this address!  -- John Gilmore]
-- 
{dasys1,ncoast,well,sun,ihnp4}!hoptoad!gnu	     g...@postgres.berkeley.edu
Alt.all: the alternative radio of the Usenet.