ESP32-C3 CPA Detailed Results

Input Data

Power Traces

The captured data can be downloaded from here (8.73 GB).

Replication of results These traces have been captured using tools available in the esp-cpa repository. The following command can be used.
poetry run measure config/capture/esp32c3.py \
                   esp32c3.zarr \
                   --gui-display # Optional

AES Key

The key flashed in the target’s fuses is available below, and can be downloaded here.

00000000: c636 c050 fc66 fd40 32b0 8c6b 0834 9342  [email protected]
00000010: 0f5a a370 00ec d68e ba01 4b90 e01d 5aa8  .Z.p......K...Z.

To validate the attack, the following keys are computed.

  • First round tweaked key (at flash address 0x10): 2f5395410f892e12d69c2cb73256ce1d
  • Second round key (at flash address 0x10): 20b4fb001d9f763f26a46b6663d26cf7

First Round Results

Ranks

Replication of results The data displayed above can be locally computed using tools available in the esp-cpa repository. The following commands can be used.
# Compute correlations
poetry run analyze compute-correlations esp32c3.zarr \
                   config/analysis/esp32c3_round0.py \
                   corr.zarr
# Compute key ranks
poetry run analyze compute-ranks corr.zarr \
                   2f5395410f892e12d69c2cb73256ce1d \
                   esp32c3_round0_ranks.csv
# Plot results
poetry run plot plot-ranks esp32c3_round0_ranks.csv

Correlations

Replication of results The data displayed above can be locally computed using tools available in the esp-cpa repository. The following commands can be used.
# Compute correlations
poetry run analyze compute-correlations esp32c3.zarr \
                   config/analysis/esp32c3_round0.py \
                   corr.zarr
# Extract correlation values
poetry run analyze extract-correlations corr.zarr 0 \
                   esp32c3_round0_correlations.csv \
                   --key 2f5395410f892e12d69c2cb73256ce1d
# Plot results
poetry run plot plot-correlations esp32c3_round0_correlations.csv

Second Round Results

Ranks

Replication of results The data displayed above can be locally computed using tools available in the esp-cpa repository. The following commands can be used.
# Compute correlations
poetry run analyze compute-correlations esp32c3.zarr \
                   config/analysis/esp32c3_round1.py \
                   corr.zarr
# Compute key ranks
poetry run analyze compute-ranks corr.zarr \
                   20b4fb001d9f763f26a46b6663d26cf7 \
                   esp32c3_round1_ranks.csv
# Plot results
poetry run plot plot-ranks esp32c3_round1_ranks.csv

Correlations

Replication of results The data displayed above can be locally computed using tools available in the esp-cpa repository. The following commands can be used.
# Compute correlations
poetry run analyze compute-correlations esp32c3.zarr \
                   config/analysis/esp32c3_round1.py \
                   corr.zarr
# Extract correlation values
poetry run analyze extract-correlations corr.zarr 0 \
                   esp32c3_round1_correlations.csv \
                   --key 20b4fb001d9f763f26a46b6663d26cf7
# Plot results
poetry run plot plot-correlations esp32c3_round1_correlations.csv