1. 서론
산업제어시스템(ICS: Industrial Control System)은 원자력발전소, 정유시설, 상하수시스템, 스마트그리드 등의 다양한 제조산업 및 국가중요시설의 자동화 시스템에 대한 감시와 제어를 위한 필수 시스템이다. ICS는 최근 정보기술과 운영기술 융합에 따른 지속적 진화를 계속하고 있지만 사이버 위협 역시 계속 증가하고 있다 [1]. ICS에 대한 사이버 공격은 ICS의 정상적인 운영을 제약할 뿐만 아니라 인간에 대한 위해요소가 될 수도 있다. 따라서, 제어센터(control center)로부터 ICS를 구성하는 필드 디바이스(field device)들에 유니캐스트 또는 멀티캐스트 방식으로 전송되는 제어 명령어(control command)에는 무결성 및 인증(source authentication) 기능의 내재화가 요구된다.
기존의 명령어 인증방식은 제어센터가 명령어에 전자서명 또는 MIC(message integrity code)을 첨부하여 전송하고 각각의 디바이스는 이를 검증하게 된다. 따라서, 디바이스들에는 제어센터의 (서명 검증용) ‘공개키’ 또는 (MIC 검증용) ‘대칭키’가 사전 설치되어 있어야 한다. 특히, 전자서명 방식의 경우 암호해시함수(cryptographic hash function) 및 다양한 전자서명 알고리즘들이 적용되며 MIC 방식의 경우는 AES-CBC-MAC 또는 HMAC 알고리즘 등이 적용된다. 전자서명에 사용되는 서명 알고리즘은 계산 복잡도가 매우 높으며, 반면에 MIC 방식의 경우 디바이스에 대칭키의 안전한 설치가 요구된다. 특히, 후자의 경우 디바이스에 탑재된 대칭키가 노출되면 (i.e. compromised device attack) 안전한 명령어 실행은 실패하게 된다.
본 논문에서는 전자서명의 단점인 “높은 계산 복잡도” 및 MIC 방식의 단점인 “대칭키 노출 가능성”을 회피하기 위해 디바이스에는 기밀성이 요구되지 않는 검증용 공개 정보만이 설치되며 암호 해시함수만으로 동작하는 명령어 인증 메커니즘을 제안한다. 본 논문의 구성은 다음과 같다. 먼저 2장에서는 ICS 환경에서의 기존 명령어 인증기법들을 소개하고, 3장에서는 제안 메커니즘에 관해 설명한다. 4장에서는 본 제안 메커니즘에 대해 실시한 성능평가를 통해 실현이 가능한 인증 메커니즘임을 입증한다.
2. 관련 연구
산업제어시스템에 적용이 가능한 다양한 제어 명령어 메시지 인증기법들이 제안되었다.
첫째, ICS Modbus 환경에서 Modbus master와 Modbus slaves 사이에 교환되는 명령어 유형의 개수가 n이고 그리고 명령어 전송회수가 최대 m번인 경우, 길이가 n인 m개의 해시체인 사용을 제안하였다 [2]. 하지만, 설계상의 결함으로 보안상의 문제점[3]을 내포하고 있다. 또한, chameleon 해시함수[4]를 이용한 경량 서명 기법[5]의 경우 이산대수 문제에 기반을 두고 있고 ICS 필드 디바이스 측에 과도한 계산 부담이 전가되는 명령어 인증 방식이다.
둘째, TESLA[6] 기반의 명령어 인증기법 [6, 7]들도 제안되었다. [7]의 경우 TESLA의 기본적인 체계가 지연인증(delayed authentication)의 특성을 가지기에 즉각적인 인증(instant verification)은 불가능하며, [8]에서는 즉각적인 인증을 위한 방안을 제시했으나 키 관리상의 문제점을 내포하고 있다.
셋째, TESLA 지연인증의 문제점을 극복하기 위한 condensed RSA[9] 기반의 online/offline 신속 인증(rapid authentication) 기법[10]의 경우 RSA 연산에 따른 과도한 부담이 ICS 필드 디바이스 측에 가해진다.
마지막으로 Lamport-Diffie[11], Winternitz[12], HORS[13] 등의 일회용 서명(OTS: one time signature)을 활용한 명령어 인증기법들[14, 15] 역시 제안되었다. 하지만 이들 방식의 공통된 제약조건은 일회성이라는 제약사항을 극복하기 위해 제어센터와 디바이스 간에 별도의 대칭키 사전 공유가 요구되며 서명 및 공개키의 크기가 매우 크다는 단점을 가지고 있다.
3. 제안 메커니즘
3.1 시스템 모델 및 보안요구사항
(그림 1)에서처럼 제어센터는 사전에 지정된 다수의 ICS 필드 디바이스들에 제어 명령어 메시지를 전송한다. ICS 디바이스는 자원 제약적 디바이스로 가정하고 IEEE 802.15.4와 같은 LoWPAN (Low-power Wireless Personal Area Network) 네트워크 환경에서 동작한다. LoWPAN과 Internet 사이의 인터페이스 역할을 하는 Gateway는 명령어 메시지를 탑재한 패킷의 크기가 너무 크면 압축(compression) 및 단편화(fragmentation) 작업을 수행한다.
(그림 1) 시스템 모델
공격자는 제어센터를 가장해서 위조된 명령어 메시지를 보낼 수도 있고, 제어센터가 전송한 메시지를 변조 및 재생할 수 있다. 또한, 필드 디바이스에 저장된 비밀정보는 공격자에 의해 노출될 수도 있다. 따라서 언급된 공격모델에 대응하기 위해서는 무결성을 포함한 메시지 인증기능이 요구되며 개별 디바이스에는 공개가 가능한 검증용 키 정보만이 설치되어야 한다.
3.2 제어 명령어 인코딩
ICS 디바이스에 적용되는 제어 명령어 메시지는 address, command, data 필드로 구성된다. 특히, 메시지의 개별 필드들은 사전에 정의된 작은 데이터 세트에 속하는 값으로 채워진다. 예를 들면 특정 디바이스 가동 시작/중지, 전원차단기 작동, 또는 모터 속도 10% 가속/감속과 같이 command 및 연계된 data 값 유형은 제한적이다.
cmd = {cmdi | i∊[1, S]}를 command 집합, di = {dij | j∊[1, qi]} for i∈[1, S]는 각각의 command에 적용되는 data 값들의 집합으로 정의되며 적어도 1개 이상의 data 값들이 command와 함께 사용된다. (즉, 1 ≤ |di| = qi). 이때 각각의 command와 data 값 쌍은 다음과 같이 인코딩된다.
m = 1 for (cmd1, d11),
m = 2 for (cmd1, d12),
⋯
m = q for (cmdS, dSqS),
where q = q1 + q2 + ... + qS (1)
명령어 메시지 {header, payload}는 사전에 지정된 디바이스들에 전달되기에 header 필드는 고정된 값으로 가정하고, 앞으로 명령어 메시지는 {header, m}로 표현한다.
3.3 이중 해시체인 생성
제어센터는 초기화 과정에서 무작위로 생성한 a0, b0∈{0, 1}n를 기반으로 a0 = (a0⊕header) 및 b0 = (b0⊕header)를 구성하여 (그림 2)에서와 같이 이중 해시체인 HCfirst와 HCsecond을 생성한다. 여기서 H(.)는 암호해시함수, Hc(.)는 암호해시함수를 c번 연속해서 적용하는 것을 의미한다.
HCfirst = {aj | aj+1=H(aj) for j∈[0, q]},
HCsecond = {bj | bj+1=H(bj) for j∈[0, q]}. (2)
(그림 2) 이중 해시체인
Hq+1(a0) = aq+1 = aroot와 Hq+1(b0) = bq+1 = broot는 각각 HCfirst와 HCsecond의 루트 값이며 (aroot, broot)는 시스템 부트스래핑 과정에서 ICS 필드 디바이스에 설치된다.
3.4 명령어 메시지 전송 및 검증
생성된 이중 해시체인 HCfirst = {a0, a1, ⋯, aq, aq+1}의 각각의 aj for j∈[1, q]에 인코딩된 command {m=1, m=2, ⋯, m=q}을 매핑시킨다. (즉, m=j가 aj에 매핑된다)
예를 들어 제어센터가 명령어 메시지 {header, m = 2}를 필드 디바이스에 전송하는 경우, (그림 2)-①에서처럼 메시지 인증을 위해 σm을 다음과 같이 생성하여 함께 전송한다.
{header, m=2, σm}, where
σm = (am = Hm(a0), b(q+1)–m = H(q+1)–m(b0)) (3)
해당 명령어 메시지를 수신한 디바이스는 (그림 2)-②에서처럼 am과 b(q+1)–m으로부터 다음을 도출하여 설치된 (aroot, broot)과 일치하는지를 확인하여 명령어 메시지의 무결성(메시지 인증)을 검증하게 된다.
check if ( H(q+1)–m(am) = aroot and
Hm(b(q+1)–m) = broot ) (4)
3.5 다중 사용을 위한 확장 기법
3.4절에서 제안된 인증기법은 생성된 이중 해시체인의 루트 값 (aroot, broot)에 대해 오직 한 번 사용이 가능하다. 따라서 다중 사용을 위해서는 높이가 h인 Merkle 트리를 구성하고 2h개의 리프노드에 [Algorithm 1]을 통해 도출한 2h개의 이중 해시체인 루트 값들을 대응시켜 2h개의 명령어 메시지에 대한 무결성 보장을 위해 사용할 수 있다.
[Algorithm 1: 이중 해시체인 루트 값 도출]
for k = 1 to 2h {
generate a(k)0, b(k)0∈{0, 1}n;
a(k)0 ← (a(k)0⊕header); b(k)0 ← (b(k)0⊕header);
generate HC(k)first and HC(k)second;
derive (a(k)root, b(k)root);
}
(그림 3)은 h=2인 경우의 Merkle 트리 구성을 보여주고 있다. 4개의 이중 해시체인을 통해 4개의 해시체인 루트 값들을 생성하여 리프노드 h1, h2, h3, h4에 대응시키고 내부 노드들은 자식 노드들의 해시값으로 구성된다. 최종적으로 Merkle 트리의 루트 값 (h14) 그리고 (stored_k=0)가 시스템 부트 스래핑 과정에서 디바이스에 설치된다. 첫 번째 command m1을 포함하는 명령어 메시지는, (식 5)와 같이 구성되어 디바이스에 전송된다.
{header, m1, k=1, (σm1, h2, h34)}, where
σm1 = (am1, b(q+1)–m1) (5)
(그림 3) 다중 사용 Merkle 트리 구성
해당 명령어 메시지를 수신한 디바이스는 (식 6)과 같이 첫째 순번(sequence number) 역할을 하는 k=1이 저장된 stored_k=0보다 큰지를 확인, 둘째 σm1을 검증하고, 셋째 (σm1, h2, h34)로부터 설치된 Merkle 트리의 루트 값 h14와 일치하는지를 확인하여 명령어 메시지의 무결성을 검증하게 된다. 검증이 성공적으로 종료되면 저장된 k는 갱신된다.
check if (k=1) > (stored_k=0);
check if ( H(q+1)–m1(am1) = a(1)root and
Hm1(b(q+1)–m1) = b(1)root );
derive h1 ← H(am1||b(q+1)–m1);
check if H(H(h1||h2)||h34) = h14: (6)
command m2, m3, m4에 대해서도 같은 방식으로 명령어 메시지를 구성하고 검증할 수 있다.
4. 분석 및 평가
4.1 제안 메커니즘 안전성
3.3절에서 소개된 이중 해시체인에 기반을 둔 인증기법의 안전성은 암호해시함수의 역상 저항성(pre-image resistance)에 의해 보장된다. (그림 2)의 예에서 (m=2)를 (m=1) 또는 (m=4)로 변조시키기 위해서는 공격자는 (a1, b(q+1)–1) 또는 (a4, b(q+1)–4)를 도출할 수 있어야 가능하지만, 이는 암호해시함수의 역상 저항성에 의해 불가능하게 된다.
다중 사용을 위한 확장 기법에서는 Merkle 트리의 리프노드에 할당된 command m1, m2, m3, m4가 순차적으로 사용되며 명령어 메시지에는 순번 k가 포함되기에 공격자에 의한 재생 공격(replay attack) 역시 불가능하다.
4.2 성능분석
(식 5)를 일반화시키면 즉, Merkle 트리의 높이가 h인 경우에는 (식 7)과 같다.
{header, mk, k, (σmk, auth_path)}, (7)
where auth_path is a set of sibling nodes of the nodes on the way from the leaf node to the Merkle root.
SHA-256의 경우, |σmk| = 64 bytes, |auth_path| = h*32 bytes이다. (그림 4)는 Merkle 트리의 높이 변화에 따라 (σmk, auth_path)이 차지하는 바이트 길이를 보여주고 있다.
(그림 4) Merkle 트리 height에 따른 바이트 길이
결국 다중 사용 횟수를 증가시키기 위해서는 명령어 메시지의 길이는 늘어날 수밖에 없다.
제안 메커니즘에서는 암호해시함수만이 사용된다. 각각의 command의 경우 |m| =⎡log2q⎤이기에 σmk 생성과 검증에는 q번의 암호해시함수가 반복적으로 적용되어야 한다. (그림 5)는 q의 변화에 따른 암호해시함수 회수를 Ubuntu PC 및 mote(TI CC2538)에서의 실행시간(micro-second)을 보여주고 있다.
(그림 5) 암호해시함수(SHA-256) 처리시간
3.1절에서의 보안요구사항 중의 하나는 “개별 디바이스에는 공개가 가능한 검증용 키 정보만이 설치”이다. 물론 공개키 서명이 사용되면 (서명 확인용) 공개키가 설치되기에 보안요구사항을 충족시키지만 (그림 6)에 나타나 있는 것처럼, ECDSA는 서명 생성 및 검증에 암호해시함수보다 매우 높은 계산량(milli-second)을 요구하고 있다.
(그림 6) ECDSA 및 SHA-256 처리시간 비교
5. 결론
정보기술 및 운영기술 융합에 따른 산업제어시스템의 진화가 계속됨에 따라서 사이버 공격의 가능성 역시 증대되고 있다. 본 논문에서는 제어센터로부터 ICS 필드 디바이스들에 전송되는 명령어 메시지의 무결성을 보장하는 인증 메커니즘을 제안하였다.
제안의 핵심은 무결성 보장을 위해 오직 암호해시함수만이 사용되기에 자원 제약적인 필드 디바이스들에도 적용할 수 있다. 특히, 필드 디바이스에 설치되는 초기 정보는 무결성 검증을 위한 공개된 정보이기에 공격자의 디바이스 탈취에 따른 비밀정보 획득은 무의미하게 된다. 제안 방식은 ICS 환경에서뿐만 아니라 전송 메시지를 구성하는 개별 필드들의 엔트로피가 낮게 유지되는 모든 응용환경에 적용할 수 있다.
본 논문과 연계된 후속 연구에서는 다중 사용을 위한 확장 기법이 가지는 단점인 사용횟수 증가에 따른 메시지 길이 증대를 완화하는 방안을 마련하고자 한다.
References
- G. M. Makrakis, C. Kolias, G. Kambourakis, C, Rieger, and J. Benjamin, "Industrial and Critical Infrastructure Security: Technical Analysis of Real-Life Security Incidents," IEEE Access Vol. 9, pp. 165295-165325, Dec. 2021. https://doi.org/10.1109/ACCESS.2021.3133348
- G. Y. Liao, Y. J. Chen, W. C. Lu, and T. C. Cheng, "Toward Authenticating the Master in the Modbus Protocol," IEEE Trans. Power Delivery, Vol. 23, No. 4, pp. 2628-2629, Oct. 2008.
- R. Phan, "Authenticated Modbus Protocol for Critical Infrastructure Protection," IEEE Trans. Power Delivery, Vol. 27, No. 3, pp. 1687-1689, Jul. 2012. https://doi.org/10.1109/TPWRD.2012.2187122
- H. Krawczyk and T. Rabin, "Chameleon Hashing and Signatures," in Proc. Network and Distributed System Security 2000, pp: 143-154, San Diego, Feb. 3-4, 2000.
- Z. Yang, C. Jin, Y. Tian, J. Lai, and J. Zhou, "LIS: Lightweight Signature Schemes for Continuous Message Authentication in CyberPhysical Systems", in Proc. ACM ASIA Conf. Computer Communication Security, pp. 719-731, Taipei, Taiwan, Oct. 5-9, 2020.
- A. Perrig, D. Song, R. Canetti, J. D. Tygar, and B. Briscoe, "Timed Efficient Stream LossTolerant Authentication (TESLA): Multicast Source Authentication Transform Introduction", IETF RFC 4082, Jun 2005.
- S. Aghapour, M. Kaveh, D. Martin, and M. R. Mosavi, "An Ultra-Lightweight and Provably Secure Broadcast Authentication Protocol for Smart Grid Communications," IEEE Access, Vol. 8, pp. 125477-125487, Jul. 2020. https://doi.org/10.1109/ACCESS.2020.3007623
- U. Tefek, E. Esiner, D. Mashima, B. Chen, and Y. C. Hu, "Caching-based Multicast Message Authentication in Time-critical Industrial Control Systems," in Proc. IEEE conf. Computer Comm., pp. 1039-1048, London, May 2-5, 2022.
- E. Mykletun, M. Narasimha, and G. Tsudik, "Authentication and Integrity in Outsourced Databases," ACM Trans. Storage, Vol. 2, No. 2, pp. 107-138, 2006. https://doi.org/10.1145/1149976.1149977
- A. A. Yavuz, "An Efficient Real-Time Broadcast Authentication Scheme for Command and Control Messages," IEEE Trans. Info. Forensics and Security, Vol. 9, No. 10, pp. 1733-1742, Oct. 2014. https://doi.org/10.1109/TIFS.2014.2351255
- L. Lamport, "Constructing Digital Signatures from a One-way Function, Technical Report CSL 98, SRI International, 1979.
- R.C. Merkle, A certified digital signature based on a conventional function," Advances in Cryptology-Crypto 87, LNCS, Vol. 293, pp. 369-378, Springer, 1987.
- L. Reyzin and N. Reyzin, "Better than BiBa: Short One-Time Signatures with Fast Signing and Verifying," Information Security and Privacy, LNCS, Vol. 2384. pp. 144-153, Springer, 2002.
- Q. Li and G. Cao, "Multicast Authentication in the Smart Grid with One-Time Signature," IEEE Trans. Smart Grid, Vol. 2, No. 4, pp. 686-696, Dec. 2011. https://doi.org/10.1109/TSG.2011.2138172
- N. Saxena and S. Grijalva, "Efficient Signature Scheme for Delivering Authentic Control Commands in the Smart Grid," IEEE Trans. Smart Grid, Vol. 9, No. 5, pp. 4323-4334, Sep. 2018. https://doi.org/10.1109/TSG.2017.2655014