• 23-11-2014, 18:04:10
    #1
    Merhaba arkadaşlar,

    bir db dosyasını XOR olarak yazılım ile şifrelemeyi düşünüyorum.
    yazılım bu şifreli dosyayı açtığında Stream2a atacak ve kullanacak.
    sizce bu mantıklı mı?

    amacım db'yi şifreli dosya yapmak.

    RAM'e çok yük biner gibi geliyor. sizin tavsiyeleriniz neler?
  • 23-11-2014, 18:10:47
    #2
    db içindeki bilgileri şifrelemek daha mantıklı olabilir.
  • 23-11-2014, 20:53:20
    #3
    her xorladığın bir bit için xor değerini saklaman lazım yani x bit uzunluktaki bir dosyayı xor şifreleme ile saklıcaksan x bit kadar anahtara ihtiyacın olacaktır.

    bu şifreleme tekniği one-time pad olarak biliniyor. kırılması imkansız bir yöntem ama trade offu gördüğün gibi
  • 24-11-2014, 06:55:12
    #4
    Misafir adlı üyeden alıntı: mesajı görüntüle
    db içindeki bilgileri şifrelemek daha mantıklı olabilir.
    sanki o zaman db içindeki verileri aramada sıkıntı çıkabilir diye düşünüyorum.
    mesela istediğim gibi soru içinde arama kullanamam.

    ilkerxx adlı üyeden alıntı: mesajı görüntüle
    her xorladığın bir bit için xor değerini saklaman lazım yani x bit uzunluktaki bir dosyayı xor şifreleme ile saklıcaksan x bit kadar anahtara ihtiyacın olacaktır.

    bu şifreleme tekniği one-time pad olarak biliniyor. kırılması imkansız bir yöntem ama trade offu gördüğün gibi
    evet, aynen öyle yapmayı planlıyorum bende ama performansı nasıl etkiler?
  • 25-11-2014, 18:33:32
    #5
    kanzuksoft adlı üyeden alıntı: mesajı görüntüle
    sanki o zaman db içindeki verileri aramada sıkıntı çıkabilir diye düşünüyorum.
    mesela istediğim gibi soru içinde arama kullanamam.


    evet, aynen öyle yapmayı planlıyorum bende ama performansı nasıl etkiler?
    bilemiyorum ama bi algoritması falan yok basitce e = x ⊕ y
    her işlem constant oldugu için n uzunluğundaki bit dizisi o complexityde falan olur herhalde, ama her x biti için xorladığın y bitini saklaman gerekmesi işin performansını değil ama saklama alanını etkiler. Mesela 100mb lık bir veri şifreledin, bunun aynı zamanda 100mb lık bir anahtarı olacaktır, bu yüzden network üzerinden aktarılacak büyük dosyaları bu yöntem ile şifrelemek pek akıllıca değil, çünkü bi okadarda anahtarı aktarmak zorundasın ve bu anahtarı man in the middle attacklarına karşıda koruman gerekir.. Devlet sırrı falan şifrelemiceksen simetrik şifreleme yöntemlerine bakabilirsin, ya da private-public key olan şifrelemelere bakabilirsin, ElGamal encryption yöntemini önebilirim bu iş için.
  • 25-11-2014, 19:20:18
    #6
    şöle şifrelersen
    ahmet kelime =>ersnq

    her harfe farklı bir karakter verip, db de ararkende şifreli haliyle aratıp tarıyabilirsin.
  • 25-11-2014, 23:53:45
    #7
    Misafir adlı üyeden alıntı: mesajı görüntüle
    şöle şifrelersen
    ahmet kelime =>ersnq

    her harfe farklı bir karakter verip, db de ararkende şifreli haliyle aratıp tarıyabilirsin.
    Substitution cipher olarak geçiyor sanırım bu, ama bu yöntem çok basit olan frequency analysis ile çözülebiliyor,
    ---
    Ama like sorguları yapmak istiyorsan en basit çözümde RssMonster'ın dediği gibi olabilir
  • 26-11-2014, 00:50:04
    #8
    Geçen gün konuya yazmıştım baya uzunca bir yazı ama sağolsun cloudflare yüzünden gitti hepsi ben de tekrar yazmadım..

    şimdi stream2a atacak derken tam anlamadım ne demek istediğini sanırm stream diye kast ettin ama neyse önemli değil buradan çıkardığım sonuç internete bağımlı bir şeyin olması..

    O halde neden şifreleme ile uğraşıyorsun ki? Bir veritabanın olsun ve ona web servisi/wcf ile ulaş, bu sayede çok daha güvenli bir sistem elde etmiş olursun. Şifreleme yapman gerektirecek bir durum nedir bilmiyorum ama db ile arada bir servis olursa şifrelemeye gerek kalmaz. Login olayı koyarsın, başarılı login olunca bir token key yollarsın, bununla sorgulamaları yaptırırsın v.s.

    Onun dışında veritabanının yapısını bilmiyorum ama şifrelemede ilk olarak cpu önemlidir çünkü aritmetik işlem birimi (alu) oradadır. Elbette bellek de önemlidir ama çözülecek verinin boyutu çok fazla değilse bellek göz ardı edilebilir. Şifreleme türü ne kadar zorsa bu cpu yu daha çok zorlayacaktır.

    İlla şifreleme yapmak istiyorsan noSQL çözümlerine bakabilirsin, metin tabanlı oldukları için eğer ilişkisel veritabanı/join gibi şeylerle işin olmayacaksa bir rdbms yerine kullanılabilir. Performans açısından key-value şeklinde saklayan bir nosql çözümü seçilebilir.

    kolay gelsin