Subject: Replacing a SASL security layer

From: Alexey Melnikov <[email-masked]>
Date: Wed, 08 Oct 2003 23:16:54 +0100

>>>   Below the term "realm" has the meaning as defined in the section 5.
>>>   A security layer that remains in effect when a client, which already
>>>   has authenticated and established the security layer with "Realm A",
>>>   authenticates to "Realm B", without negotiating a new security layer,
>>>   enables "Realm B" to make guesses about previously observed
>>>   ciphertext using the server's SASL engine as an oracle. "Realm B" may
>>>   observe how known cleartext is encrypted.
>>>
>>>              +---------+                   +---------+
>>>              |         |                   |         |
>>>              | Realm B |                   | Realm A |
>>>              |         |                   |         |
>>>              +---------+                   +---------+
>>>                  |  ^                           |
>>>                  |  :      +-----------+        |
>>>     Traffic from |  :      | Encryption|        | Traffic from A
>>>      B to client +-------->| end point |<-------+ to client
>>>                     :      | (SSL/SASL)|
>>>                     :      +-----------+
>>>                     :            |
>>>                     :            |
>>>                     :          +---+
>>>                     :          |   |
>>>                     :          |   |
>>>                     :          |   | Encryption tunnel, e.g. SASL or 
>>> SSL,
>>>                     :          |   | between the server
>>
>>>           encrypted            |   | Separate tunnels to different
>>>           traffic between      |   | clients.
>>>           Realm A and client   +---+
>>>                                  |
>>>                                  |
>>>                                  +-----------> Traffic to clients
>>
>
> This discussion is confusing and makes no sense to me.  SASL doesn't 
> protect traffic between "realms" and clients; it protects traffic 
> between _servers_ and clients.  This needs to be reworded so it makes 
> sense, in terms of entities known to the SASL framework.  A "realm" is 
> not such an entity; it is no more than part of the autentication 
> identities used by some mechanisms, and has no place outside the 
> mechainsm specification.
>
> Put another way, and ignoring the issue of "realms"; the above 
> description makes so little sense to me that I cannot evaluate its 
> validity or understand what attack we are trying to avoid. 

Ignore for a moment any relationship of realm to DIGEST-MD5, GSSAPI or 
any other SASL mechanism. Let's use the definition I have in the document:

Conceptually, realm is the name of a collection of user's accounts.
Realms allow the protected resources on a server to be partitioned into
a set of protection spaces, each with its own authentication mechanisms
and/or authorization database. For example, a proxy/frontend can use
different realms for different servers/backends it represents.

So, each "realm" ("a protection space") is served by a separate server 
(proxy example above) or a separate process/plugin (frontend-backend 
example). Does it make more sense now?

Alexey