0Pricing
Cryptology Academy · Pelajaran

Konstruksi HMAC & Pembuktian Keamanan

Pelajari konstruksi ipad/opad dan sifat keamanannya.

Konstruksi HMAC & Pembuktian Keamanan adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.

Selamat Datang

HMAC adalah konstruksi MAC berbasis kunci standar. Rancangannya yang menggunakan hash ganda mencegah serangan perluasan panjang dan memiliki pembuktian keamanan formal yang mereduksi keamanan HMAC menjadi keamanan fungsi hash yang mendasarinya.

Konstruksi HMAC

HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)) Dengan: - K' = K diisi nol hingga ukuran blok B (atau H(K) jika |K|>B) - ipad = 0x36 diulang sebanyak B kali - opad = 0x5C diulang sebanyak B kali

Mengapa ipad dan opad?

ipad (0x36) dan opad (0x5C) adalah konstanta berbeda yang memastikan K' ⊕ ipad ≠ K' ⊕ opad. Keduanya secara efektif membuat dua kunci pseudorandom berbeda dari K, yang digunakan untuk hashing bagian dalam dan bagian luar.

HMAC Langkah demi Langkah

Untuk K=secret, M=message, H=SHA256: 1. K' = K diisi hingga 64 byte 2. inner_key = K' XOR ipad 3. inner_hash = SHA256(inner_key || M) 4. outer_key = K' XOR opad 5. result = SHA256(outer_key || inner_hash)

HMAC dalam Python

import hmac, hashlib key = b'my_secret_key' message = b'Hello, World!' mac = hmac.new(key, message, hashlib.sha256) print(mac.hexdigest()) # 64-char hex string (256 bits)

Mengapa Perluasan Panjang Gagal pada HMAC

Diberikan HMAC(K,M) = SHA256(outer_key || SHA256(inner_key || M)) Penyerang mengetahui SHA256(inner_key || M) = inner_hash. Namun, penyerang tidak dapat memperluasnya—hash bagian luar menerima (outer_key || inner_hash) sebagai input, bukan hanya inner_hash. Penyerang tidak mengetahui outer_key.

Pembuktian Keamanan HMAC (Bellare)

Bellare (1996) membuktikan: jika fungsi hash H adalah fungsi pseudorandom (PRF), maka HMAC juga merupakan PRF. Dalam praktiknya, HMAC-SHA256 sama amannya dengan SHA-256 untuk properti keamanan yang menjadi tujuannya.

Panjang Kunci untuk HMAC

Kunci HMAC harus: - Setidaknya sepanjang L byte (panjang keluaran hash) - Disarankan: tepat L byte data acak - Jika key > block_size: key di-hash terlebih dahulu hingga berukuran block_size - Gunakan os.urandom(32) untuk kunci HMAC-SHA256

Pemotongan HMAC

Keluaran HMAC dapat dipotong hingga setengah panjang keluaran tanpa kehilangan keamanan yang signifikan. TOTP/HOTP memotongnya menjadi 4 byte. MAC TLS juga dipotong. Jangan pernah memotongnya hingga kurang dari 80 bit (10 byte).

HMAC dalam Berbagai Konteks

HMAC-SHA256 digunakan untuk: - TOTP: kode autentikasi (dipotong menjadi 6 digit) - TLS 1.2: MAC sesi (tidak diperlukan dalam TLS 1.3 dengan AEAD) - JWT: penandatanganan HS256 (simetris) - Penandatanganan permintaan API: webhook GitHub, AWS SigV4

HKDF: Derivasi Kunci Berbasis HMAC

HKDF(IKM, salt, info, L) menggunakan HMAC dua kali: 1. Ekstraksi: PRK = HMAC-SHA256(salt, IKM) 2. Ekspansi: OKM = HMAC-SHA256(PRK, info || counter) Digunakan dalam jadwal kunci TLS 1.3, Signal, dan WireGuard untuk derivasi kunci.

Pemeriksaan Singkat

Apa tujuan opad (0x5C yang diulang) dalam HMAC?

Ringkasan

Konstruksi dan pembuktian HMAC telah dipahami. Selanjutnya, kita menerapkan HMAC untuk penandatanganan permintaan API dan melihat cara mencegah serangan pemutaran ulang.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Konstruksi HMAC & Pembuktian Keamanan” gratis?

Ya — teks lengkap “Konstruksi HMAC & Pembuktian Keamanan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Konstruksi HMAC & Pembuktian Keamanan”?

Pelajari konstruksi ipad/opad dan sifat keamanannya. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cryptology Academy?

Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Konstruksi HMAC & Pembuktian Keamanan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?

Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Konsep MAC & Serangan Perluasan Panjang
  2. Konstruksi HMAC & Pembuktian Keamanan
  3. HMAC dalam API: Penandatanganan Permintaan
  4. CMAC & Poly1305: MAC Berbasis Sandi Blok
← Kembali ke Cryptology Academy