IEC 62443 Compliance
IEC 62443 is an international standard family for the security of Industrial Automation and Control Systems (IACS), jointly developed by the International Electrotechnical Commission (IEC) and the International Society of Automation (ISA). It covers the full lifecycle of product development, system integration, and operations and maintenance. For the power industry, grid dispatch automation, substation monitoring systems, and distribution automation systems are all typical IACS scenarios and the core applicable targets of IEC 62443.
EnerOS has been implemented according to IEC 62443-4-1 (Secure Development Lifecycle) and 4-2 (IACS Component Security Requirements) since v0.45, making it easy to deploy in industrial control environments and pass third-party certification.
Standard Family Overview
The IEC 62443 standard family is divided into four major categories, each targeting different roles:
| Sub-standard | Topic | Applicable Object | EnerOS Role |
|---|---|---|---|
| 62443-1-x | Concepts, terminology, models | All stakeholders | Asset owner, product supplier |
| 62443-2-x | Asset owner security program | Asset owners | Deployment reference |
| 62443-3-x | System security requirements and levels | System integrators | System integration reference |
| 62443-4-x | Component security requirements and development process | Product suppliers | Core compliance target |
As a product supplier, EnerOS must comply with 4-1 (Secure Development Process) and 4-2 (Component Technical Security Requirements); it also provides supporting deployment, operations, and audit tools for system integrators and asset owners.
Security Levels SL1-SL4
IEC 62443 defines four Security Levels (SL) that describe a system’s ability to resist threats, progressing from low to high:
| Level | Protection Target | Attacker Profile | Typical Power Scenario | EnerOS Default Config |
|---|---|---|---|---|
| SL1 | Accidental or inadvertent violations | Unintentional misuse by laypersons | Non-critical monitoring display nodes | security.level = "sl1" |
| SL2 | Low-resource attackers | Simple tools, low skills | Distribution automation terminals | security.level = "sl2" |
| SL3 | Medium-resource attackers | ICS expertise, complex tools | Substation monitoring systems | security.level = "sl3" |
| SL4 | Advanced-resource attackers | Nation-state APT, custom malware | Large grid dispatch centers | security.level = "sl4" |
For each SL, the standard further defines system-level targets (SL-T), zone-level targets (SL-Z), and component-level targets (SL-C), forming a hierarchical target chain.
SL Levels and Foundation Requirements Matrix
| FR (Foundation Requirement) | SL1 | SL2 | SL3 | SL4 |
|---|---|---|---|---|
| FR1 Identification & Access Control | CR1.1 | +CR1.2 | +CR1.3-1.8 | +CR1.9-1.12 |
| FR2 Use Control | CR2.1 | +CR2.2 | +CR2.3-2.8 | +CR2.9-2.12 |
| FR3 System Integrity | CR3.1 | +CR3.2 | +CR3.3-3.4 | +CR3.4 enhanced |
| FR4 Data Confidentiality | CR4.1 | +CR4.2 | +CR4.3 | +CR4.3 enhanced |
| FR5 Restricted Data Flow | CR5.1 | +CR5.2 | +CR5.3-5.4 | +CR5.4 enhanced |
| FR6 Incident Response | — | CR6.1 | +CR6.2 | +CR6.2 enhanced |
| FR7 Resource Availability | CR7.1 | +CR7.2 | +CR7.3-7.6 | +CR7.6 enhanced |
EnerOS implements all foundation requirements at SL3 by default and provides optional enhancements for SL4 (such as post-quantum cryptography hybrid, TPM measured boot, HSM key escrow).
Coverage Scope
The following table shows EnerOS’s corresponding implementations under 4-1 (Process) and 4-2 (Component):
| Sub-standard | Topic | EnerOS Implementation |
|---|---|---|
| 4-1 SR1 | Security requirements | Threat modeling + SDL process |
| 4-1 SR2 | Security design | Layered architecture + Zero Trust |
| 4-1 SR3 | Security implementation | Rust memory safety + fuzzing |
| 4-1 SR4 | Security verification | Static analysis + penetration testing |
| 4-1 SR5 | Secure operations | Vulnerability response + patch distribution |
| 4-2 CR 1.1 | Identification & authentication | mTLS + X.509 + SPIFFE |
| 4-2 CR 1.2 | Software & information integrity | HMAC chained audit |
| 4-2 CR 1.9 | Audit accessibility | WORM forensic storage |
| 4-2 CR 2.1 | Communication protection | TLS 1.3 + PQC hybrid |
| 4-2 CR 3.1 | Input validation | Kernel constraint enforcement |
| 4-2 CR 4.1 | Data confidentiality | AES-256-GCM field encryption |
| 4-2 CR 5.1 | Network segmentation | Namespace + network policy |
| 4-2 CR 7.1 | Denial of service protection | Rate limiting + quota + priority queue |
EnerOS Compliance Implementation
1. Secure Development Lifecycle (4-1 SR1-SR5)
EnerOS implements a complete SDL process, with each version iteration including the following phases:
- Requirements phase: Threat modeling based on STRIDE and LINDDUN, outputting threat lists and security requirement items
- Design phase: Architecture review meetings examine the attack surface, outputting security design documents (including data flow diagrams, trust boundaries)
- Implementation phase: Rust
#![forbid(unsafe_code)], Clippy security ruleset, dependency auditcargo audit - Verification phase: Unit tests covering security paths, fuzzing starting from 2 million iterations, third-party penetration testing
- Operations phase: Vulnerability response SLA, CVE monitoring, patch gray release
2. Component Security Requirements (4-2 CR)
Each CR maps to specific Rust crates and configuration items, forming a traceable matrix:
| CR | Implementation Location | Config Item | Default Value |
|---|---|---|---|
| CR 1.1 | eneros-trust | auth.mtls.required | true |
| CR 1.2 | eneros-audit | audit.hmac.chain | true |
| CR 1.9 | eneros-audit | audit.worm.path | /var/eneros/audit |
| CR 2.1 | eneros-gateway | tls.min_version | TLS_1_3 |
| CR 4.1 | eneros-tenant | encryption.field.algorithm | AES-256-GCM |
| CR 7.1 | eneros-gateway | ratelimit.rps | 1000 |
Configuration Example
IEC 62443 Configuration Block in eneros.toml
[security]
level = "sl3" # Security level SL1-SL4
standard = "iec-62443" # Compliance framework
enforce_constraints = true # Kernel-enforced constraints (CR 3.1)
[security.mtls]
required = true # Enforce mTLS (CR 1.1)
min_version = "TLS_1_3" # Minimum TLS version (CR 2.1)
cipher_suites = ["post-quantum"] # Post-quantum cryptography hybrid
cert_rotation_days = 90 # Certificate rotation period (CR 1.1)
[security.audit]
hmac_chain = true # HMAC chained audit (CR 1.2)
worm_store = "/var/eneros/audit" # WORM storage (CR 1.9)
retention_days = 2555 # 7-year retention
[security.encryption]
field_algorithm = "AES-256-GCM" # Field encryption (CR 4.1)
key_management = "kms" # KMS-managed
rotate_keys_days = 365 # Key rotation
[security.dos_protection]
rate_limit_rps = 1000 # Rate limiting (CR 7.1)
quota_per_tenant = 1000000 # Quota
priority_queue = true # Priority queue
Rust Code: Audit Chain Query
eneros-security provides AuditChain and WormStore for full traceability of any remote control command:
use eneros_security::audit::{AuditChain, QueryBuilder};
let chain = AuditChain::open("/var/eneros/audit.chain")?;
let entries = QueryBuilder::new()
.actor("dispatch_agent")
.action("remote_command")
.range(t0, t1)
.fetch(&chain)?;
for entry in entries {
println!("{} {} {} {}", entry.timestamp, entry.actor,
entry.action, entry.resource);
println!(" hmac_chain_ok: {}", entry.verify_hmac(&chain)?);
}
Rust Code: select-before-operate
For critical commands, the select-before-operate flow is enforced, complying with CR 2.4 two-factor control:
use eneros_trust::sbo::{SboSession, SboConfirm};
let mut sbo = SboSession::new("breaker-123")
.operation("open")
.actor("dispatch_agent")
.ttl_seconds(30);
// Step 1: select (operation preview)
sbo.select().await?;
// Step 2: confirm (operation confirmation, requires two factors)
let confirm = SboConfirm::builder()
.totp_code("123456")
.approver_id("operator-7")
.build();
sbo.confirm(confirm).await?;
// Step 3: execute (actual dispatch)
sbo.execute().await?;
Security Requirements Matrix
The following table shows the complete technical requirements and verification evidence at SL3 level:
| CR | Requirement | Technical Implementation | Verification Evidence |
|---|---|---|---|
| CR 1.1 | Human & device authentication | X.509 + SPIFFE + mTLS | Certificate issuance records, handshake logs |
| CR 1.2 | Software & information integrity | HMAC chained audit | HMAC verification report |
| CR 1.4 | Identifier management | SPIFFE ID uniqueness | ID registry |
| CR 1.7 | Password strength | Password policy middleware | Strength audit logs |
| CR 1.9 | Audit accessibility | WORM + read-only API | WORM integrity proof |
| CR 1.12 | Interface use control | RBAC + ABAC | Policy hit logs |
| CR 2.1 | Communication protection | TLS 1.3 + PQC | TLS handshake captures |
| CR 2.4 | Two-factor control | select-before-operate | SBO flow logs |
| CR 3.1 | Input validation | Kernel constraints | Out-of-limit rejection counts |
| CR 4.1 | Data confidentiality | AES-256-GCM | Encryption algorithm proof |
| CR 5.1 | Network segmentation | Namespace + network policy | Topology audit |
| CR 6.1 | Audit log auditability | Tamper-proof log chain | HMAC chain verification |
| CR 7.1 | Denial of service protection | Rate limiting + priority queue | Load test report |
| CR 7.2 | Resource reserves | Resource quotas + elastic scaling | Capacity planning document |
| CR 7.6 | Network partitioning | Failure domain isolation | Isolation test report |
Certification Process
EnerOS assists users in completing IEC 62443-4-1 and 4-2 certification:
- Preparation phase: Use
eneros-cli compliance check --standard iec-62443to generate a self-assessment report - Gap analysis: Compare against SL targets to output a gap list and remediation recommendations
- Remediation implementation: Adjust
eneros.tomland network configuration based on recommendations - On-site assessment: Third-party certification bodies (such as TÜV, exida) conduct on-site audits
- Certification issuance: Upon passing, obtain IEC 62443-4-1 / 4-2 certification (valid for 3 years)
- Continuous supervision: Annual surveillance audit, re-assessment before certificate expiration
# Generate self-assessment report
eneros-cli compliance check --standard iec-62443 --level sl3 \
--output iec-62443-self-assessment.json
# Output gap list
eneros-cli compliance gap --standard iec-62443 --level sl3 \
--input iec-62443-self-assessment.json \
--output iec-62443-gap-list.csv
Compliance Checklist
Confirm each item before deployment:
- All internal inter-service communication has mTLS enabled (see Zero Trust & Security Enhancement)
- Certificates are uniformly issued by internal CA and auto-rotate (90 days)
- Audit logs are written to WORM storage, retained for ≥ 7 years
- IDS deployed with OT attack signature database configured
- Critical commands go through select-before-operate flow
- Least privilege RBAC + ABAC policies implemented
- Secure development lifecycle documented, including threat models and penetration test reports
- Vulnerability response SLA: Critical ≤ 7 days, High ≤ 30 days
- All configuration changes go through GitOps pipeline, direct login modifications prohibited
- Image signature verification failure refuses startup
- Port inventory exportable via
eneros-cli audit ports - Field-level encryption covers all PII data
- Rate limiting and quota policies effective per tenant dimension
- Network segmentation policies block unauthorized lateral access
- Annual simulated attack exercise conducted and report archived
Forensic Capability
eneros-security provides AuditChain and WormStore for full traceability of any remote control command:
let chain = AuditChain::open("/var/eneros/audit.chain")?;
let entries = chain.query().actor("dispatch_agent").range(t0, t1).fetch()?;