[Owasp-turkey] Lisanslama Algoritmaları

Oğuzhan YILMAZ aspsrc at gmail.com
Thu Sep 25 10:34:15 EDT 2008


Merhaba Kerem,
Lisans dosyalarını des ile koruyorum ve client'ta oluşturulan lisans
doyasının , lisans sunucusuna gönderilmesinin belli bir zaman kısıtlaması
var.

Yazılımın çalıştığı sunucu ile , lisans sunucusun arasındaki protokol
tcp-ip. .Net 2.0 da olan Remoting sınıfını kullanıyorum. SSL iletişimi
içinde SecureChannel'e çeviriyordum şimdi :)

Time Based Salt çok güzel bir fikir. Bu durum +1 daha zorluk katar bu olaya.
Kesinlikle değerlendiriyorum. Bazı problemler çıkartabilir ama işleme
başlamadan Lisans server'ı ile client'ın time'ını seknronize etmek lazım.
Bunu koda nasıl dökerim henüz bir fikrim yok ama üzerinde çalışacağım.
Aradaki katmanlar ve iletişimin gizliliği bir şekilde sağlanıyor fakat
yazılımı kullanan kişinin yapacağı applicatiıon injectionlara göre önlem
almak daha ciddi ve üzerinde durumlası gereken bir konu.

Duruma göre dinamik assembly'ler oluşturmakda mümkün ama şuda var
Beridhan'ın dediği gibi ürünün değerine göre bazı durumları kabul etmek
gerekiyor.

Teşekkürler. Saygılar.



25 Eylül 2008 Perşembe 16:58 tarihinde Kusmezer, Izzet Kerem (ITS-M) <
Izzet-Kerem.Kusmezer at bshg.com> yazdı:

>  Merhabalar Oguzhan,
>
> Bende aklıma ilk olarak gelenleri seninle paylasmak istedim.
>
> 1) Lisans dosyalarini nasil korumayi dusunuyorsun.
> 2) Client .Net Uygulamasi oldugunda iyi bir obfuscator veya turevi bir
> program kullanman yarinina olur, cunku her durumda senin uygulamanı klonlama
> sansına sahip olabilirim.
> 3) Server ile iletisimi sanirim TCP uzerinden yapacaksin, bunun icin
> .Net'te SecureChannel'i direkt olarak kullanabilirsin. (
> http://www.codeproject.com/KB/security/SecChannel.aspx ) boyle direkt
> olarak build in bir yapi kullanmis olursun.
> 4) Burada kesinlikle time based salt kullanmak mantıklı olacaktır, boylece
> server'a yapılabilecek replay attacklardan korunmus olursun.
> 5) Obfuscator'a alternatif olarak client icin Netz ( ayni sekilde
> codeproject'te bulabilirsin ) kullanabilirsin sifreleme ile, ayrica
> dagitacagin exe'in ziplenmish hallerinin sifresinide bu sekilde alip,
> appdomain'e oyle yuklenmesini saglayabilirsin.
> 6) Açıkçası Man-In-The-Middle ataga karsı SSL mantıklı olabilir, fakat
> Reflector + Reflexil 2'lisiyle her durumda senin kodunun uzerinde degisiklik
> yapabilirim,
>     yani static iplerini degistirebilirim , sonuc olarak belirli
> intervallerle degisen lisans'a gore bir token kullanman mantıklı olacaktır
> her server request'i icin.
>
> Ama sonucta uygulaman .Net !!!
>
> Kolay gelsin :)
>
>
>  ------------------------------
> *From:* Kusmezer, Izzet Kerem (ITS-M)
> *Sent:* 25 Eylül 2008 Perşembe 11:47
> *To:* Bedirhan Urgun; Oğuzhan YILMAZ; Bunyamin DEMIR
> *Cc:* owasp-turkey at lists.owasp.org
> *Subject:* RE: [Owasp-turkey] Lisanslama Algoritmaları
>
>  Merhabalar Arkadaslar,
>
> .Net uygulamalarının korunmasın ve kırılması konusunda asagidaki makaleyi
> ozellikle tavsiye edebilirim.
>
> http://www.codeproject.com/KB/dotnet/DotnetInternals_Injection.aspx
>
>  ------------------------------
> *From:* owasp-turkey-bounces at lists.owasp.org [mailto:
> owasp-turkey-bounces at lists.owasp.org] *On Behalf Of *Bedirhan Urgun
> *Sent:* 25 Eylül 2008 Perşembe 11:42
> *To:* Oğuzhan YILMAZ; Bunyamin DEMIR
> *Cc:* owasp-turkey at lists.owasp.org
> *Subject:* Re: [Owasp-turkey] Lisanslama Algoritmaları
>
>
> Merhaba,
> Ayni duruma dusmus, ben de cozum uretmek zorunda kalmistim. Cozumler
> uretmeye calisirken de aklima bir zamanlar aldigim Network Security &
> Cryptography dersi gelmisti; anahtar degis-tokusu,
> private/public anahtarlari, el sıkışmalar, sifreleme algoritmalari... :)
>
> Aslinda biraz zaman ayirip hedeflerimizi siralarsak cozumu (veya
> cozumlerimizdeki problemleri) daha rahat bulabiliriz (client uygulamasina
> Istemci diyelim);
>
> 1. Istemci sunucuyu dogru olarak tanisin
> 2. Sunucu istemciyi dogru olarak tanisin
> 3. Istemci kopyalanmasin
> 4. Istemcide lisans detaylari (zaman, modul, ozellik) degistirilmesin
> 5. ...
>
> Bunun yaninda bir de saldiri agaci olusturursak tadindan yenmez. Yani
> saldirgan gibi dusunup, hedefleri belirleyebiliriz (kirilimlari
> yazmiyorum/yazamiyorum);
>
> 1. Sahte istemci olusturup sunucudan dogrulama token'i almak (key demeyelim
> cunku DES/AES/RSA keyleri ile karismasin)
> 2. Sahte sunucu olusturup istemciye dogrulama token'i yollamak (reply
> attacks bunun icinde)
> 3. Istemcide lisans dosyalarini degistirerek olmayan ozellikleri aktive
> etmek, zamani uzatmak v.b.
> 4. Istemciyi baska makinelere kopyalamak ve (intranet icinde) kullanmak
> 5. ...
>
> Eksik liste ve bazilari belli projeler icin mantikli olmayabilir. Ama
> gelistirilecek cozumun asagidaki konulari desteklemesi gerekir ki, sonra
> basimiz agrimasin;
>
> 1. Olabildigince basit olmasi, cunku urun kullanilmaya basladiginda daha
> ilk defa calistirma asamasinda (ve mesela 2 hafta sonra) lisans hatasi
> alinirsa, "musteri" icin yazilim hakkinda guzel bir his olusturmayabilir.
> 2. Kendi algoritmalarini, en azindan encryption/integrity islemleri icin,
> uretmemesi
> 3. Baglanti guvenligini saglamasi
> 4. Sonradan key exchange problemi yasamamasi. Bundan kastim,
> olceklenebilirlik (scalability) meselesi. Yani butun istemcilerde ve bir
> sunucuda ayni encryption KEY kullanilmasi (ki buyuk ihtimalle koda gomulerek
> veya daha muhtemel extra bir dosya icinde), baska meseleleri gundeme
> getirebilir.
> 5. ...
>
> Yani durum zor. Herhangi bir cozumun, kafaya takmis bir saldirganin elinde
> cozulebilecegini dusunup, bazi riskleri *urunun degerine* gore kabul etmek
> gerekiyor.
>
> kolay gelsin.
>
> Bedirhan Urgun
> http://www.webguvenligi.org
> http://www.owasp.org/index.php/Turkey
>
>
>
>
>
> ------------------------------
>
> Date: Wed, 24 Sep 2008 10:42:24 +0300
> From: aspsrc at gmail.com
> To: bunyamindemir at gmail.com
> CC: owasp-turkey at lists.owasp.org
> Subject: Re: [Owasp-turkey] Lisanslama Algoritmaları
>
>
> Merhabalar,
> Verdiğiniz bilgiler için teşekkürler. Ortak key olarak DES kullandım bende.
> Üzerinde çalıştığı sunucu genelde static ip aldığı için ip parametersini
> eklemiştim fakat zamana bağlı yeni bir kriter çok iyi bir fikir. Zaman
> kriteri ile düşündüğüm sıkıntıları aşabilirim sanırım. Zaman senkronizesi
> içinde ortak bir time server kullandırtabilirim. Programın kurulumunda bunu
> set ettirebilirim. Bu doğrultuda hareket edicem sanırım.
>
> İkinci bir türde windows'ta ki gibi bir şifreleme düşündüm. Makina
> donanımına ve ip adresine göre sunucuya özel bir anahtar çıkartıp lisans
> sunucusuna göndericek. Gelen anahtara karşılıkta yeni bir anahtar üretip
> kullanıcı manual olarak ekrana girecek. İllene anahtarda olmayabilir DES ile
> şifrelenmiş kocaman bir metinde olabilir. Daha sonra belirli aralıklarla
> sunucu lisans bilgisini gönderebilir.
>
> 1'inci paragraftaki yöntem daha mantıklı ama yeni fikirlerede açığım.
>
> Her ne kadar web güvenliği ile ilgili bir liste olsada cevaplar için
> teşekkürler .
>
>
> 24 Eylül 2008 Çarşamba 09:59 tarihinde Bunyamin DEMIR <
> bunyamindemir at gmail.com> yazdı:
>
>  Merhabalar Oguzhan,
>
> Client ile sunucu arasinda ortak bir "key" tanimlasaniz. bunlar DES, AES
> turevleri olabilir (1). Ayni zamanda client`in static ip sini bir kisit
> olarak kullansaniz (2). Hatta ilk bahsettigim KEY i zamana bagli bir
> fonksiyondan gecirseniz (3), Bir de ssl ile trafigi saglasaniz ben yeterli
> olabilecegi kanisindayim.
>
> Belki uygulamamiz ayni olmasada buna benzer bir teknigi farkli bir is icin
> kullanmistim.
>
> 1) DES daha makul olabilir.
> 2) Static ip olacagini varsayiyorum.
> 3) İstek aninin zamani ile KEY (1) karistirilarak gonderilebilir. Yani; Key
> sadece istek yapilan ilk 15 sn icinde gecerli olabilir. Baglanti
> saglandiktan sonra zaten zaman gecmis ve baskasinin eline gecsede
> kullanamayacagi bir Key elde etmis olabilir. Tabi burda sunucu-istemcinin
> zaman ayarlari ayni olmali. Bu bahsettigim olayi sadece biraz daha karmasik
> hale getirebilir, okadar.
>
> Umarim yanlis anlamamisimdir.
>
> Saygilar,
>
> 24 Eylül 2008 Çarşamba 02:03 tarihinde Oğuzhan YILMAZ <aspsrc at gmail.com>yazdı:
>
>   Merhabalar,
>
> Uzun zamandan beri üzerinde çalıştığım .net framework 2.0 ve C# kullanarak
> geliştirdiğim Server-Client tarzı bir uygulamam var.
> Kısaca yaptığı işi belirtmek gerekirse. wİndows Application şeklinde
> çalışan Hosting Kontrol Paneli diyebiliriz. Sunucu kısmı hosting şirketinin
> sunucusunda çalışıyor. Hosting şirketide müşterilerine masaüstü uygulaması
> tarzındaki istemcisini dağıtıp hizmetlerini müşterinin kendi yönetmesini
> sağlıyor.
>
> Esas danışmak istediğim husus ise. Bu ürünün lisanslamasını en güvenilir(?)
> şekilde hangi türde yapabiliriz.? Konu ile ilgili dünyadaki standartlar
> nelerdir?
>
> Genelde yapılan teknik ve benim düşündüğüm şöyle.
> Uygulamanın kurulu olduğu sunucudan üreticinin sunucusuna içinde anahtar
> bilgisi olan bir istek gidiyor. Üretici sunucusuda bu istek'e göre olumlu
> yada olumsuz cevap döndürüyor. Bu teknik ortadaki adam saldırısı gibi bir
> çok yönteme açık olduğundan biraz endişeliyim. Aradaki veriyi ssl ile
> gönderirsek yinede bu tipteki yöntemleri by-pass edebilirmiyiz? İstek'te
> bulunan sunucya fake bir üretici sunucusuda gösterilebilir.
>
> Sonuç: Hala tam olarak nasıl bir lisanslama yöntemi kullanacağımı
> belirleyemedim.
>
> --
> Oğuzhan
>
>
> _______________________________________________
> Owasp-turkey mailing list
> Owasp-turkey at lists.owasp.org
> https://lists.owasp.org/mailman/listinfo/owasp-turkey
>
>
>
>
> --
> Bunyamin Demir
> OWASP-Turkey Member
> http://www.webguvenligi.org
>
>
>
>
> --
> Oğuzhan
>
> ------------------------------
> See how Windows connects the people, information, and fun that are part of
> your life. See Now<http://clk.atdmt.com/MRT/go/msnnkwxp1020093175mrt/direct/01/>
>



-- 
Oğuzhan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.owasp.org/pipermail/owasp-turkey/attachments/20080925/079775a1/attachment-0001.html 


More information about the Owasp-turkey mailing list