開源軟件網絡安全的法律問題受到境外的進出口監(jiān)管和境內《網絡安全法》的雙重考驗。境外國家基于主權的出口規(guī)則穿透并從軟件、源碼、人員、平臺等角度分別對開源進行監(jiān)管,本國《網絡安全法》的體系規(guī)則則對開源的繁榮與安全之間的平衡重新設定了評價機制。在兩者多因素作用下, 開源軟件的網絡安全實踐活動需要審慎調整以迎合或規(guī)避監(jiān)管規(guī)則變化帶來的深刻挑戰(zhàn)。
本文分析了開源軟件的協(xié)議安全問題,以事件導向引入并回答了合同與進出口監(jiān)管沖突的若干問題,并以此為契機對開源軟件的網絡安全法律問題進行了梳理,提出了相應建議。
1 背景
2019 年 5 月, 公開信息顯示 Linux 基金會就列入美國商務部實體名單實體的開源軟件適用性和是否限制出口作出了聲明,其主要觀點涉及四點:
(1)當前在法律上對名單實體的限制主要圍繞出口監(jiān)管規(guī)則(EAR)進行;
?。?)對于開源軟件中的開源加密軟件的源碼,已經屬于“可公開獲取”的物項,因此不受EAR 監(jiān)管;
?。?)單獨的開源(軟件)項目(按照公開信息顯示目前維護數量大致在 123 個)仍然應當向商務部工業(yè)與安全局(BIS)和國家安全局(NSA) 履行EAR 規(guī)定通知要求,方能滿足“可公開獲取” 的條件;
?。?)開源軟件、開源代碼協(xié)作、會議、培訓、會員資格或贊助屬于不受 EAR 約束的活動。
結合該聲明及其前后的各方解讀,產生了以下幾個主要問題:
一是開源協(xié)議是否能夠抗辯出口監(jiān)管;
二是如果開源協(xié)議不能或不足以抗辯出口監(jiān)管,如何在出口監(jiān)管規(guī)則中尋求開源出口的合規(guī),或者說例外適用;
三是如果已知案例認定開源(代碼)作為言論自由的表達, 這些既有的經典案例是否足以繼續(xù)支撐“表達的出口”,是否可能只需一個案例就可顛覆經典, 還是需要通過修改EAR 才能限制“表達的出口”;四是一些技術救濟方式,例如同步、鏡像、分支等等是否可采、可行;五是是否還有更為有效的激發(fā)開源活力和提升安全的機制。
本文嘗試對上述問題進行一些粗淺的分析, 以期深入業(yè)界對開源的長遠思考和布局,繁榮開源發(fā)展。為了聚焦本意,本文不再嚴格區(qū)分自由軟件等概念。
2開源軟件網絡安全的法律問題
2.1開源協(xié)議及其脆弱性
所謂的開源協(xié)議,實際上主要指包括開源軟件在內的著作權許可協(xié)議,例如典型的 GNU General Public License 等。在許可協(xié)議中,通過將著作權法下規(guī)定的著作權人的發(fā)表權、署名權、修改權、復制權、發(fā)行權、傳播權等權利按照《計算機軟件保護條例》第 18 條“許可他人行使軟件著作權的,應當訂立許可使用合同。許可使用合同中軟件著作權人未明確許可的權利,被許可人不得行使”等規(guī)定,進行部分或全部的讓渡,吸納和鼓勵更多的人員參與軟件開發(fā)與維護,如漏洞脆弱性發(fā)掘等。
因此在著作權法與合同法的民事法律中, 開源協(xié)議是合同各方當事人對權利義務不違反強制性法律規(guī)定的自行安排,其體現的是民事主體的意思自治。
但也正因為合同的意思自治和相對性等法律特性,導致開源協(xié)議具有某些可以類比為“脆弱性”的限制,這些限制主要體現在三個方面:
?。?)協(xié)議本身可以通過協(xié)商、修訂、補充等方式進行修改,乃至在不同的語種翻譯過程中都可能導致語義變化,這也是為何在不同語言版本的協(xié)議中,需要設定以何種語言為準的原因(因此 GNU General Public License 的許可協(xié)議以英文為準,中文翻譯僅供參考,這也不同于在國際公法中,多邊或雙邊協(xié)議的多種語言等同適用 );
?。?)違約責任的設置可能導致當事人在權衡各種可能責任之后做出主動或者“惡意”的違約,特別是可以終止許可,禁止開源分支等;
?。?)從根本上,意思自治和相對性約束了開源協(xié)議僅對協(xié)議各方發(fā)生效力,其與開源軟件進出口監(jiān)管屬于不同的法律部門。當發(fā)生國家安全、社會公眾利益和個人(合同方)利益競合時,就會產生事實上的法益沖突和優(yōu)先劣后等問題。
因此,在回答“開源協(xié)議是否抗辯出口監(jiān)管” 的基本問題上,不應對開源協(xié)議施以過高要求或期待,這一訴求已經超過了開源社區(qū)所能承受的范圍。例如 GNU 聲明:有時某些政府的出口管制法規(guī)或者貿易制裁會限制您在國際上分發(fā)程序副本的自由。軟件開發(fā)者沒有能力消除這種限制或者凌駕于這些限制之上,但開發(fā)者可以且必須做的是拒絕將此種限制作為(用戶) 使用程序的條件。如此,這些限制將不會影響這類政府管轄權之外的行為或行為人。
因此, 自由軟件許可證不得要求用戶遵守任何重要的出口法規(guī)作為先決條件來行使賦予用戶的任何基本自由。然而,它仍然是一個潛在的問題:因為一旦出口法規(guī)在未來做出變化,就可能使某個限制變成重要的,從而無法實現我們期望的軟件自由。當然對于開源社區(qū)而言,其所能作出的反應不僅限于開源協(xié)議本身。
2.2開源的進出口監(jiān)管——以美國出口監(jiān)管為例
在進出口監(jiān)管法律的清單管理模式中,軟件、技術、系統(tǒng)、設備、商品、組件和代碼可以屬于不同的物項(items)并予以不同的監(jiān)管編碼,因此盡管《計算機軟件保護條例》規(guī)定“同一計算機程序的源程序和目標程序為同一作品”,但從進出口監(jiān)管視角,其所體現和承載的物項形式、內容、階段、功能等均有不同, 進而也適用不同的進出口監(jiān)管規(guī)則。
也正是基于軟件和代碼的分離,使得開源軟件、開源代碼能夠作為分別的物項出口最終成為可能,使得開源代碼本身可以作為“言論自由”表達的一種形式進入司法審視的范圍(有關言論自由的相關案例及評價,見下文贅述)。
對于判斷是否構成開源的“可公開獲取” 而言,還是以 EAR 對Linux 基金會所關注的“加密軟件”為例,就包括了可公開獲取的大宗市場加密目標代碼軟件(Mass market encryption object code software)、履行了 EAR《控制策略——基于 CCL 的控制》742.15(b) 郵件通知義務的可公開獲取的加密源碼(encryption source code)、履行了 EAR《控制策略——基于 CCL 的控制》742.15(b) 郵件通知義務的可公開獲取的加密目標代碼(encryption object code,其相應的源碼也符合前述“可公開獲取”)。
但是當代碼、軟件、系統(tǒng)在形式上統(tǒng)合于某一物項時,例如以開源軟件,或者包括了開源軟件的應用軟件形式出口時,該物項將作為獨立的物項進行 EAR 的適用性評估,而不能僅以其包括或宣稱為可公開獲取的源碼(merely because it incorporates or calls to publicly available open source code)而認為其不適用 EAR 監(jiān)管。
這也是 EAR 明確提出的監(jiān)管原則,因此不能想當然地認為只要或主要為開源代碼,即不適用EAR 監(jiān)管,還應當考慮其體現為的物項,以及所承載的介質(典型的如托管平臺和離線介質)。
也正因如此,即使在開源協(xié)議中對適用法律和爭議解決不作約定,都無法完全規(guī)避進出口監(jiān)管中對開源主體(基金、平臺等)適用屬地的服務器主義(代碼托管服務器)管轄權。開源協(xié)議難以做到與出口管制無關。
2.3源碼與言論自由表達的確認性問題
在對美國 1990 年代三大經典案例分析的基礎上,一種觀點認為“從此之后,美國政府再也不能試圖限制軟件源碼流通了”。
2.3.1PGP 案
PGP(Pretty Good Privacy)案件和對其作者Philip Zimmermann 長達三年之久的調查為 1990 年代第一次“密碼戰(zhàn)爭”(crypto wars)時期的巔峰之作。最終司法部撤銷了起訴而非敗訴,因此也留下對美國第一修正案是否和多大程度上保護軟件 / 代碼作為一種言論自由表達的持續(xù)疑問。
這一訴訟不僅沒有針對性的解決源碼與言論自由表達的問題,事實上還最終導致了 1998 年之后 PGP 的分化( 為基于 GNU 的 OpenPGP 和商業(yè)版)。2014 年開始,隨著美國等國家的網絡服務提供商開始監(jiān)聽和在郵件流量中移除STARTTLS 標記,PGP 及其與它加密協(xié)議的關系和脆弱性也進一步得到發(fā)掘——可出口的 PGP 反而可能成為監(jiān)聽的有效工具。
2.3.2Snuffle 案
伊利諾斯州立大學 Bernstein 副教授開發(fā)的 Snuffle 軟件試圖通過紙質期刊和網絡發(fā)布,但政府要求其按照軍火出口控制法的規(guī)定注冊為“軍火商”并取得出口許可證。
Bernstein 認為政府禁令違反了第一修正案。司法部作為被告認為如果 Bernstein 的軟件通過計算機語言(源代碼)表達,則不受第一修正案保護。1996 年和 1997 年(重申),法官 Patel 駁回了政府觀點, “第一次”明確計算機源代碼屬于受第一修正案保護的言論表達。
法院援引了 1971 年五角大樓文件案等判例后認為,Arms Export Control Act 和 EAR 的規(guī)定屬于預先設定的言論限制,因為法案要求 Bernstein 在發(fā)表其言論之前申請并獲得許可證屬于事先審查機制,“僅以國家安全利益為由不應設定預先限制”,還應當至少考慮第一修正案相關案例所反復提及的威脅的直接性和緊迫性,并強調出口控制所限制自由表達的言論是基于言論的“內容”,而非政府所認為的“功能”。
對該案的正確解讀應當包括:
?。?)該案主要限制了 EAR 出口監(jiān)管的事先審查機制,即以國家安全為由設定出口限制時,應符合直接性(必要性)、緊迫性(緊急性)的條件,并應給予當事方其他救濟,因此屬于個案裁決不能作為一般情形。
(2)盡管 1999 年 5 月第九巡回上訴法院維持了一審判決,明確 Bernstein 有權發(fā)布源代碼,重述了EAR 的違憲性,但并非一致通過,Nelson 法官發(fā)表了反對意見認為, Bernstein 必須事實上使用源代碼(文本)進行討論或教授密碼學,只有在此情形下才是其科學方法和想法的表達。因此案例并非一致性無爭議地裁決。
?。?)盡管一審法院支持了 Bernstein,但該案持續(xù)長達 4 年之久,期間很多的密碼技術發(fā)展受到影響,如服務器軟件 Apache。事實上,政府的目的部分得到了實現。
2.3.3榮格(Junger)案
凱斯西儲大學法學(注意,實際上在法學教授的計算機法課程中披露和討論的加密技術細節(jié)相對有限)教授 Junger 在克利夫蘭聯(lián)邦地方法院起訴政府(國務院,區(qū)別于第 2 個案子的司法部、NSA),認為對方限制其在計算機法課程教授密碼學——爭議的焦點在于美國《國際武器貿易條例》(ITAR) 所定義的“出口”是否包括與外國人討論非分級(non-classified) 的加密軟件的技術信息,如注冊 Junger 課程的外籍學生。該案有別于前兩個案例的關注包括:
?。?)1996 年 8 月,Junger 通過代理律師多次向法院申請臨時禁令,要求禁止政府阻礙其與外國人討論或發(fā)布一般加密信息,但被法院駁回;
?。?)法院裁判中認為,加密軟件源代碼具有固有的功能屬性,不能僅解釋為表達加密理論或描述軟件功能,加密軟件主要用于實現加密功能,并與實施加密的計算機硬件緊密結合。
因此,盡管 2000 年中,第六巡回上訴法院維持了 ITAR 的限制規(guī)定應接受第一修正案審查的觀點,但在 2000 年之后隨著密碼技術的發(fā)展和課程的更新,其效用性已經不能完全適用。
綜合上述已經略顯久遠的案例,實際上不能得出“從此之后,美國政府再也不能試圖限制軟件源碼流通了”的結論。
首先,前述案例并非最高法院案例,其論證和援引效力的權威程度并不足夠;
其次,在案件分析中,核心焦點在于前置審查程序的有效性與否,這就導致了個案差異會導致不同結果的可能,特別是前述案例均更接近于美國“內部矛盾”,而一旦涉及與別國爭議,就進一步加大了裁決結果的不確定性;
再次,源碼本身的“雙重屬性”, 不同個案將會在軟件的功能性與表達性之間搖擺,在未來可能只需一個相反案例就會導致對出口監(jiān)管態(tài)度的“重置”。
3提升開源軟件的網絡安全價值建議
3.1開源的市場和版權法價值
事實上,我們關注開源軟件的協(xié)議安全, 正是開源軟件對整體安全市場的價值體現。這就從根本上決定了開源可以通過協(xié)議適當規(guī)避商業(yè)軟件市場和傳統(tǒng)版權法的某些限制,從而給出了維護國家安全、社會公眾利益和公民個人信息和隱私的多一重審視維度,也就決定了進出口監(jiān)管職能也需要以例外的方式給予其適度的自由。
美 國 2018 年 國 防 預 算 法 案(National Defense Authorization Act for Fiscal Year 2018)明確規(guī)定,國防部長應啟動 2016 年 8 月 OMB 備忘錄(M-16-21)制訂的為期三年的開源軟件試點計劃(open source software pilot program),其目標要求政府機構將至少 20% 的新定制開發(fā)的代碼作為開源軟件發(fā)布。①在該法案的語境下, 以減少重復的技術開發(fā)合同為理由顯然只是其字面意思。
從版權法角度,即使拋開版權法保護軟件的早期爭議,目前以版權保護計算機軟件也略顯疲態(tài)和“腐朽”。開源協(xié)議正是撕開了版權法保護計算機軟件的一道裂口,以軟件許可的約定形式轉移了著作權人的部分財產,乃至人身權利(按照著作權法,發(fā)表權、署名權、修改權、保護作品完整權屬于有人身依附性的人身權利),直接挑戰(zhàn)了商業(yè)軟件的壟斷性利益。
也正是在這層意思下,開源軟件的作者并不如開源管理者自由,后者才是真正的自由,可以規(guī)定開源協(xié)議的自由,可以引入審查和設定分支的自由,直至決定是否與商業(yè)軟件競爭或是并購的自由。
從開源軟件的發(fā)展看,確實經歷著從早期的作為商業(yè)軟件的補充與競爭,到更趨于“開閉” 靈活和相互融合的艱難蛻變。特別是在云計算產業(yè)下,開源軟件和開源社區(qū)的定位和發(fā)展面臨重大挑戰(zhàn)。
3.2提升開源軟件安全應避免的誤區(qū)
在 2018 年 12 月的第九屆中國信息安全法律大會上,我們提出開源的安全不僅是從物理層到應用層的協(xié)議安全,還包括法律協(xié)議的安全。開源代碼和開源協(xié)議都需要通過某種形式的審核或審查,并在所受限的軟件市場、版權法和進出口監(jiān)管下“輾轉騰挪”,通過特定的制度建設與安排,方能逐步、漸進地提升安全。
3.2.1為何有的開源項目關停而有的繁榮
以 GitHub 為例,其上也存有大量停止開發(fā)維護的項目,除了項目本身的技術和需求之外, 代碼審查和閉源被認為是部分項目消亡的原因。例如早期的據稱 2013 年約翰霍普金斯大學的Matthew Green 教授組織了對 TrueCrypt 的安全審計,得出的不安全結論部分導致了開發(fā)者退出。毫無疑問,盡管有別于中國《網絡安全法》(或美國類似等同的審查機制)等下的國家安全審查,第三方的額外(從開源初衷而言,開源軟件的社區(qū)模式自帶審視)審查機制限制了開源的某些自由,抑制了(或加速了)市場自身的優(yōu)勝劣汰。另外,云計算廠商與開源社區(qū)的合作模式也極具爭議。
基于上述分析,實際上得出了一個提升開源軟件安全的適度性結論,即對于開源軟件而言,應審慎引入代碼審查機制,并應嚴格限制國家安全審查的適用性。
但如此一來,則與《網絡安全法》第 35 條規(guī)定的“關鍵信息基礎設施的運營者采購網絡產品和服務,可能影響國家安全的,應當通過國家網信部門會同國務院有關部門組織的國家安全審查”發(fā)生沖突,從而可能導致要么將開源軟件限制在關鍵信息基礎設施領域之外,要么因國家安全審查而抑制了開源軟件的研發(fā)。
3.2.2同步備份和設立分支為何不能解決發(fā)展和安全問題
對于托管在境外服務器(如 GitHub)上的開源代碼,是否作為分發(fā)(對應于版權法的發(fā)行權)平臺還是只作為備份鏡像(對應于版權法的傳播權),進一步而言是否考慮在現有的開源軟件之上設立分支,本質上應作為技術問題處理而不應作為應對進出口監(jiān)管的終極解決思路。
以強行引入的外部機制將可能導致開源項目的蕭條直至關停,因為其違背了開源社區(qū)發(fā)展的弱中心化而非去中心化的規(guī)律,而承認分支的存在即意味著可以向上回溯。更何況, 分支實際在很大程度上是作為開源協(xié)議沖突的安排,并不直接與發(fā)展和安全有關。例如 2018年 11 月,自由軟件基金會(FSF)更新軟件許可證評論認為,如果既有項目增加了禁止商業(yè)性使用的商業(yè)條款(Commons Clause),應當重新設立分支。
3.3提升開源軟件安全與繁榮的著力點
3.3.1從維護現有開源項目開始
無論是本文引述的 Linux 基金會的開源項目,還是境內企業(yè)已經廣泛參與和貢獻的開源社區(qū),在提供代碼輸出的同時,也應當對其所適用的開源協(xié)議給予適當的關注。
正如本文認為的開源安全不僅是從物理層到應用層的協(xié)議安全,還包括法律協(xié)議安全所言,開源協(xié)議的安全不僅涉及各類許可證條款的差異,也包括不同許可證混用的沖突,還包括在商業(yè)化應用中對傳統(tǒng)版權法著作權人權利的“逆轉”和“強化”, 即對開源協(xié)議的關注和爭議不應停留在 divx 和xvid 的協(xié)議轉換,而需從微軟收購 GitHub 的市場和產業(yè)高度重新審視。
應當借鑒 FSF“評論”的軟件許可證的做法,給予開源軟件多一重維度關注,不僅聚焦在源碼本身,也注重代碼的“外圍”和“周邊”。
3.3.2與《網絡安全法》若干問題的協(xié)調
目前開源軟件與《網絡安全法》體系的協(xié)調可能包括以下問題:
?。?)按照《網絡安全法》第22 條,網絡產品、服務的提供者應當為其產品、服務持續(xù)提供安全維護;在規(guī)定或者當事人約定的期限內, 不得終止提供安全維護。對于開源軟件產品或服務而言(按照著作權法和計算機軟件保護條例,對開源軟件產品或服務的認定應基于產品或服務的“完成”),如果直接關停或設立分支,可能構成對該條的違反,但如果按照該條規(guī)定也不符合開源軟件的發(fā)展規(guī)律,同時也可能導致對開源社區(qū)追責的“落空”。
因此應考慮在開源協(xié)議中設計與該條有關的內容,特別是完善開源協(xié)議的權利義務轉讓、第三方承受維護機制等,以促成開源軟件的完成與發(fā)行,減少不必要的分支和碎片化。
?。?)在開源軟件的全球參與下,開源社區(qū)的協(xié)同必然產生數據出境的問題,按照《網絡安全法》和熱議中的數據安全管理辦法、重要數據出境安全評估辦法所規(guī)定的以網絡運營者為主要責任方,以合同審查(數據出境安全評估審核)為制度設計的安全模式下,源碼的出入境應當作為協(xié)議安全的特殊情形予以充分的論證和除外規(guī)定,否則可能無法滿足開源軟件的寬松研發(fā)模式。
(3)至于《網絡安全法》第 22 條規(guī)定的“ 網絡產品、服務應當符合相關國家標準的強制性要求。網絡產品、服務的提供者不得設置惡意程序;發(fā)現其網絡產品、服務存在安全缺陷、漏洞等風險時,應當立即采取補救措施, 按照規(guī)定及時告知用戶并向有關主管部門報告”,第 35 條規(guī)定的“關鍵信息基礎設施的運營者采購網絡產品和服務, 可能影響國家安全的,應當通過國家網信部門會同國務院有關部門組織的國家安全審查”和目前熱議的網絡安全漏洞管理規(guī)定,必要和適度的代碼審查是網絡安全等級保護和關鍵信息基礎設施保護的必要組成,其實現的重要路徑即是代碼審查。
對于代碼審查,可以認為其一方面受到了開源的啟發(fā)和影響,另一方面審查也會抑制和終止某些開源項目的持續(xù)。同時《網絡安全法》的規(guī)定會增加開源社區(qū)審核、審計開源安全的義務和成本, 因此也需要在脆弱性與漏洞管理中,對開源軟件作為一種特殊類型進行制度和協(xié)議設計,并特別限定國家安全審查的適用范圍,充分評估審查對開源軟件的影響。
4結論
開源軟件作為傳統(tǒng)版權法規(guī)定下的代碼分離與等同的必然產物,其制度設計在于解決類似“多場耦合”問題從而直接在軟件開發(fā)者(作者)與著作權之間建立關聯(lián),與傳統(tǒng)版權法的規(guī)定相比,具有某些天然的外部性和自適應優(yōu)勢,特別是第五代移動通信技術的發(fā)展可能再次提升開源軟件的應用,各國均對開源軟件予以高度重視和密切關注。
整體而言,從開源軟件的協(xié)議安全(并促進繁榮)角度,至少應當從以下幾個方面進行綜合考慮:
?。?)在版權法下設計軟件權益機制,體現開源屬性權利的獨立性;
?。?)從服務協(xié)議、許可協(xié)議等視角規(guī)范開源軟件的合同法下規(guī)范;
(3)協(xié)調進出口監(jiān)管法與版權法,規(guī)范審查和評估對開源的影響;
?。?)從網絡安全法的基本法出發(fā),將其作為一類特殊的安全審查和出境評估類型。
最后,開源的核心在于軟件開發(fā)者的著作權利義務設計與分配,應從宏觀與微觀上給予開源軟件開發(fā)以充分支援。這些支援不在于簡單的資金投入或文件指引,而在于通過降低人員流動的成本,并特別注重未被定義為高端人才的人員價值和促進開源繁榮的作用,以開源代碼和開源協(xié)議的參與度作為評價開源安全與繁榮的主要機制。