| .. _etsi_303645: |
| |
| ETSI 303-645 |
| ############ |
| |
| |
| **ETSI EN 303 645**, also known as "Cyber Security for Consumer Internet |
| of Things: Baseline Requirements," is a standard developed by the |
| European Telecommunications Standards Institute (ETSI). |
| |
| The standard includes provisions for secure software updates, data |
| protection, secure communication, and the minimization of exposed |
| attack surfaces, among other things. It is part of a broader effort to |
| address the challenges and risks associated with IoT devices. |
| |
| Full version of the standard can be found `here <https://www.etsi.org/deliver/etsi_en/303600_303699/303645/02.01.01_60/en_303645v020101p.pdf>`_. |
| |
| |
| Terminology |
| *********** |
| |
| .. list-table:: ETSI 303645 terminology |
| :widths: 17 43 |
| |
| * - administrator |
| - user who has the highest-privilege level possible for a user of the device, |
| which can mean they are able to change any configuration related to the intended |
| functionality. |
| |
| * - associated services |
| - digital services that, together with the device, are part of the overall consumer |
| IoT product and that are typically required to provide the product's intended |
| functionality. |
| |
| * - authentication mechanism |
| - method used to prove the authenticity of an entity. |
| |
| * - authentication value |
| - individual value of an attribute used by an authentication mechanism. |
| |
| * - best practice cryptography |
| - cryptography that is suitable for the corresponding use case and has no |
| indications of a feasible attack with current readily available techniques. |
| |
| * - constrained device |
| - device which has physical limitations in either the ability to process data, the |
| ability to communicate data, the ability to store data or the ability to interact |
| with the user, due to restrictions that arise from its intended use. |
| |
| * - consumer |
| - natural person who is acting for purposes that are outside her/his trade, |
| business, craft or profession. |
| |
| * - consumer IoT device |
| - network-connected (and network-connectable) device that has relationships to |
| associated services and are used by the consumer typically in the home or as |
| electronic wearables. |
| |
| * - critical security parameter |
| - security-related secret information whose disclosure or modification can compromise |
| the security of a security module. |
| |
| * - debug interface |
| - physical interface used by the manufacturer to communicate with the device during |
| development or to perform triage of issues with the device and that is not used as part |
| of the consumer-facing functionality |
| |
| * - defined support period |
| - minimum length of time, expressed as a period or by an end-date, for which a |
| manufacturer will provide security updates. |
| |
| * - device manufacturer |
| - entity that creates an assembled final consumer IoT product, which is likely to contain |
| the products and components of many other suppliers. |
| |
| * - factory default |
| - state of the device after factory reset or after final production/assembly. |
| |
| * - initialization |
| - process that activates the network connectivity of the device for operation and |
| optionally sets authentication features for a user or for network access. |
| |
| * - initialized state |
| - state of the device after initialization. |
| |
| * - IoT product |
| - consumer IoT device and its associated services. |
| |
| * - isolable |
| - able to be removed from the network it is connected to, where any functionality loss |
| caused is related only to that connectivity and not to its main function; alternatively, |
| able to be placed in a self-contained environment with other devices if and only if the |
| integrity of devices within that environment can be ensured |
| |
| * - logical interface |
| - software implementation that utilizes a network interface to communicate over the network |
| via channels or ports. |
| |
| * - manufacturer |
| - relevant economic operator in the supply chain (including the device manufacturer). |
| |
| * - network interface |
| - physical interface that can be used to access the functionality of consumer IoT via a network. |
| |
| * - owner |
| - user who owns or who purchased the device. |
| |
| * - personal data |
| - Any information relating to an identified or identifiable natural person. |
| |
| * - physical interface |
| - physical port or air interface (such as radio, audio or optical) used to communicate with the |
| device at the physical layer. |
| |
| * - public security parameter |
| - security related public information whose modification can compromise the security of a |
| security module. |
| |
| * - remotely accessible |
| - intended to be accessible from outside the local network. |
| |
| * - security module |
| - set of hardware, software, and/or firmware that implements security functions. |
| |
| * - security update |
| - software update that addresses security vulnerabilities either discovered by or reported |
| to the manufacturer. |
| |
| * - sensitive security parameters |
| - critical security parameters and public security parameters. |
| |
| * - software service |
| - software component of a device that is used to support functionality. |
| |
| * - telemetry |
| - data from a device that can provide information to help the manufacturer identify issues |
| or information related to device usage. |
| |
| * - unique per device |
| - unique for each individual device of a given product class or type. |
| |
| * - user |
| - natural person or organization. |
| |
| Provisions Assessment |
| ********************* |
| |
| The following table is a self-assessment using Table B.1 from ETSI EN |
| 303 645, specifically focusing on the Zephyr RTOS as a component |
| within IoT products. |
| |
| According with ETSI 303 645, table B.1 provides a mechanism to give information |
| about the implementation of the provisions presented in the standard. Zephyr has |
| adopted the following notations used in the standard: |
| |
| .. list-table:: ETSI 303645 Table B.1 notations |
| :widths: 17 43 |
| |
| * - M |
| - the provision is a mandatory requirement |
| |
| * - R |
| - the provision is a recommendation |
| |
| * - M C |
| - the provision is a mandatory requirement and conditional |
| |
| * - R C |
| - the provision is a recommendation and conditional |
| |
| * - Y |
| - The provision is supported by Zephyr |
| |
| * - N |
| - The provision is not supported by Zephyr |
| |
| * - N/A |
| - The provision is not applicable to Zephyr or it is product makers responsibility |
| |
| .. raw:: latex |
| |
| \begin{landscape} |
| |
| .. list-table:: ETSI 303645 provisions assessment using table B.1 |
| :header-rows: 1 |
| :widths: 25 80 15 15 60 |
| |
| * - Provision |
| - Description |
| - Status |
| - Support |
| - Detail |
| |
| .. _ETSI_Provision_5_1_1: |
| * - Provision 5.1-1 |
| - Where passwords are used and in any state other than the |
| factory default, all consumer IoT device passwords shall be |
| unique per device or defined by the user. |
| - M C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_1_2: |
| * - Provision 5.1-2 |
| - Where pre-installed unique per device passwords are used, |
| these shall be generated with a mechanism that reduces the |
| risk of automated attacks against a class or type of device. |
| - M C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_1_3: |
| * - Provision 5.1-3 |
| - Authentication mechanisms used to authenticate users against a |
| device shall use best practice cryptography, appropriate to |
| the properties of the technology, risk and usage. |
| - M |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_1_4: |
| * - Provision 5.1-4 |
| - Where a user can authenticate against a device, the device |
| shall provide to the user or an administrator a simple |
| mechanism to change the authentication value used. |
| - M C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_1_5: |
| * - Provision 5.1-5 |
| - When the device is not a constrained device, it shall have a |
| mechanism available which makes brute-force attacks on |
| authentication mechanisms via network interfaces |
| impracticable. |
| - M C |
| - N |
| - **TODO** |
| |
| .. _ETSI_Provision_5_2_1: |
| * - Provision 5.2-1 |
| - The manufacture shall make a vulnerability disclosure policy publicly |
| available. |
| - M |
| - Y |
| - :ref:`Vulnerability Management <reporting>` |
| |
| .. _ETSI_Provision_5_2_2: |
| * - Provision 5.2-2 |
| - Disclosed vulnerabilities should be acted on in a timely manner. |
| - R |
| - Y |
| - :ref:`Vulnerability Timeline <vulnerability_timeline>` |
| |
| .. _ETSI_Provision_5_2_3: |
| * - Provision 5.2-3 |
| - Manufacturers should continually monitor for, identify and rectify security |
| vulnerabilities within products and services they sell, produce, have produced |
| and services they operate during the defined support period. |
| - R |
| - Y |
| - `Modules <https://github.com/zephyrproject-rtos/>`_ are covered |
| |
| .. _ETSI_Provision_5_3_1: |
| * - Provision 5.3-1 |
| - All software components in consumer IoT devices should be securely updatable. |
| - R |
| - Y |
| - :ref:`Device firwmware upgrade <dfu>` |
| |
| .. _ETSI_Provision_5_3_2: |
| * - Provision 5.3-2 |
| - When the device is not a constrained device, it shall have an update mechanism |
| for the secure installation of updates. |
| - M C |
| - Y |
| - :ref:`Device firwmware upgrade <dfu>` |
| |
| .. _ETSI_Provision_5_3_3: |
| * - Provision 5.3-3 |
| - An update shall be simple for the user to apply. |
| - M C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_3_4: |
| * - Provision 5.3-4 |
| - Automatic mechanisms should be used for software updates. |
| - R C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_3_5: |
| * - Provision 5.3-5 |
| - The device should check after initialization, and then periodically, whether |
| security updates are available. |
| - R C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_3_6: |
| * - Provision 5.3-6 |
| - If the device supports automatic updates and/or update notifications, these |
| should be enabled in the initialized state and configurable so that the user |
| can enable, disable, or postpone installation of security updates and/or |
| update notifications. |
| - R C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_3_7: |
| * - Provision 5.3-7 |
| - The device shall use best practice cryptography to facilitate secure update mechanisms. |
| - M C |
| - Y |
| - :ref:`West Sign <west-sign>` |
| |
| .. _ETSI_Provision_5_3_8: |
| * - Provision 5.3-8 |
| - Security updates shall be timely. |
| - M C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_3_9: |
| * - Provision 5.3-9 |
| - The device should verify the authenticity and integrity of software updates. |
| - R C |
| - Y |
| - Functionality provided by `MCUboot <https://github.com/zephyrproject-rtos/mcuboot>`_. |
| Also see :ref:`Device Firwmware Upgrade <dfu>`. |
| |
| .. _ETSI_Provision_5_3_10: |
| * - Provision 5.3-10 |
| - Where updates are delivered over a network interface, the device shall verify |
| the authenticity and integrity of each update via a trust relationship. |
| - M |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_3_11: |
| * - Provision 5.3-11 |
| - The manufacturer should inform the user in a recognizable and apparent manner |
| that a security update is required together with information on the risks |
| mitigated by that update. |
| - R C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_3_12: |
| * - Provision 5.3-12 |
| - The device should notify the user when the application of a software update |
| will disrupt the basic functioning of the device. |
| - R C |
| - N/A |
| - Zephyr provides this information for its updates. Anyone using Zephyr in their products must check if they are affected |
| |
| .. _ETSI_Provision_5_3_13: |
| * - Provision 5.3-13 |
| - The manufacturer shall publish, in an accessible way that is clear and |
| transparent to the user, the defined support period. |
| - M |
| - Y |
| - :ref:`Release Life Cycle and Maintenance <zephyr_release_cycle>` |
| |
| .. _ETSI_Provision_5_3_14: |
| * - Provision 5.3-14 |
| - For constrained devices that cannot have their software updated, the rationale |
| for the absence of software updates, the period and method of hardware replacement |
| support and a defined support period should be published by the manufacturer in an |
| accessible way that is clear and transparent to the user. |
| - R C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_3_15: |
| * - Provision 5.3-15 |
| - For constrained devices that cannot have their software updated, the product |
| should be isolable and the hardware replaceable. |
| - R C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_3_16: |
| * - Provision 5.3-16 |
| - The model designation of the consumer IoT device shall be clearly recognizable, |
| either by labelling on the device or via a physical interface. |
| - M |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_4_1: |
| * - Provision 5.4-1 |
| - Sensitive security parameters in persistent storage shall be stored securely by the device. |
| - M |
| - N |
| - There is not secure storage within Zephyr |
| |
| .. _ETSI_Provision_5_4_2: |
| * - Provision 5.4-2 |
| - Where a hard-coded unique per device identity is used in a device for security purposes, |
| it shall be implemented in such a way that it resists tampering by means such as physical, |
| electrical or software. |
| - M C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_4_3: |
| * - Provision 5.4-3 |
| - Hard-coded critical security parameters in device software source code shall not be used. |
| - M |
| - Y |
| - :ref:`Hardening Tool <hardening>` |
| |
| .. _ETSI_Provision_5_4_4: |
| * - Provision 5.4-4 |
| - Any critical security parameters used for integrity and authenticity checks of software |
| updates and for protection of communication with associated services in device software |
| shall be unique per device and shall be produced with a mechanism that reduces the risk |
| of automated attacks against classes of devices. |
| - M |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_5_1: |
| * - Provision 5.5-1 |
| - The consumer IoT device shall use best practice cryptography to communicate securely. |
| - M |
| - Y |
| - |
| |
| .. _ETSI_Provision_5_5_2: |
| * - Provision 5.5-2 |
| - The consumer IoT device should use reviewed or evaluated implementations to deliver |
| network and security functionalities, particularly in the field of cryptography. |
| - R |
| - Y |
| - |
| |
| .. _ETSI_Provision_5_5_3: |
| * - Provision 5.5-3 |
| - Cryptographic algorithms and primitives should be updatable. |
| - R |
| - N |
| - The whole image must be updated |
| |
| .. _ETSI_Provision_5_5_4: |
| * - Provision 5.5-4 |
| - Access to device functionality via a network interface in the initialized state should |
| only be possible after authentication on that interface. |
| - R |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_5_5: |
| * - Provision 5.5-5 |
| - Device functionality that allows security-relevant changes in configuration via a |
| network interface shall only be accessible after authentication. The exception is for |
| network service protocols that are relied upon by the device and where the manufacturer |
| cannot guarantee what configuration will be required for the device to operate. |
| - M |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_5_6: |
| * - Provision 5.5-6 |
| - Critical security parameters should be encrypted in transit, with such encryption |
| appropriate to the properties of the technology, risk and usage. |
| - R |
| - Y |
| - |
| |
| .. _ETSI_Provision_5_5_7: |
| * - Provision 5.5-7 |
| - The consumer IoT device shall protect the confidentiality of critical security |
| parameters that are communicated via remotely accessible network interfaces. |
| - M |
| - Y |
| - |
| |
| .. _ETSI_Provision_5_5_8: |
| * - Provision 5.5-8 |
| - The manufacturer shall follow secure management processes for critical security |
| parameters that relate to the device. |
| - M |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_6_1: |
| * - Provision 5.6-1 |
| - All unused network and logical interfaces shall be disabled. |
| - M |
| - Y |
| - :ref:`Kconfig <kconfig>` |
| |
| .. _ETSI_Provision_5_6_2: |
| * - Provision 5.6-2 |
| - In the initialized state, the network interfaces of the device shall minimize the |
| unauthenticated disclosure of security-relevant information. |
| - M |
| - Y |
| - |
| |
| .. _ETSI_Provision_5_6_3: |
| * - Provision 5.6-3 |
| - Device hardware should not unnecessarily expose physical interfaces to attack. |
| - R |
| - Y |
| - :ref:`Kconfig <kconfig>` and :ref:`Hardening Tool <hardening>` |
| |
| .. _ETSI_Provision_5_6_4: |
| * - Provision 5.6-4 |
| - Where a debug interface is physically accessible, it shall be disabled in software. |
| - M C |
| - Y |
| - :ref:`Hardening Tool <hardening>` |
| |
| .. _ETSI_Provision_5_6_5: |
| * - Provision 5.6-5 |
| - The manufacturer should only enable software services that are used or required for |
| the intended use or operation of the device. |
| - R |
| - Y |
| - :ref:`Kconfig <kconfig>` and :ref:`Hardening Tool <hardening>` |
| |
| .. _ETSI_Provision_5_6_6: |
| * - Provision 5.6-6 |
| - Code should be minimized to the functionality necessary for the service/device to operate. |
| - R |
| - Y |
| - :ref:`Kconfig <kconfig>` |
| |
| .. _ETSI_Provision_5_6_7: |
| * - Provision 5.6-7 |
| - Software should run with least necessary privileges, taking account of both security |
| and functionality. |
| - R |
| - Y |
| - :ref:`Security Overview <security-overview>` |
| |
| .. _ETSI_Provision_5_6_8: |
| * - Provision 5.6-8 |
| - The device should include a hardware-level access control mechanism for memory. |
| - R |
| - Y |
| - :ref:`Memory protection <memory_domain>` |
| |
| .. _ETSI_Provision_5_6_9: |
| * - Provision 5.6-9 |
| - The manufacturer should follow secure development processes for software deployed on |
| the device. |
| - R |
| - Y |
| - :ref:`Security Overview <security-overview>` and :ref:`Coding guidelines <coding_guidelines>` |
| |
| .. _ETSI_Provision_5_7_1: |
| * - Provision 5.7-1 |
| - The consumer IoT device should verify its software using secure boot mechanisms. |
| - R |
| - Y |
| - Functionality provided by `MCUboot <https://github.com/zephyrproject-rtos/mcuboot>`_. |
| Also see :ref:`Security Overview <west-sign>`. |
| |
| .. _ETSI_Provision_5_7_2: |
| * - Provision 5.7-2 |
| - If an unauthorized change is detected to the software, the device should alert the |
| user and/or administrator to the issue and should not connect to wider networks than |
| those necessary to perform the alerting function. |
| - R |
| - N |
| - Zephyr does not provide runtime detection / notification. |
| |
| .. _ETSI_Provision_5_8_1: |
| * - Provision 5.8-1 |
| - The confidentiality of personal data transiting between a device and a service, |
| especially associated services, should be protected, with best practice cryptography. |
| - R |
| - Y |
| - |
| |
| .. _ETSI_Provision_5_8_2: |
| * - Provision 5.8-2 |
| - The confidentiality of sensitive personal data communicated between the device and |
| associated services shall be protected, with cryptography appropriate to the |
| properties of the technology and usage. |
| - M |
| - Y |
| - |
| |
| .. _ETSI_Provision_5_8_3: |
| * - Provision 5.8-3 |
| - All external sensing capabilities of the device shall be documented in an accessible |
| way that is clear and transparent for the user. |
| - M |
| - Y |
| - :ref:`sensing` |
| |
| .. _ETSI_Provision_5_9_1: |
| * - Provision 5.9-1 |
| - Resilience should be built in to consumer IoT devices and services, taking into |
| account the possibility of outages of data networks and power. |
| - R |
| - Y |
| - |
| |
| .. _ETSI_Provision_5_9_2: |
| * - Provision 5.9-2 |
| - Consumer IoT devices should remain operating and locally functional in the case of a |
| loss of network access and should recover cleanly in the case of restoration of a |
| loss of power. |
| - R |
| - Y |
| - |
| |
| .. _ETSI_Provision_5_9_3: |
| * - Provision 5.9-3 |
| - The consumer IoT device should connect to networks in an expected, operational and |
| stable state and in an orderly fashion, taking the capability of the infrastructure |
| into consideration. |
| - R |
| - Y |
| - |
| |
| .. _ETSI_Provision_5_10_1: |
| * - Provision 5.10-1 |
| - If telemetry data is collected from consumer IoT devices and services, such as usage |
| and measurement data, it should be examined for security anomalies. |
| - R C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_11_1: |
| * - Provision 5.11-1 |
| - The user shall be provided with functionality such that user data can be erased from |
| the device in a simple manner. |
| - M |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_11_2: |
| * - Provision 5.11-2 |
| - The consumer should be provided with functionality on the device such that personal |
| data can be removed from associated services in a simple manner. |
| - R |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_11_3: |
| * - Provision 5.11-3 |
| - Users should be given clear instructions on how to delete their personal data. |
| - R |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_11_4: |
| * - Provision 5.11-4 |
| - Users should be provided with clear confirmation that personal data has been deleted |
| from services, devices and applications. |
| - R |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_12_1: |
| * - Provision 5.12-1 |
| - Installation and maintenance of consumer IoT should involve minimal decisions by the |
| user and should follow security best practice on usability. |
| - R |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_12_2: |
| * - Provision 5.12-2 |
| - The manufacturer should provide users with guidance on how to securely set up their device. |
| - R |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_12_3: |
| * - Provision 5.12-3 |
| - The manufacturer should provide users with guidance on how to check whether their |
| device is securely set up. |
| - R |
| - N/A |
| - |
| |
| .. _ETSI_Provision_5_13_1: |
| * - Provision 5.13-1 |
| - The consumer IoT device software shall validate data input via user interfaces or |
| transferred via Application Programming Interfaces (APIs) or between networks in |
| services and devices. |
| - M |
| - Y |
| - :ref:`Syscall verification <syscall_verification>` and :ref:`Coding guidelines <coding_guidelines>` |
| |
| .. _ETSI_Provision_6_1_1: |
| * - Provision 6.1-1 |
| - The manufacturer shall provide consumers with clear and transparent information about |
| what personal data is processed, how it is being used, by whom, and for what purposes, |
| for each device and service. This also applies to third parties that can be involved, |
| including advertisers. |
| - M |
| - N/A |
| - |
| |
| .. _ETSI_Provision_6_1_2: |
| * - Provision 6.1-2 |
| - Where personal data is processed on the basis of consumers' consent, this consent |
| shall be obtained in a valid way. |
| - M C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_6_1_3: |
| * - Provision 6.1-3 |
| - Consumers who gave consent for the processing of their personal data shall have |
| the capability to withdraw it at any time. |
| - M |
| - N/A |
| - |
| |
| .. _ETSI_Provision_6_1_4: |
| * - Provision 6.1-4 |
| - If telemetry data is collected from consumer IoT devices and services, the |
| processing of personal data should be kept to the minimum necessary for the |
| intended functionality. |
| - R C |
| - N/A |
| - |
| |
| .. _ETSI_Provision_6_1_5: |
| * - Provision 6.1-5 |
| - If telemetry data is collected from consumer IoT devices and services, consumers |
| shall be provided with information on what telemetry data is collected, how it is |
| being used, by whom, and for what purposes. |
| - M C |
| - N/A |
| - |
| |
| .. raw:: latex |
| |
| \end{landscape} |