重磅!Linux基金会白皮书:开源软件技术不受美国出口管制

转自:Linux 基金会

【导读】:2019 年 5 月华为被加入美国的“实体名单”,由此引发了的一系列话题:《GitHub、Apache 等平台开源项目,受美国出口管制么?

近日 Linux 基金会发了一份白皮书,详细介绍了开源社区该如何了解并遵循与美国出口管制要求及开源加密相关的一般性原则。

以下是白皮书全文:


开源发展的最大优势之一是它实现了跨边界的协作。开源协作透明、公开且能跨越组织边界,促使世界各地的开发人员、学者和工作人员一同成就比个人力量所能造就的更为伟大的开源技术。

开源协作跨越地域界限:聚集世界各国人员和组织,带着他们独特的观点和优势来一同开放协作,并向所有人分享成果。

开源发展是一项全球性活动,必然涉及软件的跨国界分享。一些国家的出口管制法规可能要求开源项目采取额外的措施,来确保遵守当地法律规定的义务。这篇指南将简要地描述美国《出口管制条例》,并讨论该条例如何应用于开源社区发展全球协作。

本文中,“开源”一般指的是任何源码可公开获取的技术 或软件。作为一种创造模式,开源已不仅仅局限于软件技术的 开发。如今,开源还包括了其他广泛的开放技术领域,如硬件设 计、微型处理器指令集架构、规范、数据模型、协议、标准以及 公众以公开模式协作创造的其他技术。

美国的《出口管制条例》

《出口管理条例》(Export Administration Regulations,以下简称“EAR”)是美国联邦政府限制出口的主要条例,由美国商务部(US Department of Commerce)下的产业与安全局 (Bureau of Industry and Security,以下简称“BIS”)发布并定期修订。1 EAR适用于所有“受制于EAR的物品,并可能管制 该等物品的出口、再出口或(境内)转让。

EAR下“出口”的定义较为宽泛。出口不仅包括从美国境内向境 外输送实物产品,还包括其他行为,例如向非美国公民或非美 国合法永久居民传送技术,2 以及向美国境外人员提供用于电 子传输的软件。

从表面看来,EAR似乎为开源社区敲响了警钟,但是好消息是, 公开发布给全世界享用的开源技术是不受制于EAR的。因此, 开源至今仍然是一个最为便利的全球协作的模式。

在接下来的内容中,我们将解析为 何美国的出口管制法规一 般不会对开源模式造成影响,并通过举例的方式说明和讨论为 何开源软件的出口在一般情况下不受制于EAR。接着 ,我们 将探讨在 一定情况下的两个特定事项的范围:第一,包含加密功能的开源软件;第二,实施由神经网络驱动的地理空间分析 训练(neural network-driven geospatial analysis training) 功能的开源软件。最后,我们会提出一些最佳实践建议,供开 源社区在项目实施过程中采纳。

将 EAR 应用于开源软件

EAR界定了某些可能受到出口限制的事项(包括软件和技术)的范围。“ECCNs”(Export Control Classification Numbers)是EAR法下用于物品分类(包括软件和技术)的编 码。有些物品是受制于EAR的, 这代表它们在EAR的管控范 围内,并只能在符合以下条件的前提下出口:无需许可证 就 可出口,适用许可证 例外的情况或者出口方已经获得了出口许可证。

这正是开源技术的优势所在,因为EAR明确豁免了大多数以 开源形式呈现的软件和技术。有一些事项被明确列为“不受制 于”EAR,意味着它们“被置于EAR法规管辖外并不受这些法 规的 约束 。”具体来说,EAR第734.3(b)条规定“下列事项 不受制于EAR:”,其后列明,“如第734.7 条所述的,(i)已经 发布的信息及‘软件’”。

这里指向第734.7条是非常重要的 , 因为该部分规定“已发布”的事项不受到EAR的管辖。具体来 说,EAR第734.7部分规定, 

. . .当可被公众获取且无进一步传播限制时,未被归类 为密级事项的“技术”或“软件”属于“ 已发布”,因此不 属于受 EAR 管辖的“技术”或“软件” . . 

来自Linux基金会以及与我们合作的项目社区的开源软件均满足 EAR 第734.7条中“已发布”的要求。

以下典型事项(未详尽列举)下不受到 EAR 限制,因为“开源”“ 已发布”:

• 已公开发布的开源软件不受制于EAR 

• 已公开发布的开源规格不受制于EAR 

• 已公开发布的,说明硬件设计的开源文档不受制于EAR

• 已公开发布的开源软件二进制不受制于EAR 

如此可见,“已发布”是关键要素。基于EAR之目的,如果开源技 术不受进一步传播的限制且可被公开获取,那么它将被视为“ 已发布”了的开源事项,并将因此“不受制于”EAR。将“已发布” 的软件和技术纳入受制于EAR限制的范围内将是一项重大的 政策性转变,迄今为止我们尚未知悉任何关于上述政策性转变 的讨论。

可公开获取的软件和技术不受制于出口管制并非美国独有的 政策,欧盟也有相关政策。 

另外,与软件、技术和其他在EAR范围内的事项无关的活动也 不受EAR限制,其中包括非技术性协作:有关商务事项的会 议、活动策划、市场营销等类似的其他活动均不受EAR约束, 因为上述事宜超出了EAR管辖范围。 

若项目涉及加密技术,则开源社区可能需要多采取其他措施以 满足EAR法下的“已发布”的要求。

加密

EAR下,软件开发者的一个关注焦点便是加密技术。EAR 管理 特定加密软件和技术的出口。“加密软件”的定义非常广泛,并 可能包括仅激活或创设其他软硬件产品的加密功能的软件。对于具备标准加密功能的软件,包括在软件设计文档中呈现的 加密硬件,最为常见的ECCN类别是5D002 。如加密软件在 EAR的管辖范围内,那么为了将其出口到除了加拿大以外的国 家,出口方必须首先确认EAR例外条款在此情况下适用,或申 请并从BIS获取相应的出口许可证。 

然而,在考虑EAR例外条款是否适用或出口许可证是否必要 前,首先要考虑的问题是 :该加密软件是否在EAR 的管辖范 围内。属于 ECCN 5D002 的加密源代码如符合以下两个条件,则不在 EAR 的管辖范围内:(1)该源代码是“可公开获取”的,以及 (2)已向 EAR 第742.(b)条所载的电子邮箱地址发送了电子邮件以示通知。 

Linux爱好者补充:上面的第 2 点的意思是:要向BIS(产业与安全局)或NSA(国家安全局)发邮件以示通知。邮件内容需要包括可公开获取的源代码的URL地址(或源代码本身)。

上述衡量标准的第一部分要求,即“可公开获取”,指的是在 EAR法下“已发布”的定义,这包括通过在公开的网页上进行发 表(即公开传播)。只要完全公开的开源软件项目达到该标 准,则应当视为通过了衡量标准的第一部分要求:如果项目的 源代码可在互联网上公开获取,则应被视为“可公开获取”。

为满足上述衡量标准的第二部分要求,还需要向两个指定的邮 箱地址发送邮件(一个是BIS的邮箱地址,另外一个是国家安 全局(National Security Agency,简称“NSA”)的邮箱地址) 。邮件内容需要包括可公开获取的源代码的URL地址(或源代 码本身)。如URL或源代码发生任何变更,则需要再次以邮件 形式通知上述邮箱地址。

最后,在通过了上述两项衡量标准后,相应的物件代码也将不 受EAR管辖。

Linux基金会的所有项目源代码,包括加密软件,均可公开获取,我们也已经提供了 上文所要求的电子邮件通知。并在我们的官网上公开了上述电子邮件通知的 内容。所以,L inux 基金会的项目源代码及对应的目标代码均不受 EAR关于加密 的限制。 

请注意,上述情况只适用于开源项目本身。修改项目代码或其 衍生产品的下游再分销商在源码并未公开时,仍然需要评估其 是否符合EAR的规定( 如同需评估其出口的其他软件一样)。

神经网络驱动的地理空间分析训练 

BIS在2020年1月6日宣布了一项新的EAR规定,并自宣布之日 起立即生效。该规定设立了EAR针对一种专门为了训练深度卷 识神经网络(Deep Convolutional Neural Network)自动分 析地理空间图像和点云(point cloud)能力的特殊地理空间图 像软件的管控权。该规定阐明“点云”是指由坐标系统界定的数 据点集合,又称数码表面模型。虽然规定自发布之日立即生 效,但它仍有待 公开意见征求并可能继续扩充或被修订。但无 论如何,如果软件是可公开获取的(如开源软件),那么如上文 所述,它将不受 EAR的管辖。 

一些对新规定的公开解读可能在暗示该规定整体上对地理空 间图像软件,或甚至人工智能/机器学习软件施加了广泛的限 制。但事实并非如此。

这条规定的适用范围实际上显得很狭窄。它只适用于具体包括 上述所有方面的事项。此外, 任何一项软件同时还必须包括 以下所有功能,才受 这条新EAR规定的管辖: 

1. 提供图形用户界面,使用户能够从地理空间图像和点云中 识别物体(例如,车辆、房屋等),以便提取物体的阳性和 阴性样本(positive and negative samples);

2. 通过对阳性样本进行尺度、颜色和旋转归一化来减少像素 变化范围;

3. 训练深度卷积神经网络从阳性样本和阴性样本中探测到 物体;和 

4. 利用训练好的深度卷积神经网络,将阳性样本的旋转模式 与地理空间图像中物体的旋转模式进行匹配进而识别地 理空间图像中的物体。

如软件不具备上述列出的所有方面和功能,那么该软件则似乎 不受 该条新规定(目前版本)的管辖。上述要求更像 是针对由 商业解决方案提供商提供的解决方案,而不是 针对开源项目。特别是,训练要求不仅需要一个软件项目,并且还需要阳性和 阴性的训练数据集,这种对数据集的具体要求可能只适用实施 特定的神经网络。 

现有的一些可公开获取的开源项目可能具备这些功能。然而, 即使现在要创建一个新的项目,只要该项目是一个可公开获取 的开源项目,那么它就不会受 EAR的管辖。

开源软件社区的最佳实践

以下是一些我们了解到或者尝试过的可能对所有开源社区有所 助益的一些实践经验。 

公开化和公众化 

我们经常用“公开”这个词来形容许多事情:开源许可、公开和 透明的讨论、公开的社区、公共智库里储存的可公开获取的源 代码。对于开源社区来说,“公开”似乎是显而易见的做法,但我 们对社区也提供一些建议。

首先,社区需要努力 维持他们技术交流的开放性与公开性。私 人交流在社区中经常出现 ,对此我们建议将社区决策和结果 向公众公开。信息的公开透明对我们项目来说很重要,因为技 术或技术信息的私下交换可能不符合EAR中“可公开获取”的 标准。 

安全系统缺陷披露的过程中涉及到的信息交换会引起问题。对 此,我们建议最好可在缺陷修复后公开项目交流内容,而不仅 限于 向保密披露清单里的各方提供。 

交流技术思想和知识,进行技术辩论是开源社区的标志,其中 最前沿的是最佳的技术解决方案。在公开场合进行这些交流有 时可能会让人难以接受,但是我们那些严格遵守该原则的社区 往往也是在建立透明度和可信赖性方面最为成功的社区。尽管 可能会有分歧,但每个人都知道这个讨论是公开和透明的。当 然公开和开放协作 有很多益处,而不仅限于其能 够符合EAR 的要求。

提供加密的通知

如果 你的开源软件项目实施或使用了ECCN5002项下的加密 功能,那么根据EAR的要求,你需要向BIS和NSA提供加密通 知。EAR第742.15(b)(2) 条 列举了以下这些要求:

• 发送电邮至crypt@bis.doc.gov及enc@nsa.gov。

• 邮件应该包括含有可公开获取加密源代码的网站地址,或 源代码本身。一般来说,我们预计开源项目会选择第一种 方式。

• 如果 你提供的是网站地址,那么每次更换网站地址时, 你都必须通过电子邮件通知他们,但是 你不需要通知他们 有关源代码本身的更新或者变更。

• 如果 你提供的是源代码副本,那么每当加密功能 存在更 新或者变更后, 你都必须把最新的源代码提供给他们。 

正如Linux基金会的通知所展现, 15 以下我们建议的其他一些 最佳实践方案:

为了加强透明度和展现合规性,

将传给BIS和NSA的通知 公开化。这也有助于解决下游用户对社区是否发送了通知 的疑惑。通过公开通知的方式, 你可以避免这些困扰。

• 附加联系方式和负责项目的法人实体的名称(如适用)。

• 设计一个保留中期至长期证据的系统 ,以证明发送给BIS 和NSA的通知电邮实际上已经送达 。最好不要仅依靠“ 已发送”邮箱记录,以避免将来发生问题, 和规避该个人 无法再访问该“已发送”邮箱 的风险。 

如果 你不确定 你的开源软件是否使用加密功能,或将来是否 可能涉及这种功能,那么为确保万无一失, 你也可以考虑 向 相关部门发送此类通知 。

确保相应的加密源代码是能够公开获取的 

如果 你以目标代码形式公开分享加密软件,那么 你应确保该 软件的源代码也是可公开获取的 。 

项目的维护者,也是最熟悉项目代码的人群,应该审查并确认 加密功能是否以二进制或目标代码形式分发的。如果是,那么 应该先考虑上述操作是否必要。在大多数情况下,以源代码形 式分发可能是最佳的方案 - 不仅基于出口合规的考虑,并且 此种方案有助于下游用户摈弃对“黑盒子”二进制的依赖,并且 可以轻松地从源代码处自主研发。

如果必须以二进制或目标代码形式分发加密软件,那么就必须 确定相应的源代码是可公开获取的。最容易的方式就是自主将该加密软件版本的源代码公开,作为项目本身的源代码。(事实上 , 取决于适用的开源许可内容,从遵守开源许可的 角度来说可能 必 须这样做,或者至少 有 所助益!)

除人工审核外,还有一些性能不等的扫描工具, 可以扫描源 代码并探测加密功能的应用。没有一种自动扫描工具能够完美 地检测出所有的应用,但这些工具可能有助于识别大型代码库 中的加密软件。

PDF:

https://www.linuxfoundation.org/wp-content/uploads/2020/07/UnderstandingOpenSourceTechnologyandUSExportControls_Whitepaper_070220.pdf


1.何小庆老师个人课程专辑上线啦!

2.STM32H743从RAM启动异常的案例分享~

3.专注芯片架构!ARM将剥离物联网业务

4.代码对齐使用Tab?还是空格?还是混合使用?

5.【为宏正名】99%人都不知道的"##"的用法!

6.17条嵌入式C语言编程小知识,需要知道!

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值