9.6. Domain Separation (Separazione di dominio)
9.6. Separazione di dominio
HPKE consente di combinare una variante DHKEM DHKEM(Group, KDF') e un KDF in modo tale che entrambi i KDF siano istanziati dallo stesso KDF. Per progettazione, le chiamate a Extract() ed Expand() all'interno di DHKEM e il resto di HPKE utilizzano domini di input separati. Questo giustifica la loro modellazione come funzioni indipendenti anche se istanziate dallo stesso KDF. Questa separazione di dominio tra DHKEM e il resto di HPKE è ottenuta utilizzando insiemi di valori suite_id prefix-free in LabeledExtract() e LabeledExpand() (KEM... in DHKEM e HPKE... nel resto di HPKE). Ricordiamo che un insieme è prefix-free se nessun elemento è un prefisso di un altro all'interno dell'insieme.
Le istanziazioni future di KEM DEVONO garantire, se Extract() ed Expand() vengono utilizzati internamente, che possano essere modellati come funzioni indipendenti dalle invocazioni di Extract() ed Expand() nel resto di HPKE. Un modo per garantire ciò è utilizzare LabeledExtract() e LabeledExpand() con un suite_id come definito nella Sezione 4, che garantirà la separazione del dominio di input, come delineato sopra. Particolare attenzione deve essere prestata se il KEM invoca direttamente funzioni utilizzate internamente in Extract() o Expand() di HPKE, come Hash() e HMAC() nel caso di HKDF. DEVE essere garantito che gli input a queste invocazioni non possano collidere con gli input alle invocazioni interne di queste funzioni all'interno di Extract() o Expand(). In KeySchedule() di HPKE questo è evitato utilizzando Extract() invece di Hash() sugli input di lunghezza arbitraria info e psk_id.
Il letterale di stringa "HPKE-v1" utilizzato in LabeledExtract() e LabeledExpand() garantisce che tutti i segreti derivati in HPKE siano legati al nome e alla versione dello schema, anche quando possibilmente derivati dallo stesso segreto condiviso Diffie-Hellman o KEM come in un altro schema o versione.