為什麼有瞭 Signal,還要選擇 Coming ?

火幣網(huobi.com)最新可用網址(點擊下圖直達註冊!)


火必交易所,曾经的火币交易所!

欧易OKX三大交易所,稳定好用!

币安全球第一大交易所!安全!


CHAINX·PCX


如今,我們的大多數通信都是使用智能手機和計算機上的消息傳遞應用程序在線進行的。但是,確保我們的消息保持私密性和安全性變得越來越困難,這就是為什麼業務用戶和消費者現在都轉向加密消息傳遞應用程序的原因。而加密通訊應用 Signal 就是端對端加密通信應用軟件中的佼佼者。

Signal

加密通訊軟件

全球各地數百萬人每天在使用 Signal 進行免費的即時通信。收發可信的消息,進行高清視頻語音通話, 讓人們隨時保持互聯互通。借助 Signal 持續的高級隱私保護技術,可專心與重要的人分享重要的時刻。那麼 Signal 都有哪些技術實現(基於服務端 3.21 版本)?

基於 websocket

協議通信

首先說一下使用 websocket 通信的好處是:

1. 真正的全雙工方式,建立連接後客戶端與服務器端是完全平等的,可以互相主動請求。而 HTTP 長連接基於 HTTP,是傳統的客戶端對服務器發起請求的模式

2. 減少通信量,隻要建立起 websocket 連接,就一直保持連接,在此期間可以源源不斷的傳送消息, 直到關閉請求。也就避免瞭 HTTP 的非狀態性。和 HTTP 相比,不但每次連接時的總開銷減少瞭,而 且 websocket 的首部信息量也小 ,通信量也減少瞭。

3. 減少資源消耗,那麼為什麼他會解決服務器上消耗資源的問題呢?其實我們所用的程序是要經過兩層代理的,即 HTTP 協議在 Nginx 等服務器的解析下,然後再傳送給 相應的 Handler(PHP等)來處理。

簡單地說,我們有一個非常快速的接線員(Nginx),他負責把問題轉交給相應的客服(Handler)。本身接線員基本上速度是足夠的,但是每次都卡在客服 (Handler)瞭,老有客服處理速度太慢。導致客服不夠。Websocket 就解決瞭這樣一個難題,建立後,可以直接跟接線員建立持久連接,有信息的時候客服想辦法通知接線員,然後接線員在統一 轉交給客戶。這樣就可以解決客服處理速度過慢的問題瞭。

Signal 加密通信軟件正是基於 websocket 協議實現端對端的通信,客戶端隻需要與服務器建立長連接,就可以實時的接收和發送消息,而不是像傳統的 http 請求-應答模式,服務器隻是起一個轉發消息的作用, 並不會對消息做任何的處理,消息的延遲大大降低,保證瞭消息的實時性。

采用 Protocol buffer

序列化方式

Protocol Buffer 和 XML、JSON 一樣都是結構數據序列化的工具,但它們的數據格式有比較大的區別:

首先,Protocol Buffer 序列化之後得到的數據不是可讀的字符串,而是二進制流

其次,XML 和 JSON 格式的數據信息都包含在瞭序列化之後的數據中,不需要任何其它信息就能還原序列化之後的數據;但使用 Protocol Buffer 需要事先定義數據的格式(.proto 協議文件),還原 一個序列化之後的數據需要使用到這個定義好的數據格式

最後,在傳輸數據量較大的需求場景下,Protocol Buffer 比 XML、JSON 更小(3到10倍)、更快 (20到100倍)、使用和維護更簡單;而且 Protocol Buffer 可以跨平臺、跨語音使用

Signal 加密通信軟件采用 Protocol buffer 實現對客服端與服務之間數據傳輸的序列化和反序列化,使傳輸 的數據更小,速度更快,效率更高。

臨時
存儲
下線消息

Signal 通過 Redis 的發佈/訂閱(publish/subscribe)實現消息的轉發,在發佈消息的過程中,無可避免的會遇見一端下線的情況,在這種情況下發佈消息會失敗,Siganl 會將發佈失敗的消息先寫入Redis緩存, 再將消息臨時存儲在 PostgreSQL 數據庫中,當用戶再次上線時,會從數據庫中讀取消息推送給用戶,在消息推送成功之後,會將數據庫中的數據刪除,不做任何的保留。

端對端的

加密-X3DH 密鑰算法

Signal 的核心是”暢所欲言”,對 Signal 而言,隱私並非可有可無,而是必不可缺,每條消息、每次通話、每時每刻都應受到保護,Signal 采用 X3DH 密鑰協商協議來為每次的會話進行加密,來確保每條消息的隱私性。先用一個簡單的場景介紹一下 DH 密鑰算法:Alice 和 Bob 想要在一個不安全的信道共享一個 密鑰,該密鑰可被用來進行後續的其他的操作,並且僅被 Alice 和 Bob 所知,第三方無法得知。一個簡單的方法就是,現在全世界都是知道一個值 P=100。Alice 生成隨機值5(私鑰),然後乘上 P,接著發送 Pa = 500 給Bob;同樣 Bob 生成隨機值6(私鑰),然後乘上 P,接著發送 Pb = 600 給Alice。

這樣,Alice 有 100,5 ,600,Bob 有 100,6,500。

Alice計算: 隨機值 5(自己私鑰) * 600(對端的公鑰) = 3000 等式1

Bob 計算 : 隨機值 6(自己私鑰) * 500(對端的公鑰) = 3000 等式2

這樣 Alice 就和 Bob 共享瞭一個值 s=3000(公鑰),雙方使用 s 對消息進行加密,再使用各自的隨機值(私鑰)進行解密。這就是 DH 密鑰算法的一個簡單應用場景,Signal 的使用的 X3DH 密鑰算法是在 DH 密鑰算法的衍生算法 EC-DH 算法的基礎上衍生出來的,它的安全性更高。

Signal 存在的問題
服務端的壓力

因為 Signal 所有端對端的通信都是經由服務端將消息轉發,這就涉及到瞭服務端的壓力問題,舉一個簡 單的場景:

在 A 地到 B 地之間有一條高速通道 S,所有的車都是通過 S 這條高速通道從 A 第到 B 地,當車流量越來越大,單條車道已經不能再滿足我們通車的需求,這時候就必須拓寬我們的車道,將單車道變為雙車道。隨著車流量的繼續增大,漸漸的雙車道也不能滿足通車需求,於是就將雙車道拓寬為四車道、八車道。

雖然拓寬車道可以暫時的解決車流量增加的問題,但終有一天會達到臨界點。服務器就像我們的車道一樣,隨著用戶的增多,就不得不增加服務器的數量來支撐我們的服務,增加服務器數量的同時,也表示著我們的服務器越來越大.

Signal 的服務器不僅僅是用來做消息轉發,還做瞭其他的工作,如果某天服務器再像 2021 年 1 月份出現宕機的情況,就意味著所有的服務都將不可用。

Signal 的電話號碼登錄

是否真的隱私?

Signal 的註冊登錄簡單快捷,隻需要使用手機+驗證碼就可以登錄 Signal,開啟隱私聊天之旅。但是 Signal 使用電話號碼登錄真的隱私嗎?

Signal 的群內成員的註冊資料,包括手機號都會被查看到,並且會查看手機的通訊錄,在聯系人界面展 示。對很多國傢而言,都實行瞭實名制電話號碼,每個電話號碼都對應瞭一個真實的人。如果我想知道我的朋友是否註冊瞭Signal,隻需要在聯系人界面搜索他的電話號碼就可以瞭,這又是否足夠隱私?對於有心人而言,用一個電話號碼查到個人的真實信息,我相信這並不是難事。

Coming

加密通訊軟件

首先來對比一下 Signal 和 Coming 的相同和不同點

從表中可以看出,Coming 和 Signal 最大的不同點有兩個:

1. 對服務器的依賴:Coming 在前期會和 Signal 一樣,采用 websocket 的通信方式,但在後期會增加 SMS 通信方式,用戶可以在兩種通信方式之間自由切換,減少對服務器的依賴,就算服務器宕機瞭,也還是可以進行通信,做到真正的端對端通信。

2. 對 BTC 的支持: Coming 支持多種幣種的支付,與 Signal 最大的不同在於 Coming 支持 BTC 的支付。

除此之外,Coming 在後期使用鏈上的公私鑰對進行登錄,不在使用電話號碼+驗證碼的方式登錄,實現 瞭真正的去中心化。

我們致力於將 Coming 打造成一個去中心化、對服務器依賴輕、支持包含 BTC 在內的多種幣種支付的端對端加密隱私通訊軟件。

作者:Coming,來源:ChainX社區



返回列表页>>> 比特幣最新新聞