文 | 阿里八卦
2019年8月21日,密碼極客邀請到了DIM項目的首席科學家Albert Moky來社群做線上分享。
以下是線上分享的全部內容
大家好!我叫Moky,是一名程式設計師,在伺服器端、客戶端開發都略有涉獵。本人是數學系畢業的,對算法比較感興趣,之前研究過AI算法,前幾年在看到區塊鏈技術的時候也忍不住研究了一下。最近頗有一些心得,想藉此機會和大家分享。
今天我想和大家分享的,是關於「去中心化」技術在IM領域的可行方案。由於我本人之前曾負責過一些IM產品的研發,雖然不算太深入,但對於IM領域的一些產品問題仍然有比較多的認識。
我一直在尋找方法嘗試去解決它們,但是IM領域的競爭太過激烈,除了巨頭之間的競爭,一些小公司基本沒有什麼參與機會,直到我找到了「去中心化」的方法。
我對比研究了現有的一些較為知名的IM協議,它們都從某些側面解決了一部分問題。但是這些協議很多都沒能得到廣泛的應用,哪怕有一些背後有非常強大的公司在推動也沒能成功。我分析了深層次的原因,其實根本原因並不在功能性上,也不在應用了多麼酷炫的技術,而在於用戶體系。
我們看一下過去比較有代表性的IM協議:最初的開源IM協議主要強調通用性,而在真實性和保密性上基本是空白的,完全靠運營方去保證;區塊鏈技術引入之後,解決了真實性問題,但效率遠遠不能達到IM的標準,所以很多DApp的體驗非常的差;還有現在的一些端對端加密IM可以相對地解決了真實性與效率問題,但仍然有漏洞,被攻擊的案例也時有發生。
所以,我決定從根本上去研究一個IM到底最關鍵的要素是什麼,一個好的IM系統架構應該是怎樣的。我發現所有的IM網絡,基本上可以分成兩大類設備:終端,和中間節點。
一個最簡單的IM系統結構,應該如上圖那樣,由用戶終端和伺服器節點組成。有一些用戶直接連接在同一個伺服器內,而另一些則可能連接了不同的伺服器;而眾多的伺服器可能分布在全世界不同的地方。
那麼,當一個信息從一個用戶發送到另一個用戶,有哪些步驟是必須的呢?針對前面的系統架構,我發現最根本的就是用戶身份驗證與信息轉發機制;針對同一個伺服器和不同伺服器,甚至是不同地域不同運營商的伺服器,需要有一套最佳路由算法去實現。
以上,就是每一個好的IM所必須的全部設計!那麼大家可以看到,這裡面其實並沒有和你用什麼資料庫存儲信息有關,也不跟運營商有什麼不同的資源能力有關,只要中間節點能夠準確、快速的將信息轉達即可;而身份驗證問題,當下主流的IM都是中心化的,然而由上面的分析可以發現,其實只要能夠證明身份,與是否中心化並沒有必然關係。
在我研究區塊鏈技術的時候,我發現基於非對稱密碼學的區塊鏈技術採用了一種十分巧妙的「身份證明」解決方案,於是我很自然的就聯想到可以應用到DIMP的設計中來。拿BTC地址算法舉例(也是DIMP支持的ID算法之一),我們可以通過一套共識算法來生成ID,同時綁定了ID與密碼的關係。
對比於傳統的中心化IM 架構,它們採用的是中心資料庫中儲存ID+密碼的對應關係數據來識別身份,很顯然區塊鏈這種身份識別方式完全可以替代中心化的用戶身份識別。
只不過BTC地址算法有一些缺點,比如純隨機字符串可讀性非常差,用戶很難通過一個BTC地址判斷它屬於哪個好友,所以後來我研究了一些方法,用來綁定一個識別標誌到該地址上,類似於傳統IM裡的username。
對於ETH地址,或者其他任何區塊鏈地址,都可以通過同樣的方式被DIMP所兼容。因為DIMP核心算法是直接建立在非對稱密碼學基礎上的,它本身並不需要依賴任何一條區塊鏈。所以它可以兼容所有區塊鏈帳號作為DIM的ID來進行通訊。
我們再來看一下DIMP定義的通訊消息發送和接收過程。作為一個IM應用,每一條消息必須定義的信息欄位,主要包括3個:
1、發件人(sender)
2、收件人(receiver)
3、數據內容(data)
而為了證明該信息是sender真實發送而不是偽造的,則必須帶有第4個信息:
4、籤名信息(signature)
如果該信息不是公開信息,則還需要一個加密方法,我這裡採用了非對稱加密與對稱加密兩層加密算法,所以還需要第5個信息:
5、密鑰(key)
以上就是一個去中心化的、端對端加密IM應用中必須的數據結構。
可以說,上面的兩大部分:身份識別&通訊格式,已經完成了一個去中心化即時通訊應用的全部核心定義。但我上面提到過,一個IM應用能否生存和發展,關鍵不在於它定義了哪些功能,使用了哪些酷炫的技術,而在於用戶體系。在過去20多年的混戰中,不計其數的挑戰者都失敗了,當然每個公司失敗的原因有很多,但我發現它們幾乎都有同一個特點:用戶規模不夠。
因為IM不同於其他信息類應用,它是一個「贏者通吃」效應特別強烈的領域。如果你的好友全部在某一個IM應用上,那麼就算你對它不是十分滿意,你也必須要用它;反之,另一個app無論多麼的合你胃口,只要你的朋友們沒有在用,你也沒辦法把它當成日常溝通工具。
所以接下來,我將介紹我針對這個問題的解決方案。
在我們的DIM network裡,我把每一個「公司」定義為「Service Provider」。和歷史上出現過無數的IM創業者(我在這裡稱其為「挑戰者」)一樣,DIM network裡也有很多的創業者(我在這裡稱之為「服務提供商」)。
而和傳統不同的是,我們這裡的SP採用一套共識算法來生成和識別用戶身份ID。因此實質上每一個SP所發展出來的用戶都是相通的,無論各個SP之間是否已建立數據共享連結。
而以往的IM領域挑戰者,包括小公司和一些已經做到比較大用戶規模的大公司,最後沒有活下來的原因,可能僅僅是因為它不夠大。但在DIM network裡,一個SP能否存活和發展,跟你的用戶數沒有關係,而是跟你的服務能力直接相關。
因為所有SP都面對著同一個用戶群,只要你的服務質量好,創新增值服務豐富,能滿足用戶需求,就會有人用,哪怕你的增值服務只針對一小部分用戶,這部分用戶也不會因為你的用戶關係網絡不夠大而不得不拋棄你;反之,如果某個曾經的大SP不思進取,服務質量逐漸下降,那它的用戶們也可以很輕易地轉向其他能提供更優質服務的SP。
通過SP的引入,可以解決過去一些純粹基於p2p技術的IM應用的缺點,比如它們完全靠用戶自發(或者給予一定獎勵)的方式來建立點對點網絡,但是很顯然,普通用戶的建網能力和服務能力是無法跟專業的SP相提並論的,所以這是過往的基於p2p技術的IM難以發展推廣的原因。而通過統一的帳號設計,又能解決過去那些IM挑戰者們單打獨鬥的局面,所有小SP可以聯合起來,拼接成一張大網絡,並且通過自由競爭、而不是靠壟斷手段來實現更大的用戶價值。
以上就是我想和大家分享的內容,謝謝大家!
以下是互動問答環節
問題一至二來自賀鵬飛【賀鵬飛:Kaleido公有鏈技術合伙人,前迅雷技術總監,十餘年網際網路技術研發經驗。任職迅雷期間打造會員離線下載業務,覆蓋500萬付費用戶,後在網心科技基於百萬級玩客雲節點打造出分布式存儲平臺TCFS。】
問題一
對於普通用戶來說,使用基於密鑰的、使用籤名來校驗其身份的帳號機制,門檻還是比較高的,比如如何安全的保管密鑰等。我們有沒有一個能有效簡化用戶管理和使用密鑰的產品方案?
Moky:籤名和加密的過程其實是對用戶透明的,這些工作應由DIM app自動完成,用戶在日常使用中並不需要關心這些技術細節;而密鑰保管的問題,一些公信力足夠大的SP可以提供託管服務,這個由市場去決定哪些SP的公信力足夠大,用戶願意把自己的私鑰交給他們託管(託管前還可以加密)。
問題二
對於強調加密、匿名屬性的通訊工具,從現實角度來講,一定會有一些監管方面的風險和壓力,DIM是如何平衡和處理這個風險的?
Moky:每一項新技術只要得到了廣泛應用,自然會有相應的法律法規跟進,我認為這不是技術研究者的任務,就好像電報技術被發明之後,就會有結合電報業務相關的法律法規出臺;後面的電話技術、網際網路技術也一樣,只要技術發展起來了,使用的範圍足夠廣了,自然就會有相應的立法和執法。
DIMP設計的目的,是為了解決市場被壟斷帶來的一系列問題,以及中心化服務的信息安全問題,不是用來逃避監管的。每一個加入DIM network的SP都應該考慮到其所在國家的法律要求,主動接受監管。
問題三至六來自張珂良【張珂良:AToken區塊鏈研究員,復旦大學計算機科學與技術博士,曾多次在國內外重要期刊和區塊鏈會議發表論文。曾任中泰金控區塊鏈研究員,專注區塊鏈公鏈技術、共識算法、智能合約等。】
問題三
DIM打造的去中心化即時通訊協議能夠用於跨鏈嗎?和Cosmos的跨鏈或Polkadot的跨鏈協議有什麼區別?
Moky:您提到的這兩個協議主要是用來解決不同區塊鏈之間的數據交換問題的,而且它們也都是基於區塊鏈的。換句話說,它們是引入新的區塊鏈,用來橋接不通的區塊鏈。
而DIMP是直接建立在非對稱密碼學基礎之上的,由於目前所有區塊鏈技術都建立在非對稱密碼學之上,所以它們的帳號地址天然能被DIM兼容,因此跨鏈通訊沒有任何限制。DIMP和上述區塊鏈技術的最顯著區別就在於DIMP的信息通訊是p2p的,不依賴公鏈,所以可以避免了區塊鏈的效率問題,而效率是IM領域至關重要的考量指標之一。
問題四
DIM會有自己的通證嗎,類似於ERC20 Token?
Moky:為了最大化地發揮DIMP的去中心化優勢,我們需要聯合眾多的SP共同組建更大的DIM網絡,所以我們提出了「SP聯盟」的概念。
而為了有效地管理和激勵參與者,我們會設計開發一些需要所有SP共同維護和支持的產品,如ANS(Address Name Service)就是其中之一,因此我們會開發一個聯盟鏈,來連接所有SP ,甚至包括用戶,來實現網絡價值最大化。
順便提一下,ANS是我們參考傳統的DNS提出的新概念,由「SP聯盟」裡的每一位SP通過共識算法實現的短域名映射增值服務,今後我們還會開發更多的聯盟增值服務。
問題五
DIM對傳統即時通訊領域主要的改進在哪裡?兩者是互補的還是競爭關係?
Moky:DIMP相對於傳統即時通訊領域而言,最具革命性的地方在於其帳號體系。傳統IM由於帳號數據私有(也不得不私有),從而導致了壟斷,換句話說,傳統IM企業的核心價值在於其用戶數據與關係網絡。而DIMP提出的是一個開放式的去中心化帳號體系,所以傳統IM的核心價值可能會受到挑戰,但我對DIMP的設想是面向未來的,而未來的網際網路將會走向更加扁平化,現有的IM企業要適應這種變化,可能他們需要在這方面多做一些思考。
問題六
目前,DIM在通過區塊鏈技術來實現去中心化的即時通信領域的過程中,有沒有競爭對手,目前各自的實現進度如何?
Moky:除了傳統的IM以外,現階段比較熱門的端對端加密通訊如Telegram、Mixin 等都是基於中心化用戶體系的,它們的安全性主要受到來自兩方面的威脅:
1、運營方的行業道德水平制約,因為用戶隱私數據全部在中心伺服器上,所以運營商可以利用這些數據實現價值變現;2、運營方的安全技術水平制約,頻繁出現且無法杜絕的黑客入侵事件就是證明。我認為它們沒有很好地認識到通訊的本質。
衡量一個通訊技術或協議的最關鍵指標是:安全、高效和易擴展。但就高效這一條,目前可以看到的區塊鏈技術是難以解決的。所以我認為DIMP是一個全新的、非常值得關注的技術方向,目前我已經把核心代碼在GitHub上開源了,包括Java、Objective-C和Python版,有興趣可以看一下。