[Isms] tmsm-13 section 5.2.2: transport principals
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Isms] tmsm-13 section 5.2.2: transport principals
Starting note: this discussion assumes 1:1 mappings and prefixes
turned off (ie, the default). The text below is divided into two
sections: a long winded reason for text I'm suggesting followed by
additional related discussion information.
* Section 5.2.2, "transport principal":
The one major think I needs to be worded a bit better is section
5.2.2. In particular, it discusses the "transport principal". The
problem is that what we're using as a transport principal is different
depending on who is opening the connection. We keep coming back to
this, so I'm trying again to point out the problem again but with a
different set of ugly pictures.
Let's take the case of a CG talking to a CR:
SNMPv3 SSH SNMPv3
Protocol
+-----------+ +---------------------------------------+
|CG | |CR |
| +----+ | I'm foo | +----+ +-----+ +------+ |
| | TM | |--------------->| | TM | --> | TSM | --> | VACM | |
| +----+ | | +----+ +-----+ +------+ |
| |<---------------| . |
+-----------+ I'm x.y.com +------------------------------o--------+
O
O
+----------------+
|I'll let "foo" |
|in today I guess|
+----------------+
In the above, the transport principal (and via propagation the
tmSecurityNanme and the securityName) is "foo" right? It's what the
CR makes the decision by. The VACM is saying yea or nay based on it.
It's what the CG presents to the CR in the form of a SSH user name (in
this TM example). But, the CG MUST also verify that it's talking to
the right CR as well and it does this by verifying that x.y.com is
presenting the hostname it expects and that the public key it's
presented matched the expected value and that the entity on the remote
side can prove they have the private half of the key.
The point is that there are two identities here: "foo", and
"x.y.com". The current text is really only talking about "foo" but it
doesn't clearly say that.
And, to make matters more confusing... When the NG/NR process steps
in then it gets more confusing:
SNMPv3 SSH SNMPv3
Protocol
+---------------------------------------+ +-----------+
|NG | I'm foo |CR |
| +------+ +-----+ +----+ |--------------->| +----+ |
| | VACM |--->| TSM |----->| TM | | | | TM | |
| +------+ +-----+ +----+ |<---------------| +----+ |
| . | I'm x.y.com | |
+-------o-------------------------------+ +-----------+
O
O
+--------------------+
|I'll let "foo" |
|see my notifications|
|today ... |
+--------------------+
(Note: The NG should still be configured to realize that x.y.com is
presenting the expected and authenticated SSH credentials)
This is where the problem lies. In this case, we're still using a SSH
user name to identify *ourselves* and that is the outgoing
securityName which is passed to tmSecurityNanme which becomes the
principal identity.
The problem is that the name being used by the VACM (and potentially
other places) is always the one that the client side uses to
authenticate itself. That needs to be made clear in the text, IMHO.
I think the current text leads to confusion about this. This is the
text in the last copy:
transport principal: the transport-authenticated identity, on
whose behalf the secure transport connection was (or should be)
established. This value is transport-, mechanism- and
implementation- specific, and is only used within a given
transport model.
The only reason I know the correct authenticated identity to use is
because I've been thinking about it for 3 years along with the rest of
the group. I don't think most of the rest of the first-time-readers
will be able to pull out the proper value. This was an incredibly
long winded way of proposing a replacement paragraph:
transport principal: the authenticated identity that will be used to
identify the authoritative principal for the SNMPv3 messages being
sent. For asymmetric protocols which may be presenting different
identity names for each side of the connection the transport
principal will be the locally offered identity name for outgoing
connections and the remotely authenticated name for incoming
connections. This value is transport-, mechanism- and
implementation- specific, and is only used within a given transport
model.
For SSH, the text assures that "foo" is always what is used within
both the NG and the CR. For DTLS, it always uses the certificate that
was used to open the connection.
Aside reminder: (with my "bar@" secshell specification patch, it
actually allows for the authentication to take place using "bar"
according to the SSH server side even though we still refer to it
locally as "foo" within a NG for doing authorization checks)
-- end of proposal text --
-- start of extra discussion about reversing connections --
The security paranoid people should now be asking
themselves
1) ok, but what happens if the NG is sent a command from a
CG? What happens then? (ie, a call-home situation where the
client is a NG/CR).
The answer is that the NG application, if it was also a command
responder (CR), would accept the request and believe it came from
securityName "foo". *If* the VACM was configured to allow the
"foo" user to access the CR then it would be allowed. Even though
it hadn't presented the "foo" user name itself. This is probably
worth noting in the Security Considerations as well.
2) ok, but what happens if the CR is sent a notification from a NG?
What happens then? (ie, the client is a CG/NR).
The answer, again, is that the securityName must be "foo" *and* if
the application had registered itself as both a CG and a CR using
the registerContextEngineID() ASI from section 4.1.5 of RFC3411
then it would accept the notification and do "something" with it.
There is no (standardized) authorization process for notifications
received, so it would simply be accepted.
--
Wes Hardaker
Sparta, Inc.
_______________________________________________
Isms mailing list
Isms at ietf.org
https://www.ietf.org/mailman/listinfo/isms
Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.