本文共计7,754字,建议阅读时间14分钟
SVN服务器(严格来说,SVN实则为一个版本控制软件,但其在运行时,是以服务器的形式运行,遂在此称之为SVN服务器)对很多人来说,可能会略感陌生。但对于互联网领域、知识产权领域的律师来说,却倍感亲切。实际上,在软件著作权、商业秘密、游戏侵权等纠纷中,对SVN服务器的取证常常被权利人用来作为证明其权利基础形成的重要证据提交给法院。而与此同时,SVN作为企业源代码版本控制器,其不仅记录了自身软件的“前生今世”和“历史更迭”,更蕴含了企业的核心商业秘密,可谓价值连城,而一旦泄露,对企业来说,又是“难以承受之重”。
一方面是证明自身权利基础的有利武器,另一方面是核心商业秘密泄露的巨大风险。面对此境况,司法实务中权利人往往权衡再三后,会选择通过公证或时间戳的形式浏览SVN中相关日志记录或下载相关资源文件,再向法院提交上述公证书、时间戳视频截图。而与此同时,对于SVN证据,法院态度也并不统一。在有的案例中,法院对SVN证据持相对开放态度,予以采信。而在有的案例中,法院则会在谨慎考虑各方因素后,予以排除。为何针对如此重要的一份证据,法院会采取截然不同的态度?SVN证据能否被采信的关键又是什么?本文笔者将结合自身办案经历并援引相关司法判例,对此略作探讨,以飨读者。
一、SVN的原理和作用
SVN是Subversion的缩写,是一个开放源代码的版本控制系统。而所谓的版本控制(Version control)其实是一种计算机领域项目开发与管理的标准做法,其能够追踪项目从开始到结束的整个过程,因而常被应用于软件程序开发。对编程人员而言,版本控制技术是团队协作开发的桥梁,其能够实现多人同步进行大型程序的开发。因为在多人协作开发的模式下,每个人都向服务器提交自己的文件,就可能存在代码被多次修改、替换的风险,但版本控制能够在每次更新操作后进行相应的记录。而一旦发生误操作,开发者往往能够根据服务器中的版本记录,将项目恢复到出现问题之前的其他版本,并可随时查看数据的变动历史和更新细节。正因为如此,许多人将版本控制系统视为一种神奇的“时间机器”。
而在司法实务领域,律师们对SVN取证一般是通过公证录频或者时间戳的方式进行的。具体操作步骤为,在网页上下载SVN,将其保存在本地磁盘安装,输入公司内部服务器的地址后,进入公司的SVN系统,对其服务器代码库中的情况进行查看,浏览相关日志记录,或根据取证需要,下载相关文件。以图一为例,通过svn:// 192.168.113.128的路径进入SVN系统,再通过Repository Browser(库浏览器)对SVN中的文件进行查看,发现在此SVN系统中一共有四个文件crawier.py、helo.go、test.C、TextComparison.java,而在该界面的最下方也会显示“Showing 4 files and 0 folders,4 items in total”,也进一步验证了当前的SVN界面是完整打开的,没有折叠或隐藏。再以其中的一个文件“test.C”为例,从SVN展示的界面里可以清晰地看到其扩展名(Extension)为.C, 作者(Author)为test,文件大小(Size)为361字节,生成文件的时间(Date)为2018/11/6 15:53:19。另外点击“test.C”也可以打开此文件,进一步查看文件中的具体内容,并可以进一步下载。可以说,SVN真实、完整地记录了此文件大小、创作作者、时间、版本等各方面信息,真可谓一台记录翔实,可以实现“回溯历史,时光倒流”的时间机器。
图一:SVN系统
二、SVN证据在司法实践中的认定
正是由于SVN本身实时记录的功能,加之其不易篡改的特性,在涉及计算机软件代码开发、游戏元素创作等情形,SVN因为保留了相关代码或元素最早创作完成的日志记录,而常常被权利人用来证明其权利基础形成的有利证据。但在司法实践中,对SVN证据的认定不一,有的SVN证据会被法院采信,但也有的SVN证据,因为在做公证或时间戳过程中出现诸多瑕疵等原因,而未被法院所采信。
(一)SVN证据被法院采信的情况
在威科先行数据库中,以全文包含“SVN”,案由为“知识产权与竞争纠纷;知识产权权属、侵权纠纷”进行检索,共得到97条结果,穷尽式浏览,筛掉无关案例与参考价值较低案例后,筛选出以下案例进行分析。
表一:SVN证据被法院采信的案例
(二)SVN证据不被法院采信的情况
按上文同样的检索方法,筛掉无关案例与参考价值较低案例后,筛选出以下案例进行分析。
表二:SVN证据未被法院采信的案例
(三)对SVN证据三性的质证
结合上述案例及笔者办案经历,实务中,对SVN证据的三性的质证主要体现在以下几方面:
1、SVN证据的真实性
实务中,SVN证据被质疑最多的就是其真实性。当举证方提交了SVN证据后,质证方往往会从以下几方面来质疑其真实性,进而挑战其权利基础。例如,质证SVN证据的来源。认为SVN系为举证方所控制,内容和时间均可以进行人为的修改,无法排除篡改可能性,SVN内保存的源代码也不具有客观真实性。而在举证方又无法提供可完全反编译的目标程序的情况下,根本无法验证源代码的真实性以及形成日期。另外,也有的通过质疑SVN服务器内管存记录的完整性,进而质疑其真实性。例如SVN服务器展示代码条目数不完整,本来有1000条日志记录,但证据中却只展示了500条日志记录;未展示SVN服务器的完整界面;截图中出现大量空白等。
但从上述案例中可以看出,即使SVN理论上具有篡改可能性,但如果质证方并未结合相关事实佐证,法院也并不会当然地以SVN具有可篡改性这一原罪来认定其不具有真实性。相反,如果SVN中相关日志记录具有合理顺延性,该份证据能够与其它证据相互印证,法院也会对该份证据予以采信。例如在南京未来v.江苏云蜻蜓案[6]中,法院即认为SVN上的修订记录具有合理的顺延性,加之该份证据又有版权登记证书、源代码等进行印证,最终对该份证据予以采信。而在上述花千骨案件[7]中,法院同样也是结合其它证据,以高度盖然性标准认可了原告的举证。
2、SVN证据的关联性
实务中,也有质证方是通过质疑SVN证据的关联性对该份证据进行质证。例如在软著纠纷中,虽然SVN中有诸多操作记录,但如果SVN文档记录中显示的操作人员ID无法与现实生活中的技术人员清晰指向,就极有可能不满足软著纠纷中的“接触”要件,最终也会被法院以无关联性予以排除。同时,在商业秘密纠纷中,即使SVN中日志记录显示有几百人参与代码的编写,也极可能被质证方以该SVN系一个开放的系统,并未采取足够的保密措施,因为任何人都可以自由进入,并不满足商业秘密所要求的“保密性”和“秘密性”要件而被质疑。以及在一些案例中,举证人未能说明开发记录记载内容与涉案软件之间的联系与唯一对应关系,而被法院认定为无关联性。[8]
3、SVN证据的合法性
在SVN证据的合法性上,一些案例主要是通过质疑其取证过程不符合相关规定和程序来进行质证。例如,公证过程存在重大瑕疵,举证人在公证机构外进行公证,使用自有设备进行公证,在取证过程中,也未对电脑进行清洁性检查,甚至安全软件显示公证电脑存在安全问题,界面出现安全提示,显示VPN标志等情形。还有的公证员采用非正常方式登录,公证与截图显示源代码提取路径不一,IP地址前后出入,事先安装SVN客户端等情形,可谓SVN取证的“大型翻车现场”。
三、司法实践中SVN证据被质疑的重点
(一)质疑SVN公证书的效力
根据《最高人民法院关于知识产权民事诉讼证据的若干规定(征求意见稿)》第四十六条[9]等规定以及实务中的相关案例,当公证行为是在公证处以外的场所进行,公证所用的电脑在公证之前不为公证员控制,并由公证员以外的人进行操作,且公证书没有记载是否对该电脑及移动硬盘的清洁性进行检查等情况下,公证证据不能作为认定事实的依据。实践中,办案律师也经常会依据上述规定和类案判决,指出SVN公证中存在的重大瑕疵,进而对公证书的效力进行质疑,并据此认为SVN公证难以作为认定案件事实的依据。上述情况,在SVN证据的举证质证过程中尤其突出。
(二)举证方拒绝提交SVN取证过程的录屏文件,而被质疑尚未履行初步举证责任
由于SVN系统中包含举证方软件所有版本的记录,蕴含了巨大的商业价值。实践中,即使举证人实施登录,浏览开发日志,下载资源文件等操作,也鲜有举证方会把SVN取证过程的录屏及下载的源代码提交给质证人。即使在已签订保密协议的情况下,其也会拒绝提供。
此种情况,质证方除了以无法核对原件,不予质证外,也有的会从举证责任角度进行质证。例如,在商业秘密案件中,质证方往往会根据《最高人民法院关于审理侵犯商业秘密民事案件适用法律若干问题的规定》第二十七条[10]、《最高人民法院关于审理不正当竞争民事案件应用法律若干问题的解释》第十四条[11]等规定进行质证。因为根据上述规定,权利人指称他人侵犯其商业秘密的,应当对其拥有的商业秘密符合法定条件等负举证责任,应当在一审法庭辩论结束前明确所主张的商业秘密具体内容。也即,只有在确认原告对主张保护的客体具有真实的权利基础后,才具备进一步审查和认定被告是否实施诉称侵权行为的必要。而举证人屡次拒绝提交对SVN服务器取证过程的录屏文件及源代码,不明确其主张的商业秘密的具体内容,实际上属于尚未履行初步举证责任。进而,质证方也会认为举证人所主张的权利基础的真实性存疑。
(三)异常操作,质疑SVN服务器及源代码的真实性
司法实务中,SVN证据在取证过程中的异常操作情况,也会被质证方所重点关注,主要分为以下几类:
1、SVN服务器登录方式异常
正常情况下,SVN服务器按如下方式登录:(1)点击SVN服务器的图标;(2)输入用户名和密码,进入SVN初始界面;(3)在初始界面中选取特定版本的代码进行查看。实际上,按正常路径登陆后的SVN登录界面,会包括整个SVN的完整项目。但若举证人未按照正常方式登陆SVN服务器,而是在登陆时手动输入某一个特定路径。比如“svn://xxx.xxx.xxx.x/xxxxxx/xxxxx/123”,则会径直进入到一个指定版本的代码里。此种情形下,举证人实际上并不能展示其SVN服务器的完整界面与运行状态。其通过特定路径查看代码这一反常操作实际上表明举证人并不希望他人看到其SVN服务器的全貌,而是刻意隐瞒了相关信息。据此,质证方也往往会质疑举证人SVN服务器并非管理特定软件版本的源代码实际使用的服务器,而是为诉讼临时搭建的,进而,该SVN服务器及从该服务器下载的源代码并不具备真实性。
2、SVN服务器内管存记录的完整性
此外,实务中也有质证方会质疑SVN管存记录的完整性。例如,SVN服务器展示源代码条目数不完整,SVN录屏截图底部明明显示有多条日志记录,但证据里却只展示了极少的日志记录。此种情形,也很难不让人怀疑,举证人在提交SVN证据时对展示的日志记录进行了筛选,将对其不利的日志记录进行了隐藏或删除。此种情形下,如果举证方又难以通过开发记录的顺延性、合理性等方面加以论证,则该份证据就极可能不会被法院所采信。
3、未展示SVN服务器的完整界面
例如,举证人在其SVN服务器截图中,出现很明显的异常情况。例如SVN界面出现大量空白,丢失时间(Date)、备注记录(Message)等关键信息。对此,质证方往往据此质疑SVN服务器的真实性,认为其已经经过篡改或者系为诉讼目的临时搭建,该证据不具有真实性,不能作为判断原告权利基础实际形成时间的证据。
四、SVN是否具有可篡改性
SVN证据,被质疑最多的就是其具有可篡改性,因而,不具有真实性。
理论上讲,SVN是可以被篡改的。
在SVN服务器的配置文件“pre-revprop-change”中有检查匿名用户是否具有修改作者、提交时间、描述等日志属性权限的开关,当关闭检查匿名用户修改权限的开关后,登录的用户就具有了编辑修改日志属性的权限,可以随意修改作者、提交时间和描述等日志属性。
SVN服务器安装目录“/var/svn/svnrepos/db/”是SVN服务器的代码库,提交的源代码以文件形式保存在这个目录下。当SVN服务器安装好以后,SVN服务器即在“/var/svn/svnrepos/db/revprops/0/”和“/var/svn/svnrepos/db/revs/0/”各生成一个以数字“0”命名的文件,在“/var/svn/svnrepos/db/ revprops /0/”下“0”文件记录了提交的时间,“/var/svn/svnrepos/db/revs/0/”下的“0”文件记录了提交的内容和哈希值。以后,当每次提交时,会分别生成以数字“1”、“2”、“3”等命名的文件。也就是说,当SVN客户端第一次提交源代码时,SVN服务器会在“/var/svn/svnrepos/db/revprops/0/”目录下生成一个以数字“1”命名的文件,这个文件记录了源代码提交的时间等内容;SVN服务器还会在“/var/svn/svnrepos/db/revs/0/”目录下也生成一个以数字“1”命名的文件,这个文件记录了提交的内容和源文件的哈希值等内容。这些记录的内容都是明文保存的,可以随意修改。
TortoiseSVN版本库浏览器显示的日志和版本内容就来自于“/var/svn/svnrepos/db/revprops/0/”和“/var/svn/svnrepos/db/revs/0/”下以数字命名的文件中。
因此,当更改“/var/svn/svnrepos/db/revprops/0/” 和“/var/svn/svnrepos/db/revs/0/”下以数字命名的文件中的内容时,TortoiseSVN版本库浏览器显示的内容也就相应的改变了。所以,Subversion版本管理系统记录的作者、时间、描述等日志属性和记录的内容是可以修改的。
但实际上,SVN被篡改的难度极大,且篡改后的危害也极大。
由于SVN相当于一个“时间机器”,它可以记录每一行代码每一个元素的“前生今世”和“历史更迭”,在其创建、修订、更迭中,各个版本的相关代码紧密相连,彼此嵌入,形成一个有机统一的关联整体。如果对其中的某行数据进行篡改,一方面,实际上很难去判断究竟有着多少行代码将会受到影响。另一方面,如果改动其中某些代码、元素,可能就意味着与其关联的记录、文件都要进行相应调整,可谓牵一发而动全身。严重的是,一旦通过特定技术手段去篡改,修改SVN中的时间记录及相应日志内容,也将会面临整个数据库脏读的风险。而数据库一旦脏读,也很可能导致整个系统行为的不正常,严重故障,甚至带来一些不可估量的后果。因此,权利人一般也不会冒这么大风险去篡改其SVN系统。而在司法实践中,在无相关证据或事实显示存在修改的情况下,法院也会倾向于认可SVN系统的服务器数据资源的客观性。
五、如何规范SVN取证
(一)取证过程
如上文所述,SVN证据在质证环节很多时候都会被质疑其真实性、合法性。之所以出现该情况,很大程度上是源于举证人在做SVN公证时的不规范行为所致。为保证提交的SVN证据能被法院采信,一个基本的前提即是,保证做公证或者时间戳时做到规范取证,至少做到在形式上满足相关要求。例如取证时进行清洁性检查,采用常规方式登录SVN,展示SVN的完整界面内容,不进行遮挡等等。
(二)司法鉴定
当法院对SVN证据的真实性产生疑问时,为查清案件事实,也可申请专业鉴定机构对SVN服务器端和SVN客户端的相关情况进行鉴定。例如可以由专业鉴定机构对SVN时间记录及相应日志内容的修改,是否造成数据脏读或造成数据无效读出等情况进行鉴定。而司法鉴定机构会就此出具专业的司法鉴定意见书,而这种由专业鉴定机构出具的司法鉴定意见,也更容易被法院所采信。
(三)取证版本
在司法实践中,法院经常关注的一个问题即是,证明其权利基础的代码或元素的版本与用于侵权比对的代码或元素的版本是否相同。因为在一些案件中,权利人提交SVN证据最主要目的即是证明其权利基础的形成时间。但在进行侵权比对时,参与比对的版本又往往是后续更新迭代后的版本。此种情况下,可能有些法院就会对两个版本是否一致,产生疑问。此时,权利人可向法院进行说明,如果参与侵权比对的版本与证明权利基础的版本只是细小的线条、色彩等的调整,并不影响整体实质性相似的认定,则无大碍。而如果两个版本出入过大,则需考虑向法院解释系版本正常更迭所致,但是否被法院采信可能得视个案而定。
SVN证据的取证、质证以及认定,在司法实践中具有高度的复杂性和专业性,更需要结合个案情况去具体判断。本文笔者结合自身办案经历和实践案例,略作分析。但现实和技术的复杂性可能是互联网领域的律师需要永恒面对的难题,为此我们打造了“天同电子证据实验室”这一新诉讼法宝,寄希望能为各位同仁提供一个专业而有深度的交流平台,共同打造更具创新活跃与开放共赢的法律服务生态体系,欢迎大家与我们交流探讨。
注释:
[1]详情参见(2021)最高法知民终406号判决。
[2]详情参见(2018)粤民终243号判决。
[3]详情参见 (2019)最高法知民终371号判决。
[4]详情参见(2017)鄂民终244号判决。
[5]详情参见(2014)闵民三(知)初字第1547号判决。
[6]详情参见(2021)最高法知民终406号判决。
[7]详请参见(2018)苏民终1054号。
[8]详情参见(2014)闵民三(知)初字第1547号判决。
[9]《最高人民法院关于知识产权民事诉讼证据的若干规定(征求意见稿)》第四十六条规定,“对信息网络环境下的电子数据进行公证保全,公证员未检查取证设备的清洁性及网络接入情况,且无其他证据证明电子数据的真实性的,该公证证据不能作为认定事实的根据。”
[10]《最高人民法院关于审理侵犯商业秘密民事案件适用法律若干问题的规定》第二十七条:“权利人应当在一审法庭辩论结束前明确所主张的商业秘密具体内容。仅能明确部分的,人民法院对该明确的部分进行审理。权利人在第二审程序中另行主张其在一审中未明确的商业秘密具体内容的,第二审人民法院可以根据当事人自愿的原则就与该商业秘密具体内容有关的诉讼请求进行调解;调解不成的,告知当事人另行起诉。双方当事人均同意由第二审人民法院一并审理的,第二审人民法院可以一并裁判。”
[11]《最高人民法院关于审理不正当竞争民事案件应用法律若干问题的解释》第十四条:“当事人指称他人侵犯其商业秘密的,应当对其拥有的商业秘密符合法定条件、对方当事人的信息与其商业秘密相同或者实质相同以及对方当事人采取不正当手段的事实负举证责任。其中,商业秘密符合法定条件的证据,包括商业秘密的载体、具体内容、商业价值和对该项商业秘密所采取的具体保密措施等。”
免责声明
本文及其内容仅为交流目的,不代表天同律师事务所或其律师出具的法律意见、建议或决策依据。如您需要法律建议或其他专业分析,请与本文栏目主持人联系。本文任何文字、图片、音视频等内容,未经授权不得转载。如需转载或引用,请联系公众号后台取得授权,并于转载时明确注明来源、栏目及作者信息。
“天同网事”栏目由邹晓晨律师主笔/主持,本栏目深入研究互联网产业中竞争领域、知识产权领域、信息安全领域的相关技术问题与法律问题,并致力于将其打造成一门全新的“边缘学科”。我们希望借此栏目与法律同行和互联网产业同行一起分享资讯,碰撞观点,传播知识经验。如您有任何想法、意见、建议,欢迎点击文末留言。