Sqlite Encryption Hk.
-
C# ile desktop uygulama geliştiriyorum. Güvenlik kısmı sıkıntılı olduğu için uygulamaya ait hassas bilgileri kaydederken sqlite databaseini encrypted olarak kullanmak istiyorum. Ancak şuanda sadece connection string'e password vererek yapılabiliyor. Bu durumda birisi exeyi decompile ederse bu keye bir şekilde ulaşabilir. Bunun yerine Google Chroma'da kayıtlı parolaları görmek istediğimizde windows use credentialın'ı sorduğu şekilde şifreleyip saklamak mümkünmüdür? Yada böyle bir durum için en temiz çözüm ne olabilir?
*SQLite sorun değil başka birşey kullanılabilir.
*Hassas veriyi tutmak zorundayım alternatifim yok.
-
YA WEB SERVIS OLACAK YA DA KIRARLAR O EXEYI HOCAM :/
-
TeRRoR bunu yazdı
C# ile desktop uygulama geliştiriyorum. Güvenlik kısmı sıkıntılı olduğu için uygulamaya ait hassas bilgileri kaydederken sqlite databaseini encrypted olarak kullanmak istiyorum. Ancak şuanda sadece connection string'e password vererek yapılabiliyor. Bu durumda birisi exeyi decompile ederse bu keye bir şekilde ulaşabilir. Bunun yerine Google Chroma'da kayıtlı parolaları görmek istediğimizde windows use credentialın'ı sorduğu şekilde şifreleyip saklamak mümkünmüdür? Yada böyle bir durum için en temiz çözüm ne olabilir?
*SQLite sorun değil başka birşey kullanılabilir.
*Hassas veriyi tutmak zorundayım alternatifim yok.
Key SHA256 anahtarı olsun, kullanıcıdaki girdiyle SHA girişi eşleşirse onaylansın; bu onay mekanizması C ile yazılmalı ve duruma göre internetteki bir API'ya sorgu yaptıradabiliriz
Çözüm 1 - Keyler karşılaştırılır, keyler obfuscate edilmeli
Çözüm 2 - Key API ile sunucuya gitmeli, API'nin linki de parçalanmalı rastgele yerlere konulup birleştirilmeli
Çözüm 3 - Fiziksel anahtar
Kıracak her türlü kırar bu arada :)
-
Diger arkadaslarin dedigi gibi web tarafinda bu tarz bilgileri tutmak mantikli. Desktop uygulamasinin kirilmasi cok mühim degil, is yükünü web'e kaydirabilme sansin varsa programi istedikleri kadar kirsinlar sorun olmaz.
Onun haricinde integrated windows authentication kullanabilirsin yani windows login kullanarak login yapabilirsin. advapi32.dll 'i import etmen gerek sadece
surda bir örnek var
https://www.youtube.com/watch?v=gFF0-tqdKUw
buna ek olarak, connection string'i app.config icinde saklayabilirsin, su örnege bakabilirsin
https://www.codeproject.com/Articles/18558/Encrypting-windows-application-connection-strings
son olarak aklima söyle bir sey geliyor, sql server'in compact versiyonlari var, yani kurulum gerekmeden kullanabiliyorsun. Bu tarz bir yapida dinamik olarak DBni olusturacaksin, daha sonra bu sql server'a windows auth ile baglanacaksin. O zaman sifrenin olacagi connection string bilgisi saklamana gerek kalmayacak. Teorik olarak yapilabilir geliyor ve biraz ugrastirabilir..
kolay gelsin
-
tutacam dediğim veri de session düştüğünde tekrar login olabilmesi için kullanıcının k.adı ve şifresi. yani saçma sapan server'in sql passwordunu tutmuyorum :) api'de revoke token gibi birşey olmadığı için bu bilgilerle oturumunu devam ettirebiliyorum. unbalanced'in verdiği linkler fantastikmiş bi onlara bakıcam bakalım.
-
SQLiteın 1.x sürümlerinde RC4 falan gibi dosya şifrelemeleri var sonrakilerde bildiğim kadarıyla kaldırdılar çünkü ne kadar algoritma çok güvenli de olsa, connection stringden keyi almak çok kolay olacaktır.
Ama yinede bir ecza programının databasei kırarken beni baya uğraştırdı, ama library eski diye uğraştırdı yani şifreleme kazık olduğu için değil.
Yapabileceğin en güvenli sqlite db app boyle olur bence
-
simetrik şifreleme kullanabilirsin. db passı her seferinde web üzerinden isteyebilirsin ancak bu şekilde olabilir. ama diğer arkadaşların dediği gibi kıran her türlü kırar.
decomp edildikten sonra yazdığın bölümü kendisi c# da yazıp sonrasında webservisten db passı talep edip string formatına çevirebilir sonrasında bu şekilde ilerleyebilir.
ben bu şekilde dental sektörde köklü birkaç firmanın yazılımlarını kırıyorum ki adamlarda dongle dahil her türlü bok var...