7.2.1. Input Length Restrictions (Restrizioni sulla lunghezza dell'input)
7.2.1. Input Length Restrictions (Restrizioni sulla lunghezza dell'input)
Questo documento definisce LabeledExtract() e LabeledExpand() basandosi sui KDF elencati sopra. Queste funzioni aggiungono prefissi ai rispettivi input ikm e info prima di chiamare le funzioni Extract() ed Expand() del KDF. Ciò porta a una riduzione della lunghezza massima di input disponibile per gli input psk, psk_id, info, exporter_context, ikm, cioè i parametri di lunghezza variabile forniti dalle applicazioni HPKE. La tabella seguente elenca le lunghezze massime consentite di questi campi per i KDF definiti in questo documento, come limiti inclusivi in byte:
| Input | HKDF-SHA256 | HKDF-SHA384 | HKDF-SHA512 |
|---|---|---|---|
| psk | 2^61 - 88 | 2^125 - 152 | 2^125 - 152 |
| psk_id | 2^61 - 93 | 2^125 - 157 | 2^125 - 157 |
| info | 2^61 - 91 | 2^125 - 155 | 2^125 - 155 |
| exporter_context | 2^61 - 120 | 2^125 - 200 | 2^125 - 216 |
| ikm (DeriveKeyPair) | 2^61 - 84 | 2^125 - 148 | 2^125 - 148 |
Tabella 4: Limiti di input dell'applicazione
Ciò mostra che i limiti sono solo marginalmente più piccoli della lunghezza massima di input della funzione hash sottostante; questi limiti sono grandi e improbabilmente raggiungibili nelle applicazioni pratiche. Le specifiche future che definiscono nuovi KDF DEVONO specificare limiti per questi parametri di lunghezza variabile.
Il limite RACCOMANDATO per questi valori è 64 byte. Ciò consentirebbe l'interoperabilità con implementazioni che allocano staticamente memoria per questi input per evitare allocazioni di memoria.
I valori per psk, psk_id, info e ikm, che sono input a LabeledExtract(), sono stati calcolati con la seguente espressione:
max_size_hash_input - Nb - size_version_label -
size_suite_id - size_input_label
Il valore per exporter_context, che è un input a LabeledExpand(), è stato calcolato con la seguente espressione:
max_size_hash_input - Nb - Nh - size_version_label -
size_suite_id - size_input_label - 2 - 1
In queste equazioni, max_size_hash_input è la lunghezza massima di input della funzione hash sottostante in byte, Nb è la dimensione del blocco della funzione hash sottostante in byte, size_version_label è la dimensione di "HPKE-v1" in byte ed è uguale a 7, size_suite_id è la dimensione di suite_id in byte ed è uguale a 5 per DHKEM (rilevante per ikm) e 10 per il resto di HPKE (rilevante per psk, psk_id, info ed exporter_context), e size_input_label è la dimensione in byte dell'etichetta utilizzata come parametro a LabeledExtract() o LabeledExpand(), il cui massimo è 13 tra tutte le etichette in questo documento.