Cryptology Academy · Ders

API'lerde HMAC: İstek İmzalama

HMAC tabanlı istek imzalamayı ve tekrar oynatma saldırılarını önlemeyi uygulayın.

3. ders / 413 adım

API'lerde HMAC: İstek İmzalama, CoddyKit'te ücretsiz bir Cryptology Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cryptology Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cryptology Academy kursu toplamda 4 dersten oluşur.

Hoş Geldiniz

HMAC tabanlı istek imzalama, API çağrılarını kimlik doğrulamasından geçirmek için AWS, GitHub, Stripe ve Twilio tarafından kullanılır. Bu derste eksiksiz bir istek imzalama sistemi oluşturacağız.

API İsteği İmzalama Neden Gereklidir?

URL'lerdeki API anahtarları proxy sunucularında, tarayıcı geçmişinde ve sunucu günlüklerinde kaydedilebilir. İstek imzalama, isteğin tüm gövdesini MAC'e dahil eder; böylece yükün değiştirilmediği ve anahtarın tek başına açığa çıkmadığı garanti edilir.

AWS Signature Version 4

AWS SigV4 şu değerleri hesaplar: 1. Kurallı istek (yöntem + URL + başlıklar + gövde özeti) 2. İmzalanacak dize (tarih + bölge + hizmet + kurallı istek özeti) 3. İmzalama anahtarı = HMAC(HMAC(HMAC(HMAC('AWS4'+secret, date), region), service), 'aws4_request') 4. İmza = HMAC(signing_key, string_to_sign)

GitHub Web Kancası Doğrulaması

GitHub her web kancası yükünü imzalar: X-Hub-Signature-256: sha256=HMACHEX Doğrulama: import hmac expected = 'sha256=' + hmac.new(secret, payload, 'sha256').hexdigest() hmac.compare_digest(expected, received_signature)

Yeniden Oynatma Saldırısı Tehdidi

Bir saldırgan geçerli biçimde imzalanmış bir isteği ele geçirirse bunu birden çok kez yeniden gönderebilir. Bir kez imzalanan 100 dolarlık bir para transferi 1000 kez yeniden oynatılabilir. HMAC tek başına yeniden oynatma saldırılarını ÖNLEMEZ.

Zaman Damgası Tabanlı Yeniden Oynatma Önleme

İmzalanan mesaja bir zaman damgası ekleyin. 5 dakikadan eski istekleri reddedin. Stripe, zaman damgası içeren X-Stripe-Signature gönderir. GitHub ise zaman damgası tabanlı olmayan X-GitHub-Delivery (UUID) kullanır.

Nonce Tabanlı Yeniden Oynatma Önleme

Her isteğe rastgele bir nonce ekleyin. Sunucu, kullanılan nonce'ları (TTL içeren Redis'te) saklar. Daha önce görülmüş bir nonce içeren her isteği reddedin. Dağıtık sistemlerde zaman damgalarından daha güvenilirdir.

İstek İmzalama Uygulaması

import hmac, hashlib, time, os def sign_request(secret, method, path, body, timestamp=None): ts = timestamp or str(int(time.time())) payload = f'{method}\n{path}\n{ts}\n' + hashlib.sha256(body).hexdigest() sig = hmac.new(secret.encode(), payload.encode(), 'sha256').hexdigest() return ts, sig

Sunucu Tarafı Doğrulaması

def verify_request(secret, method, path, body, ts, received_sig): # Check timestamp freshness if abs(time.time() - int(ts)) > 300: # 5 minutes return False # Recompute and compare _, expected = sign_request(secret, method, path, body, ts) return hmac.compare_digest(expected, received_sig)

HMAC ile JWT (HS256)

HS256 JWT'leri, paylaşılan bir gizli anahtarla HMAC-SHA256 kullanır. Sunucu hem imzalama hem de doğrulama işlemini yapar. Sınırlama: anahtara sahip olan her taraf sahte belirteçler oluşturabilir. Asimetrik güven (üçüncü taraf kimlik doğrulaması) için RS256 veya ES256 kullanın.

Anahtar Döndürme Stratejisi

HMAC anahtarlarını düzenli aralıklarla döndürün: yeni bir anahtar oluşturun, geçiş süresi boyunca (24 saat) hem eski hem de yeni anahtarı destekleyin, ardından eski anahtarı kullanımdan kaldırın. AWS SigV4, günlük döndürmeyi etkinleştirmek için anahtarları tarih içeren gizli bilgilerden türetir.

Kısa Kontrol

HMAC ile istek imzalamak, yeniden oynatma saldırılarını tek başına önlemek için neden yeterli değildir?

Özet

Yeniden oynatma korumalı HMAC istek imzalama uygulandı. Sırada blok şifreleme tabanlı MAC seçenekleri olarak CMAC ve Poly1305'i karşılaştıracağız.
Başlamak ücretsiz

Yapay zeka eğitmeniyle Cryptology Academy öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
67
Dersler
261

Sıkça Sorulan Sorular

“API'lerde HMAC: İstek İmzalama” dersi ücretsiz mi?

Evet — “API'lerde HMAC: İstek İmzalama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cryptology Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cryptology Academy kursu toplamda 4 dersten oluşur.

“API'lerde HMAC: İstek İmzalama” dersinde ne öğreneceğim?

HMAC tabanlı istek imzalamayı ve tekrar oynatma saldırılarını önlemeyi uygulayın. Cryptology Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cryptology Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cryptology Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“API'lerde HMAC: İstek İmzalama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cryptology Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cryptology Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. MAC Kavramları ve Uzunluk Genişletme Saldırıları
  2. HMAC Yapısı ve Güvenlik İspatı
  3. API'lerde HMAC: İstek İmzalama
  4. CMAC ve Poly1305: Blok Şifresi MAC'leri
← Cryptology Academy Sayfasına Dön