**스카다** 또는 **감시 제어 및 데이터 취득**은 일반적으로 산업 제어 시스템, 즉 다음과 같은 산업 공정/기반 시설/설비를 바탕으로 한 작업공정을 감시하고 제어하는 컴퓨터 시스템을 말한다.

발전, 가공, 제련과정 등에 필요한 작업 절차를 의미하며, 연속/집단/반복/분산 방식으로 운용될 수 있다.

## 구성 요소
스카다 시스템은 일반적으로 다음과 같은 구성 요소를 갖는다.

## 감시와 제어의 차이
스카다 시스템과 분산 제어 시스템을 혼동하는 경우가 있다. 일반적으로, 스카다 시스템은 작업 공정을 ''조직화''하는 쪽이며, 실시간으로 공정을 ''제어''하지는 않는다. 하지만, 통신 기술의 발달로 인해 거리상의 제약이 적고 안정적이며 레이턴시가 적고 속도도 빠른 통신이 가능해짐에 따라 실시간 제어에 관한 논의는 다소 모호한 상태가 되었다. 즉, 스카다와 DCS의 차이점으로 언급되던 것들도 대부분 시스템 분류에 따른 의미상의 차이만 남게 되었으며, 실질적인 차이는 무시할 수 있을 정도이다. 통신 기술의 발달 덕분에, 두 시스템간의 차이는 사실상 사라지게 될 것이다.

정리하자면,

## 시스템 개념도
스카다라는 용어는 특정 산업현장 전체, 또는 지리적으로 넓게 퍼져있는 산업 단지를 전반적으로 감시하고 제어하는 집중화된 시스템을 주로 일컫는다. (여기서의 산업 현장과 단지는 공장에서 국가까지 어떤 것이라도 상관없다.) 대부분의 제어 동작은 RTU와 PLC에 의해 자동으로 이루어지며, 운영자가 내릴 수 있는 제어 명령은 보통 기본적인 작업 변경이나 관리 수준의 작업 조정에 한한다. 예를 들어, 어떤 PLC가 특정 작업 공정에 사용되는 냉각수의 흐름을 조절한다면, 스카다 시스템은 그 흐름의 세부 설정을 바꾼다거나, 냉각수 손실이나 온도 등에 대한 경보를 표시하고 기록하도록 설정하는 정도의 작업을 허용하게 된다. 그리고 Feedback 신호는 RTU와 PLC에 전달되지만, 스카다 시스템은 그 Feedback 신호의 전체적인 성능을 관장하게 된다.

데이터 취득은 RTU나 PLC에서 시작되며, 스카다 시스템이 필요로 하는 계측기 수치를 읽거나 각 장비의 상태를 보고하는 작업 등이 여기에 해당된다. 이렇게 얻어진 자료들은 관제 센터에서 HMI를 사용하는 운영자가 시스템 관리를 위해 적절한 판단을 내릴 수 있도록 사람이 이해할 수 있는 형태로 알맞게 변환된다. RTU나 PLC는 이렇게 운영자가 내린 결정에 의해 명령이 변경되거나 조정된다. 한편 이 자료들은 별도의 데이터베이스와 연결된 히스토리안에 전달되어 쌓이기도 하는데, 이렇게 누적된 자료들은 데이터 동향 분석이나 기타 분석적인 연구 및 감사에 사용되게 된다.

스카다 시스템은 보통 분산형 데이터베이스를 가지고 있으며, ''태그''나 ''포인트''라고 불리는 데이터를 가지고 있기 때문에 보통 ''태그 데이터베이스''로 일컬어진다. 포인트는 시스템에 의해 감시/제어되는 하나의 입력 또는 출력부를 말한다. 이 포인트는 "하드" 포인트가 될 수도 있고 "소프트" 포인트가 될 수도 있는데, 말 그대로 하드 포인트는 시스템에서 실제로 존재하는 입력이나 출력을 의미하며, 소프트 포인트는 다른 포인트에 작용하는 형태의 산술/논리 연산자 역할을 하는 것이다. (실질적으로는 모든 값을 소프트 포인트를 통해 나타내는 방식으로 이러한 구분을 필요없게 하고 있다. 이때 가장 간단한 표현은 한 개의 하드 포인트가 될 것이다.) 포인트는 일반적으로 값-타임스탬프(값이 기록/계산된 시각)의 짝으로 기록되며, 이 값들을 나열하게 되면 그것이 그 포인트의 이력이 된다. 태그에 추가적인 메타데이터를 함께 저장하는 것도 일반적인데, 현장의 실제 장치의 위치나 PLC 레지스터, 설계 단계의 주석이나 경보와 관련된 정보가 이런 방식으로 추가될 수 있다.

## 인간-기계 인터페이스
인간 기계 인터페이스는 작업 공정에 연관된 데이터를 인간이 인지할 수 있는 형태로 나타내고, 이를 통해 해당 공정을 제어할 수 있도록 돕는 도구를 말한다.

HMI는 보통 스카다 시스템의 소프트웨어 및 데이터베이스와 연결되어 있으며, 공정에서 발생하는 각종 데이터와 이를 이용한 추세 분석 기능 등을 제공한다. 이외에 해당 공정이나 설비에 대한 관리 정보도 제공되는데, 예컨대 미리 예정된 유지 보수 일정이나 물류 정보, 특정 센서나 기계에 대한 자세한 도해, 전문가 시스템에 대한 문제 해결 도움말 등이 있다.

이런 정보는 해당 공정을 단순화시킨 다이어그램 형태로 운영자에게 제공되므로, 운영자는 전체 공정이 어떤 방식으로 동작하고 제어되는지를 간단히 알 수 있게 된다. 예를 들어, 파이프와 연결된 펌프의 그림은 현재 그 펌프가 동작중이라는 사실과, 현재 얼마만큼의 유속을 제어하는지를 보여준다. 이때 운영자가 펌프를 끈다면, HMI 소프트웨어는 곧 해당 파이프의 유속이 감소하는 것을 실시간으로 보여주게 된다. 이렇게 사용되는 단순화된 다이어그램은 해당 공정의 요소를 나타내는 선(線)과 심벌로 구성될 수도 있고, 각각의 장비를 나타내는 디지타이즈된 사진을 애니메이트된 심벌과 조합시킨 형태로 쓰이는 경우도 있다.

이렇게 사진, 그림, 애니메이션이 HMI에서 많이 쓰이기 때문에, HMI프로그램은 대개 그래픽 관련 작업을 담당하는 프로그램을 포함하고 있다. 이를 통해 운영자나 시스템 유지보수 담당자가 각 공정과 장비가 어떤 방식으로 HMI프로그램에 표시될지를 직접 바꾸고 결정할 수 있다. HMI의 그래픽은, 신호등처럼 간단하게 도식화할 수 있는 것부터 시작하여, 마천루의 모든 엘리베이터나 선로의 모든 기차를 다중 투사방식으로 한번에 나타내는 매우 복잡한 수준에 이르기도 한다.

한편, 스카다 시스템을 적용할 때 가장 중요한 것은 경보 처리이다. 스카다 시스템은 경보 발생 조건을 항상 감시하며 경보 발생 시각을 결정한다. 경보가 발생하면 운영자가 이 사실을 인지할 수 있어야 하므로 경보 표시기를 켜거나, 전자우편을 발송하거나, 문자 메시지를 전송하는 등의 어떤 조치가 취해지게 된다. 보통 이 과정에서 운영자는 경보를 "인지"하는 조작을 하게 되는데, 이 때 경보의 발생 조건에 따라 경보 표시기가 바로 꺼지기도 하고, 문제가 해결될 때까지 일부가 켜진 채로 남아있기도 한다. 경보 발생 조건은 아날로그/디지털 태그 데이터와 수식으로 결정되는 "정상"과 "비정상" 상태를 그대로 경보에 이용할 정도로 직관적일 수도 있고, 어떤 아날로그 태그 데이터에 대해 정상 동작 범위를 정해놓고 스카다 시스템이 이를 감시하다 값이 해당 범위를 벗어나면 경보 상태로 간주하는 형태처럼 복잡한 형태일 수도 있다.

경보 표시기의 예로는 사이렌, 팝업 창, 화면상의 특정 영역의 색변화나 깜빡임 등이 있으며, 어떤 형태이든 목적은 운영자가 경보 발생 사실을 효과적으로 인지하고 대응 작업을 할 수 있게 돕는 것이다. 따라서 스카다 시스템을 설계할 때에는 짧은 시간에 많은 경보를 발생시킬 경우 중첩된 경보가 무시되는 일이 발생하지 않도록 주의해야 한다. 또한, 스카다 시스템에서는 "경보"(Alarm)라는 단어는 문맥에 따라 경보 포인트(태그), 경보 표시기, 경보 이벤트 등의 여러 가지 의미로 사용되기 때문에 혼동할 여지가 있으므로 역시 주의할 필요가 있다.

## 하드웨어 솔루션
스카다 솔루션은 분산 제어 시스템을 하위 구성요소로 포함하고 있는 경우도 있다. 중앙 컴퓨터의 개입 없이 일정 수준의 논리 연산을 자동으로 수행할 수 있을 정도로 발전한 RTU나 PLC를 사용하는 일이 점점 늘어나고 있으며, 표준화된 제어용 프로그래밍 언어인 IEC 61131-3이 이런 용도로 많이 사용된다. C 언어나 포트란 등의 절차적 프로그래밍 언어와는 다르게, IEC 61131-3은 기존에 많이 사용되어온 물리 제어 배열을 사용하는 것과 유사한 수준의 최소한의 교육만을 필요로 한다. 따라서 스카다 시스템 기술자들이 RTU나 PLC용 프로그램의 설계와 구현을 모두 할 수 있게 된다. 프로그램 가능한 자동화 제어기는 퍼스널 컴퓨터 기반의 제어 시스템과 PLC의 기능을 조합시켜 간편하게 쓸 수 있도록 만든 것이다. PAC도 스카다 시스템을 통해 RTU나 PLC가 하는 일을 수행할 수가 있다. 변전소에서 운용되는 스카다 시스템의 경우, "분산된 RTU"는 정보 처리기나 변전소 시설 내의 컴퓨터를 디지털 보호 릴레이, PAC, 입출력 장치 등과 통신하기 위해 사용하며, 스카다 시스템을 통한 일반적인 RTU의 역할도 하게 된다.

대략 1998년 이후로, 거의 모든 주류 PLC 제조사들이 HMI/SCADA 시스템을 개발/공급하게 되었으며, 많은 수의 공개 또는 비 독점적 통신 프로토콜을
지원하였다. 하드웨어 개발 회사 이외에 수많은 HMI/SCADA 전문 회사들도 독자적인 상품을 공급했으며, 대부분의 주류 PLC에 대한 호환성을 갖추고 있었다. 이렇게 상용화된 제품을 통해, 소프트웨어 기술자에 의해 개발된 특정 공정에 대한 맞춤형 프로그램이 없이도 기계 기술자, 전기 기술자 등이 스스로 HMI의 환경 설정을 할 수 있게 되었다.

### 원격 단말 장치
원격 단말 장치(RTU)는 물리적인 장비와 연결되어 해당 장비가 인지하거나 출력할 수 있는 전기 신호를 컴퓨터가 이해할 수 있는 디지털 신호로 상호 변환하는 역할을 한다. 스위치나 밸브의 개폐상태, 압력 측정값, 액체 등의 흐름, 전압, 전류 등이 여기에 해당된다. 따라서 RTU는 장치가 이해할 수 있는 적절한 전기 신호를 발생시켜 밸브나 스위치를 여닫거나 펌프의 속도를 조절하고, 액체의 흐름을 제어하는 일도 가능하다.

### 관제 스테이션
관제 스테이션은 RTU나 PLC등의 현장 장비와의 통신을 담당하는 서버와 소프트웨어를 일컫는다. 제어실 등의 워크스테이션에서 동작하는 HMI소프트웨어를 의미하기도 한다. 규모가 작은 시스템에서는 한 대의 PC로 마스터 스테이션을 구성하기도 한다. 좀 더 규모가 커지면 마스터 스테이션은 다중 서버, 분산 처리가 가능한 소프트웨어, 재난 복구 기능 등을 모두 포함하게 되기도 한다. 이런 시스템의 무결성을 높이려면, 다중 서버는 이중 예비 시스템 또는 상시 대기 방식등으로 구현되며, 이를 통해 장애 발생시에도 안정적으로 제어와 감시를 할 수 있게 된다.

#### 운전 철학
제어 시스템의 장애로 생기는 손해액이 매우 큰 경우도 있으며, 생명을 잃게 되는 경우도 있다. 그래서 일부 스카다 시스템의 하드웨어는 기온, 진동, 전압 변동 등에 대해 높은 내구력을 갖도록 설계되며, 극도로 중요한 시스템에 대해서는 복수의 완전한 제어 센터를 가지게 되는 수준으로 예비 하드웨어와 통신 채널을 구성함으로써 안정성을 높인다. 장애가 일어날 경우 빠르게 해당 위치가 파악되며, 해당 기능은 백업 하드웨어 쪽으로 자동으로 인계되며, 장애가 일어난 부분을 전체 공정을 멈추지 않고도 교체할 수 있게 되어 있는 경우도 있다. 이런 시스템의 안정성은 통계적으로 계산될 수 있으며, 평균 고장 간격의 변형인 평균 고장 시간으로 나타낼 수 있다. 이러한 고 안정 시스템의 평균 고장 시간은 수 백년 단위에 이른다.

### 통신 환경 및 방법
스카다 시스템은 유선과 무선 통신을 모두 이용해왔고, 동기식 광통신망도 철도나 발전소처럼 대규모의 시스템에 많이 사용되었다. 스카다 시스템의 원격 관리나 감시 기능을 원격측정법의 일종으로 보기도 한다. 일부 유저들은 스카다 데이터를 미리 구축해놓은 사내망을 통해 전송하거나, 다른 응용 프로그램과 해당 망을 공유하기도 한다. 과거의 저속망에 적합한 프로토콜이 여전히 남아있는 경우도 있다.

스카다 시스템에 사용되는 프로토콜은 가볍게 동작할 수 있는 형태로 설계된다. 마스터 스테이션이 RTU의 데이터를 주기적으로 검사하려 할 때에만 정보를 전송하는 경우가 많다. 널리 사용되는 구형 프로토콜로는 모드버스 RTU, RP-570, 프로피버스, 코니텔 등이 있다. 이 통신 프로토콜들은 모두 스카다 공급사에 의존적인 형태이긴 하지만, 지금까지 널리 보급되고 사용되었다. 표준 프로토콜로는 IEC 60870-5-101 또는 104, IEC 61850, DNP3 등이 있다. 이 프로토콜들은 모든 유명 스카다 공급사들에 의해 지원되고 표준화되었다. 한편, 현재 이 프로토콜들의 대부분은 TCP/IP를 지원하기 위한 확장 기능도 갖추고 있다.

한편, 보안 측면에서는 외부로부터의 공격 가능성을 낮추기 위해 스카다 시스템을 인터넷에 연결하지 않는 것이 좋다는 의견이 있다. 그러나 현재 상하수도 설비 등 여러 현장에서는 관리 목적으로 셀 무선 통신망을 이용하고 최종 소비자에게 데이터를 전달하는 등의 목적으로 인터넷 포털과 연동을 해오고 있다. 이 때 무선망으로 전송되는 데이터는 인터넷으로 전달되기 전에 암호화된다.

최근, 미국의 북미 전기 신뢰성 협회나 주요 기반시설 보호 등의 예처럼 보안의 중요성이 증가함에 따라, 위성 통신을 사용하는 경우도 늘어나고 있다. 이 경우의 장점은 독립적인 통신 기반시설을 갖출 수 있다는 것, (즉 공중 전화망을 이용하지 않음) 자체적인 암호화 기법을 사용할 수 있다는 것, 신뢰성과 가용성을 스카다 시스템 운용자가 원하는 만큼 갖출 수 있다는 것이다. 과거 일반 소비자 등급의 초소형 위성 기지국을 이용한 시도는 결과가 좋지 않았다. 최근의 캐리어 등급을 만족하는 시스템은 스카다가 필요로 하는 수준의 성능을 제공하고 있다.

RTU 및 기타 자동 제어 장치들은 상호 운용 가능성에 대한 산업 표준의 시대가 도래하기 전에 개발되었다. 이때문에 개발자와 관리자들은 수많은 제어 프로토콜을 만들어내게 되었다. 대형 업체들 역시 고객을 유지하기 위해 자신만의 고유프로토콜을 사용하는 경향이 있었다. 하지만 최근에는 공정 제어를 위한 OLE 프로토콜이 각종 하드웨어, 소프트웨어간의 통신을 위해 널리 사용되고 있다. 이를 이용하면 산업망과의 연동을 고려하지 않은 장치끼리도 상호 통신을 할 수 있게 된다.

## 스카다의 동작구조
스카다 시스템은 다음과 같은 3세대를 거쳐 발전해왔다.

### 1세대: "모놀리식"
1세대에서는 전산 작업은 메인프레임 컴퓨터를 통해 이루어졌다. 스카다가 처음 배치되던 때에는 네트워크는 존재하지 않았으며, 당연히도 스카다 시스템은 독립적으로 동작하는 형태였으며 다른 시스템과의 연동은 없었다. 이후에 RTU 공급사들에 의해 RTU와의 통신을 위한 광역 통신망이 개발되었고, 당시 사용된 통신 프로토콜은 특정 구성 전용으로 사용되는 독점적인 형태인 경우가 흔했다. 1세대 스카다 시스템은 예비 구성이 가능했는데, 백업 메인프레임 시스템이 버스 수준으로 연결되어 있었고 주 메인프레임에 문제가 생겼을 때 이것이 대신 사용되었다.

### 2세대: "분산처리"
근거리 통신망에 의해 여러 개의 스테이션으로 처리과정이 분산되었으며, 실시간으로 정보가 공유되었다. 각 스테이션은 각각의 특정한 작업을 담당하게 되었고, 이를 통해 각각의 스테이션 구성에 들어가는 비용은 1세대 당시의 그것보다 저렴해지게 되었다. 통신 프로토콜은 여전히 독점적 형태가 많았기 때문에, 해커의 표적이 되었을 경우 심각한 보안 문제가 있었다. 당시의 프로토콜은 폐쇄적인 구조였기 때문에 개발자와 해커 정도를 제외하면 스카다 시스템에 대한 보안을 강화하는 방법을 알기가 어려웠다. 미국의 경우 당시의 양당은 보안 문제 자체를 알리지 않는 방식으로 보안을 유지하려 했기 때문에, 스카다 시스템의 보안 능력은 마치 이미 대비가 되어있기라도 한 것처럼 과대평가되었다.

### 3세대: "네트워크"
표준 프로토콜이 사용되고 많은 수의 스카다 시스템이 인터넷으로 접근 가능하기에, 네트워크를 통한 원격 공격에 잠재적으로 취약하다고 할 수 있다. 반면에, 표준 프로토콜 및 보안 기술을 사용한다는 것은 표준화된 보안 강화 기술들이 스카다 시스템에도 적용될 수 있음을 의미하기도 한다. 물론 여기에는 이 시스템들이 주기적으로 유지보수 및 업데이트를 받아야 한다는 전제가 있다.

## 보안 문제
폐쇄적인 기술에서 표준화되고 공개된 기술로의 이전, 그리고 스카다-인터넷-사내 네트워크간 연결이 증가하고 있다는 사실은 이들이 외부 공격에 대해 취약해짐을 의미한다(주석 참조). 또한 일부 스카다 시스템이 잠재적으로 사이버 공격에 취약한 것으로 여겨짐에 따라 보안 문제가 대두되게 되었다.

보안 전문가들이 특히 우려하는 것들은 다음과 같다.

스카다 시스템은 물리적인 공정을 제어하고 감시한다. 전기 전송, 파이프틀 통한 가스와 기름의 수송, 상수도, 도로 신호 체계등 현대 사회의 여러 기반 시스템들이 그 대상이 될 수 있다. 이런 시스템을 파괴하거나 오동작하게 만든다면, 그 영향은 해당 공격에 직접적인 영향을 받은 분야 이외에도 수많은 사회 영역에 악영향을 주게 될 것이다. 예를 들어, 스카다 시스템에 고장을 일으켜 정전이 일어난다면, 해당 전원을 사용하고 있는 고객들에게 심각한 금전적 손해를 입힐 수 있을 것이다. 보안 문제가 기존 스카다 시스템과 신규 시스템에 미치는 영향력은 여전히 연구 대상이다.

최근의 스카다 시스템에는 두 가지의 뚜렷한 보안상의 위협이 존재한다. 우선 제어 소프트웨어에 대해 몰래 접근 권한을 얻는 상황이나 기타 주 제어 시스템에 상주할 수 있는 소프트웨어적 위협이 있을 수 있는데, 이것은 인간에 의해서 이루어지기도 하고, 의도적이거나 사고로 인한 컴퓨터 바이러스 감염에 의해서일수도 있다. 다음으로 스카다 디바이스들을 관장하는 네트워크 패킷에 대한 접근 권한을 얻는 상황이 있다. 실질적인 패킷 제어 프로토콜에는 아주 기본적인 보안만 걸려있거나 아예 보안이 없는 경우가 많기 때문에, 누군가 해당 스카다 디바이스에 패킷을 내려보낼 수만 있다면 그것은 곧 제어권을 얻는다는 것과 같다. 스카다 사용자들은 VPN 정도면 충분한 보안성을 확보했다고만 생각하고 실제 장비의 네트워크 단자나 스위치 등이 제어 소프트웨어나 스카나 네트워크가 제공하는 모든 보안시스템을 무력화할 수 있음을 간과하는 경우가 있는데, 이런 형태의 물리적 공격은 방화벽이나 VPN 보안을 우회하는 셈이다. 이것은 스카다 시스템과 무관한 장치 내장 SSL이나 기타 암호화 기술에 의해 종점간의 인증 및 허가 기능을 이용함으로써 해결될 수 있다.

최근의 기반시설에 존재하는 스카다 시스템의 안정적인 기능이 공공 건강과 안전에 큰 위협이 될 수도 있다. 이런 시스템이 공격을 받는다면 직간접적으로 공공 건강과 안전을 위협하게 된다. 실제로 이러한 일이 오스트레일리아의 퀸즐랜드주에 있는 마루치 지자체의 하수 처리 시설에서 일어났다. 2000년 1월, 한 계약직 직원이 스카다 시스템을 설치하고 잠시 후, 시스템이 오동작하기 시작했다. 펌프가 제때 동작하지 않았으며 경보 기능도 동작하지 않았다. 뿐만 아니라 오수가 가까운 공원에 넘쳐났고 개방형 지표수 배수 시설을 오염시켰으며 감조식 수로까지 500 미터를 흘러갔다. 스카다 시스템은 오수 밸브를 열도록 지시하고 있었지만 설계 프로토콜상에서는 닫힌 상태를 유지하게 되어 있었다. 사고 후 초기에는 이것이 소프트웨어 버그로 생각되었지만, 데이터 로그를 분석해본 결과 사이버 공격임이 밝혀졌다. 조사를 담당한 사람들은 범인이 밝혀지기 전까지 46개의 외부 공격 인스턴스가 있었음을 보고했다. 이 공격은 회사에 불만이 있었던 한 직원에 의해 이루어졌는데, 바로 그 직원이 스카다 시스템을 설치한 것이었다. 스카다 시스템에 문제가 발생하면 그것을 해결하기 위해 정직원으로 고용될 것을 기대했기 때문이었다.

스카다 및 제어 상품의 공급자들은 시스템에 대한 허가받지 않은 접근으로 인해 발생할 위험에 대해, 전문화된 산업용 방화벽이나 가상 사설망과 같은 대응책을 마련하기 시작했다. 이 기술들은 TCP/IP기반 스카다 네트워크는 물론, 스카다가 감시하고 기록하는 외부 장비에도 대응한다. 또한, ISA 보안 준수 협회를 통해 2009년부터 스카다 시스템의 보안 문제 검증을 공식화하려는 시도가 이루어지고 있다.

스카다 시스템의 취약성 문제가 떠오르자, 보안 전문가들에 의해 상용 스카다 제품들에 대한 취약성 검증이 시도되었으며, 좀더 일반적인 스카다 공격 기술이 보안 커뮤니티에 제공되었다. 전기와 가스 분야의 스카다 시스템에서는, 유무선 직렬 통신을 기반으로 한 대규모 현장의 보안 취약성을 범프 인 더 와이어기술을 통해 해결하려는 시도가 이루어지고 있으며, 이것은 기존의 노드를 전부 교체하는 대신, 인증 시스템 및 고급 암호화 표준을 도입하는 방식으로 이루어지고 있다.)이라고 일컬어지며, 네 개의 제로 데이 공격을 사용하여 루트킷을 설치하고 이를 이용해 스카다의 데이터베이스에 접속하여 설계 및 제어 관련 파일을 훔쳐내는 형태를 갖고 있다.