%% fig-alt: "Symmetric encryption flow showing single shared secret key used by both sender and receiver, with plaintext encrypted using key and algorithm producing ciphertext, then decrypted with same key recovering plaintext, demonstrating fast encryption requiring secure key distribution channel"
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#2C3E50', 'primaryTextColor': '#fff', 'primaryBorderColor': '#16A085', 'lineColor': '#16A085', 'secondaryColor': '#E67E22'}}}%%
flowchart LR
subgraph Sender["Sender (Alice)"]
Plain1[Plaintext<br/>Hello IoT]
Key1[Shared Key<br/>K]
Encrypt[AES Encrypt]
end
subgraph Channel["Insecure Channel"]
Cipher[Ciphertext<br/>0x8A3F2B...]
end
subgraph Receiver["Receiver (Bob)"]
Decrypt[AES Decrypt]
Key2[Shared Key<br/>K]
Plain2[Plaintext<br/>Hello IoT]
end
Plain1 --> Encrypt
Key1 -.->|Same key| Encrypt
Encrypt --> Cipher
Cipher --> Decrypt
Key2 -.->|Same key| Decrypt
Decrypt --> Plain2
KeyExchange[Problem: How to<br/>securely share K?]
Key1 -.->|Must match| Key2
KeyExchange -.-> Key1
style Sender fill:#2C3E50,stroke:#16A085,stroke-width:2px,color:#fff
style Receiver fill:#2C3E50,stroke:#16A085,stroke-width:2px,color:#fff
style Channel fill:#E67E22,stroke:#2C3E50,stroke-width:2px,color:#fff
style KeyExchange fill:#F8D7DA,stroke:#E74C3C,stroke-width:2px
1438 Symmetric Encryption for IoT
1438.1 Learning Objectives
By the end of this chapter, you will be able to:
- Explain Symmetric Encryption Principles: Understand how single-key encryption works and its role in IoT security
- Implement AES Encryption: Apply the Advanced Encryption Standard with appropriate modes (GCM, CCM) for IoT devices
- Select Appropriate Key Sizes: Choose between AES-128 and AES-256 based on security requirements and constraints
- Avoid Common Pitfalls: Recognize and prevent key management failures, ECB mode misuse, and weak key derivation
Symmetric encryption uses one shared key for both locking (encrypting) and unlocking (decrypting) data. Think of it like a house key that both you and your friend have copies of - anyone with the key can get in.
Why it matters for IoT: Symmetric encryption (AES) is the workhorse of IoT security - it’s fast, battery-efficient, and supported by hardware accelerators in most microcontrollers. When your smart thermostat sends temperature readings to the cloud, it uses symmetric encryption to scramble the data into gibberish that only the cloud server can unscramble.
1438.2 How Symmetric Encryption Works
Symmetric encryption uses a single secret key for both encryption and decryption. Both communicating parties must securely share this key.
Advantages:
- Fast encryption/decryption
- Low computational overhead
- Suitable for bulk data
- Hardware acceleration available
Disadvantages:
- Key distribution problem
- Requires secure channel for key exchange
- \(n(n-1)/2\) keys needed for \(n\) parties
- Key compromise affects all communication
1438.3 Block vs Stream Ciphers
Block Ciphers: Encrypt fixed-size blocks (e.g., 128 bits)
- AES, DES, IDEA, Blowfish, RC5, RC6
- Requires padding for partial blocks
- Various modes: ECB, CBC, CTR, GCM
Stream Ciphers: Encrypt data streams bit-by-bit or byte-by-byte
- RC4, ChaCha20
- No padding required
- Suitable for real-time data
1438.4 AES (Advanced Encryption Standard)
Standardization: U.S. NIST FIPS PUB 197 (2001), superseding DES (1977)
Parameters:
- Block size: 128 bits (4x4 byte matrix)
- Key sizes: 128, 192, or 256 bits
- Rounds: 10 (AES-128), 12 (AES-192), 14 (AES-256)
%% fig-alt: "AES algorithm structure showing 128-bit plaintext block divided into 4x4 byte state matrix, processed through multiple rounds of SubBytes, ShiftRows, MixColumns, and AddRoundKey transformations"
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#2C3E50', 'primaryTextColor': '#fff', 'primaryBorderColor': '#16A085', 'lineColor': '#16A085', 'secondaryColor': '#E67E22'}}}%%
flowchart TB
Input[Plaintext Block<br/>128 bits]
Key[Key<br/>128/192/256 bits]
subgraph KeySchedule["Key Schedule"]
KS[Generate Round Keys<br/>K0, K1, ... Kn]
end
subgraph Round0["Initial Round"]
ARK0[AddRoundKey K0]
end
subgraph Rounds["Main Rounds (10/12/14)"]
SB[SubBytes<br/>S-box substitution]
SR[ShiftRows<br/>Circular shift]
MC[MixColumns<br/>Matrix multiply]
ARK[AddRoundKey Ki]
end
subgraph FinalRound["Final Round"]
SBF[SubBytes]
SRF[ShiftRows]
ARKF[AddRoundKey Kn]
end
Output[Ciphertext Block<br/>128 bits]
Input --> ARK0
Key --> KeySchedule
KeySchedule --> ARK0
KeySchedule --> ARK
KeySchedule --> ARKF
ARK0 --> SB
SB --> SR
SR --> MC
MC --> ARK
ARK -.->|Repeat 9-13 times| SB
ARK --> SBF
SBF --> SRF
SRF --> ARKF
ARKF --> Output
style Input fill:#E67E22,stroke:#2C3E50,stroke-width:2px,color:#fff
style Output fill:#16A085,stroke:#2C3E50,stroke-width:2px,color:#fff
style KeySchedule fill:#7F8C8D,stroke:#2C3E50,stroke-width:2px,color:#fff
style Rounds fill:#D4EDDA,stroke:#16A085,stroke-width:2px
1438.4.1 AES Encryption Modes
AES supports multiple modes of operation, each with different characteristics:
| Mode | Full Name | Padding | Parallelizable | Authentication | IoT Use Case |
|---|---|---|---|---|---|
| ECB | Electronic Codebook | Yes | Yes | No | NEVER USE - patterns visible |
| CBC | Cipher Block Chaining | Yes | Decrypt only | No | Legacy systems |
| CTR | Counter Mode | No | Yes | No | Stream encryption |
| GCM | Galois/Counter Mode | No | Yes | Yes | Recommended for IoT |
| CCM | Counter with CBC-MAC | No | No | Yes | Zigbee, BLE, Thread |
1438.4.2 Hardware-Accelerated AES in IoT
Many modern IoT microcontrollers include dedicated AES hardware accelerators:
| Platform | Hardware Support | Performance |
|---|---|---|
| ESP32 | AES accelerator | ~10 cycles/byte |
| STM32 | AES peripheral | ~15 cycles/byte |
| nRF52 | CryptoCell | ~12 cycles/byte |
| ARM Cortex-M | AES-NI extension | ~5 cycles/byte |
Software AES: ~1,200 cycles per 128-bit block Hardware AES: ~20 cycles per block (60x speedup, 10x less power)
1438.5 Key Size Recommendations
Choosing the right key size balances security strength against computational cost and battery life:
| Key Size | Security Level | Use Case | Battery Impact |
|---|---|---|---|
| AES-128 | Strong (2^128 combinations) | Most IoT devices, consumer products | Baseline |
| AES-256 | Maximum (quantum-resistant) | Medical, financial, critical infrastructure | 40% more power |
When to Choose AES-256:
- Medical devices (pacemakers, insulin pumps)
- Smart locks, alarm systems, access control
- Long-term data storage (10+ years)
- Compliance requirements (HIPAA, PCI-DSS)
When AES-128 is Sufficient:
- Smart home sensors (temperature, humidity, motion)
- Fitness trackers, wearables
- Smart appliances
- Data retained < 5 years
1438.6 Common Pitfalls
The most common IoT security failure is storing encryption keys in plain text:
- Use hardware security modules (HSM) or Trusted Platform Modules (TPM)
- Never hardcode keys in firmware - attackers can extract them
- Encrypt keys at rest using platform-specific secure storage
- Implement key derivation from device-unique identifiers
- Use secure boot to verify firmware integrity
Real example: Millions of IoT cameras compromised because AES keys were stored in /etc/config.ini in plain text.
The Mistake: Developers encrypt data using AES in ECB mode because it’s the simplest.
Why It’s Dangerous: ECB encrypts identical plaintext blocks into identical ciphertext blocks, revealing patterns.
The Fix: Always use authenticated encryption modes:
- AES-GCM: Industry standard for TLS 1.3 and MQTT
- AES-CCM: Designed for constrained devices (Zigbee, BLE)
- ChaCha20-Poly1305: When hardware AES unavailable
The Mistake: Generating keys by hashing predictable values: key = SHA256(device_mac_address)
Why It’s Dangerous: MAC addresses are enumerable (2^24 combinations) - attackers can pre-compute all keys.
The Fix:
- Use hardware True Random Number Generator (TRNG)
- Use HKDF with device-unique salt:
HKDF-SHA256(master_secret, salt=device_id) - Pre-provision unique keys during manufacturing
1438.7 Knowledge Check
A company deploys 1,000 IoT sensors that all need to communicate securely with each other using symmetric encryption. How many unique shared keys would be needed?
Options:
- 1,000 keys (one per sensor)
- 499,500 keys (n(n-1)/2 where n=1000)
- 2,000 keys (2 keys per sensor)
- 1,000,000 keys (n^2 keys)
Correct: B
For n parties to communicate pairwise with symmetric encryption, you need n(n-1)/2 unique keys. For 1,000 sensors: 1000 x 999 / 2 = 499,500 keys. This is why symmetric encryption has scalability challenges - asymmetric encryption solves this with only 2n keys (one public/private pair per device).
You’re designing a real-time audio streaming system for IoT intercoms. The audio data comes in variable-length chunks at 20ms intervals. Which cipher type is MOST appropriate?
Options:
- Block cipher (AES-CBC)
- Stream cipher (ChaCha20)
- Block cipher (AES-ECB)
- Asymmetric cipher (RSA)
Correct: B
Stream ciphers like ChaCha20 are ideal for real-time streaming because they encrypt data byte-by-byte without needing to wait for complete blocks. No padding overhead means lower latency, and they naturally handle variable-length data.
1438.8 Use Cases for Symmetric Encryption
- Bulk Data Encryption
- Database encryption
- File system encryption
- Large data transfers
- IoT Device Communication
- Sensor data encryption
- Command authentication
- Network security
- Payment Systems
- Card transactions
- PII protection
- Random Number Generation
- Key derivation
- Nonce generation
1438.9 Limitations
Key Exhaustion:
- Each key use leaks information
- Requires key hierarchy and rotation
- Data loss if retired keys unavailable
Scalability:
- Manual management works for tens of keys
- Thousands/millions require automation
- Dedicated provisioning systems needed
1438.10 Summary
- Symmetric encryption uses one shared key for both encryption and decryption
- AES is the gold standard: use AES-128-GCM for most IoT, AES-256 for critical systems
- Never use ECB mode - patterns in plaintext leak through to ciphertext
- Hardware acceleration provides 60x speedup and 10x power savings
- Key management is the weakest link - never store keys in plain text
- The key distribution problem is solved by combining with asymmetric encryption
1438.11 What’s Next
Continue to Asymmetric Encryption to learn how public-key cryptography solves the key distribution problem and enables digital signatures for IoT device authentication.