Hi Gregg,

TLS and Access Control are indeed separate things.  However, OCF currently uses 
the DTLS session as a means of authenticating a Client, which is in turn how 
identity is determined for purposes of Access Control.  So in this way TLS 
authentication and access control are closely tied.

I’d agree with you that the OCF Specifications don’t contain a security primer, 
that would introduce and distinguish between authentication (which currently 
takes place via DTLS handshake) and authorization (which is handled by the 
Access Control mechanism).

Another point of agreement is that it is certainly confusing to consider that 
the Resource creation API “OC_SECURE” flag only creates a “secure” (CoAPS) 
endpoint for the Resource, but does nothing to modify Access Control policy.  
In other words, the Resource creation API doesn’t affect the /acl2 Resource.  
This is correct however, if you consider that the OCF Security Architecture 
doesn’t allow Applications to modify Device Access Control policy… this is the 
job of the Access Mgmt Service, and is beyond the privileges of a typical 
application.

Still, the correctness of this from a security standpoint – while important to 
understand – doesn’t mean it’s not confusing!  You’re not the first to point 
this out, believe me ☺  I’m working on a change for the next OCF Specification 
(and implementation in IoTivity) that will hopefully improve the intuitive 
nature of “OC_SECURE” and /acl2 configuration for many Devices, without 
breaking the security model.  I can’t share more than that on the IoTivity 
reflector at this point but if you’re curious you can join the OCF Security 
Working Group and take a look at the proposal.

Thanks,
Nathan

From: iotivity-dev-boun...@lists.iotivity.org 
[mailto:iotivity-dev-boun...@lists.iotivity.org] On Behalf Of Gregg Reynolds
Sent: Friday, January 5, 2018 1:31 PM
To: iotivity-dev <iotivity-dev@lists.iotivity.org>
Subject: [dev] Systematic ambiguity of "secured"

Security is a house of many mansions. Data integrity, confidentiality, 
non-repudiatability, authorization, authentication, etc.

The Iotivity docs systematically conflate these attributes, resulting in 
confusion for devs who are not sec experts.

Transport-layer security and access control security are totally orthogonal. 
The former is about integrity and confidentiality; the latter is about, well, 
something else. But every bit of Iotivity doc I have seen fails to make that 
critical distinction.

If we want to increase uptake of OCF, this is a problem.

For example, it is just wrong to say that OC_SECURE means a resource is secure. 
It only means that access to the resource must go thru d/tls. That's about the 
endpoint connection, not the resource. Access control is a completely separate 
issue afaik.

The we have compiling with SECURED or not.

Alas, I have not yet come up with better language. But if we want to attract 
devs we need clearer language.

G
_______________________________________________
iotivity-dev mailing list
iotivity-dev@lists.iotivity.org
https://lists.iotivity.org/mailman/listinfo/iotivity-dev

Reply via email to