挖出了好多我們的歷史啊~
與王堅院士有關的日子
本文來自杭派工程師。撰文 | 猛哥;視頻 | 阿竜
…………………………………………………………………
21年前,他是學界翹楚,比爾·蓋茨最信任的人之一。
11年前,他受馬雲之托,在阿裡掀起技術革命。
從“騙子”到“雲計算開拓者”,十年一覺“飛天”夢。
他就是王堅,中國工程院新晉院士。
1
那年,李開復37歲,受比爾·蓋茨之托,帶著一項使命飛抵北京。
甫一落地,他就到處尋找電腦使用者介面領域的頂尖人才,跑遍清華大學和北京大學,都沒有。後來,北京大學電腦系圖形學老師董士海給他指了條道。
董士海在視覺化領域深耕多年,熟諳學界,他想了想,說,“有一個,在杭州!”
此人就是王堅。
李開復又多方打聽,大家都說王堅是國內研究“人機界面”最優秀的一個人。
人機界面,是人與電腦之間傳遞、交換資訊的媒介和對話介面,是電腦系統的重要組成部分。
王堅生長在西子湖畔,卻南人北相,身材高大,總是頂著一頭亂髮,挎著黃色軍用挎包,衣服皺巴巴,走路一顛一顛,脖子前伸,全然不關心外界的書生派頭。
細數王堅的經歷,完全稱得上是一個“異類”。他生於1962年,被打上了那個時代特有的烙印,癡迷大飛機,卻在1980年考入杭州大學工業心理專業,讀研期間常去浙江大學旁聽電腦課程,他的碩士論文《人機交互和多通道使用者介面》是中國第一部人機交互的論文,後來還影響了航太工程。
這多少算間接圓了他的“飛天”夢,也許是覺得不滿足,很多年後,他乾脆直接上陣,帶領一幫年輕人編造另一個版本的“飛天”夢,歷經挫折,每當下屬們洩氣時,他總會講,過去“那麼多優秀的工程師一輩子連造飛機的機會都沒有”,相較之下,現今一切堅持都是值得的。
1990年,王堅獲得心理系博士學位,並留校任教,1992年就晉升為教授,1993年又列為博士生導師,並擔任心理系系主任。1998年8月,杭州大學與浙江大學合併,王堅新增了一連串耀眼的頭銜:中國人類工效學會理事、浙江大學工業心理學國家專業實驗室主任。
不過,李開復一門心思要找到他,可不是因為這些頭銜,而是另有緣由。他給王堅發出郵件,邀請他來京參加一個典禮。
2
1998年11月5日,北京天氣蕭瑟,長安街兩邊的白楊樹正在凋零。
但與北京火車站相去不遠的國際俱樂部門庭若市,來了300餘人,均為中國電腦業的翹楚,包括18位院士、56位教授、4位大學校長、9位系主任、27位研究員、7位所長、1個總工程師、1個高級工程師和1個總裁。
此外,還有29個政府官員和美國駐華使館的1位外交官。
王堅沒有到場。但這個小插曲絲毫沒有影響李開復的好心情。
科技部部長及教育部副部長先後登臺致辭,此外資訊產業部及中科院等官方機構都贈送了花籃。
這些官員和學者聚集一堂,只因美國微軟公司在中國建立了一個研究院。
微軟CTO 奈森·梅爾沃德是敦促比爾·蓋茨做出此項決議的“推手”。當天,他在祝賀視頻中說:“因為人才是成功研究的先決條件,我們決意追隨人才,到人才濟濟的地方開設研究院。”
李開復進一步解釋說,微軟中國研究院的初衷是“彙聚中國本地的優秀人才和微軟公司自己的專業人才,彙集其思想。”
此話當日與會者都未給予足夠的注意。只有王選(北京大學教授、中科院院士、電腦漢字雷射排版技術創始人)隱約覺得微軟志不在此,“有眼光”,還有“遠大戰略。”
1999年春節前,微軟中國研究院開始大規模招攬人才,觸角幾乎覆蓋了所有一流科研院校。
《經濟日報》說微軟中國研究院“一網”就“網”了十幾位拔尖人才。
3
儘管1998年的秋天,李開復和王堅沒能見面,但兩人在通了五封郵件後,再次約定見面。
李開復出差時,曾專門去浙江大學找王堅,沒見上,後來微軟中國研究院副院長沈向洋(剛宣佈從微軟離職。此前為微軟全球執行副總裁,美國工程院院士)去浙江大學做演講,李開復囑託他去與王堅見一面,仍然緣慳一面。
李開復只好在郵件上邀請王堅北上,“看看研究院。”
一個素昧平生的人如此執著,這令王堅既驚訝又感動,他回信說:“我來北京看你。”
1999年1月10日,李開復終於見到了王堅。沒有寒暄,開門見山。談話只有半小時,但對聰明人來說已經足夠。
當王堅回到杭州時,一封電子郵件已在等著他,那是李開復發的。儘管李開復很希望王堅能夠加盟微軟中國研究院,但抹不開情面直接挖人,畢竟浙江大學校長潘雲鶴是微軟中國研究院的顧問。
李開復只是提出可以和王堅的實驗室合作,這讓王堅很開心,覺得大展宏圖的機會來了,但幾天後,他給李開復回信說,要到微軟中國研究院做訪問學者。
導致王堅改變主意的原因是作為系主任和副院長,需要參加無數的冗雜會議,這令他不勝其煩。
1999年的春天剛開始,王堅來到微軟中國研究院。接觸越深,李開復越希望王堅把“訪問”變成“加盟”。
最後,還是王堅自己捅破窗戶紙。到了夏天,他向李開復明確表示要到微軟來工作。
王堅被任命為多通道使用者介面組的主任研究員,組員有張高(中科院博士)和韓堅(清華大學博士)兩個年輕人。
以潘雲鶴的身份和學養,自然不能阻攔王堅的出走。
那個夏天和潘雲鶴一樣心情複雜的還有哈爾濱工業大學的黨委書記李生,他是哈工大電腦系的老系主任,也是中國人工智慧領域第一個博士生候選人(因為選擇提副教授沒有繼續讀博,張大鵬遂成為中國人工智慧領域第一個博士生)。
李開復給李生寫了一封信,說要挖走三個人,即:荀恩東、王海峰和劉挺。
荀恩東,在微軟中國研究院工作了兩年,後被引入香港科技大學,現在北京語言大學任教,研究機器翻譯和語法分析。
劉挺,在微軟中國研究院呆了一年,又返回哈工大教書,現在是哈工大人工智慧研究院副院長。
王海峰,是中國最早做搜索的一撥人,加入微軟中國研究院後,李開復親自帶他。一年多後,跳槽到東芝中國研究院,2010年加入百度,深得李彥宏信任,2019年5月出任百度空缺了10年之久的CTO。
巧合的是,同月,中國工程院公佈了2019年院士增選有效候選人名單,所涉專業為“人工智慧”方向的候選人共有五位,分別是王海峰(百度),沈向洋(微軟中國),楊強(微眾銀行),莊越挺(浙江大學),鄭慶華(西安交通大學)。
候選名單中還有兩位與人工智慧相關的企業人物,分別是李彥宏和王堅,均位元列工程管理學部“新興交叉領域工程技術創新管理”專業。
一個月後,第二輪評審的候選人名單公佈,李彥宏、王海峰、沈向洋落選,王堅仍在列。
能PK掉沈向洋和王海峰等老同事,足以證明王堅的卓越,此時他的身份是阿裡巴巴集團技術委員會主席。
20年前,當王堅離開杭州來到北京時,創業失敗的馬雲正帶領一幫人從北京折返杭州,希冀東山再起;當王堅正式加入微軟中國研究院時,馬雲與“十八羅漢”在湖畔花園創辦了阿裡巴巴。
一個是風頭正勁的學術明星,一個是屢敗屢戰的創業者,誰能想到這兩個人將來會有交集,並作出驚天之事。
機緣就是這麼神奇。
4
在微軟中國研究院,專家學者們得以全心全意投入基礎研究,而不用操心經費及產出。
在王堅看來,研究院要做的就是提出新概念,“我們不是要改進現有的而是要提出新的,不是把人家已經做過的東西做得更好,而是要做人家從來沒有做過的事情。”
即使是三流的開創也要比一流的跟隨更加艱難。所以,王堅一直給自己出難題。夏天開始的時候,他帶領張高和韓堅全力投入“人機界面”的研究,改進中文輸入法就是他加入微軟後的“首秀”,結果“驚豔”。
1999年10月18日,李開復帶領微軟中國研究院的6個研究員(王堅、李勁、周明、高劍峰、沈向洋和張益肇),抵達微軟美國總部,親自向比爾·蓋茨彙報。
李開復著重介紹了中文輸入方面的研究,比爾·蓋茨非常感興趣。回京後,微軟中國研究院專門舉辦了一次新聞發佈會。
王堅最後上臺,他說“做研究不一定隨大流。”
2001年,微軟中國研究院更名為微軟亞洲研究院。2004年,王堅出任常務副院長。他的主要成果包括:SQM大規模資料處理系統、數位墨水、支援亞洲語言的無模式切換使用者介面等,特別值得一提的是2005年在世界上首次推出手寫數學公式識別器,並在胡錦濤主席2006年訪問微軟時專門為主席和夫人作了演示。
王堅深受比爾·蓋茨信任。他帶的組是研究院裡當面和比爾·蓋茨討論問題最多的小組。
微軟正處巔峰期,微軟亞洲研究院兵強馬壯,王堅有足夠的空間去大展拳腳,直到一個叫劉振飛的人找上門來。
5
劉振飛,現阿裡巴巴合夥人、高德總裁,不過2008年他找到王堅時,還是淘寶網技術保障總監,他因為資料上的技術難題,想挖王堅的手下,結果被跳票,他索性直接去挖王堅。
王堅當時帶人所做的專案正和資料相關,通過海量資料分析瞭解使用者習慣、優化軟體反覆運算。有人寫郵件給王堅,描述了他在比爾·蓋茨面前提到軟體的資料分析,比爾·蓋茨說你應該去找王堅。
劉振飛畢業於北京大學,是王選院士的高足,眼光可謂毒辣。
那年夏天,阿裡巴巴CPO彭蕾(阿裡巴巴創始人、合夥人,現任Lazada董事長)親自找到王堅,一見面就說:“我們現在很差,就希望你來拯救我們”。
她說的是阿裡巴巴的“登月計畫”。
頭一年,馬雲召集阿裡巴巴的高管們在寧波開了一次戰略會,決定要把淘寶、支付寶、B2B 等子公司的底層資料打通,實現“商業新文明”。為此,阿裡巴巴迫切需要尋找一個技術“救星”。
王堅就這樣進入了彭蕾的視野。
彭蕾說,阿裡巴巴的資料就是一座金山,但不知道如何挖掘,現在是坐在金山上吃饅頭。
王堅心動了。
2008年11月18日,阿裡巴巴宣佈,王堅博士正式加盟阿裡巴巴集團,擔任首席架構師一職,直接向馬雲彙報工作。
馬雲表示:“王堅博士將幫助阿裡巴巴集團建立世界級的技術團隊,並負責集團技術架構以及基礎技術平臺建設。”
彼時,阿裡巴巴高管中不乏技術牛人,比如中國開源第一人章文嵩。他本碩博均就讀於國防科大,師從電腦學院泰斗胡守仁教授(我國第一台億次銀河巨型電腦研製的設計者和主要領導者之一),1998年創建LVS(Linux Virtual Server),2000年,Google搜索“wensong”會出現上千萬條記錄,2009年加入淘寶後,帶動了一系列開源運動。
但為何馬雲偏偏如此相信王堅?
除了都充滿理想主義氣息之外,在阿裡巴巴安全團隊負責人吳翰清看來,原因是“王博士是唯一一個能把技術講得連馬雲都能聽懂的人。阿裡有很多技術VP,但他們都沒有王博士這本事,所以他們也只能做到VP,而做不到CTO。”
被馬雲任命為CTO是王堅加入阿裡巴巴差不多四年後的事情,卻招致了這家公司史上最強烈的反彈。
阿裡巴巴已很長時間沒有CTO,上一任CTO還是吳炯。
吳炯曾就讀于上海交通大學,後赴美,1989年畢業于密西根大學,1996年加入美國雅虎,負責搜尋引擎和電子商務技術的開發。他1997年結識馬雲,2000年初成為阿裡巴巴的天使投資人,2000年5月正式加入阿裡巴巴,擔任CTO,領導開發了阿裡B2B網站,淘寶網以及相關系統的核心技術和產品設計。2005年阿裡巴巴合併雅虎中國後,他還主持了雅虎中國搜索事業部的工作。2008 年離職,專做投資人。
兩相對照,吳炯的光環太矚目了,而王堅進入阿裡巴巴後,卻成了名噪一時的“騙子”。
6
一切皆因阿裡雲所起。
1961年,美國總統甘迺迪向全世界宣佈:“美國要在十年內,把一個美國人送上月球,並將使他重新回到地面。”從此,美國雄心勃勃的“阿波羅登月計畫”開始實施,共分為“水星計畫”、“雙子星座計畫”及“土星計畫”三步。
雖然沒有關於阿裡巴巴“登月計畫”的具體時間表,但顯然也採用了分步走的策略。2009年9月10日,阿裡巴巴成立十周年的日子,阿裡雲成立了,它要為阿裡巴巴“登上月球“提供無盡的算力。
王堅擔任阿裡雲首任總裁,他對400多名團隊成員說:“如同電力是工業社會的底層設施,雲計算將取代傳統IT設備,成為互聯網世界的底層設施”。
雲計算這項新技術的雛型來自上世紀70年代,1963年,DARPA(美國國防高級研究計畫局)向麻省理工學院提供津貼啟動MAC專案,要求麻省理工學院開發“多人可同時使用的電腦系統”技術,這產生了“雲”和“虛擬化”技術的雛形。
2003-2006年Google發表了四篇文章,分別是關於分散式檔案系統(GFS),平行計算(MapReduce),資料管理(Big Table)和分散式資源管理(Chubby)。至此奠定了雲計算發展的基礎。
2006-2008年,亞馬遜、Google、微軟、IBM等巨頭相繼推出雲服務生態系統和雲計算平臺。
這樣看來,中國雲計算起步並不算晚。但先行者註定孤獨。阿裡雲成立之初,雲計算在中國還是個新名詞,外界充滿不解。
一個令阿裡雲老員工們記憶猶新的細節是,公司剛成立的前兩年,他們出差用餐時,開發票的服務員總是“好心”地將“阿裡雲計算有限公司”加一個字“阿裡雲電腦有限公司”。
王堅從微軟亞洲研究院帶過來的林晨曦等人成為阿裡雲乃至中國雲計算的最初班底。
林晨曦,畢業于上海交通大學,亞洲第一個ACM全球大賽總冠軍,2005年加入微軟亞洲研究院。他和同事們“每天思考著全人類命運這樣的宏大未來,從不為經費擔心。“ 有一天,王堅把他和孫冰(奧林匹克資訊學競賽冠軍)叫到辦公室,說他和馬雲聊得非常好,打算去阿裡,準備做雲計算,如果他們有興趣,可以一起去。
王堅的遊說很具有鼓舞性,他說,“雲計算這件事非做不可。如果我們所有的資訊計算都必須通過國外的系統,那麼未來的中國不堪設想。”
林晨曦和孫冰很快就做出了決定,“其實很簡單,我相信王博士。只能選擇相信。“
儘管阿裡雲是2009年9月10日才宣佈成立,實際上早幾個月前就開始運轉了。林晨曦記得很清楚,阿裡雲第一個員工在2008年10月24日入職,正好是1024。“冥冥註定,阿裡雲和代碼脫不開關係。”
林晨曦成為阿裡雲第一任技術總監,入職後“兵荒馬亂,十幾個人邊寫代碼邊四處招人。”
阿裡雲當時辦公室在北京上地,沒有空調,夏天很慘,工程師們只好買來一堆冰塊,放在臉盆裡降溫。此外,辦公室還經常停電。
有次馬雲來京,專門去阿裡雲辦公室,想看看工程師們到底在做什麼。林晨曦打開電腦想給馬老師看看,不巧還停電了,馬雲只好坐在辦公室等了半個小時,直到電力恢復。
環境確實太差了。許多工程師來面試,一看樓裡這麼破,就不想來了。林晨曦趕緊解釋,這只是暫時的,新的寫字樓還在裝修。
饒是如此,在那個破舊辦公室裡,2009年2月1日,阿裡雲工程師寫下“飛天”第一行代碼。
“飛天”是阿裡雲為了“登月計畫”而做的分散式運算系統,其英文名是Apsara——吳哥王朝的阿僕薩羅飛天仙女,寓意希望為人帶來幸福。
“飛天”是想將全球數百萬台伺服器連成一台超級電腦,讓任何企業、機構和個人只要聯網就能獲得即開即用的計算能力。
關於“飛天”,林晨曦有個通俗的比方:
有一波人不知天高地厚,想做分散式系統,好比大家把腳綁在一起,單、雙報數,然後同時邁步。人數少時,這很簡單。但是當人足夠多時,就不簡單了。每個人都覺得自己在邁腳,但實際上不是,這是分散式系統遇到的第一個挑戰,同時性具有相對性;有人邁左腳,有人邁右腳,有些人兩隻腳一起邁,就有人摔倒了,摔倒的人會把邊上的人帶著摔倒,這是分散式系統遇到的第二個難題;還有第三個問題,那就是異構,有的人長得高,有的人長得矮,步伐不一樣,就會帶來困難;還有很多動態環境下帶來的不確定性,路面有石頭,或者颳風下雨……最後還是走到了終點。
可誰也沒想到,“終點”那麼遠,“走”得好辛苦。
7
馬雲對王堅是百分百支持, 要人給人、要槍給槍,阿裡巴巴內部各路精兵強將都彙集到阿裡雲。
有一次元旦年會上,王堅把馬雲叫來給工程師們打氣。馬雲說他不懂技術,但很尊敬搞技術的人,認為技術大牛都是俠客,還說“程式都是bug 組成的”,贏得了全場的掌聲。接著,馬雲更是豪氣的說“登月計畫”是一定要做的,先砸10 個億,不夠再砸10 個億,直到做出來為止,再次贏得了全場的掌聲。
一開始大家都志得意滿,意氣風發,覺得一群技術牛人在一起還有什麼是做不出來的?
但現實是,沒有先例可循,阿裡雲得從零開始。
在林晨曦看來,“阿裡雲就像是一個軍隊,在攻佔一個看起來不可能攻克的山頭,一批衝鋒者倒下了,下一批衝鋒者接著頂上。其實是很悲壯的,因為沒有人知道,未來到底能不能成功。”
工程師們的黃金時間只有幾年,不願意在黑暗中一直摸索。各種爭吵和懷疑出現。壓力實在太大,很多人只在團隊呆了半年就走了。
甚至從微軟亞洲研究院追隨王堅而來的人也在放棄。2010年,一位老部下離開阿裡雲時,深情又失落地對王堅說,做雲計算的感覺就像集體合圍抱一棵大樹,誰都知道最終大家的手會連在一起,但誰也不知道那一刻會發生在何時。
2011年底到2012年初,是阿裡雲最艱難的時候。
在阿裡巴巴外部,業界都不看好雲計算。中國IT 領袖峰會上,李彥宏說“雲計算這個東西,不客氣一點講它是新瓶裝舊酒,沒有新東西。"馬化騰則認為"它是一個超前的概念,目前佈局為時過早。"
在阿裡巴巴內部,大家都在看王堅的笑話,譏諷他是糊弄馬雲的“騙子”。其它部門的技術leader們都虎視眈眈,就等阿裡雲解散,然後去“瓜分”工程師。
有一次一群人吃飯,劉振飛問王堅,外面那麼多人罵你不靠譜,看你好像不在乎。眾人都愣住了。王堅埋著頭,想了半天說了一句,“我這就是死豬不怕開水燙。”
當王堅被燙的體無完膚時,馬雲又添了一桶開水。2012年8月14日,他發文任命王堅為CTO,全面負責規劃、制定和實施集團技術發展戰略。
阿裡巴巴內網徹底炸了,反對之聲洶湧不止,概而言之就是:王堅不懂技術、不懂管理,浪費資源無數,不被追責,反而高升,難以服眾。
沒人知道那段時間王堅承受了多少壓力。“有時候堅持是很難的,有時候放棄是很難的,進退維谷,但是具體到做飛天這件事我覺得堅持是很難的。”
關鍵時刻,又是馬雲撐了王堅和阿裡雲一把。他在內網公開回應:“博士是人不是神,博士的不足大家都知道,我瞭解的也並不比大家少,但博士了不起的地方,估計很少有人知道。假如,10年前我們就有了博士,今天阿裡的技術可能會很不一樣”。
為此,王堅對馬雲無比感激,後來寫書時,把這段話作為前序。
8
因為“理想主義”和“太執著”,王堅被認為是阿裡巴巴最像約伯斯的人,他的書架上也有一本沃爾特·以撒森寫的《約伯斯傳》。
約伯斯不好相處,以“現實扭曲力場”著稱。無獨有偶,王堅身邊人也能感受到他的“現實扭曲力場”。
那幾年,阿裡雲的工程師們一旦決定留下來,就會成為王堅的“腦殘粉”,他們堅信王堅的方向永遠正確。即使錯了,也是他們這些執行者錯了,“能力無法匹配博士的要求”。
王堅極具感染力,總喜歡給部下講雷達的故事。在二戰勝利前夕,《時代》週刊封面本來要刊登雷達的照片,都已經通知發明雷達的團隊了,這是一件無比榮耀的事情。結果發行前,改為刊登原子彈的照片。雷達團隊非常沮喪,因為從整場戰爭來說雷達的意義才是最大的。
每次王堅講這個故事時,聽眾都很興奮。他總會用“你們在做從來沒有人做過的事情,不要怕犯錯”一類的話來鼓勵大家,然後眾人就覺得在做著一份無比光榮的工作。
2012年8月,王堅把每年一度的阿裡雲“飛天獎”頒給了全體員工,頒獎詞是一句略帶悲情的話——“堅持就是偉大”。
那年下半年,淘寶系“去IOE”完成,“飛天”已經跑得比較順暢,林晨曦可以放心離開了,“我在阿裡四年,其實相當於呆了十年。阿裡雲是一年走完了正常研發兩年半的路。人的頻率調快了兩倍半。”
離職那天,他和同事們在西湖國際旁邊的一家小館子聚餐,氣氛有點沉重。王堅開玩笑,“我們不應該這麼自私,晨曦不只屬於阿裡。”
那是一種什麼感覺呢?
林晨曦覺得不是傷感,不是難過,恍惚覺得:“在阿裡雲的四年,像是過完了一輩子。以後的事情,都是下輩子的。”
榮光時刻到底來臨。2013年8月15日,“飛天”5K系統上線提供服務,這是中國第一次實現單個集群超過5000台伺服器的通用計算平臺,也是世界上第一個對外提供這種能力的公司。
阿裡雲終於守得雲開見月明。同年12月,啟動“登月計畫”。
“去IOE”完成後,阿裡雲沉澱了一套“商業-開源-自主” 軟體交互反覆運算的工程管理方法,成功服務國內關鍵行業客戶超過20萬家,推動了國內企業向雲計算的全面轉型。
後來,那些早年離開的工程師,一直在想,阿裡雲最終能成功,王堅的堅持是不是唯一的原因?
有一次,林晨曦和老同事們聚會,為這個問題一直聊到淩晨3點,結論是:“如果換一個人,也許早就掛了10遍了”。
在2012 年的阿裡雲年會上,王堅走上台,他緊攥話筒,幾次抬眼望向遠處,幾次欲言又止,最終泣不成聲。
他說:“這兩年我挨的罵甚至比我一輩子挨的罵還多。但是,我不後悔。只是,我上臺之前看到幾位同事,他們以前在阿裡雲,現在不在阿裡雲了。”
這其中就包括吳翰清,2012年9月離職創業,就在“飛天”即將展露曙光的前夕。走之前,王堅約他長談,臨別時,他流淚說:“博士,其實我一直是相信你的!”
兩人相對,淚眼凝噎。
當吳翰清創業後,才深深體會到王堅的不易。“現在我回想起來,王博士是一個典型的理想主義者,他沒有太多的創業經驗和產品經驗,僅憑著一腔熱忱帶領著一群同樣熱忱的工程師們在做世界上最難的技術之一。走了很多彎路,也傷了很多人的心,但也栽了很多樹,讓後人乘了涼。”
9
乘涼者甚多。
阿裡雲趟出一條路後,國內雲計算熱潮興起,2013年就此成為中國雲計算的轉捩點。UCloud和七牛雲等協力廠商雲計算企業成立,騰訊開放平臺也是這一年對生態企業開放,AWS高調入華。
2014年9月19日,阿裡巴巴在美國上市。在上市故事中,阿裡巴巴一再強調的核心業務之一是“雲”和大資料,業務戰略是“雲+端”。這個基於“雲”的宏大敘事,正是始於六年前王堅掀起的內部技術革命。
技術底座已經構築,接下來就是高歌猛進。
馬雲再次展現了善於點將的本領,用阿裡小貸負責人胡曉明(現為螞蟻金服總裁)接替王堅,擔任阿裡雲新CEO,給這家技術公司注入商業基因。
到2016年,阿裡雲營收規模已躍居亞太第一,全球第三,連續數年保持三位數的增長。
同年,王堅卸去阿裡雲總裁及阿裡巴巴CTO兩職,專任阿裡巴巴集團技術委員會主席。
目前,40%的中國500強企業、近一半中國上市公司、80%中國科技類公司是阿裡雲的客戶。
在阿裡巴巴內網,王堅被貼上各種各樣的的標籤,出現頻次最高的有:“遠見”、“先知”、“堅定”、“堂吉訶德”……
但這個被稱為中國10年來最成功CTO的男人卻說,“我是一個既得利益者。”
2018年,王堅受邀參加央視《朗讀者》節目,誦讀了喬恩·克拉考爾的《進入空氣稀薄地帶》,回憶起阿裡雲的創業史。
他對董卿說,計算像是一口井,井裡有著最珍貴的水資源。隨著大家對計算需求的增大,要有人想辦法把井水變為自來水,讓它順暢地流入尋常百姓家。這個過程看似簡單,實際上需要建水廠、鋪管道、做水龍頭、裝水錶等一系列環節的精密配合。更重要的是人們對新理念的接納,因為第一口自來水從水龍頭裡流出之前,沒有人相信。
在阿裡雲出現之前,國內也沒有人覺得這個新技術能推動社會進步。
王堅說,他願意做那個引水的人。領著一群年輕人,去做一個中國人從來沒有做過,只在他們腦子裡存在過的東西。
2017年,中國電子資訊技術年會上,王堅代表“飛天雲作業系統核心技術及產業化”專案接過科技進步特等獎的獎牌,這是該獎項設立15年以來,首次頒發的特等獎。
中國電子學會鑒定認為:“飛天系統核心技術完全自主可控,總體技術達到國際領先水準……對我國乃至全球互聯網產業發展具有特殊重要的推動作用,是以企業為主體的雲計算核心關鍵技術自主創新的成功實踐。”
有人在知乎上寫下這樣幾句話:“10年前,我也覺得博士(王堅)是個騙子。現在看看,我覺得他是個偉人。我覺得沒有這些別人嘴裡的偏執狂,世界又怎麼可能被改變。”
10
道不孤,必有鄰。
王堅現在更多扮演的是阿裡巴巴技術先驅的角色,當下研究旨趣是“城市大腦”,開闢以資料資源為關鍵要素的城市發展路徑。
人類最偉大的作品是城市,但也帶了“城市病”。在王堅看來,“城市大腦”可以解決這些問題,它最主要的作用就是讓城市的資料流程動起來,產生價值。
解決交通問題,並不是“城市大腦”的唯一功效,它是未來城市新的基礎設施,可以在城市的建設發展中做出更多貢獻。
互聯網、資料、雲計算,這三者始終讓王堅念茲在茲,在他心目中就如同火,新大陸和電,足以改變世界,值得用一生去探尋。
英雄所見略同。李開覆沒有看走眼,馬雲也沒有看走眼,他真是一個純粹的技術人。
2014年,吳翰清重回阿裡雲,回首往事,他說時光本身無法倒流,如果能穿越到那個時間,他可能不會選擇離開,有可能選擇在這個公司把這個事情做成。“其實我從王博士身上學到了很多東西,我學到的最重要的東西就是堅持,其實他的所作所為以及他個人的軌跡,有一點顛覆我的世界觀。”
被改變的不止吳翰清一人。
如今,阿裡巴巴技術大牛雲集。許多人,無論是才智,還是年華,都不遜於10年前的王堅。當國家給予民營企業技術人至高榮譽時,對他們而言,風好正是揚帆時。
王堅的故事,重新定義了阿裡巴巴工程師這個群體,他們腳踏實地,但高舉理想主義旗幟,不墜青雲之志。保不齊,若干年後,他們之中會湧出又一個院士。
十年一覺“飛天”夢,譭謗也好,讚歎也罷,對王堅來說,皆為過眼雲煙。他撰有《線上》,結尾如此寫道:
什麼是對技術的熱愛?你真的相信技術會改變很多東西嗎?你有沒有足夠的自信和熱愛去捂暖這條蛇,哪怕它蘇醒以後可能會咬你一口?當你熱愛一個東西的時候,你很難預料最終的結果。
但是“如果困難出現,就要戰鬥到底。“ 那是他最喜歡的《進入空氣稀薄時代》中的一句話。
參考資料:
1.《追隨智慧——中國人在微軟》,淩志軍,中國友誼出版公司
2. 《道哥:王博士》,吳翰清,道哥的黑板報
3. 《阿裡雲第一任技術總監的故事》,林晨曦,阿裡雲橙
4. 《雲之戰》,孫宏超,騰訊深網
5.《雲計算深刻改變未來》,張為民,科學出版社
6.《王堅:一個預言家的命運》,張寒、周欣宇,人物
mac搜尋路徑 在 Taipei Ethereum Meetup Facebook 的精選貼文
📜 [專欄新文章] 隱私、區塊鏈與洋蔥路由
✍️ Juin Chiu
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
隱私為何重要?區塊鏈是匿名的嗎?洋蔥路由如何改進區塊鏈?
前言
自2008年區塊鏈以比特幣的面貌問世後,它便被視為 Web 3.0,並被期許能夠進一步為人類帶來金融與治理上的大躍進。區塊鏈或許會成為如同全球資訊網一般的基礎建設,如果我們已經開始注重個人於網路上的隱私,那麼我們更應該關心這項全新的技術是否能更好地保護它。
筆者將於本文中闡述隱私的重要性,接著進一步分析區塊鏈是否能夠保護用戶隱私,最後再簡介一個知名的匿名技術 — 洋蔥路由,並列舉幾個其用於改進區塊鏈(特別是以太坊)的相關提案。
特別感謝以太坊研究員 Chih-Cheng Liang 與民間高手敖烏協助校閱並給予回饋。
隱私的重要
網際網路(Internet)無疑是 20 世紀末最偉大的發明,它催生了全新的商業模式,也使得資訊能以位元的形式進行光速傳播,更使人類得以進行前所未有的大規模協作。而自從 1990 年全球資訊網(World Wide Web)的問世以來,網路已和現代文明生活密不可分。經過近 30 年的發展,人類在網路上製造了巨量的資料,這些資料會揭露使用者的隱私。透過一個人的資料,企業或者政府能夠比你自己更了解你。這促使用戶對隱私的愈發重視 — 正如同你不會允許第三者監聽你的電話,你也不希望有第三者監看你的瀏覽器搜尋歷史。
然而,如今的網路是徹底的中心化,中心化也意謂著過大的權力,有種種跡象顯示:網路正在成為政府當局監控人民的工具。例如:中國的淨網衛士[1]、美國的稜鏡計劃[2]等。那麼,政府應該監控人民嗎?其中一派的人認為平日不做虧心事,半夜不怕鬼敲門,這也就是常見的無所隱瞞論[3]:
我不在乎隱私權,因為我沒什麼好隱瞞的。
不過持有這類論點的人通常會被下面的說法反駁:
既然沒什麼好隱瞞的,那請把你的 Email 帳號密碼給我,讓我揭露其中我認為有趣的部分。
大多數正常人應該都不會接受這個提議。
隱私應當與言論自由一樣,是公民的基本權利。事實上,隱私是一個既廣且深的題目,它涉及了心理學、社會學、倫理學、人類學、資訊科學、密碼學等領域,這裡[4]有更多關於關於隱私的討論以及網路隱私工具的整理。
隱私與區塊鏈
有了網際網路後,接下來人類或許可以透過區塊鏈來建構出一個免除人性且完全仰賴自然法則(數學)運行的去中心化系統。在中心化世界中,我們需要免於政府監控的隱私;在去中心化世界中,我們仍然需要隱私以享有真正的平等。
正如同本文的前言所述:區塊鏈也許會成為如同全球資訊網一般的基礎建設,如果我們已經開始注重網路隱私,那麼我們更應該關心區塊鏈是否能更好地保護它。
隱私與匿名
Privacy vs Anonymity [5]
當我們論及隱私時,我們通常是指廣義的隱私:別人不知道你是誰,也不知道你在做什麼。事實上,隱私包含兩個概念:狹義的隱私(Privacy)與匿名(Anonymity)。狹義的隱私就是:別人知道你是誰,但不知道你在做什麼;匿名則是:別人知道你在做什麼,但不知道你是誰。
隱私與匿名對於隱私權來說都很重要,也可以透過不同的方法達成,接下來本文將聚焦於匿名的討論。另外,筆者在接下來的文章中所提及的隱私,指的皆是狹義的隱私。
網路的匿名
以當今的網路架構(TCP/IP 協定組)來說,匿名就是請求端(Requester)向響應端(Responder)請求資源時藏匿其本身的 IP 位址 — 響應端知道請求端在做什麼(索取的資源),但不知道是誰(IP 位置)在做。
IP 位置會揭露個人資訊。在台灣,只需透過 TWNIC 資料庫就可向台灣的網路服務供應商(Internet Service Provider, ISP),例如中華電信,取得某 IP 的註冊者身份及姓名/電話/地址之類的個資。
ISP 是網路基礎建設的部署者與營運者,理論上它能知道關於你在使用網路的所有資訊,只是這些資訊被法律保護起來,並透過公權力保證:政府只在必要時能夠取得這些資訊。萬一政府本身就是資訊的監控者呢?因此,我們需要有在 ISP 能窺知一切的情形下仍能維持匿名的方法。
區塊鏈能保護隱私、維持匿名嗎?
區塊鏈除了其本身運作的上層應用協定之外,還包含了下層網路協定。因此,這個問題可以分為應用層與網路層兩個部分來看 。
應用層
應用層負責實作狀態機複製(State Machine Replication),每個節點收到由共識背書的交易後,便可將交易內容作為轉換函數(Transition Function)於本機執行狀態轉換(State Transition)。
區塊鏈上的交易內容與狀態是應當被保護的隱私,一個保護隱私的直覺是:將所有的交易(Transaction)與狀態(State)加密。然而實際上,幾乎目前所有的主流區塊鏈,包含以太坊,其鏈上的交易及狀態皆為未加密的明文,用戶不僅可以查詢任一地址的交易歷史,還能知道任一地址呼叫某智能合約的次數與參數。也就是說,當今主流區塊鏈並未保護隱私。
雖然區塊鏈上的交易使用假名(Pseudonym),即地址(Address),但由於所有交易及狀態皆為明文,因此任何人都可以對所有假名進行分析並建構出用戶輪廓(User Profile)。更有研究[6]指出有些方法可以解析出假名與 IP 的映射關係(詳見下個段落),一旦 IP 與假名產生關聯,則用戶的每個行為都如同攤在陽光下一般赤裸。
區塊鏈的隱私問題很早便引起研究員的重視,因此目前已有諸多提供隱私保護的區塊鏈被提出,例如運用零知識證明(Zero-knowledge Proof)的 Zcash、運用環簽章(Ring Signature)的 Monero、 運用同態加密(Homomorphic Encryption)的 MimbleWimble 等等。區塊鏈隱私是一個大量涉及密碼學的艱澀主題,本文礙於篇幅不再深入探討,想深入鑽研的讀者不妨造訪台北以太坊社群專欄,其中有若干優質文章討論此一主題。
網路層
節點於應用層產生的共識訊息或交易訊息需透過網路層廣播(Broadcast)到其他節點。由於當今的主流區塊鏈節點皆未採取使網路維持匿名的技術,例如代理(Proxy)、虛擬私人網路(Virtual Private Network, VPN)或下文即將介紹的洋蔥路由(Onion Routing),因此區塊鏈無法使用戶維持匿名 — 因為對收到訊息的節點來說,它既知道廣播節點在做什麼(收到的訊息),也知道廣播節點是誰(訊息的 IP 位置)。
一個常見的問題是:使用假名難道不是匿名嗎?若能找到該假名與特定 IP 的映射關係的話就不是。一般來說,要找到與某假名對應的 IP 相當困難,幾可說是大海撈針,但是至少在下列兩種情況下可以找到對應關係:1. 該假名的用戶自願揭露真實 IP,例如在社群網站公開以太坊地址;2. 區塊鏈網路遭受去匿名化攻擊(Deanonymization Attack)[6]。
洩漏假名與 IP 的關聯會有什麼問題? 除了該 IP 的真實身份可能被揭露外,該區塊鏈節點亦可能遭受流量分析(Traffic Analysis)、服務阻斷(Denial of Service)或者審查(Censorship),可以說是有百害而無一利。
區塊鏈如何維持匿名?
其實上文已給出了能讓區塊鏈維持匿名的線索:現有匿名技術的應用。我們先來進一步理解區塊鏈網路層與深入探討網際網路協定的運作原理。
區塊鏈網路層的運作原理
P2P Overlay Network [7]
區塊鏈是一個對等網路(Peer-to-peer, P2P),而對等網路是一種覆蓋網路(Overlay Network),需建構於實體網路(Physical Network)之上。
覆蓋網路有兩種常見的通訊模式:一種是基於中繼的(Relay-based)通訊,在此通訊模式下的訊息皆有明確的接收端,因而節點會將不屬於自己的訊息中繼(Relay)給下一個可能是接收端的節點,分散式雜湊表(Distributed Hash Table, DHT)就是一種基於中繼的對等網路;另一種是基於廣播的(Broadcast-based)通訊,在此通訊模式下的訊息會被廣播給所有節點,節點會接收所有訊息,並且再度廣播至其他節點,直到網路中所有節點都收到該訊息,區塊鏈網路層就是一種基於廣播的對等網路。
覆蓋網路旨在將實體網路的通訊模式抽象化並於其上組成另一個拓墣(Topology)與路由機制(Routing Mechanism)。然而實際上,實體網路的通訊仍需遵循 TCP/IP 協定組的規範。那麼,實體網路又是如何運作的呢?
網際網路的運作原理
OSI Model vs TCP/IP Model
實體網路即是網際網路,它的發明可以追朔至 Robert Kahn 和 Vinton Cerf 於1974 年共同發表的原型[12],該原型經過數年的迭代後演變成我們當今使用的 TCP/IP 協定組[8]。全球資訊網(WWW)的發明更進一步驅使各國的 ISP 建立基於 TCP/IP 協定組的網路基礎建設。網際網路在多個國家經過近 30 年的部署後逐漸發展成今日的規模,成為邏輯上全球最巨大的單一網路。
1984 年,國際標準化組織(ISO)也發表了 OSI 概念模型[9],雖然較 TCP/IP 協定組晚了 10 年,但是 OSI 模型為日後可能出現的新協定提供了良好的理論框架,並且與 TCP/IP 協定組四層協定之間有映射關係,能夠很好地描述既存的 TCP/IP 協定組。
TCP/IP 協定組的各層各有不同的協定,且各層之間的運作細節是抽象的,究竟這樣一個龐大複雜的系統是如何運作的呢?
Packet Traveling [10][11]
事實上,封包的傳送正如同寄送包裹。例如筆者從台北寄一箱書到舊金山,假設每個包裹只能放若干本書,這箱書將分成多個包裹寄送,每個包裹需註明寄件地址、收件地址、收件者。寄送流程從郵局開始,一路經過台北物流中心 → 北台灣物流中心 → 基隆港 → 洛杉磯港 → 北加州物流中心 → 舊金山物流中心 → 收件者住處,最後由收件者收取。
這如同從 IP 位於台北的設備連上 IP 位於舊金山的網站,資料將被切分成多個固定大小的封包(Packet)之後個別帶上請求端 IP、響應端 IP 及其他必要資訊,接著便從最近的路由器(Router)出發,一路送至位於舊金山的伺服器(Server)。
每個包裹上的收件地址也如同 IP 位置,是全球唯一的位置識別。包裹的收件地址中除了包含收件者的所在城市、街道,還包含了門號,每個門號後都住著不同的收件者。門號正如同封包中後綴於 IP 的連接埠(Port),而住在不同門號的收件者也如同使用不同連接埠的應用程式(Application),分別在等待屬於他們的包裹。實際上,特定的連接埠會被分配給特定的應用程式,例如 Email 使用連接埠 25、HTTPS 使用連接埠 443 等等。
雖然包裹的最終目的地是收件地址,但包裹在運送途中也會有數個短程目的地 — 也就是各地的物流中心。包裹在各個物流中心之間移動,例如從北部物流中心到基隆港,再從基隆港到洛杉磯港,雖然其短程目的地會不斷改變,但其最終目的地會保持不變。
封包的最終目的地稱為端點(End),短程目的地稱為轉跳(Hop) — 也就是路由器(Router)。路由器能將封包從一個網段送至另一個網段,直到封包抵達其端點 IP 所在的網段為止。封包使用兩種定址方法:以 IP 表示端點的位置,而以 MAC 表示路由器的位置。這種從轉跳至轉跳(From Hop to Hop)的通訊是屬於 TCP/IP 協定組第一層:網路存取層(Network Access Layer)的協定。
那麼要如何決定包裹的下一個短程目的地呢?理論上,每個物流中心皆需選擇與最終目的地物理距離最短的物流中心作為下一個短期目的地。例如對寄到舊金山的包裹來說,位於基隆港的包裹下一站應該是洛杉磯港,而不是上海港。
封包則使用路由器中的路由表(Routing Table)來決定下一個轉跳位置,有數種不同的路由協定,例如 RIP / IGRP 等,可以進行路由表的更新。從端點到端點(From End to End)的通訊正是屬於 TCP/IP 協定組第二層:網際層(Internet Layer)的協定。
若一箱書需要分多次寄送,則可以採取不同的寄送策略。至於選擇何種寄送策略,則端看包裹內容物的屬性:
求穩定的策略:每個包裹都會有個序號,寄包裹前要先寫一封信通知收件者,收件者於收到信後需回信確認,寄件者收到確認信後“再”寫一次信告訴收件者「我收到了你的確認」,然後才能寄出包裹。收件者收到包裹後也需回確認信給寄件者,如果寄件者沒收到某序號包裹的回信,則會重寄該包裹。
求效率的策略:連續寄出所有的包裹,收件者不需回信確認。
橫跨多個封包的通訊是屬於 TCP/IP 協定組第三層:傳輸層(Transport Layer)的協定。這兩種策略也對應著傳輸層的兩個主要協定:TCP 與 UDP。TCP 注重穩定,它要求端點於傳送封包前必須先進行三向交握(Three-way Handshake),也就是確認彼此的確認,以建立穩固的連線,且端點在接收封包後也會回傳確認訊息,以確保沒有任何一個封包被遺失;反之,UDP 注重效率,它不要求端點在通訊前進行繁瑣的確認,而是直接傳送封包。
包裹本身亦可以裝載任何內容:這箱書可以是一套金庸全集,也可以是一年份的交換日記;同理,封包內的資料也可以是來自任何上層協定的內容,例如 HTTPS / SMTP / SSH / FTP 等等。這些上層協定都被歸類為 TCP/IP 協定組第四層:應用層(Application Layer)的協定。
維持匿名的技術
區塊鏈仰賴於實體網路傳送訊息,欲使區塊鏈網路層維持匿名,則需使實體網路維持匿名。那麼實體網路如何匿名呢? 若以寄包裹的例子來看,維持匿名,也就是不要讓收件者知道寄件地址。
一個直覺的思路是:先將包裹寄給某個中介(Intermediary),再由中介寄給收件者。如此收件者看到的寄件地址將會是中介的地址,而非原寄件者的地址 — 這也就是代理(Proxy)以及 VPN 等匿名技術所採取的作法。
不過這個作法的風險在於:寄件者必須選擇一個守口如瓶、值得信賴的中介。由於中介同時知道寄件地址與收件地址,倘若中介將寄件地址告知收件人,則寄件者的匿名性蕩然無存。
有沒有辦法可以避免使單一中介毀壞匿名性呢?一個中介不夠,那用兩個、三個、甚至多個呢?這便是洋蔥路由的基本思路。由於沒有任何一個中介同時知道寄件地址與收件地址,因此想破壞寄件者匿名性將變得更困難。
洋蔥路由與 Tor
洋蔥路由(Onion Routing)最初是為了保護美國政府情報通訊而開發的協定,後來卻因為其能幫助平民抵抗政府監控而變得世界聞名。
1997 年,Michael G. Reed、Paul F. Syverson 和 David M. Goldschlag 於美國海軍研究實驗室首先發明了洋蔥路由[13],而 Roger Dingledine 和 Nick Mathewson 於美國國防高等研究計劃署(DARPA)緊接著開始著手開發 Tor,第一版 Tor 於 2003 年釋出[14]。2004 年,美國海軍研究實驗室以自由軟體授權條款開放了 Tor 原始碼。此後,Tor 開始接受電子前哨基金會(Electronic Frontier Foundation)的資助;2006年,非營利組織「Tor 專案小組」(The Tor Project)成立,負責維護 Tor 直至今日。
Tor [15]是洋蔥路由的實作,它除了改進原始設計中的缺陷,例如線路(Circuit)的建立機制,也加入若干原始設計中沒有的部分,例如目錄伺服器(Directory Server)與洋蔥服務(Onion Service),使系統更強健且具有更高的匿名性。
Tor 自 2004 年上線至今已有超過 7000 個由志願者部署的節點,已然是一個強大的匿名工具。然而這也使其成為雙面刃:一方面它可以幫助吹哨者揭露不法、對抗監控;另一方面它也助長了販毒、走私等犯罪活動。但不論如何,其技術本身的精巧,才是本文所關注的重點。
Tor 的運作原理
Tor Overview [16]
Tor 是基於中繼的(Relay-based)覆蓋網路。Tor 的基本思路是:利用多個節點轉送封包,並且透過密碼學保證每個節點僅有局部資訊,沒有全局資訊,例如:每個節點皆無法同時得知請求端與響應端的 IP,也無法解析線路的完整組成。
Tor 節點也稱為洋蔥路由器(Onion Router),封包皆需透過由節點組成的線路(Circuit)傳送。要注意的是,Tor 線路僅是覆蓋網路中的路徑,並非實體網路的線路。每條線路皆由 3 個節點組成,請求端首先會與 3 個節點建立線路並分別與每個節點交換線路密鑰(Circuit Key)。
請求端會使用其擁有的 3 組線路密鑰對每個送出的封包進行 3 層加密,且最內層密文需用出口節點的密鑰、最外層密文需用入口節點的密鑰,如此才能確保線路上的節點都只能解開封包中屬於該節點的密文。被加密後的封包被稱為洋蔥,因其如洋蔥般可以被一層一層剝開,這就是洋蔥路由這個名稱的由來。
封包經過線路抵達出口節點後,便會由出口節點送往真正的響應端。同樣的線路也會被用於由響應端回傳的封包,只是這一次節點會將每個送來的封包加密後再回傳給上一個節點,如此請求端收到的封包就會仍是一顆多層加密的洋蔥。
那麼,請求端該選擇哪些節點來組成線路呢?Tor 引入了目錄伺服器(Directory Server)此一設計。目錄伺服器會列出 Tor 網路中所有可用的節點[17],請求端可以透過目錄伺服器選擇可用的洋蔥路由器以建立線路。目前 Tor 網路中有 9 個分別由不同組織維護的目錄,中心化的程度相當高,這也成為 Tor 安全上的隱憂。
Tor 線路的建立機制
Tor Circuit Construction [18]
Tor 是如何建立線路的呢?如上圖所示,Tor 運用伸縮(Telescoping)的策略來建立線路,從第一個節點開始,逐次推進到第三個節點。首先,請求端與第一個節點進行交握(Handshake)並使用橢圓曲線迪菲 — 赫爾曼密鑰交換(Elliptic Curve Diffie–Hellman key Exchange, ECDH)協定來進行線路密鑰的交換。
為了維持匿名,請求端接著再透過第一個節點向第二個節點交握。與第二個節點交換密鑰後,請求端再透過第一、二個節點向第三個節點交握與交換密鑰,如此慢慢地延伸線路直至其完全建立。線路建立後,請求端便能透過線路與響應端進行 TCP 連線,若順利連接,便可以開始透過線路傳送封包。
洋蔥服務
Clearnet, Deepweb and Darknet [21]
洋蔥服務(Onion Service)/ 隱藏服務(Hidden Service)是暗網(Darknet)的一部分,是一種必須使用特殊軟體,例如 Tor,才能造訪的服務;與暗網相對的是明網(Clearnet),表示可以被搜尋引擎索引的各種服務;深網(Deep Web)則是指未被索引的服務,這些服務不需要特殊軟體也能造訪,與暗網不同。
當透過 Tor 使用洋蔥服務時,請求端與響應端都將不會知道彼此的 IP,只有被響應端選定的節點:介紹點(Introduction Point)會引領請求端至另一個節點:會面點(Rendezvous Point),兩端再分別與會面點建立線路以進行通訊。也就是說,請求端的封包必須經過 6 個節點的轉送才能送往響應端,而所有的資料也會採取端對端加密(End-to-end Encryption),安全強度非常高。
洋蔥服務及暗網是一個令人興奮的主題,礙於篇幅,筆者將另撰文闡述。
混合網路、大蒜路由與洋蔥路由
這裡再接著介紹兩個與洋蔥路由系出同源的匿名技術:混合網路與大蒜路由。
Mix Network Overview [22]
混合網路(Mix Network)早在 1981 年就由 David Chaum 發明出來了[23],可以說是匿名技術的始祖。
洋蔥路由的安全性奠基於「攻擊者無法獲得全局資訊」的假設[24],然而一旦有攻擊者具有監控多個 ISP 流量的能力,則攻擊者仍然可以獲知線路的組成,並對其進行流量分析;混合網路則不僅會混合線路節點,還會混合來自不同節點的訊息,就算攻擊者可以監控全球 ISP 的流量,混合網路也能保證維持匿名性。
然而高安全性的代價就是高延遲(Latency),這導致混合網路無法被大規模應用,或許洋蔥路由的設計是一種為了實現低延遲的妥協。
Garlic Routing Overview [25]
混合網路啟發了洋蔥路由,洋蔥路由也啟發了大蒜路由。2003年上線的 I2P(Invisible Internet Project)便是基於大蒜路由(Garlic Routing)的開源軟體,可以視為是去中心化版的 Tor。幾乎所有大蒜路由中的組件,在洋蔥路由中都有對應的概念:例如大蒜路由的隧道(Tunnel)即是洋蔥路由的線路;I2P 的網路資料庫(NetDB)即是 Tor 的目錄;I2P中的匿名服務(Eepsite)即是 Tor 的洋蔥服務。
不過,大蒜路由也有其創新之處:它允許多個封包共用隧道以節省建立隧道的成本,且其使用的網路資料庫實際上是一個分散式雜湊表(DHT),這使 I2P 的運作徹底去中心化。若想進一步理解 DHT 的運作原理,可以參考筆者之前所撰寫的文章:
連Ethereum都在用!用一個例子徹底理解DHT
I2P 最大的詬病就是連線速度太慢,一個缺乏激勵的去中心化網路恐怕很難吸引足夠的節點願意持續貢獻頻寬與電費。
區塊鏈與洋蔥路由
那麼,基於實體網路的區塊鏈能不能使用洋蔥路由或大蒜路由/混合網路/其他技術,以維持節點的匿名?答案是肯定的。事實上,目前已經出現數個專案與提案:
全新的專案
Dusk:實作大蒜路由的區塊鏈[32],不過官方已宣布因其影響網路效能而暫停開發此功能。
cMix:透過預先計算(Precomputation)以實現低延遲的混合網路[33],是混合網路發明者 David Chaum 近期的研究,值得期待。
Loki:結合 Monero 與 Tor/I2P 的區塊鏈 [34],並使用代幣激勵節點貢獻頻寬與電力,由其白皮書可以看出發明者對於匿名技術的熱愛與信仰。
於主流區塊鏈的提案
比特幣:全世界第一條區塊鏈,將於其網路使用一個不同於洋蔥路由的匿名技術:Dandelion++[30][31],該匿名技術因其訊息傳播路徑的形狀類似浦公英而得其名。
閃電網路(Lightning Network):知名的比特幣第二層方案,將於其網路內實作洋蔥路由[27]。
Monero:使用環簽章保護用戶隱私的區塊鏈,將於其網路內實作大蒜路由,已開發出 Kovri[28] 並成為 I2P 官方認可的客戶端之一[29]。
於以太坊的提案
2018 年 12 月,Mustafa Al-Bassam 於以太坊官方研究論壇提議利用洋蔥路由改進輕節點之資料可得性(Light Client Data Availability)[36]。若讀者想了解更多關於以太坊輕節點的研究,可以參考台北以太坊社群專欄的這篇文章。資料可得性是輕節點實現的關鍵,而這之中更關鍵的是:如何向第三方證明全節點的資料可得性?由於這個提案巧妙地運用了洋蔥路由的特性,因此在今年 7 月在另一則討論中,Vitalik 亦強烈建議應儘速使洋蔥路由成為以太坊的標準[35]。
在這個提案中,輕節點需建立洋蔥路由線路,然而線路節點並非由目錄中挑選,而是由前一個節點的可驗證隨機函數(Verifiable Random Function, VRF)決定。例如線路中的第二個節點需由第一個節點的 VRF 決定。線路建立後,出口節點便可以接著向全節點請求特定的可驗證資料。由於輕節點在過程中維持匿名,因此可以防止全節點對輕節點的審查(Censoring)。取得可驗證資料後,其便與 VRF 證明沿著原線路傳回輕節點,輕節點再將可驗證資料與 VRF 證明提交至合約由第三方驗證。若第三方驗證正確,則資料可得性得證。
結語
隱私與匿名是自由的最後一道防線,我們應該盡可能地捍衛它,不論是透過本文介紹的匿名技術或者其他方式。然而,一個能保護隱私與維持匿名的區塊鏈是否能實現真正的去中心化?這是一個值得深思的問題。
本文也是筆者研究區塊鏈至今跨度最廣的一篇文章,希望讀者能如我一樣享受這段令人驚奇又興奮的探索旅程。
參考資料
[1] Jingwang Weishi, Wikipedia
[2] PRISM, Wikipedia
[3] privacytools.io
[4] Nothing-to-hide Argument, Wikipedia
[5] Anonymity vs Privacy vs Security
[6] Deanonymisation of Clients in Bitcoin P2P Network, Alex Biryukov, Dmitry Khovratovich, Ivan Pustogarov, 2014
[7] Example: P2P system topology
[8] Internet protocol suite, Wikipedia
[9] OSI model, Wikipedia
[10] Packet Traveling: OSI Model
[11] Packet Traveling — How Packets Move Through a Network
[12] A Protocol for Packet Network Intercommunication, VINTON G. CERF, ROBERT E. KAHN, 1974
[13] Anonymous Connections and Onion Routing, Michael G. Reed, Paul F. Syverson, and David M. Goldschlag, 1998
[14] Tor: The Second-Generation Onion Router, Roger Dingledine, Nick Mathewson, Paul Syverson, 2004
[15] Tor, Wikipedia
[16] What actually is the Darknet?
[17] Tor Network Status
[18] Inside Job: Applying Traffic Analysis to Measure Tor from Within, Rob Jansen, Marc Juarez, Rafa Galvez, Tariq Elahi, Claudia Diaz, 2018
[19] How Does Tor Really Work? The Definitive Visual Guide (2019)
[20] Tor Circuit Construction via Telescoping
[21] The DarkNet and its role in online piracy
[22] Mix network, Wikipedia
[23] Untraceable Electronic Mail, Return Addresses, and Digital Pseudonyms, David Chaum, 1981
[24] The differences between onion routing and mix networks
[25] Monitoring the I2P network, Juan Pablo Timpanaro, Isabelle Chrisment, Olivier Festor, 2011
[26] I2P Data Communication System, Bassam Zantout, Ramzi A. Haraty, 2002
[27] BOLT #4: Onion Routing Protocol
[28] Kovri
[29] Alternative I2P clients
[30] Bitcoin BIP-0156
[31] Dandelion++: Lightweight Cryptocurrency Networking with Formal Anonymity Guarantees, Giulia Fanti, Shaileshh Bojja Venkatakrishnan, Surya Bakshi, Bradley Denby, Shruti Bhargava, Andrew Miller, Pramod Viswanath, 2018
[32] The Dusk Network Whitepaper, Toghrul Maharramov, Dmitry Khovratovich, Emanuele Francioni, Fulvio Venturelli, 2019
[33] cMix: Mixing with Minimal Real-Time Asymmetric Cryptographic Operations, David Chaum, Debajyoti Das, Farid Javani, Aniket Kate, Anna Krasnova, Joeri De Ruiter, Alan T. Sherman, 2017
[34] Loki: Private transactions, decentralised communication, Kee Jefferys, Simon Harman, Johnathan Ross, Paul McLean, 2018
[35] Open Research Questions For Phases 0 to 2
[36] Towards on-chain non-interactive data availability proofs
隱私、區塊鏈與洋蔥路由 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌