“IoT 보안 위한 엔드 투 엔드 전략 반드시 고려해야”
상태바
“IoT 보안 위한 엔드 투 엔드 전략 반드시 고려해야”
  • 데이터넷
  • 승인 2017.08.07 08:50
  • 댓글 0
이 기사를 공유합니다

개발부터 폐기까지 라이프 사이클 모든 단계서 보안 고려 필수…보안 취약점 발생 위험 줄여
▲ 한상호 윈드리버코리아 부장(David.Han@windriver.com)

IoT 환경이 확산되면서 사이버 위협은 자동차 해킹과 같이 일반인들의 생활에 밀접한 부분까지 파고들었다. 이제 특정 구간에서만 보안을 적용하고 강화하는 것이 아닌, IoT가 적용되는 전체 라이프 사이클에 보안을 강구할 필요가 있다. 보안 문제를 사전 해결한 통합 소프트웨어 구성요소를 활용해 IoT 애플리케이션을 개발한다면, 프로세스 효율성을 높이는 동시에 시스템 복잡성을 낮추고, 구성 오류에 따른 보안 취약점 발생 위험을 줄일 수 있다.

최근 사물인터넷(IoT) 환경의 취약점이 원인으로 알려진 보안 침해 사고들로 인해, 외부 위협으로부터 IoT 시스템을 보호하는 것이 가장 긴급한 사안이라는 인식이 높아지고 있다. 하지만 이 문제를 해결하는데 있어서 단편적인 접근방식은 효과가 없다. 제대로 효과를 거두기 위해서는 설계 단계부터 전체 애플리케이션을 아우르는 포괄적인 방안을 채택해야 한다. 최근 발생하고 있는 위협의 주요 범주와 그에 따른 적용 방안, 그리고 IoT 개발자를 위한 시스템 성능을 저해하지 않으면서도, 포괄적인 통합 솔루션을 구축할 수 있는 방법에 대해 살펴보자.

2015년 사이버보안 엔지니어들이 자동차의 인포테인먼트 시스템을 해킹해 고속도로에서 지프 자동차를 성공적으로 편취했다는 뉴스가 보도됐다. 사이버 위협은 핵심 인프라, 은행 또는 정보기관에 대해 거의 매일 발생하다시피 해왔지만, 자동차 탈취는 매일 도로 위를 운전하는 일반 사람들을 대상으로 하기 때문에 더욱 큰 불안감을 조장했다. 이 사례의 경우 윤리적인 목적으로 해커가 테스트에 참여한 자동차 제조업체 및 운전자에게 사전 통보한 후에 이뤄졌지만, 악의적인 의도를 가진 그 누군가가 얼마든지 선량한 대중에게 해를 입힐 수 있다는 사실이 현실로 입증되면서 사람들을 경악하게 했다.

이 사건은 IoT에 대한 대중의 인식을 불러일으킨 동시에 IoT 애플리케이션에서의 보안, 또는 엄밀히 말해 전체 IoT 시스템 라이프 사이클에 대해 포괄적이고 종합적인 보안 접근방식에 대한 대책을 촉구하는 사건이기도 했다. 특정 차량의 핵심 소프트웨어 구성요소에 보안 기능이 이미 구축돼 있었다는 사실에 대해서는 의심할 여지가 없지만, 전체적인 관점에서라기보다 개별 구성요소에 대해 소위 ‘땜질(패치워크, patchwork)’하는 방식이었을 가능성이 높다. 결국 차량을 취약하게 만드는 근본적인 문제점들은 여전히 해결되지 못한 채 남아있는 것이다.

IoT 애플리케이션 및 디바이스 개발자는 이처럼 이미 알려진 광범위한 보안 위협 유형과 더불어 매일같이 새롭게 등장하는 보안 위협에 대응하기 위해, 더 이상 패치워크 방식에 의존해서는 안 된다. 단 한 부분만 취약해져도 전체 시스템이 위험해 질 수 있기 때문에, 단편적으로 하나씩 적용하는 방식이 아닌 엔드 투 엔드(End to End) 방식을 고려해야 한다.

위협의 6가지 주요 범주 및 위협 완화 방안

해킹을 정치적, 사회적 투쟁수단으로 사용하는 ‘핵티비스트’, 또는 무언가를 증명하기 위해 단순하게 스릴을 쫓는 사람들을 비롯해 그 종류에 관계없이 침입자는 이미 시스템 취약점을 찾아내서 악용할 수 있는 수없이 많은 기법을 보유하고 있다. 하지만 대부분의 보안 위협을 크게 6가지의 카테고리로 분류할 수 있다. IoT 애플리케이션 개발자는 이러한 각각의 카테고리에 대응하기 위한 여러 가지 위험 완화 방법을 적용할 수 있다.

1. 소셜 엔지니어링

이 용어는 ‘피싱’, ‘휴지통 뒤지기(Dumpster Diving)’ 또는 개인 블랙메일 등과 같은 방법을 통해 적당한 사용자로부터 보안 자격증명(Security Credentials)을 획득하는 해커의 능력을 말한다. 소셜 엔지니어링 기법은 기술적인 리소스나 기술적 취약점보다는 인간의 행동 및 심리에 기반한다. 따라서 비밀번호를 강화하고 주기적으로 업데이트 하는 한편, 지정된 시점에 특정 사용자에게 시스템의 다른 영역에 대한 액세스를 제한하는 역할 기반 접근 제어 기능을 적용하거나, 소프트웨어 업체의 CVE(Common Vulnerabilities and Exposure) 안내 시 소프트웨어 업데이트 지침을 준수하는 것이 좋다.

- 강력한 비밀번호
- 주기적인 비밀번호 업데이트
- 지정된 시점에 특정 사용자에게 시스템의 다른 영역에 대한 액세스를 제한하는 역할 기반 접근 제어
- 소프트웨어 업체의 CVE 안내 시, 소프트웨어 업데이트 지침 준수

2. 호스트 구성요소에 대한 공격

이러한 공격에는 SQL 삽입, 사이트 간 스크립팅(Cross-site scripting, XSS) 및 대용량의 중요한 데이터를 처리하는 클라우드 기반 제어 시스템에서 액세스 및 인증 제어를 손상시키는데 사용되는 기타 기법들이 포함된다. 이에는 다음과 같은 조치를 취해야 한다.

- API 인증 토큰
- 역할 기반 접근 제어
- 클라우드 레벨에서 ‘사칭(Impersonation)’을 막기 위한 화이트리스트 애플리케이션

3. 해킹된 디바이스 소프트웨어

디바이스 레벨에서 소프트웨어에 대한 접근 권한을 취득한 해커는 서비스 거부, 멀웨어 설치, 신분 도용, 권한 상승, 해킹(jailbreak) 등을 포함해 시스템을 방해하거나 시스템 제어권을 탈취할 수 있다. 개발자는 다음과 같은 다양한 대책을 사용해 이 위협을 완화할 수 있다.

- 보안 부팅: 처음 디바이스에 전원을 켤 때, 암호로 생성된 디지털 서명을 사용해 디바이스의 소프트웨어에 대한 신뢰성 및 무결성을 검증한다. 이러한 방안을 통해 디바이스가 변조됐거나 악의적으로 삽입된 소프트웨어를 로드하지 않도록 한다.
- 소프트웨어 업데이트: 소프트웨어를 최신으로 유지하는 것은 IoT 애플리케이션의 안전한 운영을 위한 가장 기본적인 요구 사항이다. 주기적으로 또는 CVE가 발표됐을 때, 소프트웨어 업데이트를 제공하기 위한 메커니즘을 보유하는 것은 일반적으로 소프트웨어 업체의 책임이기도 하다.
- 보안 패키지 관리: 소프트웨어 업체는 CVE를 모니터링하고, 널리 퍼지기 전에 이를 고객에게 알리고 문제를 해결하기 위해 업데이트를 제공해야 한다. SPM(Secure Package Management, 보안 패키지 관리)은 서명키를 사용해 업데이트가 확실한지 확인함으로써, 이미 알려진 취약점이 있는 소프트웨어 실행 위험을 낮춘다.
- 무결성 측정 아키텍처(Integrity Measurement Architecture): IMA는 시스템에서 실행되는 코드의 인증을 검증하고, 오프라인 디스크 템퍼링(tampering)을 방지하는데 적용된다.
- 소프트웨어 격리: 소프트웨어 구성요소를 ‘컨테이너(Container)’로 분리하면 시스템 한 부분에 침해 사고가 발생해도 다른 부분을 손상시키지 않도록 할 수 있다. 이 방법은 공격자가 단일 구성요소를 통해 시스템에 침입해 다른 시스템에 접근하기 위해 더 높은 수준의 권한을 획득하는 권한 상승 위험을 효과적으로 차단한다.

4. 물리적 공격

여기에는 자격 증명 또는 기타 민감한 데이터를 복제, 도용하거나, 리버스 엔지니어링하기 위한 디바이스의 절도가 포함될 수 있다. IoT 애플리케이션은 종종 광범위하게 분산돼 개별적으로 모니터링하기 어려운 수없이 많은 연결된 디바이스가 수반돼 다양한 형태의 변조 위험에 노출되기 쉽다. 개발자가 디바이스의 물리적 보안을 완벽하게 해결할 수는 없지만, 도난당하거나 훼손된 디바이스를 해커가 악용해 더 큰 손해를 끼치지 않도록 막을 수는 있다. 여기에는 다음과 같은 기술들이 포함된다.

- 파일 시스템 암호화: 물리적 공격이 발생한 경우, 파일 시스템 암호화를 통해 도난당한 데이터를 읽거나 복사하지 못하도록 할 수 있다.
- TPM(Trusted Platform Module): TPM은 하드웨어 기반 보안 솔루션으로, 암호화 키를 저장해 호스트 시스템이 실행되는 하드웨어를 인증할 수 있다.
- 원격 증명(Remote Attestation): 원격 증명 기술은 라이프 사이클 전체에 걸쳐 IoT 시스템의 서로 다른 부분의 독자성과 무결성을 검증하는 수단으로 빠르게 인기를 끌고 있다. 이 기술은 사전 배포된 디바이스에 설치된 자격 증명을 활용한다. 그런 다음 장치를 관리 콘솔을 통해 언제든지 쿼리해서 ID를 확인하고 아무도 해당 디바이스를 변조하지 않았음을 확인할 수 있다.

5. 네트워크 침해

일반적으로 말하는 ‘중간자 공격’에서는 해커가 세션 하이재킹(Session Hijacking) 등의 기법을 사용해 네트워크에 진입한 후 디바이스와 클라우드 기반 컨트롤러 간의 통신을 방해하거나 차단 또는 변경한다. 네트워크 취약성은 지프차 해커들에게 ‘진입 기점’을 제공, 결국 차량의 온보드 시스템까지 침입하게 만들었다. 네트워크를 보호하는 것은 IoT 애플리케이션 개발에 있어서 매우 중요한 고려 사항이며, 네트워크 침해가 발생한 경우 이를 읽을 수 없게 만들어 전송 중인 데이터를 보호하는 네트워크 암호화 방식을 통해 대응이 가능하다.

6. 보안설정 오류(Security Misconfiguration)

IoT 애플리케이션에 대한 가장 일반적인 위협이라고 할 수 있는 잘못된 보안 설정으로 인해 약점을 찾아내서 악용하려는 시스템 차원의 공격에 취약한 상태가 될 수 있다. 개발자가 앞에서 설명한 여러 표준 보안 기능을 통합할 수 있지만, 올바르게 결합되지 않은 경우 제대로 된 결과를 얻을 수 없다. 구성 오류의 위험을 피하기 위해서는, 설계 단계에서부터 엔드 투 엔드 통합 보안 전략을 세워야 하다. 단순히 보안 기술 목록을 확인하는 것만으로는 부족하다. 개발자가 전체 시스템 및 시스템 라이프사이클 전반을 고려해 위협 모델을 맵핑하고 분석하면, 전체적인 완화 전략과 잠재적으로 취약한 각 영역을 보호할 방안에 대해 생각해 볼 수 있다.

‘만병통치약’처럼 시스템을 샅샅이 분석해 모든 취약점을 찾아낼 수 있는 소프트웨어가 있을까? 그런 것은 존재하지 않는다. 그렇기 때문에 애플리케이션에 대한 보안을 고려하기 시작하는 시기가 디바이스를 개발해 배포하기 전이어야 하고, 설계의 핵심적인 부분이 돼야 하다.

진정한 엔드 투 엔드 보안 솔루션은 디바이스 개발부터 최종적인 폐기 단계까지에 이르는 애플리케이션의 전체 라이프 사이클을 포괄해야 한다. 사실 폐기된 디바이스가 정말로 ‘작동하지 않으며’ 시스템에 대한 어떠한 침입 경로도 제공할 수 없도록 하기 위해서는, 배포 전 단계에서 ‘수명 종료를 위한 보안 기능’이 고려돼야 한다.

효율성 높이고 복잡성 낮추는 사전 구성 방식

지프차의 사례는 보안이 모든 IoT 애플리케이션의 핵심 요건이며, 시스템이 손상되는 경우 인명의 안전이 위협받을 수 있다는 사실을 시사한다. 두 번 생각할 것도 없이 사람들이 일상생활 속에서 안전하고 신뢰할 수 있는 성능을 기대하는 모든 애플리케이션의 필수적인 전제 조건이다. 그렇다면 왜 보안이 필수적인 요소가 아닌 시스템 성능이라는 우선순위에 밀려, 나중에 부가적으로 추가되는 항목으로 다뤄지고 있을까?

개발자는 단순히 계획한 대로 IoT 애플리케이션을 구축해야 한다는 큰 과제에 직면해 있다. 보안은 복잡성을 가중시키고 있으며, 점점 더 증가하는 수많은 정교한 위협에 대응하기 위해서는 복잡성이 더욱 심화될 수밖에 없다. 그러나 제대로 된 계획 없이 보안 시스템을 구축하면 개발 일정이 지연되고, 비용이 급격히 증가하며, 경우에 따라서는 배포된 애플리케이션의 성능에 좋지 않은 영향을 미칠 수 있다.

이를 해결하기 위해 개발자는 여러 가지 보안 문제를 해결해 사전 구성한 통합 소프트웨어 구성요소를 적용한 플랫폼으로 IoT 애플리케이션을 구축할 수 있다. 다양한 보안 기술을 파악해서 개발하고 패치해야 한다는 부담이 크게 경감됨으로써 개발 프로세스를 훨씬 효율성을 극대화하는 동시에 시스템의 복잡성을 낮추고, 구성 오류에 따른 보안 취약점 발생 위험을 줄일 수 있다.

이러한 플랫폼 형태의 접근 방식은 에지 디바이스에서 데이터를 수집하고, 디바이스 성능을 모니터링하는 기능과 함께, 디바이스 라이프 사이클의 모든 측면을 관리할 수 있는 기능을 제공한다. 아래와 같이 사전에 구성돼 있는 광범위한 기능들이 내장돼 있으므로, 개발자는 설계 단계에서부터 디바이스 라이프 사이클 전반에 대한 보안 대책을 구현할 수 있다.

- 보안 부팅
- 디바이스 소프트웨어 업데이트 메커니즘
- 화이트리스트 애플리케이션
- 데이터 및 디바이스 암호화
- 내장된 자격 증명 및 인증서
- TPM(Trusted Platform Module)
- 액세스 권한 부여
- 소프트웨어 격리
- 무결성 측정

사전 통합된 보안 구성요소를 제공하는 상용 플랫폼을 통해 개발자는 구성오류로 인한 위험을 제거하고, 개발 지연이나 시스템 성능 저하 문제없이 보안 기능을 구현할 수 있다.

보안은 IoT 애플리케이션을 위해, 제어하는 기계를 보호하기 위해, 그리고 애플리케이션의 신뢰할 수 있는 성능에 의존하고 있는 사람들을 보호하기 위한 필수불가결한 요소이다. 또한 보안은 IoT 시스템 성능에 대한 근본적인 요소로, 시스템 설계 단계에서부터 통합돼야 한다. 이것이 단편적인 보안 구현 전략이 아니라, 에지 디바이스에서부터 기업 애플리케이션 레벨까지 애플리케이션의 모든 측면과 함께, 개발부터 폐기 단계까지 애플리케이션 라이프 사이클의 모든 단계를 포괄하는 철저하게 계획된 엔드 투 엔드 전략이 필요한 이유이며, 의심의 여지없이 IoT 개발 과제에 추가돼야 한다.

보안 기능 구현을 효율화하고, 개발자들이 시스템 성능에 집중할 수 있도록 하는 사전 구성된 소프트웨어와 보안 구성요소를 통해 접근한다면, 어렵지 않게 IoT 환경의 신뢰성을 확보할 수 있을 것이다.


댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.