Yazılımsal Güvenlik Algoritmaları ve Güvenlik Paranoyaları

Yazılımsal Güvenlik Algoritmaları ve Güvenlik Paranoyaları Yazılımsal Güvenlik Algoritmaları ve Güvenlik Paranoyaları

   Her insan belirli bir emek, zaman, değer harcayıp ortaya çıkardığı ürünün veya hizmetin karşılığını bir şekilde almak ister. Bu bazen maddi olabileceği gibi, manevi anlamda kendini gerçekleme adına takdir edilme, övülme, toplumda saygınlık kazanma şeklinde de olabilir. Hangimiz bin bir emekle ve zorlukla ortaya çıkardığımız ürünü veya sunduğumuz hizmetin karşılığını bir şekilde almak istemeyiz ki ?  Bugün Ceviz"de soru soranlara şöyle bir göz attığımızda bile, bir ürkeklik, çekingenlik havası içinde olanları, kodlarını gizlemeye çalışanları, yada hedefledikleri projeleri başkalarının öğrenmesinin aleyhlerinde olduğunu düşünerek hareket edenleri görürüz. Hatta ve hatta Cem Yılmaz"ın bir showunda yaptığı gibi "Kaynağını göster kaynağını" dediğimizde kodlarını yada projesinin adını ısrarla gizlemeye çalışanları hasbel kader hissederiz. İyi niyetli olanlarımızın hoş karşıladığı bu davranış biçimi tabiî ki emeğimizin, çabamızın karşılıksız yaban ellere geçmesini engellemek içindir.  Bugün Bilişim sektöründe Microsoft başta olmak üzere yazılımsal olsun, donanımsal olsun geliştirdiği güvenlik sistemi aşılamayan bir yazılım firması var mıdır acaba ? Yada eğer Microsoft gibi firmalar yazılımlarının kırılmasını önleyebilecek tedbirleri gerçekten alabilselerdi, veya almak isteselerdi şirket  ürünleri bu denli çok insan tarafından kullanılır mıydı ?  Bu makalede bir çoğumuzun kabus konusu yaptığı güvenlik algoritmalarından ve çözüm önerilerinden bahsetmek istiyorum. Hemen burada belirmeliyim ki anlatacağım yöntemlerin hiç biri kırılamaz, geçilemez değildir. Kesin çözüm için Sanat eserleri ve fikir hakları kanununa uygun olarak telif hakkı almak için yazılımlarınızı tescil ettirmenizi ısrarla tavsiye ederim.A.  YAZILIMSAL GÜVENLİK KAVRAMI   Eşi benzeri görülmemiş bir uygulama geliştirdiğinizde veya mevcut bir uygulamanın daha iyisini tasarladığınızda  ;   1. Kaynak kodlarını 3 ncü şahısların erişiminden korumayı   2. Uygulamanın son kullanıcıya dağıtılan kısmının rasgele kopyalanıp çoğaltılmasını engellemeyi   3. Uygulamanın güncelleme, bakım, servis, Teknik destek gibi  hizmetlerinden gelir elde etmeyi   4. Toplumda birey veya firma olarak saygın bir yer edinmeyiamaçlarsınız. İşte tüm bu amaçları gerçeklemek için yazılımsal olarak alabileceğimiz önlemleri  YAZILIMSAL GÜVENLİK KAVRAMI olarak anabiliriz.  Yazılımsal güvenlik kavramı içinde yukarıda zikredilen amaçlar için alınabilecek önlemleri DONANIMSAL VE YAZILIMSAL GÜVENLİK ÖNLEMLERİ olarak ikiye ayırabiliriz. Donanımsal önlemler ayrı bir makale konusu olarak ileride ele alınabilir.B.  YAZILIMSAL GÜVENLİK ÖNLEMLERİ  Eğer profesyonel bir ekip tarafından geliştirilen yazılımları yüklerken dikkat ettiyseniz ;

Yazılımın genelde yaptığı işi çağrıştıran bir adının Yazılımın Versiyon ve sürüm bilgilerinin Kurulum ve ayarların nasıl yapılacağı ile ilgili bilgilerin Lisanslı ürün kullanımı ile ilgili şartların ve kısıtlamaların Lisanslamanın nasıl yapılacağının Teknik destek ve sorun çözümüyle ilgili bilgilere nasıl ulaşılacağının

anlatıldığını görürüz. Tüm bunlar iyi bir yazılımda olması gereken temel özelliklerdir. Uygulamalar için eklenen  güvenlik önlemlerinin amaçlarını yukarıda sıralamıştık. Bu amaçlara uygun bir güvenlik mekanizması seçiminde dikkate alınan nirengi noktalarıysa ;

Yazılımın işlevselliği Kullanım alanının yaygınlığı Talep durumu Harcanan Emek, iş gücü, zaman, araç gereç vb. diğer gider maliyetlerinin toplamı Yazılımcının yada geliştirme ekibinin kişisel düşünceleri

  Bugün kullanılan yazılımlarda kaçak ve kopya kullanımı azaltmaya yönelik çok çeşitli güvenlik önlemleri olduğunu görüyoruz. Bunlardan en sık kullanılanları son kullanıcıdan bir lisans anahtarı dizisi girmesinin istenmesi ve/veya aktivasyon işlemidir.Son kullanıcıya dağıtılan profesyonel yazılımlar versiyon ve sürüm güncellemeleri dışında mutlaka test edilmek üzere belirli oranda kullanıcının test çalışmasına katılması için dağıtılır. Test işlemleri biten yazılımlar ya sınırlı işlevsel kullanım seçenekleriyle, ya tanıtım amaçlı demo sürümleri olarak veya sınırlı süre kullanımı için piyasaya arz edilir.(Trial,Shareware,Demo)

C.  YAZILIMSAL GÜVENLİK ALGORİTMALARI

  Yukarıda saydığımız dağıtım biçimlerinden herhangi biriyle piyasa arz edilen yazılımlar tam sürüm kullanıma izin vermek için bir çok farklı güvenlik algoritmasıyla donatılmaktadır.

Son kullanıcıya teslim edilen ürünle birlikte bir lisans anahtarı dizisinin verilmesi

Geliştirici firma son kullanıcıya teslim ettiği ürünle birlikte yalnızca o ürüne ait olan benzersiz bir lisans anahtarı dizisinide ürünle birlikte verir.Bu ürün anahtarı çeşitli formatlarda olabilir. Bu tip güvenlik uygulamaları genellikle cd-dvd gibi media ortamında dağıtılan uygulamalarda sık kullanılmaktadır. Media için lisans anahtarı tekil olduğundan aynı anahtarı kullanabilmek için cd-dvd"nin kopyalanabilmesi büyük bir güvenlik açığı teşkil etmektedir.Kullanıcı bu anahtarı girdiğinde uygulama girilen anahtar bilgisini biraz sonra anlatacağım yöntemlerden birini veya bir kaçını kullanarak saklar.

   2.  Son kullanıcıya sağlanan ürün kimliğine karşılık kullanıcıdan bir lisans anahtar dizisi girmesinin istenmesi

        Bu yöntemde geliştiriciler yazılım için kullanıcıya bir ürün kimliği sunmakta, bu kimliğe uygun doğru lisans anahtarının girilmesini istemektedirler. Sunulan ürün kimliği sabit olabileceği gibi, son kullanıcının bilgisayarında kolay kolay değişmeyecek HDD. Fabrika seri numarası, Ekran Kartı Tipi, Ethernet MAC adresi gibi sabit aygıtlarla da ilişkilendirilebilmektedir. Böyle bir ilişki durumunda ürün kimliği kullanıcı bilgisayarına göre değişeceğinden girilecek lisans anahtarı dizisi de farklı olacaktır.

  3. Ele alacağımız son algoritmada kullanıcı lisanslama işini nasıl yaparsa yapsın, kayıtlı kullanıcı olması için geliştirici tarafından bir aktivasyon onayının istenmesidir.  Bu onay işlemi geliştiricinin ürünü ve müşteriyi takip etmesini kolaylaştırdığı gibi, kaçak yazılım kullanımını da büyük oranda azaltmaktadır.

D. GÜVENLİK ALGORİTMALARININ UYGULANIŞ BİÇİMİ

  Elbette kullanıcının girdiği lisans anahtarı dizisi, ürün kimliği ve kullanıcıyla ilgili bilgiler çeşitli yerlerde kullanılmak üzere depolanmak zorundadır. Kullanıcı hangi tür lisanslama metoduyla ürünü etkinleştirirse etkinleştirsin geliştirici uygulamanın tam sürüm kullanımı için izin verilip verilmediğini denetlemek durumundadır. Denetleme ve güvenlik algoritması ne kadar karmaşık olursa uygulama güvenliğinin kırılması o denli güçleşecektir. Uygulamalarınız için iyi bir güvenlik algoritması kurmak için aşağıdakilere dikkat edilmelidir.

Girilecek ürün kimliği bilgilerinin üretilmesi için karmaşık matematik fonksiyonlarıyla çalışın. Teknik destek ve ürün kimliği için lisans anahtarı dizisini telefonla veya web üzerinden verebilecek mekanizmalar üzerinde yoğunlaşın Kullanıcıyı kayıtlı kullanıcı olmaya teşvik edin veya zorlayın Tam sürüm kullanım durumunu denetlemek için Timer destekli rastgele zamanlama mekanizmaları kullanın. Denetleme işlemini yaparken rastgele çağrılan ve hepsi aynı işi yapan birden fazla fonksiyon kullanın. Rastgele zamanlı rastgele fonksiyonlu bir uygulamanın HEX editörleriyle kırılması daha uzun zaman alır ve uygulamanızı kırmaya uğraşan kişiyi yıldırır.Zaman aralıklarını mümkün olduğunca uzun tutun. Güvenlik algoritmanızın denetleme fonksiyonlarında IF ELSE karşılaştırma yapılarından mümkün olduğunca kaçının. Bunun yerine kullandığınız dil destekliyorsa CASE yapılı karşılaştırmalar kullanın. IF bildirimleri sıradan makine dili bilgisine sahip kullanıcılar tarafından kolaylıkla geçilebilmektedir. Uygulamanızın güvenlik,ürün kimliği ve kullanıcı bilgilerini farklı yapılarda birden fazla yerde veya dosyada kriptolu veya binary olarak tutun. Karşılaştırmalara bu yapıları da ekleyin. Uygulamalarınıza mutlaka versiyon ve sürüm kontrolü ekleyin. Sürüm güncellemelerinde mutlaka güvenlik algoritmanızı yenileyin

E. SONUÇ

  Ne kadar iyi tasarlanmış olursa olsun aşılamaz kırılamaz yazılım güvenliği kavramı olamayacağını aklınızdan çıkarmayın. Bu tür işlemler sadece bu süreci biraz daha geciktirir.Uygulamanızın bir güvenlik algoritmasıyla korunmaya ihtiyacı olup olmadığını iyice düşünün.Unutmayın ki insanların çoğu ekonomik olarak satın alabilecekleri şeylere ödeme yapabilirler. Uygulamanızın fiyatını belirlerken buna dikkat edin.Ayrıca uygulamayı geliştirdiğiniz yazılım ve diğer geliştirme araçlarını yasal yollardan elde etmiş olmalısınız ki, kendi uygulamanızda hak iddia edebilesiniz. Uygulamanızı mutlaka tescil ettirin.

 Bu konuda daha yazacak çok şey var. Mesela bir kaç kod örneği beklediğinizi biliyorum. Zamanım olursa kod ve eksik kalan diğer konuları da eklerim. Şimdilik 2001 yılında Delphi5 ile geliştirdiğim ve Delphi6"ya terfi ettirdiğim TLisans bileşenini ve test örneğini  inceleyebilirsiniz. Bu konuda teferruatlı sorular içinde bu bölümü kullanabilirsiniz. Umarım imla ve anlatım tekniğimdeki olası  hatalar için beni bağışlarsınız. Hepinize kucak dolusu selamlar.

cemaliozan 07.04.2006

Döküman Arama

Başlık :

Kapat