RFC 644

On the problem of signature authentication for network mail

๐Ÿ“… published July 1974, from ietf

On the Problem of Signature Authentication for Network Mail โœจ

Network Working Group ๐ŸŽ€ Request for Comments: 644 ๐Ÿฆ‹ Author: Bob Thomas (BBN-TENEX) ๐Ÿ’– Date: Jul 1974. This one has no category, and it doesn't obsolete or update anything. It's just a note, bestie ๐Ÿซถ

okay so this note is all about signature authentication for network mail ๐Ÿ“ฌ It explains the problem, gives a general approach, and then proposes one specific way to make it work. Let's go ๐Ÿ’…


1. The Problem ๐Ÿ’Œ

The core question is this ๐Ÿ‘€

How can the recipient of a network mail message be "certain"
that the signature (e.g., the name in the "FROM" field) is
authentic; that is, that the message is really from whom it
claims to be?

We care about signature authenticity in the network context ๐ŸŒ For this note, we're just going to assume that local mail (messages from one user to another on the same host) is already sorted out ๐Ÿ™ˆ Basically, each host either thinks this problem matters and guarantees signatures on local mail, or it doesn't care and doesn't guarantee anything. Either way, it'll make sense how that connects to the network version as we go โœจ

Here's the simple model we're using for network mail ๐Ÿ’–

To send net mail a user invokes a mail sending process (SP) on
his local host (SH).  The process SP acts on behalf of the user
to deliver the message to an appropriate mailbox at the
receiving host (RH).  It does that by interacting with a
receiving process (RP) that runs on host RH.  RP accepts the
message from SP and deposits it in the appropriate mailbox.

In the current network mail setup, the receiving process RP is usually an FTP server process ๐Ÿงš On the TENEX side, the sending process SP is either a process running SNDMSG, or a "background" MAILER process that sends "queued" mail (stuff that was posted earlier but hasn't been delivered yet) ๐Ÿ“ฎ


2. An Approach ๐ŸŒธ

We want a solution that lets RP, the receiving process, mark the signature on each incoming message as either authenticated or not, with respect to SH, the sending host ๐Ÿ’… If RP can do that, a user reading mail at RH can see on each message whether the signature was authenticated against the originating host ๐Ÿ‘€ The authenticity of that signature is the originating host's responsibility ๐Ÿ  How much a user trusts a message marked as authentic can be based on how much they personally trust the source host's user authentication and access control mechanisms ๐Ÿ”

The whole approach depends on two things ๐Ÿซถ

  • a. Users need to form their own opinions on how secure each host's user authentication and access control mechanisms are. This is already happening on the ARPANET, since users who care about data privacy and security are doing exactly that โœจ
  • b. RP needs a way to tell apart mail that was authenticated by the sending host from mail that wasn't. So there needs to be a mechanism that lets a properly authorized (by the sending host) mail sending process identify itself to the receiving process as one ๐ŸŽ€ RP can then mark that mail as authentic. Unauthorized processes (like a regular user process pretending to be an authorized mail sender) might still try to send mail to mailboxes at RH ๐Ÿ™„ In that case, RP gets to choose: refuse the message, or accept it and mark it as unauthenticated ๐Ÿšซ

3. Proposed Implementation of Approach ๐Ÿงšโ€โ™€๏ธ

Passwords are one obvious way to do sending-process authentication ๐Ÿ”‘ Only an authorized sending process would know the password, so it could identify itself properly to the receiving process. BUT ๐Ÿ˜ค the note rejects passwords as operationally impractical, for these reasons:

  • a. The password has to be stored in the sending program, or at least be reachable by it somehow. That makes it more likely the password's privacy gets compromised ๐Ÿ˜ญ
  • b. If a password leaks, it has to be changed on both the sending and receiving hosts. That's a synchronization problem ๐Ÿ™ƒ
  • c. Really secure mail would probably need a password for every pair of hosts. For an N host network, that's N*N passwords ๐Ÿ’€

So instead, the proposal is to base authentication on the communication path itself between the sending and receiving processes ๐Ÿ›ค๏ธ On the ARPANET, a communication path is uniquely identified by its two ends: the send host-socket pair and the receive host-socket pair ๐Ÿฆ‹ A process can accurately figure out the host-socket pair at the remote end of its path โœจ

Here's the key idea ๐Ÿ‘‘ The receiving process treats the sender as a properly authorized (by the sending host) mail sender only if the sending end of the path is one of the socket(s) reserved for sending authenticated mail. Those sockets get reserved through prior host agreement ๐Ÿค

Splitting up the responsibilities ๐Ÿ’–

The sending host's job is to make sure only authorized mail sending processes can get to the mail sending socket(s) ๐Ÿšช

The user who cares about their mail's authenticity has a job too: understand that "authentic" means the sending host figured out who the sender was, and that the signature is only as good (or as bad) as that host's user authentication and access control procedures ๐Ÿง


4. Additional Remarks ๐ŸŽ€

  • a. Using sockets for process authentication isn't a new idea on the ARPANET ๐Ÿ™Œ By host agreement, the TELNET logger process answers connections on socket #1, the FTP logger process on socket #3, and so on. Honestly, the privacy of network mail depends on how well the host controls access to the FTP logger socket ๐Ÿ”’ The receiving process is considered authentic because it's the process you reach by ICP'ing to socket #3. This note proposes using that same mechanism to authenticate mail sending processes too ๐Ÿ’…
  • b. Planned TENEX Experiment ๐Ÿงช A set of sockets has been set aside for mail transmission (all numbers are decimal):
ICP "from" socket - 232
FTP user command sockets:  receive, send = 234, 235
Default data transfer (user, send) socket = 237

The plan is to modify TENEX's mail sending, receiving and reading software the way this note describes ๐Ÿ› ๏ธ Mail that TENEX sends to remote hosts, and that counts as authentic (with respect to TENEX), gets sent by initiating the ICP to the remote FTP server socket 232 โœจ Mail TENEX receives from remote hosts only gets marked as authentic if the ICP to the TENEX FTP server was started from remote socket 232 ๐Ÿ’Œ The TENEX mail reading software will show, for each message, whether its signature was source authenticated or not ๐Ÿ‘€

  • c. Contention for the Mail Sending Socket ๐Ÿšฆ Depending on how the sending host's NCP and its network mail sending software are built, several users sending network mail at the same time might end up fighting over the single ICP "from" socket ๐Ÿ˜ฉ If that turns out to be a real problem in practice, a set of ICP "from" sockets could be reserved for authenticated network mail instead ๐Ÿซถ
  • d. Local mail signature authentication is pretty much its own separate problem from the network one we've been talking about ๐Ÿ™ƒ A few observations:
    1. Users on a host that doesn't authenticate local mail probably shouldn't expect that host to reliably deliver authenticated network mail to them ๐Ÿ˜ฌ Since local mail isn't authenticated, a malicious local user could drop forged messages into other users' mailboxes. Those forgeries would look exactly like network mail and get marked as authentic the same way the host's receiving process marks mail ๐Ÿ’€
    2. A host with strong user authentication procedures that also authenticates local mail isn't automatically a reliable source of authenticated network mail ๐Ÿคทโ€โ™€๏ธ To be reliable, it has to limit access to the net mail transmission socket(s) to authorized mail sending processes ๐Ÿ”
    3. A host that doesn't support authentic local mail could still be a reliable source of authentic net mail ๐ŸŒˆ

That's the whole note, bestie ๐Ÿ’œ Sockets, not passwords, doing the authenticating. Iconic ๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from