Oprogramowanie ST Microelectronics STM32 Signing Tool
Wstęp
Oprogramowanie narzędzia do podpisywania STM32 (nazwane w tym dokumencie STM32-SignTool) jest zintegrowane z STM32CubeProgrammer (STM32CubeProg). STM32-SignTool to kluczowe narzędzie, które gwarantuje bezpieczną platformę i zapewnia podpisywanie obrazów binarnych przy użyciu kluczy ECC generowanych przez oprogramowanie STM32-KeyGen (więcej szczegółów można znaleźć w instrukcji obsługi oprogramowania generatora kluczy STM32 (UM2542)). Podpisane obrazy binarne są używane podczas bezpiecznej sekwencji rozruchowej STM32, która obsługuje zaufany łańcuch rozruchowy. Ta akcja zapewnia uwierzytelnianie i kontrolę integralności załadowanych obrazów. STM32-SignTool generuje obraz binarny file, klucz publiczny filei klucz prywatny file. Obraz binarny file zawiera dane binarne, które mają zostać zaprogramowane dla urządzenia. Klucz publiczny file zawiera klucz publiczny ECC w formacie PEM, wygenerowany za pomocą STM32-KeyGen. Klucz prywatny file zawiera zaszyfrowany klucz prywatny ECC w formacie PEM, wygenerowany za pomocą STM32-KeyGen. Podpisany plik binarny file można również wygenerować z już podpisanego file z partią file mode. W tym przypadku następujące parametry nie są obowiązkowe: punkt wejścia obrazu, adres ładowania obrazu i parametry wersji obrazu. Niniejszy dokument dotyczy produktów wymienionych w poniższej tabeli.
Tabela 1. Obowiązujące produkty
Typ produktu | Numer części lub seria produktu |
Mikrokontrolery | Seria STM32N6 |
Mikroprocesor | Seria STM32MP1 i STM32MP2 |
W poniższych sekcjach STM32 odnosi się do produktów wymienionych w tabeli powyżej, o ile nie zaznaczono inaczej.
Zainstaluj STM32-SignTool
To narzędzie jest instalowane z pakietem STM32CubeProgrammer (STM32CubeProg). Aby uzyskać więcej informacji na temat procedury konfiguracji, zapoznaj się z sekcją 1.2 opisu oprogramowania STM32CubeProgrammer (UM2237) w instrukcji obsługi. To oprogramowanie obsługuje produkty STM32 oparte na procesorze Arm® Cortex®.
Uwaga: Arm jest zastrzeżonym znakiem towarowym firmy Arm Limited (lub jej spółek zależnych) w Stanach Zjednoczonych i/lub gdzie indziej.
Interfejs wiersza poleceń STM32-SignTool
Poniższe sekcje opisują sposób korzystania z narzędzia STM32-SignTool z poziomu wiersza poleceń.
Polecenia
Poniżej znajduje się lista dostępnych poleceń:
- –obraz-binarny(-bin), –wejście(-wejście)
- Opis: obraz binarny file ścieżka (rozszerzenie .bin)
- Składnia: 1 -bin /home/Użytkownik/binaryFile.kosz
- Składnia: 2 -in /home/User/binaryFile.kosz
- –wersja obrazu (-iv)
- Opis: wprowadza wersję obrazu podpisanego obrazu file
- Składnia: -iv
- –klucz prywatny (-prvk)
- Opis: klucz prywatny file ścieżka (rozszerzenie .pem)
- Składnia: -prvkfile_ścieżka>
- Exampczytaj: -prvk ../privateKey.pem
- –klucz-publiczny -pubk
- Opis: klucz publiczny file ścieżki
- Składnia: -pubkFile_Ścieżka{1..8}>
- Dla nagłówka v1: użyj tylko jednej ścieżki klucza dla produktów STM32MP15xx
- W przypadku nagłówka v2 i nowszych: użyj ośmiu ścieżek kluczy dla pozostałych
- –hasło (-pwd)
- Opis: hasło klucza prywatnego (hasło to musi zawierać co najmniej cztery znaki)
- Example: -pwd azerty
- • –adres-ładowania (-la)
- Opis: adres ładowania obrazu
- Example: -la
- –punkt wejścia (-ep)
- Opis: punkt wejścia obrazu
- Example: -ep
- –opcja-flagi (-of)
- Opis: flagi opcji obrazu (wartość domyślna = 0)
- Example: -z
- –algorytm (-a)
- Opis: określa jeden z prime256v1 (wartość 1, domyślna) lub brainpoolP256t1 (wartość 2)
- Exampczytaj: -a <2>
- –wyjście (-o)
- Opis: wyjście file ścieżka. Ten parametr jest opcjonalny. Jeśli nie jest określony, wyjście file jest generowany w tym samym źródle file ścieżka (np.ample, obraz binarny file jest C:\BinaryFile.bin). Podpisany plik binarny file jest C:\BinaryFile_Podpisano.bin.
- Składnia: -oFile_Ścieżka>
- –typ (-t)
- Opis: typ binarny. Możliwe wartości to ssbl, fsbl, teeh, teed, teex i copro
- Składnia: -t
- –cichy (-s)
- Opis: nie wyświetlono żadnego komunikatu o zastąpieniu istniejącego wyjścia file
- –pomoc (-h i -?)
- Opis: pokazuje pomoc
- –wersja (-v)
- Opis: wyświetla wersję narzędzia
- –enc-dc (-encdc)
- Opis: stała pochodna szyfrowania dla szyfrowania FSBL [nagłówek v2]
- Składnia: -encdc
- –enc-klucz (-enck)
- Opis: Tajny OEM file dla szyfrowania FSBL [nagłówek v2]
- Składnia: -enck
- –dump-nagłówek (–dump)
- Opis: parsowanie i zrzucanie nagłówka obrazu
- Składnia: -dumpFile_Ścieżka>
- –wersja-nagłówka (-hv)
- Opis: wersja nagłówka podpisu, możliwe wartości: 1, 2, 2.1, 2.2 i 2.3
- Example dla STM32MP15xx: -hv 2
- Example dla STM32MP25xx: -hv 2.2
- Example dla STM32N6xxx: -hv 2.3
- –bez-kluczy (-nk)
- Opis: dodawanie pustego nagłówka bez opcji kluczowych
- Uwaga: należy wyłączyć opcję uwierzytelniania poleceniem option flags
Examples dla STM32-SignTool
Następujący exampPoniżej przedstawiono sposób użycia narzędzia STM32-SignTool:
Examp1
-bin /home/Użytkownik/BinarFile.bin –pubk /home/user/publicKey.pem –prvk /home/user/privateKey.pem –iv 5 –pwd azerty –la 0x20000000 –ep 0x08000000 Wybrano domyślny algorytm (prime256v1), a wartość flagi opcji wynosi 0 (wartość domyślna). Wyjście binarne ze znakiem file (DwójkowyFile_Signed.bin) jest tworzony w folderze /home/user/
Examp2
-bin /home/Użytkownik/Folder1/BinaryFile.bin –pubk /home/użytkownik/kluczpubliczny.pem –prvk /home/użytkownik/kluczprywatny.pem –iv 5 –pwd azerty –s –la 0x20000000 –ep 0x08000000 –a 2 –o /home/użytkownik/Folder2/Folder3/signedFile.bin W tym przypadku wybierany jest algorytm BrainpoolP256t1. Nawet jeśli Folder2 i Folder3 nie istnieją, są tworzone. Za pomocą polecenia –s, nawet jeśli file istnieje pod tą samą nazwą, zostanie ona automatycznie zastąpiona bez żadnego komunikatu.
Examp3
Podpisz plik binarny file korzystając z wersji nagłówka 2, która zawiera osiem kluczy publicznych dla przepływu uwierzytelniania.
./STM32_SigningTool_CLI.exe -bin /home/user/input.bin -pubk kluczpubliczny00.pem kluczpubliczny01.pem kluczpubliczny02.pem kluczpubliczny03.pem kluczpubliczny04.pem kluczpubliczny05.pem kluczpubliczny06.pem kluczpubliczny07.pem -prvk kluczpubliczny00.pem -pwd azerty -t fsbl -iv 0x00000000 -la 0x20000000 -ep 0x08000000 -of 0x80000001 -o /home/user/output.stm32
Examp4
Podpisz plik binarny file korzystając z wersji nagłówka 2, która zawiera osiem kluczy publicznych do uwierzytelniania i przepływu szyfrowania.
./STM32_SigningTool_CLI.exe -bin /home/user/input.bin -pubk kluczpubliczny00.pem kluczpubliczny01.pem kluczpubliczny02.pem kluczpubliczny03.pem kluczpubliczny04.pem kluczpubliczny05.pem kluczpubliczny06.pem kluczpubliczny07.pem -prvk kluczpubliczny00.pem -iv 0x00000000 -pwd azerty -la 0x20000000 -ep 0x08000000 -t fsbl -of 0x00000003 -encdc 0x25205f0e -enck /home/user/OEM_SECRET.bin -o /home/user/output.stm32
Examp5
Sprawdź wynikowy obraz, analizując dane wyjściowe file i sprawdź każde pole nagłówka. ./STM32_SigningTool_CLI.exe -dump /home/user/output.stm32
Examp6
Dodaj nagłówek bez podpisywania i wdrażania kluczy. STM32_SigningTool_CLI.exe -in input.bin -nk -of 0x0 -iv 1 -hv 2.2 -o output.stm32
Tryb autonomiczny
Podczas wykonywania STM32-SignTool w trybie samodzielnym, najpierw należy wprowadzić ścieżkę bezwzględną. Następnie dwukrotnie żądane jest hasło w celu potwierdzenia, jak pokazano na poniższym rysunku.
Rysunek 1. STM32-SignTool w trybie autonomicznym
Następne kroki są następujące:
- Wybierz jeden z dwóch algorytmów.
- Wprowadź wersję obrazu, punkt wejścia obrazu i adres ładowania obrazu.
- Wprowadź wartość flagi opcji.
Inne wyjście file Jeśli to konieczne, można określić ścieżkę lub nacisnąć Enter, aby kontynuować z istniejącą ścieżką.
Rozwiązanie PKCS#11
Podpisane obrazy binarne są używane podczas bezpiecznej sekwencji rozruchowej STM32, która obsługuje zaufany łańcuch rozruchowy.
Ta akcja zapewnia uwierzytelnienie i sprawdzenie integralności załadowanych obrazów.
Klasyczne polecenie podpisywania żąda podania jako danych wejściowych wszystkich kluczy publicznych i prywatnych files. To są
bezpośrednio dostępne dla każdej osoby, która ma pozwolenie na wykonanie usługi podpisywania. Ostatecznie można to uznać
być wyciekiem bezpieczeństwa. Istnieje kilka rozwiązań chroniących klucze przed wszelkimi próbami kradzieży danych kluczy. W tym
kontekście przyjęto rozwiązanie PKCS#11.
Interfejs API PKCS#11 może być używany do obsługi i przechowywania kluczy kryptograficznych. Ten interfejs określa sposób
komunikować się z urządzeniami kryptograficznymi, takimi jak HSM (sprzętowe moduły bezpieczeństwa) i karty inteligentne.
celem tych urządzeń jest generowanie kluczy kryptograficznych i podpisywanie informacji bez ujawniania klucza prywatnego
materiał na zewnątrz.
Aplikacje programowe mogą wywoływać API w celu wykorzystania tych obiektów w następujących celach:
• Generuj klucze symetryczne/asymetryczne
• Szyfrowanie i deszyfrowanie
• Obliczanie i weryfikacja podpisu cyfrowego
PKCS #11 zapewnia aplikacjom wspólny, logiczny view urządzenia, które nazywane jest tokenem kryptograficznym i
przypisuje każdemu tokenowi identyfikator slotu. Aplikacja identyfikuje token, do którego chce uzyskać dostęp, określając
odpowiedni identyfikator slotu.
Narzędzie STM32SigningTool służy do zarządzania kluczowymi obiektami przechowywanymi na kartach inteligentnych i podobnych kartach zabezpieczających PKCS#11
tokeny, których poufne klucze prywatne nigdy nie opuszczają urządzenia.
Narzędzie STM32SigningTool wykorzystuje interfejs PKCS#11 do manipulowania plikami binarnymi wejściowymi i podpisywania ich na podstawie ECDSA
klucze publiczne/prywatne. Klucze te są przechowywane w tokenach bezpieczeństwa (sprzętowych lub programowych).
Dodatkowe polecenia PKCS#11
- –moduł (-m)
- Opis: określ ścieżkę modułu/biblioteki PKCS#11 do załadowania (dll, so)
- Składnia: -m
- • –indeks-klucza (-ki)
- –indeks-klucza (-ki)
- Opis: lista użytych indeksów kluczy w formacie heksadecymalnym
- Użyj jednego indeksu dla nagłówka v1 i ośmiu indeksów dla nagłówka v2 (rozdzielonych spacją)
- Składnia: -ki
- Opis: lista użytych indeksów kluczy w formacie heksadecymalnym
- –indeks-slotu (-si)
- Opis: określ indeks gniazda, które ma zostać użyte (domyślnie 0x0)
- Składnia: -si
- –slot–identyfikator (-sid)
- Opis: określ identyfikator slotu, który ma zostać użyty (opcjonalnie, w formacie dziesiętnym lub szesnastkowym)
- Składnia: -sid
- Jeśli opcja –slot-identifier jest używana jednocześnie z –slot-index, narzędzie sprawdza, czy ta konfiguracja pasuje do tego samego slotu. Identyfikator odzwierciedla indeks, który został wymieniony; w przeciwnym razie występuje błąd.
- Można użyć –slot-identifier bez wspominania –slot-index. Narzędzie systematycznie przeszukuje indeks slotu.
- –aktywny-indeks-klucza (-aki)
- Opis: określ aktualny indeks aktywnego klucza (domyślnie 0)
- Składnia: -aki < wartość_szesnastkowa >
PKH/PKTH file generacja
Po przetworzeniu operacji podpisywania narzędzie systematycznie generuje PKH files do użycia później dla bezpiecznika OTP.
- PKH file nazwa pkcsHashPublicKey0x{active_key_index}.bin dla nagłówka v1
- PKT file nazwa pkcsPublicKeysHashHashes.bin dla nagłówka v2
Examples
Narzędzie może podpisywać dane wejściowe files zarówno dla nagłówka v1, jak i v2, z minimalną różnicą w wierszu poleceń.
- Nagłówek v1
-bin wejście.bin -iv -hasło -la -odcinek -T -z –
-indeks-klucza -aki 0 –moduł –indeks-slotu -o wyjście.stm32 - Nagłówek v2
-bin wejście.bin -iv -hasło -la -odcinek -T -z – -indeks-klucza -aki -moduł –indeks-slotu -o wyjście.stm0
Błąd w wierszu poleceń lub niezdolność narzędzia do zidentyfikowania pasujących obiektów kluczy powoduje wyświetlenie komunikatu o błędzie. Wskazuje to na źródło problemu. SigningTool może używać tylko wstępnie skonfigurowanych modułów HSM i nie jest przeznaczony do zarządzania ani tworzenia nowych obiektów zabezpieczeń. Dlatego konieczne jest zainstalowanie bezpłatnego oprogramowania w celu skonfigurowania odpowiedniego środowiska. Następnie można wygenerować klucze i uzyskać informacje o obiektach.
Opcja identyfikatora slotu:
- -bin input.bin –type fsbl -hv 1 –key-index 0x40 -aki 0 –module softhsm2.dll –password prg-dev -ep 0x2ffe4000 -s -si 0 -sid 0x51a53ad8 -la 0x2ffc2500 -iv 0 -of 0x80000000 -o output.stm32
Błąd npamples:
- Nieprawidłowy indeks slotu
Rysunek 2. HSM TOKEN_NOT_RECOGNIZED
Nieznany obiekt klucza wymieniony w poleceniu –key-index
Rysunek 3. HSM OBJECT_HANDLE_INVALID
Narzędzie traktuje obiekty sekwencyjnie. Jeśli nie może zidentyfikować pasujących obiektów kluczowych przy pierwszej próbie, operacja podpisywania zatrzymuje proces. Następnie wyświetlany jest komunikat o błędzie, aby wskazać źródło problemu.
Historia rewizji
Tabela 2. Historia zmian dokumentu
Data | Wersja | Zmiany |
14-lut-2019 | 1 | Pierwsze wydanie. |
26-lis-2021 |
2 |
Zaktualizowano:
• Sekcja 2.1: Polecenia • Rozdział 2.2: Wyj.amples dla STM32-SignTool • Dodano sekcję 2.4: rozwiązanie PKCS#11 |
27-cze-2022 | 3 | Zaktualizowana sekcja 2.1: Polecenia |
26-cze-2024 |
4 |
Zastąpiono w całym dokumencie:
• Seria STM32MP1 firmy STM32MPx • STM32MP1-SignTool firmy STM32MP-SignTool • STM32MP1-KeyGen przez STM32MP-KeyGen Zaktualizowano –public-key -pubk i dodano –header-version (-hv) i –no-keys (- nk) w Sekcji 2.1: Polecenia. Dodano „Byłyample 6” w rozdziale 2.2: ExampPliki dla STM32-SignTool. |
14-lis-2024 |
5 |
W dodatku:
• Seria STM32N6 do odpowiednich produktów Zastąpiono w całym dokumencie: • STM32MP firmy STM32 Zaktualizowano: • Sekcja 2.1: Polecenia |
06-marca-2025 |
6 |
Zaktualizowano:
• Sekcja 2.4.1: Dodatkowe polecenia PKCS#11 • Rozdział 2.4.3: Wyj.amples |
WAŻNA INFORMACJA – PRZECZYTAJ UWAŻNIE
STMicroelectronics NV i jej spółki zależne („ST”) zastrzegają sobie prawo do wprowadzania zmian, poprawek, ulepszeń, modyfikacji i udoskonaleń w produktach ST i/lub w niniejszym dokumencie w dowolnym momencie bez powiadomienia. Nabywcy powinni uzyskać najnowsze istotne informacje o produktach ST przed złożeniem zamówienia. Produkty ST są sprzedawane zgodnie z warunkami sprzedaży ST obowiązującymi w momencie potwierdzenia zamówienia. Nabywcy ponoszą wyłączną odpowiedzialność za wybór, selekcję i użytkowanie produktów ST, a ST nie ponosi odpowiedzialności za pomoc w zakresie aplikacji ani za projekt produktów nabywców. ST nie udziela żadnej licencji, wyraźnej ani dorozumianej, na żadne prawo własności intelektualnej w niniejszym dokumencie. Odsprzedaż produktów ST z postanowieniami innymi niż informacje zawarte w niniejszym dokumencie unieważnia wszelkie gwarancje udzielone przez ST na taki produkt. ST i logo ST są znakami towarowymi ST. Aby uzyskać dodatkowe informacje o znakach towarowych ST, zapoznaj się z witryną www.st.com/trademarks. Wszystkie inne nazwy produktów lub usług są własnością ich odpowiednich właścicieli. Informacje zawarte w niniejszym dokumencie zastępują informacje podane wcześniej w jakiejkolwiek poprzedniej wersji tego dokumentu.
© 2025 STMicroelectronics – Wszelkie prawa zastrzeżone
Często zadawane pytania
- P: Co zrobić, jeśli podczas korzystania z narzędzia STM32-SignTool wystąpią błędy?
- A: Sprawdź składnię polecenia, upewnij się, że wszystkie wymagane parametry zostały podane poprawnie i zapoznaj się z instrukcją obsługi, aby uzyskać wskazówki dotyczące rozwiązywania problemów.
- P: Czy mogę używać STM32-SignTool na różnych systemach operacyjnych?
- A: STM32-SignTool jest przeznaczony do pracy na określonych systemach operacyjnych. Szczegóły dotyczące zgodności można znaleźć w specyfikacjach oprogramowania.
Dokumenty / Zasoby
![]() |
Oprogramowanie ST Microelectronics STM32 Signing Tool [plik PDF] Instrukcja obsługi Seria STM32N6, seria STM32MP1, seria STM32MP2, oprogramowanie do narzędzi do podpisywania STM32, STM32, oprogramowanie do narzędzi do podpisywania, oprogramowanie narzędziowe, oprogramowanie |