MySQL Veritabanında Veri Şifreleme
AES (Advanced Encryption Standard), Amerika'da birçok algoritmanın katıldığı yarışmada finale kalarak birinci seçilmiştir. Kriptoanaliz testlerinde yarışmaya katılan diğer algoritmalara göre daha iyi sonuçlar alınmış, bilim adamlarınca yapılan ve gerek zaman gerekse hesapsal karmaşık testlerinde, diğer algoritmalara göre daha etkili olduğu matematiksel olarak ispatlanmıştır.
Belçikalı iki matematikçinin geliştirdiği, Rijndael Şifreleme Algoritması, AES algoritması olarak kabul edilmiştir. Bugün bankalar dahil birçok kurumda, kritik güvenlik gerektiren birçok yazılımda kullanılmaktadır. Şifreleme algoritmalarında anahtar büyüdükçe güvenlik artar ve algoritmayı kırmak zorlaşır, fakat şifreleme ve şifreyi çözme zamanı uzar. Web yazılımları gibi, hızlılığın gerektiği ve insanların fazla sabredemediği durumlarda bu gibi güçlü algoritmaları kullanmak, aşırı yavaşlığa neden olabilir. Bu nedenle veritabanındaki tüm verilerin bu algoritmayla şifrlenmesi yerine çok özel birkaç tablo alanının şifrelenmesi tercih edilmelidir.
Yazılımdan bahsetmişken, AES Algoritmasını yazılımlarınızda ücretsiz kullanamazsınız, açık kaynak bir sistem değildir, lisanslıdır. Ticari yazılımlarda kullanılırken ücretini ödemek gerekir. WinRAR gibi birçok yazılımda AES'in kullanıldığını görebilirsiniz. Birçok veritabanı yönetim sistemi de AES'i kullanmaktadır.
MySQL veritabanında AES algoritmayla şifreleme yapmak için AES_ENCRYPT fonksiyonu kullanılır. Kullanımı aşağıdaki gibidir.
Şifreleme konusu ile yakından ilgileniyorsanız Güvenlik bölümündeki makaleleri de okuyabilirsiniz. MD5 ve SHA Hash algoritmaları, AES algoritmasından daha hızlı çalışırlar. MD5 ve SHA Hash algoritmaları ile AES Şifreleme Algoritması karıştırılmamalıdır. Hash Algoritmaları tek yönlü çalışırlar, yani algoritmanın çıktısından orjinal metne dönüş mümkün değildir. Şifreleme algoritmaları ise çift yönlü çalışırlar. Mesaj Özütü algoritmaları ile ilgili makalemi Güvenlik bölümünden okuyabilirsiniz.
NOT: Burada verilen bilgiler saldırı amaçlı ya da zarar verme amacıyla verilmemiştir, kriptografi bilimi ile internette, kütüphanelerde birçok tez, makale, kitap herkese açık şekildedir, kriptografi tıpkı matematik gibi herkese açık bir bilim dalıdır.
Güvenli günler dilerim.
Oğuzhan TAŞ - 2014
KAYNAKLAR
- AES Algoritması Hakkında
http://tr.wikipedia.org/wiki/AES
- MySQL Kütüphanesi
http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html
Belçikalı iki matematikçinin geliştirdiği, Rijndael Şifreleme Algoritması, AES algoritması olarak kabul edilmiştir. Bugün bankalar dahil birçok kurumda, kritik güvenlik gerektiren birçok yazılımda kullanılmaktadır. Şifreleme algoritmalarında anahtar büyüdükçe güvenlik artar ve algoritmayı kırmak zorlaşır, fakat şifreleme ve şifreyi çözme zamanı uzar. Web yazılımları gibi, hızlılığın gerektiği ve insanların fazla sabredemediği durumlarda bu gibi güçlü algoritmaları kullanmak, aşırı yavaşlığa neden olabilir. Bu nedenle veritabanındaki tüm verilerin bu algoritmayla şifrlenmesi yerine çok özel birkaç tablo alanının şifrelenmesi tercih edilmelidir.
Yazılımdan bahsetmişken, AES Algoritmasını yazılımlarınızda ücretsiz kullanamazsınız, açık kaynak bir sistem değildir, lisanslıdır. Ticari yazılımlarda kullanılırken ücretini ödemek gerekir. WinRAR gibi birçok yazılımda AES'in kullanıldığını görebilirsiniz. Birçok veritabanı yönetim sistemi de AES'i kullanmaktadır.
MySQL veritabanında AES algoritmayla şifreleme yapmak için AES_ENCRYPT fonksiyonu kullanılır. Kullanımı aşağıdaki gibidir.
AES_ENCRYPT(veri, şifreleme anahtarı)
Örneğin; AES_ENCRYPT('merhaba','abc1234');
Örneğin; AES_ENCRYPT('merhaba','abc1234');
şeklinde kullanabilirsiniz. Burada 'merhaba' gibi bir metni 'abc1234' gibi bir anahtar kullanarak şifreledik. Tabi verdiğimiz örnekteki gibi bir anahtar kullanırsanız, dünyanın en güçlü şifreleme algoritmasını kullansanız da yaptığınız işin hiçbir anlamı olmaz, sözlük saldırısı gibi saldırılar ile kolayca kırılır.
MySQL veritabanında yeni bir tablo oluşturup, aşağıdaki alanları tanımlayalım.
Aşağıdaki INSERT sorgusu ile veritabanımıza birkaç kayıt ekleyip, görüntüye bakalım.
MySQL veritabanında yeni bir tablo oluşturup, aşağıdaki alanları tanımlayalım.
Aşağıdaki INSERT sorgusu ile veritabanımıza birkaç kayıt ekleyip, görüntüye bakalım.
INSERT INTO uyeler( kullaniciadi, sifre, email )
VALUES (
AES_ENCRYPT( 'oguzhan', 'abc1234' ) ,
AES_ENCRYPT( 'sifre', 'abc1234' ) ,
AES_ENCRYPT( 'emailim@email.com', 'abc1234' )
)
Uyeler tablomuza bir kayıt satırı daha ekleyelim.
Uyeler tablomuza bir kayıt satırı daha ekleyelim.
INSERT INTO uyeler( kullaniciadi, sifre, email )
VALUES (
AES_ENCRYPT( 'sinan', 'abc1234' ) ,
AES_ENCRYPT( 'sinaninsifre', 'abc1234' ) ,
AES_ENCRYPT( 'sinan@email.com', 'abc1234' )
)
SELECT
AES_DECRYPT(kullaniciadi, 'abc1234') AS kullanici_adi,
AES_DECRYPT(sifre, 'abc1234') AS sifre,
AES_DECRYPT(email, 'abc1234') AS email_adresi
FROM uyeler;
Şifreleme konusu ile yakından ilgileniyorsanız Güvenlik bölümündeki makaleleri de okuyabilirsiniz. MD5 ve SHA Hash algoritmaları, AES algoritmasından daha hızlı çalışırlar. MD5 ve SHA Hash algoritmaları ile AES Şifreleme Algoritması karıştırılmamalıdır. Hash Algoritmaları tek yönlü çalışırlar, yani algoritmanın çıktısından orjinal metne dönüş mümkün değildir. Şifreleme algoritmaları ise çift yönlü çalışırlar. Mesaj Özütü algoritmaları ile ilgili makalemi Güvenlik bölümünden okuyabilirsiniz.
NOT: Burada verilen bilgiler saldırı amaçlı ya da zarar verme amacıyla verilmemiştir, kriptografi bilimi ile internette, kütüphanelerde birçok tez, makale, kitap herkese açık şekildedir, kriptografi tıpkı matematik gibi herkese açık bir bilim dalıdır.
Güvenli günler dilerim.
Oğuzhan TAŞ - 2014
KAYNAKLAR
- AES Algoritması Hakkında
http://tr.wikipedia.org/wiki/AES
- MySQL Kütüphanesi
http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html
Dil Değiştir(Change Language)
Kategoriler
- Csharp(58)
- Csharp Formlar(23)
- Web Tasarım(9)
- CSS(27)
- JavaScript(37)
- PHP(50)
- Laravel(3)
- ASP.net(38)
- Excel(15)
- Güvenlik(4)
- E-Ticaret(3)
- Kariyer(5)
- SQL Server(29)
- MySQL(16)
- Linux(17)
- MacOSX(8)
- Ayarlar(12)
- Bilgisayar Ağları(3)
- Symfony(1)
- Teknoloji(7)
- VBS(1)
- Arduino(6)
- RaspberryPi(1)
- Algoritmalar(15)
- HTML(3)
- Python(2)
- Bash Script(7)
- C Programlama(10)
- Flutter - Dart(11)
- Bootstrap(1)
En çok Okunan 18 Makale
- :: Excelde EĞER Fonksiyonu Kullanımı...
- :: Csharp ile Access Veritabanı Bağlan...
- :: SQL nedir, Temel SQL Komutları nele...
- :: Hangi Linux Dağıtımı?
- :: OSX İşletim Sistemine PHP, MySQL, A...
- :: PHP dilini kullanarak MySQLi tekniğ...
- :: Excel Hesap tablosunda EĞERSAY Fonk...
- :: Excel Hesap tablosunda ÇOKETOPLA Fo...
- :: Excel Hesap tablosunda ETOPLA Fonks...
- :: Excel Hesap tablosunda ÇOKEĞERSAY F...
- :: Hangi Programlama Dilini Öğrenmeliy...
- :: Mac Bilgisayarınıza Windows 7 Yükle...
- :: PHP ile Basit Dosya Yükleme
- :: C# Programlama Dili ile İlgili Örne...
- :: PHP Dili kullanarak MySQLi Tekniği ...
- :: Excel hücrelerinde yıldız koyarak b...
- :: PhpMyAdmin Şifresi Nasıl Değiştiril...
- :: Hangisi acaba, PHP mi ASP.NET mi ?