Malicious Apps In Play Store

Şifreleme, Hashing ve Salting Arasındaki Farklar

Her biri kendine özgü bir işleve hizmet etse de aslında hiçbiri aynı şey değil.

 

Hızlıca soralım, encryption (şifreleme) ve  hashing arasındaki farkı biliyor musunuz? Salting ne demek farkında mısınız? Peki öğrenmek ister misiniz? Bunlar öylesine sorular oldu çünkü her şekilde size anlatacağız.

Şifreleme ve hashing kimi zamanlar birbiriyle karıştırılan kavramlar. Salting ise pek öyle sayılmaz. Fakat şifrelemeyi bir bütün olarak anlayabilmek için her üç kavrama da bakmak gerekiyor.

Şifreleme – Encryption Nedir?

Şifreleme, bir bilgiyi – veriyi sadece karşılık gelen anahtarlarla çözülebilecek ve okunabilecek şekilde kitleme işlemidir. Şifreleme iki yönlü olarak yapılırken, bir şeyi şifrelediğinizde amacınız bunu daha sonra çözmektir.

Şifreleme ve hashing arasındaki temel ayrım budur.

Şifreleme Antik Mısır dönemine kadar uzanmaktadır. Antik Mısırlıların kullandığı teknikler tabii ki bugünki şifrelemeye göre daha basitti. Hatta Sezar’ın şifrelemesi, tarihteki en önemli şifreleme örneklerinden birisi olarak gösterilir. Sezar, harflerin yerini değiştiren basit bir şifre kullanıyordu. Oldukça yararlıydı ve Sezar’ın rakiplerinin bilgiye erişmesini önlüyordu.

Hashing Nedir?

Hashing ise herhangi bir boyuttaki veriyi – bilgi haritasını sabit bir uzunluğa eşleme işlemidir. Buna hash değeri adı verilirken, şifreleme iki aşamalı olsa da hashing sadece tek aşamalı bir işlemdir. Teknik açıdan hashingi tersine çevirmek mümkün olsa da, gereken bilgisayar işlem gücü ise bunu imkansızlaştırır.

Şifrelemede amaç aktarılan verileri korumakken, hashing ise herhangi bir dosya veya veri parçasının değiştirilmediğini, üzerinde oynanmadığını doğrulamak amacı taşır.

Her bir hash değeri kendine özgüdür. Fakat eğer iki farklı dosya aynı özel hash değerini üretirse bu duruma ‘çarpışma – collision’ adı verilir ve algoritma kullanışsız hâle gelir. Bu yılın başında Google savunmasız olduğunu göstermek için SHA-1 ile bir hashing algoritması yaratmış, ortaya çarpışma çıkarmıştı. 2016 yılının başında SHA-1 yerine resmi olarak SHA-2 gelse de, Google bunu kanıtlamak için iki yıllık bir çalışma gerçekleştirdi ve gerçekliği ortaya çıkardı. Bunu kanıtlamak için uzun uğraşlar gerekse de, Google yine de başardı.

Her neyse, şimdi de bir hashing örneği verelim. Diyelim ki bir yazılımı dijital olarak imzalamak istiyorsunuz ve web siteniz üzerinden indirmeye açacaksınız. Bunu yapmak için imzaladığınız scriptin ya da yürütülebilir dosyanın hash’ini yaratmanız gerekiyor. Dijital imzanızı da ardından eklersiniz. Bu işlem sayesinde artık indirilen tüm veriler – dosyalar şifrelenmiş olacaktır.

Bir müşteri bir yazılımı indirdiğinde, tarayıcısı dosyanın şifresini kaldıracak, ardından iki özel hash değerini inceleyecektir. Sonra da tarayıcı aynı hash işlevini yerine getirecek, aynı algoritmayı kullanarak hem dosyayı, hem de imzayı hash edecektir. Eğer tarayıcı aynı hash değerini çıkarırsa, hem imzanın hem de dosyanın değiştirilmediği anlaşılacaktır.

Eğer değer ortaya çıkmazsa ise tarayıcıdan uyarı gelir. Unutmayın ki, hiçbir iki dosya aynı hash değerini çıkaramaz. Yani en ufak yer değiştirme dahi farklı bir değer yaratır.

Salting Nedir?

Salting, Türkçe adıyla ‘tuzlama’ tipik olarak şifre hashing’ini gösteren bir kavramdır. Bunu yapmak için de şifrenin sonuna farklı bir hash değeri eklenir. Bu sayede hashing işleminde güvenlik katmanı oluşturulurken, özellikle de brute force saldırılarının önüne geçilir. Brute Force saldırısı, bir bilgisayar veya botnet ağının şifreyi bulana kadar her türlü olasılığı rakamlar ve harflerle deneme işlemidir.

Salting işleminde ek olarak ‘salt’ değeri eklenir. Amaç şifre sonuna ‘salt’ değerini eklemek, ardından hash etmektir. Hemen bir örneğe bakalım. Diyelim ki şifrenin böyle gözükmesini istiyoruz;

7X57CKG72JVNSSS9

 

Burada SALT kelimesi olacak ve hashing’e geçmeden önce veri sonuna SALT değerini ekleyeceksiniz, ardından şöyle gözükecek;

7X57CKG72JVNSSS9SALT

 

Hash değerleri salting yapılmayan şifrelerde daha farklıdır. Unutmayın ki hashing edilmiş verilerdeki en ufak değişimler dahi ortaya farklı bir hash değeri çıkaracaktır. Şifrenizi salting ederek gerçek hash değerini gizlersiniz ve fazladan veri eklemesi yaparsınız.

Eğer bir Brute Force saldırganı salt değerinizi biliyorsa bu durumda değersiz olacaktır. Denedikleri her şifrenin sonuna bunu koyarlar ve sonunda da bulurlar. Aslında şifre güvenliği konusunda tamamen ayrı bir makale de yazabiliriz ve yararlı olsa da, şimdilik salting tanımı hakkında bunları bilmeniz yeterli.

Ne Öğrendik?

İşte bugünün konusundan öğrendiklerimiz;

- Şifreleme, verilerin daha sonra çözülmek amacıyla iki aşamalı olarak saklanmasıdır.

- Hashing tek aşamalı, verinin belli bir uzunluk değerine getirildiği şifreleme işlemidir. Genellikle onaylama için kullanılır.

 

- Salting, hashing sırasındaki ek bir adımdır ve genellikle hash edilmiş şifrelerde görülür. Şifre sonuna ek bir değer eklenerek, hash değerinde değişiklik yapma amacı taşır.