Giter Site home page Giter Site logo

fkjagodzinski / iot-reference-arm-corstone3xx Goto Github PK

View Code? Open in Web Editor NEW

This project forked from freertos/iot-reference-arm-corstone3xx

0.0 0.0 0.0 1.49 MB

Featured FreeRTOS IoT Integration targeting an Arm Corstone-3xx platform based on Arm Cortex-M MCU.

License: MIT License

Shell 0.96% C++ 7.45% Python 3.72% C 80.70% CMake 7.16%

iot-reference-arm-corstone3xx's Introduction

IoT Reference Integration for Arm Corstone-3xx

Introduction

This reference integration demonstrates how to develop cloud connected applications and update them securely by integrating modular FreeRTOS kernel and libraries and utilizing hardware enforced security based on Arm TrustZone (Armv8-M).

To utilize the hardware enforced security, this integration uses PSA Certified reference implementation Trusted Firmware-M. Trusted Firmware-M provides various Secure services such as Secure boot, Crypto, Secure Storage, Attestation and Update services meeting PSA Certified requirements.

Developers and partners can use this integration as a starting point to build FreeRTOS kernel and libraries based software stack on top of Arm Cortex-M based platforms. All the components are put together in a modular manner to make porting of this integration across platforms easy.

Supported Targets

Directory structure

The project contains the following subdirectories:

Subdirectory Description
applications Contains applications that consume the components integrated in this reference integration. The applications can be built for all supported boards mentioned above.
bsp Contains dependencies for the board support package (BSP) utilized in device drivers, firmware booting, and other functionalities that enable an embedded operating system to operate within a specific hardware environment.
components Contains dependencies employed in the development of complete IoT applications fetched via Git Submodules. Read this for more info.
docs Contains various documentation to work with this project.
release_changes Contains the release changes to be compiled to generate a release note.
tools Contains all the tools created by this projects that are not imported from any components.

Examples

This reference integration contains following two examples:

Secure TLS Connection

Corstone platform communicates with the AWS IoT Core over a secure TLS connection. Mbed TLS running on the NSPE is used to establish the TLS connection. Mbed TLS makes use of the PSA Crypto APIs provided by TF-M for Crypto operations.

PKCS#11 APIs to perform TLS client authentication and import TLS client certificate and private key into the device. PKCS#11 has been integrated with TF-M using a thin shim. In the integration, the PKCS#11 APIs invoke the appropriate PSA Secure Storage API or Cryptographic API via the shim. This ensures the keys and certificates are protected and the cryptographic operations are performed securely within the SPE of TF-M and is isolated from the kernel, libraries and applications in the Non-secure Processing Environment. Keys and certificates are securely stored. This is enabled by TF-M’s Internal Trusted Storage (ITS) and Protected Storage (PS) services. Signing during TLS client authentication is performed by TF-M’s Crypto service.

Secure OTA Updates

FreeRTOS OTA Agent provides an OTA PAL layer for platforms to integrate and enable OTA updates. The demo integrates and OTA PAL implementation that makes use of the PSA Certified Firmware Update API implemented in TF-M. This allows Corstone device to receive new images from AWS IoT Core, authenticate using TF-M before deploying the image as the active image. The secure (TF-M) and the non-secure (FreeRTOS kernel and the application) images can be updated separately.

Every time the device boots, MCUBoot (bootloader) verifies that the image signature is valid before booting the image. Since the secure (TF-M) and the non-secure (FreeRTOS kernel and the application) images are singed separately, MCUBoot verifies that both image signatures are valid before booting. If either of the verification fails, then MCUBoot stops the booting process.

Software Components

Trusted Firmware M

Trusted Firmware-M (TF-M) implements the Secure Processing Environment (SPE) for Armv8-M, Armv8.1-M architectures (e.g. the Cortex-M33, Cortex-M23, Cortex-M55, Cortex-M85 processors) and dual-core platforms. It is the platform security architecture reference implementation aligning with PSA Certified guidelines, enabling chips, Real Time Operating Systems and devices to become PSA Certified. Follow the link for more information on Trusted Firmware M.

Mbed TLS

Project implements cryptographic primitives, X.509 certificate manipulation and the SSL/TLS and DTLS protocols. The project provides reference implementation of PSA Cryptography API Specification by supporting the cryptographic operations via. PSA Crypto APIs. Follow the link for more information on Mbed TLS.

PKCS11 PSA Shim

PKCS#11 PSA shim layer provides a reference implementation of PKCS#11 API based on Platform Security Architecture API.

This shim layer maps the PKCS#11 APIs to PSA Cryptography and Storage APIs V1.0. It follows the same PSA Cryptography API version supported in Mbed TLS 3.4.0. Certificate objects and key objects are protected by PSA secure service. By default, the device private/public keys are persistent while the code verify key is volatile.

AWS OTA PAL PSA implementation

Implementation of AWS OTA PAL based on Platform Security Architecture API.

This implementation maps the AWS OTA PAL APIs to the PSA Firmware Update and PSA Cryptography APIs. The writing, verification and activation of the update image are protected by the PSA secure services.

Contributing

See CONTRIBUTING for more information.

License

Source code located in the applications directory is available under the terms of the MIT License. See the LICENSE file for more details.

Other files in the repository are available under the terms specified in each source file.

iot-reference-arm-corstone3xx's People

Contributors

urutva avatar ahmedismail02 avatar hugueskamba avatar paul-szczepanek-arm avatar ldong-arm avatar bence-balogh avatar david-hazi-arm avatar gaborabonyi avatar stylie777 avatar amazonkamath avatar skptak avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.