Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

BÖLÜM 8.

VERİ BÜTÜNLÜĞÜ KONTROLLERİ

Bütünlük, verilerin tüm yaşam döngüsü boyunca hiç kimse veya herhangi bir şey tarafından
değiştirilmeden ve güvenilir kalmasını sağlar. Veri bütünlüğü, verileri depolayan, işleyen veya
ileten herhangi bir sistemin tasarımı, uygulaması ve kullanımı için kritik bir bileşendir. Bu
bölüm, karma (hashing) algoritmaları, tuzlama (salting) ve özet tabanlı mesaj doğrulama kodu
(keyed-hash message authentication code - HMAC) gibi kullanılan veri bütünlüğü kontrolü
türlerini incelemektedir. Bir sonraki bölümde, dijital imzalar ve sertifikalar açıklanacak ve son
olarak veritabanı bütünlüğü de dahil olmak üzere bütünlüğü sağlamak için gerekli bileşenler
tartışılmış olacaktır.

8.1. Veri Bütünlüğü Kontrolü Türleri

8.1.1. Karma (Hashing) Algoritmaları

8.1.1.1. Karma Nedir?

Kullanıcılar, verilerinin beklerken veya aktarılırken değişmeden kaldığını bilmelidir. Karma,


Şekil 8.1’de gösterildiği gibi ikili verileri (mesaj) alarak ve karma değeri veya mesaj özeti olarak
adlandırılan sabit uzunlukta bir temsil üreterek veri bütünlüğünü sağlayan bir araçtır.

Şekil 8.1. Karma değeri oluşturma


Karma aracı, veri bütünlüğünü sağlamak ve doğrulamak için kriptografik bir karıştırma işlevi
kullanır. Ayrıca kimlik doğrulama sürecini de doğrulayabilir. Karma işlevleri, açık metin
parolasının veya şifreleme anahtarlarının yerini alır, çünkü karma işlevleri tek yönlü işlevlerdir.
Bu, bir şifrenin, belirli bir karma algoritması ile harmanlandığında, her zaman aynı karma özeti
ile sonuçlanacağı anlamına gelir. Tek yönlü olarak kabul edilirler, çünkü karma işlevlerinde, iki
farklı veri kümesinin aynı karma özetini veya çıktısını vermesi, hesaplama açısından mümkün
değildir.

Veriler her değiştirildiğinde, karma değeri de değişir. Bu nedenle, kriptografik karma


değerlerine genellikle dijital parmak izleri denir. Yinelenen veri dosyalarını, dosya sürümü
değişikliklerini ve benzer uygulamaları algılayabilirler. Bu değerler, verilerdeki kazara veya
kasıtlı yapılan değişikliklere ve kazayla verinin bozulmasına karşı koruma sağlar. Karma ayrıca
çok etkilidir. Büyük bir dosya veya tüm disk sürücüsünün içeriği aynı boyuta sahip bir karma
değeriyle sonuçlanır.

8.1.1.2. Karma Özellikleri

Karma, hesaplaması nispeten kolay, ancak tersine çevirmesi çok zor olan tek yönlü bir
matematiksel işlevdir. Kahve öğütmek, tek yönlü işlev için iyi bir örnektir. Kahve çekirdeklerini
öğütmek kolaydır, ancak orijinal çekirdekleri yeniden oluşturmak için tüm küçük parçaları bir
araya getirmek neredeyse imkânsızdır.

Kriptografik bir karma işlevi aşağıdaki özelliklere sahiptir:

• Giriş herhangi bir uzunlukta olabilir.


• Çıkışın sabit bir uzunluğu vardır.
• Karma işlevi tek yönlüdür ve geri döndürülemez.
• İki farklı giriş değeri neredeyse hiçbir zaman aynı karma değerleriyle sonuçlanmaz.

8.1.1.3. Karma Algoritmaları

Karma işlevleri, bir kullanıcı veya iletişim hatası tarafından verilerin yanlışlıkla
değiştirilmemesini sağlamak için çok kullanışlıdır. Örneğin, bir gönderici, alıcıya giden bir
mesajı kimsenin değiştirmediğinden emin olmak isteyebilir. Gönderici cihaz, mesajı bir karma
algoritmasından geçirir ve sabit uzunluktaki özeti veya parmak izini hesaplar.

2
Basit Karma Algoritması (8-bit Checksum)

8 bitlik checksum, ilk karma algoritmalarından biridir ve bir karma işlevinin en basit biçimidir.
8 bitlik checksum, mesajı ikili (binary) sayılara dönüştürerek ve ardından ikili sayılar dizisini 8
bitlik gruplar halinde düzenleyerek karma değerini hesaplar. Algoritma 8 bitlik değerleri toplar.
Son adım, sonucu 2'nin tümleyeni adı verilen bir işlemi kullanarak dönüştürmektir. 2’nin
tümleyeni, bir ikili sayıyı zıt değerine çevirir ve sonra bir ekler. Bu, sıfırın bire dönüştüğü ve
birin sıfıra dönüştüğü anlamına gelir. Son adım, 8 bitlik bir karma değeri ile sonuçlanan 1
eklemektir.

Şekil 8.2. 8-bit checksum, ikili sayı dönüşümü

“BOB” mesajı için 8 bitlik karma değeri aşağıdaki gibi hesaplanır:

1. Şekil 8.2'de gösterildiği gibi ASCII kodu kullanılarak “BOB” kelimesi ikili sayılara (binary)
dönüştürülür.
2. İkili sayılar Şekil 8.3'te gösterildiği gibi onaltılı sayıya (hexadecimal) dönüştürülür.
3. Onaltılık sayılar toplanır (42 + 4F + 42 = D3 ).

3
4. Toplama işlemi sonucu elde edilen onaltılı sayı tekrar ikili sayıya dönüştürülür ve sonra
2’ye tümleyeni alınır (2C).
5. En son olarak +1 değeri eklenerek elde edilen sayı, karma değeridir (2D).

Şekil 8.3. 8-bit checksum, karma değeri hesaplama

Aşağıdaki örnekleri deneyerek pratik yapınız:

SECRET = "S" = 53 "E" = 45 "C" = 43 "R" = 52 "E" = 45 "T" = 54

KARMA DEĞERİ = 3A

MESSAGE = "M" = 4D "E" = 45 "S" = 53 "S" = 53 "A" = 41 "G" = 47 "E" = 45

KARMA DEĞERİ = FB

8.1.1.4. Modern Karma Algoritmaları

Günümüzde yaygın olarak kullanılan birçok modern karma algoritması vardır. En popüler iki
tanesi MD5 ve SHA'dır.

4
Message Digest 5 (MD5) Algoritması

MD5 karma algoritması, Ron Rivest tarafından geliştirilmiştir ve bugün birçok İnternet
uygulaması bu algoritmayı kullanmaktadır. MD5, verilen bir giriş verisinden, bir karma değerini
kolaylıkla hesaplar. Ancak tek yönlü bir işlev olduğu için bu işlemi tersine çevirmek çok zordur.

MD5, 128 bitlik bir karma değeri üretir. Kötü amaçlı bir yazılım olan Flame, 2012'de MD5'in
güvenliğini tehlikeye atmıştı. Flame’in yazarları, sahte bir Windows kod imzalama sertifikası
oluşturmak için MD5 çarpışmasını (collision) kullanmışlardı. Flame çarpışma saldırısının detaylı
bir açıklamasını okumak için burayı tıklayınız.

Secure Hash Algorithm (SHA)

National Institute of Standards and Technology (NIST), Secure Hash Standard (SHS) ile
belirlenen SHA algoritmasını geliştirmiştir. NIST, 1994'te SHA-1'i yayınladı. Daha sonra SHA-1,
yerini SHA-2’ye bıraktı. SHA-2, dört farklı karma işlevi kullanarak SHA ailesi olarak adlandırılan
dört farklı SHA algoritması sunmaktadır:

• SHA-224 (224 bit)


• SHA-256 (256 bit)
• SHA-384 (384 bit)
• SHA-512 (512 bit)

SHA-2 daha güçlü bir algoritmadır ve MD5'in yerini almaktadır. SHA-256, SHA-384 ve SHA-512,
yeni nesil algoritmalardır.

8.1.1.5. Karma Dosyaları ve Dijital Medya

Bütünlük, veri ve bilgilerin edinildiği anda eksiksiz ve değiştirilmemiş olmasını sağlar. Bu, bir
kullanıcının internetten bir dosya indirdiğinde veya bir adli tıp denetçisinin dijital ortamda
kanıt aradığında önemlidir.

Cisco, tüm IOS imaj dosyalarının bütünlüğünü doğrulamak için, web sitesinde MD5 ve SHA
checksum’ları sunar. Kullanıcı, Şekil 8.4’te gösterildiği gibi, bu MD5 özetini, bir aygıta
yüklenmiş işletim sistemi görüntü dosyasının MD5 özetiyle karşılaştırabilir. Kullanıcı artık

5
işletim sistemi görüntü dosyasını kimsenin kurcalamadığından veya değiştirmediğinden emin
olabilir.

Şekil 8.4. İşletim sistemi görüntü dosyası - MD5 özeti karşılaştırması

Dijital adli tıp alanı, dosyaları barındıran tüm dijital medyayı doğrulamak için karma kullanır.
Örneğin, adli tıp uzmanı, dijital bir klon oluşturmak için dosyaları barındıran medyanın bit bit
(bire-bir) kopyasını ve bir karma değerini oluşturur. İncelemeyi yapan uzman, orijinal
medyanın karma değerini kopya ile karşılaştırır. İki değer eşleşirse, kopyalar aynıdır. Burada,
kararlılığı ve değişmezliği sağlayan, orijinal ve kopyanın her bitinin aynı olmasıdır. Kararlılık,
bazı soruların yanıtlanmasında yardımcı olabilir:

• Uzmanın beklediği dosyalar var mı?


• Veriler bozulmuş veya değiştirilmiş mi?
• Uzman, dosyaların bozuk olmadığını kanıtlayabilir mi?

Bundan sonra adli tıp uzmanı, orijinali sabit bırakarak, herhangi bir dijital kanıt bulmak için
kopyayı inceleyebilir.
6
8.1.1.6. Karma Parolaları

Karma algoritmaları, herhangi bir miktardaki veriyi sabit uzunlukta bir parmak izine veya dijital
karma değerine dönüştürür. Bir suçlu, orijinal veriyi elde etmek için dijital bir karma değerini
tersine çeviremez. Verinin tek biti bile değişirse, farklı bir karma değeri ile sonuçlanır. Bu,
parolaları korumak için kullanılır. Bir sistem, parolayı korunan bir biçimde saklamalıdır ve aynı
zamanda kullanıcının parolasının doğru olduğunu da doğrulayabilmelidir. Böyle bir sistem,
parolayı sabit sürücüde asla depolamaz, yalnızca dijital karma değerini depolar.

8.1.1.7. Uygulamalar

Aşağıdaki durumlarda kriptografik karma işlevlerini kullanınız:

• IP Security (IPsec) veya yönlendirme protokolü kimlik doğrulaması gibi simetrik bir
gizli kimlik doğrulama anahtarı ile kullanıldığında orijinallik kanıtı sağlamak için,
• Kimlik doğrulama protokollerindeki zorluklara tek seferlik ve tek yönlü yanıtlar
üreterek kimlik doğrulaması sağlamak için,
• Dijital olarak imzalanmış sözleşmelerde olduğu gibi mesaj bütünlüğü kontrol kanıtı
sağlamak için,
• Bir tarayıcı ile güvenli bir siteye erişirken onay verilen açık anahtar altyapısı (PKI)
sertifikaları sağlamak için.

Bir karma algoritması seçerken, SHA-256 veya daha üst versiyonunu kullanınız. Güvenlik
açıklarının keşfedilmiş olması nedeniyle SHA-1 ve MD5'ten kaçınınız.

Karma yanlışlıkla yapılan değişiklikleri tespit edebilirken, kasıtlı değişikliklere karşı koruma
sağlayamaz. Karma prosedüründe, göndericinin sağladığı benzersiz bir tanımlama bilgisi
yoktur. Bu, doğru karma işlevini kullandıkları sürece, herhangi bir veri için herkesin bir karma
hesaplayabileceği anlamına gelir. Örneğin, bir mesaj ağdan geçtiğinde, potansiyel bir saldırgan
mesajı yakalayabilir, değiştirebilir, karmayı yeniden hesaplayabilir ve onu mesaja ekleyebilir.
Alıcı cihaz, yalnızca eklenen karma değerine göre doğrulama yapacaktır. Bu nedenle, karma,
ortadaki adam saldırılarına karşı savunmasızdır ve iletilen veriler için güvenlik sağlamaz.

7
8.1.1.8. Karmayı Kırmak

Bir karmayı kırmak için, saldırganın parolayı tahmin etmesi gerekir. Parolaları tahmin etmek
için kullanılan en önemli iki saldırı sözlük (dictionary) ve kaba-kuvvet (brute-force) saldırılarıdır.

Sözlük saldırısı, yaygın olarak kullanılan sözcükleri, cümleleri ve parolaları içeren bir dosya
kullanır. Dosyada, hesaplanmış karma değerleri vardır. Sözlük saldırısı, bir parolanın karma
değerini dosyadaki karma değerleri ile karşılaştırır. Eşleşen bir karma varsa, saldırgan parolayı
öğrenmiş olur.

Kaba kuvvet saldırısı, belirli bir uzunluğa kadar tüm olası karakter kombinasyonlarını dener. Bu
saldırılar, çok fazla işlemci zamanı alır, ancak parolanın bulunması an meselesidir. Bir kaba
kuvvet saldırısını caydırmak için parolaların yeterince uzun olması gerekir. Karma parolalar,
suçlunun bu parolaları elde etmesini daha da zorlaştırır.

8.1.2. Tuzlama (Salting)

8.1.2.1. Tuzlama Nedir?

Tuzlama, parolalar için karma değeri oluşturmayı daha güvenli hale getirir. İki kullanıcı aynı
parolaya sahipse, parola karma değerleri de aynı olacaktır. Tuz, karma işleminden önce
parolaya eklenen rastgele bir karakter dizisidir. Bu, Şekil 8.5’te gösterildiği gibi iki parola için
farklı bir karma sonucu oluşturur. Bir veritabanı, hem karma hem de tuz değerini depolar.

Şekil 8.5. Tuzlama işlemi

8
Şekilde, aynı parolalar için farklı karma değerleri oluşturuluyor çünkü her durumdaki tuz
farklıdır. Tuz, rastgele bir sayı olduğu için gizli olması da gerekmez.

8.1.2.2. Saldırıları Önleme

Tuzlama, bir saldırganın parolaları tahmin etmek için sözlük saldırısı kullanmasını engeller.
Tuzlama ayrıca bir karmayı kırmak için lookup (arama) ve rainbow (gökkuşağı) tablolarının
kullanılmasını imkânsız kılar.

Lookup Tabloları

Bir lookup tablosu, önceden hesaplanmış parola karmalarını, karşılık gelen parolayla birlikte
bir parola sözlüğünde depolar. Saniyede yüzlerce karma araması yapabilen bir veri yapısı
vardır.

Ters Lookup Tabloları

Bu saldırı, siber suçlunun önceden hesaplanmış lookup tablosu olmadan birçok karma
üzerinde sözlük veya kaba kuvvet saldırısı başlatmasına olanak tanır. Siber suçlu, ihlal edilen
veritabanındaki her bir parola karmasını bir kullanıcı listesine yazan bir lookup tablosu
oluşturur. Siber suçlu, bir parola tahmininde bulunur ve onun karma değerini hesaplar. Sonra
da Şekil 8.6’da gösterildiği gibi, parolası bu tahminle eşleşen kullanıcıların bir listesini almak
için lookup tablosunu kullanır. Birçok kullanıcı aynı parolayı kullandığı için saldırı genellikle iyi
sonuç verir.

Şekil 8.6. Ters lookup tablosu

9
Rainbow Tabloları

Rainbow tabloları, lookup tablolarını daha da küçültmek için karma kırma hızından ödün verir.
Daha küçük bir tablo ile aynı miktardaki alanda daha fazla karma depolanabilir.

8.1.2.3. Tuzlama Uygulamak

Kriptografik Olarak Güvenli Sözde Rastgele Sayı Üreticisi (CSPRNG), tuz oluşturmak için en iyi
seçimdir. CSPRNG'ler, öngörülemeyen rastgele bir sayı üretir, bu nedenle kriptografik olarak
güvenlidir.

Tuzlamayı başarılı bir şekilde uygulamak için aşağıdakiler önerilir:

• Tuz, her kullanıcı parolası için benzersiz olmalıdır.


• Bir tuzu asla tekrar kullanmayın.
• Tuz uzunluğu, karma değerinin uzunluğuyla eşleşmelidir.
• Daima güvenli bir sunucudaki web uygulamasında gerçekleştirin.

Anahtar yayma (key stretching) adı verilen bir tekniğin kullanılması da saldırılara karşı
korunmaya yardımcı olacaktır. Anahtar yayma, karma işlevini çok yavaş hale getirir. Bu,
saniyede milyarlarca karmayı hesaplayabilen üst düzey donanımları önler.

Bir veritabanı uygulamasının gizli bir parolayı saklamak ve doğrulamak için kullandığı adımlar
aşağıdaki tabloda gösterilmektedir.

Parolayı Depolamak İçin; Parolayı Doğrulamak İçin;


Uzun, rastgele bir tuz oluşturmak için CSPRNG Kullanıcının tuz ve karmasını veritabanından al.
kullan.
Tuzu parolanın başına ekle. Tuzu parolaya ekle ve aynı karma işleviyle
karıştır.
SHA-256 kriptografik karma işlevini kullan. Elde edilen sonucu, veritabanında saklananla
karşılaştır.
Tuz ve karmayı kullanıcının veritabanına ayrı ayrı Karma değerleri aynı değilse, parola yanlıştır.
kaydet.

10
8.1.3. HMAC

8.1.3.1. HMAC Nedir?

Bir siber suçlunun bir karma üzerinde sözlük veya kaba kuvvet saldırısı başlatmasını önlemek
için bir sonraki adım, karmaya gizli bir anahtar (secret key) eklemektir. Yalnızca karmayı bilen
kişi bir parolayı doğrulayabilir. Bunu yapmanın bir yolu, Anahtarlı Karma Mesaj Doğrulama
Kodu (keyed-Hash Message Authentication Code - HMAC) adı verilen bir karma algoritmasını
kullanarak, karmaya gizli bir anahtar eklemektir. HMAC, karma işlevine girdi olarak ek bir gizli
anahtar kullanır. HMAC kullanımı, kimlik doğrulama (authentication) özelliği de ekleyerek
bütünlüğü güvence altına almada bir adım daha ileri gider. Bir HMAC, Şekil 8.7’de gösterildiği
gibi, kriptografik karma işlevi ile gizli anahtarı birleştiren özel bir algoritma kullanır.

Şekil 8.7. HMAC karma algoritması

Yalnızca gönderici ve alıcı gizli anahtarı bilir. Karma işlevinin çıktısı artık giriş verilerine ve gizli
anahtara bağlıdır. Yalnızca bu gizli anahtara erişimi olan taraflar, HMAC işlevinin özetini
hesaplayabilir. Bu özellik, ortadaki adam saldırılarını engeller ve veri kaynağının
doğrulanmasını sağlar.

11
8.1.3.2. HMAC Operasyonu

Bir göndericinin, bir mesajın geçiş sırasında değişmeden kalmasını ve alıcının mesajın
orijinalliğini doğrulayabileceği bir yol sağlamak istediğini varsayalım.

Şekil 8.8'de gösterildiği gibi, gönderici cihaz verileri karma algoritmasına girer ve sabit
uzunluklu HMAC özetini veya parmak izini hesaplar. Alıcı, iletiye eklenen kimliği doğrulanmış
parmak izini alır.

Şekil 8.8. HMAC değerinin oluşturulması

Şekil 8.9'da gösterildiği gibi, alıcı cihaz öncelikle parmak izini mesajdan kaldırır ve düz metin
mesajı gizli anahtarıyla birlikte aynı karma işlevine girdi olarak kullanır. Alıcı cihaz, gönderilen
parmak izine eşit bir parmak izi hesaplarsa, mesaj kendisine değişmeden gelmiş demektir.
Ayrıca alıcı, yalnızca göndericinin gizli anahtarın bir kopyasına sahip olduğunu bildiği için
mesajın kaynağını da bilir. HMAC işlevi, bu şekilde mesajın doğruluğunu kanıtlar.

12
Şekil 5.9. HMAC değerinin doğrulanması

8.1.3.3. HMAC Uygulamaları

HMAC bir web kullanıcısının kimliğini de doğrulayabilir. Birçok web hizmeti, iletim sırasında
kullanıcı adını ve parolayı şifrelemeyen basit kimlik doğrulamayı kullanır. HMAC kullanarak,
kullanıcı özel bir anahtar (private key) tanımlayıcı ve bir HMAC gönderir. Sunucu, kullanıcının
özel anahtarını araştırır ve bir HMAC oluşturur. Kullanıcının HMAC'i sunucu tarafından
hesaplananla eşleşmelidir.

IPsec kullanan VPN'ler, her paketin kaynağını doğrulamak ve veri bütünlüğü denetimi
sağlamak için HMAC işlevlerine güvenir.

Cisco ürünleri, kimlik doğrulama, veri bütünlüğü ve veri doğrulama amaçları için HMAC
kullanır. Cisco yönlendiriciler, yönlendirme protokolü güncellemelerine kimlik doğrulama
bilgilerini eklemek için gizli anahtarlar kullanarak HMAC benzeri bir karma kullanır. IPsec ağ
geçitleri ve istemcileri, paket bütünlüğünü ve özgünlüğü sağlamak için MD5 ve SHA-1 gibi
karma algoritmalarını HMAC modunda kullanır.

13
Bölüm Özeti

Bu bölümde, bütünlük ile, verilerin, tüm yaşam döngüsü boyunca herhangi bir kişi veya
herhangi bir şey tarafından değişmeden kalmasının nasıl sağlandığı incelenmektedir. Bu
bölüm, veri bütünlüğü denetimlerinin türlerini tartışarak başlar. Karma algoritmaları, parola
tuzlama ve HMAC, siber güvenlik uzmanlarının mesajların ve belgelerin gerçekliğini
doğrulaması için bir yöntem sağlar.

14

You might also like