So if I understand correctly, they used hard coded constants to generate keys that only have 44 bits of entropy, which is brute forcible for $10, but you have to do it per device. They presumably did this to make pairing the bridge and sensor easier while not using a static key for all devices. Not the worst compromise I guess.
I've been working on an open source solution on and off for a number of years called http://y-drip.com. It uses Wi-Fi so battery life is only a few months and range is limited. My next design is probably going to use LoRa, but this complicates things a lot because now I have two devices (bridge and sensor) that need to be paired, support over-the-air updates, etc.
What's the best way to have them share keys without adding expensive hardware like Bluetooth or NFC. The sensor also needs to be waterproof so there's no exposed ports. Increasing from 44 bits to 128 would help, but if the key generation is done over the air it can be sniffed right?
> is probably going to use LoRa
why not Zigbee or Thread?
I think most ZigBee and Thread chips use 2.4 GHz which limits distance. A lot of water meters are underground on the front yard somewhere so sub gigahertz radio would penetrate better. The modulation scheme of LoRa also allows for greater distance at the cost of data rate. It's also super low power.
> I reached out to Flume. They were very responsive, and their CTO shared an overview of their already-in-progress plans to further improve the product’s privacy and security.
Read: There will be a firmware update that further "secures" the device from owners who would like to use it without the "cloud" and the "app".
We need a law that makes such iot devices local capable, or maybe a rs485/rs233 like interface like in solar panels
It didn't really factor into the break here but, it's amazing people still use ECB even though the famous penguin image is well over a decade old now.
i feel like it doesnt matter how secure the rf transport is, if ultimately ur data gets uploaded to a corporate cloud, and the only way to access it is through some shady cloud app
its a nice experiment, but i wouldnt say the security is good...
good security would havr everything documented with sourcecode,user generated keys, and a opensource server/client, whose code can be examined fully
Interesting timing, I have spent the last week with Claude reverse engineering the on-air protocol and I'm getting pretty close to building a secondary "listener" receiver that will collect measurements from my bridge + sensor pair locally.
To Flume's credit, it required me to dump the firmware from the bridge device's ESP8266 in order to extract my key. I didn't consider an approach like this article took, given I have direct access to the HW and there's no flash protection on the 8266.
If you document this somewhere I'd love to read about it! I took the approach of sniffing the packets between the radio and mcu on the bridge board, got most of the way into reverse engineering that, then helped build this instead:
https://github.com/tronikos/esphome-magnetometer-water-gas-m...
But I always wanted to finish pulling flume data to home assistant, without the cloud.
Flume seems like a great company and product. They have always been really responsive when I contacted them.
My meter gets submerged in water from time to time, so I was sure to seal it with silicon grease and tape.
As usual, the weak point is key generation and management.
One thing I appreciate about this kind of research is that it doesn't assume every wireless protocol must end with a catastrophic vulnerability.
A result of "the security is actually pretty good" is arguably just as valuable as finding a critical flaw. It helps distinguish between systems that are merely proprietary and those that were designed with a reasonable threat model in mind.
I'd be interested to know where the remaining weaknesses lie. Are they primarily in the RF protocol itself, key management, device provisioning, or the surrounding cloud infrastructure? In many IoT systems, the radio protocol ends up being the strongest component while the weakest link is somewhere else entirely.
44 bits of security is not “pretty good”. The post author used Python, but anything more performant would result almost real-time decryption.
There are no performance implications of using a proper 128 key because they are doing AES anyway. If they were resource constrained and choose a variant of TEA encryption due to constraints, it would be understandable, but no, the encryption is implemented in hardware.
There also seems there is no message authentication, a rookie mistake.
44 bits is horrible obviously, but maybe it's fine for this use case?
The attack vector is: an adversary can get close to your water meter and after brute forcing the key, wirelessly read the numbers they could have just physically looked at the water meter to read anyway.
Meanwhile the device owner can decrypt the signal and locally get access to their own data without being tied to the cloud or a proprietary vendor app. I think that's a win.
Lack of the authentication means an adversary can feed any data to the receiver.
Local data access is a win, I agree
>44 bits of security is not “pretty good”.
Hey, that's 4 bits stronger encryption than DVDs, and it's only like 30 years later to get those additional 4 bits
I have encountered a particular radio bridge type device that by default uses the CSS key as its encryption key to hide its messages from the inquisitive user with an RTLSDR.
I feel like there was some sort of Heated Discussion over whether or not the OTA traffic should be encrypted to enhance shareholder value or not, and someone took the chaotic good route.
> the security is actually pretty good
I had a slightly different read.. their CTO replied directly and in an affirmative manner. It's amazing how the human touch helps align and build understanding. How many of these have you read where it's just a scathing product teardown devoid of any appreciation for any work that's otherwise been put in.