ESP32-C6 CPA (SEC_DPA_LOW) Detailed Results

Input Data

Power Traces

The captured data can be downloaded from here (13.62 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/esp32c6.py \
                   esp32c6_low.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.
# Group measurements
poetry run analyze group-measurements esp32c6_low.zarr \
                   config/group/esp32c6_sec_dpa.py
# Compute correlations for all groups
poetry run analyze compute-correlations esp32c6_low_group_0.zarr \
                   config/analysis/esp32c6_round0_cycle0.py \
                   corr0.zarr
poetry run analyze compute-correlations esp32c6_low_group_1.zarr \
                   config/analysis/esp32c6_round0_cycle1.py \
                   corr1.zarr
# Compose correlations
poetry run analyze compose-correlations corr0.zarr corr1.zarr \
                   corr.zarr
# Compute key ranks
poetry run analyze compute-ranks corr.zarr \
                   2f5395410f892e12d69c2cb73256ce1d \
                   esp32c6_low_round0_ranks.csv
# Plot results
poetry run plot plot-ranks esp32c6_low_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.
# Group measurements
poetry run analyze group-measurements esp32c6_low.zarr \
                   config/group/esp32c6_sec_dpa.py
# Compute correlations for all groups
poetry run analyze compute-correlations esp32c6_low_group_0.zarr \
                   config/analysis/esp32c6_round0_cycle0.py \
                   corr0.zarr
poetry run analyze compute-correlations esp32c6_low_group_1.zarr \
                   config/analysis/esp32c6_round0_cycle1.py \
                   corr1.zarr
# Compose correlations
poetry run analyze compose-correlations corr0.zarr corr1.zarr \
                   corr.zarr
# Extract correlation values
poetry run analyze extract-correlations corr.zarr 0 \
                   esp32c6_low_round0_correlations.csv \
                   --key 2f5395410f892e12d69c2cb73256ce1d
# Plot results
poetry run plot plot-correlations esp32c6_low_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.
# Group measurements
poetry run analyze group-measurements esp32c6_low.zarr \
                   config/group/esp32c6_sec_dpa.py
# Compute correlations for all groups
poetry run analyze compute-correlations esp32c6_low_group_0.zarr \
                   config/analysis/esp32c6_round1_cycle0.py \
                   corr0.zarr
poetry run analyze compute-correlations esp32c6_low_group_1.zarr \
                   config/analysis/esp32c6_round1_cycle1.py \
                   corr1.zarr
# Compose correlations
poetry run analyze compose-correlations corr0.zarr corr1.zarr \
                   corr.zarr
# Compute key ranks
poetry run analyze compute-ranks corr.zarr \
                   20b4fb001d9f763f26a46b6663d26cf7 \
                   esp32c6_low_round1_ranks.csv
# Plot results
poetry run plot plot-ranks esp32c6_low_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.
# Group measurements
poetry run analyze group-measurements esp32c6_low.zarr \
                   config/group/esp32c6_sec_dpa.py
# Compute correlations for all groups
poetry run analyze compute-correlations esp32c6_low_group_0.zarr \
                   config/analysis/esp32c6_round1_cycle0.py \
                   corr0.zarr
poetry run analyze compute-correlations esp32c6_low_group_1.zarr \
                   config/analysis/esp32c6_round1_cycle1.py \
                   corr1.zarr
# Compose correlations
poetry run analyze compose-correlations corr0.zarr corr1.zarr \
                   corr.zarr
# Extract correlation values
poetry run analyze extract-correlations corr.zarr 0 \
                   esp32c6_low_round1_correlations.csv \
                   --key 20b4fb001d9f763f26a46b6663d26cf7
# Plot results
poetry run plot plot-correlations esp32c6_low_round1_correlations.csv