端對端加密(E2EE)-參考文章
早在上世紀(jì),舊金山開始了一場叫“Cypherpunk(密碼朋克)”的運動速种,由一群追求自由、崇尚代碼的天才極客和密碼學(xué)精英組成配阵,包括維基解密的創(chuàng)始人阿桑奇示血、萬維網(wǎng)的發(fā)明者Tim Berners-Lee、比特幣之父中本聰都是其中成員难审。Cypherpunks只做一件事情:使用強加密算法來保護個人信息和隱私免受攻擊。他們追求極限的隱私告喊,在網(wǎng)絡(luò)中幾乎“隱形”。在他們不斷的實踐和創(chuàng)造中黔姜,密碼學(xué)得到了快速的應(yīng)用和發(fā)展,特別在通訊領(lǐng)域沉淀了很多優(yōu)秀的技術(shù)和產(chǎn)品秆吵。
本姜在Cypherpunks的通訊世界里面逛了一圈后五慈,研究了十幾個加密通訊應(yīng)用,總結(jié)出一些描述一個安全的隱私加密通訊應(yīng)用應(yīng)該考核的維度泻拦,包含兩個角度:1.有多安全? 2.提供什么程度的隱私聪轿。
安全性
使用公認(rèn)安全的加密通訊協(xié)議?
在即時通訊協(xié)議中進行加密陆错,保證除了發(fā)送者和接收者之外沒有任何第三方可以竊聽數(shù)據(jù),安全的實現(xiàn)方式只有E2EE(End-to-End Encryption音瓷,端到端加密),主要以非對稱加密的方式實現(xiàn)無風(fēng)險的數(shù)據(jù)加密傳輸绳慎,連傳輸服務(wù)器也不能知道傳輸?shù)膬?nèi)容。
在E2EE的實現(xiàn)中杏愤,不同的應(yīng)用有不同的方案,而安全的代碼實現(xiàn)才是前提和保障珊楼,通常我們希望應(yīng)用使用公認(rèn)安全的E2EE協(xié)議而不是自創(chuàng)協(xié)議。經(jīng)過多年的發(fā)展和驗證厕宗,公認(rèn)安全的E2EE通訊協(xié)議主要有:OTC堕担,OMEMO,OpenPGP霹购,Signal Protocol 等。
E2EE是否為默認(rèn)厕鹃?
默認(rèn)開啟E2EE加密是一個合格的加密通訊應(yīng)用最起碼的標(biāo)準(zhǔn)。Telegram常常因為沒有默認(rèn)開啟E2EE而收到隱私性的詬病——當(dāng)你直接使用Telegram時你的聊天數(shù)據(jù)是以明文的形式保存在服務(wù)器的剂碴。
如果E2EE不是默認(rèn)的轻专,那你必需要求你的聯(lián)系人也打開E2EE通訊,而且經(jīng)過檢測確認(rèn)雙方開啟后请垛,你們的聊天才是安全的,非常不暢快宗收。
有去中心化的服務(wù)器?
中心化的服務(wù)器對于安全穩(wěn)定隱私通訊服務(wù)的來說是一個脆弱點混稽。中心化的服務(wù)器不但存在單點故障的風(fēng)險,還大大的降低了隱私性匈勋。一般中心化的服務(wù)器會儲存用戶的聊天數(shù)據(jù)和個人數(shù)據(jù),這樣一來洽洁,一旦服務(wù)器被和諧了,或者屈服于某些權(quán)力組織饿自,或者被黑客攻擊了,這個應(yīng)用和你的數(shù)據(jù)就不安全了昭雌。
服務(wù)器是否儲存聊天數(shù)據(jù)、用戶信息城豁、密鑰抄课?
最安全的做法是不儲存任何的用戶數(shù)據(jù)唱星。但是為了提高易用性,很多應(yīng)用都會儲存用戶的聊天數(shù)據(jù)间聊,這樣做對用戶來說唯一的好處是可以實現(xiàn)多設(shè)備實時同步聊天。另外哎榴,為了能讓用戶即時獲取聯(lián)系人的最新信息,比如在線狀態(tài)尚蝌、實時個人資料,很多應(yīng)用都會在服務(wù)器保存用戶信息飘言,這樣一來,就算服務(wù)器不知道你的聊天內(nèi)容姿鸿,也會知道你在跟誰什么時候聊天,其實是非常不隱私的苛预。為了增加安全性,很多應(yīng)用會選擇將用戶數(shù)據(jù)加密保存热某,但是又為了用戶方便好用腻菇,服務(wù)器又會代替用戶持有了私鑰或者密碼進行解密,這是非常不安全的昔馋。
是否開源?代碼是否經(jīng)過審查绒极?
是否開源是一個很重要的安全標(biāo)準(zhǔn)。一句話說垄提,開源可以讓大家查證官方所介紹的功能是否完全執(zhí)行在代碼里面。如果不開源铡俐,那么用戶就必需相信官方的“人品”,相信官方不會作惡审丘。官方到底靠不靠譜,見仁見智。WhatsApp是Facebook的產(chǎn)品锅知,你敢不敢用?
另外還會有一些第三方安全審計公司售睹,專門給企業(yè)應(yīng)用的產(chǎn)品做安全性檢測,然后給出權(quán)威性的審查報告昌妹。如果代碼是開源而且每次更新都經(jīng)過專業(yè)審查的,那可以算是很安全了飞崖。
用戶是否能驗證通訊安全?
客戶端應(yīng)該有自主檢測通訊安全的能力固歪。這里包括好幾方面的安全:客戶端是否為最新版(使用舊版本很可能會存在漏洞),服務(wù)器是否被黑昼牛,數(shù)據(jù)傳輸過程中自己是否被釣魚,對方是否開啟加密通訊等贰健。
如果以上這幾點都做好了,那么可以認(rèn)為這個產(chǎn)品提供了非常安全的點對點加密通訊功能伶椿。
隱私性
抗審查的身份體系
在說到抗審查的時候, 我們主要是指賬戶的權(quán)限不因內(nèi)容的審查而限制脊另,所以抗審查的需求一般伴隨著隱私的需求≠送矗抗審查和不被審查的意義不一樣,前者指不可能被審查踩麦,后者指沒有人主動去審查。只有去中心化的身份體系才能做到抗審查谓谦,即沒有一個中心化主體能夠干預(yù)你的身份信息和限制/刪除你的賬戶。
數(shù)據(jù)定時毀滅
類似閱后即焚的設(shè)計反粥,一個注重隱私的通訊應(yīng)用應(yīng)該給予用戶自由設(shè)置數(shù)據(jù)定時毀滅的權(quán)力疲迂,用戶應(yīng)該有能力控制自己所發(fā)的內(nèi)容的留存時間。
客戶端數(shù)據(jù)加密儲存
為了追求聊天記錄的完整性尤蒿,用戶使用的客戶端難免會需要儲存聊天數(shù)據(jù)。本地加密儲存和應(yīng)用密碼鎖能有效的防止第三方訪問聊天數(shù)據(jù)优质。
可主動刪除服務(wù)器數(shù)據(jù)
相對于定時毀滅數(shù)據(jù)來說竣贪,主動刪除服務(wù)器數(shù)據(jù)是后置性的保護數(shù)據(jù)隱私的操作,畢竟不儲存任何數(shù)據(jù)才是最安全的演怎。在用戶覺得自己可能存在安全風(fēng)險時,一鍵刪除是最省心的操作爷耀。
支持賬戶刪除
用戶應(yīng)該有權(quán)永久刪除自己的用戶信息和賬戶。
不需要綁定個人信息
特別是手機號碼歹叮,很多應(yīng)用的賬戶需要與用戶的第三方信息綁定,這讓用戶被迫透露了不必要的個人信息咆耿。
截/錄屏提醒
在聊天的時候,即使使用了E2EE加密萨螺,我們也不能阻止對方通過截屏或者錄屏,這個隱私風(fēng)險是極大的慰技。應(yīng)用中提供截/錄屏提醒功能可以增加聊天的隱私性。當(dāng)然吻商,使用第二臺設(shè)備去錄屏是我們防不勝防的,一般應(yīng)用會忘記考慮錄屏提醒艾帐,iOS有自帶的錄屏功能是可以檢測得到的。
支持paperkey
與私鑰的保密性相當(dāng)掩蛤,paperkey是私鑰編譯過的一串隨機單詞,顧名思義揍鸟,paperkey是用來寫到紙上保存的句旱。如同冷錢包,寫到紙上不連網(wǎng)的密鑰才是屬于你自己的谈撒,非常安全。當(dāng)然也比較麻煩啃匿。
掌握了這些維度,你就可以自己去考核一個加密通訊應(yīng)用是否安全溯乒,也可以根據(jù)這些點去尋找適合自己的隱私需求的產(chǎn)品。