Yazılım adli bilişimi

Yazılım adli bilişimi, fikri mülkiyet ihlali veya hırsızlığın meydana gelip gelmediğini belirlemek için yazılım kaynak kodu veya ikili kod analiz etme bilimidir. Şirketler, yazılım patentleri, telif hakları ve ticari sırlar ile ilgili konularda anlaşmazlığa düştüğünde davaların, duruşmaların ve uzlaşmaların merkezinde yer alır. Yazılım adli bilişim araçları, bir yazılım adli bilişim uzmanına rehberlik etmek için kullanılabilecek bir ölçü olan korelasyonu belirlemek amacıyla kodu analiz ederek karşılaştırabilir.Geçmiş kod karşılaştırma yöntemleri arasında hashing, statik analiz, metin eşleştirme ve belirteçleştirme yer almaktadır. Bu yöntemler yazılım kodunu karşılaştırmış ve kopyalamanın gerçekleşip gerçekleşmediğini gösteren tek bir ölçü üretmiştir. Ancak, bu ölçümler mahkemede kabul edilebilecek kadar doğru değildi çünkü sonuçlar çok doğru değildi, algoritmalar koddaki basit değişikliklerle kolayca kandırılabilirdi ve yöntemler kodun kopyalama dışındaki nedenlerle benzer olabileceği gerçeğini hesaba katmıyordu.Korelasyon miktarını belirlemek üzere kodu karşılaştırmak için yazılım araçlarının kullanılmasının ardından, bir uzman, korelasyonlu kodun üçüncü taraf kodundan, kod oluşturma araçlarından, yaygın olarak kullanılan isimlerden, ortak algoritmalardan, ortak programcılardan veya kopyalamadan kaynaklandığını belirlemek için yinelemeli bir filtreleme süreci kullanabilir. Eğer korelasyon kopyalamadan kaynaklanıyorsa ve kopyalayan kişi hak sahibinden yetki almamışsa, telif hakkı ihlali gerçekleşmiş demektir.Yazılım, bir işletmeye rekabet avantajı sağlayan ticari sırlar içerebilir. Ticari sır hırsızlığını belirlemek için, telif hakkı ihlalini tespit etmek için kullanılan araç ve süreçlerin aynısı kullanılabilir. Kod, yetkisiz bir şekilde kopyalanmışsa ve bu kod ticari sır niteliği taşıyorsa -genel olarak bilinmiyorsa, işletme bunu gizli tutuyorsa ve gizliliği işletme için değerini koruyorsa- kopyalanan kod ticari sır hırsızlığı teşkil eder.Ticari sır hırsızlığı, kodun tam anlamıyla kopyalanmadan kod işlevselliğinin alınmasını da içerebilir. Kod işlevselliğini karşılaştırmak, henüz herhangi bir algoritma tarafından makul bir sürede başarılamamış çok zor bir problemdir. Bu nedenle, kod işlevselliği hırsızlığını bulmak hala çoğunlukla manuel yönetilen bir süreçtir.Ticari sır niteliğinde olduğu gibi, yazılım patentleri belirli kaynak kodundan ziyade genel uygulamayı kapsadığından, yazılım patenti ihlalini bilimsel olarak tespit etmek şu anda mümkün değildir. Örneğin, patentli bir buluşu uygulayan bir program, farklı fonksiyon adları ve değişken adları kullanılarak ve farklı sıralarda işlemler gerçekleştirilerek mevcut birçok programlama dilinde yazılabilir. Buluşları yazılımda uygulamak için o kadar çok kombinasyon vardır ki, en güçlü modern bilgisayarlar bile bir patenti ihlal edebilecek tüm kod kombinasyonlarını dikkate alamaz. Bu iş, hala bilgi ve deneyimlerini kullanan insan uzmanlara bırakılmıştır, ancak bu, yazılım adli bilişim alanındaki birçok kişinin bir algoritma bularak veya süreci basitleştirerek otomatikleştirmeye çalıştığı bir sorundur.Herhangi bir adli analizin önemli bir kuralı, önce nesnel gerçeklerin dikkate alınması gerektiğidir. Koddaki yorumları incelemek veya kodu dağıtan şirketler ve kodu yazan programcılar hakkında bilgi bulmak için internette arama yapmak, ancak korelasyonla ilgili nesnel gerçekler dikkate alındıktan sonra yararlıdır. Adli araçlar ve prosedürler kullanılarak bir analiz yapıldıktan sonra analistler koddaki yorumlar gibi öznel kanıtlara bakmaya başlayabilir. Bu öznel kanıttaki bilgiler nesnel analizle çelişiyorsa, analistlerin öznel kanıttan şüphe etmeleri gerekir. Kopyalamayı gizlemek için kopyalama gerçekleştikten sonra kaynak koda eklenen sahte telif hakkı bildirimleri, açık kaynak bildirimleri veya programcı adları, gerçek dünyadaki kod hırsızlığı vakalarında nadir değildir.