Golang HMAC Kimlik Doğrulaması

Barancanatbas
Kartaca
Published in
3 min readApr 11, 2023

HMAC Nedir?

HMAC, mesaj bütünlüğünü ve kimlik doğrulama işlemlerini sağlamak için kullanılan bir algoritmadır. HMAC, mesajı işlemek için bir anahtar kullanır ve bir hash fonksiyonunu kullanarak mesajı ve anahtarı işler. İşlenmiş veri, bir koddan (code) oluşan bir çıktı verir.

HMAC, orijinal mesajın değiştirilip değiştirilmediğini doğrulamak için kullanılır. Ayrıca, doğru anahtarı kullanarak mesajı doğrulamak için de kullanılabilir.

HMAC Algoritması Nasıl Çalışır?

HMAC algoritması, iki aşamada çalışır:

  1. Anahtar ve mesajın birleştirilmesi: Öncelikle, HMAC algoritması kullanılacak anahtar ve mesajın birleştirilmesi gereklidir. Bu işlem, mesajın değiştirilmesini önlemek için yapılır. Anahtar ve mesajın birleştirilmesi, ipad ve opad adı verilen iki sabit değerle birleştirilir. ipad sabit değeri, 0x36 bayt değeri tekrarlanarak oluşturulur. opad sabit değeri ise, 0x5c bayt değeri tekrarlanarak oluşturulur. Bu iki değer, anahtar ve mesajın birleştirilmesinde kullanılır.
  2. Hash Fonksiyonunun Kullanılması: İkinci aşamada, ipad ve opad sabitleri, anahtar ve mesajın birleştirilmesinde kullanıldıktan sonra, bir hash fonksiyonu kullanılarak işlenmiş veri elde edilir. HMAC algoritması, farklı hash fonksiyonlarını kullanabilir, ancak genellikle SHA-256 veya SHA-512 kullanılır. Hash fonksiyonu, işlenmiş veri üzerinde çalışarak bir kod oluşturur. Bu kod, mesajın doğruluğunu doğrulamak ve mesajın kimlik doğrulama işlemlerinde kullanılır.

HMAC Algoritması Hangi Hash Fonksiyonunu Kullanır?

HMAC, bir hash fonksiyonu olarak MD5, SHA-1, SHA-256, SHA-384 ve SHA-512 gibi çeşitli hash fonksiyonlarını kullanabilir. Bunların arasında en yaygın olarak kullanılanlar SHA-256 ve SHA-512'dir.

HMAC Algoritmasının Avantajları ve Dezavantajları Nelerdir?

Avantajları

  • HMAC, hem mesaj bütünlüğünü hem de kimlik doğrulama işlemlerini sağlar.
  • HMAC, çeşitli hash fonksiyonlarını kullanabilir ve bunları değiştirerek daha güvenli hale getirebilir.
  • HMAC, çok hızlı ve verimlidir.

Dezavantajları

  • HMAC, anahtarın paylaşımı gerektirdiği için, anahtarın güvenli bir şekilde saklanması gereklidir.
  • HMAC, zaman zaman kolaylıkla öngörülebilir olabilir.

Golang ile HMAC Middleware Örneği

Yukarıdaki kod, hmacMiddleware adlı bir middleware fonksiyonu tanımlar. Bu fonksiyon, secretKey adlı bir anahtar parametresi alır ve bu anahtar kullanılarak bir HMAC işlemi gerçekleştirir. Daha sonra, bu HMAC değeri HTTP isteği headerına eklenir.

router.Use yöntemi kullanılarak, hmacMiddleware fonksiyonu gin tarafından sağlanan bir middleware olarak kullanılır. Bu middleware, /message URL'sine yapılan GET isteğinde çalışır ve HMAC değerini doğrular. HMAC değeri doğru değilse, HTTP yanıtı 401 Unauthorized döndürülür.

submitForm fonksiyonu data ve key parametreleri ile şifreler ve bunu header olarak ekler.

Bu makalede, HMAC’nin avantajları ve dezavantajları, nasıl çalıştığı ve golang üzerinde örneklerini inceledik. HMAC’nin avantajları arasında, güvenlik açısından daha güvenilir olması, esneklik, taşınabilirlik ve performans yer almaktadır. HMAC’nin dezavantajları arasında, anahtar yönetimi ve anahtar uzunluğu gibi konular vardır. Umarım keyifli ve faydalı olmuştur ❤

kaynaklar;

--

--