Secure Hasing Algorithm (SHA)

Yazan : Şefik İlkin Serengil

SHA özetleme fonksiyonları, NSA tarafından tasarlanmış ve NIST tarafından Birleşik Devletler Federal Bilgi İşleme Standardı olarak yayınlanmış bir dizi kriptografik özetleme fonksiyonudur. SHA, Secure Hash Algorithm yani Güvenli Özetleme Algoritması anlamına gelmektedir. Bugün SHA-0, SHA-1, SHA-2 olmak üzere üç farklı yapıda özetleme algoritması mevcuttur. SHA-3, NIST tarafından organize edilen halka açık bir yarışma ile 2012 yılında seçilecektir.

SHA-1

SHA-1, maksimum (264-1) bitlik mesajdan 160 bit’lik özetleme değeri üretir.

Türkiye’deki dijital imza uygulamaları, sertifikalar ve kök sertifikalar RSA açık anahtar kripto sistemi ve SHA-1 özetleme fonksiyonu üzerine kurulmuştur.

Şekil 1.1 SHA-1 Ailesi Sıkıştırma Fonksiyonundaki Bir İterasyon’da Gerçekleşen İşlem

A, B, C, D ve E 32′şer bitlik bilgi parçalardır.

F, başkalaştırmaya yol açacak lineer olmayan bir fonksiyon.


n,
n bitlik sola dairesel kaydırma işlemini,

Wt, t. turdaki genişletilmiş mesaj bilgisini,

Kt, t. turdaki tur sabitini,


mod 232 deki toplama işlemini simgelemektedir.

Yukarıda bahsi geçen işlemleri daha detaylı bir şekilde inceleyecek olursak

F fonksiyonu,

F = ( B AND C ) OR ( B’ AND D )

F = B XOR C XOR D

F = ( B AND C ) OR ( B AND D ) OR ( C AND D )

F = B XOR C XOR D

Şeklinde aldığı 3 ayrı girdi değerinden bir çıktı üreten bir fonksiyondur. F fonksiyonunun yukarıda belirtilenlerden fonksiyonlara alternatif başka bir fonksiyon olarakta seçilmesi mümkündür. Pseudocode’da yukarıda belirtilen 4 ayrı f fonksiyonu 80 tur’a homojen olarak dağıtılacaktır.

Kt tur 80 tur’da homojen olarak 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, OxCA62C1D6 değerlerini almaktadır. Bu değerler 2, 3, 5 ve 10 ‘un karekök değerleridir.

Pseudocode

Başlangıç durumundaki değişkenlerin ataması yapılır.

h0 = 0×67452301;

h1 = 0xEFCDAB89;

h2 = 0x98BADCFE;

h3 = 0×10325476;

h4 = 0xC3D2E1F0;

h0, h1, h2 ve h3 ilk değerleri MD5 özetleme algoritmasında kullanılan değerlerle aynıdır. h4′te benzer şekilde üretilir.

Ön işleme aşaması

Özet değeri üretilecek mesaj 512 bit’in katı olmadır. Şayet değilse uygulanacak padding işlemi ile önce mesaj 512 bit’in katı olacak hale getirilir. Şifrelenme işlemi daha sonra gerçekleşir.

Örneğin, 64 bitlik bir mesajın özeti çıkarılmak istenilirse;

64 = -448 ( mod 512 ) olacağından orijinal mesajın ardına 448 bit veri ekleme işlemi gerçekleşir. Padding işlemi orijinal verinin ardından gelen ilk bit yerine 1 geri kalanlar 0 olacak şekilde gerçekleşir.

Mesaj 512′nin katı haline getirildikten sonra 512 bitlik bloklara bölünür.

Her blok, 32 bitlik 16 ayrı parçaya ayrılır.

32 bitlik 16 parça, 32 bitlik 80 parça olacak şekilde genişletilir.

for(int i=16;i<80;i++)

{

w[i] = w[i-3] ^ w[i-8] ^ w[i-14] ^ w[i-16];

w[i] = (( w[i] << 1 ) | ( w[i] >> 31 ) & 0xFFFFFFFF ); // 1 bitlik dairesel sola kaydırma işlemi

}

Bu blok için başlangıç özet değerlerin ataması yapılır.

a = h0;

b = h1;

c = h2;

d = h3;

e = h4;

Ana Döngü

for(int i=0;i<80;i++)

{

if(i>=0 && i<=19)

{

f = ( B & C ) | (B’ & D);

k = 0x5A827999;

}

if(i>=20 && i<=39)

{

f = B ^ C ^ D;

k = 0x6ED9EBA1;

}

if(i>=40 && i<=59)

{

f = (B & C) | (B & D) | (C & D);

k = 0x8F1BBCDC;

}

if(i>=60 && i<=79)

{

f = B ^ C ^ D;

k = 0xCA62C1D6;

}


temp = (( a<<5 ) | (a>>27))&0xFFFFFFFF;

temp = temp + f + e + k + w[i];


E = D;

D = C;

C = ((B << 30) | (B>>2))&OxFFFFFFFF;

B = A;

A = temp;


h0 = h0 + A;

h1 = h1 + B;

h2 = h2 + C;

h3 = h3 + D;

h4 = h4 + E;


}

System.out.println(h0+“”+h1+“”+h2+“”+h3+“”+h4);

2005 yılında SHA-1 özetleme fonksiyonun muhtemel matematiksel bir zayıflığının olduğu duyurulmuştur. Prensip olarak Özetleme Fonksiyonlarının çakışmalara karşı güveliği özetleme değerinin bit uzunluğunun yarısı kadardır. Örneğin, SHA-1 ailesine mensup bir özetleme fonksiyonunun güvenliğini özetleme değeri olan 160 bit’in yarısı kadar olan 80 bit kadardır. Başka bir deyişle, muhtemel bir çakışmayı tespit etmek için yapılması gereken denemelerin sayısı 280 kadar olmalıdır. Ancak, 2005 yılında Xiaoyun Wang, Yiqun Lisa Yin ve Hongbo Yu isimli üç Çinli bilim adamı yapılması gereken denemelerin teorik olarak 263 ‘ten daha iyi olmadığını belirtmiştir.

NIST her ne kadar 2007 Kasım’da yayınladığı bir bildiride SHA-1 özetleme algoritması üzerinde henüz bir çakışma bulunamadığını belirtse de 2006 Mart’ta yayınladığı bir bildiride SHA-1 özetleme fonksiyonunun 2010 yılından sonra kullanılmaması önerilmiştir.

Referanslar

[1] SHA hash functions, http://en.wikipedia.org/wiki/SHA_hash_functions

[2] FIPS 180-1 – Secure Hash Standart, http://www.itl.nist.gov/fipspubs/fip180-1.htm

[3] Çetin Kaya Koç, 2009. 2009 yılı hash (Özet) fonksiyonları yılı olacak (1), BT Haber, 702

[4] Çetin Kaya Koç, 2009. SHA-1 özetleme fonksiyonu hakkında, BT Haber, 569

[5] Çetin Kaya Koç, 2009. Özet (Hash) fonksiyonları üzerine, BT Haber, 567

Bu yazıyı beğendiyseniz, başkalarının da ilgisini çekebilirsiniz:


156 views

2 responses to “Secure Hasing Algorithm (SHA)”
  1. muratkan says:

    bu kod yapısını nasıl okunabilir yaparım bilgi verirseniz sevinirim

    import java.io.PrintStream;

    public final class canakOkeyServer
    {
    public static void main(String[] arg0)
    {
    System.out.println(e.jdMethod_long(“¾430=35p8522,p#<3706?\n36x^uX"));

    new s(arg0).start(); 16501; -12034;

    System.out.println(e.jdMethod_long("0335-!03,2404dEc07205=Z'27+31&<0132230'16$340O9A311321232I.-9\"4\t2033B70334H2405213Y42735#9<G26277A*05$8lZg05,5V+2305=06616.Mh)*r\”™2333623j05\b 26m028167219;p3ž,24#16I!3630\f[#013322Ň X11\r25\f055/.+12Z&3;5&:,31bKm#H33)047z\\qf”));
    }
    }

  2. Sanırım kodunuzu java decompiler ile ürettiniz. Bu durumda genelde isim olarak jdMethod ön eki kullanılıyor. Bahsettiğiniz koddaki karışık olarak yazılmış karakterler ise bu karakterlerin ne olduğunu ve ne ile şifrelendiğini bilmeniz gerekir.

    Yazıyı SHA algoritmasının altına açmışsınız. Şayet SHA algoritması ile şifrelendiğine eminseniz internette çok sayıda kodlama uygulaması var bunlara bakabilirsiniz ancak unutmayın ki özetleme algoritmaları (hashing algorithms) tek taraflı çalışmak için tasarlanmıştır, yani çıktıdan girdiye gitmeniz neredeyse imkansız denilebilir.

    Başarılar

Leave a Reply


* 9 = dokuz

Benzer Yazılar:

Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Secure Hasing Algorithm (SHA)' isimli yazı 02 Nov 2009 tarihinde, saat: 14:24 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam156 defa okunmuştur.

Benzer yazıları Veri Güvenliği(Cryptography) kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.


Category: Veri Güvenliği(Cryptography)