IoT 헬스케어 기기에서의 중간자 공격 방어를 위한 디지털 서명 알고리즘 분석과 구현
초록
중간자 공격은 IoT 헬스케어 기기에서 전송되는 사용자 정보, 생체 신호 측정 자료의 유출 및 변조, IoT 헬스케어 기기가 오작동을 유발하여 사용자의 건강에 직간접적인 위해를 입힐 수 있다. 본 논문에서는 시스템 자원이 부족한 IoT 헬스케어 기기에서 중간자 공격을 방어할 수 있는 디지털 서명 알고리즘을 분석하고 적용하였으며, 경량 디지털 인증서를 정의하였다. IoT 헬스케어 기기에 사용되는 4종의 MCU 보드들에 128-bit 보안 수준의 디지털 서명 알고리즘 3종을 평가시험한 결과 secp256k1 타원곡선을 사용한 ECDSA가 실행 가능성과 실행 속도 측면에서 우수했다. 또한 ECDSA와 경량 인증서가 IoT 헬스케어 기기에서 중간자 공격을 방어할 수 있음을 검증하기 위해 원격 업데이트 상황의 IoT 헬스케어 기기와 중간자 공격을 모의하였다. 그 결과 중간자 공격자는 ECDSA와 경량 인증서가 적용된 모의 IoT 헬스케어 기기와 업데이트 서버 간 네트워크 연결에 개입할 수 없음을 입증하였다.
Abstract
MITM(Man-In-The-Middle) attacks can directly or indirectly harm users' health by leaking and modulating user information, vital sign data from IoT healthcare devices, and causing them to malfunction. In this paper, we analyzed and applied digital signature algorithms to defend against MIMT attacks on IoT healthcare devices having low system resources, and we also defined the light-weight digital certificate. After implementing and testing three digital signature algorithms that offer a 128-bit of security level on four MCU boards which are used in IoT healthcare devices, we found that the ECDSA using secp256k1 elliptic curve was excellent in terms of execution and speed. To verify that ECDSA and the light-weight certificate can defend against MITM attacks on IoT healthcare devices, we simulated a IoT Healthcare device in a remote update situation and a MITM attack. As a result, we prove that the MITM attacker was unable to intervene in the network connection between the simulated IoT Healthcare device and the update server which are ECDSA and the light-weight certificate applied.
Keywords:
internet of things, IoT, healthcare, network, security, remote update, ECDSA, EdDSA, Man-In-The-Middle attack, MITMⅠ. 서 론
IoT(Internet of Things) 기기에 사용되는 MCU(Microcontroller Unit)의 시장 점유율은 2017년 기준으로 8-bit와 16-bit MCU가 40%를 넘고 2026년에도 여전히 30%에 이를 것으로 예상되는 만큼 IoT 기기는 성능과 가용 자원이 낮다[1]. 따라서 PC나 스마트폰 등 비교적 높은 성능의 시스템에서 동작하는 기존의 보안 방법들 중 일부는 IoT 기기에 따라 적용할 수 없거나 응답 속도 저하, 배터리 효율성 하락 등 부작용으로 인해 적용하는 것이 비효율적이다.
이러한 이유로 많은 IoT 기기들이 적합한 보안 방법 선택과 적용에 어려움을 겪고 있다. IoT 기기들의 보안 취약성은 특히 IoT 헬스케어 기기에서 그 문제점이 두드러진다. IoT 헬스케어 기기는 측정 또는 관리하고 있는 사용자의 건강상태를 스마트폰과 같은 게이트웨이를 통해 병원, 구급 및 소방서 등 의료 서비스 제공자에게 전달하여 측정 정보의 효율성을 증대시키고 능동적인 건강관리를 가능하게 하는 것을 목표로 한다. 그 결과 IoT 기기의 보안 취약성이 사용자의 건강 상태에 직접적인 위해를 가하거나 상위 의료 서비스의 신뢰성 손상, 업무 마비 등을 야기하여 피해가 확산 될 수 있다. 따라서 IoT 헬스케어 기기에는 보안 적용과 그에 따른 부작용 간 적합한 지점을 찾아 네트워크 공격으로부터 보호하는 것이 반드시 필요하다[2].
IoT 헬스케어 기기에 대한 주요 네트워크 공격 방법으로는 기기 간 네트워크 통신에 공격자가 개입하여 패킷을 탈취하거나 변조할 수 있는 중간자 공격이 있다. 중간자 공격을 통해 IoT 헬스케어 기기가 송수신하는 생체신호 측정 결과 메시지나 원격 업데이트를 위해 전송되는 소프트웨어를 변조함으로써 기기의 오작동을 유발하거나 병원 등 상위 시스템을 간접적으로 공격할 수 있다[3]. 따라서 IoT 헬스케어 기기의 목적과 특성을 고려하였을 때 중간자 공격을 방어하는 것이 가장 주요한 선결 과제이다.
본 논문에서는 다음과 같은 방법으로 자원이 부족한 IoT 헬스케어 기기에서 동작할 수 있으면서 중간자 공격에 대한 충분한 보안 수준(Security level)을 제공할 수 있는 방안을 제안하고 검증한다. 첫째, 2030년 이후에도 사용할 수 있을 것으로 알려져 있는 128-bits 보안 수준에 부합하는 3종의 디지털 서명 알고리즘을 선별하였다. 둘째, 선별한 3종의 알고리즘을 IoT 기기에 사용되는 저성능의 MCU 4종에 구현 및 적용하여 디지털 서명 생성 및 검증, 키쌍 생성을 각 1000회씩 수행하는 평가시험을 통해 실행 가능성과 속도 측면에서 가장 우수한 디지털 서명 알고리즘을 선택하였다. 셋째, 네트워크 패킷량 감소를 위해 경량 인증서를 새로 정의하였다. 마지막으로, IoT 헬스케어 기기의 원격 업데이트 상황을 모의하고 디지털 서명 알고리즘과 경량 인증서를 적용하여 중간자 공격을 방어할 수 있음을 보였다.
본 논문의 구성은 다음과 같다. 2장에서는 관련 연구로 중간자 공격과 중간자 공격 방어에 사용되는 디지털 서명 알고리즘을 분석하고, 3장에서는 디지털 서명 알고리즘 3종을 IoT 기기에 주로 사용되는 저성능의 MCU 4종에 적용 및 평가시험을 수행한다. 4장에서는 경량의 디지털 인증서를 정의한다. 5장에서는 IoT 헬스케어 기기 업데이트 상황을 모의하여 디지털 서명 알고리즘 및 경량 인증서로 중간자 공격을 방어할 수 있음을 입증한다. 6장에서는 결론과 본 연구의 의미와 향후 연구과제를 기술한다.
Ⅱ. 관련 연구
2.1 중간자 공격
중간자 공격은 시스템 간의 통신에 공격자가 개입하여 전송되는 데이터를 중계하거나 위조 및 변조하는 것을 말한다.
그림 1에서 보이듯, 중간자 공격의 가장 주요한 위험은 키 교환 알고리즘을 무력화 시키고 그 결과 암호화된 통신도 무력화 시킬 수 있다는 점이다. 스니핑 공격 하에서는 각 시스템의 공개키(Public key)만 도청 당하고 개인키(Private key)는 유출되지 않는다. 따라서 공개키와 개인키를 모두 알고 있어야 생성할 수 있는 공통키(Shared key)는 안전하기 때문에 공격자는 키 교환 후 암호화된 통신은 복호화 할 수 없다.
그러나 중간자 공격은 각 시스템과 새로운 네트워크 통신을 연결하여 자신의 공개키를 전송하고 정상 시스템들로부터 수신한 공개키와 자신의 개인키로 공통키들을 생성한다. 그 결과 공격자는 각 시스템 별로 암호화된 통신을 복호화 하여 탈취하거나 조작한 후 다시 암호화하여 상대 시스템에 전송할 수 있다. 따라서 네트워크 보안에 키 교환을 통한 암호화 알고리즘을 적용하기 위해서는 중간자 공격을 방어하는 것이 반드시 필요하다.
2.2 디지털 서명
디지털 서명은 네트워크로 전송된 데이터의 송신자의 신원을 확인하기 위한 방법이다. 디지털 서명을 사용하면 각 시스템이 네트워크로 데이터를 전송하기 전 상대 시스템의 신원을 확인하여 인가되지 않은 중간자가 통신에 개입하는 것을 막을 수 있다.
디지털 서명에는 개인키와 공개키로 구성된 키 쌍들을 생성하고 개인키를 사용한 디지털 서명 생성과 공개키를 사용한 디지털 서명 유효성 검사를 수행할 수 있는 알고리즘이 포함된다. 개인키와 공개키를 생성하는 발급자는 각 키 쌍의 유일성을 보장해야 하며, 키 쌍을 발급받은 서명자는 공개키는 다른 사용자와 공유하되 개인키는 외부에 유출되지 않도록 한다. 서명자가 개인키로 메시지에서 디지털 서명을 생성하여 전송하면 디지털 서명을 수신한 시스템은 공개키로 해당 디지털 서명이 유효한지 검사한다. 검증에 사용한 공개키와 쌍을 이루는 개인키를 소유한 서명자는 유일하기 때문에 해당 디지털 서명이 유효하다면 이를 생성한 서명자의 신원을 신뢰할 수 있다.
보편적으로 사용되는 디지털 서명 알고리즘 중 하나는 RSA 암호화 알고리즘이다. RSA는 두 개의 큰 소수의 곱으로 이루어진 합성수는 소인수분해하기 어렵다는 것을 기반으로 하는 비대칭키 암호화 알고리즘 중 하나로 공개키 또는 개인키로 암호화하면 각각 개인키, 공개키로만 복호화 할 수 있다는 특징이 있다. 공개키로 암호화하는 경우 개인키를 가진 유일한 시스템 외에는 복호화 할 수 없으므로 데이터 전송 보안에 사용된다. 반면에 개인키로 암호화하는 경우 모든 시스템에서 복호화를 할 수 있으므로 전송 데이터 보안에는 사용할 수 없으나 개인키를 가진 유일한 시스템이 암호문을 생성했음을 명확히 할 수 있으므로 시스템의 신원 확인에 사용할 수 있다.
일반적으로 비대칭키 암호화 알고리즘은 대칭키 암호화 알고리즘에 비해 암호화 및 복호화에 많은 시스템 자원을 소모하기 때문에 스마트폰이나 PC 등 비교적 컴퓨팅 성능이 뛰어난 기기에서도 신원 인증을 위한 제한적인 용도로만 사용된다. 본 논문에서는 IoT 헬스케어 기기가 중간자 공격을 방어할 수 있도록 적은 시스템 자원으로도 실행할 수 있는 디지털 서명 알고리즘을 분석 및 구현하고 평가시험한다.
Ⅲ. 디지털 서명 알고리즘 평가시험
현대 암호학에서는 2030년 이후에도 용인할 수 있는 보안성을 확보하기 위해 128-bit 보안 수준 이상을 요구하고 있다[4]. 일반적으로 암호화 알고리즘의 보안 수준은 키의 길이에 비례하는데, RSA의 경우 128-bit 보안 수준을 확보하기 위해서는 개인키와 공개키의 길이를 3072bits 이상으로 설정해야 하며, 생성되는 디지털 서명도 키와 동일한 길이를 가진다[5]. 그러나 많은 IoT 기기는 여전히 수 KB ~ 수십 KB의 SRAM을 가지고 있기 때문에 RSA 구현 및 적용이 불가능하거나 비효율적이다. 또한 키의 길이가 길수록 연산에 많은 시간이 필요하며 무선 네트워크 환경에서의 데이터 전송에 따른 비용을 고려하여 키의 길이를 줄일 필요가 있다. 따라서 본 논문에서는 시스템 자원이 부족한 IoT 헬스케어 기기에도 적용할 수 있는 128-bit 보안 수준을 만족하는 디지털 서명 알고리즘들을 구현하고 평가시험한다.
3.1 ECDSA
ECDSA(Elliptic Curve Digital Signature Algorithm)는 이산 로그 문제의 난해함과 타원곡선의 특성을 기반으로 하는 디지털 서명 알고리즘이다[6]. ECDSA의 장점은 키의 길이가 매우 짧다는 것으로 128-bit 보안 수준을 갖추기 위해 필요한 키의 길이는 약 256bits다. 암호화 및 복호화가 가능한 비대칭키 암호화 알고리즘인 RSA는 디지털 서명으로부터 서명 생성에 사용한 메시지를 복원할 수 있으나 ECDSA는 개인키를 이용한 디지털 서명 생성과 공개키를 이용한 검증만 가능하다. 디지털 서명 생성에 사용하는 메시지 전체가 서명 생성 과정에 참여하는 것을 보장하기 위해 일반적으로 원본 메시지 대신 메시지를 해시(Hash)한 값을 디지털 서명 생성에 사용한다.
ECDSA의 보안 수준과 신뢰성은 사용하는 타원곡선에 따라 결정된다. 본 논문에서는 128-bit 보안 수준을 달성하기 위한 타원곡선을 선택하고 구현 및 평가시험을 수행한다. 128-bit 보안 수준에 부합하는 타원곡선은 secp256r1, secp256k1가 있으며, 본 논문에서도 두 타원곡선에 대한 평가시험을 수행한다.
secp256r1 타원곡선은 NIST에서 권장하는 타원곡선으로 P-256 또는 prime256v1이라고도 한다[7]. secp256r1 타원곡선 사용 시 ECDSA의 개인키 길이는 256bits, 디지털 서명의 길이는 512bits이다. 공개키는 원본 형태와 압축된 형태로 표현할 수 있는데, 압축 여부를 표현하기 위해 8bits의 추가 정보가 포함되어 원본 공개키는 520bits, 압축된 공개키는 264bits가 된다. 공개키를 압축하는 경우 키의 보관 및 네트워크를 통한 전송에는 유리하지만 원본 키 복원을 위해 추가 연산이 필요하다. 평가시험에는 IoT 헬스케어 기기의 공개키 송수신이 무선 네트워크 환경에서 이루어지는 것을 고려하여 공개키를 압축하여 사용하였다. 디지털 서명 생성에 필요한 메시지 해시 알고리즘은 IETF(Internet Engineering Task Force) 구현에 따라 SHA-256을 사용하였다[8].
secp256k1 타원곡선은 secp256r1 타원곡선에 비해 기대 보안 수준이 수 bits 정도 낮을 수 있지만 128-bit 보안 수준을 크게 벗어나지는 않는 것으로 알려져 있으며, 일부 시스템에서는 secp256r1 타원곡선에 비해 연산 수행 속도가 빠르다는 장점이 있다. 최근 비트코인에 사용되면서 사용례가 증가하고 있으며 개인키, 공개키, 디지털 서명의 길이는 secp256r1 타원곡선을 사용할 때와 동일하다. 평가시험에는 공개키를 압축하여 사용하였고, 비트코인의 구현을 따라 메시지 해시 알고리즘에 SHA-256을 사용했다.
3.2 EdDSA
EdDSA(Edwards-curve Digital Signature Algorithm)는 꼬인 에드워즈 곡선(TEdC, Twisted Edwards Curve)을 기반으로 하는 슈노르 서명 알고리즘(Schnorr signature algorithm)의 변형이다[9]. 꼬인 에드워즈 곡선은 타원곡선의 일부 계열인 에드워즈 곡선(EdC, Edwards Curve)을 일반화한 형태이다. EdDSA는 보안 수준을 희생하지 않으면서도 일부 시스템에서 ECDSA에 비해 빠른 것으로 알려져 있다. 본 논문에서는 EdDSA에 사용할 수 있는 에드워즈 곡선 중 128-bit 보안 수준에 부합하는 Curve25519를 적용하여 평가시험한다. Curve25519를 적용한 EdDSA는 Ed25519라고도 하며, 메시지 해시 등에 자체적으로 SHA-512를 사용하도록 정의되어 있다. Ed25519의 개인키와 공개키의 길이는 모두 256bits이며, 공개키는 항상 압축되어 있다. 서명의 길이는 512bits이다.
3.3 디지털 서명 알고리즘 평가시험 결과 및 효율 비교
표 1은 디지털 서명 알고리즘들을 구현하고 평가시험한 보드의 주요 시스템 자원을 정리한 표이다. 해당 보드들은 IoT 기기에 자주 사용되는 AVR, ARM, Tensilica 계열의 저성능 MCU를 탑재한 보드들이다. 전반적으로 성능이 높은 순서대로 보드들을 나열하면 Node MCU ESP8266 1.0, Arduino MKR 1010, Arduino Mega 2560 Rev3, Arduino UNO Rev3 순서이며 Mega 2560과 UNO는 8-bit MCU를 사용하고 있고 나머지 보드들은 32-bit MCU를 사용한다. 프로그래밍 및 컴파일, 프로그램 업로드는 Arduino IDE 1.8.15를 사용하였다.
평가시험 항목은 각 보드에서 디지털 서명 알고리즘별 공개키와 개인키 생성, 디지털 서명 생성, 디지털 서명 검증의 실행 가능 여부와 수행 속도이다. 디지털 서명 생성에 사용하는 메시지의 길이는 128bytes로 한다.
각 알고리즘의 평가시험은 보드 별로 1000회씩 수행하여 항목별 경과 시간을 측정하여 평균값을 취하였다
표 2는 본 논문에서 평가시험한 디지털 서명 알고리즘의 주요 특성들을 보인다. 각 알고리즘은 동일한 128-bit 보안 수준에 부합하기 때문에 대부분의 특성이 유사하지만 공개키의 길이와 사용하는 해시 알고리즘에서 차이를 보인다.
표 3은 평가시험 결과를 정리한 표이다. Ed25519는 8-bit MCU인 ATmega328P와 2KB SRAM을 탑재한 Arduino UNO Rev3 보드에서 SRAM 부족으로 실행에 실패하였다. 그 외의 경우에는 알고리즘과 보드에 관계없이 개인키와 공개키 생성, 디지털 서명 생성과 검증에 성공하였으나, 수행 속도에는 차이를 보였다.
그림 2는 각 디지털 서명 알고리즘이 디지털 서명을 생성하는데 걸린 시간(Elapsed time)을 MCU 보드 별로 평가시험한 결과를 보인다. MCU에 따라 지원하는 명령어 세트와 명령어 처리 시간이 다르기 때문에 MCU 보드 별로 효율적인 알고리즘이 존재했다. 전체적인 성능이 낮은 8-bit MCU 보드인 Arduino UNO Rev3, Arduino Mega 2560 Rev3에서는 ECDSA 계열이 우수한 성능을 보였으며, 비교적 성능이 높은 32 bit MCU 보드인 Arduino MKR 1010, Node MCU ESP8266 1.0에서는 Curve25519를 사용한 EdDSA가 우수한 성능을 보였다. ECDSA 계열 중에서는 secp256k1을 사용하는 것이 secp256r1을 사용하는 것보다 낮은 성능의 MCU 보드에서 디지털 서명 생성에 걸린 시간이 짧았다.
그림 3은 각 디지털 서명 알고리즘의 디지털 서명을 검증하는데 걸린 시간(Elapsed time)을 측정한 결과를 보인다. ECDSA 계열의 경우 디지털 서명 검증에 걸린 시간이 생성에 걸린 시간에 비해 큰 차이가 없거나 더 짧았다. 그러나 EdDSA는 디지털 서명 검증에 걸린 시간이 생성에 걸린 시간보다 약 60% 정도 더 길었다. 그 결과 디지털 서명 생성 시 속도 효율은 MKR 1010 보드와 ESP8266 보드에서 EdDSA가 우수한 것에 비해 디지털 서명 검증 시 속도 효율은 ESP8266 보드에서만 EdDSA가 우수했다.
그림 4는 각 디지털 서명 알고리즘이 공개키와 개인키를 생성하는데 걸린 시간(Elapsed time)을 측정한 결과를 보인다. 전반적으로 디지털 서명 생성 시간과 유사한 경향을 보이지만 모든 경우에서 키쌍 생성 시간이 디지털 서명 생성 시간보다 짧았다.
평가시험 결과 IoT 헬스케어 기기에 가장 적합한 디지털 서명 알고리즘은 secp256k1 타원곡선을 사용한 ECDSA였다. secp256r1도 secp256k1과 유사한 특성을 보였으나 secp256k1이 저성능 MCU에서 실행 속도가 더 빨랐다. MCU의 성능이 높을수록 EdDSA Curve25519가 실행 속도에서 장점을 보였으나 기기의 SRAM이 작은 경우 실행에 어려움이 있었으며 MCU의 성능이 높다면 ECDSA 실행에 걸리는 시간도 충분히 짧았다. 따라서 IoT 헬스케어 기기에서는 디지털 서명 알고리즘으로 ECDSA secp256k1을 선택하는 것이 실행 가능성과 실행 효율성 측면에서 유리하다.
Ⅳ. 경량 디지털 인증서
본 장에서는 3장에서 선택한 ECDSA-secp256k1 디지털 서명 알고리즘과 함께 사용할 경량의 디지털 인증서의 구조와 발급 방법, 유효성 검증 절차를 정의한다.
디지털 인증서는 공개키의 소유권을 증명하기 위한 전자 문서로 디지털 서명 알고리즘과 함께 신원 인증에 사용된다. 디지털 인증서는 일반적으로 인증서 소유자 정보, 소유자의 공개키, 디지털 서명 등이 포함된다. 인증서의 신뢰성을 확보하기 위해 서버, 기업, 정부 등 다양한 단체들 별로 인정한 기관들에서 발급한 디지털 인증서만 유효한 인증서로 취급하고 있으며, 이러한 디지털 인증서 발급 기관을 인증기관(CA, Certificate Authority)라고 한다.
기존의 디지털 인증서 표준으로는 국내 공인인증서나 HTTPS 등 TLS/SSL 프로토콜에 사용되는 X.509가 있다[10]. X.509는 다양한 디지털 서명 알고리즘에 대응할 수 있는 유연성과 기존에 사용 중인 표준이라는 보편성을 갖추고 있다. 그러나 인증서의 크기가 일정하지 않고 수 KB 이상의 크기를 가질 수 있기 때문에 자원이 부족한 IoT 헬스케어 기기에 적합하지 않다[11]. 따라서 본 논문에서는 IoT 헬스케어 기기에 적합하도록 ECDSA-secp256k1 디지털 서명 알고리즘을 위한 경량의 인증서 형식을 구성하고 간략한 인증서 유효성 검사 절차를 정의한다.
표 4는 본 논문에서 정의한 경량 디지털 인증서의 구조를 보인다. 경량 디지털 인증서는 인증서 발급자의 식별자(Issuer ID), 인증서 소유자의 식별자(Owner ID), 인증서 소유자의 공개키(Owner public key), 인증서 발급자가 발급자의 개인키로 인증서의 나머지 부분을 서명한 디지털 서명(Digital signature)으로 구성한다. 인증서의 각 요소들은 순서대로 위치하며 인증서의 크기는 항상 904bits, 113bytes이다.
본 논문에서 정의한 인증서 발급 및 분배 방식은 다음과 같다. 첫째, CA는 자신이 사용할 공개키와 개인키를 생성하고 자신에게 인증서를 발급한다. 이를 CA 인증서라고 하며 발급자 ID와 소유자 ID가 동일하다. CA 인증서에는 CA의 공개키와 CA의 개인키로 서명한 전자서명이 포함된다. 따라서 CA 인증서는 자체적으로 디지털 서명을 검증할 수 있다. 둘째, CA는 각 시스템들의 공개키, 개인키, 인증서를 생성한다. 이 인증서는 시스템 인증서라고 하며, 발급자 ID와 소유자 ID가 다르다. 시스템 인증서에는 각 시스템의 공개키와 CA의 개인키로 서명된 전자서명이 포함된다. 마지막으로 CA는 각 시스템들에 CA 인증서의 복사본, 시스템 인증서, 시스템의 개인키를 배포한다.
그림 5는 경량 인증서의 유효성 검증 과정을 보인다. 인증 과정은 다음과 같은 절차를 거친다.
첫째, 소유하고 있는 CA 인증서 중 인증하고자 하는 시스템 인증서를 발급한 CA의 인증서를 찾는다. 이는 시스템 인증서의 Issuer ID와 동일한 Owner ID를 가지는 CA 인증서를 찾는 것과 같다.
둘째, CA 인증서에 포함된 CA의 공개키(PubKCA)로 CA 인증서의 디지털 서명(SignCA)을 검증한다. 유효한 디지털 서명이라면 해당 CA 인증서를 신뢰할 수 있다.
셋째, CA 인증서의 공개키(PubKSys)로 시스템 인증서의 디지털 서명(SignSys)을 검증한다. 검증 결과가 유효하다면 해당 시스템 인증서는 신뢰할 수 있는 CA가 발급한 인증서임을 의미한다. 따라서 해당 시스템 인증서에 포함된 정보를 신뢰할 수 있다.
Ⅴ. 구 현
본 장에서는 3장의 평가시험 결과 실행성과 속도 효율성이 가장 우수했던 ECDSA-secp256k1 디지털 서명 알고리즘, 4장에서 정의한 경량 인증서를 적용하여 IoT 헬스케어 기기 원격 업데이트 상황에 보안을 적용하는 절차를 제안하고 구현한다.
그림 6은 ECDSA-secp256k1 디지털 서명 알고리즘과 ECDH(Elliptic-curve Diffie-Hellman) 키 교환 알고리즘을 적용하여 업데이트 서버가 IoT 헬스케어 기기에 새로운 소프트웨어를 설치하는 상황을 보인다.
디피-헬만(Diffie-Hellman) 키 교환 알고리즘은 이산 로그의 난해함을 기반으로 안정성을 확보하고 있다. 두 시스템에서 공개키와 개인키 쌍을 각자 생성한 후 서로의 공개키를 교환하고, 자신의 개인키와 상대방으로부터 전달받은 공개키를 통해 공통키(Shared Key)를 생성하는 방식이다. ECDH는 디피-헬만 키 교환 알고리즘에 타원곡선을 적용하여 동일한 보안 수준을 달성하는데 필요한 키의 길이를 줄인 것으로 ECDSA와 유사한 방식으로 작동한다. 본 논문에서는 ECDH에 ECDSA-secp256k1와 동일한 타원곡선인 secp256k1를 적용하였다.
ECDSA-secp256k1와 ECDH-secp256k1를 적용한 안전한 원격 업데이트를 위한 절차는 다음과 같다.
첫째, 선행 조건 단계이다. 신뢰할 수 있는 CA는 PrvKCA(CA의 개인키), CertCA(CA 인증서), PrvKIoT(IoT 헬스케어 기기의 개인키), CertIoT(IoT 헬스케어 기기의 시스템 인증서), PrvKSrv(업데이트 서버의 개인키), CertSrv(업데이트 서버의 시스템 인증서)를 생성한다. CA는 인가된 IoT 헬스케어 기기에 CertCA, PrvKIoT, PrvKIoT를 전달하고 업데이트 서버에 CertCA, PrvKSrv, CertSrv를 전달한다. PrvKCA는 외부에 전달하지 않고 CA만 소유한다.
둘째, 인증서 교환 단계이다. IoT 헬스케어 기기는 업데이트 서버에 CertCA를 전달하고, 업데이트 서버는 IoT 헬스케어 기기에 CertSrv를 전달한다.
셋째, 인증서 검증 단계이다. IoT 헬스케어 기기와 업데이트 서버는 각자 전달받은 CertSrv와 CertCA를 미리 가지고 있던 CertCA로 검증한다. 검증 결과 유효한 인증서라면 CertCA와 CertSrv가 CA에 의해 발급된 인증서임을 확인할 수 있으며, 각 인증서에 포함된 인증서 소유자의 개인키를 신뢰할 수 있다.
넷째, 키 생성 단계이다. ECDH 키 교환 알고리즘에 따라 IoT 헬스케어 기기는 개인키 PrvKA와 공개키 PubKA를 생성하고 업데이트 서버는 개인키 PrvKB와 공개키 PubKB를 생성한다.
다섯째, 전자 서명 생성 단계이다. IoT 헬스케어 기기는 ECDSA 알고리즘에 따라 PubKA를 메시지로 사용하여 PrvKIoT로 전자 서명 SignA을 생성한다. 업데이트 서버는 동일한 방식으로 PubKB와 PrvKSrv를 사용해 전자 서명 SignB를 생성한다.
여섯째, 키 교환 단계이다. IoT 헬스케어 기기는 업데이트 서버에 PubKA와 SignA를 전송하고, 업데이트 서버는 IoT 헬스케어 기기에 PubKB와 SignB를 전송한다.
일곱째, 키 검증 단계이다. IoT 헬스케어 기기와 업데이트 서버는 각각 전달받은 공개키와 전자서명을 검증한다. 검증에는 첫 번째 단계에서 전달받은 인증서에 포함된 공개키를 활용한다. 검증 결과가 유효하다면 전달받은 공개키가 인증된 시스템에서 생성되었음을 신뢰할 수 있다.
여덟째, 공통키 생성 단계이다. ECDH 키 교환 알고리즘에 따라 IoT 헬스케어 기기는 PubKB와 PrvKA로 공통키를 생성하고 업데이트 서버는 PubKA와 PrvKB로 공통키를 생성한다. 키 교환이 정상적으로 이루어졌다면 각 시스템이 생성한 공통키는 SharedKAB로 동일하다.
아홉째, 암호화 단계이다. 위 절차에 따라 두 시스템은 모두 공통키 SharedKAB를 소유하게 되었다. 따라서 IoT 기기에 적합한 ChaCha20 등의 대칭키 암호화 알고리즘의 키로 SharedKAB 사용해 이후 이루어지는 통신을 암호화 할 수 있다. 스니핑 기법을 사용해 공격자가 본 통신을 도청하더라도, 공개키 SharedKAB나 SharedKAB를 생성하는데 필요한 PrvKA, PrvKB는 네트워크로 전송되지 않기 때문에 암호문 해독에 필요한 키를 확보할 수 없다. 그 결과, IoT 헬스케어 기기 원격 업데이트 상황에서 전송되는 소프트웨어나 기타 정보들이 유출되지 않는다.
본 절차를 따라 안전한 원격 업데이트를 수행한 경우 중간자 공격 기법을 활용한 공격자는 다음과 같은 이유로 업데이트 상황에 개입할 수 없다.
첫째, 인증서 교환 단계에서 IoT 헬스케어 기기나 업데이트 서버에 전송할 인증서를 확보할 수 없다. CA는 인가된 시스템에만 인증서를 발급하기 때문에 공격자는 CA로부터 인증서와 개인키를 발급받을 수 없다. 공격자가 임의의 인증서를 발급하거나 인증서 조작을 시도하는 경우, 공격자는 CA의 개인키를 알 수 없기 때문에 인증서에 포함될 유효한 전자 서명을 생성할 수 없다.
둘째, 인증서 교환 단계에서 공격자가 네트워크 보안의 허점을 이용해 네트워크로 전송되는 인증서를 탈취하였다고 하더라도, 각 시스템의 개인키는 네트워크로 전송되지 않기 때문에 유출되지 않는다. 따라서 전자 서명 생성 단계에서 개인키로 서명을 할 수 없고, 그 결과 IoT 헬스케어 기기와 업데이트 서버는 키 교환 단계 및 키 검증 단계에서 제3의 공격자가 개입하였음을 알 수 있다.
본 절차는 다음과 같은 환경에서 구현하여 평가시험하였다. ARM 계열의 Arudino MKR1010 보드와 적외선 체온계 센서를 사용해 모의 IoT 헬스케어 기기를 구성하고 WiFi 무선 네트워크를 통해 PC에서 구현한 업데이트 서버로부터 원격 업데이트를 받는 상황을 구현하였다.
표 5는 평가시험을 위해 CA가 발급한 각 시스템 별 개인키 예를 보인다. 표 6, 7, 8은 각각 CA, IoT 헬스케어 기기, 업데이트 서버를 위한 경량 인증서의 예이다. 각 개인키와 경량 인증서는 시스템별로 미리 가지고 있도록 구현하였다.
표 9, 10은 ECDH 키 교환 알고리즘을 위해 IoT 헬스케어 기기와 업데이트 서버가 각각 생성한 개인키와 공개키, 생성한 개인키를 CA로부터 발급받은 개인키로 서명한 디지털 서명의 예를 보인다.
표 11은 IoT 헬스케어 기기와 업데이트 서버가 ECDH 알고리즘에 따라 서로 다른 공개키와 개인키로부터 각각 생성한 공통키의 예를 보인다. IoT 헬스케어 기기는 PubKB와 PrvKA로 공통키를 생성하고 업데이트 서버는 PubKA와 PrvKB로 공통키를 생성하였으나 결과는 모두 같다.
표 5의 PrvKCA, PrvKIoT, PrvKSrv와 표 9, 10의 PrvKA, PrvKB를 제외한 정보들은 모두 네트워크로 전송되었다. 그러나 네트워크로 전송된 정보들이 모두 유출된다고 가정하더라도, 공격자는 개인키를 알 수 없어서 유효한 디지털 서명을 생성하거나 공통키를 계산할 수 없기 때문에 통신에 개입하거나 이후 진행될 암호화된 통신으로부터 원본 데이터를 추출할 수 없다.
따라서 본 구현을 통해 본 논문에서 제안한 절차에 따라 IoT 헬스케어 기기와 업데이트 서버가 중간자 공격을 방어할 수 있으며, 그 결과로 암호화된 통신에 사용할 공통키를 안전하게 보유하였음을 알 수 있었다.
Ⅵ. 결론 및 향후 과제
본 논문에서는 중간자 공격으로부터 IoT 헬스케어 기기를 보호하기 위해 적합한 디지털 서명 알고리즘을 평가시험하고 구현하였다. 평가시험은 AVR, ARM, Tensilica 계열의 MCU를 탑재한 4종의 보드에서 ECDSA 및 EdDSA 전자 서명 알고리즘 3종을 구현하여 알고리즘 수행 가능 여부와 속도를 측정하는 방식으로 진행하였다. 그 결과 동일한 보안 수준에서 ECDSA-secp256k1 디지털 서명 알고리즘이 실행성과 속도 효율성이 가장 우수했다. 또한 본 논문에서는 IoT 헬스케어 기기 인증과 식별을 위해 ECDSA-secp256k1와 함께 사용할 경량의 디지털 인증서를 구성하고 유효성 검사 방법을 정의하였다. ECDSA-secp256k1와 경량 디지털 인증서를 IoT 헬스케어 기기 원격 업데이트 상황에 적용한 결과 중간자 공격을 위해 연결을 시도하는 공격자를 IoT 헬스케어 기기와 업데이트 서버가 식별할 수 있었다. 또한 ECDH 키 교환 알고리즘과 함께 사용하면 스니핑 공격을 방어하는데도 활용할 수 있음을 보였다.
본 논문은 비교적 성능이 부족한 IoT 기기에서 실제 구현을 통해 실행성과 효율성이 우수한 디지털 서명 알고리즘을 선택하고, 디지털 서명 알고리즘과 함께 사용할 수 있는 경량의 디지털 인증서를 제안함으로써 강력한 보안이 필요한 IoT 헬스케어 기기를 중간자 공격으로부터 방어할 수 있는 실례를 제시했다는 점에서 그 의의가 있다.
향후 연구 과제에서는 디지털 서명 알고리즘 최적화 기법을 연구하여 IoT 헬스케어 기기의 성능에 따라 효율적인 구현 방법을 제시하도록 한다.
Acknowledgments
이 논문은 2021년도 산업통산자원부의 재원으로 한국산업기술평가관리원(KEIT)의 지원을 받아 수행된 연구임
References
- Global IoT Microcontroller(MCU) Market Forecast 2018-2026, https://inkwoodresearch.com/reports/internet-of-things-microcontroller-market, . [accessed: Aug. 10, 2021]
- 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. [https://doi.org/10.14801/jkiit.2021.19.1.87]
- Yong-Hee Jeon, "A Study on the Security Modeling of Internet of Things(IoT)", The Journal of Korean Institute of Information Technology, Vol. 15, No. 12, pp. 17-27, Dec. 2017. [https://doi.org/10.14801/jkiit.2017.15.12.17]
- Elaine Barker, William Barker, William Burr, William Polk, and Miles Smid, "Recommendation for key management part 1: General (revision 5)", Federal Information Processing Standards(FIPS) Special Publications(SP) 800-57, May 2020.
- Elaine Barker, Lily Chen, Allen Roginsky, Apostol Vassilev, Richard Davis, and Scott Simon, "Recommendation for Pair-Wise Key Establishment Using Integer Factorization Cryptography", Technical Report NIST Special Publication(SP) 800-56B, Mar. 2019. [https://doi.org/10.6028/NIST.SP.800-56Br2]
- Don Johnson, Alfred Menezes, and Scott Vanstone, "The Elliptic Curve Digital Signature Algorithm (ECDSA)", International Journal of Information Security, Vol. 1, No. 1, pp. 36–63, Aug. 2001. [https://doi.org/10.1007/s102070100002]
- Daniel R. L. Brown, "SEC 2: Recommended Elliptic Curve Domain Parameters", Certicom Research, Jan. 2010.
- S. Turner, D. Brown, K. Yiu, and R. Housley, "Elliptic Curve Cryptography Subject Public Key Information", RFC 5480, Mar. 2009. [https://doi.org/10.17487/rfc5480]
- S. Josefsson, and I. Liusvaara, "Edwards-Curve Digital Signature Algorithm (EdDSA)", RFC 8032, Jan. 2017. [https://doi.org/10.17487/RFC8032]
- M. Cooper, Y. Dzambasow, P. Hesse, S. Joseph, and R. Nicholas, "Internet X.509 Public Key Infrastructure: Certification Path Building", RFC 4158, Sep. 2005. [https://doi.org/10.17487/rfc4158]
- Jae-Yoon Lim, Seunghwan Yun, Sun-Hee Lim, Okyeon Y, and Sangjin Lee, "Effective Certification and Access Control Model Study Applying SPKI/SDSI between Distribution Domains", Korean Institute of Information Technology, Vol. 8, No. 10, pp. 87-97, Oct. 2010.
2014년 2월 : 경북대학교 심화컴퓨터공학(공학사)
2016년 3월 : 경북대학교 대학원 컴퓨터학부(공학석사)
2016년 3월 ~ 현재 : 경북대학교 대학원 컴퓨터학부 박사과정
관심분야 : 의료정보, IoT, 의료정보보안
1979년 2월 : 서울대학교 전기공학(공학사)
1981년 2월 : 서울대학교 전기공학(공학석사)
1990년 8월 : University of Utah 컴퓨터과학(공학박사)
1990년 ~ 현재 : 경북대학교 컴퓨터학부 교수
관심분야 : 의료정보, 국제의료표준, 의료정보보안