OCPP 2.0.1 SecurityEventNotification 메시지

 

SecurityEventNotification 개요

SecurityEventNotification은 충전소에서 보안 관련 이벤트가 발생했을 때 중앙 시스템(CSMS)에 즉시 알리는 중요한 메시지입니다. 이 메시지는 보안 위협 탐지, 무단 접근 시도, 시스템 무결성 검증 실패 등 다양한 보안 사건을 실시간으로 보고하여 충전 인프라의 보안을 강화하는 역할을 합니다.

메시지 구조

Request (충전소 → CSMS)

{
  "type": "AttemptedReplayAttacks",
  "timestamp": "2024-08-20T14:30:00.000Z",
  "techInfo": "Duplicate message sequence detected from unknown source IP: 192.168.1.100"
}

Response (CSMS → 충전소)

{
  "customData": {
    "vendorId": "VendorX",
    "data": "Security alert acknowledged"
  }
}

주요 필드 설명

Request 필드들

type 필드 (필수)

설명
FirmwareUpdated 펌웨어가 업데이트됨
FailedToAuthenticateAtCsms CSMS 인증 실패
CsmsFailedToAuthenticate CSMS가 충전소 인증 실패
SettingSystemTime 시스템 시간 설정
StartupOfTheDevice 장치 시작
ResetOrReboot 리셋 또는 재부팅
SecurityLogWasCleared 보안 로그 삭제됨
ReconfigurationOfSecurityParameters 보안 매개변수 재구성
MemoryExhaustion 메모리 부족
InvalidMessages 잘못된 메시지 수신
AttemptedReplayAttacks 재전송 공격 시도 감지
TamperDetectionActivated 변조 탐지 활성화
InvalidFirmwareSignature 잘못된 펌웨어 서명
InvalidFirmwareSigningCertificate 잘못된 펌웨어 서명 인증서
InvalidCentralSystemCertificate 잘못된 중앙 시스템 인증서
InvalidChargingStationCertificate 잘못된 충전소 인증서
InvalidTLSVersion 잘못된 TLS 버전
InvalidTLSCipherSuite 잘못된 TLS 암호화 스위트
MaintenanceLoginAccepted 유지보수 로그인 승인됨
MaintenanceLoginFailed 유지보수 로그인 실패

timestamp 필드 (필수)

필드명 필수여부 타입 설명
timestamp 필수 DateTime 보안 이벤트 발생 시간 (ISO 8601 형식)

techInfo 필드 (선택사항)

필드명 필수여부 타입 설명
techInfo 선택사항 String 기술적 세부 정보 (최대 255자)

Response 필드들

필드명 필수여부 타입 설명
customData 선택사항 Object 벤더별 사용자 정의 데이터

실제 사용 예제

예제 1: 재전송 공격 시도 탐지

// Request
{
  "type": "AttemptedReplayAttacks",
  "timestamp": "2024-08-20T14:30:15.123Z",
  "techInfo": "Duplicate TransactionEvent message detected. Original timestamp: 2024-08-20T14:28:10.000Z, Replay timestamp: 2024-08-20T14:30:15.000Z, Source IP: 203.0.113.42"
}

// Response
{
  "customData": {
    "vendorId": "SecureCharge",
    "action": "block_ip",
    "data": "IP address added to blocklist for 24 hours"
  }
}

예제 2: 변조 탐지 활성화

// Request
{
  "type": "TamperDetectionActivated",
  "timestamp": "2024-08-20T09:15:30.456Z",
  "techInfo": "Physical tampering detected on connector housing. Sensor ID: TAMPER_01, Location: Connector 1"
}

// Response
{
  "customData": {
    "vendorId": "SafeCharge",
    "alertLevel": "high",
    "data": "Physical security breach notification sent to maintenance team"
  }
}

예제 3: 잘못된 펌웨어 서명

// Request
{
  "type": "InvalidFirmwareSignature",
  "timestamp": "2024-08-20T16:45:22.789Z",
  "techInfo": "Firmware signature verification failed. File: firmware_v2.1.3.bin, Expected signature: SHA256:a1b2c3..., Actual signature: SHA256:x9y8z7..."
}

// Response
{
  "customData": {
    "vendorId": "TrustedCharge",
    "action": "firmware_rollback",
    "data": "Automatic rollback to previous firmware version initiated"
  }
}

예제 4: CSMS 인증 실패

// Request
{
  "type": "FailedToAuthenticateAtCsms",
  "timestamp": "2024-08-20T12:22:45.234Z",
  "techInfo": "TLS handshake failed with CSMS. Certificate chain validation error: unable to get local issuer certificate"
}

// Response
{
  "customData": {
    "vendorId": "CertManager",
    "action": "certificate_renewal",
    "data": "Certificate renewal process initiated"
  }
}

예제 5: 유지보수 로그인 실패

// Request
{
  "type": "MaintenanceLoginFailed",
  "timestamp": "2024-08-20T18:10:33.567Z",
  "techInfo": "Failed maintenance login attempt. Username: admin, Source IP: 10.0.0.50, Failure count: 3, Account locked for 30 minutes"
}

// Response
{
  "customData": {
    "vendorId": "AccessControl",
    "alertLevel": "medium",
    "data": "Security team notified of repeated login failures"
  }
}

예제 6: 메모리 부족

// Request
{
  "type": "MemoryExhaustion",
  "timestamp": "2024-08-20T11:35:18.890Z",
  "techInfo": "Available memory: 2.1MB, Memory threshold: 5MB, Active processes: TransactionManager(45%), LogManager(25%), NetworkManager(20%)"
}

// Response
{
  "customData": {
    "vendorId": "PerformanceMonitor",
    "action": "memory_cleanup",
    "data": "Memory optimization routine scheduled"
  }
}

예제 7: 보안 로그 삭제 감지

// Request
{
  "type": "SecurityLogWasCleared",
  "timestamp": "2024-08-20T20:45:12.345Z",
  "techInfo": "Security log file cleared. Previous size: 15.2MB, Cleared by: system_maintenance, Backup status: completed"
}

// Response
{
  "customData": {
    "vendorId": "LogAuditor",
    "action": "backup_verification",
    "data": "Log backup integrity verified and stored"
  }
}

처리 흐름

  1. 보안 이벤트 발생: 충전소에서 보안 관련 이벤트 감지
  2. 즉시 보고: SecurityEventNotification을 CSMS로 즉시 전송
  3. CSMS 분석: 중앙 시스템에서 보안 이벤트 분석 및 위험도 평가
  4. 대응 조치:
    • 경미한 경우: 로그 기록 및 모니터링 강화
    • 심각한 경우: 긴급 대응팀 알림, 자동 보안 조치 실행
  5. 후속 처리: 보안 정책 업데이트, 패치 적용 등

보안 이벤트 분류

고위험 이벤트

  • TamperDetectionActivated: 물리적 변조 시도
  • AttemptedReplayAttacks: 재전송 공격
  • InvalidFirmwareSignature: 펌웨어 무결성 훼손
  • MaintenanceLoginFailed: 반복적인 로그인 실패

중위험 이벤트

  • FailedToAuthenticateAtCsms: CSMS 인증 실패
  • InvalidCentralSystemCertificate: 인증서 문제
  • MemoryExhaustion: 시스템 리소스 부족
  • InvalidMessages: 비정상 메시지 수신

저위험 이벤트 (정보성)

  • FirmwareUpdated: 정상적인 펌웨어 업데이트
  • StartupOfTheDevice: 장치 정상 시작
  • SettingSystemTime: 시간 동기화
  • MaintenanceLoginAccepted: 정상적인 유지보수 접근

중요 포인트

  • SecurityEventNotification은 충전 인프라 보안의 핵심 모니터링 메시지입니다
  • 보안 이벤트는 발생 즉시 전송되어야 하며, 지연되어서는 안 됩니다
  • techInfo 필드에는 보안 분석에 필요한 상세 정보를 포함해야 합니다
  • CSMS는 보안 이벤트의 심각도에 따라 자동화된 대응 조치를 수행해야 합니다
  • 보안 로그는 변조 방지를 위해 안전한 저장소에 백업되어야 합니다
  • 정기적인 보안 감사와 이벤트 패턴 분석을 통해 위협을 사전에 탐지할 수 있습니다
  • 물리적 보안과 사이버 보안 이벤트를 모두 포괄하여 종합적인 보안 관리가 가능합니다

이 메시지를 통해 충전소 네트워크의 보안 상태를 실시간으로 모니터링하고, 보안 위협에 신속하게 대응하여 안전하고 신뢰할 수 있는 충전 서비스를 제공할 수 있습니다.