內(nèi)蒙古電力(集團(tuán))有限責(zé)任公司信息通信分公司 汪 嘯 額爾敦 王 博 尹夢(mèng)賓
開(kāi)源軟件。一種版權(quán)持有人向公眾公開(kāi)軟件源代碼,并允許公眾下載、編譯。在許可證授權(quán)范圍內(nèi),可進(jìn)行修改、調(diào)用、分發(fā)等。
開(kāi)源許可證。源代碼版權(quán)所有人與被授權(quán)人就源代碼使用達(dá)成的協(xié)議。因源代碼已經(jīng)面向公眾公開(kāi),故協(xié)議以要約方式存在。即潛在被授權(quán)人在取得源代碼時(shí)默認(rèn)接受,在對(duì)代碼行使約定權(quán)利時(shí)同時(shí)遵守約定義務(wù)。在工程實(shí)踐中,源代碼用戶在下載、編譯、使用軟件時(shí),默認(rèn)接受開(kāi)源許可證規(guī)定的全部條款。
使用開(kāi)源軟件可降低軟件研發(fā)成本。隨著“云、大、物、移、智、鏈”技術(shù)發(fā)展,“產(chǎn)業(yè)+互聯(lián)網(wǎng)”模式逐步落地,大量的業(yè)務(wù)需求驅(qū)動(dòng)軟件研發(fā)提質(zhì)增效。原有“成套軟件”模式適用于業(yè)務(wù)、用量相對(duì)固定(或可預(yù)測(cè))的場(chǎng)景。在產(chǎn)業(yè)互聯(lián)網(wǎng)化的背景下,繼續(xù)采取“成套軟件”進(jìn)行定制化開(kāi)發(fā)以滿足業(yè)務(wù)需求,存在開(kāi)發(fā)周期長(zhǎng)、變更周期長(zhǎng)、二次開(kāi)發(fā)困難、開(kāi)發(fā)成本高等問(wèn)題。隨著開(kāi)源軟件生態(tài)不斷成熟,依托開(kāi)源軟件平臺(tái)進(jìn)行開(kāi)發(fā),引入開(kāi)源代碼,降低開(kāi)發(fā)工作量,可有效應(yīng)對(duì)上述問(wèn)題。
提高軟件行業(yè)“核高基”方面的自主可控能力。我國(guó)軟件行業(yè)起步較發(fā)達(dá)國(guó)家晚,軟件產(chǎn)業(yè)生態(tài)和自主可控能力存在一定不足。特別是在核心平臺(tái)軟件、高科技裝備支撐軟件、基礎(chǔ)科研軟件等方面對(duì)國(guó)外技術(shù)存在一定依賴。因國(guó)外企業(yè)在軟件研發(fā)方面有長(zhǎng)期的行業(yè)經(jīng)驗(yàn)積累和開(kāi)發(fā)技術(shù)儲(chǔ)備,在短時(shí)間內(nèi)進(jìn)行“直道超車”可能性較低。在本行業(yè)內(nèi)廣泛應(yīng)用開(kāi)源軟件的背景下,依托開(kāi)源代碼基礎(chǔ)進(jìn)行二次開(kāi)發(fā),有利于實(shí)現(xiàn)“彎道超車”。
代碼級(jí)應(yīng)用。在進(jìn)行軟件開(kāi)發(fā)時(shí),開(kāi)發(fā)人員將開(kāi)源代碼以函數(shù)、實(shí)例、庫(kù)等等形式復(fù)制到自己的工作成果中,形成隱含代碼式引用。
軟件級(jí)應(yīng)用。在進(jìn)行軟件集成時(shí),實(shí)施人員將開(kāi)源軟件整體進(jìn)行封裝,作為二次開(kāi)發(fā)基礎(chǔ)或者應(yīng)用系統(tǒng)關(guān)鍵部件,形成成套引用。
系統(tǒng)級(jí)應(yīng)用。在進(jìn)行系統(tǒng)構(gòu)建時(shí),實(shí)施人員將社區(qū)版/商用版開(kāi)源系統(tǒng)直接部署到生產(chǎn)環(huán)境,整體使用,形成系統(tǒng)級(jí)應(yīng)用。
工具級(jí)應(yīng)用。在進(jìn)行軟件開(kāi)發(fā)、集成、系統(tǒng)構(gòu)建等工作時(shí),將開(kāi)源軟件作為開(kāi)發(fā)平臺(tái)、管理平臺(tái)、技術(shù)工具、辦公軟件等,獨(dú)立使用。
開(kāi)源軟件相較于傳統(tǒng)商業(yè)化軟件,在成本方面有顯著優(yōu)勢(shì)。對(duì)軟件二次開(kāi)發(fā)難度較小,有效提升了系統(tǒng)靈活性。由于開(kāi)源軟件使用廣泛,其生態(tài)較為完善,運(yùn)維市場(chǎng)較為成熟,有利于開(kāi)源軟件應(yīng)用。從風(fēng)險(xiǎn)管控角度來(lái)看,存在不同程度的知識(shí)產(chǎn)權(quán)問(wèn)題、技術(shù)出口管控問(wèn)題、質(zhì)量與安全問(wèn)題,且需要得到重視。
以BSD許可證為例。BSD許可證要求,當(dāng)軟件源代碼持有人對(duì)所獲得的BSD授權(quán)軟件源代碼進(jìn)行修改,修改后的作品再分發(fā)時(shí),按照BSD許可約定作出版權(quán)聲明。聲明中包括對(duì)其獲得的BSD授權(quán)原創(chuàng)軟件作品(源代碼)的版權(quán)(所有權(quán))內(nèi)容。這就要求軟件的二次及以上開(kāi)發(fā)作者要區(qū)分各版本軟件的初始代碼及增量代碼所涉及的許可證,按照BSD許可要求進(jìn)行引用說(shuō)明。
在軟件開(kāi)發(fā)過(guò)程中,源代碼來(lái)源多樣情況普遍存在,易導(dǎo)致引用不規(guī)范的情況出現(xiàn)。
以GPL許可證為例。GPL許可證要求,承認(rèn)軟件作品作者的著作權(quán)(所有權(quán)),軟件的二次及以上開(kāi)發(fā)者必須允許其他人享有對(duì)其作品使用、修改、發(fā)行等權(quán)利。同時(shí)GPL許可證要求用戶(含二次及以上開(kāi)發(fā)者)不能改變軟件的授權(quán)協(xié)議,即二次及以上修改版本再發(fā)行時(shí),仍然按照GPL許可授權(quán)。由此可見(jiàn),當(dāng)源代碼作為整體發(fā)行時(shí),是基于GPL協(xié)議完全開(kāi)源的,不會(huì)出現(xiàn)閉源情況。此外,GPL許可證為唯一許可授權(quán),不接受混合授權(quán),即無(wú)法通過(guò)其他許可證形式發(fā)布。
在軟件開(kāi)發(fā)、部署、使用的過(guò)程中,不可避免使用GPL授權(quán)軟件產(chǎn)品。如對(duì)這些產(chǎn)品進(jìn)行二次及以上開(kāi)發(fā),易導(dǎo)致授權(quán)傳染或強(qiáng)制開(kāi)源的情況出現(xiàn)。例如:1授權(quán)傳染。使用了GPL許可證授權(quán)的軟件,根據(jù)現(xiàn)場(chǎng)情況對(duì)源代碼進(jìn)行修改,則修改后的軟件則為GPL授權(quán)軟件,遵循GPL授權(quán)原則。無(wú)法閉源。2強(qiáng)制開(kāi)源。修改后的軟件按照GPL授權(quán)約定,需要對(duì)公眾發(fā)布。
各個(gè)開(kāi)源許可證對(duì)修改源代碼后是否閉源、新增源代碼是否遵循相同的許可證、修改源代碼后是否要提供說(shuō)明文檔等有較為詳細(xì)的規(guī)定,開(kāi)源許可證對(duì)軟件中涉及的專利使用與授權(quán)的約定相對(duì)模糊。針對(duì)專利權(quán)使用與授權(quán),有的開(kāi)源許可證明確規(guī)定,有的并不涉及。
在軟件開(kāi)發(fā)過(guò)程中,可能使用已經(jīng)注冊(cè)專利的算法或代碼,涉及到專利運(yùn)用問(wèn)題。如對(duì)這些程序進(jìn)行二次及以上開(kāi)發(fā),易導(dǎo)致不當(dāng)使用專利的情況出現(xiàn)。例如:1專利防御。APSL-2.0規(guī)定了終止條款“如果獲取者開(kāi)始對(duì)A公司提起專利侵權(quán)訴訟,該許可和權(quán)利授予將無(wú)需A公司進(jìn)行通知地自動(dòng)終止,前提是A公司在該情況中沒(méi)有首先提起專利侵權(quán)訴訟”。APSL-2.0開(kāi)源協(xié)議中設(shè)置了條款來(lái)保護(hù)A公司權(quán)益。2專利誘餌。軟件作者或二級(jí)及以上開(kāi)發(fā)者在源代碼中加入收到專利保護(hù)的代碼或算法,同時(shí)依據(jù)開(kāi)源許可證授權(quán)細(xì)則保留對(duì)專利的控制性授權(quán)權(quán)利,當(dāng)其他組織或個(gè)人使用該軟件時(shí),造成侵權(quán)事實(shí)發(fā)生。特別是在廣泛應(yīng)用或應(yīng)用在核心業(yè)務(wù)或系統(tǒng)中,造成專利授權(quán)費(fèi)高昂或改造成本巨大的兩難局面。
以當(dāng)前軟件行業(yè)生態(tài)來(lái)看,世界各公司以會(huì)員身份加入開(kāi)源軟件基金會(huì)并貢獻(xiàn)源代碼為主流形式,其中大量源代碼由注冊(cè)于A國(guó)企業(yè)生產(chǎn)并提供,同時(shí)頒發(fā)Apache、GCC、MIT、BSD、GPL(GNU)/LGPL等授權(quán)的組織均在A國(guó)注冊(cè),且主流開(kāi)源托管平臺(tái)(例如Github)服務(wù)器也位于A國(guó)境內(nèi)。由此可見(jiàn),開(kāi)源軟件生產(chǎn)階段不可避免地受到A國(guó)法律管制。在國(guó)際關(guān)系風(fēng)云變幻的背景下,出口管制問(wèn)題易發(fā)、多發(fā)。A國(guó)利用產(chǎn)業(yè)上游階段技術(shù)優(yōu)勢(shì),通過(guò)出口管制手段,制裁過(guò)Z、H等公司,以達(dá)到相應(yīng)目的。
雖然開(kāi)源代碼屬于外國(guó)BIS(商業(yè)、工業(yè)及安全局)規(guī)定的公開(kāi)發(fā)布的范疇,不受外國(guó)EAR(出口管理?xiàng)l例)約束。但是涉及加密軟件源代碼的開(kāi)源項(xiàng)目仍然需要備案。考慮到釋法、修法的主動(dòng)權(quán)在A國(guó),故A國(guó)對(duì)開(kāi)源軟件進(jìn)行出口管制風(fēng)險(xiǎn)依然存在。
目前,從軟件行業(yè)生態(tài)體系來(lái)看,具備完全且完整自主可控的主流軟件軟件產(chǎn)品相對(duì)缺乏。大部分軟件項(xiàng)目均不同程度使用開(kāi)源代碼,故此類項(xiàng)目自主可控能力相對(duì)弱化。
參與開(kāi)源軟件代碼開(kāi)發(fā)的主體來(lái)源多樣,既有個(gè)人,也有政府、高校、研究機(jī)構(gòu)等組織,各類型組織對(duì)代碼質(zhì)量管控措施不同,導(dǎo)致代碼質(zhì)量不可控因素增多。代碼審計(jì)工作也存在類似問(wèn)題,導(dǎo)致代碼安全風(fēng)險(xiǎn)不能被有效降低或消除。
軟件質(zhì)量風(fēng)險(xiǎn)或安全風(fēng)險(xiǎn)顯現(xiàn)時(shí),受開(kāi)發(fā)主體能力限制,無(wú)法在第一時(shí)間完成漏洞修復(fù)工作,導(dǎo)致漏洞引發(fā)的信息系統(tǒng)運(yùn)行故障和網(wǎng)絡(luò)安全事故擴(kuò)大化。對(duì)于典型的“0Day漏洞”,高效開(kāi)發(fā)主體提供的補(bǔ)丁修復(fù)時(shí)間在1天至1周,一般開(kāi)發(fā)主體以月或年為單位完成補(bǔ)丁發(fā)布,其他開(kāi)發(fā)主體甚至無(wú)法進(jìn)行修復(fù)。在修復(fù)前,信息安全體系相對(duì)薄弱的單位或個(gè)人將無(wú)法有效應(yīng)對(duì)。
若代碼來(lái)源可疑又未經(jīng)審核,病毒、木馬等惡意代碼隨開(kāi)源軟件進(jìn)入部署環(huán)境情況發(fā)生,將導(dǎo)致更為嚴(yán)重的安全問(wèn)題。
操作系統(tǒng)。Linux是一種廣泛用于服務(wù)器的操作系統(tǒng)。使用GNU/GLP許可證,故各種商業(yè)版本如Redhat、Fedora、SuSe以及Ubuntu、Slackware、Gentoo、Debian、centos均可以免費(fèi)下載、使用?;贚inux的商業(yè)利益在于服務(wù),而非常用的軟件許可證授權(quán)。
數(shù)據(jù)庫(kù)。Mysql數(shù)據(jù)庫(kù)作為分布式架構(gòu)的核心,使用GPL/GNU許可證。而postgre數(shù)據(jù)庫(kù)使用BSD/MIT許可證。故基于Mysql源碼修改的版本均遵循GPL許可證,而基于postgre源碼修改版本需按照規(guī)則引用。
應(yīng)用中間件。Tomcat是一種開(kāi)源應(yīng)用中間件,使用Apache許可證。故基于tomcat源碼修改版本需按照規(guī)則引用。
分布式負(fù)載。Nginx是一種開(kāi)源分布式負(fù)載,使用BSD許可證。故基于BSD源碼修改版本需按照規(guī)則引用。
云平臺(tái)軟件。OpenStack是一種開(kāi)源云平臺(tái)管理軟件,使用Apache許可證。故基于OpenStack源碼修改版本需按照規(guī)則引用。云平臺(tái)的虛擬化引擎KVM則為GPL許可證。
容器軟件。Kubernetes是一種開(kāi)源容器引擎管理軟件。容器引擎Docker使用Apache許可證。
S公司以自主可控為目標(biāo),基于Linux、Mysql、Postgre源碼開(kāi)發(fā)可用于重要業(yè)務(wù)的可視化操作系統(tǒng)、關(guān)系型數(shù)據(jù)庫(kù)。根據(jù)上述軟件的開(kāi)源許可證可以推斷,除基于postgre源碼開(kāi)發(fā)的數(shù)據(jù)庫(kù)以外,均受到開(kāi)源傳染影響,需要按照約定公開(kāi)源碼,故其通過(guò)隱藏源碼確保安全的行為存在法律風(fēng)險(xiǎn)。
Q公司以自主可控為目標(biāo),基于Linux源碼開(kāi)發(fā)可用于重要業(yè)務(wù)的可視化操作系統(tǒng),并將其商業(yè)化。根據(jù)上述軟件的開(kāi)源許可證可以推斷,均受到開(kāi)源傳染影響,需要按照約定公開(kāi)源碼,故其通過(guò)隱藏源碼確保安全的行為存在法律風(fēng)險(xiǎn)。公開(kāi)源碼后,通過(guò)軟件授權(quán)形式銷售存在無(wú)法獲得收益的風(fēng)險(xiǎn)。
運(yùn)用開(kāi)源軟件對(duì)于降低信息系統(tǒng)建設(shè)成本,提高自主可控能力具有積極意義。同時(shí),應(yīng)認(rèn)識(shí)到開(kāi)源軟件在應(yīng)用過(guò)程中,存在不當(dāng)引用或引用不當(dāng)、授權(quán)傳染或強(qiáng)制開(kāi)源、專利防御或?qū)@T餌、出口管制或弱自主可控、代碼質(zhì)量及安全問(wèn)題等風(fēng)險(xiǎn)。使用單位應(yīng)開(kāi)展風(fēng)險(xiǎn)管理工作,進(jìn)行風(fēng)險(xiǎn)管控。