Device connectivity
Device connectivity: a broad topic to consider early in the design process
They impact both the hardware and the software sides which must be co-constructed in a tight feedback loop. Therefore, a series of criteria must be reviewed at each stage of the build flow to ensure that the behavior of the product will correspond to the intended usage.
main decisions to make when it comes to device connectivity
Localization
Contexts of use
Security concerns
SUCCESS STORY
Ensuring Velan's Industrial Valve Connectivity
- A custom-built, Windows IoT platform to migrate data from the sensors to a data lake.
- A web application with an intuitive GUI.
- Security advice for data transfers, cloud connectivity and more.
Strengths and weaknesses of communication protocols
The OSI network model is well known to engineers, but its onion shape structure where each upper layer depends on some guarantees offered by the lower layer makes it non trivial to master holistically. Various profiles of developers have expertise around separate concerns, but in the end everything has to work reliably, top to bottom.
For example, embedded developers have strong opinions on the data and link layers which are closer to the metal. During the design process of a product they work with the hardware teams and must be able to understand their constraints and conclusions, even sometimes positively influence them.
Application and cloud developers rely on this initial set of physical decisions to confront them with business needs and the way the data has to be expose to the end user. Let’s go through a non exhaustive list of technical solutions on the table when device connectivity is at stake.
Long distance transport
Proximity solutions
Mid-range coverage
TCP/UDP/IP
HTTP
MQTT
TLS
Security facets of device connectivity
Data integrity
Communication authenticity
Like a human browsing the web would trusts their bank website presenting a legit certificate, devices also have to trust the server acting as their partner during a communication. Load balancers, servers or brokers have the same needs: they should only establish connection with devices which identity has been verified. In simple scenario, or during the development stage a shared secret can be the way to go. But soon enough, a more robust solution has to be put in place. Client certificate, often following the X.509 specification, must be presented by the devices. It means that a private key is involved. It must be protected at all cost, which involves the presence of a Trusted Platform Module or Hardware Security Module which acts as an impenetrable vault.
To setup this chain of trust between parties, a public key infrastructure has to exist which requires both technical and organizational expertise. The happy path, when everything goes well can be put in place with moderate efforts. But many aspects need to have answers too: what happens when the certificate of a device expire? What happen in case of compromision? What if the private key of the authority leaks?
In any case, a trivial but often forgotten rule has to be followed to the letter: never roll our own cryptographic primitives! It is way too easy to shot ourselves in the foot with silly mistakes by trying to reinvent the wheel. Battle-tested cipher suites exist, must be used when relevant and deprecated when no longer secure enough.
Beyond the network layer, the same questions can still be asked for the micro-services part of the IoT Platform itself. Even if the ingestion point is in charge of the encryption termination with the device, data can still transit in the various queues and pipelines in a secure manner.