RFC 501 UNKNOWN FTP · ACCESS CONTROL · ACCOUNTING

Un-muddling "free file transfer"

Ken Pogran separates access control, authentication and accounting to critique the free file transfer idea in RFC 487.

On rfc-editor.org ↗
PUBLISHED
May 1973
AUTHORS
K.T. Pogran
STREAM
Legacy
SERVER DESIGNS COMPARED
2 (system daemon, user's own identifier)
RESPONDS TO
RFC 487
DOI
10.17487/RFC0501

RFC text

Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                          K. Pogran
Request for Comments: 501                                    MIT-Multics
NIC: 15718                                                   11 May 1973


                    Un-Muddling "Free File Transfer"

   As the ARPA Network begin to mature, we find ourselves addressing
   issues and concepts deliberately put off and left untouched at
   earlier stages of Network development.  Among the issues now coming
   to the fore are access control, user authentication, and accounting.
   These issues arise immediately out of efforts to develop uniform
   methods for providing limited "free" access to the File Transfer
   Servers of the host systems, to meet user needs for mail transmission
   and similar services.

   Several proposals have been made, described by such phrases as
   "login-less mail", "'free' accounts", "free file transfer", etc.
   These proposals inevitably have imbedded in them some particular
   notion of how such things as access control and user authentication
   are accomplished and these proposals, which knowingly or unknowingly
   make presumptions about the implementation of such mechanisms,
   inevitably meet with strong criticism from implementors whose
   systems' mechanisms are quite different.

   In RFC 467, Bob Bressler proposes ways of helping out users who wish
   to transfer files to or from "systems which have some flavor of
   security, but on which the user has no access privileges".
   Unfortunately, beginning with the first paragraph of the RFC, the
   notions of access controls on files (examples of protection
   mechanisms), and control of access to the system (user
   authentication) are thoroughly muddled.  In addition, he makes
   sweeping assumptions about the nature and use of accounting
   mechanisms and accounts at server sites.  RFC 487 also has buried
   deep within it assumptions about the nature of the access control and
   user authentication aspects of File Transfer Server implementations.

   What's needed at this juncture, of course, is a lucid discussion of
   the general concepts involved in protection mechanisms, and file
   system access controls in particular.  Well, you won't find that in
   the remainder of this RFC.  What you will find is perhaps enough of a
   discussion to un-muddle that which RFC 487 has muddled; the rest will
   have to come down the pike at a later time.

   In many systems, mechanisms which control access to the system,
   mechanism which control access to files, and accounting mechanisms
   all mesh at the moment at which a prospective user of the system is
   authenticated: the system has checked his user-name, password,
   account, or whatever, and decided that he is, indeed, a valid user of
   the system.  This user, who would like to have some information
   processing performed on his behalf, is termed a principal in "privacy
   and protection" parlance.  Some number of processes are initially set
   up for this principal, and some (presumably unforgeable) principal
   identifier is associated with the process(es), so that their requests
   for access to files and other system resources may be properly
   validated.  In addition, the identify of the account to be charged
   for the resources consumed by these processes is associated with the
   processes at this time [1], although on some systems, a process may
   change its account identifier at any time.

   The first question is: Whose principal identifier does a File
   Transfer Server process use? There are at least two possibilities: 1)
   the File Transfer Server can run as a "system daemon" process, with
   (usually) a highly privileged principal identifier.  When acting on
   behalf of a user, it must, itself, interpretively evaluate that
   user's access to a desired file.  Also, it must be able to charge
   that user's account for the resources it uses.  2) A File Transfer
   Server process can be given the user's own principal identifier.
   With this implementation, validation of the user's access to files is
   performed automatically by the usual file system mechanisms.

   Paragraph four of RFC 487 clearly presumes implementation 1): "If a
   user connects to an FTP server and makes a file request without
   supplying a user name-password, the server should then examine the
   file access parameters ..." Systems truly concerned about protection
   may prefer implementation 2), and for good reason -- it follows the
   "principle of least privilege", which states that a process should
   execute with as little access privilege as it requires to perform its
   tasks properly.  Running a File Transfer Server process with a user's
   principal identifier rather than with that of a system daemon leaves
   the system far less susceptible to damage caused by incorrect actions
   of the File Transfer Server. [2]

   The next question is: Whom do you charge for file transfers? Bressler
   tries to set down some guidelines for determining who to charge for
   "non-logged-in" (read: "free") file transfer usage: "Clearly, storing
   a file in a user's directory can be charged to that user." How is the
   word "storing" used here? Surely, "that user" can be billed for the
   disk or other storage medium charges incurred by that file which is
   now taking up space, but is it legitimate to charge "that user" for
   the I/O and/or CPU resources used by someone else to transfer a file
   over the Network, and place it into that user's directory? For
   example, should the recipient of Network mail be charged for the
   resources consumed by someone else in sending it? (Would you care to
   pay the postage for all the junk mail that arrives in your home (U.S.
   Mail) mailbox?).

   Over the telephone, Bob explained to me that he desired a mechanism
   which would, for example, enable me, at his request, to transfer a
   file from my system to his directory on his system, without requiring
   that I know his password.  All well and good.  In this situation, it
   would make sense to charge Bressler's account for this file transfer.
   But how does an un-authenticated user tell a server "Charge this to
   Bressler's account because he says it's OK"? Pitfalls abound.  The
   file Transfer Server process needs to be able to charge an arbitrary
   user's account; this again presupposes implementation 1) of the File
   Transfer Server described above (or else any user process in the
   system would have the capability of charging any user's account; this
   seems undesirable).  A more reasonable approach would be to charge
   that instance of the File Transfer Server process to a general
   "Network services" account.  Mechanisms for accomplishing this are
   presented in RFC 491. [3]

   RFC 487 matter-of-factly suggests that retrieval of files in "system"
   directories should be charged to "overhead".  Here too, some broad
   assumptions are made about the nature of accounting mechanisms and
   accounts at server sites.  In addition, an undesirable loss of
   generality is imposed upon the File Transfer Server: It is now
   required to have the capability of distinguishing the pathnames of
   "system" files from those of "user" files.  In a number of systems,
   there is no syntactic distinction between the two, and the same
   general mechanisms can be used to manipulate both kinds of files (if
   a distinction between them can be made at all).  The addition of code
   to the File Transfer Server which examines the pathname given for
   each request, to determine which sort it is, seems to be antithetical
   to the goals of uniformity and generality that many of today's
   systems have achieved.

   The statement that a Network user's file transfer activity can be
   charged to a system-wide "overhead" account contains two assumptions:
   Such an account cannot be presumed to exist on all systems;
   furthermore, if it does exist, in some cases it just isn't the right
   account to charge.  Certainly, a good case can be made that the cost
   of fostering inter-user communication within the ARPA Network
   community (which is what "free" file transfer amounts to) should be
   borne by ARPA, meaning that such activity should be charged to ARPA-
   funded accounts.  If a host system's operation is entirely funded by
   ARPA (or if its management doesn't care who pays for this activity),
   then it makes sense to charge "free" file transfer activity to a
   "system overhead" account.  On the other hand, that isn't the correct
   course of action for a host system whose operation is not funded by
   ARPA, for charging "free" file transfers to "system overhead" would
   result in passing the cost along to local customers who may have no
   interest at all in the ARPA Network.

   Lastly, Bressler suggests that for file retrieval, CPU charges "may
   be sufficiently small to not cause a major problem".  To believe this
   is naivete.  It may appear to be true for a system which doesn't
   charge the user for time spent executing supervisor code, or I/O
   routines, where Network software overhead doesn't show up in the
   user's bill.  In this case, Network software overhead must contribute
   to "general system overhead", the cost of which must be borne by all
   users.  I don't think many people in the Network community would
   consider the actual (as opposed to charged) CPU time spent
   transferring a file to be negligible.  Certainly, if a system is a
   very popular or busy one from a Network standpoint, the cumulative
   CPU time spent on "free" file transfers, viewed at the end of an
   accounting period (a week? a month? a year?) will not be negligible!

   In this RFC, I've picked apart Bob Bressler's RFC 487, mostly because
   of its confusion of several distinct (although related) issues, and
   the implementation assumptions it contains which conflict with (or
   badly bend out of shape) mechanisms and design philosophies existing
   on other systems (in particular, the system I am most familiar with,
   Multics) [4].  The applicability of the discussions in this RFC, I
   think goes beyond that: We've got to acknowledge that it's difficult
   to propose Network-wide mechanisms for providing desirable services
   without building in assumptions about how they are to be implemented.
   We're at a point where we're asking for fairly sophisticated
   services, and proposing correspondingly sophisticated mechanisms.
   It's time to begin talking about how various systems accomplish such
   things as user authentication, access control, and so on, so that we
   can all gain a clearer understanding of such issues, and be able to
   propose mechanisms with fewer implementation assumptions built into
   them.


   END NOTES:

   [1] On some systems, there is a one-to-one correspondence between
   principals and accounts.

   [2] It should be noted that systems which choose implementation 2)
   may require a user authentication sequence (USER, PASS, and possibly
   ACCT commands) before permitting any file transfers, as explicitly
   stated on page 17 of RFC 354 (NIC 10596), and page 20 of RFC 4554
   (NIC 14333).  This authentication sequence would be required to
   ascertain the principal identifier to be associated with the newly-
   spawned File Transfer Server process; the process is not allowed to
   proceed until its principal identifier has been established.

   [3] Note that there are at least two scenarios for accomplishing the
   transfer Bressler desires: Either I "push" the file, using my "User
   FTP" and his system's "FTP Server", or he "pulls" the file, using his
   "User FTP" and my system's "FTP Server".  Bob chose the first
   scenario; it can be argued that, since it is Bob who wanted the file
   transferred, the second scenario is the more appropriate one.  A
   forthcoming RFC by Mike Padlipsky expands on these points, as well as
   an entirely different alternative.

   [4] Padlipsky keeps insisting that I've also shown the superiority of
   implementation 2) of the File Transfer Server (described above), but
   I resist that conclusion.  Those interested may want to look at his
   Unified User-Level Protocol specification, which is based on a
   similar premise.


       [ This RFC was put into machine readable form for entry ]
              [ into the online RFC archives by Via Genie]

AI ELI5

On this page
PROBLEMProposals for limited free access to file transfer servers, such as RFC 487, mix up controlling access to files, authenticating users and charging for resources, and they assume one particular way systems do these things.
MECHANISMThe RFC pulls the issues apart. It asks whose principal identifier the file transfer server runs under, who should be charged for transfers, and why a system-wide overhead account cannot be assumed.
THE TAKEAWAYIt does not offer a replacement design. It asks the community to discuss how different systems really do authentication and access control before proposing network-wide mechanisms.

§1Three Issues Tangled Together

Ken Pogran of MIT-Multics observes that the ARPA Network is maturing and is now facing access control, user authentication and accounting. Proposals described as login-less mail, free accounts and free file transfer each embed some notion of how those mechanisms work, and implementors whose systems differ criticize them.

He singles out RFC 487, which he says muddles access controls on files with control of access to the system, and makes sweeping assumptions about accounting. The text of this RFC names the earlier proposal as RFC 467 in one place; the author means Bressler's free file transfer proposal. This RFC is deliberately only a partial discussion, with the rest left for later.

Getting into the building, opening a locked cupboard and paying for what you use are three separate things. The earlier idea mashed them into one.

§2Whose Identity Does the Server Use?

In many systems, access control, file protection and accounting all meet at the moment a user is authenticated. The user, called a principal, gets processes tagged with an identifier and an account to charge.

The File Transfer Server can run in two ways. (1) As a system daemon with a highly privileged identifier, so it must itself work out what the user may access and charge the user's account. (2) With the user's own principal identifier, so the normal file system mechanisms check access automatically.

RFC 487 presumes the first. Systems concerned about protection may prefer the second because it follows the principle of least privilege: a process should run with as little access privilege as it needs. A footnote adds that such systems may require the USER, PASS and possibly ACCT commands before any transfer.

A helper can borrow your keys and only open your doors, or carry a master key to every door. The master key is riskier if the helper makes a mistake.

§3Who Pays for Free Transfers?

The author questions charging a recipient for resources someone else used to send a file, comparing it to paying postage for junk mail. Letting an unauthenticated user say charge this to Bressler's account would require the server to be able to charge any user's account, which presupposes the daemon design. A more reasonable approach, he suggests, is to charge the server process to a general Network services account, with mechanisms presented in RFC 491.

He also challenges charging retrievals to system overhead. Such an account may not exist, may not be the right one, and would pass costs to local customers on hosts not funded by ARPA. It would also force the server to tell system file names from user file names, which many systems do not distinguish. Finally, he calls the claim that CPU charges are small naivete, since a busy host could accumulate a lot of CPU time over a week, month or year.

If a stranger borrows your phone, who pays for the call? The answer depends on whose plan it is, so a single rule cannot fit every phone.

§4Push, Pull and the Wider Point

A footnote describes two ways to do the transfer Bressler wants: either the sender pushes the file with a User FTP to his system's FTP Server, or he pulls it with his User FTP from the sender's server. Bressler chose pushing, but since he wanted the file, pulling can be argued to fit better. A forthcoming RFC by Mike Padlipsky is said to expand on this.

The author's broader point is that network-wide mechanisms are hard to propose without building in assumptions about how systems implement them. He urges people to describe how their systems do authentication and access control so later proposals carry fewer assumptions.

Either the giver walks the parcel over, or the receiver goes to pick it up. The author thinks the person who wants the parcel should fetch it.

§5References