前言
跨雲CROSSIM推出的crossim-ims-share是一個重磅專案,促進了專案與專案方之間的深度共享合作。
使用共享IM
1. 下載android原始碼https://gitee.com/apowner/crossim-share-android (注:該程式碼僅供參考,開發者可根據自己的需求提取其中的模組使用)
2. 設定賬戶伺服器IP
3. 設定共享IM節點IP
4. 註冊並登入
驗證:到華為市場下載身邊大愛app,兩個app可以互相新增好友,相互聊天即可說明使用成功。
共享IM節點:
103.163.46.82 |
共享IM節點 |
47.92.123.66 |
共享IM節點 |
39.100.133.144 |
共享IM節點 |
45.32.90.120 |
共享IM節點(美國) |
39.100.147.50 |
託管IM節點,支援web和小程式 |
跨雲CROSSIM網路結構
資料儲存
RegisterServer儲存的資料
Id |
使用者註冊id |
Ec key pair |
Ec金鑰對 |
Contacts |
通訊錄 |
IMIP |
連結的共享IMS的IP |
Face |
使用者頭像 |
Nickname |
使用者暱稱 |
Osnid |
Osnid |
注: RegisterServer儲存的資料為敏感資料,由企業建設一個service來儲存,或者儲存在使用者手機端。
ShareIMS儲存的資料
Osnid |
需要提供服務的osnid |
Msg |
聊天記錄 |
Face |
使用者頭像 |
Nickname |
使用者暱稱 |
流程
1. RegisterServer生成id和ec key pair
2. RegisterServer呼叫命令將osnid註冊到ShareIMS,註冊成功就記錄下IMIP
3. app從RegisterServer獲取id、ec key pair、IMIP、Contacts、Face、Nickname
4. app透過IMIP連線到ShareIMS
5. app將face和nick那麼分別上傳到RegisterServer和ShareIMS
6. app新增好友以後,將contacts更新到Register
7. app傳送訊息以後,ShareIMS會將訊息轉發給其他IMS
8. 其他IMS收到訊息以後轉發給使用者,並記錄訊息來源(IP)
9. 使用者傳送回執以後,將回執傳送給ShareIMS。
更換共享服務
RegisterServer將osnid註冊到其他ShareIMS,APP不再連線到原來的IMS,可以傳送命令給原來的IMS登出其osnid。如果不登出,原有ShareIMS由於收不到來自APP的回執,在達到一定時間以後,就會將使用者訊息刪除,並且將使用者osnid從自己的列表中刪除。
安全性分析
由於OSPN網路的整體設計是基於PKI設計的,因此敏感資料的生成隔離了ShareIMS。
使用者將賬號登記到了ShareIMS上以後就可以使用IM服務。使用者將資料傳送到ShareIMS時的資料處理方案為:
(1) 生成隨機加密key
(2) 用對方公鑰加密key
(3) 用key加密明文
(4) 將密文打包
(5) 使用自己的私鑰對資料包進行簽名。
ShareIMS收到資料以後,由於沒有私鑰,無法解開資料內容,因此在ShareIMS上儲存的資料是安全的。
傳統的私有化部署IM服務,當伺服器發生故障時,會導致使用者無法使用。使用共享IM服務,當部分節點發生故障時,可立即切換到其他無故障節點繼續使用。
user1與user2透過多節點接入完成訊息互動示意圖
優點
敏感資料分離以後,企業和個人無洩露問題。且app可以同時連線多個ShareIMS,從多個節點獲取資料,切換網路方便,容錯性更高。
Web3共享IM |
IM公有云 |
IM私有云 |
|
價格 |
根據使用量來定,每月可低至1元 |
每月最低888元 |
每年雲服務費2H4G每年1500起 |
維護 |
無需維護 |
無需維護 |
需要專業人員維護 |
遷移 |
遷移到任何節點,只需指定IP。從共享節點遷移到私有節點也僅需要指定新IP即可完成。 |
無法遷移,在哪個雲商那裡購買就只能一直在該處使用。 |
需要專業人員進行遷移。 |
服務提供人 |
由參與者共享自己的多餘資源 |
由雲商提供 |
由企業自己提供 |
是否有收益 |
提供服務者有收益 |
使用者無收益 |
無收益 |
安全性 |
敏感資料由企業控制,接入節點不可預知,駭客攻擊難度大。 |
安全由雲商負責。 |
需要專業人員負責安全性,被攻擊導致DOS機率較大。 |
活躍度 |
與全球app互聯,外連日活很高,往往小部分人就可以達到很高的外聯日活。 |
由企業的運營團隊決定。絕大多數是低日活 |
由企業的運營團隊決定。絕大多數是低日活 |
最低配置 |
最低1核2G雲VM即可滿足需求 |
一般要求2H4G以上 |
|
平臺關閉以後賬戶是否可以繼續使用 |
可以 |
否 |
否 |
全球服務 |
是 |
否 |
否 |
缺點
目前僅支援android和ios,暫時不支援web端和微信小程式端(微信小程式需要使用https,開發者需要自己建立節點安裝證書,微信小程式建議參考託管IM節點)。
自建共享IM節點
開發者搭建共享IM節點參見專案
ospn-connector: https://github.com/openbpi/ospn-connector
ospn-ims-share: https://github.com/openbpi/ospn-ims-share
注:配置時,需要指定鄰近的共享IM節點IP。