Skip to content

Commit 233a2f7

Browse files
committed
added new tutorial to security hardware
1 parent d6ee614 commit 233a2f7

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed
Loading
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
---
2+
title: 'Security Considerations for Hardware Products'
3+
description: 'Learn how Arduino ensures the security of the software and network connectivity in hardware products in this security overview document.'
4+
tags:
5+
- security
6+
- hardware
7+
author: 'Arduino Security Team'
8+
---
9+
10+
At Arduino, we place paramount importance on security when it comes to building the hardware and firmware for our physical products. Our comprehensive platform encompasses everything from hardware and firmware to development tools and cloud services. This article delves into the different facets of security concerns and outlines our approach to addressing them at each layer of our ecosystem.
11+
12+
![](assets/user-custom-code.png)
13+
14+
## Security of hardware boards with microcontrollers
15+
16+
Several Arduino boards are based on a microcontroller (or MCU) architecture, and when connectivity options are provided by the board, there is usually a secondary chip taking care of connectivity aspects (e.g. Bluetooth® or Wi-Fi®).
17+
18+
In general, based on the different types of board, the following features might be provided:
19+
20+
* TLS encryption, which can be used to provide confidentiality of the information transmitted over the network
21+
* storage of security keys and credentials using a dedicated Secure Element. This feature is available on various boards for Maker and Education purposes, and on all boards for Professional usage (e.g. Portenta series). Detailed information about the presence and type of Secure Element are provided within technical specifications of each board. The secure element is always abstracted by the libraries so it can be used seamlessly for trusted boot, for mutual authentication or for secure storage, depending on the customer’s needs.
22+
23+
The specific TLS implementation depends on the type of connectivity chip and in particular:
24+
25+
* Boards equipped with a u-blox® NINA and Secure Element use the following strategy:
26+
* TLS mutual authentication is handled via hardware using the connectivity chip
27+
* keys are stored in the Secure Element
28+
* TLS encryption is handled by firmware running on the u-blox NINA chip
29+
* Boards with Secure Element that do not use u-blox NINA connectivity use the following strategy:
30+
* TLS mutual authentication is handled via hardware using the Secure Element
31+
keys are stored in the Secure Element
32+
TLS encryption via software implementation running on primary MCU
33+
* Boards without embedded connectivity chip or without Secure Element
34+
* perform TLS encryption on the primary MCU
35+
* Authentication is performed using user/secret credentials that can be either provided in the user application firmware as hardcoded, or stored on local storage (such as flash memory)
36+
37+
Depending on the type of application and the security level required, the user is advised to verify the above features when adopting a specific platform or board.
38+
39+
## Security of hardware boards with microprocessor
40+
41+
Some Arduino boards also come with a full microprocessor (or CPU) providing a much larger attack surface as they are capable of running a full fledged Linux® operating system.
42+
Arduino has a joint offer with Foundries.io to provide a secure software stack that can run on these new types of boards. This offer ensure that all supported boards are provided with:
43+
44+
* Remote patching, based on The Update Framework for over-the-air (OTA) updates;
45+
* Remote update of container applications within OTA updates;
46+
* Mutual TLS connectivity between boards and the Cloud;
47+
* Dual OS: Non-Secure-By-Definition Linux OS runs alongside OP-TEE OS that handles sensitive data in a TEE (Trusted Execution Environment) for handling Secure Element operations;
48+
* Signed firmware binaries: kernel modules and device tree blob signatures are verified during boot
49+
* Rootfs is handled with OSTREE, this way is possible for the system to detect immediately unwanted rootfs modifications due to hw failures or as a result of an intrusion;
50+
* Secure Boot Firmware
51+
52+
For more information about security features provided by Foundries.io please visit https://docs.foundries.io/latest/reference-manual/security/security.html#overview.
53+
54+
For more information about the software stack provided by Foundries.io please visit https://foundries.io/products/software-stack/.
55+
56+
## Security of the firmware layer
57+
58+
Arduino follows the **Secure by Design** principle in every stage of the software development and the **Security Principles** listed below are followed during the secure development lifecycle:
59+
60+
* **Defense in Depth**: Layered security mechanisms are in place to increase security as a whole; in particular, in some of the professional products, MCUboot toolkit and signed/encrypted update packages are available to the user in order to increase security by providing secure boot
61+
* **Positive Security Model**: A ‘positive’ security model defines what is allowed and rejects everything else.
62+
* **Least Privileges**: The principle of least privilege is required to perform every business process.
63+
* **Avoid Security through Obscurity**: Security through obscurity alone is a weak security mechanism, however when combined with all principles it can be used as an additional layer of security.
64+
* **Keep Security Simple**: Keeping the application’s security simple is a better option than having complex designs.
65+
* **Assuming compromise**: The assuming compromise principle is useful to improve the detection and response capabilities in order to predict and remediate the security events before they evolve into security incidents.
66+
* **Keep people away from data**: Usage of mechanisms, patterns and tools to reduce or eliminate the need for direct data access or manual processing data with the aim of reducing the risk of mishandling or modification and human error when handling sensitive data.
67+
68+
As part of the security activities, Arduino periodically performs **Secure Code Review (SCR)** and **Secure Component Analysis (SCA)** on any Core and library explicitly marked as being officially developed by Arduino.
69+
70+
## Shared responsibility model
71+
72+
To ensure the highest level of confidentiality, integrity and availability, Arduino operates under a shared security responsibility model. The shared security responsibility model identifies the distinct security responsibilities of the customer and Arduino. In this model:
73+
74+
* **Arduino** is responsible for the security of the libraries and code distributed with the hardware boards. Secure Code Review and third parties security audit might be conducted to further ensure that Arduino cores and libraries are free from security risks. Furthermore, Arduino is responsible for selecting state-of-the-art hardware to ensure the highest possible level of protection against tampering of security related components mounted on the boards.
75+
* **Customers** are responsible to ensure the security of the final product they build with Arduino’s boards. Arduino recommends to pay particular attention to the following best practices:
76+
* **Secure Code Review**: custom source code developed by the customer and running as device firmware should be reviewed from a security standpoint before running in production on boards to limit the possibility of security risks.
77+
* **Secure Component Analysis**: custom source code might contain external dependencies to third party libraries that might introduce vulnerabilities. The customer is responsible for making sure that any external third party library is safe to be used.
78+
* **Penetration Testing**: customers are responsible for testing the overall security of the final product developed using Arduino hardware and software.
79+
* **Network security**: ensure adequate segregation of boards to reduce network attack surface from remote attackers.
80+
* **Physical protection**: boards should be placed in areas to ensure that unauthorized people cannot tamper with the hardware.
81+
82+
83+
84+
85+

0 commit comments

Comments
 (0)