Golang HMAC Kimlik Doğrulaması
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:
- 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
veopad
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. - Hash Fonksiyonunun Kullanılması: İkinci aşamada,
ipad
veopad
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 ❤