2016.12.27

기고 | 제조사와 개발자가 IoT 보안을 해결할 방법

Thomas Fischer | Network World
* 본 기고문은 벤더가 작성한 것으로 네트워크 월드 편집진의 수정을 거쳤지만 일부 벤더의 시각이 남아 있을 수 있다.

IoT 기기 제조사는 기기를 안전하게 보호해야 하는 부담을 늘 안고 있다. 취약점이 악용될 때 수정 프로그램을 찾아야 하는 책임은 제품 제조사와 개발자에 있다. 이런 일이 발생하면, 제조사와 개발자는 어떻게 해결해야 할까?



지난 몇 년간 IoT 기술이 급성장했다. 새로운 솔루션들이 등장했고, 전례 없이 빠른 속도로 기술이 도입되었다. 가트너는 올해 말까지 IoT 기기 수가 40억 개를 넘어서고, 2020년에는 200억 개로 늘어난다고 전망했다. 올 한 해에만 대기업은 연결 기기에 8,680억 달러 이상을 투자해 이 성장을 견인하고 있다. 이런 가운데 IoT의 영향과 위험도 명백해지고 있다.

아직 초창기이기는 하지만, IoT는 이미 보안과 관련된 평판이 나쁘다. 악성코드에 감염된 수백만 대의 IoT 기기들로 구성된 봇넷이 DNS 공급업체인 Dyn과 수백 웹사이트를 붕괴시킨 DDoS 공격 사고가 발생하기 전부터, 보안 전문가들은 보안에 문제가 많은 연결된 기기가 증가하는 것을 크게 걱정했었다. 이런 공격은 공급업체들이 스마트 기기에 대한 수요 폭증을 충족하기 위해 시장화를 서두르면서 보안을 덜 중요하게 여긴 결과다. 소비자들은 IoT 제품에 열광하고 있지만, 이들 제품이 초래할 수 있는 보안 위험은 잘 모른다.

연결된 기기를 안전하게 만들어야 하는 책임, 즉 취약점이 노출됐을 때 이를 바로잡을 책임은 제품 제조사와 소프트웨어 개발자에게 있다. IoT 기술을 개발하는 조직은 제품이 최종 사용자의 보안이나 개인정보 보호에 어떠한 위험도 초래하지 않도록 만들어야 한다. 다음은 이들 기업이 사용자 위험을 최소화하고, 보안을 강화하기 위해 주력해야 할 부분이다.

• 물리적 안전(보안) – 연결된 기기는 물리적 안전(보안)이 매우 중요하다. 개발자는 처음부터 기기 부품을 조작하지 못하도록 만드는 기법을 적용해야 한다. 이렇게 해야 디코딩을 막을 수 있다. 또 개인 데이터가 악용되는 것을 막기 위해 기기가 침해되었을 때 인증, 식별 코드, 계정 정보와 관련된 기기 데이터가 삭제되도록 만들어야 한다. 기기에 PII(개인식별 정보)가 저장되어 있다면 원격 삭제 기능을 도입해야 한다.

• 백도어가 없는 구조 – 백도어가 있는 기기를 만들고 싶을 수 있다. 감시나 법 준수 측면에서 유용한 시기가 있을 수 있기 때문이다. 그러나 그렇게 해서는 안 된다. 최종 사용자의 안전과 보안을 훼손할 수 있기 때문이다. 제조사는 악성코드나 백도어가 도입되지 않도록 전력을 기울여야 한다. 또 UDID가 복제, 모니터링, 캡처 되지 않도록 만들어야 한다. 이렇게 하면 기기가 온라인에 등록될 때 프로세스가 캡처 되는 것을 막을 수 있다. 또 가로채기, 감시, 부당한 모니터링에 취약한 상태가 되지 않는다.

• 안전한 코딩 – IoT개발자들은 시큐어 코딩(보안 코딩)을 도입하고, 소프트웨어 개발 프로세스의 일부로 기기에 적용해야 한다. 개발 과정에 QA와 취약점 파악/수정에 초점을 맞추면 훨씬 쉽게 보안을 적용하고, 위험을 낮출 수 있다.

• 인증과 기기 ID – 각 기기 ID를 적절하면서도 안전하게 인증하면 기기와 백엔드 제어 시스템, 관리 콘솔을 안전하게 연결할 수 있다. 모든 기기가 고유 ID를 가진 경우, 조직은 통신하는 기기가 진짜 그 기기인지 파악해야 한다. 이를 위해서는 PKI 같은 솔루션을 이용해 개별 기기를 식별해야 한다.

• 암호화 – 조직은 IoT 솔루션을 이용할 때, 기기와 백엔드 서버의 트래픽을 암호화해야 한다. 명령을 암호화하고, 서명이나 튼튼한 인코딩으로 명령의 무결성을 확인하는 것이 아주 중요하다. IoT 기기가 수집하는 요주의 사용자 데이터도 암호화해야 한다.

• 업데이트 프로세스 단순화 – 기기 업그레이드를 단순하게 만들어야 한다. 그래야 쉽게 버그나 보안 업데이트를 적용할 수 있다. 처음부터 올바르게 구성하지 않으면, 펌웨어 업데이트가 복잡해질 수 있다. 불행히도 한 번만 쓸 수 있는 메모리를 이용해, 펌웨어를 업데이트할 수 없는 기기를 만드는 제조사가 있다. 과거에는 경제적인 방법을 선호했다. 비용 효과적으로 쉽게 통합할 수 있고, 동시에 기기에 다른 OS를 덮어쓰는 문제를 방지할 수 있다고 생각했기 때문이다. 그러나 유연하게 펌웨어를 배포할 수 있는 프로세스의 중요성이 높아졌다. 개발자가 새 모델을 개발하면서 모든 제품에 보안 수정을 배포할 수 있는 방식이기 때문이다.


IoT는 곧 우리 일상 구석구석에 스며들 것이다. 소비자에게 영향을 미치는 IoT 관련 침해 및 데이터 유출 사고가 증가할수록 제품 보안에 대한 압력도 높아질 것이다. 연결 기술 제공자들은 위에서 소개한 방법을 적용, 갈수록 경쟁이 치열해지는 IoT 시장에서 계속 경쟁력을 유지할 수 있다. 소비자들이 기기 보안을 중요하게 고려할 것이기 때문이다.

*Thomas Fischer는 디지털 가디언(Digital Guardian)에서 위협을 담당하는 수석 연구원이다. ciokr@idg.co.kr
 
2016.12.27

기고 | 제조사와 개발자가 IoT 보안을 해결할 방법

Thomas Fischer | Network World
* 본 기고문은 벤더가 작성한 것으로 네트워크 월드 편집진의 수정을 거쳤지만 일부 벤더의 시각이 남아 있을 수 있다.

IoT 기기 제조사는 기기를 안전하게 보호해야 하는 부담을 늘 안고 있다. 취약점이 악용될 때 수정 프로그램을 찾아야 하는 책임은 제품 제조사와 개발자에 있다. 이런 일이 발생하면, 제조사와 개발자는 어떻게 해결해야 할까?



지난 몇 년간 IoT 기술이 급성장했다. 새로운 솔루션들이 등장했고, 전례 없이 빠른 속도로 기술이 도입되었다. 가트너는 올해 말까지 IoT 기기 수가 40억 개를 넘어서고, 2020년에는 200억 개로 늘어난다고 전망했다. 올 한 해에만 대기업은 연결 기기에 8,680억 달러 이상을 투자해 이 성장을 견인하고 있다. 이런 가운데 IoT의 영향과 위험도 명백해지고 있다.

아직 초창기이기는 하지만, IoT는 이미 보안과 관련된 평판이 나쁘다. 악성코드에 감염된 수백만 대의 IoT 기기들로 구성된 봇넷이 DNS 공급업체인 Dyn과 수백 웹사이트를 붕괴시킨 DDoS 공격 사고가 발생하기 전부터, 보안 전문가들은 보안에 문제가 많은 연결된 기기가 증가하는 것을 크게 걱정했었다. 이런 공격은 공급업체들이 스마트 기기에 대한 수요 폭증을 충족하기 위해 시장화를 서두르면서 보안을 덜 중요하게 여긴 결과다. 소비자들은 IoT 제품에 열광하고 있지만, 이들 제품이 초래할 수 있는 보안 위험은 잘 모른다.

연결된 기기를 안전하게 만들어야 하는 책임, 즉 취약점이 노출됐을 때 이를 바로잡을 책임은 제품 제조사와 소프트웨어 개발자에게 있다. IoT 기술을 개발하는 조직은 제품이 최종 사용자의 보안이나 개인정보 보호에 어떠한 위험도 초래하지 않도록 만들어야 한다. 다음은 이들 기업이 사용자 위험을 최소화하고, 보안을 강화하기 위해 주력해야 할 부분이다.

• 물리적 안전(보안) – 연결된 기기는 물리적 안전(보안)이 매우 중요하다. 개발자는 처음부터 기기 부품을 조작하지 못하도록 만드는 기법을 적용해야 한다. 이렇게 해야 디코딩을 막을 수 있다. 또 개인 데이터가 악용되는 것을 막기 위해 기기가 침해되었을 때 인증, 식별 코드, 계정 정보와 관련된 기기 데이터가 삭제되도록 만들어야 한다. 기기에 PII(개인식별 정보)가 저장되어 있다면 원격 삭제 기능을 도입해야 한다.

• 백도어가 없는 구조 – 백도어가 있는 기기를 만들고 싶을 수 있다. 감시나 법 준수 측면에서 유용한 시기가 있을 수 있기 때문이다. 그러나 그렇게 해서는 안 된다. 최종 사용자의 안전과 보안을 훼손할 수 있기 때문이다. 제조사는 악성코드나 백도어가 도입되지 않도록 전력을 기울여야 한다. 또 UDID가 복제, 모니터링, 캡처 되지 않도록 만들어야 한다. 이렇게 하면 기기가 온라인에 등록될 때 프로세스가 캡처 되는 것을 막을 수 있다. 또 가로채기, 감시, 부당한 모니터링에 취약한 상태가 되지 않는다.

• 안전한 코딩 – IoT개발자들은 시큐어 코딩(보안 코딩)을 도입하고, 소프트웨어 개발 프로세스의 일부로 기기에 적용해야 한다. 개발 과정에 QA와 취약점 파악/수정에 초점을 맞추면 훨씬 쉽게 보안을 적용하고, 위험을 낮출 수 있다.

• 인증과 기기 ID – 각 기기 ID를 적절하면서도 안전하게 인증하면 기기와 백엔드 제어 시스템, 관리 콘솔을 안전하게 연결할 수 있다. 모든 기기가 고유 ID를 가진 경우, 조직은 통신하는 기기가 진짜 그 기기인지 파악해야 한다. 이를 위해서는 PKI 같은 솔루션을 이용해 개별 기기를 식별해야 한다.

• 암호화 – 조직은 IoT 솔루션을 이용할 때, 기기와 백엔드 서버의 트래픽을 암호화해야 한다. 명령을 암호화하고, 서명이나 튼튼한 인코딩으로 명령의 무결성을 확인하는 것이 아주 중요하다. IoT 기기가 수집하는 요주의 사용자 데이터도 암호화해야 한다.

• 업데이트 프로세스 단순화 – 기기 업그레이드를 단순하게 만들어야 한다. 그래야 쉽게 버그나 보안 업데이트를 적용할 수 있다. 처음부터 올바르게 구성하지 않으면, 펌웨어 업데이트가 복잡해질 수 있다. 불행히도 한 번만 쓸 수 있는 메모리를 이용해, 펌웨어를 업데이트할 수 없는 기기를 만드는 제조사가 있다. 과거에는 경제적인 방법을 선호했다. 비용 효과적으로 쉽게 통합할 수 있고, 동시에 기기에 다른 OS를 덮어쓰는 문제를 방지할 수 있다고 생각했기 때문이다. 그러나 유연하게 펌웨어를 배포할 수 있는 프로세스의 중요성이 높아졌다. 개발자가 새 모델을 개발하면서 모든 제품에 보안 수정을 배포할 수 있는 방식이기 때문이다.


IoT는 곧 우리 일상 구석구석에 스며들 것이다. 소비자에게 영향을 미치는 IoT 관련 침해 및 데이터 유출 사고가 증가할수록 제품 보안에 대한 압력도 높아질 것이다. 연결 기술 제공자들은 위에서 소개한 방법을 적용, 갈수록 경쟁이 치열해지는 IoT 시장에서 계속 경쟁력을 유지할 수 있다. 소비자들이 기기 보안을 중요하게 고려할 것이기 때문이다.

*Thomas Fischer는 디지털 가디언(Digital Guardian)에서 위협을 담당하는 수석 연구원이다. ciokr@idg.co.kr
 
X