Access Üzerinde 3DES


veritabanı mantığı adlı kitabınızı zaten uğraştığım access işinde yanlış yapmamak için okuyorum. Uygulama geliştirmek yerine tablo yapılarımda sorun varsa gidermek istiyorum. belki biz çoğu zaman bir iş biterken öğrendiğimiz son şey o işe nasıl başlamamız gerektiğidir.

her şey iyi güzel çok gerekli bir şey sunucu üzerindeki *.mdb dosyalarımızdaki bilgileri başkalarının okuması ya da offline iken okunması. açma parolasını nirsoft ‘un ücretsiz yazılımı bile mükemmel buluyor ücretsizce access 2003’e kadar.

çok laf kalabalığı oldu biliyorum. sizden ricam kitabınızda kullanıcı şifrelerini 3DES ile şifrelemişsiniz. Ben de bunu uygulamak istiyorum bu konuda access içine yazacağım kod, yardımcı araç ya da farklı şeyler neledrdir? hangi kaynaklara başvurmalıyım?

Öncelikle iki kavramı birbirinden ayırmakta fayda var. Sizin .mdb dosyasına koymuş olduğunuz şifre, Access içerisindeki tablolarda değil, .mdb dosyasının başlığında bir yerlerde Binary olarak saklanmaktadır. Bu, oluşturmuş olduğunuz veritabanı tablolarından ziyade Microsoft Office’in bir özelliğidir. Dosyaya koyduğunuz genel şifreyi programlama yaparak güçlendirmeniz, benim bilgim dahilinde mümkün değildir.

Benim kitapta bahsetmiş olduğum şifreleme, veritabanı tablolarında sakladığınız hassas verileri şifrelemektir. Örnek olarak User – Password değerlerinin tutulduğu bir tablo vermiş olmam, sanırım bu iki kavramın karışmasına yol açmış sizin tarafınızda. Örnekteki tablo .mdb dosyasına konan genel şifreyi saklayan tablo değildir – zaten öyle bir tablo da yok, dosyanın genel şifresi (az önce de belirttiğim gibi) tablolarda değil dosyanın içerisinde Binary olarak saklanır. Örnekteki User + Password, (örneğin) bir Web sitesinin üyelerine ait User + Password değerleri olabilir – yani Microsoft Office’in bir özelliği olmaktan ziyade, Access üzerinde geliştirmiş olduğunuz uygulamaya ait değerlerdir.

Aynı şekilde; veritabanı tablolarındaki kredi kartı numaralarının da şifrelenerek saklanması gerekir. Buna benzer diğer hassas bilgiler de şifrelenerek saklanmalıdır. Ama bunun, .mdb dosyasının genel şifresiyle bir ilgisi yoktur. .mdb dosyalarının genel olarak şifrelenmesi, sizin de işaret ettiğiniz gibi, Access 2007 itibariyle daha güçlü bir hale geldi. Access sürümünüzü yükselterek bu konudaki güvenliğinizi arttırabileceğinizi düşünüyorum – ama yine de Access 2007’yi kırabilen programların olup olmadığını bir araştırmakta fayda var.

Eğer kullanıcı bazlı erişim kontrolü (yani kim hangi tabloya erişebilir, kim okuyabilir, kim yazabilir) gibi bir ihtiyacınız varsa, Access yerine Microsoft SQL Server veya Oracle gibi daha kapsamlı bir RDBMS ürünü kullanmanızı tavsiye ederim. Bu ürünlerdeki erişim kısıtlama ve güvenlik özellikleri Access’e kıyasla çok daha güçlüdür. Access daha ziyade ufak tefek işlerde kullanmak üzere hazırlanmıştır. Microsoft SQL Server Express Edition’a bir göz atmanızı tavsiye ederim – bildiğim kadarıyla kişisel kullanım için ücretsiz; ama kurumsal amaçla kullanacaksanız lisans şartlarını bir okuyun, sonradan lisans ihlali yapmış olmanızı istemem. Yine kişisel kullanım için ücretsiz olan MySql’i de inceleyebilirsiniz; bu ürünü sadece 1-2 kez kullandığım için lisans şartlarını ve kullanıcı bazlı yetkilendirme konusundaki yeteneklerini tam bilmiyorum.

Bir access tablosu içerisindeki verilerin nasıl şifreleneceğine gelince… Uzun yıllardır SQL Server / Oracle / Lotus Notes dışında veritabanı kullanmamış olmamın yanı sıra, bugüne kadar Access’i sadece bir veri dosyası gibi kullandım, Access’in kendi geliştirme araçlarını kullanarak uygulama geliştirme ihtiyacım hiç olmadı. Yani; Access dosyasında tablolarım duruyor – işin uygulama kısmını ise .NET veya Java gibi ayrı bir platformda yapıyorum. Bu platformda geliştirdiğim uygulama, Access veritabanıyla sürekli etkileşim halinde olup gerekli yerlerde okuma / yazma işlemlerini yapıyor. Dolayısıyla, 3DES Encoding / Decoding işlemlerini de uygulamayı geliştirdiğim platform üzerinde hallediyorum. Yani veritabanı seviyesinde bu tarz bir işi hiç yapmadım. Bu durumda; tablolarınızdaki verileri şifrelemek istiyorsanız veri okuma / yazma kısmı için Java / .NET ile geliştirme yapmanızı tavsiye edeceğim. Access içerisinde böyle bir iş doğrudan yapılabilir mi diye merak ediyorsanız, bu sorunun cevabını bilmiyorum çünkü hiç denemedim. Eğer SQL Server, Oracle, MySql gibi bir ürün kullanmaya karar verirseniz; yine bu ürünlerin kendi şifreleme fonksiyonları olup olmadığını araştırabilirsiniz.

Ancak; güvenlik açısından, herhangi bir ürünü / algoritmayı olduğu gibi kullanmak pek tavsiye edilmez. Mesela bugüne kadar 3DES’i olduğu gibi kullandığımı hiç hatırlamıyorum. Genelde 3DES’i temel alıp, algoritmayı biraz değiştirerek (üzerine ek 1-2 işlev daha katarak) kullanıyorum. Böylece hem 3DES’in gücünden faydalanıyor, hem de 3DES’i kırmak üzere yazılmış standart programlara karşı nispeten güvende olduğumdan emin olabiliyorum. Bu mantıkla hobi anlamında geliştirmiş olduğum örnek bir algoritmayı http://www.codeplex.com/milkshake adresinde inceleyebilirsiniz, sanırım ne demek istediğimi daha net göreceksiniz. Bu tarz genişletmeler için yine Java / .NET tarzı bir platformda uygulama geliştirmeniz gerekecektir diye düşünüyorum.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s