2018年3月21-22日,由中國(guó)信息通信研究院主辦、中國(guó)通信標(biāo)準(zhǔn)化協(xié)會(huì)支持的"OSCAR云計(jì)算開源產(chǎn)業(yè)大會(huì)"在國(guó)家會(huì)議中心舉行。
隨著云計(jì)算技術(shù)的日益發(fā)展,并開始進(jìn)入“深水區(qū)”,開源技術(shù)與云計(jì)算融合的程度進(jìn)一步加深,并開始成為產(chǎn)業(yè)發(fā)展的重要支撐。"OSCAR云計(jì)算開源產(chǎn)業(yè)大會(huì)"將邀請(qǐng)行業(yè)內(nèi)多位大咖與權(quán)重人物共同探討、交流云計(jì)算開源技術(shù)、研發(fā)、治理、產(chǎn)業(yè)化方面的經(jīng)驗(yàn),探索開源與云計(jì)算的創(chuàng)新發(fā)展新路徑。
OpenSSL代碼貢獻(xiàn)榜華人第一、白山架構(gòu)師楊洋,他帶來(lái)的主題是《后心臟滴血時(shí)代的OpenSSL》,以下為演講全文:大家下午好,我今天講的跟開源更貼近一些。我今天為什么講這個(gè)話題呢?主要是因?yàn)楝F(xiàn)在這個(gè)時(shí)間點(diǎn)是一個(gè)特別寸的點(diǎn),2014年4月份,正好心臟滴血漏洞爆出來(lái),公開是4月份,實(shí)際上大概是在3月下旬,所以今天這個(gè)時(shí)間應(yīng)該是整個(gè)漏洞爆出來(lái)整四年的時(shí)間點(diǎn)。很多人好奇四年時(shí)間過(guò)去了,OpenSSL這個(gè)項(xiàng)目在經(jīng)歷了這么長(zhǎng)的時(shí)間以后,究竟發(fā)展成什么樣了,是不是還像當(dāng)時(shí)那樣代碼寫得特別爛,產(chǎn)品質(zhì)量特別差。我今天想借這個(gè)機(jī)會(huì)跟大家講講過(guò)去四年中,我們整個(gè)社區(qū)在做的一些事,包括代碼質(zhì)量提升、社區(qū)建設(shè)的幾個(gè)方面。
楊洋
這是我的個(gè)人基本信息,我現(xiàn)在是白山云的全職雇員,在到白山之前我主要做的就是傳統(tǒng)的安全工作,包括傳統(tǒng)的網(wǎng)絡(luò)安全開發(fā)等等。如果聊后心臟滴血時(shí)代,最早還是要從心臟滴血開始說(shuō)起,CVE—2014—0160,這是非常龐大的一個(gè)bug,可以導(dǎo)致服務(wù)器當(dāng)中的敏感數(shù)據(jù)被竊取,包括用戶名、密碼、密鑰、非對(duì)稱的證書,在你的數(shù)據(jù)庫(kù)當(dāng)中保存的敏感數(shù)據(jù)都有機(jī)會(huì)被竊取到。bug的原因是因?yàn)橐粋€(gè)非常簡(jiǎn)單和低級(jí)的錯(cuò)誤,用錢無(wú)法衡量這個(gè)經(jīng)濟(jì)損失大概有多少。2017年1月份的時(shí)候,互聯(lián)網(wǎng)還有接近20萬(wàn)個(gè)域名還在運(yùn)行著這幾個(gè)受威脅影響的判斷。
心臟滴血這個(gè)事情發(fā)生之后,給整個(gè)社區(qū)帶來(lái)的影響非常之巨大,批評(píng)的聲音特別多,當(dāng)然這個(gè)項(xiàng)目本身也得到了巨大的空前的關(guān)注,以前沒(méi)有人去特別關(guān)注這樣一個(gè)如此底層的加密庫(kù)。從這個(gè)事件之后,我們最直接的好處就是收到了很多來(lái)自于個(gè)人和企業(yè)的捐款,項(xiàng)目突然有錢了,有錢之后就可以雇一些專職開源工作者去完善。
另外一個(gè)比較大的事情,我認(rèn)為是它促成了CII的成立,CII是Lilnx基金會(huì)聯(lián)合了十幾家全球大型的IT公司,包括像英特爾、微軟,中國(guó)的華為,成立了一個(gè)項(xiàng)目,因?yàn)檫@個(gè)心臟滴血漏洞在整個(gè)國(guó)際開源社區(qū)里引起了一個(gè)特別激烈的反思,為什么我們整個(gè)互聯(lián)網(wǎng)基礎(chǔ)都是基于開源軟件前提下,但是現(xiàn)在很多開源軟件的關(guān)注點(diǎn)不夠,資金短缺,產(chǎn)品質(zhì)量特別差,如果長(zhǎng)時(shí)間下去的話,是不是互聯(lián)網(wǎng)機(jī)組要垮掉。所以,Lilnx基金會(huì)牽頭成立了一個(gè)CII項(xiàng)目,目的就是致力于去幫助這些在互聯(lián)網(wǎng)中廣泛應(yīng)用但是當(dāng)前的發(fā)展?fàn)顩r還不是特別好的開源項(xiàng)目,把它們變得更好。
當(dāng)然OpenSSL作為心臟滴血惹了這么大禍的項(xiàng)目,肯定是作為第一個(gè)納入到CII當(dāng)中去的項(xiàng)目,CII給了整個(gè)項(xiàng)目很大的幫助,包括在法律、社區(qū)建設(shè)、代碼的開發(fā)流程和團(tuán)隊(duì)的組織,甚至包括直接給我們提供資金去雇人。
我接下來(lái)會(huì)按照時(shí)間順序講一下這四年當(dāng)中OpenSSL掌握的幾個(gè)主要的發(fā)布版本。1.0.2嚴(yán)格意義上來(lái)講,它并不是一個(gè)后心臟滴血時(shí)代的版,正在發(fā)beta版的時(shí)候正好是心臟滴血爆發(fā)的時(shí)候,研發(fā)之前心臟滴血就已經(jīng)做了,由于漏洞影響特別大,所以一直推遲到2015年1月才釋放出來(lái)。為什么還要講這個(gè)版?它在OpenSSL產(chǎn)品歷史上頭一次引入了LTS版本,長(zhǎng)期支持版本的意思是說(shuō)它從2015年會(huì)直接支持到2019年底,每隔四年會(huì)釋放一個(gè)LTS,這在OpenSSL過(guò)去20年的歷史上都是沒(méi)有的。
第二個(gè)版本是升級(jí)版1.1.0,這也是目前互聯(lián)網(wǎng)上使用最多的版本,距離上一個(gè)版本將近兩年左右的時(shí)間發(fā)布的一個(gè)新版,但是它不是一個(gè)長(zhǎng)期支持的版本。這個(gè)版本的生命周期將會(huì)在最新的1.1.1版本發(fā)布之后繼續(xù)持續(xù)支持一年。我說(shuō)的繼續(xù)支持是指不會(huì)增加新的功能,只會(huì)進(jìn)行bug和安全性能的修復(fù)。它基本上是屬于一個(gè)脫胎換骨的產(chǎn)品,整個(gè)團(tuán)隊(duì)花費(fèi)了大量的時(shí)間和精力去開發(fā)。OpenSSL誕生的時(shí)間特別長(zhǎng),在1995年左右,那時(shí)候支持的操作系統(tǒng)特別多,很多操作系統(tǒng)現(xiàn)在已經(jīng)消亡了,如果在1.0.1當(dāng)中我記得還是支持dos,現(xiàn)在已經(jīng)沒(méi)有人用了。新的平臺(tái)策略現(xiàn)在只支持三個(gè)平臺(tái)。另外一個(gè)改進(jìn)是不安全算法的移除和默認(rèn)關(guān)閉,特別不安全的協(xié)議直接從代碼中刪除掉,默認(rèn)關(guān)閉是像24或者其他的安全系數(shù)比較低的加密算法。編碼風(fēng)格進(jìn)行了轉(zhuǎn)換,以前的代碼閱讀體驗(yàn)特別差。另外一個(gè)就是隱藏結(jié)構(gòu)體,所有庫(kù)當(dāng)中的結(jié)構(gòu)體都可以直接在應(yīng)用程序中訪問(wèn),為了安全起見,更加面向?qū)ο蠡?,所以?.1.0版本里面只能通過(guò)API訪問(wèn)數(shù)據(jù)。