Scenario: Utility company deploys smart meters that report power consumption every 15 minutes over cellular (NB-IoT).
Given:
- Fleet size: 10,000 meters
- Reporting interval: 15 minutes (96 messages/day per meter)
- Network: NB-IoT (LTE Cat-NB1), 250 kbps downlink
- MCU: ARM Cortex-M4 @ 64 MHz
- Battery: 2x D-cell (19,000 mAh @ 3.6 V = 246 kJ)
- Target lifetime: 10 years
- Data payload: 32 bytes (meter ID, timestamp, kWh reading, voltage, current)
Security Requirement: Utility needs data authenticity (prevent false billing) and integrity (detect tampering).
Option Analysis:
Option 1: RSA-2048 Signatures
Performance on ARM Cortex-M4 @ 64 MHz:
- Sign operation: 300 ms @ 40 mA
- Energy per signature: 0.040 A x 3.6 V x 0.3 s = 43.2 mJ
Annual energy:
- Signatures: 96/day x 365 days x 43.2 mJ = 1,514 J
- Transmission: 96/day x 365 days x 100 mJ = 3,504 J (NB-IoT TX)
- Total crypto: 1,514 J (30% of communication energy)
10-year energy: 15,140 J Battery capacity: 246,000 J Crypto overhead: 15,140 / 246,000 = 6.2% – Acceptable
Signature size: 256 bytes Total message: 32 + 256 = 288 bytes Transmission time: 288 x 8 / 250,000 = 9.2 ms
Option 2: Ed25519 Signatures
Performance on ARM Cortex-M4 @ 64 MHz:
- Sign operation: 12 ms @ 20 mA
- Energy per signature: 0.020 A x 3.6 V x 0.012 s = 0.864 mJ
Annual energy:
- Signatures: 96/day x 365 days x 0.864 mJ = 30.3 J
- Transmission: 96/day x 365 days x 65 mJ = 2,277 J (smaller packet)
- Total crypto: 30.3 J (1.3% of communication energy)
10-year energy: 303 J Battery capacity: 246,000 J Crypto overhead: 303 / 246,000 = 0.12% – Excellent
Signature size: 64 bytes Total message: 32 + 64 = 96 bytes Transmission time: 96 x 8 / 250,000 = 3.1 ms (3x faster than RSA)
Option 3: HMAC-SHA256 (Symmetric Authentication)
Performance on ARM Cortex-M4 @ 64 MHz:
- HMAC operation: 0.5 ms @ 15 mA
- Energy per HMAC: 0.015 A x 3.6 V x 0.0005 s = 0.027 mJ
Annual energy:
- HMACs: 96/day x 365 days x 0.027 mJ = 0.95 J
- Transmission: 96/day x 365 days x 60 mJ = 2,102 J (smallest packet)
- Total crypto: 0.95 J (0.045% of communication energy)
10-year energy: 9.5 J Battery capacity: 246,000 J Crypto overhead: 9.5 / 246,000 = 0.004% – Negligible
Authentication tag size: 32 bytes Total message: 32 + 32 = 64 bytes Transmission time: 64 x 8 / 250,000 = 2.0 ms (fastest)
Comparison:
| Energy per operation |
43.2 mJ |
0.864 mJ |
0.027 mJ |
| 10-year crypto energy |
15,140 J |
303 J |
9.5 J |
| Signature/tag size |
256 bytes |
64 bytes |
32 bytes |
| Total message size |
288 bytes |
96 bytes |
64 bytes |
| Transmission time |
9.2 ms |
3.1 ms |
2.0 ms |
| Non-repudiation |
Yes |
Yes |
No |
| Key management |
Complex (PKI) |
Medium (PKI) |
Simple (pre-shared) |
Decision:
The utility chooses Ed25519 signatures because:
- Non-repudiation: Legal requirement – meters must prove readings came from a specific device
- Energy: 50x less energy than RSA, negligible battery impact
- Bandwidth: 3x smaller than RSA, reduces NB-IoT costs
- Security: 128-bit security equivalent, meets NIST standards
HMAC is rejected because it lacks non-repudiation (the utility cannot prove to a court that a specific meter generated a reading, since both the meter and the server share the same key).
Fleet-Wide Impact:
| Total fleet energy (10 years) |
151 MJ |
3 MJ |
148 MJ saved |
| Cellular data usage (10 years) |
100 GB |
33 GB |
67 GB saved |
| Cellular cost ($0.10/MB) |
$10,000 |
$3,300 |
$6,700 saved |
ROI: Switching from RSA to Ed25519 saves $6,700 in cellular fees alone over 10 years for this 10,000-meter deployment. Implementation cost for Ed25519 library: ~$5,000 one-time. Pays for itself in the first 2 years.