securing the internet of things

49
Securing the Internet of Things Paul Fremantle CTO, WSO2 ([email protected] ) PhD researcher, Portsmouth University ([email protected] ) @pzfreo Paul Madsen* Technical Architect, PingIdentity ([email protected] ) @paulmadsen *Paul M helped me with the initial content, but I take responsibility for anything you don’t like in this slide deck.

Upload: paul-fremantle

Post on 06-May-2015

3.733 views

Category:

Technology


1 download

DESCRIPTION

A talk given at the EclipseCon 2014 M2M day. This deck addresses a number of aspects of security for IoT devices and applications and also looks at using federated identity for IoT including MQTT

TRANSCRIPT

Page 1: Securing the Internet of Things

Securing the Internet of Things

Paul FremantleCTO, WSO2 ([email protected])

PhD researcher, Portsmouth University([email protected])

@pzfreo

Paul Madsen*Technical Architect, PingIdentity([email protected])

@paulmadsen

*Paul M helped me with the initial content, but I take responsibility for anything you don’t like in this slide deck.

Page 2: Securing the Internet of Things
Page 3: Securing the Internet of Things

About me• CTO and Co-Founder

WSO2– Open Source Middleware

platform• Part-time PhD looking at

security• Working in Apache for 14

years• Working with Cloud,

SOA, APIs, MQTT, IoT3

Page 4: Securing the Internet of Things

Firstly, does it matter?

Page 5: Securing the Internet of Things
Page 6: Securing the Internet of Things
Page 7: Securing the Internet of Things

“Google Hacking”

Page 8: Securing the Internet of Things

http://www.forbes.com/sites/kashmirhill/2013/07/26/smart-homes-hack/

Page 9: Securing the Internet of Things
Page 10: Securing the Internet of Things

http://freo.me/1pbUmof

Page 11: Securing the Internet of Things

So what is different about IoT?

• The longevity of the device– Updates are harder (or impossible)

• The size of the device– Capabilities are limited – especially around crypto

• The fact there is a device– Usually no UI for entering userids and passwords

• The data– Often highly personal

• The mindset– Appliance manufacturers don’t think like security experts– Embedded systems are often developed by grabbing existing chips,

designs, etc

Page 12: Securing the Internet of Things

Physical Hacks

A Practical Attack on the MIFARE Classic: http://www.cs.ru.nl/~flaviog/publications/Attack.MIFARE.pdf Karsten Nohl and Henryk Plotz. MIFARE, Little Security, Despite Obscurity

Page 13: Securing the Internet of Things
Page 14: Securing the Internet of Things

Or try this at home?http://freo.me/1g15BiG

Page 16: Securing the Internet of Things

Hardware recommendations

• Don’t rely on obscurity

Page 17: Securing the Internet of Things

Hardware recommendations

• Don’t rely on obscurity• Don’t rely on obscurity• Don’t rely on obscurity• Don’t rely on obscurity• Don’t rely on obscurity• Don’t rely on obscurity• Don’t rely on obscurity

Page 18: Securing the Internet of Things

Hardware Recommendation #2

• Unlocking a single device should risk only that device’s data

Page 19: Securing the Internet of Things

The Network

Page 20: Securing the Internet of Things

Crypto on small devices

• Practical Considerations and Implementation Experiences in Securing Smart Object Networks– http://tools.ietf.org/html/draft-aks-crypto-sensors-02

Page 21: Securing the Internet of Things

ROM requirements

Page 22: Securing the Internet of Things

ECC is possible (and about fast enough)

Page 23: Securing the Internet of Things
Page 24: Securing the Internet of Things

Crypto

Borrowed from Chris Swan: http://www.slideshare.net/cpswan/security-protocols-in-constrained-environments/13

Page 25: Securing the Internet of Things

Won’t ARM just solve this problem?

Page 26: Securing the Internet of Things

Cost matters

8 bits$5 retail$1 or less to embed

32 bits$25 retail$?? to embed

Page 27: Securing the Internet of Things

Another option?

Page 28: Securing the Internet of Things

SIMON and SPECK

https://www.schneier.com/blog/archives/2013/07/simon_and_speck.html

Page 29: Securing the Internet of Things

Datagram Transport Layer Security(DTLS)

• UDP based equivalent to TLS• https://tools.ietf.org/html/rfc4347

Page 30: Securing the Internet of Things

Key distribution

Page 31: Securing the Internet of Things
Page 32: Securing the Internet of Things

CoAP

• Constrained Application Protocol– http://tools.ietf.org/html/draft-ietf-core-coap-18 – REST-like model built on UDP– Californium project coming soon to Eclipse IoT

• No authentication or authorization– Relies on DLTS or data in the body

Page 33: Securing the Internet of Things

MQTT

Page 34: Securing the Internet of Things

MQTT

• Very lightweight messaging protocol– Designed for 8-bit controllers, SCADA, etc– Low power, low bandwidth– Binary header of 2 bytes– Lots of implementations

• Mosquitto, Paho, RSMB and Moquette from Eclipse

– Clients:• Arduino, Perl, Python, PHP, C, Java, JS/Node.js, .Net, etc

• Plus an even lighter-weight version for Zigbee– MQTT-SN (Sensor Network)

Page 35: Securing the Internet of Things

MQTT

• Relies on TLS for confidentiality• Username/Password field

Page 36: Securing the Internet of Things

Passwords

• Passwords suck for humans• They suck even more for devices

Page 37: Securing the Internet of Things

Tokens

Page 38: Securing the Internet of Things
Page 39: Securing the Internet of Things

Why OAuth2?

• Widely implemented• Pretty good – Of course there is never 100% agreement– Or certainty with security protocols

• Not just HTTP:– http://tools.ietf.org/html/draft-ietf-kitten-sasl-oau

th-12

– OAuth2 used with SSL

Page 40: Securing the Internet of Things
Page 41: Securing the Internet of Things
Page 42: Securing the Internet of Things

Why FIAM for IoT?

• Can enable a meaningful consent mechanism for sharing of device data

• Giving a device a token to use on API calls better than giving it a password– Revokable– Granular

• May be relevant for both– Device to cloud– Cloud to app

Page 43: Securing the Internet of Things

Two aspects using OAuth with IoT

• On the device– Tokens are good– Limiting the access of the device

• On the cloud– Putting users in control of their data– Just good current practice

• Demo with MQTT – But not just for MQTT– Also for the cloud, CoAP, and other protocols too

Page 44: Securing the Internet of Things

Demo components

Mosquitto(Open Source MQTT

Broker)

Acting as “Resource Server”

Mosquitto_py_auth

mqtt-oauth2.py

IdP

WSO2 Identity Server

ESBIntrospection

API

Refresher.py

Arduino

CreateToken.py1

2

3

4

5

6

Page 45: Securing the Internet of Things

WSO2 Identity Server

Page 46: Securing the Internet of Things

Lessons learnt

• MQTT and MPU / I2C code is 97% of Duemilanove– Adding the final logic to do OAuth2 flow pushed it to 99%– No TLS in this demo is a big issue

• Different Oauth2 implementations behave differently (e.g. changing the refresh token every time you refresh)

• Need to be able to update the scope of token if this will work for long term embedded devices

• The refresh flow should not really go via the Resource server– Easy fix

• MQTT should have a well defined model for sending a message to just one client (securely)

Page 47: Securing the Internet of Things

What I haven’t covered enough of

Page 48: Securing the Internet of Things

Summary

• Think about security with your next device• We as a community need to make sure that

the next generation of IoT devices are secure• We need to create exemplars– Shields– Libraries– Server software– Standards

Page 49: Securing the Internet of Things

Questions?