22  Zigbee Security Architecture

Trust Center, encryption keys, and protecting Zigbee networks

In 60 Seconds

Zigbee security is managed by the Trust Center (usually the Coordinator), which distributes AES-128 encryption keys to devices during joining. Two key types exist: the Network Key (shared by all devices for network-layer encryption) and Link Keys (unique per device pair for application-layer encryption). The biggest vulnerability is the key transport during initial joining – the network key is sent encrypted with a well-known default key unless Install Codes are used. Zigbee 3.0 mandates Install Code-based commissioning for secure key distribution.

22.1 Learning Objectives

By the end of this chapter, you will be able to:

  • Analyze the Trust Center’s role in authenticating devices and distributing keys across a Zigbee network
  • Differentiate between Network Keys, Link Keys, and Install Codes based on their scope, derivation, and security guarantees
  • Evaluate how AES-128-CCM authenticated encryption and frame counters protect Zigbee traffic against eavesdropping and replay attacks
  • Diagnose security vulnerabilities in Zigbee deployments and prescribe appropriate mitigation strategies
  • Design a secure Zigbee deployment plan incorporating Install Codes, key rotation, and defense-in-depth principles

22.2 Introduction

Zigbee security protects against eavesdropping, replay attacks, and unauthorized device joining. The security architecture centers on the Trust Center, which manages keys and authenticates devices. Understanding these mechanisms is essential for deploying secure IoT systems.

Think of Zigbee security like a secure office building:

  • Trust Center = Security office that issues badges
  • Network Key = Building access card (everyone has same card to enter building)
  • Link Key = Office-specific key (only certain people have access)
  • Install Code = Verification document (proves you’re supposed to be here)

When you join the company (network), you get your badge (Network Key) from security (Trust Center) after showing your ID (Install Code).

22.3 Trust Center

The Trust Center is the security manager for the entire Zigbee network:

22.3.1 Responsibilities

Trust Center Functions:
1. Authenticate joining devices
2. Generate and distribute Network Key
3. Manage Link Keys for device pairs
4. Enforce security policies
5. Update/rotate keys when needed
6. Revoke access for removed devices

22.3.2 Location

The Trust Center runs on the Coordinator by default:

Diagram showing Zigbee network topology with Coordinator acting as Trust Center at top, distributing Network Key and Link Keys to Router and End Device nodes below, illustrating centralized security management architecture
Figure 22.1: Trust Center on Coordinator managing security for all network devices

22.3.3 Trust Center Policies

Configurable Security Policies:

1. Join Policy:
   - Allow all (open network)
   - Allow with default TC Link Key
   - Require Install Code (high security)
   - Whitelist only (pre-authorized)

2. Key Distribution:
   - Send in clear (legacy, insecure)
   - Send encrypted (standard)
   - Require out-of-band (highest security)

3. Key Rotation:
   - Automatic periodic rotation
   - On-demand rotation
   - Never rotate (not recommended)

22.4 Encryption Keys

Zigbee uses multiple key types for layered security:

22.4.1 Network Key

The Network Key encrypts all network-layer traffic:

Network Key Properties:
- Size: 128 bits (16 bytes)
- Scope: Entire network (all devices share same key)
- Protection: Encrypts NWK layer frames
- Algorithm: AES-128-CCM

Example Network Key:
AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56:78:90

Usage:
- ALL traffic between ANY devices encrypted
- Broadcast messages protected
- Route discovery protected

22.4.3 Key Hierarchy

Hierarchical diagram of Zigbee encryption keys showing Install Code at top level deriving Trust Center Link Key, which protects Network Key transport, with Network Key enabling all network communication and Link Keys providing optional pairwise encryption between specific devices
Figure 22.2: Zigbee key hierarchy showing derivation and protection relationships

22.4.4 Install Codes

Install Codes provide per-device security during joining:

Install Code Process:

1. Manufacturing:
   - Factory generates unique Install Code (6, 8, 12, or 16 bytes + 2-byte CRC)
   - Printed on device label/QR code
   - Example (16-byte): 83FE:D340:7A93:9F2B:CAFE:BABE:DEAD:BEEF:C3A2

2. Deployment:
   - Admin enters Install Code into Trust Center
   - Trust Center derives unique Link Key using AES-MMO hash:
     TCLK = AES-MMO(Install Code)
   - This key ONLY known by this device and TC

3. Joining:
   - Device uses derived TCLK
   - Network Key encrypted with device-specific key
   - Attacker cannot decrypt without Install Code

Security Benefit:
- No shared/default keys
- Per-device authentication
- Cannot be intercepted over-the-air

22.5 AES-128 Encryption

Zigbee uses AES-128-CCM for authenticated encryption:

22.5.1 CCM Mode

CCM (Counter with CBC-MAC) provides:

AES-128-CCM Properties:
- Confidentiality: Message content encrypted
- Integrity: Tampering detected via MIC
- Authentication: Sender identity verified

Components:
1. Nonce: 13 bytes (frame counter + addresses)
2. Payload: Variable (actual message data)
3. AAD: Additional authenticated data (headers)
4. MIC: Message Integrity Code (4-16 bytes)

22.5.2 Frame Counter

Each device maintains frame counters to prevent replay attacks:

Frame Counter Mechanism:
- Each device has 32-bit outgoing counter
- Counter increments with every transmission
- Receiver tracks last seen counter per sender
- Frames with old counter values REJECTED

Example:
Device A sends Frame Counter = 12345
Device B accepts (12345 > last seen 12344)
Attacker replays captured frame (FC = 12340)
Device B rejects (12340 < 12345, replay detected)

22.5.3 Security Levels

Zigbee supports configurable security levels:

Level Encryption MIC Size Use Case
0x00 None None Testing only
0x01 None 4 bytes Integrity only
0x04 AES-128 None Confidential, no auth
0x05 AES-128 4 bytes Standard (Zigbee 3.0)
0x06 AES-128 8 bytes High security
0x07 AES-128 16 bytes Maximum security

Standard Zigbee 3.0: Level 0x05 (encryption + 4-byte MIC)

22.6 Mid-Chapter Check: Encryption Fundamentals

A Zigbee router receives a frame from an end device with a frame counter value of 5,200. The router’s last recorded counter for that sender is 5,201. What happens?

  1. The frame is accepted because the counter values are close enough
  2. The frame is rejected because 5,200 is not greater than the last seen value of 5,201, indicating a possible replay attack
  3. The router requests the end device to resend with an updated counter
  4. The frame is decrypted but flagged as suspicious in the network log

B) The frame is rejected because 5,200 is not greater than the last seen value of 5,201, indicating a possible replay attack. Zigbee’s replay protection is strict: each incoming frame counter must be strictly greater than the last accepted value from that sender. There is no “close enough” tolerance (option A), no resend request mechanism at this layer (option C), and no “flag and pass” behavior (option D). The frame is silently dropped. This is why frame counter resets after device rejoin are a known vulnerability – the counter restarting at 0 could allow previously captured frames (with higher counters) to be replayed.

22.7 Security Vulnerabilities

Understanding potential attacks helps design secure systems:

22.7.1 Key Extraction Attack

Attack Vector:
1. Attacker captures traffic during device joining
2. Default TCLK ("ZigBeeAlliance09") used
3. Attacker decrypts Network Key transport
4. Now has Network Key - can decrypt all traffic

Mitigation:
- Use Install Codes (unique per-device TCLK)
- Keep Permit Join closed except when adding devices
- Monitor for unauthorized join attempts

22.7.2 Replay Attack

Attack Vector:
1. Attacker captures valid "unlock door" command
2. Later replays the same frame
3. Door unlocks again

Mitigation (built-in):
- Frame counter prevents replay
- Each frame must have higher counter
- Replayed frames rejected

Limitation:
- Frame counter is per-device, not global
- Counter reset on device rejoin could re-enable old frames

22.7.3 Coordinator Compromise

Attack Vector:
1. Attacker gains access to Coordinator
2. Extracts Network Key from memory
3. Can decrypt all network traffic
4. Can inject malicious commands

Mitigation:
- Physical security for Coordinator
- Secure boot / tamper detection
- Regular key rotation
- Intrusion detection on network

22.8 Secure Deployment Practices

22.8.1 Checklist for Secure Zigbee Deployment

Pre-Deployment:
[ ] Use Install Codes for all devices
[ ] Generate random Network Key (not default)
[ ] Configure Trust Center with strict join policy
[ ] Disable Touchlink if not needed

During Deployment:
[ ] Add devices one at a time
[ ] Open Permit Join briefly (60 seconds)
[ ] Verify correct device joined (check MAC address)
[ ] Close Permit Join immediately after

Post-Deployment:
[ ] Verify Permit Join is CLOSED
[ ] Document all device MAC addresses
[ ] Backup Coordinator configuration securely
[ ] Set up monitoring for unauthorized joins

Ongoing:
[ ] Review join logs weekly
[ ] Rotate Network Key annually (if supported)
[ ] Replace devices with security patches when available
[ ] Physical audit of device locations

22.8.2 Network Key Backup

CRITICAL: Backup these items securely

1. Network Key
   - Store in password manager or HSM
   - Do NOT store in plain text
   - Required to restore network after Coordinator failure

2. PAN ID and Extended PAN ID
   - Document for network identification

3. Device Table
   - Export from Coordinator
   - Contains all member MAC addresses

4. Install Codes
   - Keep original documentation
   - Needed if device re-joins

Storage:
- Encrypted backup file
- Separate from production network
- Access limited to administrators

22.8.3 Key Rotation

Key Rotation Process:

1. Trust Center generates new Network Key
2. Broadcasts Key Update frame (encrypted with old key)
3. All devices receive and store new key
4. Trust Center broadcasts Key Switch frame
5. All devices switch to new key atomically

Timing:
- Rotation should complete within seconds
- Devices failing to update become orphaned
- Plan for potential device re-join

When to Rotate:
- Scheduled (annual/quarterly)
- After suspected compromise
- After removing trusted device
- After employee departure (if they had access)

22.9 Worked Example: Security Cost-Benefit for a Smart Lock Deployment

Scenario: A hotel chain deploys 500 Zigbee smart locks across a 200-room property. Each floor has a Zigbee Coordinator (10 floors, 20 rooms each). Management must choose a security configuration.

Option A: Default Trust Center Link Key (Legacy)

Configuration: Default TCLK "ZigBeeAlliance09"
Commissioning time per lock: 45 seconds (scan, join, verify)
Total commissioning: 500 x 45s = 6.25 hours
Install Code management: None required
Hardware cost premium: $0/lock

Risk assessment:
  Attack window: Every device join event exposes the Network Key
  Attacker requirements: $25 USB Zigbee sniffer + laptop
  Attack success rate: ~100% if attacker is within 30m during join
  Impact: Full network key compromise → can unlock ANY door
  Liability per breach incident: $50,000-500,000 (depending on jurisdiction)

Option B: Install Code Commissioning (Zigbee 3.0)

Configuration: Unique Install Code per device
Commissioning time per lock: 90 seconds (scan QR, enter code, join, verify)
Total commissioning: 500 x 90s = 12.5 hours (+6.25 hours)
Install Code management: Database of 500 unique codes
Hardware cost premium: $0/lock (Install Code is firmware feature)

Risk assessment:
  Attack window: None during normal joining (key encrypted per-device)
  Attacker requirements: Physical access to device label OR compromise of
    Install Code database
  Attack success rate: <1% (requires physical proximity to specific device)
  Impact: Single device compromise only (not network-wide)

Option C: Install Codes + Application Link Keys (Defense-in-Depth)

Configuration: Install Codes + unique APS Link Keys per lock
Commissioning time per lock: 120 seconds (IC + Link Key exchange)
Total commissioning: 500 x 120s = 16.7 hours (+10.4 hours)
Additional RAM per lock: 32 bytes (Link Key storage)

Risk assessment:
  Even if Network Key compromised:
    - Lock commands encrypted with Link Key (APS layer)
    - Attacker sees network traffic but cannot forge lock commands
  Attack success rate: <0.01% (requires both Network Key AND Link Key)

Cost Comparison:

Factor Option A Option B Option C
Commissioning labor $250 $500 $670
Hardware premium $0 $0 $0
IT management $0 $200/year $400/year
Expected breach cost (5yr) $125,000 $2,500 $250
5-Year TCO $125,250 $3,500 $2,920

What’s the ROI of Install Codes for a 500-lock hotel deployment? Let’s calculate breach risk vs commissioning cost.

Option A (Default TCLK) breach exposure: $ P_{} = 100% % = 25% $ $ = 0.25 $500{,}000 = $125{,}000 $

Option B (Install Codes) commissioning cost: $ t = (90 - 45) = 22{,}500 = 6.25 $ $ = 6.25 $40/ = $250 $

Net savings with Install Codes: $ = = 49{,}900% $

Bottom line: Investing $250 in Install Code labor saves $125,000 in breach liability. The security upgrade pays for itself 500× over.

Recommendation: Option C provides the best 5-year TCO for safety-critical applications like door locks. The additional commissioning labor ($420 over Option B) is trivial compared to breach risk reduction. Option B is acceptable for non-critical devices (lighting, sensors).

Key Insight: Security investment in Zigbee is almost entirely labor cost (commissioning time), not hardware cost. The marginal effort of Install Codes and Link Keys pays for itself many times over in reduced breach liability, especially for physical access control systems.

22.10 Green Power Security

Green Power devices have simplified security due to energy constraints:

Green Power Security Model:

Limitations:
- No bidirectional key exchange
- Limited computation capability
- Must use pre-shared keys

Security Options:
1. No security (not recommended)
   - Frame sent in clear
   - Anyone can spoof commands

2. Shared Key (default)
   - GPD and GPS share pre-configured key
   - 128-bit AES encryption
   - Key entered during commissioning

3. Device-Specific Key (recommended)
   - Unique key per GPD
   - Configured via Install Code equivalent
   - Highest GP security level

Commissioning Security:
- Proximity required (physical security factor)
- Short commissioning window
- Key exchange via secure side-channel

Sammy the Sensor is worried: “What if someone eavesdrops on my messages?”

Max the Microcontroller (the Coordinator and Trust Center) reassures: “Don’t worry! When you joined the network, I gave you a Network Key – a secret code that encrypts all your messages with AES-128 encryption. It’s like writing in invisible ink that only our team can read!”

Lila the LED adds: “And for really private conversations between just two devices, we use Link Keys. It’s like having a secret handshake that only you and one friend know.”

Bella the Battery warns: “The tricky part is when new devices join. The Network Key has to be delivered somehow. In old Zigbee, it was sent using a well-known default key – like whispering the password while everyone listens! But Zigbee 3.0 uses Install Codes: each device has a unique code printed on its label that you scan or type in. Much safer!”

Key ideas for kids:

  • AES-128 encryption = Super-strong invisible ink that scrambles messages
  • Network Key = A shared secret that everyone in the network knows
  • Link Key = A private secret between just two devices
  • Install Code = A unique password printed on each device for safe joining
  • Trust Center = The security guard (Coordinator) who decides who can join

22.11 Knowledge Check

Q1: What is the main security vulnerability during Zigbee device joining without Install Codes?

  1. The device firmware can be modified during joining
  2. The network key is transported encrypted with a well-known default key, which an attacker could intercept
  3. The Coordinator’s address is exposed during joining
  4. The PAN ID can be spoofed by an attacker

B) The network key is transported encrypted with a well-known default key, which an attacker could intercept – Without Install Codes, the Trust Center encrypts the network key using a default Trust Center Link Key (known to all Zigbee implementations). An attacker sniffing the join process can decrypt the network key and access all subsequent network traffic. Zigbee 3.0 Install Codes solve this by using a unique per-device key.

22.12 Zigbee Security vs Thread/Matter Security: An Honest Comparison

Zigbee’s security architecture was designed in 2004 and has been incrementally improved through Zigbee 3.0. Thread (2014) and Matter (2022) learned from Zigbee’s vulnerabilities. Understanding the differences helps architects make informed decisions about migration timelines and where Zigbee security is adequate versus where it falls short.

Side-by-side security comparison:

Security aspect Zigbee 3.0 Thread 1.3 Matter 1.0+
Encryption algorithm AES-128-CCM AES-128-CCM AES-128-CCM (network) + CASE/PASE (session)
Key distribution Trust Center distributes over-the-air MLE (Mesh Link Establishment) with DTLS SPAKE2+ (password-authenticated key exchange)
Join vulnerability Default TCLK “ZigBeeAlliance09” (if Install Codes not used) Commissioning requires out-of-band credential QR code / NFC with device-specific setup code
Replay protection 32-bit frame counter (resets on rejoin) 32-bit frame counter + MAC counter Session-level nonce (no counter reset vulnerability)
Certificate-based auth No No Yes (Device Attestation Certificate from PKI)
Firmware signing Vendor-specific (not mandated) Vendor-specific Mandatory OTA image signing
Key rotation Supported but rarely implemented Supported, automated Mandatory session key rotation

Where Zigbee security is adequate:

For non-safety, non-privacy-critical applications – lighting control, HVAC automation, occupancy sensing – Zigbee 3.0 with Install Codes provides sufficient security. The realistic threat model for a smart light bulb does not justify the complexity of certificate-based authentication. An attacker who can sniff Zigbee traffic to learn when your lights are on/off can achieve the same by looking at your windows.

Where Zigbee security falls short:

  1. Physical access control (locks, garage doors): The frame counter reset vulnerability on device rejoin is problematic. If an attacker captures an “unlock” command (frame counter N), then forces the lock to rejoin the network (resetting its counter to 0), they can replay the captured command because N > 0. Thread’s additional MAC-layer counter mitigates this. Matter’s session-based nonces eliminate it entirely.

  2. Healthcare and compliance environments: Zigbee has no mandatory device attestation. A counterfeit Zigbee device can join a network using a legitimate Install Code without the coordinator verifying the device’s manufacturer identity. Matter’s Device Attestation Certificates (DACs) provide a hardware root of trust that prevents counterfeit devices from joining.

  3. Multi-vendor deployments: Zigbee’s Trust Center is a single point of compromise. If the Coordinator is breached, all network keys are exposed. Matter’s fabric model distributes trust across multiple administrators (NOCs – Node Operational Certificates) issued by independent Certificate Authorities, so compromising one administrator does not expose the entire network.

Practical migration guidance:

  • Existing Zigbee lighting/HVAC (Install Codes in use): No urgency to migrate. Security is adequate for the threat model.
  • Existing Zigbee locks/security (any configuration): Plan migration to Matter over Thread within 12–24 months. The frame counter vulnerability is a real risk for physical access control.
  • New deployments (greenfield): Default to Matter over Thread unless constrained by cost or ecosystem requirements. The per-device cost difference is negligible (same 802.15.4 silicon), and the security architecture is fundamentally stronger.

Common Pitfalls

The default trust center link key (0xD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF for Zigbee 3.0 or all zeros for older profiles) allows anyone monitoring the join process to decrypt the network key. Always use a unique, random TCLK per device in production.

Using the same Zigbee network key indefinitely means a single key compromise exposes all historical traffic. Implement periodic network key rotation using the key update procedure.

APS-layer security adds 9–21 bytes per packet overhead. Some developers disable it to improve throughput, leaving end-to-end message authentication absent. Always enable APS security for commands that affect physical systems (lights, locks, thermostats).

22.13 Summary

This chapter covered Zigbee security architecture:

  • Trust Center: Central security manager on Coordinator
  • Network Key: Shared key encrypting all network traffic
  • Link Keys: Per-device or pair-wise encryption keys
  • Install Codes: Per-device secrets for secure joining
  • AES-128-CCM: Authenticated encryption with replay protection
  • Vulnerabilities: Key extraction, replay, Touchlink attacks

Key Security Recommendations:

  1. Always use Install Codes for commercial deployments
  2. Keep Permit Join closed except during device addition
  3. Backup Network Key and configuration securely
  4. Monitor for unauthorized join attempts
  5. Rotate keys periodically
  6. Physical security for Coordinator

22.14 Knowledge Check

::

::

Key Concepts

  • Trust Center: The Zigbee security authority (usually the coordinator) managing network keys and authenticating joining devices using the trust center link key.
  • Network Key: The 128-bit AES symmetric key shared across all Zigbee network members, used for NWK-layer hop-by-hop encryption.
  • Trust Center Link Key (TCLK): A per-device key used to securely transfer the network key from the trust center to a newly joined device.
  • Well-Known Trust Center Key: A default TCLK (all zeros or published value) used in some Zigbee deployments to simplify joining; a security weakness as it allows network key eavesdropping during join.
  • Key Transport: The secure delivery of the Zigbee network key from trust center to joiner, optionally encrypted with the TCLK to prevent eavesdropping.
  • Security Level: An APS/NWK security descriptor field specifying the MIC length (0, 4, 8, or 16 bytes) and whether encryption is applied.

22.15 Concept Relationships

Concept Related To How They Connect
Trust Center Network Key Distribution Trust Center securely distributes shared Network Key to all devices
Install Codes Link Key Derivation Unique Install Code derives per-device Link Key for secure joining
Network Key AES-128-CCM Encryption 128-bit key encrypts all network-layer traffic
Frame Counter Replay Protection Monotonically increasing counter prevents replay attacks
Default TCLK Security Vulnerability Well-known key “ZigBeeAlliance09” enables network key eavesdropping
Green Power Simplified Security Energy-harvesting devices use pre-shared keys, no bidirectional exchange

22.16 What’s Next

Chapter Focus
Zigbee Exercises and Knowledge Checks Practice problems and interactive quizzes covering all Zigbee security topics
Zigbee Network Formation Commissioning, joining procedures, and Trust Center policies in practice
Zigbee Application Profiles Profile-specific security requirements for ZCL clusters
Thread Security Model IPv6-based mesh security with DTLS and MLE – a modern comparison to Zigbee
Matter Security Architecture Next-generation device attestation, CASE/PASE, and fabric-based trust