Release_Notes.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="generator" content="pandoc" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
  7. <title>Release Notes for STM32 Secure Engine</title>
  8. <style type="text/css">
  9. code{white-space: pre-wrap;}
  10. span.smallcaps{font-variant: small-caps;}
  11. span.underline{text-decoration: underline;}
  12. div.column{display: inline-block; vertical-align: top; width: 50%;}
  13. </style>
  14. <link rel="stylesheet" href="_htmresc/mini-st_2020.css" />
  15. <!--[if lt IE 9]>
  16. <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
  17. <![endif]-->
  18. <link rel="icon" type="image/x-icon" href="_htmresc/favicon.png" />
  19. </head>
  20. <body>
  21. <div class="row">
  22. <div class="col-sm-12 col-lg-4">
  23. <center>
  24. <h1 id="release-notes-for-stm32-secure-engine">Release Notes for <strong>STM32 Secure Engine</strong></h1>
  25. <p>Copyright © 2017 STMicroelectronics<br />
  26. </p>
  27. <a href="https://www.st.com" class="logo"><img src="_htmresc/st_logo_2020.png" alt="ST logo" /></a>
  28. </center>
  29. <h1 id="purpose">Purpose</h1>
  30. <p>STM32 Secure Engine middleware provides a protected environment to manage all critical data and operations (such as cryptography operations accessing firmware encryption key, and others).</p>
  31. <p>Protected code and data are accessible through a single entry point (call gate mechanism) and it is therefore not possible to run or access any SE code or data without passing through it, otherwise a system reset is generated.</p>
  32. <p>Depending on hardware two different mechanisms are provided :<br />
  33. </p>
  34. <ul>
  35. <li>Firewall-based Secure Engine Isolation : The firewall is opened or closed using a specific “call gate” mechanism: a single entry point (placed at the 2nd word of the Code segment base address) must be used to open the gate and to execute the code protected by the firewall. If the protected code is accessed without passing through the call gate mechanism then a system reset is generated.<br />
  36. </li>
  37. </ul>
  38. <figure>
  39. <img src="_htmresc/Firewall.png" alt="Firewall-based isolation" /><figcaption>Firewall-based isolation</figcaption>
  40. </figure>
  41. <p><br />
  42. </p>
  43. <ul>
  44. <li>MPU-based Secure Engine Isolation : The MPU-based Secure Engine isolation relies on the concept of privileged and unprivileged levels of software execution. The software must run in unprivileged level of execution by default (when SBSFU or the User Application is running), except for very specific actions like platform initialization or interrupt handling.</li>
  45. </ul>
  46. <figure>
  47. <img src="_htmresc/MPU.png" alt="MPU-based isolation" /><figcaption>MPU-based isolation</figcaption>
  48. </figure>
  49. <p>For more details, refer to <a href="https://www.st.com/st-web-ui/static/active/en/resource/technical/document/user_manual/DM00414687.pdf">UM2262</a>, AppendixA : Getting started with X-CUBE-SBSFU expansion package</p>
  50. </div>
  51. <div class="col-sm-12 col-lg-8">
  52. <h1 id="update-history">Update History</h1>
  53. <div class="collapse">
  54. <input type="checkbox" id="collapse-section12" checked aria-hidden="true"> <label for="collapse-section12" aria-hidden="true">v2.5.3 / 3-June-2022</label>
  55. <div>
  56. <h2 id="main-changes">Main Changes</h2>
  57. <ul>
  58. <li>Changes for compatibility with IAR V9.20.1</li>
  59. </ul>
  60. <h2 id="known-limitations">Known Limitations</h2>
  61. <p>None</p>
  62. <h2 id="backward-compatibility">Backward Compatibility</h2>
  63. <p>Compatibility with V2.5.2</p>
  64. </div>
  65. </div>
  66. <div class="collapse">
  67. <input type="checkbox" id="collapse-section11" aria-hidden="true"> <label for="collapse-section11" aria-hidden="true">v2.5.2 / 10-December-2021</label>
  68. <div>
  69. <h2 id="main-changes-1">Main Changes</h2>
  70. <ul>
  71. <li><p>Update LICENSE file for Key Management Services middleware (Software license agreement description)</p></li>
  72. <li><p>For CKS_ENABLED feature (WB series): the initial state of the IPCC interrupts is now kept.</p></li>
  73. </ul>
  74. <h2 id="known-limitations-1">Known Limitations</h2>
  75. <p>None</p>
  76. <h2 id="backward-compatibility-1">Backward Compatibility</h2>
  77. <p>Compatibility with V2.5.1</p>
  78. </div>
  79. </div>
  80. <div class="collapse">
  81. <input type="checkbox" id="collapse-section10" aria-hidden="true"> <label for="collapse-section10" aria-hidden="true">v2.5.1 / 25-June-2021</label>
  82. <div>
  83. <h2 id="main-changes-2">Main Changes</h2>
  84. <ul>
  85. <li>Create LICENSE file for Key Management Services middleware (Software license agreement description)</li>
  86. </ul>
  87. <h2 id="known-limitations-2">Known Limitations</h2>
  88. <p>None</p>
  89. <h2 id="backward-compatibility-2">Backward Compatibility</h2>
  90. <p>Compatibility with V2.5.0</p>
  91. </div>
  92. </div>
  93. <div class="collapse">
  94. <input type="checkbox" id="collapse-section9" aria-hidden="true"> <label for="collapse-section9" aria-hidden="true">v2.5.0 / 20-May-2021</label>
  95. <div>
  96. <h2 id="main-changes-3">Main Changes</h2>
  97. <ul>
  98. <li><p>STM32WB Series : Add specific CKS lock key service (cannot be called in BY-PASS mode)</p></li>
  99. <li><p>Remove bootinfo structure and services</p></li>
  100. <li><p>Locked objects are no more accessible by searches</p></li>
  101. <li><p>Minor update with no functional impact</p></li>
  102. </ul>
  103. <h2 id="known-limitations-3">Known Limitations</h2>
  104. <p>None</p>
  105. <h2 id="backward-compatibility-3">Backward Compatibility</h2>
  106. <p>Break of compatibility with V2.4.1</p>
  107. </div>
  108. </div>
  109. <div class="collapse">
  110. <input type="checkbox" id="collapse-section8" aria-hidden="true"> <label for="collapse-section8" aria-hidden="true">V2.4.1 / 4-September-2020</label>
  111. <div>
  112. <h2 id="main-changes-4">Main Changes</h2>
  113. <ul>
  114. <li><p>Add service to enable and disable IRQ services</p></li>
  115. <li><p>Modify prepareimage to allow merge of any elf and bin files</p></li>
  116. </ul>
  117. <h2 id="known-limitations-4">Known Limitations</h2>
  118. <p>None</p>
  119. <h2 id="backward-compatibility-4">Backward Compatibility</h2>
  120. <p>No Break of compatibility with V2.4.0</p>
  121. </div>
  122. </div>
  123. <div class="collapse">
  124. <input type="checkbox" id="collapse-section7" aria-hidden="true"> <label for="collapse-section7" aria-hidden="true">V2.4.0 / 27-July-2020</label>
  125. <div>
  126. <h2 id="main-changes-5">Main Changes</h2>
  127. <ul>
  128. <li><p>Fix for IT management with firewall.</p></li>
  129. <li><p>Minor update with no functional impact.</p></li>
  130. </ul>
  131. <h2 id="known-limitations-5">Known Limitations</h2>
  132. <p>None</p>
  133. <h2 id="backward-compatibility-5">Backward Compatibility</h2>
  134. <p>None</p>
  135. </div>
  136. </div>
  137. <div class="collapse">
  138. <input type="checkbox" id="collapse-section6" aria-hidden="true"> <label for="collapse-section6" aria-hidden="true">V2.2.0 / 12-June-2020</label>
  139. <div>
  140. <h2 id="main-changes-6">Main Changes</h2>
  141. <ul>
  142. <li><p><strong>Management of interruption during code execution inside the firewall</strong> is now supported for applications with high real time constraints. IRQ are no more disabled when entering into the isolated code environment, when IT_MANAGEMENT compilation switch is enable.</p></li>
  143. <li>Add <strong>multi-images support</strong>:
  144. <ul>
  145. <li>A maximum of 3 active images and 3 download areas can be configured.</li>
  146. <li>Slot number parameter is added to the service SE_APPLI_GetActiveFwInfo().</li>
  147. <li>Control for read/write/erase operations are extended to the 3 active images headers.</li>
  148. <li>For each active image, authentication, decryption and integrity are controlled with specific keys.</li>
  149. </ul></li>
  150. <li>Add <strong>image state handling</strong> feature:
  151. <ul>
  152. <li>State information are added in the firmware header: FWIMG_STATE_NEW, FWIMG_STATE_SELFTEST, FWIMG_STATE_INVALID, FWIMG_STATE_VALID, FWIMG_STATE_VALID_ALL.</li>
  153. <li>New services added: SE_IMG_GetActiveFwState(), SE_IMG_SetActiveFwState(), SE_APP_ValidateFw().</li>
  154. <li>Image state transitions:
  155. <ul>
  156. <li>FWIMG_STATE_NEW -&gt; FWIMG_STATE_SELFTEST : at the end of installation process.</li>
  157. <li>FWIMG_STATE_SELFTEST -&gt; FWIMG_STATE_VALID : at first startup, the user application should call SE_APP_ValidateFw() to validate the new active image (if the self-tests are successful)</li>
  158. <li>FWIMG_STATE_SELFTEST -&gt; FWIMG_STATE_INVALID : at reset all actives images in “self-test state” are rollbacked-up to their previous version if identified (else erased).</li>
  159. <li>FWIMG_STATE_SELFTEST -&gt; FWIMG_STATE_VALID_ALL : the active image identified as MASTER will validate all new installed active images in a single operation.</li>
  160. </ul></li>
  161. </ul></li>
  162. <li>Update prepare image tools to support:
  163. <ul>
  164. <li>New examples mapping configuration:
  165. <ul>
  166. <li>Firmware header is located inside the internal flash between SBSFU binary and standalone loader binary in order to be protected by secure memory (HDP) : STM32H7B3I-DK 2_Images_ExtFlash example provided.</li>
  167. <li>Header is not contiguous with firmware image : this is required in multi-images configuration to group all headers inside the protected environment (B-L475E-IOT01A 2_Images_ExtFlash example provided). This is also required for image state handling to be able to keep write capability in the header during user application execution (B-L475E-IOT01A, B-L4S5I-IOT01A KMS and ST-SAFE examples provided)</li>
  168. </ul></li>
  169. <li>Header magic information becomes one of SFU1, SFU2 or SFU3 to identify the installation slot (slot active #1, slot active #2, slot active #3).</li>
  170. <li>Add image state information in the firmware image header.</li>
  171. <li>VALID/VALID/VALID tag is removed from image header. This tag is no more applicable since image state handling management.</li>
  172. <li>Header magic information becomes one of SFU1, SFU2 or SFU3 to identify the installation slot (slot active #1, slot active #2, slot active #3).</li>
  173. <li>For partial image generation, add alignment on SWAP_SIZE : a direct copy (no more gap to be added) can be implemented between the data received over the air and the write operations in the download area.</li>
  174. <li>For multi-images configuration, add append feature to be able to create a big binary made of SBSFU binary + 3 firmware images.</li>
  175. <li>Add certificates injection capability for KMS embedded keys configuration.</li>
  176. </ul></li>
  177. <li><p>For CKS_ENABLED feature (P-NUCLEO-WB55.Nucleo): the lock of CM0 keys is now done during execution of SE_LOCK_RESTRICT_SERVICES just before jumping into user application.</p></li>
  178. </ul>
  179. <h2 id="known-limitations-6">Known Limitations</h2>
  180. <p>None</p>
  181. <h2 id="backward-compatibility-6">Backward Compatibility</h2>
  182. <p>Break of compatibility with V2.1.0</p>
  183. </div>
  184. </div>
  185. <div class="collapse">
  186. <input type="checkbox" id="collapse-section5" aria-hidden="true"> <label for="collapse-section5" aria-hidden="true">V2.1.0 / 17-January-2020</label>
  187. <div>
  188. <h2 id="main-changes-7">Main Changes</h2>
  189. <ul>
  190. <li><p>Management of <strong>header not contiguous with firmware</strong> for external flash : when slot0 is mapped in external flash, header of slot0 must be contiguous to SBSFU area, in order to be protected by secure memory</p></li>
  191. <li><p>New Secure Engine service (SECBOOT_ECCDSA_WITH_AES128_CTR_SHA256) for <strong>initialization of OTFDEC with symmetric keys</strong> ; AES CTR cryptographic scheme is required for external flash with OTFDEC variant</p></li>
  192. <li>Update of <strong>prepareimage.py utility</strong> to support :<br />
  193. <ul>
  194. <li>partial image update<br />
  195. </li>
  196. <li>generation of big binary for STM32H7B3I-DK board
  197. <ul>
  198. <li>1 binary for internal flash (SBSFU and Header)</li>
  199. <li>1 binary for external flash (slot0)</li>
  200. </ul></li>
  201. </ul></li>
  202. <li><p>Changes in <strong>management of exceptions for STM32 series supporting Flash ECC error</strong> (STM32L4, STM32G0, STM32G4, STM32H7 and STM32WB series) : fix on double ecc error management</p></li>
  203. </ul>
  204. <h2 id="known-limitations-7">Known Limitations</h2>
  205. <p>None</p>
  206. <h2 id="backward-compatibility-7">Backward Compatibility</h2>
  207. <p>Break of compatibility with V2.0.0</p>
  208. </div>
  209. </div>
  210. <div class="collapse">
  211. <input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">V2.0.0 / 13-July-2019</label>
  212. <div>
  213. <h2 id="main-changes-8">Main Changes</h2>
  214. <p><strong>General improvements (software counter measures) against software attacks and against basic hardware faults injection</strong></p>
  215. <p>Secure Engine extended with <strong>Key Management Services</strong>, replacing former secure engine crypto services when KMS feature is enabled</p>
  216. <p>Add SE_IMG_Erase API to be able to erase slot #0 header: mandatory for NUCLEO-L073RZ (specific behavior of STM32L0 flash interface : writing instructions during erasing sequence)</p>
  217. <p>prepareimage.py utility updated to support :<br />
  218. - partial image update<br />
  219. - pairing keys, for communication with STSAFE-A100</p>
  220. <h2 id="known-limitations-8">Known Limitations</h2>
  221. <p>None</p>
  222. <h2 id="backward-compatibility-8">Backward Compatibility</h2>
  223. <p>Break of compatibility with V1.2.0</p>
  224. </div>
  225. </div>
  226. <div class="collapse">
  227. <input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true">V1.2.0 / 14-December-2018</label>
  228. <div>
  229. <h2 id="main-changes-9">Main Changes</h2>
  230. <p>prepareimage/key/translate_key scripts improvements :<br />
  231. - Quicker execution timing.<br />
  232. - Support of big elf in order to be able to flash SBSFU+ UserApp from IDE : refer to AN5056 for more details.<br />
  233. - Adaptation for ARM V6M architecture (cortex MO+)<br />
  234. - Remove support of cipher text stealing : 16 bytes alignment ensure with linker command files during UserAppbuild process.</p>
  235. <p>Add mapping_export.h for IAR and SW4STM32 tool chains to avoid mapping symbols inclusion into *.c files.</p>
  236. <p>Add support of SE service calls from unprivileged part of application : SE_APP_GET_ACTIVE_FW_INFO.</p>
  237. <p>Security controls added :<br />
  238. - Check the mapping of the data given as parameters toSecure Engine services (SE_BufferCheck_SBSFU() /SE_BufferCheck_in_se_ram()).<br />
  239. - Clean Secure Engine RAM data (SE_LL_CORE_Cleanup())when leaving SBSFU (SE_LockRestrictServices()).</p>
  240. <h2 id="known-limitations-9">Known Limitations</h2>
  241. <p>None</p>
  242. </div>
  243. </div>
  244. <div class="collapse">
  245. <input type="checkbox" id="collapse-section2" aria-hidden="true"> <label for="collapse-section2" aria-hidden="true">V1.1.0 / 20-April-2018</label>
  246. <div>
  247. <h2 id="main-changes-10">Main Changes</h2>
  248. <p>Multiple crypto scheme implemented under compilation switch (se_crypto_config.h) :<br />
  249. - SECBOOT_AES128_GCM_AES128_GCM_AES128_GCM: symmetric crypto.<br />
  250. - SECBOOT_ECCDSA_WITH_AES128_CBC_SHA256(default config) : asymmetric crypto with encrypted (AES128-CBC)Firmware.<br />
  251. - SECBOOT_ECCDSA_WITHOUT_ENCRYPT_SHA256 : asymmetric crypto without firmware encryption.<br />
  252. </p>
  253. <p>Build process modification : scripts added in Utilities/KeysAndImages called during :<br />
  254. - SECoreBin build for key generation.<br />
  255. - UserApp build for firmware encryption.<br />
  256. - Windows executable version of the python scripts available : This is now the default tooling for pre/post build actions (so python not mandatory any more)</p>
  257. <p>Secure Engine now using its own stack inside protected area</p>
  258. <p>Files structure updated to provide more feature modularity and feature customization flexibility</p>
  259. <h2 id="known-limitations-10">Known Limitations</h2>
  260. <p>None</p>
  261. </div>
  262. </div>
  263. <div class="collapse">
  264. <input type="checkbox" id="collapse-section1" aria-hidden="true"> <label for="collapse-section1" aria-hidden="true">V1.0.0 / 1-December-2017</label>
  265. <div>
  266. <h2 id="main-changes-11">Main Changes</h2>
  267. <h3 id="first-release">First release</h3>
  268. <h2 id="known-limitations-11">Known Limitations</h2>
  269. <p>None</p>
  270. </div>
  271. </div>
  272. </div>
  273. </div>
  274. <footer class="sticky">
  275. For complete documentation on <strong>Security framework for STM32 series</strong>, visit: <a href="https://www.st.com/stm32trust">STM32Trust</a>
  276. </footer>
  277. </body>
  278. </html>