為什么支持Oauth2.0 的郵箱更安全?
發(fā)表時(shí)間:2023-04-15 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]前段時(shí)間在貼吧“Gmail 吧”討論得比較多的可以支持Gmail的郵箱客戶端 YoMail被指不安全, 而YoMail團(tuán)隊(duì)聲明 YoMail 采用了 oAut...
前段時(shí)間在貼吧“Gmail 吧”討論得比較多的可以支持Gmail的郵箱客戶端 YoMail被指不安全, 而YoMail團(tuán)隊(duì)聲明 YoMail 采用了 oAuth2.0登錄Gmail, 采用SSL傳輸數(shù)據(jù), 可以保證用戶的密碼安全和郵件數(shù)據(jù)安全, 并且聲稱國(guó)內(nèi)大部分郵箱服務(wù)不支持oAuth2.0, 大部分郵箱客戶端(比如Foxmail)也不支持oAuth2.0, 其實(shí)是不安全的。 那么oAuth2.0到底是什么?為什么支持采用oAuth2.0驗(yàn)證的郵箱服務(wù)(如Gmail oAuth驗(yàn)證)更安全?YoMail 到底安不安全?我們接下來會(huì)做詳細(xì)解釋。
關(guān)于 oAuth2.0
你在網(wǎng)站看到一篇的文章想要分享到微信朋友朋友圈或微博, 你在某團(tuán)購網(wǎng)站網(wǎng)站上買了團(tuán)購券需要用支付寶, 這時(shí)候這些網(wǎng)站會(huì)跳出微信、微博、支持寶的登錄界面, 用戶輸入微信、微博、支持寶的用戶名密碼后完成操作。 這個(gè)過程典型的Oauth2.0的驗(yàn)證過程。 這里面有幾個(gè)步驟:
1. 用戶在第三方網(wǎng)站上連接微信的時(shí)候會(huì)被重定向到微信的登錄界面
2. 用戶接下來在微信的驗(yàn)證頁面輸入用戶名和密碼, 這個(gè)時(shí)候, 你的用戶名和密碼是在微信的網(wǎng)站上輸入的, 而不是第三方網(wǎng)站
3. 驗(yàn)證通過后, 微信會(huì)返回一個(gè)確認(rèn)界面, 這時(shí)候用戶會(huì)被告知第三方程序需要訪問用戶哪些信息, 比如昵稱、頭像、比如分享到朋友圈的權(quán)限
4. 用戶點(diǎn)接受后, 微信會(huì)返回一個(gè)二進(jìn)制 token給第三方應(yīng)用, 隨后, 第三方應(yīng)用就用這個(gè)token和微信、微博、支持寶交互
在整個(gè)過程中, 第三方應(yīng)用并沒有獲取你的關(guān)鍵信息, 如用戶名和密碼。 自oAuth誕生以來, 社交網(wǎng)絡(luò)和電子商務(wù)迎來了爆發(fā)期, 因?yàn)樗麄兲峁┝嘶趏Auth的API給第三方, 既保證了用戶的信息安全, 又給社交網(wǎng)絡(luò)和電子商務(wù)網(wǎng)站帶來巨大的流量。
電子郵件的 oAuth2.0時(shí)代
大家都知道, 用戶有時(shí)候更愿意用第三方工具訪問自己的郵箱, 如Outlook、Foxmail、郵箱大師、YoMail 等都是第三方郵箱工具, 這些工具可以訪問任何郵箱。
隨著移動(dòng)互聯(lián)網(wǎng)時(shí)代的大爆發(fā), 有大量的創(chuàng)業(yè)公司在開發(fā)各種郵箱客戶端, 如果保證這些郵箱密碼安全?oAuth2.0是答案。
目前國(guó)際郵箱大多支持 oAuth2.0 API 接口, 如 Gmail, Outlook.com等。 但國(guó)內(nèi)大多數(shù)郵箱其實(shí)還不支持 oAuth2.0登錄。 這就造成了國(guó)內(nèi)用戶對(duì)oAuth2.0很陌生, 也對(duì)創(chuàng)業(yè)公司的產(chǎn)品很恐懼。
郵箱的裸密碼時(shí)代
傳統(tǒng)模式下, IMAP(收郵件)和 SMTP (發(fā)郵件) 采了用 標(biāo)準(zhǔn)的SASL 協(xié)議驗(yàn)證身份, 用戶名和密碼都是明文(plain-text)。 采用這種明文驗(yàn)證方式, 郵件客戶端需要把用戶名密碼存在客戶端本地, 這種方式是非常不安全的。 我們發(fā)現(xiàn) Foxmail 或Outlook登錄Gmail 只支持這種不安全的驗(yàn)證方式 (密碼存儲(chǔ)在Foxmail本地), 相當(dāng)于Foxmail和Outlook獲取了你的用戶名和密碼。
明文密碼認(rèn)證方式非常不安全, 但很可惜, 國(guó)內(nèi)主流的郵箱客戶端都采用明文密碼認(rèn)證方式。
以郵件發(fā)送協(xié)議 SMTP 為例, 下圖標(biāo)明了SMTP發(fā)送郵件的全過程:
1. 連接到SMTP服務(wù)器
2. 使用 HELO 命名驗(yàn)證身份
3. 輸入base64加密的郵箱和郵箱密碼 (注:base64可輕易破解, 和明文沒有差別)
4. 發(fā)送郵件
為什么支持Oauth2.0 的郵箱更安全?
(SMTP過程)
這個(gè)過程說明了 SMTP協(xié)議每次都需要輸入郵箱密碼, 所以郵件客戶端必須保存用戶的郵箱密碼。
oAuth2.0 時(shí)代, 用戶密碼得到有效保護(hù)
Gmail API 推出SASL XOAUTH2驗(yàn)證方式。 在客戶端驗(yàn)證開始之前, 客戶端會(huì)被重定向到 Gmail 官網(wǎng)驗(yàn)證頁面。 接下來, 用戶的用戶名和密碼是在 Gmail 官方驗(yàn)證 頁面輸入的。 驗(yàn)證結(jié)會(huì)束后, Gmail給客戶端返回一串二進(jìn)制的token, 隨后客戶端采用IMAP和SMTP 收發(fā)郵件時(shí), 不需要再把密碼放在郵件頭中, 而是把這串二進(jìn)制 token 放在郵件頭中。 這就解決了第三方應(yīng)用獲取用戶郵箱密碼的問題。
Gmail Oauth2示意圖(來自Google API技術(shù)文檔)
為什么支持Oauth2.0 的郵箱更安全?
Oauth2.0 重定向登錄網(wǎng)頁, 中間路由器或代理會(huì)不會(huì)獲取用戶名密碼?
互聯(lián)網(wǎng)時(shí)間, 你的信息從電腦或手機(jī)發(fā)網(wǎng)服務(wù)器, 中間肯能或經(jīng)過代理或無數(shù)個(gè)路由器, 中間路由器或代理其實(shí)還是可以截獲二進(jìn)制數(shù)據(jù)。 那怎么解決這個(gè)問題? 答案是 SSL (安全傳輸層協(xié)議)
數(shù)據(jù)在發(fā)往服務(wù)器之前, 先對(duì)數(shù)據(jù)經(jīng)行加密, 而解密的密鑰只有目標(biāo)服務(wù)器才有。
YoMail的 “Gmail 安全登錄是什么?”
YoMail 登錄界面的 “Gmail 安全登錄” 就是 Gmail Oauth2.0 入口。 用戶點(diǎn)擊“Gmail 安全登錄”, 會(huì)被重定向到 Gmail Oauth2.0認(rèn)證界面, 接下來的幾個(gè)步驟其實(shí)和YoMail 沒什么關(guān)系, 因?yàn)檫@是用戶在和 Gmail 直接交互, 中間傳輸采用SSL, 中間代理只負(fù)責(zé)轉(zhuǎn)發(fā)二進(jìn)制數(shù)據(jù), 但無法解開經(jīng)過SSL加密的用戶數(shù)據(jù), 從而保證了用戶密碼安全。
認(rèn)證完成之后, YoMail用 Gmail 返回的Token訪問Gmail, 相反, 采用非oAuth2.0訪問Gmail需要在郵件頭中放置郵箱密碼。
SSL 保證傳輸安全
和普通傳輸方式相比, SSL方式會(huì)在傳輸前先對(duì)數(shù)據(jù)進(jìn)行機(jī)密, 然后傳輸至郵件服務(wù)器, 中間路由器或代理就算截獲二進(jìn)制數(shù)據(jù)也無法解密。
用戶使用 YoMail發(fā)送電子郵件, Gmail 或其它郵箱, 郵件首先會(huì)在用戶本地經(jīng)行SSL加密, 然后傳輸至郵件服務(wù)器, 為了連上Gmail, 中間可能會(huì)經(jīng)過路由器, 但采用SSL加密, 中間路由器是無法解密的。
但一般的郵件客戶端(如Foxmail)并沒有默認(rèn)采用SSL, 很多非技術(shù)用戶很有可能選擇了普通傳輸方式, 郵件是明文形式發(fā)送的, 中間路由器可以輕易截獲郵件數(shù)據(jù)。
總結(jié)
國(guó)內(nèi)的郵箱服務(wù)和客戶端目前還都比較落后, oAuth2.0這樣的安全認(rèn)證協(xié)議可以有效保護(hù)用戶密碼安全, 希望將來能夠普及。
Gmail是鼓勵(lì)第三方應(yīng)用采用 oAuth2.0來訪問Gmail的, YoMail的“Gmail安全登錄”其實(shí)就是采用了Gmail oAuth2.0接口, 是可以保證用戶密碼安全的;另外才傳輸層采用SSL, 保證了郵件數(shù)據(jù)安全。
來源:YoMail投稿。
上面是電腦上網(wǎng)安全的一些基礎(chǔ)常識(shí),學(xué)習(xí)了安全知識(shí),幾乎可以讓你免費(fèi)電腦中毒的煩擾。