Korean Institute of Information Technology

Home

The Journal of Korean Institute of Information Technology - Vol. 19 , No. 7

[ Article ]
The Journal of Korean Institute of Information Technology - Vol. 19, No. 7, pp. 91-99
Abbreviation: Journal of KIIT
ISSN: 1598-8619 (Print) 2093-7571 (Online)
Print publication date 31 Jul 2021
Received 06 Jul 2021 Revised 22 Jul 2021 Accepted 25 Jul 2021
DOI: https://doi.org/10.14801/jkiit.2021.19.7.91

IoT 헬스케어 기기의 원격 업데이트 보안을 위한 암호화 알고리즘 분석과 구현
전형석* ; 이성기**
*경북대학교 컴퓨터학부 박사과정
**경북대학교 컴퓨터학부 교수(교신저자)

Analysis and Implementation of Encryption Algorithms for Remote Update Security of IoT Healthcare Devices
Hyeongseok Jeon* ; Sungkee Lee**
Correspondence to : Sungkee Lee School of Computer Science and Engineering, Kyungpook National University, 80 Daehakro, Bukgu, Daegu, 41566, Korea Tel.: +82-53-950-6375, Email: sklee@knu,ac,kr


초록

IoT 헬스케어 기기의 원격 업데이트 시 스니핑 공격을 통해 사용자 정보, 기기 인증 정보, 업데이트 소프트웨어 등이 유출될 수 있다. 특히 유출된 업데이트 소프트웨어의 이진코드 분석을 통해 기기 제어 명령어, 데이터 전송 형식, 보안 기능 등이 추가로 유출되어 공격자가 기기를 2차 공격에 활용할 수 있다. 본 논문에서는 제한된 시스템 자원을 가진 IoT 헬스케어 기기를 원격 업데이트할 때의 스니핑 공격을 방어하기 위해 암호화 알고리즘을 분석하고 적용하였다. IoT 헬스케어 기기에 주로 사용되는 MCU 보드들에 구현한 알고리즘들을 테스트한 결과 ChaCha20 암호화 알고리즘이 스니핑 공격을 방어하는데 충분한 보안 성능을 가지고 있으며 속도와 메모리 사용량 측면에서도 우수했다. 또한 실제 구현을 통해 스니핑 공격으로부터 원격 업데이트를 위해 전송되는 소프트웨어의 악용을 막을 수 있음을 보였다.

Abstract

When IoT healthcare devices are updated remotely, information such as user, device authentication, and the source code are vulnerable to leak by sniffing attacks. Through the binary code analysis of the leaked source code, device control commands, data transmission format, and security functions could be leaked, allowing a secondary attack by utilizing the device. In this paper, we analyzed and applied encryption algorithms to defend against sniffing attacks while remote updating IoT healthcare devices having limited system resources. As testing results of algorithms implemented on MCU boards, which are mainly used in IoT healthcare devices, we found that the ChaCha20 encryption algorithm has sufficient security performance to defend against sniffing attacks and is excellent in terms of speed and memory usage. We also showed that, by implementing the ChaCha20 algorithm, the malicious use of the source codes for remote updates is prevented from sniffing attacks.


Keywords: internet of things, IoT, healthcare, network, security, remote update, chacha20, sniffing attack

Ⅰ. 서 론

IoT 기기는 무선 네트워크 통신 기능을 갖추고 다른 기기와 상호작용하며 데이터를 송수신하는 기기를 뜻하며 이미 일상 속에서 흔히 접할 수 있게 되었다. IoT 기기들의 활용 방도는 매우 다양하지만 특히 헬스케어와 접목하려는 시도는 초기부터 현재까지 계속되고 있으며 그중 일부는 상용화되어 일반 사용자의 건강관리 목적이나 환자의 치료 목적으로 폭넓게 이용되고 있다.

기존의 헬스케어 기기와는 달리 IoT 헬스케어 기기는 유선 인터페이스가 제거되거나 최소화되는 대신 무선 네트워크 인터페이스를 활용하여 사용자의 생체 신호를 자동으로 전송하거나 기기의 설정을 변경 또는 OTA(Over-the-air) 프로그래밍 방식으로 원격으로 소프트웨어를 업데이트할 수 있다. 그 결과 기기가 소형화되어 편의성이 증가하면서도 사용자로부터 측정한 생체신호의 활용도를 증대시키고 기기의 유지 관리는 더욱 쉬워졌다. 그러나 무선 네트워크를 통해 기기 간에 자동화된 통신을 하는 것은 필연적으로 보안상의 문제점을 노출하게 된다. 특히 IoT 기기는 비교적 낮은 기기 성능을 가지고 있고 기기 별로 상이한 하드웨어와 소프트웨어가 활용되고 있으며, 사용하는 무선 네트워크 역시 WiFi, Bluetooth, ZigBee 등 다양하기 때문에 TLS/SSL 등 기존의 보안 방법을 일괄적으로 적용하기에 어려움이 따른다[1]. 그럼에도 불구하고 IoT 헬스케어 기기가 송수신하는 데이터는 사용자의 개인 정보를 가지고 있거나, 악용 되었을 때 사용자의 건강에 위해를 가할 수 있기 때문에 반드시 보안이 적용되어야 한다[2].

IoT 헬스케어 기기에서 무선 네트워크로 송수신 되는 데이터는 생체신호 측정 결과 데이터, 기기 제어 명령어, 기기 업데이트 데이터로 구분될 수 있다. 이 데이터들이 유출된다면 환자 정보, 데이터 전송 형식, 기기 제어 방법 등이 유출될 수 있고 이를 변조하여 전송 정보를 조작하거나 인가받지 않은 사용자가 기기를 제어하여 IoT 헬스케어 기기의 오작동을 유발할 수 있다.

IoT 헬스케어 기기의 송수신 데이터 중에서 기기 업데이트 데이터는 전송 빈도는 낮지만 가장 중요한 데이터이다. 기기 업데이트 데이터에는 기기 또는 사용자 인증을 위한 정보뿐만 아니라 업데이트 할 새로운 소프트웨어의 이진코드가 포함되어 있기 때문에 분석을 통해 기기의 동작 방식을 파악하고 기기 제어 정보, 기기의 보안 취약점 등을 획득하여 다른 공격의 통로로 활용할 수 있다. 또한 유출된 소프트웨어를 조작하여 기기에 업로드함으로써 기기의 통제권을 탈취하고 기기의 오작동을 유발하거나 DDoS에 사용되는 좀비 기기로 만드는 등의 목적으로 활용할 수 있으며, 단순히 더미 소프트웨어를 설치하는 것만으로도 기기를 무력화하여 사용자의 건강에 직접적인 위해를 가할 수 있다[3].

본 논문에서는, IoT 헬스케어 기기의 원격 업데이트 과정에서 스니핑 공격(Sniffing attack)으로부터 업데이트를 위해 전송되는 소프트웨어의 유출을 막는 것을 목표로 낮은 시스템 사양에도 적용할 수 있는 암호화 알고리즘을 분석하고 구현한다. 2장에서는 관련 연구로 원격 업데이트 상황의 특징과 취약점에 대해 분석하고, 3장에서 IoT 기기에 주로 사용되는 MCU(Micro Controller Unit) 보드들에 적용 가능한 암호화 알고리즘을 구현하고 효율성을 테스트한다. 4장에서는 3장의 테스트 결과로 선택한 암호화 알고리즘을 IoT 헬스케어 기기의 원격 업데이트 상황에서 적용하여, 실제로 스니핑 공격에서 주요 정보 유출을 방어할 수 있음을 보인다. 5장에서는 결론과 본 연구의 의미와 한계점, 향후 연구과제를 기술한다.


Ⅱ. 관련 연구
2.1 IoT 헬스케어 기기의 원격 업데이트 특징

IoT 헬스케어 기기의 데이터 송수신은 주로 헬스케어 기기가 측정한 사용자의 생체신호를 게이트웨이에 전송하는 데 사용된다. 원격 업데이트 상황은 기기의 소프트웨어에 결함이 발견되어 이를 수정하거나 기존의 기능을 개선 또는 새로운 기능을 추가하기 위해 이루어지며 그 빈도가 비교적 낮다.

생체신호 측정 데이터 전송 상황에서 유출될 수 있는 주요 정보는 생체신호 측정 정보 전송 메시지 형식, 환자 아이디(Patient Identifier, PID) 및 측정 정보 등이 있다. 원격 업데이트 상황에서 유출될 수 있는 정보는 IoT 헬스케어 기기와 업데이트 서버의 기기 인증 정보, 사용자 인증을 위한 아이디 및 패스워드, 업데이트할 새 소프트웨어 등이다. 또한 유출된 새 소프트웨어의 이진코드 분석을 통해 기기 제어를 위한 메시지 형식을 포함해 IoT 헬스케어 기기가 사용하는 송수신 메시지 형식 전체와 사용하는 보안 방법 등 기기의 동작과 제어에 필요한 대부분의 정보가 추가로 유출될 수 있다. 이 정보들은 IoT 헬스케어 기기의 오작동을 유발하거나 DDoS 공격 등 다른 기기들을 공격하는데 활용될 수 있다. 따라서 원격 업데이트 상황에서 교환되는 데이터의 중요성이 가장 높다.

원격 업데이트 상황에서 교환되는 데이터는 IoT 헬스케어 기기가 송수신하는 데이터 중 가장 크기가 크다. IoT 헬스케어 기기의 생체신호 측정 데이터 전송이 표준적인 방법으로 이루어지는 경우, 혈압 측정 결과는 환자 정보 등록을 포함한 HL7 FHIR 표준 메시지 형식으로 약 3537 Bytes, 환자 측정 정보를 포함하지 않은 ISO/IEEE 11073 표준 메시지 형식으로 약 202 Bytes 정도의 크기를 가진다. 또한 체온 측정 결과는 HL7 FHIR 표준 메시지 형식으로 약 2233 Bytes, ISO/IEEE 11073 표준 메시지 형식으로 약 182 Bytes의 크기를 가진다[4]. 이에 반해 원격 업데이트 상황에서 교환되는 새 소프트웨어의 크기는 아두이노 스케치 통합 개발 환경(Arduino sketch IDE)에서 AVR 계열의 Arduino Mega 2560 기반 IoT 헬스케어 기기는 256KB, Tensilica 계열의 Node MCU ESP8266 기반의 기기는 1MB의 크기를 가질 수 있다.

따라서 데이터의 중요성과 전송 빈도를 고려하여 원격 업데이트 시 전송되는 데이터 보안에는 생체 신호 측정 메시지 전송에 사용되는 보안보다 보안에 필요한 시간적 비용을 덜 고려하더라도 더 높은 강도의 보안을 적용할 필요가 있다. 또한 비교적 큰 크기의 데이터에 효율적인 보안을 적용해야 한다.

2.2 IoT 헬스케어 기기의 원격 업데이트 취약점

IoT 헬스케어 기기의 원격 업데이트는 WiFi, Bluetooth, ZigBee 등을 통해 이루어진다. 원격 업데이트 시 송수신 되는 네트워크 패킷에는 IoT 헬스케어 기기를 인증하거나 기기를 사용하고 있는 사용자를 인증하기 위한 아이디 및 패스워드 정보, 기기에 설치할 소프트웨어가 포함된다. 원격 업데이트 과정에서 예상되는 해킹 시도는 스니핑 공격, 중간자 공격 등이 있으며, 본 논문은 스니핑 공격으로부터 데이터 유출을 막는 것을 목표로 한다.

스니핑 공격은 네트워크를 통해 전송되는 패킷을 공격자가 훔쳐보는 공격 방식이다. 공격자가 주변 네트워크의 패킷을 무차별적으로 수집하거나, APR Redirect, MAC Spoofing, ICMP Redirect 등의 방법으로 패킷의 목적지를 변조하여 수집하는 등 다양한 방법이 존재한다[5]. 스니핑 공격은 일반적으로 공격 대상이 연결된 네트워크를 구성하고 있는 라우터, 스위치 등의 보안 허점을 이용해 패킷의 일부 또는 전체를 수집한다. 따라서 사용자의 홈 네트워크 또는 사용자와 함께 이동하며 주변 무선 네트워크에 연결하는 IoT 헬스케어 기기의 특성상 사용할 네트워크의 보안 정도를 일정 수준 이상 보장하기 어렵기 때문에 인트라넷 또는 병원 내 보안 무선 네트워크를 사용하는 병원용 헬스케어 기기에 비해 스니핑 공격에 노출될 가능성이 높다. 따라서 IoT 헬스케어 기기의 원격 업데이트 시 네트워크 보안에 의존하지 않고 스니핑 공격을 막아야 하며, 이를 위해서는 기기 간에 송수신 할 데이터를 암호화하는 것이 필요하다.


Ⅲ. 암호화 알고리즘

암호화 알고리즘은 수학적 과정으로 평문을 무의미한 이진코드로 암호화하고 복호화를 통해 평문으로 다시 환원하기 위한 알고리즘이다. 현대 암호화 알고리즘은 그 원리가 알려지더라도 데이터 암호화 및 복호화에 사용된 키를 알지 못하는 한, 공격자는 무차별 공격 등 비효율적인 방법을 통해서만 키 또는 평문을 복원할 수 있다.

대칭 키(Symmetric key) 암호화 알고리즘은 암호화 및 복호화에 동일한 키가 사용되며 대칭 키는 암호화와 복호화를 수행하는 주체 외에 외부에 알려져서는 안 된다. 대칭 키의 길이가 길수록 암호화 알고리즘의 안전성이 증가하지만, 암호화에 필요한 시간적 공간적 비용도 증가한다. 또한 대칭 키 암호화 알고리즘은 비교적 속도가 빠르다는 장점이 있지만, 사용자는 통신에 참여하는 다른 사용자 별로 키를 생성하고 관리해야 한다는 단점이 있다.

비대칭 키(Asymmetric key) 암호화 알고리즘은 암호화와 복호화를 공개 키(Public key)와 개인 키(Private key)로 나누어 수행한다. 공개 키는 외부에 알려져도 무방하지만 개인 키는 대칭 키와 동일하게 사용자만 알고 있어야 한다. 일반적으로 공개 키는 공개 키 저장소에 보관하고 다른 사용자가 자유롭게 열람할 수 있다. 따라서 사용자는 자신의 개인 키만 관리하면 된다는 장점이 있으나, 비대칭 키 암호화 알고리즘은 일반적으로 공개 키 암호화 알고리즘에 비해 연산에 많은 자원을 사용하기 때문에 제한적인 용도로 사용된다.

IoT 헬스케어 기기는 PC나 스마트폰 등에 비해 제한적인 자원을 가지고 있기 때문에 본 논문에서는 원격 업데이트 보안에 대칭 키 암호화 알고리즘을 적용한다. 본 장에서는 대칭 키를 이용한 스트림 암호인 RC4, ChaCha20과 블록 암호인 AES-256을 구현하고 복호화 성능을 측정하였다. 모든 암호화 알고리즘에서 키의 길이는 256 bits를 사용하였다.

구현 환경은 Arduino Sketch IDE이며 테스트 환경은 IoT 기기에서 자주 사용되는 Arduino Mega 2560 Rev3 보드와 Node MCU ESP8266 1.0, Arduino MKR 1010 보드를 사용했다.

표 1은 해당 보드들의 사양을 비교한 것으로, 각각 AVR, Tensilica, ARM 계열의 마이크로컨트롤러를 사용하고 있다. 해당 보드들은 각 마이크로컨트롤러 계열 중 성능이 낮은 편에 속하기 때문에 시스템 자원이 부족한 IoT 헬스케어 기기에도 구현할 수 있음을 보이기 위해 선택하였다. 각 암호화 알고리즘은 전용 하드웨어의 도움 없이 소프트웨어를 통해서만 연산하여 성능을 측정하였다. 각 테스트는 1000회씩 수행하여 평균값을 결과로 사용하였다.

Table 1. 
Specification comparison of MCU boards [6]-[8]
Board Arduino
mega 2560 Rev3
Node MCU ESP8266 1.0 Arduino
MKR 1010
Specification
Microcontroller AVR ATmega2560 Tensilica 32-bit RISC CPU Xtensa LX106 SAMD21 Cortex®-M0+ 32bit low power ARM MCU
Clock speed 16 MHz 80 MHz 48 MHz
Flash memory 256 KB 4 MB* 256 KB
SRAM 8 KB 64 KB 32 KB
*In Arduino Sketch IDE, up to 1MB of program upload is allowed

3.1 RC4

RC4 암호화 알고리즘은 대칭 키를 사용하는 스트림 암호의 일종이다. 40~2048 bits 크기의 대칭 키로 부터 연산을 통해 유사난수로 이루어진 256 Bytes의 키스트림(Keystream)을 생성하고, 평문 또는 암호문을 256 Bytes 단위로 나누어 키스트림과 순차적으로 XOR 연산을 하여 암호화하거나 복호화 한다. RC4 암호화 알고리즘은 구조가 간단하여 하드웨어 지원 없이 소프트웨어만으로 구현하여도 속도가 빠르다는 장점으로 널리 사용되어 왔다. 그러나 키스트림을 생성하는 과정에서 난수에 편차가 발생하며, 이를 통해 같은 평문이 여러 번 암호화될수록 통계적 접근으로 암호문으로부터 평문의 일부를 복원할 가능성이 있음이 밝혀지는 등 보안상 결함이 존재한다[9]. 그 결과, 주요 보안 솔루션에서 RC4는 더 이상 사용되고 있지 않지만 본 논문에서는 다른 암호화 알고리즘과 속도 비교를 위해 RC4를 구현하여 속도를 측정하였다. RC4 알고리즘의 구현 정확성은 rfc 6229의 테스트 벡터로 검증하였다[10]. 그 결과는 표 2와 같다.

Table 2. 
Comparison of RC4 decryption speed by each board
Board Arduino
mega 2560 Rev3
Node MCU
ESP8266 1.0
Arduino
MKR 1010
Test
4KB
DECR
Total(ms) 13.44 1.64 3.39
per bytes(μs) 3.29 0.40 0.83
40KB
DECR
Total(ms) 127.03 14.08 28.96
per bytes(μs) 3.10 0.34 0.71
256KB
DECR
Total(ms) 808.59 88.76 182.41
per bytes(μs) 3.09 0.34 0.7

테스트 수행 결과 가장 성능이 부족한 AVR 계열의 Arduino Mega 2560의 경우에도, 해당 보드가 탑재할 수 있는 가장 큰 프로그램의 크기인 256KB의 이진코드 전체가 암호화되어도 이를 복호화 하는데 0.8초가량만 소모되었다. 이보다 성능이 좋은 Tensilica, ARM 계열의 보드에서는 256KB 암호문 복호화에 각각 0.09초, 0.18초가량의 시간이 소모되었다.

3.2 ChaCha20

ChaCha20은 Salsa20 스트림 암호의 파생 버전 중 하나로, RC4의 보안 결함 발견 이후 RC4의 스트림 암호화 영역을 빠르게 대체하고 있다. 소프트웨어로 구현하여도 비교적 빠른 속도의 암호화 방식이며 현재까지 알려진 보안상 결함이 존재하지 않는다. ChaCha20은 256 bits의 키에 상수(Constant) 128 bits와 블록 카운터(Block counter) 및 넌스(Nonce) 128 bits를 추가하여 512 bits의 ChaCha 블록을 구성한다. 이 블록은 20라운드의 연산을 거쳐 512 bits의 키스트림을 생성하고 XOR 연산을 통해 평문/암호문을 순차적으로 암호화/복호화 한다.

상수는 고정된 bits들로 256 bits의 키를 연장시키기 위해 사용되며, 넌스는 동일 키 사용 시 매 암호화/복호화마다 다르게 설정함으로써 안전성을 보장한다. 블록 카운터는 ChaCha 블록에서 키스트림을 생성 할때마다 1씩 증가시킨다. ChaCha20의 블록 카운터와 넌스의 길이의 합은 128 bits로 고정되어 있지만 구현에 따라 블록 카운터와 넌스의 bits 비를 32:96 또는 64:64으로 설정할 수 있다.

본 논문에서는 rfc 8439의 구현을 따라 블록 카운터 32 bits, 넌스 92 bits로 구현하였으며 블록 카운터의 시작 값은 1이다[11]. 구현 정확성은 rfc 8439의 테스트 벡터로 점검하였다.

표 3에서 보이듯이, 테스트 결과 모든 보드에서 복호화에 걸리는 시간이 RC4에 비해 증가했다. 256KB 복호화 기준 Arduino Mega 2560은 약 14.38초, Node MCU는 약 0.18초, Arduino MKR 1010은 약 0.54초가 소요되었다.

Table 3. 
Comparison of ChaCha20 decryption speed by each board
Board Arduino
Mega 2560 Rev3
Node MCU
ESP8266 1.0
Arduino
MKR 1010
Test
4KB
DECR
Total(ms) 224.74 2.84 8.47
per bytes(μs) 54.88 0.7 2.07
40KB
DECR
Total(ms) 2246.41 28.42 84.25
per bytes(μs) 54.86 0.69 2.06
256KB
DECR
Total(ms) 14376.37 181.86 538.85
per bytes(μs) 54.84 0.69 2.06

따라서 AVR 계열의 Arduino Mega 2560은 암호화 알고리즘으로 ChaCha20을 사용 시 유의미한 통신 지연이 발생할 수 있다.

3.3 AES-256

AES(Advanced Encryption Standard)는 DES(Data Encryption Standard)를 대체하기 위해 2001년 미국 NIST에 의해 제정되었다. AES는 블록 암호의 일종으로 128, 192 또는 256 bits 길이의 키를 사용해 평문을 128 bits의 블록 단위로 암호화하거나 암호문을 복호화 할 수 있다. 방식에 따라 ECB(Electronic Codebook), CBC(Cipher-block Chaining), CTR(Counter), GCM(Galois/Counter Mode) 등의 모드로 운용할 수 있으며, 본 논문에서는 가장 간단한 구조를 가지는 ECB 방식을 사용하였다. ECB 방식은 평문/암호문을 128 bits로 나누어 병렬로 암호화/복호화를 수행하는 방식으로 다른 운용 방식에 비해 보안이 취약하지만 가장 속도가 빠르다. AES의 특징 중 하나는 암호화와 복호화의 과정에 차이가 있다는 것이며, 복호화 과정에 더 많은 연산이 사용되기 때문에 소요 시간도 더 길다. 본 논문에서는 256 bits의 키 길이를 사용하는 AES-256을 구현하여 복호화 테스트를 수행하였다. AES-256 구현은 NIST의 AES 구현 문서를 참고 하였고, 구현 정확성은 NIST의 테스트 벡터를 사용하였다[12][13]. 그 결과는 표 4와 같다.

Table 4. 
Comparison of AES-256 ECB decryption speed by each board
Board Arduino
mega 2560 Rev3
Node MCU
ESP8266 1.0
Arduino
MKR 1010
Test
4KB
DECR
Total(ms) 391.69 38.70 109.86
per bytes(μs) 95.65 9.46 26.83
40KB
DECR
Total(ms) 3915.24 386.79 1097.66
per bytes(μs) 95.61 9.45 26.80
256KB
DECR
Total(ms) 25056.51 2475.29 7024.47
per bytes(μs) 95.59 9.44 26.80

테스트 결과 테스트를 진행한 암호화 알고리즘 중 가장 많은 시간이 소요되었다.

256KB의 암호문을 복호화 하는데 Arduino Mega 2560은 약 25초, Node MCU는 약 2.5초, Arduino MKR 1010은 약 7초의 시간이 걸렸다. 따라서 원격 업데이트 상황에 AES-256을 적용 시 전용 하드웨어의 지원이 없다면 모든 MCU 보드에서 초 단위의 지연 시간이 발생함을 알 수 있었다.

3.4 암호화 알고리즘 효율 비교

테스트 결과를 토대로 각 알고리즘의 보드 별 시간 효율을 정리하면 그림 1과 같다.


Fig. 1. 
Average elapsed time per bytes for 256KB decryption

암호화 알고리즘은 RC4가 가장 빨랐으며, Node MCU와 AES-256 순으로 복호화 시 시간 효율이 우수했다. MCU 보드의 복호화 연산 성능은 Tensilica 계열의 Node MCU ESP8266이 가장 좋았으며 ARM 계열의 Arduino MKR 1010, AVR 계열의 Arduino Mega 2560 순으로 성능이 좋았다.

Node MCU ESP8266는 256KB의 암호문을 복호화 할 때 가장 속도가 느린 AES-256에서도 2.5초가량의 시간이 소요되었기 때문에, 전송 빈도 수가 낮은 IoT 헬스케어 기기의 원격 업데이트 상황에서 어떠한 암호화 알고리즘을 적용하여도 무리가 없을 것으로 판단된다. Arduino MKR 1010은 AES-256 복호화에서 최대 7초가량의 연산 시간이 발생하므로 다소 느리지만, 기기의 중요성과 기기 제조사의 정책에 따라 감수할 수 있는 지연 시간으로 보인다. 그러나 IoT 헬스케어 기기가 AVR 계열의 Arduino Mega 2560을 기반으로 개발된 경우 AES-256 사용 시 256KB의 암호문을 복호화 하는데 최대 25초 가량의 시간이 소모되며, 이는 일반적인 네트워크 환경에서 연결 실패로 간주할 수 있는 긴 지연 시간이다. 그러나 이보다 더 빠른 ChaCha20을 암호화 알고리즘으로 사용한 경우 복호화 연산 시간을 약 14.38초 가량으로 AES-256 복호화 연산 시간 대비 약 43%의 시간을 단축할 수 있다.

표 1의 MCU 보드 별 SRAM 크기에서 볼 수 있듯이 IoT 헬스케어 기기의 가용 주기억장치의 크기는 매우 제한적이다. 특히 표준화된 IoT 헬스케어 기기는 생체신호 측정 자료 전송에 수 KB의 메시지들을 사용할 수 있으므로 복호화에 필요한 메모리 사용량을 고려할 필요가 있다.

RC4의 경우 키스트림 생성 및 유지를 위해 256 Bytes의 추가 메모리 공간을 사용한다. ChaCha20는 ChaCha 초기 블록 구성에 64 Bytes, 키스트림 생성 및 유지에 64 Bytes를 사용하여 총 128 Bytes의 추가 메모리 공간을 사용한다. AES-256은 복호화만 구현하였을 경우, 키를 확장하여 4*4 Bytes의 라운드 키 15개를 생성하기 위해 240 Bytes, Inverse S-box에 256 Bytes를 사용하여 총 496 Byte의 추가 메모리 공간을 사용한다. Inverse S-box는 상수로 구성된 16*16의 Byte 행렬이므로 IoT 기기들이 외부 저장소로 자주 사용하는 EEPROM(Electrically Erasable Programmable Read-Only Memory), SD card 등에 저장하여 메모리 사용량을 줄일 수 있으나, 이 경우에는 외부 저장소 접근에 따른 지연 시간이 추가로 발생하여 암호화 및 복호화 속도가 느려진다. 따라서 일반적인 암호화 알고리즘 구현에서, 메모리 공간 효율은 RC4, ChaCha20, AES-256 순서로 우수하다.

표 5는 소프트웨어로 구현하였을 때 각 알고리즘들의 성능을 보인다. 원격 업데이트 시 전송되는 데이터의 중요성과 암호화 알고리즘의 보안성, 속도, 메모리 사용량을 고려해 보았을 때, IoT 헬스케어 기기의 원격 업데이트 상황에서 가장 적합한 암호화 알고리즘은 ChaCha20이다. ChaCha20은 AES-256과 마찬가지로 현재 알려진 보안 결함이 존재하지 않고, 소프트웨어로 구현 시 메모리 사용량과 시간 효율성 측면에서 AES-256보다 우수하기 때문에 AES-256보다 많은 IoT 헬스케어 기기에 적용할 수 있다. RC4는 속도 측면에서 가장 우수하고 메모리 사용량 측면에서 평균적이지만 보안성이 약하다. 따라서 보안성이 중요한 원격 업데이트에는 적합하지 않으며 중요도가 낮은 데이터를 빠르게 전송할 때 사용하는 것이 권장된다.

Table 5. 
Comparison of encryption algorithms in software implementation
Encryption
Algorithm
Security Speed Memory Usage
RC4 Weak Very Fast Moderate
ChaCha20 Strong Moderate Small
AES-256 Strong Slow Large


Ⅳ. 구 현

본 장에서는 ChaCha20을 IoT 헬스케어 기기 원격 업데이트 상황에서 실제로 구현하고, 스니핑 공격을 통해 전송되는 패킷을 탈취하여 분석을 수행하였다. Tensilica 계열의 ESP32 보드에 심박 센서를 결합하여 모의 IoT 헬스케어 기기를 구성하고 BLE를 통한 원격 업데이트를 구현하였다. 암호화된 원격 업데이트가 스니핑 공격으로부터 안전함을 보이기 위해 PC에서 Bluefruit LE Friend BLE nRF51822 모듈과 Wireshark 소프트웨어를 이용해 BLE 패킷을 수집하여 모의 스니핑 공격을 수행하였다.

우선 ChaCha20 암호화를 적용하기 전 IoT 헬스케어 기기 원격 업데이트 상황에서 스니핑 공격을 통해 수집한 패킷에서 업데이트를 위해 전송 중이던 소프트웨어의 이진코드를 추출하여 분석하였다. 표 6은 추출한 이진코드 중 일부를 보이고, 표 7은 분석을 통해 획득한 주요 문자열을 보인다.

Table 6. 
Result of packet sniffing before encryption
...
05 20 20 20 01 32 2E 30 41 31 2E 32 2E 34 31 30
2E 31 39 33 37 36 2E 33 2E 35 30 34 2E 38 33 2E
30 30 35 35 38 2E 38 38 37 35 2E 32 4F 54 41 50
57 44 5F 33 34 31 36 32 34 41 4F 54 41 49 44 5F
31 38 35 34 20 09 07 A1 32 44 F7 FF 12 DF 32 FE
...

Table 7. 
Results of binary code analysis
Info Format Value
OTA ID HEX 4f 54 41 49 44 5f 31 38 35 34
ASCII OTAID_1854
OTA PWD HEX 4f 54 41 50 57 44 5f 33 34 31 36 32 34 41
ASCII OTAPWD_341624A
DEV OID HEX 31 2e 32 2e 34 31 30 2e 31 39 33 37 36 2e 33 2e 35 30 34 2e 38 33 2e 30 30 35 35 38 2e 38 38 37 35 2e 32
ASCII 1.2.410.19376.3.504.83.00558.8875.2
SW Ver HEX 32 2e 30 41
ASCII 2.0A

이진코드에서 연속된 상용 문자 ASCII 코드를 찾는 방식으로 프로그램에서 사용된 문자열을 획득할 수 있었고, 프로그램 소스코드 대조를 통해 획득한 문자열의 용도를 확인하였다. 그 결과, 획득한 문자열은 원격 업데이트 권한 인증에 사용되는 OTA_ID와 OTA_PWD, 기기 모델 고유 번호인 DEV_OID, 업데이트될 소프트웨어의 버전 정보인 SW_Ver 임을 알 수 있었다.

표 8은 IoT 헬스케어 기기 원격 업데이트에 ChaCha20 암호화 알고리즘을 적용한 후 스니핑 공격을 통해 표 6과 동일한 패킷을 추출한 결과이다. 프로그램 구동에 사용되는 문자열, 기계어 등이 암호화되어 유의미한 정보를 추출할 수 없음을 확인하였다.

Table 8. 
Result of packet sniffing after encryption
...
12 55 6F C5 72 78 47 AB 3A 10 FB D4 AB C7 CF 37
DE 7A 5A F4 36 3F 39 A6 84 4F 46 F9 AC 2B A2 1A
4B 62 8E 71 F6 10 05 F4 D9 16 1A 62 C3 53 74 87
5D 88 4C AC 11 53 3F 74 17 F2 D0 10 D4 7A F1 50
14 D4 06 43 40 F8 8C 3A A3 C9 84 5E A0 7E 3C 36
...


Ⅴ. 결론 및 향후 과제

본 논문에서는 IoT 헬스케어 기기에 원격 업데이트를 적용하기 위해 적합한 암호화 알고리즘을 테스트하고 직접 구현하였다. IoT 기기에 주로 사용되는 AVR, Tensilica, ARM 계열의 MCU 보드들에 RC4, ChaCha20, AES-256 암호화 알고리즘을 구현하여 시간적 성능을 테스트하고 보안 성능과 메모리 사용 효율을 분석한 결과 ChaCha20이 IoT 헬스케어 기기에 적용하기에 가장 적합했다. ChaCha20 암호화 알고리즘을 실제 원격 업데이트 상황에 적용한 결과 스니핑 공격을 통해 업데이트를 위해 전송되는 소프트웨어의 이진코드를 탈취하여도 유의미한 정보를 추출할 수 없었다.

본 논문은 기기의 성능 부족 또는 네트워크 환경의 차이 때문에 TLS/SSL 등 기존의 보안 방법을 적용할 수 없는 IoT 헬스케어 기기에 원격 업데이트 시 스니핑 공격을 방어할 수 있는 암호화 알고리즘을 선별하고 제안하였다는 점에 의의가 있다.

향후 연구 과제에서는 IoT 헬스케어 기기와 원격 업데이트 서버 간 인증을 통해 중간자 공격을 방어하고 Hash 알고리즘을 적용하여 전송 데이터 변조를 감지할 수 있는 추가 보안 방법을 제시하도록 한다.


References
1. Dae-Sik Ko, "Comparative Analysis of IoT Network Implementing Method for Information and Communication Service in Forest Area",  The Journal of Korean Institute of Information Technology, Vol. 17, No. 9,  pp. 57-64, Sep. 2019.
2. Goo Yeon Lee, Junil Bang, Kyung Jin Cha, and Hwa Jong Kim,  "GDPR Compliant Consent Procedure for Personal Information Collection in the IoT Environment", The Journal of Korean Institute of Information Technology,  Vol. 17, No. 5,  pp. 129-136, May 2019.
3. Hyeongseok Jeon and Sungkee Lee,  "Analysis of Remote Update Vulnerabilities of IoT Healthcare Devices", The Journal of Korean Institute of Information Technology,  Vol. 19, No. 1, pp.  87-97, Jan. 2021.
4. SungKee Lee and Hyoungho Do, "Comparison and Analysis of ISO/IEEE 11073, IHE PCD-01, and HL7 FHIR Messages for Personal Health Devices", Healthcare Informatics Research, Vol. 24, No. 1, pp. 46-52, Jan. 2018.
5. Hyo Sung Kang, Saeed Ullah Choong, and Choong Seon Hong,  "Defense Technique against Spoofing Attacks using Automated Management of ARP Table for Virtual Machine in Cloud Computing Environment", The Korean Institute of Information Scientists and Engineers, pp. 857-859, Dec. 2015.
6. ARDUINO MEGA 2560 REV3 TECH SPECS, https://store.arduino.cc/usa/mega-2560-r3. [accessed: Jul. 1, 2021]
7. ARDUINO MKR WIFI 1010 TECH SPECS, https://store.arduino.cc/usa/mkr-wifi-1010. [accessed: Jul. 1, 2021]
8. Nodemcu ESP8266 Pinout, Features, and specifications, https://www.electroniclinic.com/nodemcu-esp8266-pinout-features-and-specifications. [accessed: Jul. 1, 2021]
9. Prohibiting RC4 Cipher Suites, https://datatracker.ietf.org/doc/html/rfc7465. [accessed: Jul. 1, 2021]
10. Test Vectors for the Stream Cipher RC4, https://datatracker.ietf.org/doc/html/rfc6229. [accessed: Jul. 1, 2021]
11. ChaCha20 and Poly1305 for IETF Protocols, https://datatracker.ietf.org/doc/html/rfc8439. [accessed: Jul. 1, 2021]
12. Morris J. Dworkin, Elaine B. Barker, James R. Nechvatal, James Foti, Lawrence E. Bassham, E. Roback, and James F. Dray Jr, "Advanced Encryption Standard (AES)", Federal Information Processing Standards Publication 197, Nov. 2001.
13. The AES Known Answer Test (KAT) Vectors, https://web.archive.org/web/20091023001419/http://csrc.nist.gov/groups/STM/cavp/documents/aes/KAT_AES.zip. [accessed: Jul. 1, 2021]

저자소개
전 형 석 (Hyeongseok Jeon)

2014년 2월 : 경북대학교 심화컴퓨터공학(공학사)

2016년 3월 : 경북대학교 대학원 컴퓨터학부(공학석사)

2016년 3월 ~ 현재 : 경북대학교 대학원 컴퓨터학부 박사과정

이 성 기 (Sungkee Lee)

1979년 2월 : 서울대학교 전기공학(공학사)

1981년 2월 : 서울대학교 전기공학(공학석사)

1990년 8월 : University of Utah 컴퓨터과학(공학박사)

1990년 ~ 현재 : 경북대학교 컴퓨터학부 교수