張乃珩
〔英國(guó) 泰恩河畔紐卡斯?fàn)柎髮W(xué)〕
隨著信息技術(shù)的不斷發(fā)展,各類軟件應(yīng)用已經(jīng)滲透到人們工作生活的方方面面,涉及軟件鑒定的案件也愈來(lái)愈多。在司法鑒定實(shí)踐活動(dòng)中,軟件鑒定需求迅猛發(fā)展,軟件鑒定方法相對(duì)滯后,需要司法鑒定人在鑒定實(shí)踐中不斷探索,完善科學(xué)有效的軟件檢驗(yàn)鑒定機(jī)制。
軟件已經(jīng)廣泛運(yùn)用到人們的生產(chǎn)生活中,極大地提高了生產(chǎn)效率,方便了人們的生活。在司法鑒定活動(dòng)中,涉及軟件鑒定的案件通常有以下幾種。
1.侵犯專利權(quán)案
在軟件司法鑒定過(guò)程中,侵犯專利權(quán)的案件較少,因?yàn)槲覈?guó)《專利法》規(guī)定“智力活動(dòng)的規(guī)則和方法”不能授予專利權(quán),所以單獨(dú)的計(jì)算機(jī)軟件不能夠授予專利權(quán)。如果某項(xiàng)發(fā)明的實(shí)現(xiàn)過(guò)程中包含有計(jì)算機(jī)軟件部分,這部分軟件可以申請(qǐng)發(fā)明專利。
2.侵犯著作權(quán)案
在侵犯著作權(quán)案中把軟件作為作品進(jìn)行保護(hù),在受到侵犯時(shí)適用《著作權(quán)法》《計(jì)算機(jī)軟件保護(hù)條例》進(jìn)行保護(hù)。
我國(guó)《著作權(quán)法》第三條第八款明確規(guī)定,計(jì)算機(jī)軟件受著作權(quán)法保護(hù)?!队?jì)算機(jī)軟件保護(hù)條例》第六條規(guī)定,本條例對(duì)軟件著作權(quán)的保護(hù)不延及開發(fā)軟件所用的思想、處理過(guò)程、操作方法或者數(shù)學(xué)概念等。
從上述法律規(guī)定可以看出,通過(guò)《著作權(quán)法》和《計(jì)算機(jī)軟件保護(hù)條例》保護(hù)計(jì)算機(jī)軟件,主要是對(duì)計(jì)算機(jī)軟件的形式進(jìn)行保護(hù),重點(diǎn)是計(jì)算機(jī)軟件的固有形態(tài)。
在這類案件中,軟件的檢驗(yàn)鑒定主要對(duì)象是軟件的一致性和相似性。通過(guò)對(duì)檢材軟件與樣本軟件進(jìn)行比對(duì),得出是否一致或?qū)嵸|(zhì)相同的鑒定意見。
3.侵犯商業(yè)秘密案
把軟件作為商業(yè)秘密是計(jì)算機(jī)軟經(jīng)常采用的一種保護(hù)方式,在軟件受到侵害時(shí)可以適用《反不正當(dāng)競(jìng)爭(zhēng)法》。《反不正當(dāng)競(jìng)爭(zhēng)法》規(guī)定,商業(yè)秘密是指不為公眾所知悉、具有商業(yè)價(jià)值并經(jīng)權(quán)利人采取相應(yīng)保密措施的技術(shù)信息、經(jīng)營(yíng)信息等商業(yè)信息。
把軟件作為商業(yè)秘密進(jìn)行保護(hù),既能保護(hù)軟件外在表現(xiàn)形態(tài),又能保護(hù)軟件開發(fā)人員采用的軟件設(shè)計(jì)思想、設(shè)計(jì)方案、數(shù)據(jù)結(jié)構(gòu)、核心算法等要素,只要軟件的這些核心要素滿足商業(yè)秘密的標(biāo)準(zhǔn)就可獲得保護(hù)。
在這類案件中,需要明確保護(hù)的密點(diǎn),鑒定密點(diǎn)的“不為公眾所知悉”屬性。
4.破壞計(jì)算機(jī)信息系統(tǒng)案
還有一類就是利用軟件從事非法活動(dòng),獲取不正當(dāng)利益的案件,這類案件通常會(huì)觸犯破壞計(jì)算機(jī)信息系統(tǒng)罪。根據(jù)《中華人民共和國(guó)刑法》第二百八十六條規(guī)定,破壞計(jì)算機(jī)信息系統(tǒng)罪是指違反國(guó)家規(guī)定,對(duì)計(jì)算機(jī)信息系統(tǒng)功能或計(jì)算機(jī)信息系統(tǒng)中存儲(chǔ)、處理或者傳輸?shù)臄?shù)據(jù)和應(yīng)用程序進(jìn)行破壞,或者故意制作、傳播計(jì)算機(jī)病毒等破壞性程序,影響計(jì)算機(jī)系統(tǒng)正常運(yùn)行,后果嚴(yán)重的行為。
在這類案件中,通常需要對(duì)軟件的功能進(jìn)行檢驗(yàn)鑒定,做出軟件是否具有某項(xiàng)功能的鑒定結(jié)論。
由于軟件技術(shù)發(fā)展非常迅速,軟件應(yīng)用的范圍也非常廣泛,在軟件鑒定過(guò)程中存在不同程度的挑戰(zhàn)。
1.檢材軟件多樣性方面的挑戰(zhàn)
在軟件的鑒定過(guò)程中,委托方提供的檢材軟件差別很大。(1)軟件的運(yùn)行平臺(tái)不同,有的軟件運(yùn)行在windows平臺(tái),有的軟件運(yùn)行在Linux平臺(tái),有的運(yùn)行在Android平臺(tái),有的運(yùn)行在IOS平臺(tái),有的運(yùn)行在嵌入式系統(tǒng)中。(2)軟件編寫使用的語(yǔ)言各異,有的軟件用C語(yǔ)言,有的用java語(yǔ)言,有的用Python腳本,有的用.net語(yǔ)言編寫等。(3)檢材呈現(xiàn)的形態(tài)不同,有的是程序源代碼,有的是目標(biāo)程序,有的是虛擬機(jī)鏡像文件,有的是磁盤鏡像。(4)檢材的功能各異,有的是行業(yè)專用軟件,有的是游戲軟件,有的是惡意代碼,有的是網(wǎng)站源碼。(5)委托方鑒定要求不同,有的要求對(duì)軟件功能進(jìn)行鑒定,有的要求相似度鑒定??傊瑱z材軟件的多樣性給鑒定工作帶來(lái)了一定挑戰(zhàn)。
2.軟件核心算法等要素認(rèn)定方面的挑戰(zhàn)
軟件是開發(fā)人員智力活動(dòng)的產(chǎn)物,是開發(fā)者通過(guò)編程語(yǔ)言實(shí)現(xiàn)特定功能的產(chǎn)物。一些大型專用軟件,往往是開發(fā)團(tuán)隊(duì)經(jīng)過(guò)長(zhǎng)時(shí)間不斷開發(fā)測(cè)試研發(fā)出來(lái)的成果,一些核心算法和核心數(shù)據(jù)結(jié)構(gòu)具有較高的科技含量。在竊取商業(yè)秘密等件中,原告往往把軟件的設(shè)計(jì)思路、軟件架構(gòu)、數(shù)據(jù)結(jié)構(gòu)、核心算法等作為商業(yè)秘密進(jìn)行保護(hù)。司法鑒定人員由于受專業(yè)和環(huán)境限制,不可能全面完整地理解軟件的設(shè)計(jì)思路、軟件架構(gòu)、數(shù)據(jù)結(jié)構(gòu)、核心算法等核心要素,只能根據(jù)自己的知識(shí)和經(jīng)驗(yàn),按照司法鑒定程序?qū)浖M(jìn)行檢驗(yàn)鑒定。在軟件的核心要素鑒定方面,司法鑒定人員面臨較大挑戰(zhàn)。
3.軟件源代碼“不為公眾所知悉”認(rèn)定方面的挑戰(zhàn)
目前,商業(yè)秘密的非公知性鑒定尚沒(méi)有統(tǒng)一的行業(yè)標(biāo)準(zhǔn)。在軟件侵權(quán)案件中,如果作為商業(yè)秘密的軟件被竊取,在證明其是否符合“不為公眾所知悉”標(biāo)準(zhǔn)時(shí),主要依據(jù)是最高人民法院《關(guān)于審理不正當(dāng)競(jìng)爭(zhēng)民事案件應(yīng)用法律若干問(wèn)題的解釋》第十條第三款。在司法鑒定中,一方面鑒定人員主要通過(guò)大量的檢索來(lái)反證“不為公眾知悉”,這與鑒定人員自身所掌握的資源有很大關(guān)系。另一方面依靠鑒定人員自身的行業(yè)經(jīng)驗(yàn)進(jìn)行判斷。在源代碼是否符合“不為公眾所知悉”標(biāo)準(zhǔn)的認(rèn)定方面存在一定的挑戰(zhàn)。
4.軟件功能認(rèn)定方面的挑戰(zhàn)
功能鑒定是軟件鑒定的一項(xiàng)重要內(nèi)容。在司法鑒定實(shí)踐中,軟件功能鑒定有以下幾個(gè)方面的困難。一是缺少相關(guān)的操作標(biāo)準(zhǔn)和規(guī)范。軟件功能鑒定的相關(guān)標(biāo)準(zhǔn)規(guī)范較少,由于軟件功能的多樣性,相關(guān)規(guī)范沒(méi)有明確規(guī)定具體檢驗(yàn)鑒定方法和檢驗(yàn)鑒定流程,操作指導(dǎo)性不強(qiáng)。二是需要鑒定的軟件功能繁雜。在進(jìn)行檢驗(yàn)鑒定的過(guò)程中,軟件運(yùn)行環(huán)境不同,功能各異,甚至有些鑒定人員聞所未聞的功能。三是在檢驗(yàn)鑒定過(guò)程中,有軟件功能往往比較模糊,無(wú)法通過(guò)具體的標(biāo)準(zhǔn)進(jìn)行衡量。比如,在某一案件中,委托方提供了一款軟件,要求認(rèn)定該軟件是否具有賭博功能,但沒(méi)有明確的相關(guān)規(guī)定對(duì)賭博功能和游戲功能進(jìn)行區(qū)分。因此,在某些功能認(rèn)定方面具有一定挑戰(zhàn)。
目前,電子數(shù)據(jù)司法鑒定依據(jù)主要有國(guó)家標(biāo)準(zhǔn)、公共安全行業(yè)標(biāo)準(zhǔn)以及司法鑒定領(lǐng)域?qū)<艺J(rèn)可的方法等。依據(jù)司法鑒定相關(guān)標(biāo)準(zhǔn)和規(guī)范,在軟件司法鑒定實(shí)踐中,通常從以下幾個(gè)方面開展鑒定工作。
1.一致性鑒定
涉及軟件一致性鑒定的國(guó)家推薦性標(biāo)準(zhǔn)有一個(gè),即《電子物證文件一致性檢驗(yàn)規(guī)程》(編號(hào):GB/T 29361-2012),該標(biāo)準(zhǔn)規(guī)定了文件一致性的檢驗(yàn)方法,即通過(guò)哈希值計(jì)算,如果文件哈希值計(jì)算結(jié)果相同,則文件相同,否則文件不一致。行業(yè)標(biāo)準(zhǔn)《電子物證軟件一致性檢驗(yàn)技術(shù)規(guī)范》(編號(hào):GA/T 828-2009)詳細(xì)規(guī)定了軟件一致性的檢驗(yàn)鑒定對(duì)象、方法、步驟等內(nèi)容。
在司法鑒定實(shí)踐中,軟件一致性檢驗(yàn)的基本方法是通過(guò)對(duì)檢材文件和樣本文件進(jìn)行比對(duì)得出檢驗(yàn)結(jié)論。具體操作是對(duì)檢材文件和樣本文件分別進(jìn)行哈希值計(jì)算,如果兩個(gè)文件的哈希值一樣,則說(shuō)明兩個(gè)文件一致,否則,文件不一致。目前常用的哈希校驗(yàn)算法有MD5、SHA-1、SHA-256等。在檢驗(yàn)過(guò)程中,為防止哈希碰撞,通常使用兩種哈希算法對(duì)文件進(jìn)行哈希校驗(yàn)。軟件文件一致性檢驗(yàn)的對(duì)象包括源程序、目標(biāo)程序中的目錄、文件等。
比較常見的哈希值計(jì)算工具有Hashcalculator、quick-wash等,Linux下使用md5sum命令可以計(jì)算文件的MD5值,shasum命令可以計(jì)算文件的SHA1值,另外許多取證軟件也都帶有哈希計(jì)算功能。
2.相似性鑒定
相似性鑒定的行業(yè)標(biāo)準(zhǔn)是《軟件相似性檢驗(yàn)技術(shù)方法》(編號(hào):GA/T 1175-2014),規(guī)定的檢驗(yàn)內(nèi)容有安裝程序檢驗(yàn)、安裝過(guò)程檢驗(yàn)、安裝后的程序檢驗(yàn)、程序的使用過(guò)程檢驗(yàn)、核心程序的逆向分析等。
相似度檢驗(yàn)主要是通過(guò)檢驗(yàn)比對(duì),確定檢材與樣本之間的相似度。通常進(jìn)行四個(gè)方面的比對(duì):一是源代碼間的比對(duì)。對(duì)檢材和樣本的目錄結(jié)構(gòu)、文件名、文件內(nèi)容、函數(shù)、變量等進(jìn)行比對(duì)檢驗(yàn),檢驗(yàn)時(shí)應(yīng)排除文件名、函數(shù)名、變量名等因素影響。二是與目標(biāo)程序的比對(duì)。包括安裝前目錄結(jié)構(gòu)、文件等比對(duì);安裝過(guò)程中安裝步驟的比對(duì);安裝后的目錄結(jié)構(gòu)、文件名、文件內(nèi)容比對(duì);軟件使用過(guò)程中屏幕顯示內(nèi)容、功能等的比對(duì)。三是將源代碼編譯成目標(biāo)程序后再進(jìn)行比對(duì),其比對(duì)方法與目標(biāo)程序的比對(duì)相同。四是檢材與樣本中軟件文檔的比對(duì),包括目錄結(jié)構(gòu)、文件名稱、文件內(nèi)容、文件屬性等。
為了鑒定源代碼(或文檔)的相似度,需要使用代碼比對(duì)工具對(duì)檢材源代碼與目標(biāo)源代碼(或文檔)進(jìn)行比較。常用的代碼比對(duì)工具有WinMerge、Diffuse、Beyond Compare、Code Compare、AptDiff、UltraCompare、Altova DiffDog等。
3.功能檢驗(yàn)鑒定
涉及軟件功能檢驗(yàn)鑒定的標(biāo)準(zhǔn)規(guī)范有《電子物證軟件功能檢驗(yàn)技術(shù)規(guī)范》(編號(hào):GA/T 828-2009),規(guī)定根據(jù)送檢要求對(duì)軟件功能進(jìn)行檢驗(yàn),并未規(guī)定檢驗(yàn)鑒定的具體方法步驟。行業(yè)標(biāo)準(zhǔn)《網(wǎng)絡(luò)游戲私服檢驗(yàn)技術(shù)方法》(編號(hào):GA/T 978-2012)規(guī)定了針對(duì)網(wǎng)絡(luò)私服的檢驗(yàn)鑒定方法,明確了檢驗(yàn)對(duì)象,其鑒定方法與《電子物證軟件一致性檢驗(yàn)技術(shù)規(guī)范》中的檢驗(yàn)方法基本一致。
其他涉及計(jì)算機(jī)軟件檢驗(yàn)鑒定的標(biāo)準(zhǔn)規(guī)范還有《程序功能檢驗(yàn)方法》《法庭科學(xué)Android系統(tǒng)應(yīng)用程序功能檢驗(yàn)方法》等,限于篇幅,本文不再詳細(xì)介紹。
通過(guò)對(duì)軟件檢驗(yàn)鑒定的相關(guān)標(biāo)準(zhǔn)規(guī)范和基本檢驗(yàn)鑒定方法分析可以看出,軟件的檢驗(yàn)鑒定主要是通過(guò)對(duì)源程序、目標(biāo)程序、文檔資料等進(jìn)行比對(duì)檢驗(yàn),內(nèi)容包括程序源代碼、目錄結(jié)構(gòu)、文件內(nèi)容、安裝過(guò)程等。在司法鑒定實(shí)踐中,如果僅僅依據(jù)相關(guān)標(biāo)準(zhǔn)規(guī)范開展檢驗(yàn)鑒定,難以滿足軟件鑒定的現(xiàn)實(shí)需求,特別是對(duì)軟件功能方面的鑒定,由于沒(méi)有具體的檢驗(yàn)操作規(guī)范,檢驗(yàn)鑒定工作難以規(guī)范開展。
為了應(yīng)對(duì)計(jì)算機(jī)軟件鑒定實(shí)踐中面臨的挑戰(zhàn),需要在嚴(yán)格按照司法鑒定相關(guān)程序規(guī)范的基礎(chǔ)上,對(duì)軟件鑒定部分進(jìn)行如下改進(jìn)。
1.軟件功能檢驗(yàn)鑒定改進(jìn)建議
功能性鑒定是對(duì)某一款軟件是否具有某項(xiàng)或多項(xiàng)功能進(jìn)行檢驗(yàn)鑒別,在具體的檢驗(yàn)鑒定方法上,建議采用靜態(tài)分析和動(dòng)態(tài)測(cè)試相結(jié)合的方法。
靜態(tài)分析的目的是通過(guò)分析源代碼,找出相關(guān)功能模塊,證明其是否具有某項(xiàng)功能。具體檢驗(yàn)步驟包括:(1)搭建源代碼靜態(tài)分析環(huán)境,比如源代碼的集成開發(fā)環(huán)境等。(2)確定功能模塊,即確定實(shí)現(xiàn)某一項(xiàng)功能的核心模塊。(3)對(duì)功能模塊進(jìn)行分析檢驗(yàn)。
動(dòng)態(tài)功能測(cè)試的目的是判斷特定軟件是否具有某項(xiàng)功能。動(dòng)態(tài)功能測(cè)試包括在模擬仿真環(huán)境中測(cè)試和在實(shí)際應(yīng)用環(huán)境中測(cè)試兩種方式,基本檢驗(yàn)方法如下:(1)在進(jìn)行軟件功能測(cè)試前,確定測(cè)試目的。(2)確定軟件測(cè)試環(huán)境。根據(jù)軟件的具體情況確定軟件的測(cè)試環(huán)境。如果具備在真實(shí)環(huán)境中測(cè)試的條件,就在真實(shí)環(huán)境中測(cè)試,如果不具備,則需要搭建模擬仿真環(huán)境。(3)使用測(cè)試分析工具,對(duì)軟件的功能進(jìn)行測(cè)試分析。比如,使用數(shù)據(jù)包抓取工具可以分析軟件與外界的通信情況、使用軟件行為分析工具可以分析軟件的行為特征等。(4)通過(guò)測(cè)試,得出是否驗(yàn)證測(cè)試目的的結(jié)論。
常用的軟件功能分析輔助工具有行為監(jiān)控工具,如Sysinternals工具集;惡意軟件行為分析工具,如Malware Defender;數(shù)據(jù)包抓取工具,如Fiddle、Charles、Wireshark等;逆向分析工具Reverse、IDA、APKTOOL等;虛擬平臺(tái)工具VMware、KVM、Xen等。圖2是利用數(shù)據(jù)包抓取工具Fiddle分析某款軟件是否具有賭博功能時(shí)的截圖,通過(guò)對(duì)軟件通信數(shù)據(jù)的分析,找到了該軟件與某錢包平臺(tái)(跑分平臺(tái))通信的證據(jù)。
2.軟件密點(diǎn)鑒定的改進(jìn)建議
在涉及軟件鑒定的商業(yè)秘密侵權(quán)案件中,不建議把整個(gè)軟件作為秘密進(jìn)行鑒定,而是把軟件設(shè)計(jì)的核心要素作為秘密,在鑒定前需要確定密點(diǎn),對(duì)密點(diǎn)進(jìn)行檢驗(yàn)鑒定,檢驗(yàn)方法如下。(1)由原告提供其主張的密點(diǎn)。(2)梳理原告提供的密點(diǎn),在密點(diǎn)基礎(chǔ)上構(gòu)建特征模板,包括軟件設(shè)計(jì)目標(biāo)、設(shè)計(jì)思路、核心功能模塊、核心算法、數(shù)據(jù)結(jié)構(gòu)、重要參數(shù)、數(shù)據(jù)庫(kù)結(jié)構(gòu)等要素。(3)制定檢驗(yàn)鑒定方案,針對(duì)檢材和樣本的密點(diǎn)進(jìn)行檢驗(yàn)鑒定。
下面舉例說(shuō)明特征模板的構(gòu)建方法。假設(shè)原告主張的軟件密點(diǎn)為深度優(yōu)先搜索算法,根據(jù)原告主張的密點(diǎn),可以構(gòu)建如下特征模板:
設(shè)計(jì)目標(biāo):遍歷所有節(jié)點(diǎn)。
設(shè)計(jì)思路:從頂點(diǎn)出發(fā),首先訪問(wèn)頂點(diǎn),從未被訪問(wèn)的鄰接點(diǎn)出發(fā),以深度為優(yōu)先,搜索遍歷圖中所有節(jié)點(diǎn)。
采用數(shù)據(jù)結(jié)構(gòu):棧結(jié)構(gòu)。
代碼模塊:略。
實(shí)現(xiàn)步驟見圖1。
圖1 深度優(yōu)先遍歷示例圖
具體如下:
(1)以A為起點(diǎn)開始遍歷,輸入A點(diǎn)信息,A入棧。(2)從A的鄰接節(jié)點(diǎn)B、D、E任選一個(gè)點(diǎn),如選B點(diǎn),輸入B點(diǎn)信息,B入棧。(3)從C、D任選一點(diǎn),如選C點(diǎn),輸入C點(diǎn)信息,C入棧。(4)回退到B節(jié)點(diǎn),C出棧。(5)輸入D節(jié)點(diǎn)信息,D入棧。(6)回退到B,D出棧。(7)回退到A,B出棧。(8)輸入E點(diǎn)信息,E入棧。(9)回退到A,E出棧。(10)回退到空棧,A出棧。
通過(guò)對(duì)樣本和檢材特征模板比對(duì)分析,檢驗(yàn)該檢材密點(diǎn)與樣本是否相似或?qū)嵸|(zhì)相同。
3.軟件非公知性鑒定改進(jìn)建議
對(duì)于計(jì)算機(jī)軟件的非公知性鑒定,建議從以下幾個(gè)方面進(jìn)行。(1)依據(jù)鑒定人(或鑒定團(tuán)隊(duì))的經(jīng)驗(yàn)進(jìn)行判斷,即鑒定人是否認(rèn)為申請(qǐng)方主張的秘密是一般常識(shí)。如果鑒定人根據(jù)自己的行業(yè)經(jīng)驗(yàn)認(rèn)為是一般常識(shí),那么不構(gòu)成非公知性。比如某軟件的文件搜索算法采用的是“B+樹”算法,由于很多計(jì)算機(jī)從業(yè)人員都知道該算法,該算法就不具有非公知性。(2)通過(guò)百度等搜索引擎對(duì)相關(guān)內(nèi)容進(jìn)行查詢,如果查詢結(jié)果中存在與秘密相同或者實(shí)質(zhì)性相似的內(nèi)容,那么申請(qǐng)方主張的秘密就不具有非公知性。(3)在開源軟件社區(qū)進(jìn)行搜索,如果查詢結(jié)果中存在與秘密相同或者實(shí)質(zhì)性相似的內(nèi)容,就不具有非公知性。(4)通過(guò)CNKI、維普資訊、萬(wàn)方等論文檢索平臺(tái)對(duì)相關(guān)關(guān)鍵字進(jìn)行檢索,如果檢索到與秘密相同或者實(shí)質(zhì)性相似的內(nèi)容,那么申請(qǐng)方主張的秘密就不具有非公知性。(5)對(duì)計(jì)算機(jī)軟件進(jìn)行反編譯,如果軟件沒(méi)有采取任何安全保護(hù)措施,通過(guò)簡(jiǎn)單的反編譯就可以很容易獲取,那么該軟件就不具有非公知性。
總之,在信息技術(shù)飛速發(fā)展的今天,軟件技術(shù)的發(fā)展也日新月異,軟件應(yīng)用愈來(lái)愈廣泛,司法鑒定人員需要在實(shí)踐中不斷學(xué)習(xí),對(duì)司法鑒定實(shí)踐中遇到的問(wèn)題不斷討論研究,保證司法鑒定的科學(xué)客觀、公平公正。
河南牧業(yè)經(jīng)濟(jì)學(xué)院學(xué)報(bào)2020年5期