ESP32 CPA Detailed Results

Input Data

Power Traces

The captured data can be downloaded from here (1.86 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/esp32.py \
                   esp32.zarr \
                   --gui-display # Optional

AES Key

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

00000000: e684 35d5 9649 6f9c 4618 64c6 e34b c114  ..5..Io.F.d..K..
00000010: b61c d548 3828 7329 8962 437b a80d d8bd  ...H8(s).bC{....

To validate the attack, the following keys are computed.

  • First round key (at flash address 0x1000): e69435d796492f8c461a64c6a34bc91c
  • Second round key (at flash address 0x1000): b61dd548182877298960437be80dd0bd

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 esp32.zarr \
                   config/analysis/esp32_round0.py \
                   corr.zarr
# Compute key ranks
poetry run analyze compute-ranks corr.zarr \
                   e69435d796492f8c461a64c6a34bc91c \
                   esp32_round0_ranks.csv
# Plot results
poetry run plot plot-ranks esp32_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 esp32.zarr \
                   config/analysis/esp32_round0.py \
                   corr.zarr
# Extract correlation values
poetry run analyze extract-correlations corr.zarr 0 \
                   esp32_round0_correlations.csv \
                   --key e69435d796492f8c461a64c6a34bc91c
# Plot results
poetry run plot plot-correlations esp32_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 esp32.zarr \
                   config/analysis/esp32_round1.py \
                   corr.zarr
# Compute key ranks
poetry run analyze compute-ranks corr.zarr \
                   b61dd548182877298960437be80dd0bd \
                   esp32_round1_ranks.csv
# Plot results
poetry run plot plot-ranks esp32_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 esp32.zarr \
                   config/analysis/esp32_round1.py \
                   corr.zarr
# Extract correlation values
poetry run analyze extract-correlations corr.zarr 0 \
                   esp32_round1_correlations.csv \
                   --key b61dd548182877298960437be80dd0bd
# Plot results
poetry run plot plot-correlations esp32_round1_correlations.csv