编者按:近年来,计算机软件著作权侵权案件时有发生,由于计算机软件的的专业性导致对计算机软件作品是否相同或实质性相似判断起来难度极大,此时不可避免的需要借助专业技术人员的判断来确认作品是否同一。但知识产权司法鉴定人在对计算机软件作品进行同一性鉴定比对时,必须注意比对的对象以及方法,否则鉴定结论难保准确和有效。
一般来讲,软件同一性鉴定离不开源程序代码、目标代码文字内容的比对。除此之外,对于软件程序逻辑结构,组织顺序、处理流程、采用的数据结构,甚至是软件界面等内容都需要进行一一比对,以确保比对结果的周延。即鉴定比对主要通过对两个软件进行源代码比对(设计思路、编程风格等)、运行流程比对、功能点比对、界面比对、文件比对和安装过程比对等等,最终得出是否同一的结论。
本篇文章以最高人民法院对于一起案件的回函作为引子,为各位简单介绍在进行计算机软件同一性鉴定比对时应当注意哪些问题。
《最高人民法院关于深圳市帝慧科技实业有限公司与连樟文等计算机软件著作权侵权纠纷案的函》
广东省高级人民法院:
原审上诉人深圳市帝慧科技实业有限公司(以下简称帝慧公司)、原审被告连樟文、刘九发为与原审被上诉人曾小坚、曹荣贵计算机软件著作权侵权纠纷一案,不服你院[1997]粤知终字第55号终审民事判决,向本院申请再审。本院经调卷审查认为,你院上述判决缺乏事实依据,已于2000年4月7日以[1999]知监字第18号民事裁定指令你院对本院再审。你院在再审过程中请注意以下问题:
一、广东省软件侵权鉴定分析专家组的《“安全文明小区通用电脑管理系统”与“公安基层业务管理系统”的相似性鉴定分析报告》(以下简称《鉴定报告》)并未对原被告软件的源程序或目标程序代码进行实际比较,而是通过比较程序的运行参数(变量)、界面和数据库结构,就得出了两个软件实质相似的结论。运行参数属于软件编制过程中的构思而非表达;界面是程序运行的结果,非程序本身,且相同的界面可以通过不同的程序得到;数据库结构不属于计算机软件,也构不成数据库作品,且本案原告的数据库结构实际上就是公安派出所的通用表格,不具有独创性。因此,《鉴定报告》所称的两个软件存在实质相似性,并非著作权法意义上的实质相似性。
二、根据《鉴定报告》及其附件三(“关于程序自动生成的说明”),原告的程序是Foxbase for DOS环境下生成的,被告的程序代码很可能通过Foxpro For Windows工具自动生成,原被告的程序代码不具有可比性。根据该《鉴定报告》,难以认定被告抄袭了原告的程序代码,同时由于该鉴定未对两个软件文档进行比较鉴定,也不能得出被告抄袭原告文档的结论。因此,依据《鉴定报告》的结论认定被告侵权成立,缺乏事实依据。
上述回函当中,我们可以发现该案的鉴定机构在对计算机软件进行同一性鉴定比对时,并未抓住彰显计算机软件本质的源程序、目标程序代码等核心表达内容,而是从运行参数、界面等思想范畴或者程序运行的结果的角度进行分析,导致整个鉴定报告的结论难以被认可。
那么,在进行计算机软件同一性鉴定时应当注意些什么?下文即为各位简单介绍一些相关内容。
一、软件的诞生
我们所常说的软件即应用软件,即我们可以用这些软件来满足我们日常沟通交流、设计等目的的应用技术,常见的包括聊天软件、视频软件等等。
但一个软件是如何诞生的?一般来讲,为了设计服务于某一目的的软件,需要一个团队的计算机专业人员共同合作才能开发完成,具体开发过程包括需求分析、逻辑结构设计到程序编码、软件调试和试运行,最终形成我们现在常用的软件。
即使在软件生成之后,计算机技术人员仍然会不断的对软件程序进行改进和优化,避免各种漏洞的存在,并且为用户提供更好的的体验,因此就有了我们平时经常能看到的软件更新。
二、软件著作权的客体
对计算机软件进行同一性比对,首先必须确定计算机软件的客体。
软件著作权的客体是指计算机软件,即计算机程序及其有关文档。计算机程序是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。文档是指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表等,如程序说明、流程图、用户手册等。
对软件著作权的保护,不延及开发软件所用的思想、处理过程、操作方法或者数学概念等。
三、鉴定对象
通过上述内容,我们知道鉴定的对象主要是源程序、目标程序代码。
所谓代码,就是一种构成计算机软件程序的逻辑符号。
源代码(也称源程序)是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。 在现代程序语言中,源代码最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。
目标代码是指源代码经过编译程序产生的能被cpu直接识别的二进制代码,即源代码的作用之一即生成目标代码。而鉴于源代码的修改不能改变已经生成的目标代码。如果需要目标代码做出相应的修改,必须重新编译。
虽然源代码与目标代码有近乎一一对应的关系,但也应当注意到反编译的存在,在接触相关软件之后,通过反编译能够获得目标代码,对此目标代码相关内容进行实质性替换后得到的程序与该特定软件的源程序也不一定是相同或实质相似的。因此若仅仅对目标代码进行比对,得到的结果不一定准确, 还必须结合其他对象进行比对。
除此通常的源程序、目标程序代码外,鉴定比对的对象还包括软件的功能与目的、运行环境、操作流程、软件漏洞等,这些内容虽不属于核心部分甚至属于思想,但通过鉴定比对能够对鉴定结论起到一定支撑作用,因此仍有必要。
四、鉴定原则
对两个软件进行同一性比对时,应遵循以下原则:
(1)比对二者的目标程序二进制代码、源程序代码和有关文档是否构成相同或实质性相似。
(2)若二者比对项的相应内容完全相同,则二者的比对项具有同一性。
(3)若二者比对项的相应内容不完全相同,但比对项的必要部分、或主要部分没有本质区别,属于实质性相似,则二者的比对项仍具有同一性。
(4)若二者比对项的相应内容不完全相同,且具有本质区别,不构成实质性相似,则二者的比对项不具有同一性。
(5)若二者比对项的相应内容完全不同,则二者的比对项不具有同一性。
(6)一般情况下,当二者的目标程序二进制代码构成相同或实质性相似,则二者的目标程序具有同一性;当二者的源程序代码构成相同或实质性相似,则二者的源程序具有同一性;当二者的目标程序或源程序具有同一性,则比对的两个软件具有同一性。
同时,需要指出的是,完全原创的源代码总是少数,大部分软件源代码既包括一部分常见的代码,也包括专为特定软件设计的核心代码。通常核心代码一致时双方同一的盖然性就相当高了。但是我们不能忽视一种情形,即当核心代码在源代码中比例较低时,这种相同或实质性相似的结论就不能随意作出,对于其余非核心部分代码也应当进行分析比对后,最终作出结论,方能保持结论的科学性、准确性。
此外,我们还需要关注在对相关内容进行比对鉴定时,对于公知技术部分需要剔除后再进行比对,否则公知技术部分在软件程序中占比较高,那么即使两个软件相似度极高也不能够认定构成相同或实质相似。
五、鉴定方法
对于涉及计算机软件的内容相对专业,因此在与计算机专业领域人员沟通交流之后,可以再对鉴定比对的方向作出结论。
常见鉴定比对内容包括:
1、 文件管理结构对比;
2、 模块文件结构、数目、类型、属性对比;
3、 MD5校验值对比;
4、 数据库对比:数据库表结构、程序微观行为;
5、 运行界面对比;
6、 运行流程、功能设置和作用对比;
7、 源代码对比:特征、变量定义、编程风格、中断调用、数据格式、框架结构、设计思路;
8、 反编译、二进制程序反汇编;
9、 监控程序对文件、注册表、网络、数据库的操作行为;
10通过模糊哈希算法,分析判断:winhex工具计算对比;
11、micrsoftoffice文档比较工具对比;
(一)文字部分
软件核心的文字部分主要就在于源代码和目标代码。有时代码有加密等防护系统,因此需要对代码先进行脱密之后,再通过对二进制代码进行比对,看文字的是否相同或存在同义替换的情形。在比对过程中需要关注相同或近似部分二进制代码所占比例,为之后作出结论奠定基础。在比对过程中还可能需要借助其他专业软件帮助分析。
(二)非文字部分
除代码以外,还需要对两个软件的程序的组织结构、处理流程、所用的数据结构、所产生的输出方式、所要求的输入形式等方面的内容进行比对,以进一步支撑对于源代码与目标代码的分析。但是需要注意,这部分的内容不能单独作为定论依据,而必须结合对源代码和目标代码的分析结果才能得出结论。因为这些非文字部分毕竟是属于思想的部分,不受著作权法保护。
(三)具体鉴定方式
(1)对于显性部分,即安装软件的过程中屏幕显示的内容、目录名称等,还包括软件的运行结果,参考最高人民法院审理的福州外星电脑科技有限公司诉翁正文、叶秀娟、福州环球电器商行、乌鲁木齐利军商行、王晓燕侵犯计算机软件著作权纠纷案,法院对两游戏软件的非文字部分的相似判断采用“ 外观及感觉( Look and Feel) ”对照法,即对于运行结果表现为场景、音乐、人物等内容的软件,其实可以参考视听作品的比对方法(本公众号在上周推送了相关内容),从人物造型、场景设置、音乐选择、画面色调等方面对软件的此部分进行鉴定。
虽然对于显性的部分可能通过不同的指令达到相同的效果,但“鉴于游戏软件的特点, 两个各自独立开发的计算机游戏软件,其场景、人物、音响等恰巧完全相同的可能性几乎是不存在的, 若是可以模仿, 要实现外观感受的完全相同, 从技术上讲亦是有难度的。”因此,此种鉴定角度也能够帮助我们认定对比软件的同一性。
总体而言,对于显性部分,即可以从界面(风格、布局安排等)、运行流程(操作步骤、操作点位等)等内容进行比对。
(2)对于隐性部分,即软件内部不易从表面观察到的内容,即代码等内容,通常情况下是借助第三方软件(如UltraEdit等等)的比对功能,对涉案代码进行比对——比如将对应模块的内容进行行间比对,确认相同或近似的代码数量与组织顺序;或者将目标程序反编译为“准源程序”与程序开发过程中形成的原始源程序区别很大,两者不能等同,再进行源程序之间行与行的比较。
尤其在比对过程中,对于源程序中出现的公司内部特有的字符方式或程序独有的字符串、公司名称(创作痕迹)等要特别关注,如果双方软件都存在相关内容,那么对于认定双方软件相同或实质相似的可能性便极大。
总体而言,对于隐性部分,可以主要通过对两个软件从源代码(设计思路、编程风格、特征、数据格式等)、功能设置与作用、文档(目录、数量等)、安装过程等内容进行比对。
(四)鉴定中的特殊情形
在之前的一篇案例中,提到过有相对方不配合,不提供计算机软件源程序的相关情形,这应该算是一种普遍的现象,但也是鉴定需要关注的特殊情形。
在此种情况下,原来的对源代码比对的方法行不通时,便只能够选择“曲线救国”,从双方软件的目标程序、文档、运行特征、软件漏洞来比对;其中产品的使用说明书、整体外观和基本布局则可以作为鉴定比对的参考依据。
根据计算机软件设计的一般性原理,在独立开发完成设计的情况下,不同软件之间出现相同的文档、运行特征、操作流程、软件缺陷等等机率极小,因此如果软件之间存在上述内容相同的情形,则软件之间的源程序相同的概率较大。不过此种结论有一定的风险,因为毕竟不是对软件源程序进行同一性比对,这份比对结果对两软件著作权同一性构成相同或实质性相似不能一锤定音。
附:软件相似性鉴定实施规范 SF/Z JD0403001-2014
软件相似性鉴定实施规范 SF/Z JD0403001-2014
中华人民共和国司法部司法鉴定管理局发布2014年3月17日公告公布,自2014年3月17 日起施行。
◆ 前 言
本技术规范按照GB/T 1.1-2009给出的规则起草。
本技术规范由上海辰星电子数据司法鉴定中心提出。
本技术规范由司法部司法鉴定管理局归口。
本技术规范起草单位:上海辰星电子数据司法鉴定中心。
本技术规范主要起草人:金波、郭弘、高峰、张颖、张晓、崔宇寅、蔡立明、黄道丽、沙晶、孙杨、雷云婷、张云集。
本技术规范为首次发布。
1 范 围
本技术规范规定了软件相似性检验的技术方法和步骤。
本技术规范适用于在电子数据检验鉴定工作中的软件的相似性检验。
2 术语和定义
2.1检材 software for examination
电子数据检验鉴定中需检验的软件。
2.2样本 software for comparison
电子数据检验鉴定中用于同检材进行比对检验的软件。
2.3数字化设备 digital device
存储、处理和传输二进制数据的设备,包括计算机、通信设备、网络设备、电子数据存储设备等。
2.4源代码 source code
未经编译的、按照一定的程序设计语言规范书写的、人类可读的计算机指令语言指令。
2.5目标程序 object code
编译器或汇编器处理源代码后所生成的、可被直接被计算机运行的机器码集合。
2.6运行环境 runtime environment
一种把执行码在目标机器上运行的环境。
2.7哈希值 hash value
使用安全的哈希算法对数据进行计算获得的数据。常用哈希算法包括MD5、SHA1和SHA256等。
2.8反编译 decompile
将已编译的程序文件还原成汇编或者高级语言代码的过程。
3 仪器设备
3.1硬件
电子数据存储设备、保全备份设备、检验设备。
3.2软件
送检软件所需的运行环境、文件比对工具、反编译工具、源代码分析工具等。
4 检验步骤
4.1记录检材和样本情况
4.1.1对送检的检材/样本进行唯一性编号,编号方法为 XXXX(年度)-XXX(受理号)-XX(流水号),如2012-39-2 表示 2012 年受理的编号 39 案件的第 2 个检材。
4.1.2对检材/样本为数字化设备的,对数字化设备进行拍照,并记录其特征。
4.2检材和样本的保全备份
对具备保全条件的检材和样本进行保全备份,并计算保全备份的副本或镜像的哈希值。
4.3检验项目的选择
分析检材和样本,根据检材和样本的内容选择以下一项或多项内容进行检验:
a)源代码间的比对;
b)目标程序间的比对;
c)源代码和目标程序间的比对;
d)文档的比对(如适用);
e)文档和源代码/目标程序间的比对。
注:文档包括开发文档、需求说明书、总体设计方案、详细设计方案等。
4.4程序的比对检验
4.4.1要求
对检材和样本进行比对检验时,需先排除影响比对的内容(如公共程序库文件、第三方库文件和GNU通用公共许可的程序等)。
4.4.2源代码间的比对
对检材和样本的源代码的目录结构、文件名、文件内容、变量、函数、宏定义等进行比对检验。检验时,应排除自定义的文件名、变量名、函数名等名称被修改的影响,对程序逻辑与结构等内容进行比对检验。
4.4.3目标程序间的比对
分别对检材和样本中的目标程序文件计算哈希值。若所有对应文件的哈希值相同,则软件相同。若对应文件的哈希值不相同,按下列步骤进行:
a)安装程序检验(如适用),对检材和样本的安装程序进行下列比对检验:
1)目录结构及目录名;
2)各组成文件的文件名、文件哈希值、文件内容、文件结构和文件属性等。
b)安装过程检验(如适用)
分别运行检材和样本的安装程序,观察安装过程的屏幕显示、软件信息、使用功能键后的屏幕显示以及安装步骤,并进行比对检验。
c)安装后的程序检验,对安装成功的检材和样本的程序进行下列比对检验:
1)安装后产生的目录结构及目录名;
2)安装后产生的文件的文件名、文件哈希值、文件内容、文件结构和文件属性等;
3)安装后的软件的配置过程和运行方式。
d)程序的使用过程检验:运行该程序,对使用过程中的屏幕显示、功能、功能键和使用方法等进行比对检验。
e)核心程序的逆向分析:必要时,对目标程序的核心程序进行反编译,对反编译后的代码进行比对检验。
4.4.4源代码和目标程序间的比对
将源代码编译成目标程序后再进行比对检验,检验过程按照目标程序间的比对进行。
注:源代码编译过程中,由于编译软件、编译环境等不同,相同的源代码每次编译产生的文件可能会有差异。
4.5文档的比对
对检材和样本的文档的目录结构、内容以及属性进行比对。
5 检验记录
5.1与鉴定活动有关的情况应及时、客观、全面地记录,保证鉴定过程和结果的可追溯性。
5.2对于检材/样本为数字化设备的,应记录:
a)检材/样本的类别;
b)检材/样本的型号;
c)检材/样本出厂时的唯一性编号(如适用);
d)检材/样本的固件版本号(如适用);
e)检材/样本中软件的名称、版本等属性信息(如适用);
f)检材/样本的照片。
5.3对于检材/样本为独立于数字化设备的软件的,应记录:
a)软件的名称、版本、大小等属性信息;
b)软件的哈希值;
c)软件的运行环境。
5.4对于检验的结果,应记录:
a)检材与样本的相同部分,如目录结构、目录名、文件、文件名、文件内容等;
b)检材与样本的相似部分,如安装或使用过程中的屏幕显示等;
6 检验结果
6.1列出检材与样本的相似比例,并对存在相同或相似的部分进行说明。
6.2若检材与样本中存在软件署名、开发者的姓名、单位、废程序段、独特的代码序列等相同时,需在检验结果中单独列出。
7 附 则
7.1对检验用的软件工具的适用性应进行适当确认。
7.2在检验过程中,检出的数据应存储在专用的存储介质中并妥善保管。
7.3对送检的检材和样本要做好防震、防水、防磁、防静电等保护。
注:本文部分内容源自于百度百科及相关文章。