מה זה MQTTS?
MQTTS הוא גרסה מאובטחת של פרוטוקול התקשורת MQTT, שפועל על גבי שכבת TLS/SSL
כדי להבטיח תקשורת מוצפנת בין הלקוח (Client) לבין הברוקר (Broker).
בעוד ש־MQTT פועל כברירת מחדל על פורט 1883, הפרוטוקול MQTTS משתמש בפורט 8883 ומיישם הצפנה
באמצעות Transport Layer Security (TLS), מה שמאפשר שימוש בפרוטוקול גם בסביבות רגישות לאבטחה,
כמו מערכות רפואיות, רכב, תעשייה חכמה (Industry 4.0) ויישומי IoT ביתיים.
למה צריך את MQTTS?
MQTT תוכנן במקור לפרוטוקול קל משקל עבור מערכות מוגבלות ברוחב פס או חישוב.
אך בעידן של מתקפות סייבר, תקשורת לא מוצפנת איננה מספקת. כאן נכנס לתמונה MQTTS,
עם יכולות אבטחה הכוללות:
הצפנת המידע: באמצעות TLS המידע מוצפן end-to-end.
אימות זהות השרת והלקוח: באמצעות תעודות דיגיטליות (X.509 certificates).
שלמות הנתונים: מניעת שינוי או זיוף הודעות בתעבורה.
כיצד פועל MQTTS?
חיבור TLS/SSL:
לפני שהלקוח שולח את פקודת ה־CONNECT ל־Broker, נפתח ערוץ מוצפן באמצעות TLS.
הצדדים מבצעים מו״מ קריפטוגרפי (handshake) כדי להחליף מפתחות.
אימות השרת והלקוח:
השרת שולח תעודת TLS (SSL Certificate) ללקוח.
הלקוח יכול לאמת שהשרת הוא אכן מי שהוא טוען שהוא.
אפשרות לאימות דו־כיווני: גם הלקוח נדרש לשלוח תעודה לשרת (Client Authentication).
העברת הודעות:
לאחר השלמת ההצפנה, הפרוטוקול ממשיך לפעול לפי תקן MQTT הרגיל כולל חיבור, פרסום (publish),
הרשמה (subscribe), ושליחת הודעות.
מבנה חיבור מאובטח
Client → TCP → TLS Handshake → MQTT CONNECT → AUTH → Publish/Subscribe
MQTT מול MQTTS
| פרמטר | MQTT | MQTTS |
| פורט ברירת מחדל | 1883 | 8883 |
| הצפנה | אין | TLS (SSL) |
| אבטחת זהות | לא קיים | כן (באמצעות תעודות) |
| שימוש מועדף | רשתות פתוחות, IoT פשוט | יישומים רגישים ובטוחים |
יישומים של MQTTS
תחבורה חכמה: שליחת נתונים מוצפנים מרכבים לשרת ענן.
IoT רפואי: ניטור חולים מרחוק תוך שמירה על פרטיות.
בתים חכמים: מניעת השתלטות על רכיבים כמו מצלמות או מנעולים.
תעשייה חכמה: הגנה על מערכות SCADA ומכונות קריטיות.
קונפיגורציה בסיסית של MQTTS (דוגמה טכנית)
ב-Broker (כמו Mosquitto):
conf
listener 8883
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
require_certificate true
ב-Client (Python, Paho):
python
import paho.mqtt.client as mqtt
client = mqtt.Client()
client.tls_set(ca_certs=”ca.crt”, certfile=”client.crt”, keyfile=”client.key”)
client.connect(“broker.domain.com”, 8883)
אתגרים בשימוש ב־MQTTS
ניהול תעודות: מצריך ידע בקריפטוגרפיה ותחזוקה שוטפת.
ביצועים: TLS מוסיף עומס חישובי, מה שעלול להיות מאתגר עבור התקני IoT חלשים.
תיאום בין גורמים שונים: דרישה לסנכרון אבטחתי בין ספקים, לקוחות, שרתים, וגופים רגולטוריים.
שאלות ותשובות בנושא MQTTS
האם אפשר להשתמש ב־MQTT על TLS בפורט 443 (כמו HTTPS)?
כן, זהו פתרון מקובל לעקוף חומות אש ו־proxy. יש לכוון את ה־Broker לפורט 443 עם TLS.
האם MQTTS תומך ב־WebSocket?
כן. ניתן להריץ MQTT over WebSocket גם על חיבור TLS, כלומר MQTTS over WSS.
האם חובה להשתמש בתעודות לכל לקוח?
לא. אפשר להפעיל TLS גם בלי Client Certificate, אך ברמת אבטחה פחותה.
לאימות מלא כן, כל לקוח צריך תעודה.
האם ניתן לשלב עם OAuth2 או JWT?
כן. יש ברוקרים תומכים (כמו EMQX, HiveMQ) שמאפשרים שימוש במנגנוני אימות נוספים
מעל ל־MQTTS.

