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.

Podle RFC 5869 může být funkce využita například v protokolech IKE a PANA.

Vzorová implementace v Pythonu 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(*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 Reference

Externí odkazy

Kategorie:Funkce pro odvození klíče