안전계통 디지털 I&C 망분리, 단방향 통신이 성립하는 세 조건

결론부터 씁니다. 안전계통 디지털 I&C의 망분리에서 “단방향 통신”은 방화벽 규칙이 아니라 물리 계층에서 역방향 경로가 존재하지 않는 구조를 뜻해야 합니다. 그리고 단방향이 성립하려면 통신 프로토콜 자체가 수신 확인(ACK)을 요구하지 않아야 하고, 안전 프로세서의 연산 주기가 통신 상태와 무관하게 돌아야 합니다. 이 세 조건 중 하나라도 빠지면, 선로는 단방향이어도 안전계통은 비안전 계통의 상태에 종속됩니다.

안전 프로세서, 통신 프로세서, 광 데이터 다이오드, 비안전 게이트웨이, 감시 단말과 운전원 콘솔에서 하드와이어 격리 장치로 들어가는 경로를 보여 주는 등각 도식
안전 데이터는 데이터 다이오드를 거쳐 한 방향으로만 나가고, 운전원 조작은 네트워크가 아닌 하드와이어 격리 장치로 들어갑니다.

안전 인터락 조건부터 확인합니다

통신 경계에서 인터락의 목적은 비안전 쪽의 어떤 상태(고장, 과부하, 악성 입력)도 안전 기능의 수행을 방해하지 못하게 하는 것입니다. IEEE 7-4.3.2는 안전계통 디지털 컴퓨터의 통신 독립성을, IEC 61513은 안전 중요 I&C의 계통 구조를, IEC 62645는 원전 I&C 사이버보안 요건을 다룹니다. 이 원칙을 체크리스트로 옮기면 다음과 같습니다.

  • □ 안전→비안전 링크가 물리적으로 송신 전용인지 확인(광 송신부만 있는 데이터 다이오드 등). 수신 회로가 물리적으로 없는 것과 소프트웨어로 막은 것은 다릅니다.
  • □ 안전 프로세서가 통신 송신 완료나 응답을 기다리지 않는지 확인. 송신은 버퍼에 쓰고 끝나는 구조여야 합니다.
  • □ 통신 모듈 고장(송신부 정지, 버퍼 가득 참)이 안전 프로세서의 연산 주기를 늘리거나 멈추지 않는지 시험으로 확인.
  • □ 비안전→안전 방향으로 들어가야 하는 신호(예: 운전원 수동 조작)는 네트워크가 아니라 하드와이어 접점 또는 격리 장치를 거치는지 확인.
  • □ 정비·설정 변경용 포트는 운전 중 물리적 키 스위치 또는 케이블 분리로 차단되고, 연결 상태가 제어실에 표시되는지 확인.
  • □ 안전 트레인 간 통신이 있다면, 한 트레인의 통신 고장이 다른 트레인의 기능에 영향을 주지 않는지 확인.

단방향이 성립하는 세 조건

첫째는 물리 계층입니다. 광 송신부와 광 수신부가 한 방향으로만 연결된 데이터 다이오드는 역방향 신호가 전달될 매체 자체가 없습니다. 반면 방화벽이나 스위치 설정으로 역방향을 차단한 구성은 설정 오류나 장비 고장 한 번으로 양방향이 됩니다.

둘째는 프로토콜입니다. TCP처럼 연결 수립과 수신 확인을 요구하는 프로토콜은 물리적 단방향 링크 위에서 동작하지 않습니다. 그래서 단방향 구간은 UDP 계열의 브로드캐스트형 전송이나 전용 프레임을 쓰고, 오류 검출은 수신측이 CRC와 순번(Sequence Number)으로 스스로 합니다. 누락된 프레임은 재전송 요청이 불가능하므로 다음 주기 데이터로 대체되는 것을 전제로 설계합니다.

셋째는 연산 독립성입니다. 이 부분이 가장 자주 놓칩니다. 안전 프로세서가 “송신 함수 호출 후 완료 대기”를 하면 링크가 단방향이어도 송신부 고장이 연산 주기에 영향을 줍니다. 안전 프로세서는 공유 메모리나 이중 포트 메모리에 쓰고 끝내고, 송신은 별도 통신 프로세서가 비동기로 수행하는 구조가 원칙입니다.

구성 순서도

  1. 안전 프로세서가 연산 주기 말미에 출력 데이터를 이중 포트 메모리에 기록합니다.
  2. 통신 프로세서가 독립 주기로 메모리를 읽고, 순번과 CRC를 붙여 프레임을 만듭니다.
  3. 프레임은 송신 전용 광 링크(데이터 다이오드)로 비안전 게이트웨이에 전달됩니다.
  4. 비안전 게이트웨이는 CRC·순번을 검사하고, 누락·지연을 자체 판정해 데이터 품질 플래그를 붙입니다.
  5. 비안전 영역의 표시·기록·감시 기능은 품질 플래그를 확인한 데이터만 사용합니다.

안전 측 송신 처리 의사코드 (IEC 61131-3 ST)

(* I/O MAP - 안전 프로세서 측 *)
(* %MW100~%MW131 : DPM_TX_AREA         - 이중포트메모리 송신 영역 *)
(* %MW132        : DPM_TX_SEQ          - 송신 순번 *)
(* %I8.0         : DI_COMM_MOD_HEALTHY - 통신 모듈 상태 (감시 전용) *)
(* %I8.1         : DI_MAINT_PORT_KEY   - 정비포트 키스위치 연결 위치 (하드와이어) *)
(* %Q6.0         : DO_COMM_FAULT_LAMP  - 통신 모듈 이상 표시 *)
(* %Q6.1         : DO_MAINT_PORT_ALM   - 정비포트 연결 경보 *)

(* 1. 보호 연산 - 통신 상태와 무관하게 매 주기 수행 *)
PROTECTION_LOGIC();   (* 트립 판정은 이 함수 안에서 완결 *)

(* 2. 송신 - 메모리에 쓰고 끝. 완료·응답 대기 없음 *)
DPM_TX_AREA := PROTECTION_STATUS_SNAPSHOT;
DPM_TX_SEQ  := DPM_TX_SEQ + 1;

(* 3. 통신 모듈 이상은 표시만. 보호 연산에 되먹임 금지 *)
DO_COMM_FAULT_LAMP := NOT DI_COMM_MOD_HEALTHY;

(* 4. 정비포트 - 연결 자체는 하드웨어 키로 제어, 로직은 상태 표시만 *)
DO_MAINT_PORT_ALM := DI_MAINT_PORT_KEY;

(* 금지: IF NOT DI_COMM_MOD_HEALTHY THEN ... 보호 연산 변경 ... END_IF; *)
(* 금지: WAIT_TX_DONE(); 또는 수신 응답 대기 루프 *)

마지막 두 줄의 금지 항목이 이 글의 요점입니다. 통신 모듈 상태를 보호 연산의 조건으로 쓰는 순간, 통신 경계는 더 이상 경계가 아닙니다. 감시는 하되 되먹임은 하지 않는다는 원칙을 코드 리뷰 체크 항목으로 고정해 두는 편이 안전합니다.

분리 방식 비교

방식 역방향 차단 근거 설정 오류 영향 적용 위치
방화벽 규칙 소프트웨어 설정 양방향화 가능 비안전 구역 간
단방향 게이트웨이(SW) 소프트웨어 구현 구현 결함 영향 비안전 구역 간
광 데이터 다이오드 물리적 부재 역방향 불가 안전→비안전
하드와이어 격리 전기적 격리 해당 없음 비안전→안전 신호

표에서 적용 위치 열을 보면 결론이 나옵니다. 안전 경계에는 역방향 차단 근거가 “물리적 부재”인 방식만 쓰고, 소프트웨어 기반 분리는 비안전 구역 사이의 다층 방어로 씁니다. 비안전에서 안전으로 들어가야 하는 신호는 네트워크 경로를 만들지 않고 하드와이어 격리 장치로 처리합니다.

경계 조건

이 원칙이 부담이 되는 조건은 안전계통 쪽으로 데이터를 넣어야 하는 기능이 늘어날 때입니다. 예를 들어 설정값 변경, 온라인 진단, 소프트웨어 갱신은 본질적으로 역방향 경로를 요구합니다. 이를 운전 중 네트워크로 허용하면 단방향 원칙이 무너지므로, 해당 작업은 채널을 바이패스하고 물리적 키로 정비포트를 연결한 상태에서만 수행하도록 운영 절차와 하드웨어로 묶어야 합니다. 통신 링크의 실제 오류율과 지연 특성은 설치 환경에 따라 달라지므로 파형 분석 및 실측 요망 사항입니다.

단일 판단 기준은 이렇습니다. 통신 모듈을 뽑아도 보호 연산 주기와 트립 판정이 바뀌지 않는다는 것을 시험으로 보일 수 있을 때만 그 경계를 단방향으로 인정합니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤