談電子郵件和即時(shí)通訊
作者:macs
即時(shí)通訊(IM)到底能不能取代電子郵件?這是個(gè)很有意思的問(wèn)題,已經(jīng)討論了很長(zhǎng)的時(shí)間,但是也沒(méi)有結(jié)果。在這篇文章中,我來(lái)談?wù)勎业目捶ā?/p>
電子郵件和IM的架構(gòu)
郵件通過(guò)SMTP協(xié)議傳到發(fā)送方的服務(wù)器,之后發(fā)送方服務(wù)器把郵件發(fā)送至接收方服務(wù)器,接收方從服務(wù)器上用IMAP協(xié)議取回郵件。
電子郵件是去中心化的,用戶可以選擇不同的服務(wù)器,而且不同服務(wù)器的用戶之間可以通信。這種協(xié)議被成為聯(lián)邦式(federated)協(xié)議。
一般人談IM的時(shí)候,認(rèn)為IM是中心化的,典型的例子有QQ、微信、Telegram、WhatsApp等等,但是除了這些之外,還有去中心化的IM.
去中心化的IM可以分為3種。
一種是類似IRC、MatterMost這類自托管服務(wù),服務(wù)可以運(yùn)行在不同的服務(wù)器上,用戶可以用一個(gè)服務(wù)器上的服務(wù),但是不同服務(wù)器間的用戶不能直接通信。這類服務(wù)相對(duì)中心化服務(wù)的優(yōu)點(diǎn)是數(shù)據(jù)和用戶信息可以存放在一個(gè)用戶選擇的服務(wù)器上,避免大企業(yè)或監(jiān)控部門(mén)窺探用戶隱私,適合企業(yè)使用。
一種是和郵件類似的聯(lián)邦式服務(wù),XMPP和Matrix都是聯(lián)邦式的IM協(xié)議,比較接近現(xiàn)代IM的特點(diǎn)。
還有一種是P2P的服務(wù),如Tox和GNU Ring.P2P的服務(wù)雖然也有服務(wù)器,但它們是只用于幫助用戶發(fā)現(xiàn)其他用戶。一旦用戶找到通信的另一方,通信數(shù)據(jù)直接在通信雙方之間傳送,不經(jīng)過(guò)服務(wù)器。
郵件列表和群聊
之前提到的用法都是一對(duì)一的通信,沒(méi)有提到群聊的問(wèn)題。這里簡(jiǎn)單地談?wù)勲娮余]件和IM的群聊的特點(diǎn)。
電子郵件的群聊最為靈活,用戶可以指定多個(gè)收件人,還可以指定Reply-to字段讓接收方回復(fù)到特定地址,指定CC和BCC字段設(shè)置抄送。特別的,BCC字段可以對(duì)接收方隱藏發(fā)送方的其他收件人,當(dāng)然,這個(gè)前提是服務(wù)器不泄漏相關(guān)信息。通過(guò)在郵件中指定多個(gè)收件人,可以實(shí)現(xiàn)郵件的群聊,而且這個(gè)群聊沒(méi)有中心服務(wù)器,和Matrix的聊天室是一樣的。
電子郵件實(shí)現(xiàn)群聊的另一方式是郵件列表,郵件列表有中心服務(wù)器。郵件列表的使用方式和論壇類似,郵件列表有一個(gè)地址,用戶把郵件發(fā)送到郵件列表的地址,之后訂閱了郵件列表的用戶會(huì)收到列表中的新郵件。在郵件列表中回復(fù)郵件,相當(dāng)于論壇里面的回帖操作。從架構(gòu)上看,郵件列表和XMPP的MUC比較相似,聊天室在一個(gè)中心服務(wù)器上,這個(gè)服務(wù)器負(fù)責(zé)了所有消息的轉(zhuǎn)發(fā)。
而IM群聊的架構(gòu)基本上就分為以上兩類。聯(lián)邦式IM的聊天室——Matrix聊天室和XMPP MUC,在上文已經(jīng)提及。中心化IM的聊天室顯然也在中心服務(wù)器上,而P2P的IM協(xié)議的群聊則是完全地去中心化。
消息存儲(chǔ)
電子郵件的協(xié)議讓郵件服務(wù)器存儲(chǔ)所有的消息,除非用戶刪除或數(shù)據(jù)量超過(guò)了限制,這確保了用戶可以隨時(shí)收到消息。
早期的IM并不存儲(chǔ)消息。從即時(shí)通信的使用場(chǎng)景看,大多數(shù)消息也不需要長(zhǎng)期存儲(chǔ)。但是現(xiàn)代IM都有消息存儲(chǔ)的特性。
Matrix協(xié)議的設(shè)計(jì)是讓服務(wù)器長(zhǎng)期存儲(chǔ)消息,讓用戶可以獲取甚至搜索歷史消息,在多設(shè)備的情形下可以讓所有設(shè)備都看到歷史記錄(甚至是已加密的歷史記錄)。而XMPP的消息存檔(Message Archive Management, MAM)可以讓服務(wù)器存放一定量的消息,但不是長(zhǎng)期存儲(chǔ),主要還是用于少量的離線消息和應(yīng)對(duì)網(wǎng)絡(luò)不穩(wěn)定的情況。
至于P2P的IM協(xié)議,由于無(wú)服務(wù)器,存儲(chǔ)消息比較困難,而且離線消息也不易實(shí)現(xiàn)。
端到端加密
由于用戶越來(lái)越重視隱私,端到端加密是現(xiàn)代IM重點(diǎn)宣傳的特性之一。
電子郵件的主要的端到端加密方式是OpenPGP,它已經(jīng)用了很多年,現(xiàn)在仍然流行。OpenPGP使用公鑰加密和對(duì)稱密碼確保數(shù)據(jù)的保密性,用數(shù)字簽名確保數(shù)據(jù)的完整性和發(fā)送方驗(yàn)證,數(shù)字簽名具有不可否認(rèn)性。
由于OpenPGP的公鑰加密中,每次加密的加密密鑰都是收件人的公鑰,一旦對(duì)應(yīng)的私鑰泄漏或被破解,則所有用該密鑰加密的消息都會(huì)被解密。因此,也有黑客做有前向安全(forward secrecy)的郵件加密方案。 opmsg 和短信應(yīng)用 silence 是具有前向安全的郵件或類似通信方式的加密方案。
即時(shí)通信的端到端加密經(jīng)過(guò)了幾代發(fā)展。最早的OTR使用密鑰交換實(shí)現(xiàn)前向安全和未來(lái)安全(future secrecy),同時(shí)OTR提出IM的端到端加密應(yīng)當(dāng)在保證完整性的同時(shí)做到可否認(rèn),因此使用基于對(duì)稱密碼的消息驗(yàn)證碼(Message Authentication Code, MAC),而不是數(shù)字簽名,來(lái)實(shí)現(xiàn)完整性。而SCIMP使用基于散列迭代的方式產(chǎn)生加密密鑰實(shí)現(xiàn)前向安全。Open Whisper Systems 將兩種密鑰產(chǎn)生方式結(jié)合,創(chuàng)造了 Double Ratchet 算法?,F(xiàn)代的端到端加密算法大多基于 Double Ratchet 算法。而端到端加密的可否認(rèn)性從OTR單純使用對(duì)稱密鑰,到Open Whisper Systems的3DH,再到OTRv4的DAKE,在不斷地改進(jìn)。
電子郵件和IM的用戶接口
電子郵件的一般用法是,用戶填寫(xiě)收件方地址、主題和內(nèi)容,然后發(fā)送。電子郵件的用法比IM要靈活很多:
- 電子郵件可以按主題分類管理。當(dāng)然了,IM也可以,但是需要根據(jù)不同主題創(chuàng)建多個(gè)聊天室。
- 如果是討論一個(gè)領(lǐng)域下的多個(gè)主題,那么郵件列表很方便,IM則無(wú)法應(yīng)對(duì)一個(gè)群體討論中不斷有不同的人發(fā)起新主題的情況。郵件列表的消息歸檔更是IM很難做到的。
- 電子郵件可以很方便地指定多個(gè)收件人進(jìn)行群發(fā),可以選擇性地讓收件人看到這封郵件的一部分收件人。這點(diǎn)IM做不到,同時(shí)開(kāi)多個(gè)私聊的話,每個(gè)接收方都只能看到發(fā)送方;群聊的話,所有人都能看到參與討論的所有人,并且回復(fù)消息也是對(duì)群里所有人,而不能只回復(fù)給部分人。
但是電子郵件的靈活性,也使得操作更為復(fù)雜,對(duì)于簡(jiǎn)短的消息,IM的發(fā)送比電子郵件要快。
有的郵件客戶端,通過(guò)設(shè)計(jì)一個(gè)用戶界面,使得電子郵件擁有類似IM的操作方式,并且讓用戶不必為了有IM的體驗(yàn)而申請(qǐng)一個(gè)IM的帳號(hào)。
其他
從使用習(xí)慣上來(lái)看,雖然電子郵件和IM都能發(fā)送各種長(zhǎng)度的消息,但是短消息通常使用IM,長(zhǎng)消息或者不需要得到立即回復(fù)的消息通常使用郵件,并且郵件的寫(xiě)法比較正式。
大多數(shù)即時(shí)通訊服務(wù)有聯(lián)系人/好友系統(tǒng),通過(guò)認(rèn)證才能發(fā)送消息,這在一定程度上避免了垃圾郵件的問(wèn)題。
使用建議
由于電子郵件的靈活性,我認(rèn)為IM還不能取代電子郵件。同時(shí),由于目前電子郵件服務(wù)的普遍部署,用戶通常使用中心化的IM服務(wù),在正式的工作中,用電子郵件也更合適。而IM的操作更加簡(jiǎn)潔,它很適合簡(jiǎn)短的交流,它可以作為電子郵件的一個(gè)很好的補(bǔ)充。
對(duì)于IM服務(wù)的選擇,我選擇聯(lián)邦式的XMPP和Matrix,它們都是開(kāi)放協(xié)議,客戶端和服務(wù)器都有自由軟件實(shí)現(xiàn)。在公共聊天中,P2P的協(xié)議隱私性最好,但是沒(méi)有消息存儲(chǔ),實(shí)用性不太好,可以作為一種聯(lián)系方式的補(bǔ)充。中心化服務(wù)中,Telegram有自由軟件客戶端,可以使用,但是有被封鎖和服務(wù)被強(qiáng)制關(guān)停的風(fēng)險(xiǎn)。沒(méi)有自由軟件客戶端的IM不要使用。
端到端加密功能在現(xiàn)代的通信中越來(lái)越重要,無(wú)論是使用郵件還是任何一種IM,如果可能的話,在非公開(kāi)聊天中盡量啟用端到端加密。即使不能及時(shí)驗(yàn)證密鑰和用戶身份的對(duì)應(yīng)關(guān)系,使用端到端加密也能防止被動(dòng)監(jiān)聽(tīng)。