Linux ¡Founda+on ¡ Collabora+on ¡Summit: ¡ OIC ¡Security ¡ Ned ¡Smith ¡ Intel ¡ 1 1
IoT ¡– ¡A ¡Metaphor ¡for ¡“Pelagic” ¡Compu+ng ¡ ¡ • What ¡do ¡I ¡mean ¡by ¡pelagic ¡compu;ng? ¡ Other Controller Actuator Larval ¡slipper ¡lobster ¡riding ¡on ¡salp ¡chain* ¡ Sensor Ctenophore* ¡ Venus ¡Girdle* ¡ Real ¡simple ¡structures ¡that ¡can ¡connect ¡to ¡other ¡structures ¡to ¡form ¡ more ¡complex ¡structures ¡that ¡are ¡autonomous ¡or ¡semi-‑autonomous ¡ *SRC: ¡www.jacksdivinglocker.com ¡ Open ¡Source ¡Technology ¡Center ¡ 2 2
IoT ¡is ¡also ¡about ¡Clouds ¡ ¡ • Cloud ¡compu;ng ¡essen;ally ¡ means ¡ – Unlimited ¡storage, ¡compute ¡power ¡ and ¡availability ¡ Cloud ¡Compu;ng ¡ • Pelagic ¡+ ¡Cloud ¡compu;ng ¡ Analy;cs ¡ implies ¡ – Pelagic ¡behaviors ¡may ¡be ¡monitored ¡ and ¡analyzed ¡over ¡long ¡periods ¡and ¡ Monitoring ¡ Informing ¡ – Cloud ¡analy;cs ¡may ¡inform ¡pelagic ¡ controllers ¡making ¡them ¡smarter ¡ Security objective : Enable intended pelagic interactions while preventing unintended interactions Pelagic ¡Compu;ng ¡ Open ¡Source ¡Technology ¡Center ¡ 3 3
OIC ¡Terminology ¡ • A ¡Device ¡is ¡an ¡OIC ¡stack ¡instance ¡ OIC Device OIC Device Resource ¡ • Devices ¡implement ¡Client ¡& ¡ Access ¡ Server ¡roles ¡ OIC Client OIC Server Request ¡ • Devices ¡have ¡Resources ¡and ¡ Access Control Actions perform ¡Ac;ons ¡ Resources • Resources ¡have ¡AVributes, ¡ Proper;es ¡and ¡Interfaces ¡ Sensor ¡ Controller Actuator OIC Server OIC Client OIC Server Access Control Actions Access Control Resources Resources • Intermediary ¡is ¡a ¡role ¡that ¡combines ¡client ¡& ¡server ¡ Open ¡Source ¡Technology ¡Center ¡ 4 4
Security ¡Significance ¡of ¡OIC ¡Layering ¡ OIC OIC Clients OIC Servers Intermediaries • Security ¡seman;cs ¡are ¡ managed ¡at ¡OIC ¡Resource ¡layer ¡ OIC Resource Layer • Resource ¡level ¡access ¡is ¡ OIC Resources enforced ¡at ¡the ¡Resource ¡layer ¡ Containerization (e.g. JSON) Message Protection • Device ¡level ¡access ¡is ¡enforced ¡ OIC Exchange Layer at ¡the ¡OIC ¡Exchange ¡layer ¡ Other Message Exchange ... COAP – Keys ¡reside ¡at ¡the ¡Resource ¡layer ¡ • Device ¡ownership ¡may ¡be ¡ E2E Protection (e.g. DTLS) Other E2E Protection ... derived ¡using ¡network ¡layer ¡or ¡ OIC Network Abstraction Layer other ¡hardware ¡ – May ¡be ¡vendor ¡specific! ¡ UDP/IP BLE 802.15 ... Network Layer Open ¡Source ¡Technology ¡Center ¡ 5 5
How ¡To ¡Dis+nguish ¡Intended ¡vs. ¡Unintended? ¡ • Access ¡control ¡granularity ¡has ¡four ¡scoping ¡levels ¡ – Group, ¡Device, ¡Resource ¡and ¡AVribute ¡ • OIC ¡scripts ¡specify ¡interac;on ¡paVerns ¡ – Peer-‑peer, ¡Observer, ¡Subscribe-‑no;fy, ¡etc... ¡ • Authoring ¡tools ¡are ¡privileged ¡ ¡ – They ¡specify ¡intended ¡mul;-‑device ¡interac;ons ¡ Device1 ¡ Example ¡ACL ¡ Example ¡Resources ¡ #%RAML ¡0.8 ¡ +tle: ¡OIC ¡Light ¡set ¡ OIC Server /Collec+on01: ¡ type: ¡oic.collec+on ¡ acl0 get: ¡ Device2 ¡ ¡ ¡ ¡ ¡responses: ¡ Device1 ¡ ¡ ¡ ¡ ¡ ¡ ¡applica+on/json: ¡ #%RAML ¡0.8 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡schema: ¡| ¡ ¡{ ¡"$schema": ¡"hYp://json-‑schema.org/schema", ¡ Informs /oic/Light01 +tle: ¡OIC ¡Light ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"rt": ¡{ ¡"type": ¡"string", ¡"required":true ¡}, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Read ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"if": ¡{ ¡"type": ¡"string", ¡"required":true ¡}, ¡ /Light01: ¡ type: ¡oic.light ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"resourceref": ¡{ ¡ get: ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"link": ¡{ ¡"type": ¡ ¡ ¡”URI" ¡} ¡ ¡} ¡ ¡ ¡ ¡ ¡responses: ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡applica+on/json: ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡example: ¡| ¡{ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡schema: ¡Light ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡example: ¡| ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"rt": ¡"oic.collec+on", ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡{ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"if": ¡"oic.if.b", ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡”on": ¡”True", ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"resourcelinks": ¡{ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡”href": ¡”Device2/oic/Light01", ¡ } ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡”href": ¡”Device3/oic/Light02” ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡} ¡ Open ¡Source ¡Technology ¡Center ¡ 6 6
Access ¡Control ¡Model ¡ Responding Device Local cred(s) acl(s) service(s) Resource(s) CredID DeviceID Subject(s) SubjectID SvcType Resource(s) /oic/d RoleID LocalCred Permission /oic/light/3 CredType RemoteCred Period ... PublicData Recurrence PrivateData Access Control Layer Allow Access End Point DTLS Layer Network Abstraction Layer DTLS Session Request Access Requesting Device 1 3 2 Open ¡Source ¡Technology ¡Center ¡ 7 7
Device ¡and ¡Group ¡Level ¡Access ¡ • Pair-‑wise ¡keys ¡enable ¡device ¡level ¡access ¡ – DTLS ¡ IP/UDP/CoAP Device Device Insecure ¡port=def ¡5683 Client Server Device_ID_1 ¡ Device_ID_2 ¡ Secure ¡port=def ¡5684 • Shared ¡group ¡key ¡enables ¡group ¡level ¡access ¡ • /oic/sec/cred ¡structure ¡may ¡contain ¡pairwise ¡and ¡group ¡keys ¡ – Pairwise ¡keys ¡may ¡be ¡used ¡to ¡provision ¡group ¡key ¡ ¡ – e.g. ¡dra\-‑keoh-‑tls-‑mul;cast-‑security-‑00 ¡ Open ¡Source ¡Technology ¡Center ¡ 8 8
Mediated ¡Creden+al ¡Provisioning ¡ Credential Device 1 Device 2 Provisioning Service (oic.sec.cps) ¡ 1. Discover Provisioning service (optional) 2. Open DTLS w/ oic.sec.cps PSK 3. Discover Provisioning service (optional) 6. Generate 4. Open DTLS w/ oic.sec.cps PSK keys for Devices 1 5. GET/oic/sec/cred [{“device2”:”cred2”...}] and 2 7. GET/oic/sec/cred [{“device1”:”cred1”...}] 8. POST /oic/sec/cred [{“device1”:”cred1”...}] 9. POST /oic/sec/cred [{“device2”:”cred2”...}] 10. RSP 2.01 11. RSP 2.01 Open ¡Source ¡Technology ¡Center ¡ 9 9
Ad-‑hoc ¡Pair-‑wise ¡Creden+al ¡Nego+a+on ¡ Device 1 Device 2 Device 3 Registration Service 1. Ad-hoc Discovery (optional) 2. Mediated Discovery (optional) 3. Open DTLS w/ Diffie-Hellman 4. DH session keys used as pair-wise PSK for 5. Instantiate d1.cred2; cred.type = 1 (PSK) Devices 1 and 2. 6. Instantiate d2.cred1; cred.type = 1 (PSK) 7. POST /oic/sec/cred [{“device2”:”cred2”...}] 8.Verify d1.cred2 = cred2 9. RSP 2.01 10. POST /oic/sec/cred [{“device1”:”cred1”...}] 11.Verify d2.cred1 = cred1 12. RSP 2.01 Open ¡Source ¡Technology ¡Center ¡ 10 10
ACL ¡Resource ¡ • An ¡ACL ¡is ¡a ¡resource ¡with ¡the ¡following ¡defini;on ¡ Subject Resource Permission Period Recurrence UUID ¡ URI ¡Path ¡ C,R,W,E,D ¡ Start-‑Stop ¡ Recurrence ¡ (Device ¡or ¡ Time ¡ PaVern ¡ Group), ¡Role ¡ (RFC5545) ¡ (RFC5545) ¡ • Example ¡ACL ¡policies ¡ Subject Resource Permission Period Recurrence UUID1, UUID2 /oic/sh/light/3 0h001F 19970101T180000Z/ RRULE:FREQ=WEEKL (C,R,W,E,D) 19970102T070000Z Y;UNTIL=19970131 T070000Z UUID3 /oic/d 0h0001 (R) - - oic.sec.role.admin /oic/sec/acl/0 0h001F - - Open ¡Source ¡Technology ¡Center ¡ 11 11
Recommend
More recommend