Skip to main content

IEC 62443 Compliance

Compliance & Security

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-standardTopicApplicable ObjectEnerOS Role
62443-1-xConcepts, terminology, modelsAll stakeholdersAsset owner, product supplier
62443-2-xAsset owner security programAsset ownersDeployment reference
62443-3-xSystem security requirements and levelsSystem integratorsSystem integration reference
62443-4-xComponent security requirements and development processProduct suppliersCore 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:

LevelProtection TargetAttacker ProfileTypical Power ScenarioEnerOS Default Config
SL1Accidental or inadvertent violationsUnintentional misuse by laypersonsNon-critical monitoring display nodessecurity.level = "sl1"
SL2Low-resource attackersSimple tools, low skillsDistribution automation terminalssecurity.level = "sl2"
SL3Medium-resource attackersICS expertise, complex toolsSubstation monitoring systemssecurity.level = "sl3"
SL4Advanced-resource attackersNation-state APT, custom malwareLarge grid dispatch centerssecurity.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)SL1SL2SL3SL4
FR1 Identification & Access ControlCR1.1+CR1.2+CR1.3-1.8+CR1.9-1.12
FR2 Use ControlCR2.1+CR2.2+CR2.3-2.8+CR2.9-2.12
FR3 System IntegrityCR3.1+CR3.2+CR3.3-3.4+CR3.4 enhanced
FR4 Data ConfidentialityCR4.1+CR4.2+CR4.3+CR4.3 enhanced
FR5 Restricted Data FlowCR5.1+CR5.2+CR5.3-5.4+CR5.4 enhanced
FR6 Incident ResponseCR6.1+CR6.2+CR6.2 enhanced
FR7 Resource AvailabilityCR7.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-standardTopicEnerOS Implementation
4-1 SR1Security requirementsThreat modeling + SDL process
4-1 SR2Security designLayered architecture + Zero Trust
4-1 SR3Security implementationRust memory safety + fuzzing
4-1 SR4Security verificationStatic analysis + penetration testing
4-1 SR5Secure operationsVulnerability response + patch distribution
4-2 CR 1.1Identification & authenticationmTLS + X.509 + SPIFFE
4-2 CR 1.2Software & information integrityHMAC chained audit
4-2 CR 1.9Audit accessibilityWORM forensic storage
4-2 CR 2.1Communication protectionTLS 1.3 + PQC hybrid
4-2 CR 3.1Input validationKernel constraint enforcement
4-2 CR 4.1Data confidentialityAES-256-GCM field encryption
4-2 CR 5.1Network segmentationNamespace + network policy
4-2 CR 7.1Denial of service protectionRate 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:

  1. Requirements phase: Threat modeling based on STRIDE and LINDDUN, outputting threat lists and security requirement items
  2. Design phase: Architecture review meetings examine the attack surface, outputting security design documents (including data flow diagrams, trust boundaries)
  3. Implementation phase: Rust #![forbid(unsafe_code)], Clippy security ruleset, dependency audit cargo audit
  4. Verification phase: Unit tests covering security paths, fuzzing starting from 2 million iterations, third-party penetration testing
  5. 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:

CRImplementation LocationConfig ItemDefault Value
CR 1.1eneros-trustauth.mtls.requiredtrue
CR 1.2eneros-auditaudit.hmac.chaintrue
CR 1.9eneros-auditaudit.worm.path/var/eneros/audit
CR 2.1eneros-gatewaytls.min_versionTLS_1_3
CR 4.1eneros-tenantencryption.field.algorithmAES-256-GCM
CR 7.1eneros-gatewayratelimit.rps1000

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:

CRRequirementTechnical ImplementationVerification Evidence
CR 1.1Human & device authenticationX.509 + SPIFFE + mTLSCertificate issuance records, handshake logs
CR 1.2Software & information integrityHMAC chained auditHMAC verification report
CR 1.4Identifier managementSPIFFE ID uniquenessID registry
CR 1.7Password strengthPassword policy middlewareStrength audit logs
CR 1.9Audit accessibilityWORM + read-only APIWORM integrity proof
CR 1.12Interface use controlRBAC + ABACPolicy hit logs
CR 2.1Communication protectionTLS 1.3 + PQCTLS handshake captures
CR 2.4Two-factor controlselect-before-operateSBO flow logs
CR 3.1Input validationKernel constraintsOut-of-limit rejection counts
CR 4.1Data confidentialityAES-256-GCMEncryption algorithm proof
CR 5.1Network segmentationNamespace + network policyTopology audit
CR 6.1Audit log auditabilityTamper-proof log chainHMAC chain verification
CR 7.1Denial of service protectionRate limiting + priority queueLoad test report
CR 7.2Resource reservesResource quotas + elastic scalingCapacity planning document
CR 7.6Network partitioningFailure domain isolationIsolation test report

Certification Process

EnerOS assists users in completing IEC 62443-4-1 and 4-2 certification:

  1. Preparation phase: Use eneros-cli compliance check --standard iec-62443 to generate a self-assessment report
  2. Gap analysis: Compare against SL targets to output a gap list and remediation recommendations
  3. Remediation implementation: Adjust eneros.toml and network configuration based on recommendations
  4. On-site assessment: Third-party certification bodies (such as TÜV, exida) conduct on-site audits
  5. Certification issuance: Upon passing, obtain IEC 62443-4-1 / 4-2 certification (valid for 3 years)
  6. 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()?;