사물 인터넷(Internet of Things) 환경에서의 장치들의 신뢰성 확보는 무엇보다 중요하다. 현재의 보안 위협은 대부분 정보의 노출과 조작, 또는 금전적인 이득을 위한 것이나, 사람의 삶이 사람을 둘러싼 장치들(Things)에 의해서 인터넷으로의 연결성의 강화되었을 때, 그 장치들로부터의 보안 위협은 직접적으로 사람을 겨냥할 가능성이 있다. 장치의 경우 인증은 인증 대상이 배타적으로 알고 있는 정보, 즉 비밀키를 검증함으로써 이루어진다. 하지만 공격자가 물리적으로 장치를 수정한다면 더 이상 비밀키를 알고 있다는 것은 신뢰의 증거가 될 수 없게 된다. 따라서 코드 검증(code attestation)과 같은 강력한 신뢰 확보 방법이 필요하다. 이 논문에서는 검증의 효율을 위해 비용이 적은 소프트웨어적인 코드 검증을 사용하였다. 원본 코드 복사를 통한 회피 방법에 대해 안전한 코드 검증 방법을 제시하고 이를 임베디드 디바이스에 적용하여 성능을 분석해 보인다.
사물 인터넷(Internet of Things) 환경에서의 장치들의 신뢰성 확보는 무엇보다 중요하다. 현재의 보안 위협은 대부분 정보의 노출과 조작, 또는 금전적인 이득을 위한 것이나, 사람의 삶이 사람을 둘러싼 장치들(Things)에 의해서 인터넷으로의 연결성의 강화되었을 때, 그 장치들로부터의 보안 위협은 직접적으로 사람을 겨냥할 가능성이 있다. 장치의 경우 인증은 인증 대상이 배타적으로 알고 있는 정보, 즉 비밀키를 검증함으로써 이루어진다. 하지만 공격자가 물리적으로 장치를 수정한다면 더 이상 비밀키를 알고 있다는 것은 신뢰의 증거가 될 수 없게 된다. 따라서 코드 검증(code attestation)과 같은 강력한 신뢰 확보 방법이 필요하다. 이 논문에서는 검증의 효율을 위해 비용이 적은 소프트웨어적인 코드 검증을 사용하였다. 원본 코드 복사를 통한 회피 방법에 대해 안전한 코드 검증 방법을 제시하고 이를 임베디드 디바이스에 적용하여 성능을 분석해 보인다.
In IoT environment, making sure of trust of IoT devices is the most important one than others. The security threats of nowadays almost stay at exposure or tampering of information. However, if human life is strongly connected to the Internet by IoT devices, the security threats will probably target ...
In IoT environment, making sure of trust of IoT devices is the most important one than others. The security threats of nowadays almost stay at exposure or tampering of information. However, if human life is strongly connected to the Internet by IoT devices, the security threats will probably target human directly. In case of devices, authentication is verified using the device-known private key. However, if attacker can modify the device physically, knowing the private key cannot be the evidence of trust any more. Thus, we need stronger verification method like code attestation. In this paper, we use software-based code attestation for efficiency. We also suggest secure code attestation method against copy of original code and implement it on embedded device and analyze its performance.
In IoT environment, making sure of trust of IoT devices is the most important one than others. The security threats of nowadays almost stay at exposure or tampering of information. However, if human life is strongly connected to the Internet by IoT devices, the security threats will probably target human directly. In case of devices, authentication is verified using the device-known private key. However, if attacker can modify the device physically, knowing the private key cannot be the evidence of trust any more. Thus, we need stronger verification method like code attestation. In this paper, we use software-based code attestation for efficiency. We also suggest secure code attestation method against copy of original code and implement it on embedded device and analyze its performance.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
그러나 기존에 분석된 최적 실행시간 및 하드웨어 성능을 바탕으로 예측된 코드 검증 성능은 임베디드 운영체제 및 네트워크 상황에 따라 차이를 보일 수 있다. 따라서 이 논문에서는 실제 사물 인터넷 장치에서 코드 검증 시 발생할 수 있는 편차를 검증하고 미세한 시간차를 이용한 접근 방법의 어려움을 보인다.
따라서 정상적인 장치에서는 비슷한 수준의 횡단 비용을 지불하면 체크섬을 만들 수 있지만 수정된 장치에서는 더 큰 비용을 지불하도록 해야 한다. 본 단락에서는 기존의 코드 검증 기법에서 캐시를 사용하는 공격자가 가지는 이득을 줄이기 위해, 무선 네트워크 환경에서 이루어지는 코드 검증의 과정과 더불어 개선된 메모리 채우기 기법을 설명한다.
이 논문에서는 사물 인터넷 환경의 장치들을 위하 여, 향상된 소프트웨어 코드 검증 알고리즘을 제시하고 실제 저전력 블루투스 장치에 코드 검증 기능을 구현하였고 스마트 기기를 이용하여 원하는 사물 인터넷 장치에 대한 코드 검증을 수행하였다. 제안하는 기법이 바탕을 두고 있는 코드 검증 기법[7],[8]은 많은 이론적 분석에도 불구하고 사물 인터넷 장치에서 실제로 구현된 적은 없다.
제안 방법
검증자는 서버에서 받은 체크섬 값과 검증하고자 하는 사물 인터넷 장치가 생성한 체크섬의 값을 비교함으로써 사물 인터넷 장치의 수정 여부를 판별할 수 있다.
검증자는 저전력 블루투스를 이용하여 검증하고자 하는 장치를 검색한다. 검증하고자 하는 장치들은 사용되기 이전에서로 주소, 이름, 프로파일 등이 교환되어 있으므로 검증자는 스마트 기기에서 원하는 장치를 선택함으로써 장치와 연결한다.
검증자는 코드 검증 프로그램을 설치한 스마트 기기를 소지하고 검증을 하고자 하는 장치의 근처로 이동하여 블루투스를 활성화한 후에 프로그램을 실행한다. 그러면 미리 페어링 되어 있는 블루투스 장치들의 이름이 나열된 그림 8과 같은 화면이 나타난다.
2007년, 최영근 등은 검증 요청자로부터 수신한 랜덤 시드를 이용하여 센서 노드 자신의 남아 있는 여분의 SRAM 메모리 공간을 랜덤비트로 가득 채운 후 전체 메모리(프로그램 및 SRAM 공간 포함)를 해시하여 응답을 생성하는 소프트웨어 기반의 코드 검증 기법을 제시하였다[7]. 남아 있는 모든 메모리 공간을 채움으로써, 수정된 노드가 원래 코드를 위한 공간을 채우지 않고 메모리가 필요할 때 실시간으로 필요한 랜덤비트를 생성하는 공격을 완화하기 위하여, XOR을 이용하여 랜덤비트를 반복적으로 덮어쓰는 방식을 이용하였으며, 전체 메모리에 대한 해시를 계산하기 위하여 메모리 순서에 수직 방향으로 해시를 계산하도록 하였다.
또한 128 비트 AES데 데이터 암호화를 사용하여 업계에서 가장 높은 수준의 보안을 허용한다 [10]. 논문에서 사용한 코드 검증에서는 많은 양의 데이터 통신을 필요로 하지 않기 때문에 사물 인터넷에 적합한 BLE를 통신에 사용하도록 하였다.
공격자는 이렇게 채워지지 않은 공간을 이용할 수 있다. 따라서 이 문제를 해결하기 위해 아직 채워지지 않은 공간인지 아닌지를 확인하여, 동일한 공간에 무작위의 비트 값을 덮어쓰지 않도록 충돌을 감지하고 이를 회피하도록 하였다. 즉, 이미 채워진 공간에 다시 덮어 쓰려고 할 때, 이를 감지하고 다른 메모리 공간을 찾아 채우는 방식으로 빈 메모리 공간이 남는 것을 방지할 수 있다.
따라서 반드시 수정된 장치를 찾아 시스템에서 격리 시켜야만 한다. 수정된 장치를 찾는 방법으로 논문에서는 코드 검증을 사용할 것이다. 코드 검증은 대상이 가지고 있는 실행코드와 메모리 자체를 검증하는 방법으로 대상이 물리적으로 수정되지 않았는지를 알아내는 방법론이다.
장치를 선택한 후에 그림 9와 같이 길이가 16인 시드를 입력하고 “Send” 버튼을 누르면, 입력한 시드 값이 서버와 검증하고자 하는 장치로 각각 전송된다. 시드 값을 받은 사물 인터넷 장치는 코드 검증 루틴을 거쳐 계산한 체크섬 값을 스마트 기기로 전송하고, 서버도 가지고 있던 사물 인터넷 장치의 메모리 사본을 이용하여 체크섬을 계산하여 스마트 기기로 전송한다. 이 때, 두 값이 같은 경우 그림 10과 같이 네트워크를 포함한 시간, 네트워크를 포함하지 않은 시간, 그리고 Not Compromised를 출력하게 된다.
우리는 빈 메모리 공간을 특정한 알고리즘으로 채우고, 공격자는 공격코드를 배치한 특정한 위치의 메모리의 값을 계산함으로써 검증을 통과하려고 한다. 이 때, 본 논문에서 제시한 빈 공간 채우기 알고리즘은 2단계로 이루어져 있고, 이때 1단계에서 해시함수의 입력-출력의 관계에 있었던 메모리들이 2단계에서 출력-입력의 관계가 된다면, 그림 13과 같은 사이클이 메모리 내에 생성되게 된다.
compression attack은 그림 12와 같이 원래의 코드를 압축한 다음, 빈 공간을 이용해서 악성코드를 삽입하는 공격이다. 이 논문에서 사용한 코드 검증 알고리즘에서는 빈 메모리 공간을 순차적이 아닌, 임의의 주소에 임의의 값을 채우도록 하였다. 공격자는 정상적인 값을 계산하기 위해서 압축된 원래의 코드를 on-the-fly 방식으로 압축 해제하여야 한다.
코드 검증 실험은 코드 검증 루틴을 저전력 블루 투스 실드가 장착된 아두이노 우노에 탑재하여 진행하였다. 총 1,000개의 길이가 16인 시드 값을 무작위로 선택하여 실시하였다.
검증 요청자는 프로그램 코드 영역이 중복되도록 복수의 코드 검증을 수행한다. 하지만 이러한 방법으로는 원래 소스코드를 압축하여 다른 메모리 공간에 저장하는 회피 방법에 대응할 수 없기 때문에, 검증 수행자는 모든 외부 인터럽트를 끄고 프로세서의 상태를 특정한 값으로 초기화한 다음, 코드 검증을 수행한 뒤, 그 상태에서의 프로세서의 상태를 함께 전송하도록 하는 확장 방법을 제안하였다. 검증 수행자가 올바른 코드 검증 결과 값을 생성하기 위해서 추가적인 연산은 수행한다면 프로세서의 상태가 변하게 되므로 이를 찾아낼 수 있다.
대상 데이터
11. Result of test on compromised IoT device.
10. Result of test on non-compromised IoT device.
코드 검증 실험은 코드 검증 루틴을 저전력 블루 투스 실드가 장착된 아두이노 우노에 탑재하여 진행하였다. 총 1,000개의 길이가 16인 시드 값을 무작위로 선택하여 실시하였다.
이론/모형
공격자는 장치를 수정하여, 이전의 장치의 검증에 사용 되었던 유효한 메시지를 재사용하는 방법 등으로 Reply Attack을 시도할 수 있다. 그러나 본 검증 기법은 challenge-and-response 방식이므 로 검증자는 매번 다른 값을 송신하고 검증하고자 하는 장치로 하여금 매번 다른 값을 계산해 내도록 요 한다. 공격자는 충분하지 않은 메모리를 가지고 있으므로 수정된 장치에서 정상적인 응답을 도출해내는 것은 불가능하다.
성능/효과
25ms 로 나타났다. 그러나 이 논문에서 실험 결과 무선 네트워크 통신 시간에서만 평균적으로 52.449ms가 소요되고 시드 값에 따라 장치 내 검증의 경우 최대 61ms, 네트워크를 포함할 경우 최대 127ms의 편차가 발생함을 알 수 있다. 따라서 해당 기법은 무선 네트워크 환경에서의 코드 검증을 위해서는 두 장치에서의 코드 검증에 필요한 시간 차이를 더욱 증가시켜야 할 필요성이 있음을 확인하였다.
449ms가 소요되고 시드 값에 따라 장치 내 검증의 경우 최대 61ms, 네트워크를 포함할 경우 최대 127ms의 편차가 발생함을 알 수 있다. 따라서 해당 기법은 무선 네트워크 환경에서의 코드 검증을 위해서는 두 장치에서의 코드 검증에 필요한 시간 차이를 더욱 증가시켜야 할 필요성이 있음을 확인하였다.
이 논문에서 제시한 코드 검증 기술은 목표로 하는 장치의 연산 능력이 지나치게 높은 경우(스마트 폰, 개인 PC와 같은 경우) 오히려 보안성을 확보하기 힘든 측면이 있다. 연산 능력이 높으면 메모리 구조를 특정하기 힘들뿐만 아니라, 하드 디스크나 EEPROM과 같이 비대칭적인 쓰기와 읽기 속도를 가진 하드웨어의 경우 빈 메모리 공간을 채우는 것이 연산보다 더 느리기 때문에 메모리 복사를 수행하는 악성코드에게 큰 이득을 주게 된다.
후속연구
또한 하드웨어 모듈에 의한 코드 검증은 필연적으로 장치의 가격을 비싸게 만든다. 따라서 소프트웨어 기반의 코드 검증이 필요하며 검증하고자 하는 사물 인터넷 장치의 위치와 수에 크게 영향을 받지 않도록 무선 네트워크 환경에서의 코드 검증이 가능하게 해야 할 것이다.
따라서 궁극적으로는 장치를 위한 표준 코드 검증 기술이 필요하다. 이 연구는 이를 위한 기초가 될 수 있으며 장치 간 코드 검증 기술 및 표준 코드 검증 기술은 차후 연구 과제로 남겨둔다.
질의응답
핵심어
질문
논문에서 추출한 답변
reflection 기반의 코드 검증 기법은 무엇인가?
Spinellis는 소프트웨어의 무결성을 확인하기 위해 reflection 기반의 코드 검증 기법을 소개하였다[3]. 이 기법은 기본적으로, 검증 요청자의 요청에 대해서 메모리 영역에 탑재된 프로그램 코드의 일부분을 암호학적 해시 함수를 이용하여 해시 한 후에 전송하여 확인하도록 하는 것이다. 검증 요청자는 프로그램 코드 영역이 중복되도록 복수의 코드 검증을 수행한다.
코드 검증은 무엇인가?
수정된 장치를 찾는 방법으로 논문에서는 코드 검증을 사용할 것이다. 코드 검증은 대상이 가지고 있는 실행코드와 메모리 자체를 검증하는 방법으로 대상이 물리적으로 수정되지 않았는지를 알아내는 방법론이다. 코드 자체를 검증하기 때문에, 수정된 장치를 정확하게 찾아낼 수 있다.
대부분의 사물 인터넷 장치는 어떤 이유로 주기적인 코드 검증 수행으로 감염된 사물 인터넷 장치를 찾아야하는가?
코드 자체를 검증하기 때문에, 수정된 장치를 정확하게 찾아낼 수 있다. 대부분의 사물 인터넷 장치는 외부에 노출되어 있으므로 물리적 접근을 차단하기가 어렵기 때문에 주기적인 코드 검증의 수행으로 감염된 사물 인터넷 장치를 찾아야 한다.
참고문헌 (14)
SUNNYVALE, calif.-January 16, 2014. Proofpoint, Inc.
Dieter Bohn.-June 13, 2013. The Verge, Vox Media, Inc.
Diomidis Spinellis, "Reflection as a Mechanism for Software Integrity Verification," ACM Transactions on Information and System Security, Vol. 3, No. 1, pp. 51-62, February 2000.
Seshadri, A., Perrig, A., Van Doorn, L., & Khosla, P. (2004, May). SWATT: Software-based attestation for embedded devices. In Security and Privacy, 2004. Proceedings. 2004 IEEE Symposium on (pp. 272-282). IEEE.
Seshadri, A., Luk, M., Perrig, A., van Doorn, L., & Khosla, P. (2006, September). SCUBA: Secure code update by attestation in sensor networks. In Proceedings of the 5th ACM workshop on Wireless security (pp. 85-94). ACM.
Shaneck, M., Mahadevan, K., Kher, V., & Kim, Y. (2005, July). Remote software-based attestation for wireless sensors. In European Workshop on Security in Ad-hoc and Sensor Networks (pp. 27-41). Springer Berlin Heidelberg.
Choi, Y. G., Kang, J., & Nyang, D. (2007, August). Proactive code verification protocol in wireless sensor network. In International Conference on Computational Science and Its Applications (pp. 1085-1096). Springer Berlin Heidelberg.
T. AbuHmed, J. Kang, D. Nyang, and KyungHee Lee, "A Software-Based Group Attestation for Wireless Sensor Networks," Adhoc & Sensor Wireless Networks Journal, Vol. 13, No. 1-2, pp. 121-154, Jan 2011.
Blom, Gunnar; Holst, Lars; Sandell, Dennis (1994), "7.5 Coupon collecting I, 7.6 Coupon collecting II, and 15.4 Coupon collecting III", Problems and Snapshots from the World of Probability, New York: Springer-Verlag, pp. 85-87, 191, ISBN 0-387-94161-4, MR 1265713.
Bluetooth Smar of Version 4.0+ of the Bluetooth specification, https://www.bluetooth.com/what-is-bluetooth-technology/bluetooth-technology-basics/low-energy
Castelluccia, C., Francillon, A., Perito, D., & Soriente, C. (2009, November). On the difficulty of software-based attestation of embedded devices. In Proceedings of the 16th ACM conference on Computer and communications security (pp. 400-409). ACM.
Biryukov, Alex, Daniel Dinu, and Dmitry Khovratovich. "Fast and Tradeoff-Resilient Memory-Hard Functions for Cryptocurrencies and Password Hashing."IACR Cryptology ePrint Archive 2015 (2015): 430.
DZIEMBOWSKI, Stefan, et al. Proofs of space. In: Annual Cryptology Conference. Springer Berlin Heidelberg, 2015. p. 585-605.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.