Hi Nathan Just wanted to confirm that json2cbor from iotivity-2.0.0 and latest master both fail when an ACE contains a roletype entry.
For the provisioning client example, is there anyway to inspect the .dat files that are modified after the provisioning is performed? Something like a cbor2json if there is such a tool. Thanks Khaled On Wed, Nov 21, 2018 at 9:56 AM Khaled Elsayed <khaledi...@gmail.com> wrote: > Thanks Nathan so much for the detailed responses. I was using the master > branch which I believe is based on 1.4. I just downloaded 2.0.0 and will > use it for the experimentation. > > My replies below inline. > > On Tue, Nov 20, 2018 at 8:40 PM Heldt-Sheller, Nathan < > nathan.heldt-shel...@intel.com> wrote: > >> Great questions Khaled and I’m quite impressed with how far you have >> gotten on your own! Well done. >> >> Responses inline [NHS]. >> >> >> >> One question for you: I hope you are using the latest IoTivity code base >> (the 2.0.0 release, tagged “2.0.0” in IoTivity, is a good starting point). >> Can you clarify which version you’re working with? >> >> >> >> Thanks, >> Nathan >> >> >> >> >> >> This works perfectly as long as security is not involved. Now, if I want >> to the MQTT proxy to serve only authorized clients, I have a puzzle. The >> proxy does not know the resources in advance. They are created on the fly. >> So, I have two problems here: >> >> [NHS] this is going to be difficult to begin with, as /acl2 management is >> done by the Access Mgmt Svc (AMS), part of the Onboarding Tool (OBT). The >> application layer is not intended to manage access control policy on a >> Device. So you’ll need to use wildcards. As you surmised, this is best >> done via “Roles” (security Device groups)… >> > > [KE] OK, I agree. > > 1. ACL: I would like to create a new ACE for the created resource with >> something like: >> >> { >> >> "aceid": n, // n is the number of resource created >> >> "subject": {"conntype": "auth-crypt"}, >> >> "resources":[ >> >> { "href":"</a/mqtt/mqtt_topic>", // the resource >> created for the mqtt >> >> "rt" : ["oic.r.mqtt"], >> >> "if" : ["oic.if.baseline", "oic.if.a"]} >> >> ], >> >> "permission": 22 >> >> } >> >> Which API should I call to add this new ACL? What is the format used to >> represent the ACL? >> >> [NHS] As mentioned above, this would need to be added by the AMS/OBT, not >> the Device itself. There should not be an API to do this, as it would >> create a security vulnerability if application layer code could modify the >> /acl2 Resource directly. >> >> I am trying to avoid using wildcard, it is possible to have an ACL like >> the following from the beginning and it should work (as far as I know) >> >> { >> >> "aceid": n, // n is the number of resource created >> >> "subject": {"conntype": "auth-crypt"}, >> >> "resources":[ >> >> { "wc": "+" // all secured resources created >> >> } >> >> ], >> >> "permission": 22 >> >> } >> >> [NHS] Yes this is what I would test to begin with and make sure >> everything works using a wildcard Access Control Entry (ACE) before >> proceeding to attempt to make Roles work. >> > > [KE] OK, I will try that and get it to work first. Thanks for confirming I > am going in the right direction. > > >> >> >> 2. I asked before in the list about group symmetric keys and did not get >> answers. So, I checked the source code, and currently it is not supported. >> So, I found the following in "OCF Security Primer for Device Vendors" >> >> [NHS] I’m sorry I missed your earlier question. You are correct again: >> while we do have allowed cipher suites in the Security Specification that >> theoretically support GSK but they are not specified, or supported in >> IoTivity. >> >> Vendor-defined groups, via “roletype” Parameter of the ACE2 “subject” >> property: >> >> { >> >> "aceid": 1, >> >> "subject": { "roletype": “<made_up_string_that_matches_string_in_cred>” }, >> >> ... >> >> } >> >> So, I tried to modify the SVR json file according to the above template, >> and added a cred record with matching string. When I run json2cbor, it >> fails. If I change the roletype to uuid, it works, so there is no syntax >> error in the json file. >> >> [NHS] Per above question, what version of IoTivity are you using? I have >> not tested Roles behavior myself, but I know the Roles tests in the >> Certification Test Tool (CTT) pass, so I believe the functionality is >> correct. If you are using the latest “master”, or even the “2.0.0” >> release, then I suspect we just need to figure out what is going on with >> the json2cbor tool. >> > > [KE] Yes, I am using the master I got sometime in October. I will re-test > using 2.0.0 release and let you know how it goes. > >> Anyway, here is my question: I would like to define a security group any >> member of which can access the created resource. I don't want to populate >> the proxy cred list with a separate entry for each new client. Can I use >> certificates for this? Is there an example of using certificates to allow >> clients with proper credentials to authenticate with an OCF server? >> >> [NHS] Security Groups (“Roles” in OCF) do not **require** asymmetric >> crypto-based authentication, but it certainly works more smoothly that >> way. The symmetric approach requires that each /cred entry (yes, one /cred >> entry per Client Device) must list the Role(s) that the Client >> corresponding to that entry belongs to. On the other hand, as you’ve >> surmised, Certificate-based authentication is indeed one way to avoid >> creating /cred entries for each Subject (Client Device). There is indeed >> an example of Certificate-based Client/Server authentication in the >> IoTivity example “sampleserver_mfg”, which is in the >> resource/csdk/securitiy/provisioning/sample folder. We’re working on >> documentation improvement on the wiki to point out critical examples like >> this one. Give it a try (start the sampleserver_mfg, then onboard it with >> the sample provisioningclient app in the same output directory). Let me >> know if you have any issues. >> > > [KE] Yes, I started playing with the sampleserver_mfg application along > with the provisioning tool and it works nicely. I will start digging into > the code to understand how the certificate business is handled. > Could you also share some example on Cred entries using symmetric > authentication listing the Role(s) of the client. > > Thanks again and best regards, > > Khaled > > -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#10024): https://lists.iotivity.org/g/iotivity-dev/message/10024 Mute This Topic: https://lists.iotivity.org/mt/28267159/21656 Group Owner: iotivity-dev+ow...@lists.iotivity.org Unsubscribe: https://lists.iotivity.org/g/iotivity-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-