Re: 15 reasons for using URLs/HTTP

Mark Baugher <[email protected]> Thu, 12 Feb 2004 16:40:52 -0800
Newsgroups gmane.ietf.asrg.smtpverify
Message-ID <[email protected]>
At 03:23 PM 2/12/2004, Hadmut Danisch wrote:
>On Thu, Feb 12, 2004 at 01:10:00PM -0800, Mark Baugher wrote:
>
> > At 11:15 AM 2/12/2004, Hadmut Danisch wrote:
> > >
> > >I received several comments to my proposal
> > >to move from DNS to HTTP for fetching the authorization
> > >records.
> >
> > This is where I am lost.  Authorization is based on some kind of trust,
> > i.e. "trust to do what?"  For example, with DNS, we trust the binding of a
> > name to an address is correct, and with reverse DNS we trust the 
> binding of
> > an address to a name.  What do you propose to replace this with when you
> > move from DNS, which is a global database system based on IANA 
> assignments,
> > to http, which is a client/server protocol?
>
>"Trust" is the wrong word, it has some meaning which is not well
>defined. "Trust" is usually avoided in security context, and

Well, this statement isn't too hard to disprove.  Let's see, the last thing 
I read today...
http://josefsson.org/thesis/josefsson_simon_master_thesis.pdf
has 31 occurrences of the word "trust."

My favorite reference lately is the Handbook of Applied Cryptography, 
http://www.cacr.math.uwaterloo.ca/hac/ , which has several chapters about 
the T word, such as "13.6.1 Trust between two domains"

I like to use the word myself in security contexts, 
http://www.ietf.org/rfc/rfc3547 , 
http://www.ietf.org/internet-drafts/draft-ietf-avt-srtp-09.txt - odd that 
no one in the IESG security area coached us to avoid the word trust.

>if it is used then it means that you rely on someone else to
>behave well, e.g. you trust someone else to not generate false
>PGP certificates or something like that. That's why you're confused.

Yes, but at least I'm well read on the topic of security.

Mark


>A simple rule to help understanding:
>
>"Authentication" is answering the question "Who are you?",
>were any kind of identifier is (more or less) reliable
>(means: difficult or impossible to forge) determined.
>Done with e.g. a password or cryptographical challenge response
>protocols.
>
>"Authorization" is the next question: Once we determined
>who we are talking with (through authentication), we can
>lookup what this particular entity (person,...) is
>permitted to do. This is usually any kind of database
>lookup.
>
>
>Now, as with many other protocols, authentication is a little
>bit difficult, because it happens implicetely. The identifier
>is _not_ the e-mail address, it is the IP address. This is
>the authenticated identifier. How is it authenticated?
>The TCP sequence number is a kind of poor challenge response
>mechanism. You can correctly perform the handshake only after
>you received the package that was sent to you before
>(except for routing attacks and weak sequence numbers).
>
>Therefore, when receiving a TCP connection, then the operating
>system has implicetely done a (not strong, but better than
>weak) authentication, and the result is the IP address of the
>peer, which you can get with the getpeername() system call.
>
>That's why it is difficult to understand, because all this
>happens outside the application and not as part of the mail
>protocol, but the underlaying transport.
>
>So when the MTA gets the SMTP connection, this special kind
>of authentication is already done.
>
>What were are here talking about is that second question:
>
>We know that we are talking with a.b.c.d and a.b.c.d is
>requiring to make use of the right to use a particular
>e-mail address for sending a message. Who is competent
>to permit this? The domain owner. How do we find him?
>DNS. So we have to ask him: Whom do you grant permission
>to use this e-mail address/domain for sending e-mail?
>
>The domain owner now gives an explicit technical
>statement, who is permitted = who is authorized. This
>statement is what I use the term Authorization Record
>for.
>
>That's why it is "Authorization" what we all are talking
>about here.
>
>
>
>Where do I want to move from DNS to HTTP?
>
>Reconsider what I was writing above: Two steps are to be done,
>1. find the domain owner or his statement
>2. transmit the statement
>
>
>For the first step, I still stick to DNS, because that's what
>DNS is designed to do and that's what DNS does pretty well.
>I expect the domain owner to store the information in DNS where
>to find the Authorization record.
>
>But I do not (longer) agree that it is in any case a good idea
>to also keep the authorization record itself in DNS, because
>DNS is not a general database.
>
>
>Let me give an example: If you want to get someone else's
>homepage. What do you do (what does the Browser do)?
>
>First, you ask the DNS where to find it. Good.
>
>Second, you use a different, appropriate protocol to transport
>the data. Here: HTTP
>
>Would you ever put your home page in your DNS zone file instead
>on your web server? Or images of your photo album? A sound file?
>No? Good. But why do you want to put an authorization record in
>DNS then?
>
>I admit that I have changed my mind.
>
>When developing RMX I had in mind to keep records very compact
>and condensed to make them fit into DNS.
>
>Meanwhile many people told me that they do not want to
>have a new RR type, and that they want to use TXT instead.
>And there are a lot of proposals  where the record grows bigger
>and bigger. And most of the proposals just differ in the
>way of trying to encode the authorization record in RR types
>which are not supposed to carry that kind of information.
>Microsoft's CallerID tries to make a text file out of several
>TXT entries, and recently there was a proposal about storing
>the number of lines in the lower two bytes of an A ptr.
>
>That's not good engineering. It shows that this is a wrong
>approach. DNS is good to localize resources like authorization
>records, but not to store them.
>
>regards
>Hadmut