yigityalim
projelerel kitabılabişe alpaylaş
xgithub
siteprojelerel kitabılaboratuvardeğişiklik günlüğü
hakkındakullanımlarşimdiişe alpaylaş
diğerxgithublinkedine-posta
metarssllms.txtsitemap
© 2026 Yiğit Yalım. Tüm hakları saklıdır.
/
Laboratuvarlara Dön
11 May 2026·kriptografi

HMAC Lab

Key + message → tag. Tag karşılaştırmasında naive vs constant-time fark gör — timing attack neden gerçek bir tehdit, görsel olarak izle.

hmac · mac · timing-attack · sha-256

ÖncekiCron BuilderSonrakiHTTP Header Analyzer

HMAC = Hash-based Message Authentication Code. Bir mesajın kim tarafından gönderildiğini doğrular — anahtarı bilen biri, sadece. Webhook signature, API auth, JWT'lerin imza katmanı, session token'ları — hepsi altta HMAC kullanır.

HmacLab — avalanche + timing attack demo
AHMAC-256
BHMAC-256

Constant-time comparison neden önemli?

Kötü kod:

function badEqual(a: string, b: string) {
  if (a.length !== b.length) return false;
  for (let i = 0; i < a.length; i++) {
    if (a[i] !== b[i]) return false;  // ← early return = timing leak
  }
  return true;
}

Saldırgan, doğru tag'i tahmin etmek için tag'i karakter karakter brute-force yapabilir. Doğru karakter bulunca karşılaştırma 1 ns daha uzun sürer — milyonlarca request ile fark istatistiksel olarak ölçülebilir hale gelir.

Doğrusu:

import { timingSafeEqual } from "node:crypto";
return timingSafeEqual(Buffer.from(a), Buffer.from(b));

Web'de crypto.subtle.verify() zaten constant-time. Ama elle yazılmış === karşılaştırmasıyla webhook doğrulaması felakettir.