본문으로 건너뛰기

웹소켓 및 MQTT 비교

웹과 통합된 IoT 서비스 구현에 사용되는 주요 기술과 보안 문제에 대해 소개합니다.

소통은 MQTT 브로커

20여년 전 개발된 MQTT 는 데이타 생성자(publisher)가 채널을 구독한 구독자(Subscriber)에게 발행(publish)을 하는 방식으로 정보를 전달하며, 채널정보만 서로 공유하면 분산 환경에서의 데이타 통신을 용이하게 해줍니다. 더불어 이미 약속된 메시지 전달 프로토콜을 사용하므로 브로커(Broker)역활을 하는 서버를 위해 별도의 코딩을 하지 않아도 됩니다. 게다가 저사양 디바이스들의 메시지 소통을 지원하므로 효과적인 솔류션으로 사용되고 있습니다.

웹브라우저는 웹소켓

10여년 전 개발되어 이미 모든 모던 브라우저와 서버 환경에 적용되고 있는 웹소켓(WebSocket)을 통해 서버와 브라우저 간의 양방향 실시간 통신이 가능해 졌습니다. 하지만 이름 그대로 소켓 통신 기능만 제공하므로 클라이언트들간의 메시지 소통은 직접 코딩하여 구현해 주거나 MQTT 같은 브로커를 별도로 연동하여 사용해야합니다.

IoT 와 웹브라우저 통합

IoT와 웹브라우저가 통합되는 서비스를 제공하는 서버의 경우 브라우저는 웹소켓으로 연결할 수 있으며, 디바이스는 웹소켓이나 소켓 통신으로 연결이 가능합니다. 이때 브라우저 및 디바이스들간의 소통 방법은 별도로 구현하거나 MQTT 및 기타 PubSub 기능의 서비스들을 이용 가능합니다.

대표적인 MQTT 브로커인 모스키토(Mosquitto)의 경우 웹소켓을 통한 연결 기능을 제공하며, Eclipse 의 Paho JavaScript Client 는 웹브라우저가 MQTT 브로커와 연결할 수 있도록 웹소켓을 활용하는 라이브러리를 제공하고 있습니다. 이런 방식으로 웹브라우저 환경에서 IoT기기들을 통합 및 제어해주는 사례로 Node-Red 가 있습니다. 보통은 이런 방식으로 개별 기능의 모듈 들을 서로 연동하는 방식으로 서비스를 구현하고있습니다. 모듈화는 여러 장점이 있지만 파편화로 인한 문제점도 함께 갖게됩니다.

저사양 기기의 보안 문제

위와 같은 통합 서비스를 구축할 경우 서로 분리된 모듈간에 통신이 이뤄지며 이때 중요한게 보안입니다. 문제는 웹소켓, MQTT 같은 브로커들은 보안을 전혀 고려하지 않거나 불완전한 지원을 한다는 점입니다.

가령 웹소켓은 인증 및 암호화 기능이 지원되지 않는 순수 메시지 전송 프로토콜입니다. 재밌는점은 현 시점에서 볼때 보안상 전혀 도움이 되지 않는(초기 접속시 클라이언트 hash 값 검증 같은)과정을 구현에 포함한 점입니다. 보안에 대한 구현을 고려는 했지만 실제 핵심적인 구현은 하지 않은것으로 볼 수 있습니다. 10~20년전에 개발된 기술이고, 국내 대표 웹서비스 회사들에서 HTTPS 를 도입한지 겨우 5년 정도밖에 안된 점을 고려해보면 이해가 가는 상황입니다. 다행히도 웹브라우저와 서버간의 통신의 경우는 SSL/TLS 가 적용된 HTTPS(웹소켓은 WSS)를 사용하여 보안문제를 해결할 수 있습니다.

하지만 초경량 IoT 디바이스들의 경우 SSL/TLS에 사용되는 PKI(공개키교환)연산을 감당할 수 없으므로 별도의 고사양 장치를 경유 해야만 통신 보안이 가능하며, 외부 보안 모듈의 연동의 번거로움과 비용, 복잡도 등의 이유로 사실상 보안기능을 적용하지 않는것이 현실입니다.

물론 현재는 좀더 성능이 높은 IoT 디바이스들의 경우엔 PKI 연산기능 지원이 가능한 제품이 시장에 나오고 있는 상황입니다만, 이 경우도 PKI 연산 부담 및 적용의 복잡도는 여전히 존재합니다. 더불어 현재와 미래에도 저사양 디바이스의 수요는 존재할 것이고, 이미 사용중인 저사양 디바이스들의 보안문제도 해결 할 필요성이 있습니다.

초경량 암호화 기술

위 문제의 해결에 도움이 될 수 있는 기술이 초경량 암호화 기술입니다.

크기가 작고, 자원 소모가 적어서 저사양 디바이스에서도 작동 가능한 인증 및 암호 통신을 제공하는 기술이 있다면 효과적인 솔루션이 될 수 있을 것입니다. 하지만 초경량 대칭키 암호화 통신의 경우 키교환 및 관리의 문제가 있습니다. PKI는 이 키 교환 문제를 해결 했기에 많은 곳에 적용되게 된 것입니다. 그런데 잘 생각해보면 적용 서비스에 따라서 장치간의 공개키 교환방식(PKI)이 꼭 필요하지 않거나 간접적인 방식의 키교환이 가능한 경우가 많다는 점이 중요합니다. 이런 경우 대칭키 방식 암호화 기술만으로도 원하는 역활의 수행이 가능하므로 구축 비용, 구현의 용이성, 복잡도 감소까지도 가능해집니다.

보호(Boho)

위와 같은 상황을 고려하여 리모트 시그널에는 초경량 암호화 인증과 통신기능을 제공하는 오픈소스 암호 모듈(보호:Boho)을 내장하고 있습니다. 이를 활용하면 저사양 기기도 웹브라우저와 동급의 암호화 인증, 통신을 적용할 수 있으므로 보안의 공백을 제거하여 많은 보안 문제를 해결할 수 있을것으로 기대됩니다.

필수 기능이 하나로 통합된 리모트 시그널

IOSignal_stacck