<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ankur Gohel</title>
    <description>The latest articles on DEV Community by Ankur Gohel (@ag_82a1d5551e40a).</description>
    <link>https://dev.to/ag_82a1d5551e40a</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176094%2Fd3adcd4c-cb4b-4043-a20b-33563b62a9bd.jpg</url>
      <title>DEV Community: Ankur Gohel</title>
      <link>https://dev.to/ag_82a1d5551e40a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ag_82a1d5551e40a"/>
    <language>en</language>
    <item>
      <title>Secure Boot in Production: How to Protect Signing Keys and Provision Devices Securely</title>
      <dc:creator>Ankur Gohel</dc:creator>
      <pubDate>Sun, 18 Oct 2026 00:45:00 +0000</pubDate>
      <link>https://dev.to/ag_82a1d5551e40a/esp32-secure-boot-in-production-how-to-protect-signing-keys-and-provision-devices-securely-283f</link>
      <guid>https://dev.to/ag_82a1d5551e40a/esp32-secure-boot-in-production-how-to-protect-signing-keys-and-provision-devices-securely-283f</guid>
      <description>&lt;p&gt;Secure boot is often straightforward to demonstrate on a development board. Generate a key pair, sign the firmware, enable secure boot, and verify that the device boots correctly.&lt;/p&gt;

&lt;p&gt;Production is a different story.&lt;/p&gt;

&lt;p&gt;When hundreds or thousands of ESP32 devices move through a manufacturing line, the challenge is no longer just verifying a firmware signature. It is protecting signing authority, provisioning the correct trust anchor, managing irreversible eFuse settings, and ensuring that a compromised manufacturing station cannot compromise an entire product fleet.&lt;/p&gt;

&lt;p&gt;I believe one of the most important questions to answer before mass production is this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do we establish trust in every device without exposing the private key that gives us the authority to sign trusted firmware?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This article explores a practical production-line architecture for ESP32 Secure Boot V2, including key storage, eFuse provisioning, manufacturing threats, flash encryption, and the checks I would put in place before shipping a device.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fso9hrqukijre2484gh7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fso9hrqukijre2484gh7c.png" alt=" " width="800" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1: Secure Boot V2 production architecture.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. First, understand which key the ESP32 actually needs
&lt;/h2&gt;

&lt;p&gt;One mistake I want to avoid is treating every cryptographic key as if it serves the same purpose.&lt;/p&gt;

&lt;p&gt;In an asymmetric secure-boot design, the firmware-signing private key and the device's verification trust anchor have different responsibilities.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Private signing key:&lt;/strong&gt; Used by an authorized signing system to sign firmware images. This key must remain protected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public verification key:&lt;/strong&gt; Used to verify firmware signatures. It is not secret.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public-key digest:&lt;/strong&gt; A cryptographic hash of the public key. On the original ESP32 using Secure Boot V2, this digest is stored in eFuse and anchors the device's trust in the verification key.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the original ESP32, Secure Boot V2 is supported on chip revision 3.0 and later. It uses RSA-PSS signatures with RSA-3072 keys.&lt;/p&gt;

&lt;p&gt;The private signing key does not need to be copied into every ESP32 or stored on every manufacturing station.&lt;/p&gt;

&lt;p&gt;Instead, the device verifies the firmware using the public key and the trusted digest established through its eFuse configuration.&lt;/p&gt;

&lt;p&gt;This distinction is fundamental to the production architecture.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Design principle:&lt;/strong&gt; Keep the authority to sign firmware separate from the process that physically provisions the device.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Official reference: &lt;a href="https://docs.espressif.com/projects/esp-idf/en/stable/esp32/security/secure-boot-v2.html" rel="noopener noreferrer"&gt;ESP-IDF Secure Boot V2&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Production-line architecture: separate signing from provisioning
&lt;/h2&gt;

&lt;p&gt;I would divide the production system into five logical components.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        OFFLINE ROOT OF TRUST
        Protects signing authority
                  |
                  v
       FIRMWARE SIGNING SERVICE
       HSM-backed private key
                  |
          Signed firmware
                  |
                  v
       AUTHENTICATED FACTORY STATION
       - Identifies the device
       - Flashes approved firmware
       - Executes provisioning steps
       - Verifies results
                  |
                  v
             ESP32 DEVICE
       - Public-key digest in eFuse
       - Signed firmware in flash
       - Secure Boot V2 verification
                  |
                  v
       MANUFACTURING RECORD SYSTEM
       Device ID, firmware version,
       provisioning status and audit log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The arrows represent logical relationships, not a requirement for every operation to pass through a single service.&lt;/p&gt;

&lt;p&gt;For example, firmware may be signed before it reaches the factory. The manufacturing station can then flash an approved, signed release without having access to the private signing key.&lt;/p&gt;

&lt;h3&gt;
  
  
  Component responsibilities
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Offline root of trust&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Protects the authority used to authorize operational signing keys. Its access should be tightly controlled and separated from routine factory operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Firmware-signing service&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Signs approved firmware releases. Ideally, the private key remains inside a Hardware Security Module (HSM), and callers can request authorized signing operations without exporting the key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manufacturing station&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Programs the device and executes an approved provisioning workflow. It should have only the permissions necessary for its job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ESP32 device&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Uses its configured trust anchor to verify firmware according to the selected secure-boot scheme.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manufacturing record system&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Records the device identifier, firmware release, provisioning status, station identity, and relevant verification results. It should not store private signing keys or unnecessary secret material.&lt;/p&gt;

&lt;p&gt;The main security benefit is that compromising one factory computer should not automatically give an attacker the ability to create firmware trusted by every device in the fleet.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Where should the secure-boot key be stored?
&lt;/h2&gt;

&lt;p&gt;The answer depends on which key we are talking about.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Material&lt;/th&gt;
&lt;th&gt;Recommended location&lt;/th&gt;
&lt;th&gt;Security consideration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Firmware-signing private key&lt;/td&gt;
&lt;td&gt;HSM or equivalent protected signing infrastructure&lt;/td&gt;
&lt;td&gt;Restrict signing operations and prevent private-key export&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public verification key&lt;/td&gt;
&lt;td&gt;Firmware image, as supported by the secure-boot flow&lt;/td&gt;
&lt;td&gt;Public information; integrity and trust are what matter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public-key digest&lt;/td&gt;
&lt;td&gt;Appropriate ESP32 eFuse key block&lt;/td&gt;
&lt;td&gt;Configure the required read/write protections correctly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flash-encryption key&lt;/td&gt;
&lt;td&gt;Device-specific protected storage using the supported ESP-IDF workflow&lt;/td&gt;
&lt;td&gt;Secret key; protect against extraction and reuse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manufacturing metadata&lt;/td&gt;
&lt;td&gt;Access-controlled production database&lt;/td&gt;
&lt;td&gt;Record provenance without storing cryptographic secrets&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Why use an HSM?
&lt;/h3&gt;

&lt;p&gt;An HSM helps keep the private signing key within a protected cryptographic boundary. An authorized system submits a signing request, and the HSM performs the cryptographic operation without needing to export the private key.&lt;/p&gt;

&lt;p&gt;For a smaller team, an appropriately protected signing service may be a practical starting point. The important requirement is to define and enforce the security boundary around signing authority rather than leaving private keys on ordinary workstations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why use eFuse for the trust anchor?
&lt;/h3&gt;

&lt;p&gt;On the original ESP32 Secure Boot V2 implementation, the public-key digest is stored in eFuse. This helps anchor firmware verification to the expected public key.&lt;/p&gt;

&lt;p&gt;However, eFuse programming requires care. Many eFuse operations are irreversible, and the exact fields and protections depend on the chip and security configuration.&lt;/p&gt;

&lt;p&gt;One particularly important detail: &lt;strong&gt;the public-key digest must remain readable by the verification mechanism.&lt;/strong&gt; Do not blindly apply read protection to the digest.&lt;/p&gt;

&lt;p&gt;Reference: &lt;a href="https://docs.espressif.com/projects/esp-idf/en/stable/esp32/security/index.html" rel="noopener noreferrer"&gt;ESP-IDF security documentation&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. What can go wrong on the production line?
&lt;/h2&gt;

&lt;p&gt;A manufacturing station is part of the security boundary. It should not automatically be trusted simply because it is inside a factory.&lt;/p&gt;

&lt;p&gt;Here are the threats I would explicitly include in a production threat model.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Threat&lt;/th&gt;
&lt;th&gt;Potential impact&lt;/th&gt;
&lt;th&gt;Recommended mitigation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Factory workstation compromised&lt;/td&gt;
&lt;td&gt;Unauthorized provisioning or misuse of credentials&lt;/td&gt;
&lt;td&gt;Station authentication, least privilege, network isolation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Private signing key copied&lt;/td&gt;
&lt;td&gt;Malicious firmware can be signed with trusted credentials&lt;/td&gt;
&lt;td&gt;HSM-backed signing and no private-key export&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unapproved firmware flashed&lt;/td&gt;
&lt;td&gt;Device ships with an unauthorized image or release&lt;/td&gt;
&lt;td&gt;Controlled artifacts and post-flash verification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Incorrect eFuse programming&lt;/td&gt;
&lt;td&gt;Device becomes unbootable or loses intended protections&lt;/td&gt;
&lt;td&gt;Preflight validation and independent checks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debug interfaces left exposed&lt;/td&gt;
&lt;td&gt;Increased opportunity for inspection or manipulation&lt;/td&gt;
&lt;td&gt;Apply the documented production security configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Signing key compromised&lt;/td&gt;
&lt;td&gt;Malicious firmware may pass signature verification&lt;/td&gt;
&lt;td&gt;Key isolation, rotation and revocation planning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manufacturing records modified&lt;/td&gt;
&lt;td&gt;Device provenance becomes unreliable&lt;/td&gt;
&lt;td&gt;Access-controlled, tamper-evident audit records&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Comparing signing-key exposure
&lt;/h3&gt;

&lt;p&gt;The following ratings are illustrative threat-model scores, not measured security benchmarks.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Relative signing-key exposure risk
(1 = lower risk, 5 = higher risk)

HSM-backed signing service   █ 1
Protected signing service    ██ 2
Private key on factory PC    █████ 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact risk depends on implementation. A poorly configured signing service is not automatically secure just because it uses an HSM. Authorization, release approval, auditability, and operational controls still matter.&lt;/p&gt;

&lt;p&gt;The goal is to minimize the number of systems that can access signing authority and to make unauthorized signing detectable.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A safer ESP32 manufacturing workflow
&lt;/h2&gt;

&lt;p&gt;I would treat provisioning as a controlled transaction rather than a sequence of commands that a script executes without checking the device's state.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Prepare and sign the firmware
&lt;/h3&gt;

&lt;p&gt;Build the bootloader and application using the approved production configuration. Sign the release through the authorized signing process.&lt;/p&gt;

&lt;p&gt;The factory should receive only approved firmware artifacts and the information required to validate them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Authenticate the station and identify the device
&lt;/h3&gt;

&lt;p&gt;Verify the manufacturing station's identity and read the target device's identifier.&lt;/p&gt;

&lt;p&gt;Confirm the exact chip model, revision, and intended security profile. Do not assume that every ESP32-family chip supports the same Secure Boot V2 workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Inspect the existing eFuse state
&lt;/h3&gt;

&lt;p&gt;Before programming anything irreversible, inspect the relevant eFuse fields and compare them with the expected state for that device.&lt;/p&gt;

&lt;p&gt;If a device has unexpected security settings, stop and investigate instead of blindly continuing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Flash firmware and provision the trust anchor
&lt;/h3&gt;

&lt;p&gt;Use the documented ESP-IDF workflow for the target. Provision the public-key digest and other required settings according to the selected secure-boot scheme.&lt;/p&gt;

&lt;p&gt;The ordering of firmware flashing, digest provisioning, secure-boot activation, and any flash-encryption operations must follow the platform-specific instructions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Verify before irreversible operations
&lt;/h3&gt;

&lt;p&gt;Validate the firmware artifact, intended trust anchor, and current eFuse state before applying irreversible security settings.&lt;/p&gt;

&lt;p&gt;Read back and verify fields where the hardware permits it. For fields that are protected or not readable, verify using the documented status and validation mechanisms instead.&lt;/p&gt;

&lt;p&gt;Do not treat a timeout as proof that an eFuse operation failed. Inspect the device's actual state before retrying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Enable security controls and test boot
&lt;/h3&gt;

&lt;p&gt;Apply the documented secure-boot configuration and any required production restrictions on debugging and download interfaces.&lt;/p&gt;

&lt;p&gt;Power-cycle the device and verify that it boots the approved firmware successfully.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 7: Record and release the device
&lt;/h3&gt;

&lt;p&gt;Record the device identifier, firmware version, trust-anchor fingerprint or identifier, provisioning outcome, station identity, and relevant audit information.&lt;/p&gt;

&lt;p&gt;Mark the device as production-ready only after all mandatory checks pass.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow at a glance
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Prepare approved firmware
             |
             v
  Authenticate station and device
             |
             v
  Inspect current eFuse state
             |
             v
  Flash and provision trust anchor
             |
             v
  Verify configuration and image
             |
             v
  Enable required security controls
             |
             v
  Test boot and record results
             |
             v
       Release device
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This workflow should also define what happens when any step fails. A production process that handles successful provisioning but has no safe failure or recovery procedure is incomplete.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Secure boot is not flash encryption
&lt;/h2&gt;

&lt;p&gt;These two features solve different problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Secure boot&lt;/strong&gt; establishes firmware authenticity: the device verifies that firmware is signed by an authorized key before executing it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flash encryption&lt;/strong&gt; protects the confidentiality of supported data stored in external flash.&lt;/p&gt;

&lt;p&gt;A device can have secure boot enabled without having flash encryption configured. Depending on the product and threat model, that may leave firmware contents or stored data more exposed than intended.&lt;/p&gt;

&lt;p&gt;For production ESP32 devices, evaluate both features together.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable the appropriate secure-boot scheme for the target.&lt;/li&gt;
&lt;li&gt;Configure flash encryption in Release Mode when required.&lt;/li&gt;
&lt;li&gt;Follow Espressif's recommended device-specific flash-encryption key workflow.&lt;/li&gt;
&lt;li&gt;Apply the intended debug and download restrictions.&lt;/li&gt;
&lt;li&gt;Validate OTA updates and recovery procedures under the final security configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flash encryption is not a replacement for secure boot, and secure boot is not a replacement for protecting secrets.&lt;/p&gt;

&lt;p&gt;Reference: &lt;a href="https://docs.espressif.com/projects/esp-idf/en/stable/esp32/security/security-features-enablement-workflows.html" rel="noopener noreferrer"&gt;ESP-IDF security feature enablement workflows&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Plan for signing-key rotation before shipping
&lt;/h2&gt;

&lt;p&gt;Key rotation is easy to postpone during development and difficult to introduce after devices are deployed.&lt;/p&gt;

&lt;p&gt;Before mass production, answer these questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can the target support multiple trusted public-key digests?&lt;/li&gt;
&lt;li&gt;Can a new signing key be introduced without disrupting deployed devices?&lt;/li&gt;
&lt;li&gt;What happens if the production signing key is compromised?&lt;/li&gt;
&lt;li&gt;How will the manufacturer authorize an emergency firmware release?&lt;/li&gt;
&lt;li&gt;What recovery options remain if an update fails?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The answers depend on the exact ESP32 model, secure-boot scheme, and configured revocation mechanisms. Do not assume that every chip supports the same trust-anchor capacity or key-revocation behavior.&lt;/p&gt;

&lt;p&gt;For a production fleet, key rotation should be part of the security design, not an emergency improvisation.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. My production-readiness checklist
&lt;/h2&gt;

&lt;p&gt;Before releasing an ESP32 product to manufacturing, I would want clear answers to these questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Is the production signing private key protected and unavailable to factory stations?&lt;/li&gt;
&lt;li&gt;[ ] Are development and production signing keys separated?&lt;/li&gt;
&lt;li&gt;[ ] Is the target chip model and revision explicitly validated?&lt;/li&gt;
&lt;li&gt;[ ] Is the public-key digest provisioned and protected correctly?&lt;/li&gt;
&lt;li&gt;[ ] Are irreversible eFuse operations preceded by state validation?&lt;/li&gt;
&lt;li&gt;[ ] Is flash encryption configured where the threat model requires it?&lt;/li&gt;
&lt;li&gt;[ ] Are debug and download interfaces configured for production?&lt;/li&gt;
&lt;li&gt;[ ] Are interrupted provisioning and unexpected device states handled safely?&lt;/li&gt;
&lt;li&gt;[ ] Are OTA updates, recovery, and key rotation tested?&lt;/li&gt;
&lt;li&gt;[ ] Can each shipped device be traced to an approved firmware release and provisioning record?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If any answer is unclear, I would resolve it before scaling production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Secure boot is not just a bootloader feature. It is a trust-management problem that spans firmware development, signing infrastructure, manufacturing, device provisioning, OTA updates, and long-term maintenance.&lt;/p&gt;

&lt;p&gt;For an ESP32 product, my preferred design is to keep the firmware-signing private key inside protected signing infrastructure, provision only the trust material required by the device, and treat eFuse programming as a high-risk operation that requires explicit validation.&lt;/p&gt;

&lt;p&gt;The production line should not need the authority to create trusted firmware simply to manufacture a trusted device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protect signing authority centrally. Provision device trust deliberately. Verify every security-critical state before locking the hardware.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the foundation of a secure and maintainable ESP32 production process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Further reading
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.espressif.com/projects/esp-idf/en/stable/esp32/security/secure-boot-v2.html" rel="noopener noreferrer"&gt;ESP-IDF Secure Boot V2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.espressif.com/projects/esp-idf/en/stable/esp32/security/security-features-enablement-workflows.html" rel="noopener noreferrer"&gt;ESP-IDF security feature enablement workflows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.espressif.com/projects/esp-idf/en/stable/esp32/security/index.html" rel="noopener noreferrer"&gt;ESP-IDF security guides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://csrc.nist.gov/pubs/sp/800/57/pt1/r5/final" rel="noopener noreferrer"&gt;NIST SP 800-57 Part 1: Key Management&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;What does your production setup look like? Are you using ESP32 eFuse provisioning directly from the manufacturing station, or a separate provisioning service? I'd be interested in how other embedded teams handle this boundary.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>manufacturing</category>
      <category>esp32</category>
      <category>iot</category>
    </item>
  </channel>
</rss>
