Apk Dosyasında Secret Key Saklama
-
hocalar merhaba
uygulama içinde gizli anahtar var ancak buna kullanıcılar kolay bir şekilde ulaşabiliyor.
alttaki gibi websiteleriyle online bir şekilde apkyı upload edip içindeki özel anahtara erişebiliyorlar.
daha güvenli olsun diye private keyi serverda tutsan, lazım olduğu durumda çekmek istediğinde apk ile trafiği takip edip yine o private keyi yakalayabilirler. Siz bu tip durumda en güvenli olacak şekilde nasıl saklarsınız bu private keyi?
-
HTTPS ile anahtar network üzerinden güvenli bir şekilde alınabilir ancak kod tersine mühendisliğe karşı korunmamış ve anahtar bellekte açık tutuluyorsa yine ele geçirilebilir.
-
tersine mühendisliğe karşı kod nasıl korunabilir hocam bu konuda fikir birliliğine ihtiyaç var.
apk kodları = html kodları gibi bişeymiş ben böyle olduğunu bilmiyorum. tarayıcıda sağ tıklayıp nasıl kaynağı görüntüle diyorsak, apk kodlarınıda o kadar kolay açabiliyormuşuz.
blockchain yapısı gibi bişey mi kurmak lazım tam bilemiyorum. bi kullanıcının secret keyini başka kullanıcılara mı saklamak lazım ne yapmak lazım kafamda deli sorular
-
cemnet bunu yazdı
tersine mühendisliğe karşı kod nasıl korunabilir hocam bu konuda fikir birliliğine ihtiyaç var.
apk kodları = html kodları gibi bişeymiş ben böyle olduğunu bilmiyorum. tarayıcıda sağ tıklayıp nasıl kaynağı görüntüle diyorsak, apk kodlarınıda o kadar kolay açabiliyormuşuz.
blockchain yapısı gibi bişey mi kurmak lazım tam bilemiyorum. bi kullanıcının secret keyini başka kullanıcılara mı saklamak lazım ne yapmak lazım kafamda deli sorular
APK korumaya yönelik çeşitli anti reverse engineering yazılımları var. Java kodu ise obfuscate edilebilir, native kod ise daha ileri teknikler uygulanabilir ama obfuscation diğerine göre zayıf ve kodun anlaşılması kolay kalıyor tabii. Bu konuda iyi sonuçlar veren bir yazılım kullanmak lazım. Onlar da muhtemelen paralıdır. Bütçeye göre alınabilir ya da kırılmış olanı kullanılabilir. Bellekte tutulan verinin korunması konusunda kendin kod yazıp tutuluş şeklini daha karmaşık hale getirebilirsin ya da oyunlarda hile yapılmasın diye belleği koruyan çeşitli yazılımlardan faydalanabilirsin.
anonim6918524 tarafından 06/Tem/20 18:21 tarihinde düzenlenmiştir -
ücretli yazılımlarda olsa asıl işi kodları karıştırmak okunabilirliği zorlaştırmak aslında. yani adam yapıyı çözdükten sonra 2 iş gününde çözebileceği bir kodu 5 iş gününde yine çözebilecek. bu işi %100 korunaklı yapılamayacağını anladım ama uygun bir mimari ile %99 kırılamaz hale getirilebileceğini düşünüyorum
-
cemnet bunu yazdı
ücretli yazılımlarda olsa asıl işi kodları karıştırmak okunabilirliği zorlaştırmak aslında. yani adam yapıyı çözdükten sonra 2 iş gününde çözebileceği bir kodu 5 iş gününde yine çözebilecek. bu işi %100 korunaklı yapılamayacağını anladım ama uygun bir mimari ile %99 kırılamaz hale getirilebileceğini düşünüyorum
Evet. %100 koruma sağlamak mümkün değil. Nihayetinde o anahtar son noktada kullanılacak.
-
cemnet bunu yazdı
tersine mühendisliğe karşı kod nasıl korunabilir hocam bu konuda fikir birliliğine ihtiyaç var.
apk kodları = html kodları gibi bişeymiş ben böyle olduğunu bilmiyorum. tarayıcıda sağ tıklayıp nasıl kaynağı görüntüle diyorsak, apk kodlarınıda o kadar kolay açabiliyormuşuz.
blockchain yapısı gibi bişey mi kurmak lazım tam bilemiyorum. bi kullanıcının secret keyini başka kullanıcılara mı saklamak lazım ne yapmak lazım kafamda deli sorular
Tersine tersine muhendislik ile.korunabilir
-
Keyi niye veriyosun ki kullanıcıya, web servis yap. Keyi kendi tarafında kullan.
-
Mantıkta bir hata var gibi, sen private key neden client veriyorsun ki ? Asimetrik şifrelemenin mantığına ters.
Public ver, onunla mzalasın sana göndersin.
-
cukurova bunu yazdı
Mantıkta bir hata var gibi, sen private key neden client veriyorsun ki ? Asimetrik şifrelemenin mantığına ters.
Public ver, onunla mzalasın sana göndersin.
Anladiğim kadari ile arkadas asymmetric enc de ki priv key den bahsetmiyor. X bir api'nin secret keyinden bahsediyor.
Malesef Priv key'i mobile eklediğin andan itibari ile cok da güvenli olmuyor. hep kırmanın bir yolu var. hatta mobile cihaza setifika gömüp, https protokolunden gonderdiğin data ve header'lari router dan yakalayıp decrypt edip yine keyi ve api bilgilerini elde edebilirler. bu yuzden kullanıcı seviyelemesi yapip her device kendi sec key'i ile işlem yapacak ve api lerde ki kendi yetkin yerine gidecek.
-
@Rakkoc abimin çok güzel bir fikri vardı. Elinde bir string olsun ve bu string her client için değişken olsun demişti.
Daha sonra bu string'i öyle bir algoritmadan geçir ki bu stringin decoder'i sunucuda olsun. Yani adam o stringi üretemesin... Yamulmuyorsam o zamanlar EAN 13 örneğini vermişti.
Bende kendi encoderimi o client üzerinden gerçekleştirip decoderi sunucu tarafına yazıyordum. Yani adam X bir stringi encode etmeden işlem yapamıyor.. (Bu sadece ClientKey birde Public Key vs var JWT ile).
Ben bu ClientKey ile sunucuya gidip bir Private Key elde ediyorum. Daha sonra apilere istekte bulunurken bu Private Key ile SHA256 algoritması ile şifreliyorum.
Yani adam önce client da IMEI numarası ile ürettiği key ile bir servise geliyor. Daha sonra ben bu adama tamam reis sen benim programı kullanıyorsun al şu şifreyi bütün trafiği bu şifre ile şifrele diyorum.
Vel hasıl kelam.... Böyle bir güvenlik önlemim vardı kodların içerisinde bir key göremezsin..
Android için proguard kullanıyorum kodları karıştırıyor.
Yeterli mi değil. Sadece hackerin işi zorlaşıyor :P Adam orayı FireX dediği gibi okuyarak gene algoritmayı fark edebilir ama çok zor yani. Öyle biri de gelsin hacklesin zaten helal olsun der teslimiyet ile ne istersin reis-ül ala derim :) Hiç bir şey tamamen güvenli olmaz sadece saldırganın işini zorlaştırır.
Benim algoritmam da şuna benzer çalışıyor.
Önce bir filtre methodum var atıyorum 5 leri A 2 leri R ilk 3-1 leri 5 ilk 2-3 leri 2 yap gibi bir algoritma var. Sonra onun modunu alıyorum modunu aldıktan sonra ortadan ikiye böl çarp daha sonra elde ettiğin sonucu . ayracı ile en sona ekle falan filan gibi bir süzgeç algoritmam var bu algoritmanın tersi sunucuda. bayağı bir karışık orası yaklaşık 400 satır kod var. Yok efenim harflerin ASCII kodların toplamı 8-12 arasındaki rakam bloğunu veriyor felan filan...
MhmdAlmz tarafından 07/Tem/20 08:14 tarihinde düzenlenmiştir