HKDF
HKDF je jednoduchá funkce pro odvození klíče (KDF) postavená na využití kryptografické hašovací funkce v kombinaci s tajným klíčem (HMAC). Její princip je následující: nejprve je vstup kryptograficky hašován s případným dodatečným klíčem pro HMAC plnícím funkci soli, čímž je získán materiál s pravděpodobně „koncentrovanější entropií“, který slouží jako klíč pro druhou fázi. V druhé fázi je postupně HMAC funkce s tímto klíčem opakovaně aplikována na předchozí výstup (v prvním iteraci na samé nuly), volitelný konstantní řetězec a zvyšující se jednobajtový čítač. Z výstupů je kromě vstupu pro další iteraci vytvářen zřetězením i výstup celé HKDF, který je následně oříznut na požadovanou délku, není-li dělitelná délkou výstupu použité HMAC funkce.
HKDF je standardizován v RFC 5869.[1]
Podle RFC 5869 může být funkce využita například v protokolech IKE a PANA.[1]
Vzorová implementace v Pythonu
[editovat | editovat zdroj]Následující vzorová implementace v Pythonu využívá jako funkci HMAC SHA-256:
#!/usr/bin/env python3
import hashlib
import hmac
from math import ceil
def hmac_sha256(key, data):
return hmac.new(key, data, hashlib.sha256).digest()
def hkdf(length: int, ikm, salt: bytes = b"", info: bytes = b"") -> bytes:
if len(salt) == 0:
salt = bytes([0]*hash_len)
prk = hmac_sha256(salt, ikm)
t = b""
okm = b""
for i in range(ceil(length / len(prk))):
t = hmac_sha256(prk, t + info + bytes([1+i]))
okm += t
return okm[:length]
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku HKDF na anglické Wikipedii.
- ↑ a b KRAWCZYK, Hugo; ERONEN, Pasi. HMAC-based Extract-and-Expand Key Derivation Function (HKDF). Request for Comments [online]. Květen 2010. Dostupné online. ISSN 2070-1721. (anglicky)
Externí odkazy
[editovat | editovat zdroj]- KRAWCZYK, Hugo. Cryptographic Extraction and Key Derivation: The HKDF Scheme [online]. 2010-05-10. Teoretický základ. Dostupné online. (anglicky)
- KRAWCZYK, Hugo; ERONEN, Pasi. HMAC-based Extract-and-Expand Key Derivation Function (HKDF). Request for Comments [online]. Květen 2010. Dostupné online. ISSN 2070-1721. (anglicky)