1. ICCP 프로토콜
ICCP(Inter Control-Centre Communication Protocol)
: 여러 프로토콜을 사용하는 전력 제어센터들 사이에서 실시간 데이터 교환에 사용되는 프로토콜
- 미국 전력연구소에서 전력 제어센터간 통신을 담당하는 프로토콜로 발표한 통신 규약
- 제어센터
- 전력망과 관련된 정보를 받고 상황에 따라 적절한 명령을 내려서 시스템이 안전한 상태로 유지시키는 역할
- 여러 프로토콜을 사용하는데 자동화용 통신 규약인 MMS를 응용계층 하부 규약으로 지정하여 서로 다른 기종간의 원활한 통신을 지원
- 지원 내역으로는 장치제어, 일반적인 메세지(report), 원격제어 센터의 프로그램 제어등이 존재
2. ICCP 프로토콜의 표준
- 전기 공학 및 전력 시스템 자동화 애플리케이션에서 원격제어(감독 제어 및 데이터 수집)에 사용되는 시스템을 정의 (IEC 60870)
- 전기 공학 및 전력 시스템 자동화 분야의 IEC 60870 6부
- IEC 60870-6-503 : 서비스 및 프로토콜
- IEC 60870-6-602 : 전송 프로토콜
- IEC 60870-6-702 : 프로파일
- IEC 60870-6-802 : 객체 모델
3. ICCP 프로토콜의 구조
3-1. 전체적인 구조
- ICCP프로토콜은 OSI 7 Layer의 애플리케이션 계층에서 동작
- 응용계층의 하부 계층으로 MMS, ACSE를 이용하여 MMS의 장점을 상속
(상호 운용성, 통합의 편리성) - 서버-클라이언트 모델을 사용하여 통신하며 구조화된 데이터 블록인 PDU를 이용하여 통신
3-2. 응용계층
3-2-1. MMS
(Manufacturing Message Specification)
- 서로 다른 제조회사의 서로 다른 단위제어기기 간에 메세지 교환을 위해 사용하는 프로토콜
- 제정된 표준
- ISO/IEC 9506-1
: 가상제조기기(VMD), 네트워크 상에서 교환되는 메세지, VMD에 관련된 속성과 파라미터에 대해 기술 - ISO/IEC 9506-2
: 프로토콜의 사양을 표현계층의 추상구문표현 ASN.1로 기술되어있다.
- ISO/IEC 9506-1
- MMS가 서버-클라이언트 모델을 사용하여 통신
(MMS의 이점)
- 다른 제조사 기기간 서로 다른 프로토콜을 사용하는 기기들 간 통신을 가능하게 하는 "상호운용성"이 크다.
- 이외에도 통합의 편리성, 설치비용과 유지보수 비용감소, 응용프로그램 이식등 이점이 존재
- 가상제조기기(VMD)로서 각각의 디바이스를 표현하여 통일된 통신을 할 수 있는 환경을 제공
3-2-2. ACSE
(Association Control Service Element)
- 하나의 애플리케이션 프로그램 간에 호출을 설정하기 위한 OSI방법
- 2개의 사용자 응용 프로세스(AP)간에 통신을 위해서 데이터 교환 전에 하나의 논리적인 통신 채널을 설정하는데 이를 "결합"이라 명칭
- ACSE는 이 결합을 설정하고 해제하는 기능을 수행하는 ASE(응용 서비스 요소)
- ACSE를 통해 엔티티의 ID와 컨텍스트를 확인하고 인증 보안 검사를 적용 가능
3-2-3. ICCP와 MMS의 관계
- 실제 데이터 센터를 나타내기 위해 가상제어센터(VCC)라는 추상적인 개념을 사용
- MMS의 가상제조기기(VMD)개념의 확대로 실제 계통운영센터의 모든 데이터들을 추상화하여 표현
- MMS의 객체와 서비스들 중 일부분이 매핑되어서 사용
- ICCP의 서비스
- 제어센터 응용어플리케이션으로 서비스를 제공
- MMS의 서비스와 프로토콜, 그리고 기능을 이용하는 표준화된 응용프로토콜
- MMS객체에 매핑되어있는 구조화된 데이터를 표현
(MMS와 ICCP의 차이점)
=> 둘다 사용자에게 서비스를 제공한다는 점은 같지만
ICCP는 제어센터간에 메세지 교환을 위해 최적화 되었다는 점에서 다르다.
3-3. 전송계층
=> OSI 7계층 구조에서 ICCP를 사용하기 위해 COTP, TPKT 프로토콜이 필요하다.
- COTP
- TCP와 기능이 거의 유사하지만
- TCP는 스트림 기반의 통신을 제공 / COTP는 패킷 기반의 통신을 제공
- TPKT
- TCP/IP 스택 위에서 COTP를 사용하기 위해 제공
4. ICCP 프로토콜의 특징
4-1. ICCP의 사용모델
- ICCP를 사용시 서로 다른 여러 프로세스간의 통신을 진행
- 각 시스템 통신시 각자의 통신규약 대신 ICCP 하나의 통신을 이용하여 통신 가능
- 시스템 통합시 비교적 적은 비용으로 통합을 이룰 수 있다.
4-1-1. 제어센터 구분
(제어센터)
- 하나 또는 그 이상의 가상제어센터로 모델링
(가상제어센터)
- 제조환경의 실제 디바이스의 기능을 매핑한 것으로 서버기능의 집결체
- 응용프로그램과 실제 디바이스 사이에 위치하여
기계의 실제 기능과 동작을 MMS의 추상적인 객체로 매핑하는 수단
=> ICCP 가상제어센터(VCC)를 MMS 가상제조기기(VMD)로 매핑하여
ICCP VCC는 MMS VMD가 실제 디바이스를 위해 행하는 것처럼 제어센터를 위해 같은 기능을 수행
4-1-2. 클라이언트, 서버 모델
- 가상제어센터의 의미와 관련지어 클라이언트와 서버를 정의
- 클라이언트
- ICCP 서비스 요청을 위해서 가상제어센터를 이용하는 통신 개체
- Method : Operation (클라이언트의 요청에 응답)
- 서버
- 서비스 요청에 대해 가상제어센터로서 행동하는 통신 개체
- Method : Action (서버에서 설정된 매커니즘에 따라 보내는 report)
4-2. Conformance Block
표준에서 서버의 역할에 따라 객체를 그룹핑한 것
- Block 1
: 기본적인 통신에 대한 부분으로써 모든 ICCP서버가 필수적으로 가져야하는 항목 - 나머지 블록
: 서버가 수행하는 역할에 따라 선택 가능
4-3. Biteral Table
- 서버에서 요청유형에 따라 접근제어하기 위한 테이블
- 서버에 존재하는 정보에 대해 4가지 종류의 설정이 가능
("실행", "읽기와 쓰기", "읽기", "접근불가") - VCC에 정의된 command, 가상변수를 table에 지정하여 지정된 정보나 동작만 수행할 수 있게 해준다.
5. ICCP 프로토콜 통신
=> iccp2.pcap에 대한 패킷 흐름 쫒아감
구현 언어 : C
사용한 라이브러리 : libtase2
동작 플랫폼 : Ubuntu
client.c, server.c 코드는 비공개
(1) server.c
(코드)
- VCC구성
- buffer, IndicatePoint(내부 변수 및 state), Command등 등록
- DS Transfer
=> report할 때 어떤 정보를 내보낼 것인가?
- Biteral tables
- 접근하는 ap에 따라서 어떤 IndicatePoint나 command에 접근하게 할껀지 정의
- 일정시간이 지날때마다 정의된 코드 수행
(2) client.c
(코드)
(setting)
- AP Setting
- handler 함수
(initial)
- server ip, apTitle을 통해 연결시도
- 연결된 서버의 내부 정보 인식
- IM TransferSet
=> Report 정보
- 기존에 있던 DataSet삭제 후 재정의
(Read Value)
- domain에서 얻은 DataSet에서 얻은 데이터들을 출력
(3) 동작 패킷 확인
=> client, server의 통신내역 캡쳐(pcap)
1. TCP SYN, ACK
2. COTP SYN,ACK
3. ASCE
4. MMS
- TASE.Version, Support Feature 값에 대한 요청
- identify(MZ automation, TASE.2, 2.3.0) 값 요청
- IM_Transfer_Set설정(report용)
- read동작전 이전 DataSet 및 재정의
- domain요청후 내부 가상변수가 무엇인지 반환
- 각 가상변수에 해당하는 값 반환
5. TCP FIN, ACK
6. ICCP의 보안요소
6-1. 기존의 ICCP
- Biteral Table을 이용한 데이터 접근 제어만을 보안요소로 가지고 있다.
- 그래서 데이터 위/변조, 데이터 유출과 같은 문제에 대한 대응책이 없음
- 보안에 취약하기 때문에 일부 Secure ICCP를 제공(암호화, 인증)
6-2. Secure ICCP
- SSL/TLS가 데이터 위/변조 혹은 데이터 유출과 같은 보안 위협에 대응책으로 사용됨
- 하지만 복호화하는 과정에서 키를 알고 있어야하기 때문에 "키 교환에 대한 문제점"이 존재
- 그래서 "키 교환 과정"에서 공개키-개인키가 쓰인다.
- 정상적인 제어센터인지 파악을 위해서 X.509를 적용한 인증서 기반의 인증을 제공
6-3. 추가 고려해야할 보안요소
- ICCP 통신과정에서 "하위계층" 보안 취약점
- ex) 2006년 퍼징으로 COTP, TPKT의 보안 취약점
- 키관리의 어려움
- 실제 출시되는 ICCP제품의 경우 Secure ICCP가 지원하지 않거나, 일부만 지원하여 다른 보안 요소가 정상적으로 동작하여도 안전성을 보장받을 수 없다.
- 적용되는 보안 기술이 구 버전의 보안기술일 경우 문제점이 있을 수 있다.
6-4. 대응책
- ICCP의 보안에 관련된 표준 IEC 62531이 존재하지만 Secure ICCP 제품마다 조금씩 다른 보안기술이 적용되고 있다.
- (보안기술)
- SSL/TLS, 인증서, 공개키-개인키
- (인증)
- 일부 장치가 ICCP 프로토콜을 지원해도 인프라 부재시 사용할 수 없기 때문에 인프라가 필요하다
- (하위계층 보안고려)
- 2006년 이후 COTP, TPKT에서 새로 발혀진 취약점은 존재하지 않지만
- 하위 게층에서 이용되는 프로토콜의 취약점 여부는 지속적인 확인이 필요하다.