Progiciel X-CUBE-SAFEA1

Caractéristiques

  • Nom du produit : élément sécurisé STSAFE-A110.
  • Version : X-CUBE-SAFEA1 v1.2.1
  • Intégré dans : pack logiciel STM32CubeMX
  • Caractéristiques principales :
    • Établissement de canal sécurisé avec un hôte distant, y compris
      négociation de sécurité de la couche de transport (TLS)
    • Service de vérification de signature (démarrage sécurisé et micrologiciel
      améliorer)
    • Suivi des usages avec compteurs sécurisés
    • Couplage et canal sécurisé avec le processeur d'application hôte
    • Emballage et déballage d'enveloppes d'hôtes locaux ou distants
    • Génération de paires de clés sur puce

Instructions d'utilisation du produit

1. Informations générales

L'élément sécurisé STSAFE-A110 est conçu pour fournir
services d'authentification et de gestion de données en local ou à distance
hôtes. Il convient à diverses applications telles que les appareils IoT,
systèmes de maison intelligente, applications industrielles et bien plus encore.

2. Mise en route

Pour commencer à utiliser l'élément sécurisé STSAFE-A110 :

  1. Se référer à la fiche technique disponible sur le STSAFE-A110 officiel
    web page pour des informations détaillées.
  2. Téléchargez le progiciel middleware STSAFE-A1xx à partir du
    Page Internet STSAFE-A110 ou STM32CubeMX.
  3. Assurer la compatibilité avec les IDE pris en charge tels que STM32Cube IDE ou
    Établi système pour STM32.

3. Description du middleware

3.1 Description générale

Le middleware STSAFE-A1xx facilite l'interaction entre
le dispositif d'élément sécurisé et un MCU, permettant divers cas d'utilisation.
Il est intégré aux progiciels ST pour améliorer la sécurité
caractéristiques.

3.2 Architecture

Le middleware se compose de différents composants logiciels,
y compris:

  • API STSAFE-A1xx (interface principale)
  • CRYPTO DE BASE
  • Interface de service cryptographique MbedTLS SHA/AES
  • Interface de service matériel X-CUBECRYPTOLIB

Questions fréquemment posées (FAQ)

Q : Où puis-je trouver la fiche technique STSAFE-A110 ?

R : La fiche technique est disponible sur le STSAFE-A110 web page pour
informations supplémentaires sur l'appareil.

Q : Quels sont les environnements de développement intégrés pris en charge
pour le middleware STSAFE-A1xx ?

R : Les IDE pris en charge incluent l'IDE STM32Cube et System Workbench.
pour STM32 (SW4STM32) dans le package X-CUBE-SAFEA1 v1.2.1.

UM2646
Manuel d'utilisation
Prise en main du progiciel X-CUBE-SAFEA1
Introduction
Ce manuel d'utilisation décrit comment démarrer avec le progiciel X-CUBE-SAFEA1. Le progiciel X-CUBE-SAFEA1 est un composant logiciel qui fournit plusieurs codes de démonstration, qui utilisent les fonctionnalités du périphérique STSAFE-A110 à partir d'un microcontrôleur hôte. Ces codes de démonstration utilisent le middleware STSAFE-A1xx construit sur la technologie logicielle STM32Cube pour faciliter la portabilité entre différents microcontrôleurs STM32. De plus, il est indépendant des MCU en termes de portabilité vers d’autres MCU. Ces codes de démonstration illustrent les fonctionnalités suivantes : · Authentification · Couplage · Établissement de la clé · Enveloppement d'enveloppe locale · Génération de paire de clés

UM2646 – Rév 4 – Mars 2024 Pour plus d'informations, contactez votre bureau commercial STMicroelectronics local.

www.st.com

1
Remarque : Remarque :

UM2646
informations générales
informations générales
Le progiciel X-CUBE-SAFEA1 est une référence pour intégrer les services d'éléments sécurisés STSAFE-A110 dans le système d'exploitation (OS) d'un MCU hôte et son application. Il contient le pilote STSAFE-A110 et les codes de démonstration à exécuter sur les microcontrôleurs STM32 32 bits basés sur le processeur Arm® Cortex®-M. Arm est une marque déposée d'Arm Limited (ou de ses filiales) aux États-Unis et/ou ailleurs. Le progiciel X-CUBE-SAFEA1 est développé en ANSI C. Néanmoins, l'architecture indépendante de la plate-forme permet une portabilité aisée vers une variété de plates-formes différentes. Le tableau ci-dessous présente la définition des acronymes pertinents pour une meilleure compréhension de ce document.
Le progiciel STSAFE-A1xx est intégré dans X-CUBE-SAFEA1 v1.2.1 en tant que middleware et il est intégré en tant que BSP pour le pack logiciel du STM32CubeMX.

UM2646 – Rév 4

pages 2/23

UM2646
Élément sécurisé STSAFE-A110

2

Élément sécurisé STSAFE-A110

Le STSAFE-A110 est une solution hautement sécurisée qui agit comme un élément sécurisé fournissant des services d'authentification et de gestion de données à un hôte local ou distant. Il s’agit d’une solution complète clé en main avec un système d’exploitation sécurisé fonctionnant sur la dernière génération de microcontrôleurs sécurisés.

Le STSAFE-A110 peut être intégré dans les appareils IoT (Internet des objets), les applications de maison intelligente, de ville intelligente et industrielles, les appareils électroniques grand public, les consommables et les accessoires. Ses principales caractéristiques sont :

·

Authentification (des périphériques, appareils IoT et USB Type-C®)

·

Établissement de canal sécurisé avec un hôte distant, y compris la prise de contact TLS (Transport Layer Security)

·

Service de vérification de signature (démarrage sécurisé et mise à niveau du micrologiciel)

·

Suivi des usages avec compteurs sécurisés

·

Couplage et canal sécurisé avec le processeur d'application hôte

·

Emballage et déballage d'enveloppes d'hôtes locaux ou distants

·

Génération de paires de clés sur puce

Se référer à la fiche technique STSAFE-A110 disponible sur le STSAFE-A110 web page pour plus d’informations sur l’appareil.

UM2646 – Rév 4

pages 3/23

UM2646
Description du middleware STSAFE-A1xx

3

Description du middleware STSAFE-A1xx

Cette section détaille le contenu du progiciel middleware STSAFE-A1xx et la manière de l'utiliser.

3.1

Description générale

Le middleware STSAFE-A1xx est un ensemble de composants logiciels conçus pour :

·

interfacer le dispositif d'élément sécurisé STSAFE-A110 avec un MCU

·

mettre en œuvre les cas d'utilisation STSAFE-A110 les plus génériques

Le middleware STSAFE-A1xx est entièrement intégré aux progiciels ST en tant que composant middleware pour ajouter des fonctionnalités d'éléments sécurisés (par ex.ample X-CUBE-SBSFU ou X-CUBE-SAFEA1).

Il peut être téléchargé depuis la page Internet du STSAFE-A110 via l'onglet Outils et logiciels ou peut être téléchargé depuis STM32CubeMX.

Le logiciel est fourni sous forme de code source dans le cadre d'un contrat de licence logicielle ST (SLA0088) (voir Informations sur la licence pour plus de détails).

Les environnements de développement intégrés suivants sont pris en charge :

·

IAR Embedded Workbench® pour Arm® (EWARM)

·

Kit de développement de microcontrôleurs Keil® (MDK-ARM)

·

IDE STM32Cube (STM32CubeIDE)

·

System Workbench pour STM32 (SW4STM32) pris en charge dans le package X-CUBE-SAFEA1 v1.2.1 uniquement

Reportez-vous aux notes de version disponibles dans le dossier racine du package pour plus d'informations sur les versions IDE prises en charge.

3.2

Architecture

Cette section décrit les composants logiciels du progiciel middleware STSAFE-A1xx.

La figure ci-dessous présente un view de l'architecture middleware STSAFE-A1xx et des interfaces associées.

Figure 1. Architecture STSAFE-A1xx

API STSAFE-A1xx (interface principale)

CŒUR

CRYPTO

MbedTM TLS

Interface de service cryptographique SHA/AES

SERVICE

Zone isolée
Convient à la protection par les fonctionnalités de sécurité MCU
(MPU, Pare-feu, TrustZone®, etc.)

Interface de service matériel

X-CUBECRYPTOLIB

UM2646 – Rév 4

pages 4/23

Note:

UM2646
Description du middleware STSAFE-A1xx

Le middleware propose trois interfaces différentes :

·

API STSAFE-A1xx : il s'agit de la principale interface de programmation d'applications (API), qui offre un accès complet à tous

les services STSAFE-A110 exportés vers les couches supérieures (application, bibliothèques et piles). Cette interface est

également appelée interface principale car toutes les API exportées sont implémentées dans le module CORE.

Les couches supérieures qui doivent intégrer le middleware STSAFE-A1xx doivent accéder au STSAFE-A110

fonctionnalités via cette interface.

·

Interface de service matériel : cette interface est utilisée par le middleware STSAFE-A1xx pour atteindre le niveau le plus élevé

indépendance de la plate-forme matérielle. Il comprend un ensemble de fonctions génériques pour connecter le MCU spécifique, le bus IO

et fonctions de synchronisation. Cette structure améliore la réutilisation du code de la bibliothèque et garantit une portabilité aisée vers

autres appareils.

Définies comme fonctions faibles, ces fonctions génériques doivent être implémentées au niveau applicatif suite à l'exampchier fourni dans le modèle stsafea_service_interface_template.c fourni pour une intégration facile

et personnalisation dans les couches supérieures.

·

Interface de service cryptographique : cette interface est utilisée par le middleware STSAFE-A1xx pour accéder

fonctions cryptographiques de plate-forme ou de bibliothèque telles que SHA (algorithme de hachage sécurisé) et AES (avancé

standard de cryptage) requis par le middleware pour certaines démonstrations.

Définies comme fonctions faibles, ces fonctions cryptographiques doivent être implémentées au niveau applicatif

suivre l'example fourni avec deux modèles différents :

stsafea_crypto_mbedtls_interface_template.c si la bibliothèque cryptographique Arm® MbedTM TLS est utilisée ; stsafea_crypto_stlib_interface_template.c si la bibliothèque cryptographique ST est utilisée ;

·

Des bibliothèques cryptographiques alternatives peuvent être utilisées en personnalisant simplement la source du modèle files. Le

modèle fileDes s sont fournis pour une intégration et une personnalisation faciles dans les couches supérieures.

Arm et Mbed sont des marques déposées ou des marques commerciales d'Arm Limited (ou de ses filiales) aux États-Unis et/ou ailleurs.

UM2646 – Rév 4

pages 5/23

UM2646
Description du middleware STSAFE-A1xx
La figure ci-dessous montre le middleware STSAFE-A1xx intégré dans une application STM32Cube standard, fonctionnant sur une carte d'extension X-NUCLEO-SAFEA1 montée sur une carte STM32 Nucleo.
Figure 2. Schéma fonctionnel de l'application STSAFE-A1xx

Middleware STSAFE-A1xx dans une application STM32Cube

Schéma fonctionnel X-CUBE-SAFEA1 pour STM32CubeMX
Pour offrir la meilleure indépendance matérielle et plate-forme, le middleware STSAFE-A1xx n'est pas directement connecté au STM32Cube HAL, mais via une interface fileest implémenté au niveau de l'application (stsafea_service_interface_template.c, stsafea_interface_conf.h).

UM2646 – Rév 4

pages 6/23

UM2646
Description du middleware STSAFE-A1xx

3.3

Module de base

Le module CORE est le cœur du middleware. Il implémente les commandes appelées par les couches supérieures (application, bibliothèques, pile etc.) afin d'utiliser correctement les fonctionnalités de STSAFE-A1xx.

La figure ci-dessous présente un view de l'architecture du module CORE.

Figure 3. Architecture du module CORE

Couches supérieures externes (application, bibliothèques, piles, etc.)

CŒUR

Module interne CRYPTO

Module interne SERVICE

Le module CORE est un composant logiciel multi-interface connecté à :

·

Couches supérieures : connexion externe via les API exportées décrites dans les deux tableaux ci-dessous ;

·

Couche cryptographique : connexion interne au module CRYPTO ;

·

Couche de service matérielle : connexion interne au module SERVICE ;

Le progiciel middleware STSAFE-A1xx fournit une documentation API complète du module CORE dans le dossier racine (voir STSAFE-A1xx_Middleware.chm file).

Reportez-vous à la fiche technique STSAFE-A110 pour une brève explication du jeu de commandes auquel les API de commandes répertoriées dans le tableau suivant sont liées.

Catégorie API Configuration d'initialisation
Commandes à usage général
Commandes de partition de données

Tableau 1. API exportée du module CORE
Fonction StSafeA_Init Pour créer, initialiser et attribuer le handle de périphérique STSAFE-A1xx. StSafeA_GetVersion Pour renvoyer la révision du middleware STSAFE-A1xx. StSafeA_Echo Pour recevoir les données transmises dans la commande. StSafeA_Reset Pour réinitialiser les attributs volatiles à leurs valeurs initiales. StSafeA_GenerateRandom To génère un nombre d'octets aléatoires. StSafeA_Hibernate Pour mettre le périphérique STSAFE-Axxx en hibernation. StSafeA_DataPartitionQuery

UM2646 – Rév 4

pages 7/23

UM2646
Description du middleware STSAFE-A1xx

Catégorie API

Commande Function Query pour récupérer la configuration de la partition de données.

StSafeA_Decrement Pour décrémenter le compteur unidirectionnel dans une zone de compteur.

Commandes de partition de données

StSafeA_Read Pour lire les données d'une zone de partition de données.

StSafeA_Update Pour mettre à jour les données via la partition de zone.

StSafeA_GenerateSignature Pour renvoyer la signature ECDSA sur un résumé de message.

Commandes à clé privée et publique

StSafeA_GenerateKeyPair Pour générer une paire de clés dans un emplacement de clé privée.
StSafeA_VerifyMessageSignature Pour vérifier l'authentification du message.

StSafeA_EstablishKey Pour établir un secret partagé entre deux hôtes en utilisant la cryptographie asymétrique.

StSafeA_ProductDataQuery Commande de requête pour récupérer les données du produit.

Commande StSafeA_I2cParameterQuery Query pour récupérer l'adresse I²C et la configuration du mode basse consommation.

Commande StSafeA_LifeCycleStateQuery Query pour récupérer l’état du cycle de vie (Né, Opérationnel, Terminé, Né et verrouillé ou Opérationnel et verrouillé).

Commandes administratives

StSafeA_HostKeySlotQuery Commande de requête pour récupérer les informations de clé de l'hôte (présence et compteur C-MAC de l'hôte).
StSafeA_PutAttribute Pour mettre des attributs dans le périphérique STSAFE-Axxx, tels que des clés, un mot de passe, des paramètres I²C en fonction de l'attribut TAG.

StSafeA_DeletePassword Pour supprimer le mot de passe de son emplacement.

StSafeA_VerifyPassword Pour vérifier le mot de passe et mémoriser le résultat de la vérification pour une future autorisation de commande.

StSafeA_RawCommand Pour exécuter une commande brute et recevoir la réponse associée.

StSafeA_LocalEnvelopeKeySlotQuery Commande de requête pour récupérer les informations sur la clé d'enveloppe locale (numéro d'emplacement, présence et longueur de clé) pour les emplacements de clé disponibles.

Commandes d'enveloppe locale

StSafeA_GenerateLocalEnvelopeKey Pour générer une clé dans un emplacement de clé d'enveloppe locale.
StSafeA_WrapLocalEnvelope Pour envelopper des données (généralement des clés) entièrement gérées par l'hôte, avec une clé d'enveloppe locale et l'algorithme [AES key wrap].

StSafeA_UnwrapLocalEnvelope Pour déballer une enveloppe locale avec une clé d'enveloppe locale.

UM2646 – Rév 4

pages 8/23

UM2646
Description du middleware STSAFE-A1xx

Catégorie API
Commande de configuration d'autorisation de commande

Tableau 2. API du module STSAFE-A110 CORE exportées
Fonction StSafeA_CommandAuthorizationConfigurationQuery Commande de requête pour récupérer les conditions d'accès pour les commandes avec des conditions d'accès configurables.

3.4

Module SERVICE

Le module SERVICE est la couche basse du middleware. Il implémente une abstraction matérielle complète en termes de MCU et de plate-forme matérielle.

La figure ci-dessous présente un view de l'architecture du module SERVICE.

Figure 4. Architecture du module SERVICE

Module interne CORE

SERVICE

Couches inférieures externes (BSP, HAL, LL, etc.)

Le module SERVICE est un composant logiciel double interface connecté à :

·

Couches inférieures externes : telles que BSP, HAL ou LL. Les fonctions faibles doivent être mises en œuvre à un niveau supérieur externe

couches et sont basés sur le modèle stsafea_service_interface_template.c file;

·

Couche Core : connexion interne au module CORE via les API exportées décrites dans le tableau

ci-dessous;

Le progiciel middleware STSAFE-A1xx fournit une documentation API complète du module SERVICE dans le dossier racine (voir STSAFE-A1xx_Middleware.chm file).

Tableau 3. API exportées du module SERVICE

Catégorie API Configuration d'initialisation
Fonctions d'opération de bas niveau

Fonction
StSafeA_BSP_Init Pour initialiser le bus de communication et les broches IO nécessaires au fonctionnement du dispositif STSAFE-Axxx.
StSafeA_Transmit Pour préparer la commande à transmettre et appeler l'API du bus de bas niveau à exécuter. Calculez et concaténez un CRC, si pris en charge.
StSafeA_Receive Pour recevoir des données du STSAFE-Axxx en utilisant les fonctions de bus de bas niveau pour les récupérer. Vérifiez le CRC, s'il est pris en charge.

UM2646 – Rév 4

pages 9/23

UM2646
Description du middleware STSAFE-A1xx

3.5

Module CRYPTO

Le module CRYPTO représente la partie cryptographique du middleware. Elle doit s’appuyer sur les ressources cryptographiques de la plateforme.

Le module CRYPTO est complètement indépendant des autres modules middleware et, pour cette raison, peut être facilement encapsulé dans une zone sécurisée isolée adaptée à la protection par des fonctionnalités de sécurité MCU telles qu'une unité de protection de mémoire (MPU), un pare-feu ou une TrustZone®.

La figure ci-dessous présente un view de l'architecture du module CRYPTO.

Figure 5. Architecture du module CRYPTO

Module interne CORE

CRYPTO

Couches cryptographiques externes
(MbedTM TLS, X-CUBE-CRYPTOLIB)

Le module CRYPTO est un composant logiciel double interface connecté à :

·

une bibliothèque de cryptographie externe : Mbed TLS et X-CUBE-CRYPTOLIB sont actuellement supportés. Faible

les fonctions doivent être mises en œuvre au niveau des couches externes supérieures et sont basées sur :

Modèle stsafea_crypto_mbedtls_interface_template.c file pour la bibliothèque cryptographique Mbed TLS ;

Modèle stsafea_crypto_stlib_interface_template.c file pour la bibliothèque cryptographique ST ;

Des bibliothèques cryptographiques supplémentaires peuvent être facilement prises en charge en adaptant l'interface cryptographique

modèle file.

·

la couche core : connexion interne au module CORE via les API exportées décrites dans le tableau

ci-dessous;

Le progiciel middleware STSAFE-A1xx fournit une documentation API complète du module CRYPTO dans le dossier racine (voir STSAFE-A1xx_Middleware.chm file).

Tableau 4. API exportées du module CRYPTO

Catégorie API

Fonction

StSafeA_ComputeCMAC Pour calculer la valeur CMAC. Utilisé sur la commande préparée.

StSafeA_ComputeRMAC Pour calculer la valeur RMAC. Utilisé sur la réponse reçue.

API cryptographiques StSafeA_DataEncryption Pour exécuter le cryptage des données (AES CBC) sur le tampon de données STSAFE-Axxx.

StSafeA_DataDecryption Pour exécuter le décryptage des données (AES CBC) sur le tampon de données STSAFE-Axxx.

StSafeA_MAC_SHA_PrePostProcess Pour pré- ou post-traiter le MAC et/ou SHA avant la transmission ou après la réception des données du périphérique STSAFE_Axxx.

UM2646 – Rév 4

pages 10/23

3.6
Note:

UM2646
Description du middleware STSAFE-A1xx

Modèles

Cette section donne une description détaillée des modèles disponibles dans le progiciel middleware STSAFE-A1xx.

Tous les modèles répertoriés dans le tableau ci-dessous sont fournis dans le dossier Interface disponible au niveau racine du progiciel middleware.

Modèle files sont fournis en exampfichiers à copier et personnaliser dans les couches supérieures, afin de faciliter

intégrer et configurer le middleware STSAFE-A1xx :

·

Modèle d'interface files fournir examples implémentations des fonctions __weak, proposées sous forme vide ou

fonctions partiellement vides à l’intérieur du middleware. Ils doivent être correctement implémentés dans l'espace utilisateur ou dans

les couches supérieures en fonction de la bibliothèque cryptographique et des choix matériels de l'utilisateur.

·

Modèle de configuration files fournissent un moyen simple de configurer le middleware et les fonctionnalités STSAFE-A1xx

qui peuvent être utilisés dans l'application utilisateur, comme des optimisations ou du matériel spécifique.

Catégorie de modèle
Modèles d'interface
Modèles de configuration

Tableau 5. Modèles
Modèle file
stsafea_service_interface_template.c Example modèle pour montrer comment prendre en charge les services matériels requis par le middleware STSAFE-A et offerts par le matériel spécifique, la bibliothèque de bas niveau ou le BSP sélectionné dans l'espace utilisateur. stsafea_crypto_mbedtls_interface_template.c Example modèle pour montrer comment prendre en charge les services cryptographiques requis par le middleware STSAFE-A et proposés par la bibliothèque cryptographique Mbed TLS (gestion des clés, SHA, AES, etc.). stsafea_crypto_stlib_interface_template.c Example modèle pour montrer comment prendre en charge les services cryptographiques requis par le middleware STSAFE-A et proposés par l'extension logicielle de la bibliothèque cryptographique STM32 pour STM32Cube (XCUBE-CRYPTOLIB) (gestion des clés, SHA, AES, etc.). stsafea_conf_template.h Example template pour montrer comment configurer le middleware STSAFE-A (notamment à des fins d'optimisation). stsafea_interface_conf_template.h Example modèle pour montrer comment configurer et personnaliser l'interface files énumérés ci-dessus.

Les modèles ci-dessus ne sont présents que dans le dossier BSP du package X-CUBE-SAFEA1.

UM2646 – Rév 4

pages 11/23

UM2646
Description du middleware STSAFE-A1xx

3.7

Structure du dossier

La figure ci-dessous présente la structure des dossiers du progiciel middleware STSAFE-A1xx v1.2.1.

Graphique 6. Projet file structure

Projet file structure du middleware STSAFE-A1xx

UM2646 – Rév 4

Projet file structure pour X-CUBE-SAFEA1 pour STM32CubeMX

pages 12/23

3.8
3.8.1
3.8.2

UM2646
Description du middleware STSAFE-A1xx

Comment : intégration et configuration
Cette section décrit comment intégrer et configurer le middleware STSAFE-A1xx dans l'application utilisateur.

Étapes d'intégration

Suivez ces étapes pour intégrer le middleware STSAFE-A1xx dans l'application souhaitée :

·

Étape 1 : copiez (et renommez éventuellement) le fichier stsafea_service_interface_template.c file et l'un ou l'autre

stsafea_crypto_mbedtls_interface_template.c ou stsafea_crypto_stlib_interface_template.c à l'utilisateur

espace en fonction de la bibliothèque cryptographique qui a été ajoutée à l'application (quelle que soit la

bibliothèque cryptographique sélectionnée/utilisée par les utilisateurs, ils peuvent même créer/implémenter leur propre bibliothèque cryptographique

interface file à partir de zéro en adaptant le modèle approprié).

·

Étape 2 : Copiez (et renommez éventuellement) les fichiers stsafea_conf_template.h et stsafea_interface_conf_template.h

files à l’espace utilisateur.

·

Étape 3 : Assurez-vous d'ajouter les bonnes inclusions dans votre source d'espace utilisateur principale ou dans toute autre source d'espace utilisateur. file cela doit

interfacer le middleware STSAFE-A1xx :

#include « stsafea_core.h » #include « stsafea_interface_conf.h »

·

Étape 4: Personnalisez le fileest utilisé dans les trois étapes ci-dessus selon les préférences de l'utilisateur.

Étapes de configuration

Afin de configurer correctement le middleware STSAFE-A1xx dans l'application utilisateur, ST propose deux

modèle de configuration files à copier et personnaliser dans l'espace utilisateur selon les choix de l'utilisateur :

·

stsafea_interface_conf_template.h : Cet example template permet et montre comment configurer le

interfaces cryptographiques et middleware de service dans l'espace utilisateur via le #define suivant

déclarations:

USE_PRE_LOADED_HOST_KEYS

MCU_PLATFORM_INCLUDE

MCU_PLATFORM_BUS_INCLUDE

MCU_PLATFORM_CRC_INCLUDE

·

stsafea_conf_template.h : Cet example template permet et montre comment configurer le STSAFE-A

middleware via les instructions #define suivantes :

STSAFEA_USE_OPTIMIZATION_SHARED_RAM

STSAFEA_USE_OPTIMIZATION_NO_HOST_MAC_ENCRYPT

STSAFEA_USE_FULL_ASSERT

USE_SIGNATURE_SESSION (pour le STSAFE-A100 uniquement)

Suivez ces étapes afin d'intégrer le middleware STSAFE-A1xx dans l'application souhaitée :

·

Étape 1 : Copiez (et renommez éventuellement) les fichiers stsafea_interface_conf_template.h et stsafea_conf_template.h

files à l’espace utilisateur.

·

Étape 2 : Confirmez ou modifiez l'instruction #define des deux en-têtes mentionnés ci-dessus files selon

la plateforme utilisateur et les choix cryptographiques.

UM2646 – Rév 4

pages 13/23

4
4.1
Note:
4.2
Note:

UM2646
Logiciel de démonstration
Logiciel de démonstration
Cette section illustre un logiciel de démonstration basé sur le middleware STSAFE-A1xx.
Authentification
Cette démonstration illustre le flux de commandes dans lequel le STSAFE-A110 est monté sur un périphérique qui s'authentifie auprès d'un hôte distant (cas d'un périphérique IoT), l'hôte local étant utilisé comme intermédiaire vers le serveur distant. Le scénario dans lequel le STSAFE-A110 est monté sur un périphérique qui s'authentifie auprès d'un hôte local, par exempleample pour les jeux, les accessoires mobiles ou les consommables, est exactement le même.
Flux de commandes À des fins de démonstration, les hôtes locaux et distants sont ici le même périphérique. 1. Extrayez, analysez et vérifiez le certificat public du STSAFE-A110 stocké dans la zone de partition de données 0 de l'appareil.
afin d'obtenir la clé publique : Lisez le certificat à l'aide du middleware STSAFE-A1xx via la zone 110 du STSAFE-A0. Analysez le certificat à l'aide de l'analyseur de la bibliothèque cryptographique. Lisez le certificat CA (disponible via le code). Analysez le certificat CA à l'aide de l'analyseur de la bibliothèque cryptographique. Vérifiez la validité du certificat à l'aide du certificat CA via la bibliothèque cryptographique. Obtenez la clé publique du certificat STSAFE-A110 X.509. 2. Générez et vérifiez la signature sur un numéro de défi : Générez un numéro de défi (numéro aléatoire). Relevez le défi. Récupérez une signature sur le défi haché à l'aide de l'emplacement de clé privée 110 du STSAFE-A0 via le
Intergiciel STSAFE-A1xx. Analysez la signature générée à l'aide de la bibliothèque cryptographique. Vérifiez la signature générée à l'aide de la clé publique du STSAFE-A110 via la bibliothèque cryptographique. Lorsque cela est valide, l'hôte sait que le périphérique ou l'IoT est authentique.
Jumelage
Ce code example établit un appariement entre un appareil STSAFE-A110 et le MCU auquel il est connecté. L'appairage permet d'authentifier les échanges entre l'appareil et le MCU (c'est-à-dire signés et vérifiés). Le dispositif STSAFE-A110 devient utilisable uniquement en combinaison avec le MCU avec lequel il est associé. Le couplage consiste en ce que le MCU hôte envoie une clé MAC hôte et une clé de chiffrement hôte au STSAFE-A110. Les deux clés sont stockées dans la NVM protégée du STSAFE-A110 et doivent être stockées dans la mémoire flash du périphérique STM32. Par défaut, dans cet example, le MCU hôte envoie des clés connues au STSAFE-A110 (voir le flux de commandes ci-dessous) dont l'utilisation est fortement recommandée à des fins de démonstration. Le code permet également la génération de clés aléatoires. De plus, le code example génère une clé d'enveloppe locale lorsque l'emplacement correspondant n'est pas déjà rempli dans le STSAFE-A110. Lorsque l'emplacement d'enveloppe locale est rempli, le dispositif STSAFE-A110 permet au MCU hôte d'emballer/déballer une enveloppe locale pour stocker en toute sécurité une clé du côté du MCU hôte. Le code d'appairage example doit être exécuté avec succès avant d’exécuter tout le code suivant examples.
Flux de commandes
1. Générez la clé d'enveloppe locale dans le STSAFE-A110 à l'aide du middleware STSAFE-A1xx. Par défaut, cette commande est activée. Sachez que décommenter les instructions de définition suivantes dans le fichier pairing.c file désactive la génération de clé d'enveloppe locale : /* #define _FORCE_DEFAULT_FLASH_ */
Cette opération se produit uniquement si l'emplacement de clé d'enveloppe locale du STSAFE-A110 n'est pas déjà rempli.

UM2646 – Rév 4

pages 14/23

UM2646
Logiciel de démonstration

2. Définissez deux nombres de 128 bits à utiliser comme clé MAC hôte et clé de chiffrement hôte. Par défaut, des clés connues en or sont utilisées. Ils ont les valeurs suivantes : 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF / * Clé MAC hôte */ 0x11,0x11,0x22,0, 22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88xXNUMX / * Clé de chiffrement hôte */
Pour activer la génération de clé aléatoire, ajoutez l'instruction de définition suivante au pairing.c file: #définir USE_HOST_KEYS_SET_BY_PAIRING_APP 1
3. Stockez la clé MAC hôte et la clé de chiffrement hôte dans leur emplacement respectif dans le STSAFE-A110. 4. Stockez la clé MAC hôte et la clé de chiffrement hôte dans la mémoire flash du STM32.

4.3

Établissement de la clé (établir le secret)

Cette démonstration illustre le cas où le dispositif STSAFE-A110 est monté sur un appareil (tel qu'un appareil IoT) qui communique avec un serveur distant et doit établir un canal sécurisé pour échanger des données avec lui.

Dans cet example, le périphérique STM32 joue à la fois le rôle de serveur distant (hôte distant) et d'hôte local connecté au périphérique STSAFE-A110.

L'objectif de ce cas d'utilisation est de montrer comment établir un secret partagé entre l'hôte local et le serveur distant à l'aide du schéma Diffie-Hellman à courbe elliptique avec une clé statique (ECDH) ou éphémère (ECDHE) dans le STSAFE-A110.

Le secret partagé doit ensuite être dérivé d'une ou plusieurs clés de travail (non illustrées ici). Ces clés de travail peuvent ensuite être utilisées dans des protocoles de communication tels que TLS, par ex.ample pour protéger la confidentialité, l’intégrité et l’authenticité des données échangées entre l’hôte local et le serveur distant.

Flux de commandes

Figure 7. Flux de commandes d'établissement de clé illustre le flux de commandes.

·

Les clés privées et publiques de l'hôte distant sont codées en dur dans le code example.

·

L'hôte local envoie la commande StSafeA_GenerateKeyPair au STSAFE-A110 pour générer le

paire de clés sur son slot éphémère (slot 0xFF).

·

Le STSAFE-A110 renvoie la clé publique (qui correspond à l'emplacement 0xFF) au STM32 (représentant

l'hôte distant).

·

Le STM32 calcule le secret de l'hôte distant (en utilisant la clé publique du périphérique STSAFE et le

clé privée de l'hôte).

·

Le STM32 envoie la clé publique de l'hôte distant au STSAFE-A110 et demande au STSAFE-A110 de

calculez le secret de l'hôte local à l'aide de l'API StSafeA_EstablishKey.

·

Le STSAFE-A110 renvoie le secret de l'hôte local au STM32.

·

Le STM32 compare les deux secrets et imprime le résultat. Si les secrets sont les mêmes, le secret

l'établissement est réussi.

UM2646 – Rév 4

pages 15/23

Figure 7. Flux de commandes d'établissement des clés

UM2646
Logiciel de démonstration

Hôte distant

STM32

Hôte local

STSÉCURITÉ

Calcul du secret de l'hôte distant (en utilisant la clé privée de l'hôte distant et la clé publique de l'hôte local (emplacement STSAFE 0xFF))
Le secret de l'hôte distant

Générer une paire de clés

Générer une paire de clés sur l'emplacement 0xFF

Clé publique de STSAFE générée sur

Génération de la clé publique de STSAFE

emplacement 0xFF

Clé publique de l'hôte distant
STM32 compare le secret de l'hôte distant au
secret de l'hôte local et imprime le résultat

Établir la clé (clé publique de l'hôte distant)
Envoi du secret de l'hôte local

Calcul du secret de l'hôte local (en utilisant la clé privée de l'hôte local (emplacement STSAFE 0xFF) et la clé publique de l'hôte distant)
Le secret de l'hôte local

4.4
Note:
4.5

Envelopper/déballer des enveloppes locales
Cette démonstration illustre le cas où le STSAFE-A110 encapsule/déballe l'enveloppe locale afin de stocker en toute sécurité un secret dans toute mémoire non volatile (NVM). Les clés de cryptage/déchiffrement peuvent être stockées en toute sécurité de cette manière dans une mémoire supplémentaire ou dans la mémoire des données utilisateur du STSAFEA110. Le mécanisme d'habillage est utilisé pour protéger un texte secret ou brut. Le résultat de l'habillage est une enveloppe chiffrée avec un algorithme d'enveloppement de clé AES et qui contient la clé ou le texte brut à protéger.
Flux de commandes
Les hôtes locaux et distants sont ici le même appareil. 1. Générer des données aléatoires assimilées à une enveloppe locale. 2. Enveloppez l'enveloppe locale à l'aide du middleware du STSAFE-A110. 3. Rangez l'enveloppe emballée. 4. Déballez l'enveloppe enveloppée à l'aide du middleware du STSAFE-A110. 5. Comparez l'enveloppe non emballée à l'enveloppe locale initiale. Ils devraient être égaux.

Génération de paires de clés

Cette démonstration illustre le flux de commandes où le périphérique STSAFE-A110 est monté sur un hôte local. Un hôte distant demande à cet hôte local de générer une paire de clés (une clé privée et une clé publique) sur le slot 1 puis de signer un challenge (nombre aléatoire) avec la clé privée générée.

L'hôte distant est alors en mesure de vérifier la signature avec la clé publique générée.

Cette démonstration est similaire à la démonstration d'authentification avec deux différences :

·

La bi-clé dans la démonstration Authentification est déjà générée (sur l'emplacement 0), alors que, dans cet example,

nous générons la bi-clé sur l'emplacement 1. L'appareil STSAFE-A110 peut également générer la bi-clé sur l'emplacement 0xFF,

mais uniquement à des fins d'établissement clés.

·

La clé publique de la démonstration Authentification est extraite du certificat en zone 0. Dans ce cas

example, la clé publique est renvoyée avec la réponse du STSAFE-A110 au

Commande StSafeA_GenerateKeyPair.

UM2646 – Rév 4

pages 16/23

UM2646
Logiciel de démonstration

Note:

Flux de commandes
À des fins de démonstration, les hôtes locaux et distants sont ici le même appareil. 1. L'hôte envoie la commande StSafeA_GenerateKeyPair au STSAFE-A110, qui renvoie le
clé publique du MCU hôte. 2. L'hôte génère un défi (nombre aléatoire de 48 octets) à l'aide de l'API StSafeA_GenerateRandom. Le
STSAFE-A110 renvoie le nombre aléatoire généré. 3. L'hôte calcule le hachage du numéro généré à l'aide de la bibliothèque cryptographique. 4. L'hôte demande au STSAFE-A110 de générer une signature du hachage calculé à l'aide du
API StSafeA_GenerateSignature. Le STSAFE-A110 renvoie la signature générée.
5. L'hôte vérifie la signature générée avec la clé publique envoyée par le STSAFE-A110 à l'étape 1. 6. Le résultat de la vérification de la signature est imprimé.

UM2646 – Rév 4

pages 17/23

UM2646

Historique des révisions

Tableau 6. Historique des révisions du document

Date

Révision

Changements

09-déc.-2019

1

Version initiale.

13-janv.-2020

2

Section d'informations sur la licence supprimée.

Liste mise à jour des fonctionnalités illustrées par des codes de démonstration dans l'introduction. Tableau de liste des acronymes supprimé et glossaire inséré à la fin.

Petit changement de texte et couleurs mises à jour dans la figure 1. Architecture STSAFE-A1xx.

Figure 2 mise à jour. Schéma fonctionnel de l'application STSAFE-A1xx.

Tableau 1 mis à jour. API exportée du module CORE.

07-févr.-2022

3

Suppression de StSafeA_InitHASH et StSafeA_ComputeHASH du tableau 4. API exportées par le module CRYPTO.

Section 3.8.2 mise à jour : étapes de configuration.

Section 4.2 mise à jour : Appairage.

Section 4.3 mise à jour : Établissement de la clé (établir le secret).

Ajout de la section 4.5 : Génération de paires de clés.

Petits changements de texte.

Le progiciel STSAFE-A1xx ajouté est intégré dans X-CUBE-SAFEA1 v1.2.1 en tant que middleware

et il est intégré en tant que BSP pour le pack logiciel du STM32CubeMX. et les modèles ci-dessus

07-mars-2024

4

ne sont présents que dans le dossier BSP du package X-CUBE-SAFEA1.

Section 3.1 mise à jour : Description générale, Section 3.2 : Architecture et Section 3.7 : Structure des dossiers.

UM2646 – Rév 4

pages 18/23

Glossaire
AES Norme de chiffrement avancée ANSI American National Standards Institute API Interface de programmation d'applications BSP Package de support de carte CA Autorité de certification CC Critères communs C-MAC Code d'authentification du message de commande ECC Cryptographie à courbe elliptique ECDH Courbe elliptique DiffieHellman ECDHE Courbe elliptique DiffieHellman – éphémère EWARM IAR Embedded Workbench® pour Arm® HAL Couche d'abstraction matérielle E/S Entrée/sortie IAR Systems® Leader mondial des outils et services logiciels pour le développement de systèmes embarqués. IDE Environnement de développement intégré. Une application logicielle qui fournit des fonctionnalités complètes aux programmeurs informatiques pour le développement de logiciels. IoT Internet des objets I²C Circuit inter-intégré (IIC) LL Pilotes de bas niveau MAC Code d'authentification de message MCU Unité de microcontrôleur MDK-ARM Kit de développement de microcontrôleur Keil® pour Arm® MPU Unité de protection de mémoire NVM Mémoire non volatile

Système d'exploitation Système d'exploitation SE Élément sécurisé SHA Algorithme de hachage sécurisé SLA Contrat de licence du logiciel ST STMicroelectronics TLS Sécurité de la couche de transport USB Bus série universel

UM2646
Glossaire

UM2646 – Rév 4

pages 19/23

UM2646
Contenu
Contenu
1 Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 2 éléments sécurisés STSAFE-A110. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 Description du middleware STSAFE-A1xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1 Description générale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 Module PRINCIPAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.4Module SERVICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.5Module CRYPTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.6 Modèles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.7 Structure des dossiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.8 Comment : intégration et configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.8.1 Étapes d'intégration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.8.2 Étapes de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4 Logiciel de démonstration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 ​​4.1 Authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Appairage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.3 Établissement des clés (établir le secret) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.4 Envelopper/déballer les enveloppes locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.5 Génération de paires de clés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Historique des révisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Liste des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Liste des figures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22

UM2646 – Rév 4

pages 20/23

UM2646
Liste des tableaux

Liste des tableaux

Tableau 1. Tableau 2. Tableau 3. Tableau 4. Tableau 5. Tableau 6.

API exportée par le module CORE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 API du module STSAFE-A110 CORE exportées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 API exportées du module SERVICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 API exportées par le module CRYPTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Historique des révisions du document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

UM2646 – Rév 4

pages 21/23

UM2646
Liste des figures

Liste des figures

Figure 1. Figure 2. Figure 3. Figure 4. Figure 5. Figure 6. Figure 7.

Architecture STSAFE-A1xx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Schéma fonctionnel de l'application STSAFE-A1xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture des modules 6 CORE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Architecture du module SERVICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Architecture du module CRYPTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Projet file structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Flux de commandes d'établissement des clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

UM2646 – Rév 4

pages 22/23

UM2646
AVIS IMPORTANT À LIRE ATTENTIVEMENT STMicroelectronics NV et ses filiales (« ST ») se réservent le droit d'apporter des changements, des corrections, des améliorations, des modifications et des améliorations aux produits ST et/ou à ce document à tout moment et sans préavis. Les acheteurs doivent obtenir les dernières informations pertinentes sur les produits ST avant de passer commande. Les produits ST sont vendus conformément aux conditions générales de vente de ST en vigueur au moment de la confirmation de la commande. Les acheteurs sont seuls responsables du choix, de la sélection et de l'utilisation des produits ST et ST n'assume aucune responsabilité pour l'assistance à l'application ou la conception des produits des acheteurs. Aucune licence, expresse ou tacite, sur un quelconque droit de propriété intellectuelle n'est accordée par ST dans les présentes. La revente de produits ST avec des dispositions différentes des informations énoncées dans le présent document annulera toute garantie accordée par ST pour un tel produit. ST et le logo ST sont des marques déposées de ST. Pour plus d'informations sur les marques ST, consultez www.st.com/trademarks. Tous les autres noms de produits ou de services sont la propriété de leurs propriétaires respectifs. Les informations contenues dans ce document annulent et remplacent les informations précédemment fournies dans les versions antérieures de ce document.
© 2024 STMicroelectronics Tous droits réservés

UM2646 – Rév 4

pages 23/23

Documents / Ressources

Progiciel STMicroelectronics X-CUBE-SAFEA1 [pdf] Guide de l'utilisateur
STSAFE-A100, STSAFE-A110, progiciel X-CUBE-SAFEA1, X-CUBE-SAFEA1, progiciel, progiciel

Références

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués *