[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Review of "TLS Encryption for RADIUS" (Experimental) (part I, Technical)



   2.  negotiate TLS sessions according to [RFC5246] or its predecessor
       TLS 1.1.  The following restrictions apply:

       *  The authentication MUST be mutual, i.e. both the RADIUS/TLS
          server and the RADIUS/TLS client authenticate each other.

       *  The client MUST NOT negotiate cipher suites which only provide
          integrity protection.

       *  The TLS session MAY use mutual PSKs for connection setup.

       *  Negotiation of compression for the TLS session is OPTIONAL.

       *  RADIUS/TLS implementations MUST support the mandatory to
          implement cipher suites specified in TLS (i.e.
          TLS_RSA_WITH_3DES_EDE_CBC_SHA).  For purposes of compatibility
          with some current deployments implementations SHOULD support
          TLS_RSA_WITH_RC4_128_SHA and TLS_RSA_WITH_AES_128_CBC_SHA as
          well (see Section 3.2 (1) ).

[BA] Several issues with this:

a.  There is no statement about mandatory to implement TLS version (e.g. MUST
support TLS 1.0 and later).  

b. There is no statement about mandatory to implement authentication mechanism
(e.g. mutual TLS with certificates).  

Recommend re-writing as follows:

"  2.  negotiate TLS sessions.  The following restrictions apply:

       *  Support for TLS v1.1 [RFC4346] or later (e.g. TLS 1.2 [RFC5246]) is REQUIRED.

       *  Support for compression is OPTIONAL.

       *  Support for certificate-based mutual authentication is REQUIRED.

       *  Support for TLS-PSK mutual authentication [RFC4279] is OPTIONAL.  

       *  Negotiation of mutual authentication is REQUIRED.

       *  Negotiation of a ciphersuite providing for confidentiality as well
          as integrity protection is REQUIRED.  

       *  RADIUS/TLS nodes MUST NOT negotiate ciphersuites with NULL encryption (e.g. [RFC4785]).  

       *  Negotiation of compression is OPTIONAL.

       *  RADIUS/TLS implementations MUST at a minimum support negotiation
          of the TLS_RSA_WITH_3DES_EDED_CBC_SHA ciphersuite, and SHOULD
          support TLS_RSA_WITH_RC4_128_SHA and TLS_RSA_WITH_AES_128_CBC_SHA as
          well (see Section 3.2 (1) ).

       *  In addition, RADIUS/TLS implementations MUST support negotiation of
          the mandatory-to-implement ciphersuites required by the versions of TLS
          that they support."  



       *  Certificate validation MUST include the verification rules as
          per [RFC5280], using information from trusted sources only
          (e.g. locally configured names).  If service names as per
          [RFC4985] are present in the certificate and dynamic discovery
          utilizing SRVs in DNS is used (see
          [I-D.winter-dynamic-discovery]) and the TLS implementation
          supports evaluation of the extensions in [RFC4985], the SRV
          entry MUST be validated.  In cases where no DNS SRV resolution
          took place to arrive at the TLS peer, subjectAltName:SRV
          entries can be ignored.


[BA]  I'm not clear what "using information from trusted sources only"
means, exactly.

Given the MUST here, the reference to dynamic discovery is probably
normative.  My suggestion is to move this material to the dynamic discovery
draft so as to remove the normative dependency.  

Among other things, moving this to the dynamic discovery document will
provide some additional time to think through the security issues.  

Use of the extensions in [RFC4985] does not necessarily address the
problem of forgery of DNS SRV RRs unless some kind of name constraint is also
applied.  For example, an attacker could forge an SRV RR that indicates that the
RADIUS/TLS server for example.com is hosted with the evilhacker.com domain, and
the fradulent RADIUS/TLS server could provide a valid certificate with a
service extenion indicating its acting as the RADIUS/TLS server for example.com.
The problem is that the certificate chain will not include a trust anchor within
the example.com domain.  

2.3. Connecting Client Identity

   In RADIUS/UDP, clients are uniquely identified by their IP address.
   This does not permit to determine whether the connecting entity is a
   NAS or a different server which proxies a request.  When NAT is used
   on the path to the server, it also does not permit to determine
   whether there is more than one entity connecting from the same IP
   address.

[BA] The NAS is identified by the NAS-Identifier/NAS-IP-Address/NAS-IPv6-Address
attributes, no?  Since RADIUS identifies entities by IP address, by
definition all packets originating from a given IP address are assumed
to come from the same entity.  Suggest rewriting as follows:

 " In RADIUS/UDP, clients are uniquely identified by their IP address.
   Since the shared secret is associated with the origin IP address,
   if more than one RADIUS client is associated with the same IP
   address, then those clients also must utilize the same shared secret,
   a practice which is inherently insecure as noted in [RFC5247]."


   RADIUS/TLS makes it possible to preserve this traditional RADIUS
   semantics by identifying a connecting client by the IP address which
   initiated the TLS connection.  In addition, it permits a much more
   fine-grained identification.  The parameters of the TLS connection
   can be attributed to the RADIUS packets inside the TLS connection.
   An implementation of RADIUS/TLS should expose as many details of the
   TLS connection which belongs to an incoming RADIUS packet as possible
   to the application layer to allow the administrator to define the
   identification criteria which are applicable to his desired
   operational model.  In X.509 certificate operation, at least the
   following parameters of the TLS connection should be exposed:

   o  Originating IP address

   o  Certificate Fingerprint

   o  Issuer

   o  Subject

   o  all X509v3 Extended Key Usage

   o  all X509v3 Subject Alternative Name

   o  all X509v3 Certificate Policies

   In TLS-PSK operation, at least the following parameters of the TLS
   connection should be exposed:

   o  Originating IP address

   o  TLS Identifier

[BA] It seems to me that the above text is somewhat too vague in that it doesn't
precisely define what parameters should be used to differentiate RADIUS clients
and servers from each other.

2.4. RADIUS Datagrams

   Authentication, Accounting and Authorization packets are sent
   according to the following rules:

   RADIUS/TLS clients handle the following packet types from [RFC2865],
   [RFC2866], [RFC5176] on the connection they initiated (see
   Section 3.3 (3) and (4) ):

   o  send Access-Request

   o  send Accounting-Request

   o  send Status-Server

   o  send Disconnect-ACK

   o  send Disconnect-NAK

   o  send CoA-ACK

   o  send CoA-NAK

   o  receive Access-Challenge

   o  receive Access-Accept

   o  receive Access-Reject

   o  receive Accounting-Response

   o  receive Disconnect-Request

   o  receive CoA-Request

   RADIUS/TLS servers handle the following packet types from [RFC2865],
   [RFC2866], [RFC5176] on the connections they serve to clients:

   o  receive Access-Request

   o  receive Accounting-Request

   o  receive Status-Server

   o  receive Disconnect-ACK

   o  receive Disconnect-NAK

   o  receive CoA-ACK

   o  receive CoA-NAK

   o  send Access-Challenge

   o  send Access-Accept

   o  send Access-Reject

   o  send Accounting-Response

   o  send Disconnect-Request

   o  send CoA-Request

[BA] This assumes that the RADIUS server is also a Dynamic Authorization Client.  This is not
necessarily the case.   CoA-Request and Disconnect-Request packets can also be sent by a
DAC that originates its own TLS connection, no?

My suggestion is that you separate the DAC/DAS roles from the RADIUS client/server roles in this
section.  I'd also note that the RADIUS over TCP document does not recommend that Dynamic
Authorization traffic be sent over TLS.