Kaynak Kimlik Doğrulaması ve HMAC

Günümüzde bilgi güvenliğinin temel hedefleri gizlilik (Confidentiality), bütünlük (Integrity) ve kimlik doğrulama (Authentication) olarak özetlenebilir. Bir verinin şifrelenmiş olması her zaman yeterli değildir. Çünkü şifrelenmiş bir mesajın gerçekten doğru kişiden gelip gelmediğini veya iletim sırasında değiştirilip değiştirilmediğini anlamak gerekir.

Örneğin;

  • Bir banka sunucusundan geldiği iddia edilen bir ödeme talimatı,

  • Bir yazılım güncelleme dosyası,

  • Bir IoT cihazından gelen sensör verisi,

  • Bir VPN tünelindeki paket,

gerçek kaynaktan mı geldi? Yoksa saldırgan tarafından değiştirilmiş sahte bir veri mi?

Bu sorunun cevabı Kaynak Kimlik Doğrulaması (Source Authentication) ile verilir.

Kaynak kimlik doğrulaması için en yaygın kullanılan yöntemlerden biri HMAC (Hash Message Authentication Code) algoritmasıdır.


Kaynak Kimlik Doğrulaması Nedir?

Kaynak kimlik doğrulaması;

Bir mesajın gerçekten beklenen gönderici tarafından oluşturulduğunu doğrulama işlemidir.

Bu işlem aşağıdaki iki güvenliği aynı anda sağlar.

  • Mesaj gerçekten doğru kaynaktan geldi.

  • Mesaj iletim sırasında değiştirilmedi.

Dolayısıyla HMAC;

  • Authentication (Kimlik Doğrulama)

  • Integrity (Bütünlük)

özelliklerini aynı anda sağlar.


Şifreleme Tek Başına Neden Yeterli Değildir?

Birçok kişi AES gibi güçlü bir şifreleme algoritmasının tek başına yeterli olduğunu düşünür.

Aslında değildir.

Örneğin;

Ali, Ayşe'ye AES ile şifrelenmiş bir mesaj gönderiyor.

AES(Message)

Bir saldırgan;

  • mesajı silebilir,

  • değiştirebilir,

  • kendi mesajını oluşturabilir.

Ayşe yalnızca şifre çözebildiği için mesajın gerçekten Ali'den gelip gelmediğini anlayamaz.

İşte bu noktada HMAC devreye girer.


Mesaj Kimlik Doğrulama Kodu (MAC)

MAC (Message Authentication Code)

Bir mesaj için üretilen özel bir doğrulama bilgisidir.

Amaç;

  • mesajın değiştirilmediğini doğrulamak

  • mesajın doğru kaynaktan geldiğini kanıtlamaktır.

Genel yapı şöyledir.

Mesaj
+
Gizli Anahtar
MAC
Mesaj + MAC

Alıcı aynı işlemi tekrar yapar.

MAC değerleri aynıysa;

✔ Mesaj değişmemiştir.

✔ Gönderen doğru kişidir.


HMAC Nedir?

HMAC (Hash Message Authentication Code)

Hash fonksiyonunu gizli bir anahtarla birlikte kullanan bir doğrulama yöntemidir.

Normal hash;

SHA-256(Message)

HMAC ise;

HMAC(Key, Message)

şeklinde çalışır.

Buradaki fark;

Hash fonksiyonuna yalnızca mesaj değil,

aynı zamanda

gizli anahtar (Secret Key)

da eklenmesidir.


HMAC Nasıl Çalışır?

Temel yapı şöyledir.

Mesaj
Secret Key
Hash Fonksiyonu
HMAC

Alıcı tarafta ise;

Mesaj
Aynı Secret Key
Hash
Yeni HMAC
Karşılaştır

Sonuç;

Eşitse
Mesaj Doğru
Farklıysa
Mesaj Değişmiş

HMAC Neden Güvenlidir?

Çünkü saldırgan yalnızca mesajı bilse bile

gizli anahtarı bilmediği sürece doğru HMAC değerini üretemez.

Örneğin;

Mesaj
Merhaba

Hash

SHA256(Merhaba)

herkes tarafından hesaplanabilir.

Fakat

HMAC(Key, Merhaba)

hesaplanamaz.

Çünkü

Secret Key

yalnızca gönderici ve alıcı tarafından bilinmektedir.


HMAC'in Çalışma Mantığı

Örneğin

Mesaj
Transfer=1000 TL

Gizli Anahtar

Secret123

Gönderici;

HMAC(
Secret123,
Transfer=1000 TL
)

hesaplar.

Sonuç örnek olarak

8F3A8D9C...

olsun.

Gönderilen veri

Transfer=1000 TL
HMAC
8F3A8D9C...

şeklindedir.


Saldırgan Mesajı Değiştirirse

Saldırgan

Transfer=9000 TL

yaparsa

eski HMAC artık geçersiz olacaktır.

Alıcı

Transfer=9000 TL

için yeniden hesaplama yapar.

Sonuç

A6D9FF44...

çıkar.

Eski değer

8F3A8D9C...

olduğu için

Doğrulama Başarısız

mesajı alınır.


HMAC ile SHA Arasındaki Fark

SHA-256        HMAC-SHA256
Anahtar kullanılmaz        Gizli anahtar kullanılır
Sadece bütünlük sağlar        Kimlik doğrulama + bütünlük sağlar
Herkes hesaplayabilir        Sadece anahtarı bilen hesaplayabilir
Dijital imza değildir        Dijital imza değildir ancak kimlik doğrular

Kullanılan Hash Algoritmaları

HMAC birçok hash algoritmasıyla kullanılabilir.

Algoritma        Güvenlik
HMAC-MD5        Eski sistemler
HMAC-SHA1        Eski sistemler
HMAC-SHA224        Güvenli
HMAC-SHA256        Çok yaygın
HMAC-SHA384        Yüksek güvenlik
HMAC-SHA512        Çok yüksek güvenlik
HMAC-SHA3        Yeni nesil

En yaygın kullanım

HMAC-SHA256

ve

HMAC-SHA512

algoritmalarıdır.


HMAC Nerelerde Kullanılır?

SSL/TLS

İstemci ile sunucu arasındaki veri paketlerinin değiştirilmediğini doğrular.


SSH

SSH oturumundaki her paket için HMAC hesaplanır.

Paket
HMAC
Gönder

Alıcı aynı işlemi yaparak paketin değiştirilmediğini doğrular.


IPsec VPN

IPsec ESP ve AH protokollerinde

paket bütünlüğü

ve

kaynak doğrulaması

için HMAC kullanılır.


OpenVPN

VPN paketleri

AES
+
HMAC

ile korunur.


API Güvenliği

Amazon AWS

Google Cloud

Azure

GitHub API

Stripe

PayPal

gibi birçok servis HMAC tabanlı API imzaları kullanır.

İstemci;

İstek
+
Secret Key
HMAC

oluşturur.

Sunucu aynı hesabı yapar.

Sonuç aynıysa istek kabul edilir.


Yazılım Güncellemeleri

Firmware

BIOS

Router güncellemeleri

bazı sistemlerde HMAC ile doğrulanır.


IoT Sistemleri

Akıllı sensörler

PLC cihazları

Endüstriyel kontrol sistemleri

HMAC kullanarak sahte veri gönderimini engeller.


HMAC'in Avantajları

  • Çok hızlıdır.

  • Hesaplama maliyeti düşüktür.

  • Donanım hızlandırması destekler.

  • Güçlü hash algoritmalarıyla birlikte çalışır.

  • Mesaj değişikliklerini anında tespit eder.

  • SSL, SSH ve IPsec gibi standartlarda yer alır.

  • Simetrik anahtar kullandığı için verimlidir.


HMAC'in Dezavantajları

  • Gönderici ve alıcının aynı gizli anahtarı paylaşması gerekir.

  • Anahtar güvenliği kritik öneme sahiptir; ele geçirilirse HMAC üretilebilir.

  • İnkâr edememe (Non-repudiation) sağlamaz. Aynı anahtarı paylaşan taraflar birbirlerinin yerine HMAC oluşturabilir.

  • Dijital imzanın yerine geçmez.


HMAC ile Dijital İmza Arasındaki Fark

Özellik        HMAC        Dijital İmza
Gizli Anahtar        Ortak (Simetrik)        Özel/Açık Anahtar (Asimetrik)
Hız        Çok hızlı        Daha yavaş
Kimlik Doğrulama        Evet        Evet
Veri Bütünlüğü        Evet        Evet
İnkâr Edememe        Hayır        Evet
Anahtar Yönetimi        Ortak anahtar paylaşımı gerekir        Açık anahtar altyapısı (PKI) kullanılır

Uygulamalı OpenSSL Örneği

Bir dosya oluşturalım:

echo "Merhaba Dünya" > mesaj.txt

HMAC-SHA256 oluşturalım:

openssl dgst -sha256 -hmac "GizliAnahtar123" mesaj.txt

Örnek çıktı:

HMAC-SHA2-256(mesaj.txt)=
3bbd3f76c14b...

Dosyanın içeriğini değiştirelim:

echo "Merhaba Türkiye" > mesaj.txt

Aynı komutu tekrar çalıştırdığımızda HMAC değeri tamamen farklı olacaktır. Bu, en küçük veri değişikliğinin bile doğrulama kodunu değiştirdiğini ve bütünlüğün bozulduğunu gösterir.


Laboratuvar Çalışması

Senaryo

Bir şirketin Ankara şubesi ile İstanbul veri merkezi arasında dosya transferi yapılmaktadır.

Gönderilen finans raporlarının:

  • gerçekten Ankara şubesinden geldiğinin,

  • iletim sırasında değiştirilmediğinin

garanti edilmesi istenmektedir.

Görevler

  1. OpenSSL kullanarak örnek bir dosya oluşturun.

  2. Aynı dosya için HMAC-SHA256 değeri üretin.

  3. Dosyanın tek bir karakterini değiştirin.

  4. HMAC değerini yeniden hesaplayın.

  5. İlk ve ikinci HMAC değerlerini karşılaştırın.

  6. Sonuçları raporlayarak HMAC'in veri bütünlüğü ve kaynak kimlik doğrulamasına nasıl katkı sağladığını açıklayın.


En İyi Güvenlik Uygulamaları

  • HMAC-SHA256 veya HMAC-SHA512 kullanın.

  • MD5 ve SHA-1 tabanlı HMAC kullanımlarını yeni sistemlerde tercih etmeyin.

  • Gizli anahtarları güçlü, rastgele ve yeterli uzunlukta oluşturun.

  • Anahtarları güvenli depolama çözümlerinde (ör. HSM veya güvenli anahtar kasaları) saklayın.

  • Anahtarları düzenli aralıklarla yenileyin (key rotation).

  • HMAC'i gerektiğinde şifreleme ile birlikte kullanın; çünkü HMAC veri bütünlüğü ve kimlik doğrulaması sağlar, verinin gizliliğini sağlamaz.


Sonuç

HMAC (Hash Message Authentication Code), modern bilgi güvenliğinin en önemli yapı taşlarından biridir. Paylaşılan bir gizli anahtar ile birlikte güçlü bir karma (hash) algoritmasını kullanarak hem kaynak kimlik doğrulaması hem de veri bütünlüğü sağlar. Bu sayede, mesajın gerçekten beklenen göndericiden geldiği ve iletim sırasında değiştirilmediği doğrulanabilir.

TLS/SSL, SSH, IPsec, VPN çözümleri, bulut servisleri ve API güvenliği gibi birçok kritik teknolojide HMAC'in yaygın olarak kullanılmasının temel nedeni; yüksek performansı, güvenilirliği ve güçlü güvenlik garantileridir. Ancak HMAC, veriyi şifrelemez ve inkâr edememe özelliği sağlamaz. Bu nedenle, gizlilik gereksinimi olan senaryolarda HMAC'in şifreleme mekanizmalarıyla, hukuki doğrulama gerektiren durumlarda ise dijital imza çözümleriyle birlikte değerlendirilmesi en doğru yaklaşımdır.


HMAC ve Dijital İmzalar, verinin bütünlüğünü ve kaynağını doğrulamak için kullanılsa da altlarında yatan matematiksel felsefe ve kullanım amaçları tamamen farklıdır.

İki teknoloji arasındaki temel farkları ve kullanım senaryolarını aşağıda bulabilirsiniz.

1. Temel Fark: Simetrik ve Asimetrik Yapı

  • HMAC (Simetrik Kriptografi): İki tarafın (gönderici ve alıcı) aynı gizli anahtarı paylaştığı sistemlere dayanır. Kilitleyen anahtar ile kilidi açan (doğrulayan) anahtar aynıdır.

  • Dijital İmza (Asimetrik Kriptografi): Açık anahtarlı şifreleme (Public Key Cryptography) kullanır. Göndericinin veriyi imzaladığı gizli bir anahtarı (Private Key) ve dünyadaki herkesin bu imzayı doğrulayabileceği açık bir anahtarı (Public Key) vardır.

2. En Kritik Ayrım: İnkar Edememezlik (Non-Repudiation)

Kriptografide bu iki yöntem arasındaki en büyük uçurum "inkar edememezlik" özelliğidir.

  • HMAC'te inkar edilebilir: Alice ve Bob aynı gizli anahtarı paylaşıyorsa, oluşturulan bir HMAC değerini ikisi de üretmiş olabilir. Üçüncü bir kişiye (örneğin bir denetçiye) "Bu mesajı kesinlikle Alice gönderdi" diyemezsiniz. Çünkü anahtar Bob'da da vardır; Bob mesajı kendisi üretip Alice'ten gelmiş gibi göstermiş olabilir.

  • Dijital İmzada inkar edilemez: Mesaj, sadece Alice'in bildiği gizli anahtar (Private Key) ile imzalanır. Bob veya dünyadaki herhangi biri, Alice'in açık anahtarını kullanarak imzayı doğruladığında, bu mesajın sadece ve sadece Alice tarafından oluşturulduğundan emin olur. Alice "O mesajı ben göndermedim" diyemez (anahtarını çaldırmadığı sürece).

Karşılaştırma Özeti

Özellik

HMAC

Dijital İmza (Örn. RSA, ECDSA)

Kriptografik Temel

Simetrik (Tek Ortak Anahtar) + Hash

Asimetrik (Açık ve Gizli Anahtar Çifti)

İnkar Edememezlik

Yok (Anahtarı bilen herkes MAC üretebilir)

Var (Sadece gizli anahtar sahibi imzalayabilir)

Performans / Hız

Çok Yüksek (Sadece Hash işlemi yapar)

Düşük (Ağır matematiksel hesaplamalar gerektirir)

Anahtar Dağıtımı

Zor (Gizli anahtar güvenli bir kanaldan iletilmeli)

Kolay (Açık anahtar herkesle paylaşılabilir)

Doğrulayan Kişi

Sadece ortak gizli anahtarı bilen taraf

Açık anahtara sahip olan herkes

Hangisi Hangi Durumda Tercih Edilmelidir?

Seçim yaparken temel kural şudur: Hız mı gerekiyor, yoksa evrensel bir kanıt mı?

HMAC'in Tercih Edilmesi Gereken Durumlar

HMAC; hızın kritik olduğu, yüksek hacimli veri akışının yaşandığı ve tarafların zaten birbirine güvendiği veya önceden güvenli bir şekilde anahtar paylaşabildiği sistemlerde kullanılır.

  • API Kimlik Doğrulaması: Sunucu ile istemci arasındaki isteklerde (Örn. JSON Web Token - JWT imzalanması veya bulut servislerine yapılan API çağrıları).

  • Ağ İletişim Protokolleri: IPsec (VPN'ler) veya TLS/SSL gibi protokollerde, saniyede binlerce ağ paketinin yolda değiştirilmediğini mikrosaniyeler içinde doğrulamak için kullanılır. Dijital imza burada sistemi yavaşlıktan tamamen kilitlerdi.

  • Kapalı Sistemler: Aynı mimari içindeki sunucuların veya mikroservislerin birbiriyle haberleşmesi.

Dijital İmzanın Tercih Edilmesi Gereken Durumlar

Dijital imza; verinin kaynağının üçüncü taraflarca veya kamuoyu tarafından doğrulanması gerektiğinde ve inkar edememezliğin yasal/mimari bir zorunluluk olduğu durumlarda kullanılır.

  • Yazılım ve İşletim Sistemi Güncellemeleri: Bir Linux dağıtımı veya yazılım şirketi, paket güncellemelerini dijital olarak imzalar. Milyonlarca kullanıcı sistemi (istemci), sadece "açık anahtarı" kullanarak paketin gerçekten resmi depodan geldiğini ve yolda bir saldırgan tarafından modifiye edilmediğini doğrular.

  • E-posta ve Belge İmzası: Yasal sözleşmelerin, resmi evrakların veya kritik e-postaların (PGP/GPG ile) kaynağının kanıtlanması.

  • Kimlik Sertifikaları: Web siteleri (HTTPS), istemcilere "Ben gerçekten iddia ettiğim kurumum" diyebilmek için Sertifika Otoritelerinden (CA) aldıkları dijital imzalı sertifikaları sunarlar.

Önemli Not: Modern sistemler (örneğin TLS/HTTPS) genellikle ikisini birleştirir. İletişimin başında kimliği kanıtlamak için Dijital İmza (Asimetrik) kullanılır. Güven sağlandıktan ve geçici bir oturum anahtarı paylaşıldıktan sonra, veri akışının hızlı olması için işlemin geri kalanında HMAC (Simetrik) tercih edilir.

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu