TLS 1.3 is going to save us all, and other why IoT is still insecure (2017)
blog.cloudflare.com
blog.cloudflare.com
Cctv cameras are. They are not that underpowered (they need to be streaming servers), can run tls just fine and 1.3 optimizations don’t make that much of a difference.
Cameras generaly run linaro and they absolutely can update themselves over the network. The problem is that their manufacturers (at least the chinese giants) care very little about this problem. To them running ssl and having an auto update mechanism is a risk and a cost with no return.
What we actually have is an influx of electronics engineers and programmers stepping into a networked world without knowing or caring about security. I’ve worked with them enough to see this attitude is pervasive. IT sevurity is far from their area of expertise.
Slowly making progress though. Apparently in the US 95% of users' browsing time is spent on HTTPS sites.
> TLS 1.3 is going to save us all, and other reasons why IoT is still insecure
…which is grammatically correct.
I'm running on Debian 9 and getting nginx to run TLS 1.3 took some work, nothing difficult, but when you see that many (most?) admins don't even bother to change SSH settings from the default, adding extra source lists seems impossible.
Also, we're unable to kill off TLS 1.0/1.1 because of all these people running IE...
edit: fix libssl version number as mentioned in comment below.
[1]: https://datatracker.ietf.org/doc/draft-ietf-ace-mqtt-tls-pro...
(Perhaps consider https://teserakt.io/ for the securing-MQTT part.)
Usually devices of that size will use a dedicated crypto chip to store and manipulate the keys.
Elliptic curve algorithms fit better into that RAM footprint, if you can afford to sacrifice protocol compatibility.
If you can drop the SSL/TLS requirement and fall back to authenticating and encrypting your payloads over HTTP, RC5/SHA might suffice. Hash some unique serial number on your device and use that as a key. Auth is provided with a secret key burned into your device -- but this opens up big risks if your physical device or its firmware are compromised.
You can either experiment with other TLS libraries or investigate whether a more powerful device wouldn't make your life easier.
Also apparently many "IoT" labeled devices are not actually on the internet, but are using some kindof gateway to the net. In this case you would lose end-to-end security by just using TLS to the gateway.
- Because of the TCP handshake, the difference between plain HTTP and TLS 1.2 is 2 RTTs vs 4 RTTs, not 1 vs 3.
- TLS 1.2 supports session resumption, which can bring it down from 4 RTTs to 3.
- The article's "TLS 1.3 Session Resumption" diagram is actually describing "0-RTT" resumption, which is vulnerable to replay attacks and can't be used without carefully considering semantics of the HTTP POST request. (https://blog.cloudflare.com/introducing-0-rtt/#whatsthecatch)
TLS 1.3 is still better in a bunch of ways, but there's no need to be misleading.
But you can get rid of the extra RTT for a resumption on TCP in two ways. Firstly Systems can agree to do "Fast open". https://en.wikipedia.org/wiki/TCP_Fast_Open
Secondly you can get rid of TCP from your TLS stack, by integrating the TLS layer into your connection-oriented protocol, which is what the IETF QUIC does/ will do. Then your connection setup can (again pending DDOS mitigation if appropriate) be zero round trip.
So the end result is that in practice TLS 1.2 can be brought down to 1-RTT for second and subsequent connections (TCP Fast Open + TLS resumption + TLS False Start) and TLS 1.3 can match that for all connections, and beat it with 0-RTT for resumptions that meet extra security criteria.
TLS session resumption does have a bunch of privacy implications, which are worse in TLS 1.2 and earlier but still present in TLS 1.3, and so privacy-focused clients might choose either to sharply limit resumption (e.g. only use it for connections that happen in the 15 seconds after the original connection) or get rid of it altogether. If you don't do resumption for this reason, TLS 1.3 beats TLS 1.2 because the no-resumption case is less round trips.
this is not the case, at my last job i used the EMQ broker with paho MQTT c++ on the devices using TLS.