İçeriğe atla

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.[1]

Geçmiş yazılım adli bilişim yöntemleri

Geçmiş kod karşılaştırma yöntemleri arasında hashing, statik analiz, metin eşleştirme ve belirteçleştirme[2] 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.

Telif hakkı ihlali

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.

Ticari sırların korunması ve ihlali

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.

Patent ihlali

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.

Nesnel gerçekler öznel kanıtlardan önce gelir

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.

Kaynakça

  1. ^ Mengya Zheng, Xingyu Pan & David Lillis, "CodEX: Source Code Plagiarism Detection Based on Abstract Syntax Trees" (PDF), CEUR Workshop Proceedings, cilt 2259, 4 Şubat 2022 tarihinde kaynağından arşivlendi (PDF), erişim tarihi: 3 Nisan 2023 
  2. ^ Warren Toomey, Code Similarity Detection in Multiple Large Source Trees using Token Hashes (PDF), 22 Şubat 2023 tarihinde kaynağından arşivlendi (PDF), erişim tarihi: 3 Nisan 2023 

Konuyla ilgili yayınlar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

Delphi, Object Pascal'ı temel alan bir olaya dayalı programlama dili ve masaüstü, mobil, web ve konsol yazılımları için tümleşik geliştirme ortamıdır (IDE). Delphi, 2008 yılından beri Embarcadero Technologies tarafından geliştirilmektedir.

<span class="mw-page-title-main">Derleyici</span> kaynak kodunu bilgisayarın işleyebileceği koda dönüştüren program

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

<span class="mw-page-title-main">Açık kaynak</span> ücretsiz dağıtım ve ürüne erişim hakkında felsefe

Açık kaynak, kaynak kodun; kopyalanması, değiştirilebilmesi ve yeniden dağıtım için serbestçe kullanıma sunulmasıdır. Açık kaynak yalnızca kaynak koda erişim anlamına gelmez. Kodların başkaları tarafından herhangi bir telif ücreti ödemeden kullanılabilmesi, değiştirilmesi ve yeniden dağıtımı gibi çeşitli haklar vermesi gerekir. Bunun için ürün, açık kaynak tanımına uyan bir lisans kullanmalıdır.

<span class="mw-page-title-main">Korsan ürün</span> korsan yazılım

Warez ya da korsan ürün, telif yasaları çiğnenerek ticareti yapılan telif hakkı saklı materyaller. Bu tanım, genelde arkadaşlar arasındaki peer-to-peer dosya paylaşımları veya özel sunucular sayesinde büyük grupların dosya paylaşımlarından çok; telif hakkına sahip materyallerin, organize gruplar tarafından yasa dışı yayınlarını tanımlar. Telifli ürünlerin kopyalanmasını, çoğaltılmasını ve dağıtımını yapan kişilere korsan, yapılan işe korsancılık denmektedir.

<span class="mw-page-title-main">Assembly</span> uygulanan işlemlerle programlama dilinin birbirine çok yakın olduğu düşük seviye programlama dilleri

Assembly dili, bir işlemcinin komut kümesi üzerine tanımlanmış alt seviye bir dildir. Assembly dili kolay hatırlanabilir semboller tanımlar ve böylece işlemcinin makina koduna karşılık gelen sayı dizilerinin bilinmesine gerek kalmaz. Assembly dili, platformdan bağımsız yüksek seviyeli programlama dillerinin aksine, işlemci mimarisine bağımlıdır. Tipik uygulamaları; cihaz sürücüleri, alt seviyeli dahili (embedded) ve gerçek zamanlı sistemlerdir. Bır assembly programı assembler kullanılarak makine koduna çevrilir.

<span class="mw-page-title-main">Tersine mühendislik</span>

Tersine mühendislik, bir aygıtın, objenin veya sistemin; yapısının, işlevinin veya çalışmasının, çıkarımcı bir akıl yürütme analiziyle keşfedilmesi işlemidir. Makine veya mekanik alet, elektronik komponent, yazılım programı gibi parçalarına ayrılması ve çalışma prensiplerinin detaylı şekilde analizini içerir.

Microsoft Visual Studio, Microsoft tarafından geliştirilen bir tümleşik geliştirme ortamıdır (IDE). Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework ve Microsoft Silverlight tarafından desteklenen tüm platformlar için yönetilen kod ile birlikte yerel kod ve Windows Forms uygulamaları, web siteleri, web uygulamaları ve web servisleri ile birlikte konsol ve grafiksel kullanıcı arayüzü uygulamaları geliştirmek için kullanılır.

<span class="mw-page-title-main">Telif hakkı ihlali</span> Telif hakkı bulunan çalışmanın hukuka aykırı şekilde kullanılması

Telif hakkı ihlali, genellikle; telif hakkı eseri oluşturan kişi, atadığı bir yayıncı veya temsilci gibi birisine ait olan çalışmaların, telif hakkı sahibinin özel haklarını ihlal ederek ve izni olmadan kopyalanması, çoğaltılması, dağıtılması ya da izin gerektirecek şekilde görüntülenmesi, bazı çalışmalarda kullanılarak türetilmesi sonucu oluşan hak ihlalidir.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

Özel mülk yazılım ya da sahipli yazılım, yazılımın yaratıcısının, yayıncısının veya diğer hak sahibi ortaklarının fikrî mülkiyet hakkını ve telif hakkını kendi elinde tuttuğu bilgisayar yazılımıdır. Yazılımın alıcılarına, yazılımı özgürce paylaşma veya değiştirme hakkı vermez. Özel mülk yazılımlar, mülk sahipleri tarafından ücretli ya da ücretsiz olarak yayınlanabilir.

<span class="mw-page-title-main">Gereksinim çözümleme</span>

Bilgisayar bilimlerinde, gereksinim analizi ya da gereksinim çözümleme; çeşitli sistemlerin gerekliliklerini ve olası çelişkili durumlarını göz önüne alarak, yazılımı analiz etmek, belgelemek, doğrulamak ve yönetmek için yeni veya değiştirilmiş bir ürün üzerinde projenin ihtiyaçlarını, sistem gereksinimlerini ve koşullarını belirleyen görevleri kapsamaktadır.

ReSharper [ˈɹiːˌʃɑːɹpɚ] yahut R# JetBrains tarafından Microsoft'un geliştirme ortamı Visual Studio için yayımlanan bir uzantısıdır. Şu anda desteklenen ReSharper sürümleri Visual Studio 2010, 2012, 2013, 2015 ve güncel yayın öncesi sürüm "15"'tir.

Sıfır-gün genellikle bir yazılımda bir zayıflığın keşfedildiği gün, çok uzun zamandan beri o açıklığın blackhatler tarafından bulunup kullanıldığının ortaya çıkmış olmasıdır. Ayrıca zayıflık ortaya çıktıktan sonra geliştirici tarafından bir güncelleme sunulamadan önce faydalanılan bir zayıflıktır

Açık kaynak yazılım hareketi, daha geniş açık işbirliği kavramının bir parçası olarak, yazılımların bir kısmı veya tamamı için açık kaynak lisanslarının kullanımını destekleyen bir harekettir. Açık kaynak hareketi, açık kaynak yazılım kavramını/fikrini yaymaya başlamıştır. Açık kaynak hareketi felsefesini destekleyen programcılar, yazılım geliştirme için gönüllü olarak programlama kodu yazarak ve değiş tokuş ederek açık kaynak topluluğuna katkıda bulunurlar. "Açık kaynak" terimi, hiç kimsenin düzenlenmiş kodu paylaşmayan bir gruba karşı ayrımcılık yapmamasını veya başkalarının önceden düzenlenmiş çalışmalarını düzenlemesini engellememesini gerektirir. Yazılım geliştirmeye yönelik bu yaklaşım, herkesin açık kaynak kodunu almasına ve değiştirmesine olanak tanır. Bu değişiklikler, yazılımla çalışan kişilerden oluşan açık kaynak topluluğu içindeki geliştiricilere geri dağıtılır. Bu sayede kod değişikliğine katılan tüm bireylerin kimlikleri ortaya çıkarılmakta ve kodun zaman içinde dönüşümü belgelenmektedir. Bu yöntem, belirli bir kod parçasının sahipliğini oluşturmayı zorlaştırır, ancak açık kaynak hareketi felsefesiyle uyumludur. Bu hedefler, yüksek kaliteli programların üretimini ve açık kaynak teknolojisini geliştirmek için benzer düşünceye sahip diğer insanlarla işbirliği içinde çalışmayı teşvik eder.

AOMedia Video 1 (AV1), başlangıçta İnternet üzerinden video iletimleri için tasarlanmış, açık, telif hakkından muaf bir video kodlama formatıdır. VP9'un halefi olarak, 2015 yılında kurulan ve yarı iletken firmaları, isteğe bağlı video sağlayıcıları, video içerik üreticileri, yazılım geliştirme şirketleri ve web tarayıcı satıcılarını içeren bir konsorsiyum olan Açık Medya İttifakı (AOMedia) tarafından geliştirilmiştir. AV1 bit akışı özelliği, bir referans video codec bileşeni içerir. 2018'de Facebook, gerçek dünya koşullarına yaklaşan testler yaptı ve AV1 referans kodlayıcı, libvpx-vp9, x264 Yüksek profil ve x264 Ana profile göre sırasıyla %34, %46,2 ve %50,3 daha yüksek veri sıkıştırması elde etti.

1980'lerde, çoğu dijital adli tıp araştırması, dijital medyayı doğrudan uzman olmayan araçlar kullanarak inceleyen "canlı analizden" oluşuyordu. 1990'larda, araştırmaların medyayı değiştirmeden gerçekleşmesine izin vermek için birkaç ücretsiz yazılım ve diğer özel araçlar oluşturuldu. Bu ilk araç seti temel olarak adli bilişime odaklandı, ancak son yıllarda mobil cihaz adli tıp alanında benzer araçlar gelişti. Bu liste, dijital adli araçların kayda değer örneklerini içerir.

GitHub Copilot, kullanıcıların kod yazma sürecinde yardımcı olan bulut tabanlı bir yapay zeka aracıdır. GitHub ve OpenAI tarafından geliştirilen araç, Visual Studio Code, Visual Studio, Neovim ve diğer entegre geliştirme ortamlarının (IDE'ler) kullanıcılarına destek vermek için tasarlanmıştır. GitHub Copilot, teknik önizleme için 29 Haziran 2021'de duyurulmuş ve daha sonra JetBrains pazarında bir eklenti olarak yayınlanmıştır. GitHub, Copilot'un kullanıcıların belgeleri okumak için harcadıkları süreyi azaltarak programcıların bilmedikleri kodlama çerçevelerinde ve dillerinde gezinmelerine olanak tanıdığını belirtmektedir.

EnCase, Guidance Software tarafından dijital araştırma ürünleri paketi içinde paylaşılan bir teknolojidir. Yazılım, adli bilişim, siber güvenlik, güvenlik analitiği ve e-keşif kullanımı için tasarlanmış çeşitli ürünlerle birlikte gelir. EnCase geleneksel olarak adli bilişimde ele geçirilen sabit sürücülerden kanıt kurtarmak için kullanılır. Araştırmacının belgeler, resimler, internet geçmişi ve Windows Kayıt Defteri bilgileri gibi kanıtları toplamak için kullanıcı dosyalarının derinlemesine analizini yapmasına olanak tanır.

<span class="mw-page-title-main">Adli bilgisayar bilimi</span>

Bilgisayar adli bilişimi (bilgisayar adli bilimi olarak da bilinir), bilgisayarlarda ve dijital depolama ortamlarında bulunan kanıtlarla ilgili adli bilişimin bir dalıdır. Bilgisayar adli biliminin amacı, dijital bilgileri tanımlamak, korumak, kurtarmak, analiz etmek ve sunmak amacıyla dijital medyayı adli açıdan sağlam bir şekilde incelemektir.