무선 센서 네트워크(WSN)에서의 보안 달성
  • 2015-04-07
  • 김언한 기자, unhankim@elec4.co.kr
  • 글| *크리스 피스터, 최고 기술자**조나단 사이먼, 시스템 엔지니어링 이사더스트 네트웍스 제품 그룹, Linear Technology




무선 보안은 결코 사소한 문제가 아니며, 세부적으로 엄격하게 주의를 기울임으로써 무선 공격에 취약하지 않은 시스템을 설계할 수 있다.

사물인터넷(IoT)이 빠르게 성장하고 있으며, WSN(wireless sensor network)은 인터넷 인프라 영역을 “모든 사물”로 확대하는데 매우 중요한 역할을 한다.

실제로 WSN은 전 세계적으로 다수의 모니터링 및 제어 애플리케이션에 널리 사용되고 있다. 이러한 시스템에서 보안 유출은 효율성과 안전성에 실제적이고 직접적인 영향을 미칠 수 있다. 다행히 무선 시스템의 보안에 관한 문헌을 쉽게 찾아볼 수 있으며 우수 사례도 잘 알려져 있다. 그럼에도 무선과 WSN의 보안이 뚫렸다는 뉴스가 계속 들린다.

놀랍게도 시장의 많은 제품이 시스템보안을 위한 기본적인 원칙조차 적용하지 않고 있으며, 많은 제품이 보안을 인식하고는 있으나 기준에 미치지 못하고 있다. 이 글에서는 이와 관련해 흔히 범하는 실수와 알려진 해결책에 대해 살펴보려고 한다. 무선 보안은 결코 사소한 문제가 아니며, 세부적으로 엄격하게 주의를 기울임으로써 무선 공격에 취약하지 않은 시스템을 설계할 수 있을 것이다.

기본 원칙

보안 문제는 무선 시스템의 문제만은 아니다. 오늘날은 크고 작은 인터넷 공격이 일상적으로 발생함으로써 대부분은 뉴스거리도 되지 않는다. 무선 시스템은 공격에 좀 더 취약하다는 인식이 자리잡고 있다. 필요한 무선 장비만 있으면 누구든 일정한 거리 내에서 무선 장비와 통신할 수 있기 때문이다.

물론 인터넷 상에서는 무선 신호가 미치는 거리보다 훨씬 더 먼 거리에서도 컴퓨터만 있으면 누구든 공격을 감행할 수 있다. 중요한 핵심은 유선이든 무선이든 모든 가상-물리 시스템(cyberphysical system)은 공격에 대해서 신중하게 사전 대책을 강구해야 한다는 것이다.

목표

WSN에서 보안의 목표는 다음과 같은 세 측면을 달성하는 것이다:

비밀성(Confidentiality)-네트워크상에서 전송되는 데이터는 지정된 수신자 이외의 누구도 읽지 못하게 하는 것이다.

무결성(Integrity)-수신된 메시지가 내용이 덧붙여지거나, 삭제되거나, 조작된 일 없이 상대방이 전송한 것과 정확하게 일치하는 것으로 알 수 있는 것이다.

신원성(Authenticity) - 특정한 송신측으로부터 왔다고 하는 메시지가 실제로 그 당사자로부터 온 것이 맞는 것이다. 신원 확인을 위한 방법의 한 부분으로서 시간을 이용하면 메시지를 기록했다가 나중에 재실행하는 공격을 막을 수 있다.

비밀성은 보안 관련 애플리케이션뿐만 아니라 모든 일상적 애플리케이션에다 필요한 것이다. 예를 들어, 장비의 센서 정보나 장비 상태에 관한 정보는 경쟁사들 사이에서 민감한 요소일 수 있다. 그러므로 오직 의도하는 수신자만 이용할 수 있도록 센서 데이터를 암호화해야 한다.

센싱 정보이든 명령 정보이든 그대로 수신되어야 한다. 센서가 “탱크 수위가 72cm이다”라고 나타내거나 컨트롤러가 “밸브를 90도 회전하라”고 지시했을 때, 이들 어느 쪽의 숫자이든 숫자 하나라도 빠져있으면 심각한 재난을 초래할 수도 있다.

메시지를 보내온 곳을 신뢰할 수 있는 것 또한 중요한 문제다. 위와 같은 두가지 형태의 메시지일 때 이러한 메시지를 악의적인 공격자가 보내온 것이라고 한다면 엄청나게 심각한 결과를 초래할 수 있다. 극단적인 예로는 “이 새로운 프로그램을 실행하시오” 같은 메시지를 보내올 수도 있다.

초래되는 결과

보안이 취약했을 경우에 초래되는 결과는 항상 예측하기 쉬운 것은 아니다.

예를 들어, 무선 온도 센서나 혹은 서모스탯은 보안이 그렇게 필요하지 않은 제품처럼 생각할 수도 있다. 하지만 신문 헤드라인에 범인들이 어떻게 무선장치를 이용해서 서모스탯의 “외출” 설정을 감지하고 집주인이 휴가를 간 사이에 물건을 훔쳤는지에 관한 기사가 실리게 된다면 제품 판매에 어떤 결과를 초래할지 생각해 보라. 그러므로 가장 정석적인 방법은 모든 데이터를 암호화하는 것이다.

ZigBee 도입 초기에는 대부분의 네트워크가 보안 없이 실행됐다. 이 때문에 많은 잠재 고객들이 지켜보는 가운데 업체간 상호운용성을 시연하는 자리에서 다수의 ZigBee 네트워크가 이상하게 작동하는 일도 있었다. 다른 네트워크로부터의 명령을 코디네이터 재정렬(coordinator realignment) 메시지로 해석해 채널을 변경하도록 만들었던 것이다. ZigBee 네트워크는 메시지가 자신의 네트워크가 아닌 장치로부터 오는 것인지 판단할 방법이 없었다.

이와 같은 최악의 동작은 실제 공격에 의한 것이 아니고 신원 확인이 이뤄지지 않음으로 인한 것으로서, 전혀 다른 네트워크로부터 들어온 패킷을 해석하게 만들었다.

산업 공정 자동화의 경우에는 공격으로 인한 결과가 잠재 고객을 잃는 것보다 훨씬 더 심각한 결과를 초래할 수 있다. 만약 제어 시스템으로 잘못된 프로세스 제어 정보가 전달되는 경우, 공격자는 물리적인 손상을 일으킬 수 있다.

예를 들어, 모터 또는 밸브 제어 장치로 데이터를 보내는 센서가 모터 속도나 탱크 수위가 너무 낮다고 지시한다면, 스턱스넷(Stuxnet)의 공격으로 원심분리기에서 일어났던 것과 같은 심각한 결함을 초래할 수 있다[Stuxnet 문헌 참조].

전적으로 실제적인 차원에서는, 성공적인 공격이 아니었고 또는 단지 학구적으로 잠재적인 취약성을 드러내고자 하는 시도였을 뿐이라고 하더라도 영업손실을 초래하고, 시급한 엔지니어링 작업이 필요하게 하고, 대외 이미지에 큰 타격을 입힐 수 있다.

이용할 수 있는 툴

다행히 보안성과 견고성이 뛰어난 무선 통신 네트워크를 구축하기 위해서 강력한 툴들을 이용할 수 있다. 이들 툴을 이용하기 위해서는 면밀하고 엄격하게 주의를 기울여야 하지만 기본적으로 크게 어렵지는 않다.

암호화와 “nonce”

가장 기본적인 암호화 툴은 블록 암호화(block cipher)이다. AES-128은 대표적인 블록 암호화로서, 16바이트 메시지(플레인텍스트)를 취하고 여기에 128비트 키를 이용해서 16바이트의 암호화 메시지(사이퍼텍스트)를 생성한다. 이 동일한 키를 알고 있으면 사이퍼텍스트를 다시 플레인텍스트로 복원할 수 있다. 이 키를 모르면 플레인텍스트를 복원할 수 없다.

AES 암호화는 소프트웨어로 간편하게 구현할 수 있으며, 통상적으로 다수의 무선 및 마이크로프로세서 칩에서 하드웨어로 제공한다. 현재까지 알려진 바로는 AES는 깰수 없는 것으로 알려져 있다. 사이퍼텍스트가 주어졌을 때 키가 없으면 어떤 방법으로도 플레인텍스트를 알 수 없다. 실제로 이 암호화 기술은 미국 국가안보국(National Security Agency)에서 기밀문서 암호화에 채택하고 있다.

WSN 보안에 관해서 보고된 모든 공격에서 어떤 경우에도 AES 암호화가 “약한 고리”였던 것으로 드러난 적은 없다.

AES-128에 있어서 유일하게 가능한 것으로 알려진 공격은 소위 말하는 “brute-force”(무작위적 암호 대입) 공격이다. 이 공격은 공격자가 모든 가능한 키를 시도해서 어느 키가 타당한 메시지를 내놓는지 알아내는 것이다. 하지만 모든 가능한 128비트 키를 시도해보는 것은 어마어마한 양의 일이다. 십억 대의 컴퓨터를 가지고, 이들 매 컴퓨터로 초당 십억 개의 키를 대입하고, 이 모든 컴퓨터를 십억 년 동안 가동한다고 하더라도, 모든 가능한 128비트 키의 약 0.1퍼센트밖에 확인하지 못한다.

그러고도 여전히 300,000,000,000,000,000,000,000,000,000,000,000,000(300 billion billion billion billion)개가 넘는 128비트 키가 남아 있다.
블록 암호화를 이용해서 전송측에서 메시지를 암호화하면 (동일한 키를 알고 있는) 수신측에서만 이 메시지를 해독할 수 있다(그림 1). 물론 메시지가 “turn the light on”이나 “turn the light off” 같이 단순한 것이라면, 메시지를 무의미해 보이는 비트 열로 암호화한다 하더라도 어떤 누군가 몇 개 메시지를 가로채서 오직 두 가지 메시지만 존재한다는 것을 금방 알아낼 수도 있다.

이 문제에 대한 해결책은 메시지 카운터를 이용해서 전송하는 매 메시지에 대해서 번호를 매기는 것이다. 암호화의 특성상 메시지 플레인텍스트가 어떻게라도 변경되면 완전히 다른 사이퍼텍스트가 되고, “Msg 1: turn the light on”과 “Msg 53: turn the light on” 같이 각기 다른 시점에 전송된 2개 메시지는 키를 가지고 있지 않은 사람에게는 전혀 다른 것으로 보이도록 만든다. 메시지 카운터를 반복하지 않는 한 사이퍼텍스트 역시 반복되지 않는다. 이와같이 절대 반복되지 않는 메시지 카운터를 “nonce”(number used once)라고 한다.

메시지 무결성 검사

메시지 무결성 검사(message integrity check = MIC 혹은 MAC = message authentication code라고도 함)는 메시지에 대한 암호화 체크섬이다. 메시지의 모든 부분들을 블록 암호화와 특정키를 이용해서 순차적으로 처리함으로써, 메시지 전송측이 전체적인 메시지에 대해서 짧은 암호화 요약을 생성할 수 있는데, 이것을 메시지 무결성 검사라고 한다. 그런 다음 이 MIC를 메시지에 첨부해서 메시지와 함께 전송한다.

수신측은 동일한 키를 이용해서 메시지에 대해서 동일한 기능을 실행해서 자체적인 MIC를 계산하고 이 결과 값이 수신한 MIC와 일치하는지 검사한다.
메시지가 비트 하나라도 어떻게든 변질되면 MIC가 달라지고, 수신측은 이 메시지를 거부하게 된다.



난수 생성기

WSN에 이용하기 위한 암호화 키를 사람이 생성할 수 있으나, 이 방법은 일반적으로 실용적이지 않고 궁극적으로 안전하지도 않다. 이상적으로는 컴퓨터에 요청해서 이용하고자 하는 키를 생성해야 한다. 누군가가 키를 짐작할 수 없도록 하려면, 난수 생성기(random number generator, RNG)가 필요하다. 일반적으로 사람들은 컴퓨터가 완벽하게 확정적으로 동작하기를 바라며 무작위적인 동작을 좋아하지 않는다.

그러므로 컴퓨터를 전적으로 무작위적이게 만드는 것은 결코 간단한 작업이 아니며, 어떤 식으로든 무언가 디지털적이지 않은 것과 상호작용을 수반한다.

다행히 무선(radio)은 본래 비-디지털적이며, 마르코니(Marconi)의 시대에서 디지털 메시지를 안정적으로 전달할 수 있는 수준까지 이르기 위해서 100년의 진화 과정이 필요했다. 잘 설계된 WSN시스템은 무선이나 또는 다른 열 잡음 소스를 RNG의 필수 부분으로 이용해서 진정한 난수를 생성할 수 있다.

액세스 제어

정식으로 입수한 장치라 하더라도 부적절하게 구축한다면, 추가적인 입력을 예상하지 못한 제어 시스템으로 혼동할 수있다. 액세스 제어 리스트(화이트리스트, 블랙리스트)를 이용함으로써 예기치 않은 장치가 네트워크를 방해하지 못하도록 추가적인 제어층을 제공할 수 있다.

흔히 하는 실수, 문제를 인식하지 못함

WSN 보안에 있어서 가장 흔히 하는 실수는 시기적으로 너무 늦어질 때까지 문제의 심각성을 파악하지 못하는 것이다.

무선 조명 제어 시스템을 보안을 하지 않고 구현 및 설치하는 것을 그렇게 큰 문제라고 생각하지 않을 수도 있다. 인근의 대학생들이 고객의 사무실 공간에서 조명 쇼를 벌이기 전까지는 말이다.

또한 보안의 중요성은 잘 인식하고 있으나, 정교한 소프트웨어 및 하드웨어툴과 기법들이 얼마나 보편적으로 사용할 수 있게 되었고, 또 실제로 공격에 적용되고 있는지에 대해서는 인식하지 못하는 경우도 있다. 많은 WSN 업체들에서 자사의 채널 호핑 프로토콜이 어떤 점에서 보안에 유용한지 여러 가지 말로 설명하고 있으나, 마치 공격자들은 다채널 리시버와 트랜스미터를 구입할 수 없다고 여기는 것 같다.

또 어떤 이들은 수백만 개 또는 수십억 개의 키라면 아무리 성공적인 공격이라도 막아내기에 충분하다고 생각하는 것 같다. 하지만 실상은 십억의 십억 개로도 충분하지 않은 것으로 확인되고 있다[DES-cracking 1998]. “brute force” 공격으로 키를 알아낼 수 있는 가능성이 있을 때는, “brute force” 시간에 비해서 아주 짧은 시간이 걸리는 키 로테이션 스케줄을 이용함으로써 평균적인 공격들을 막아낼 수 있을 것이다. 그렇다 하더라도 억세게 운 좋은 공격은 막아내지 못할 수도 있다.

공유 키와 소프트웨어 리버스 엔지니어링

적절한 암호화를 채택하고 “nonce”를 이용한다고 했을 때, 가장 단순한 시스템은 모든 암호화 동작에 단일한 공유키를 이용하는 것이다. 이 방법은 키가 비밀스럽게 유지되는 한은 문제가 없다. 하지만 문제는 키를 비밀스럽게 유지한다는 그 목표를 달성하기가 어렵다는 것이다.

극단적인 예를 들면, 최근에 한 블루투스 제어 변기/비데 콤보에 대해 취약성이 알려진 경우이다. 이 경우에는 모두 0으로 이루어진 디폴트 페어링 키를 이용했다[Trustwave]. 이것은 보안이 나빴다기보다는 차라리 보안을 하지 않은 것이나 마찬가지였다. 하지만, 아무리 훌륭한 프로토콜을 적용했다 하더라도 키를 잘못 선택하면 쓸모가 없고 무작위적인 키라 하더라도 인터넷 상에 널리 유포된다면 쓸모가 없다는 것을 잘 보여주는 사례다. 블루투스는 우수한 보안 툴을 가지고 있다. 하지만 이러한 툴을 사용하지 않는 경우, 누군가가 제품 전체의 키를 웹 상에 유포하면 그 가치를 제대로 발휘할 수 없다.

이보다 한 단계 더 나아가서, 설치하는 각각의 네트워크에 대해서 단일의 고유 키를 이용하거나 네트워크를 형성할 때마다 새로운 키를 이용할 수 있다. 우수한 난수 생성기를 이용하고 네트워크 내의 모든 하드웨어를 제어할 수 있다면, 이 방법은 문제가 되지 않는다. 하지만 네트워크 내의 어떤 한 노드가 공격을 받으면 전체 네트워크가 공격에 노출될 수 있다. 사용자가 네트워크의 노드 상에서 자신만의 소프트웨어를 작성할 수 있도록 허용돼 있으면 악의적인 사용자가 네트워크 키를 알아내는 것을 막기가 상당히 어려울 수 있다.

또한 노드 소프트웨어가 닫혀져 있다고 하더라도, 공격자가 하드웨어를 입수하고 마이크로프로세서로부터 코드를 리드아웃 하는 공격을 막아내기가 어려울 수 있다. 보안에 관련된 여러 자료들에서는 이와 같은 공격 사례들로 가득차 있다. 이 공격은 대개 이런 식이다.

정식 하드웨어를 입수하고 내부로 들어가서 코드를 읽어낸다. 코드를 리버스 엔지니어링(reverse engineering)해서 키가 어디에 저장되어 있는지 알아낸다(이것은 2개 네트워크로부터의 코드를 비교해보고 어느 비트들이 다른지 살펴보면 간단하게 알 수 있다). 이 정보를 이용해서 키를 어떻게 계산했는지 알아내거나(뒤에 나오는 “조악한 난수 생성기 사용” 부분 참조), 아니면 공격 대상의 실제 네트워크로부터 포착해서 하드웨어로부터 키를 훨씬 더 빠르게 알아낼 수 있다.

DVD(digital video disk) 보안이 바로 이와 같은 공격의 희생자가돼 왔다. 원래의 DVD CSS(Content Scrambling System)와 HD-DVD/블루레이 AACS(Advanced Access Content System)에 대해서 공격이 이루어졌다. 이들 공격은 공격자가 플레이어 코드를 검사해서 콘텐츠를 보호하는 프로세싱 키를 알아내고 유포시키는 것이었다[AACS].

그러므로 거의 예외 없이, 결연한 공격자가 하드웨어를 입수하고, 코드를 리드아웃하고, 알고리즘과 소프트웨어를 리버스 엔지니어링 할 수 있는 가능성을 염두에 두어야 한다. 그러므로 잘 설계된 보안 시스템이라면 알고리즘이나 소프트웨어가 비밀스럽게 유지되는 것에 의지하려고 하거나 어떤 장치의 키가 비밀스럽게 유지되는 것에 의지하려고 하지 않아야 한다.

공격자가 어떤한 네트워크 노드를 장악했을 때는 이 노드를 전적으로 제어할 수 있다는 것을 염두에 두어야 하고, 잘 설계된 시스템은 어떤 한 노드가 공격을 받더라도 네트워크의 나머지 부분의 보안에 영향을 미치지 않게 해야 한다.

이러한 리버스 엔지니어링 문제에 대한 가장 간단한 해결책은 모든 통신 세션(두 종단 간의 데이터 플로) 각각에 대해서 네트워크의 다른 노드들에게는 알려지지 않은 고유의 키를 이용하게 하는 것이다. 이렇게 하면 네트워크의 한 노드가 공격을 받더라도 네트워크의 다른 노드들로부터의 데이터나 명령을 엿듣거나, 조작하거나, 신원을 속이지 못하게 할 수 있다.



키 분배

적절한 프로토콜과 암호화를 이용했다고 하고, 매 단대단(end-to-end) 세션에 고유의 무작위 키를 이용하면 네트워크 통신의 비밀성, 무결성, 신원성을 보호할 수 있다(그림 2). 하지만 이렇게 하더라도 몇몇 시스템에서는 취약성을 드러낼 수 있다. 네트워크 내의 모든 노드를 향후의 모든 세션에 필요하게 될 모든 고유의 키들을 이용해서 사전에 프로그램 하기란 편리한 방법이 아니다. 그러므로 네트워크 형성 후에 키를 분배해야 한다. 그런데 어떤 시스템들에서는 초기 세션 키들을 암호화하지 않고서 전송하는 식으로 하고 있다.

오직 네트워크를 형성하는 짧은 시간 동안에만 네트워크가 공격에 취약할 것이라고 간주하는 것이다. 하지만 불행히도 공격자가 도청 장비 일체를 갖추고 네트워크 리셋이 일어날 때까지 인내심 있게 기다리거나, 아니면 또는 네트워크 컨트롤러나 게이트웨이를 파워 사이클링하거나 여타 방법으로 네트워크 리셋을 일으킬 수도 있다.

이에 대한 간단한 해결책은 제조 단계에서 네트워크의 각기 노드로 고유의 키를 설치하고, 네트워크 내의 단일의 신뢰할 수 있는 보안 매니저를 이용하고, 이 매니저로 이들 키를 제공해서 각기 노드와 보안 매니저 사이에 보안 세션이 이루어지게 하는 것이다. 그런 다음에는 보안 매니저가 모든 다른 세션에 필요한 키를 생성하고 이를 보안 채널을 통해서 관련된 각기 장치들로 전송할 수 있다.

아니면 또 다른 방법으로서, 공개 키 인프라를 이용하는 다른 툴들을 이용할 수 있다. 이들 툴은 비슷한 기능과 함께 또 다른 이점들을 제공할 수 있다[PKI].



조악한 난수 생성기 사용

보안을 중요하게 인식하고 있는 이들이라 하더라도 가장 흔히 하는 실수는 무작위성이 떨어지는 난수 생성기를 사용하는 것이다. 아무리 적절한 프로토콜과 암호화를 채택한다고 하더라도, 키를 짐작하기 어렵게 하는 만큼만 네트워크를 공격하기 어렵게 할 수 있다.

이와 관련해서 가장 흔히 하는 실수는 비-암호화 난수 생성기를 사용하거나 또는 암호화 난수 생성기이지만 시드(초기 값)가 무작위적이지 않은 난수생성기를 사용하는 것이다. 난수는 컴퓨터 과학 분야의 여러 애플리케이션에 유용하게 쓰이고 있으며, 많은 운영체제들이 내부적으로 “rand()” 함수를 포함하고 있다.

예를 들어, 애초의 UNIX rand() 함수는 내부적 32비트 상태를 유지하고, 이 현재 상태를 기반으로 다음 난수와 다음 상태를 계산했다. 사용자는 이 RNG에 32비트 숫자를 이용해서 시드를 지정할 수 있었고, 그러면 rand()를 호출할 때마다 40억 개 숫자 중에서 다음 값을 생성했다. 이 방법은 훌륭한 RNG는 아니어도 대다수 비-암호화 애플리케이션에 이용하기에 충분히 양호했다.

하지만 오늘날에는 한 대의 데스크톱 컴퓨터만으로도 모든 가능한 40억 가지 난수와 수열에서의 위치를 포함하는 테이블을 생성하는 일이 식은 죽 먹기가 됐다. 시드를 아무리 무작위적이게 하더라도 RNG 자체가 충분히 정교하지 않은 것이다.

암호화 RNG는 최소한 128비트의 훨씬 더 많은 내부 상태를 이용한다. 128비트를 이용하면 위에서 언급했듯이 10억 대의 컴퓨터로 10억 년을 계산하더라도 난수 수열에서 패턴을 거의 알아낼 수 없다. 우수한 암호화 RNG의 구현과 테스트에 관해서는 여러 문헌에서 잘 설명하고 있다[NIST].

아무리 우수한 RNG 알고리즘이라 하더라도 주어지는 시드만큼만 무작위적일 수 있다. [IOActive]에서는 두 가지 WSN보안 시스템에서 흔히 하는 실수를 지적하고 있다. 이 사례들에서는 이들 제품의 소프트웨어 바이너리를 리버스 엔지니어링함으로써 지극히 무작위적이지 않은 시드를 이용하고 있다는 것을 알아낼 수 있었다. 이들 제품은 시간 함수(초 단위)를 난수 생성기의 시드로 이용하고 있었다. 1년은 겨우 수천만 초에 불과하므로 보통의 랩톱 컴퓨터를 이용하더라도 지난 몇 십 년을 빠르게 검색해서 모든 가능한 키를 생성할 수 있다.

보안적인 네트워크

뉴스에서는 무선 보안에 실패한 사례들이 끊임없이 보도되고 있으나, 실제로 세상은 보안적으로 안전하게 작동하는 무선 네트워크들로 가득 차 있다. 안전한 네트워크는 단지 뉴스 가치가 없을 뿐이다. 위에서 살펴보았듯이 보안 네트워크는 보안적인 프로토콜과 보안적인 구현 둘 다 충족해야 한다(그림 3).

WSN에 이용하도록 잘 설계된 보안 프로토콜로는 Wireless HART와 ISA100.11a 산업 자동화 프로토콜, 그리고 ZigBee Smart Energy 프로토콜을 들수 있다. 이들 프로토콜은 모두 보안 전문가들의 전면적 심사를 거쳤으며 다수의 구현들이 마찬가지의 심사를 거쳤다.

특히 Wireless HART 프로토콜은 북극에서부터 아라비아 사막에 이르기까지 세계 모든 지역에서 구축된 주요 인프라 애플리케이션에서 보안 네트워크의 토대를 이루고 있다. 이 기술의 최종 사용자는 WSN이 허가된 종단 간에 프로세스 제어 정보를 신뢰할 수 있게 비밀을 유지하면서 제공할 것으로 확신할 수 있다. 이들 프로토콜과 이를 토대로한 구현이 철저한 분석과 테스트를 거침으로써 이들 분야의 고객과 이들 고객으로 제품을 공급하는 협력업체들이 자신들이 이용하는 네트워크를 신뢰할 수 있다.



산업 프로세스 자동화 분야에 이용되는 WSN은 애초부터 보안이 중요하다는 것을 잘 인식하고 있었으며 프로토콜과 구현으로 이 점을 잘 반영하고 있다. 특히 사물 인터넷(IoT)을 비롯해 새로운 프로토콜이 등장함에 따라 애플리케이션 환경에서 중요한 교훈들을 다시 배워야 할 수도 있을 것이다.

위의 예에서 살펴보았듯이 아직도 많은 이들이 보안이 얼마나 중요한지를 충분히 인식하지 못하고 있는 듯하다. 다행스러운 점은 인터넷 프로토콜(IP) 애플리케이션으로도 산업용 애플리케이션에서와 마찬가지로 “산업용 등급” 보안을 편리하게 달성할 수 있도록 많은 툴들이 나와 있다는 것이다. 그러한 예로는 Linear Technology의 SmarMesh IP와 새롭게 부상하는 많은 IP 표준들을 들 수 있다.

결론

무선 센서 네트워크는 보안을 잘 설계하지 않으면 심각한 결과를 초래할 수 있다. 그런데 시장에서 많은 제품들이 보안을 그렇게 중요시 하지 않고 있고, 또 어떤 경우에는 보안을 중요하게 인식하고 있기는 하나 요구되는 기준에는 미치지 못하고 있다. 그렇지만 기본적인 원칙들, 적절한 프로토콜과 암호화, 열 잡음(thermal noise)의 물리적 특성에 근본적으로 내재하는 무작위성 등을 활용함으로써 보안과 효율 둘 다 뛰어난 시스템을 설계할 수 있다.

그러한 많은 프로토콜과 구현이 등장해 있으며, 보안적으로 안전한 많은 무선 네트워크들이 세계 곳곳에서 가동되고 있다. 그 나머지 네트워크들까지도 모두 보안적으로 동작한다면 무선 센서 네트워킹 분야에 종사하는 모든 이들에게 이득이 될 것이다.


참/고/문/헌

[Stuxnet] http://spectrum.ieee.org/telecom/security/the-real-story-of-stuxnet
[DES-cracking1998] Electronic Frontier Foundation, “Cracking DES”, O’Reilly Media, 1998.
[Trustwave] https://www.trustwave.com/spiderlabs/advisories/TWSL2013-020.txt
[AACS] https://en.wikipedia.org/wiki/AACS_encryption_key_controversy
[PKI] https://en.wikipedia.org/wiki/Public_key_infrastructure
[NIST] http://csrc.nist.gov/publications/fips/fips140-2/fips1402annexc.pdf
[IOActive2013] Lucas Apa, Carlos Hollman, “Compromising Industrial Facilities from 40 miles away,” Blackhat 2013.

 

<저작권자(c)스마트앤컴퍼니. 무단전재-재배포금지>


#보안   #WSN  

  • 100자평 쓰기
  • 로그인

세미나/교육/전시
TOP