MQTT安全基礎(chǔ)-0x02基于用戶名密碼的身份認(rèn)證方式

原文: https://www.hivemq.com/blog/introducing-the-mqtt-security-fundamentals

原作: HIVEMQ

譯作: JiapengLi

上篇文章我們介紹了MQTT安全的一些非常基本的概念. 今天的這篇文章將繼續(xù)深入細(xì)節(jié), 從MQTT身份認(rèn)證開(kāi)始.

身份認(rèn)證是MQTT傳輸層和應(yīng)用層安全的一部分. 在傳輸層, TLS可以用客戶端證書(shū)的方式保證客戶端到服務(wù)器的身份認(rèn)證, 并且用驗(yàn)證服務(wù)器證書(shū)的方式保證服務(wù)器到客戶端的身份認(rèn)證. 在應(yīng)用層, MQTT協(xié)議提供用戶名和密碼的方式進(jìn)行身份驗(yàn)證. 各種MQTT代理服務(wù)器會(huì)在用戶名密碼認(rèn)證方式之上添加不同的機(jī)制去實(shí)現(xiàn). 本文將概述身份認(rèn)證的一般情況以及MQTT協(xié)議本身內(nèi)置了哪些功能. 后續(xù)文章還會(huì)繼續(xù)給出MQTT代理的身份認(rèn)證方法.

身份認(rèn)證

身份認(rèn)證是確認(rèn)單個(gè)數(shù)據(jù)或?qū)嶓w屬性的真相的行為。
摘自 Wikipedia

也就是說(shuō)身份認(rèn)證被用來(lái)驗(yàn)證人, 設(shè)備或者應(yīng)用程序確實(shí)具備其聲稱的身份.

旅行這一情境下呈現(xiàn)了上述概念的一個(gè)簡(jiǎn)單例子. 在上飛機(jī)之前, 機(jī)場(chǎng)安保人員會(huì)讓旅客出示護(hù)照或者身份證. 出示所請(qǐng)求的證件證明作為個(gè)人身份. 在這種情況下, 護(hù)照將確認(rèn)該旅客的身份和姓名. 每個(gè)人都可以說(shuō)出旅客的名字, 但是只有旅客本人能出示他的護(hù)照并成功完成身份信息的認(rèn)證.

身份認(rèn)證其實(shí)是一個(gè)我們每天都在使用但是確很容易忽視的一個(gè)流程. 例如, 登陸計(jì)算機(jī)需要輸入正確的用戶名和密碼, 用戶名其實(shí)就是身份信息, 密碼用來(lái)證明此用戶是合法所有者.

MQTT基于用戶名密碼的認(rèn)證方式

在MQTT中進(jìn)行身份認(rèn)證時(shí), 協(xié)議本身會(huì)在CONNECT消息中提供用戶名和密碼字段. 因此當(dāng)客戶端可以在與MQTT代理建立連接時(shí)發(fā)送用戶名和密碼. (更多細(xì)節(jié)請(qǐng)參考 MQTT Essential Part 3: Establishing an MQTT connection)

image

用戶名是一個(gè)以UTF-8編碼的字符串, 密碼是一個(gè)二進(jìn)制數(shù)據(jù)流, 二者最長(zhǎng)都不得超過(guò)65535. MQTT 3.1協(xié)議中有一個(gè)關(guān)于密碼最短12個(gè)字節(jié)的建議, 但是在MQTT V3.1.1中移除了. 并且MQTT V3.1.1也聲明沒(méi)用密碼的用戶名同樣合法. 但是需要注意沒(méi)有用戶名的密碼是非法的.

image

當(dāng)使用MQTT內(nèi)建的用戶名/密碼身份認(rèn)證方式時(shí), MQTT代理會(huì)根據(jù)本身所實(shí)現(xiàn)的身份認(rèn)證的機(jī)制對(duì)接收到的用戶名/密碼對(duì)做鑒權(quán)(下一篇文章有更詳細(xì)的介紹), 完成后返回下述返回代碼. ( MQTT Essential Part 3: Establishing an MQTT connection 中有完整的返回代碼說(shuō)明).

返回值 / Return Code 返回值含義 / Return Code Response
0 連接成功
4 連接失敗, 用戶名或密碼錯(cuò)誤
5 連接被拒絕, 未授權(quán)

客戶端設(shè)置的用戶名和密碼會(huì)以明文的方式發(fā)送給MQTT代理. 這將允許攻擊者竊聽(tīng), 并且獲取證書(shū)的方法并不復(fù)雜. 確保用戶名和密碼傳輸百分百安全的唯一方法是使用傳輸層加密.

這就是MQTT身份認(rèn)證相關(guān)的第一部分, 下一篇文章我們來(lái)聊一聊MQTT代理服務(wù)器方面如何通過(guò)驗(yàn)證客戶端的用戶名密碼或其他屬性來(lái)實(shí)現(xiàn)身份認(rèn)證的不同方法.

譯注

  • 本文將Authentication翻譯為身份認(rèn)證
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容