MQTT暗号化通信を解析する
それでは、まずPublisherの暗号化通信についてネットワークアナライザであるWiresharkを使ってみていきましょう。Wiresharkの使い方については『IoT時代を支えるプロトコルMQTT(前編)』をご参照ください。
それでは、まずはWiresharkを起動してパケットキャプチャを行います(図7)。
次に、先ほどのPublisherを起動し、test.mosquitto.orgの8833番ポートに「SSLあり」で接続します(図8)。
C:\test> py pub-mqtt-tls.py Connected with result code 0 message published :
ここでも、Wiresharkのパケットキャプチャが開始されてからプログラムを起動するように注意してください。
さらにWiresharkで該当するトラフィックに対してSSL/TLS通信のデコードを適用します(図9)。
これにより、解析結果からPublisherとMQTT Brokerとの間でのSSL/TLSのやり取りの内容を確認することができます(図10)。
PublisherとMQTT Brokerとの間でのSSL/TLSのやり取りのシーケンスごとに並べると、図11のようになります。
上記のようにPublisherとMQTT Brokerとは暗号化通信によりデータが保護されているのが分かります。IoT(Internet of Things)では、データ通信内容をインターネット上でやり取りすることを意図しています。PublisherおよびSubscriberへ伝搬するメッセージには、さまざまな情報が含まれることを考慮するならば、暗号化によるデータ保護を前提としてシステム設計をすると良いでしょう。
次に、MQTTシステム設計上での課題について整理していきましょう。