8.2. Errors (Errori)
8.2. Errori
Le API HPKE pubbliche di alto livello specificate in questo documento sono tutte fallibili. Queste includono le funzioni Setup e tutte le funzioni del contesto di cifratura. Ad esempio, Decap() può fallire se la chiave incapsulata enc non è valida, e Open() può fallire se la decifratura del testo cifrato fallisce. Gli errori espliciti generati in questa specifica, insieme alle condizioni che portano a ciascun errore, sono i seguenti:
-
ValidationError: Fallimento della validazione dell'input o dell'output KEM; Sezione 4.1.
-
DeserializeError: Fallimento della deserializzazione della chiave pubblica o privata; Sezione 4.
-
EncapError: Fallimento di Encap(); Sezione 4.
-
DecapError: Fallimento di Decap(); Sezione 4.
-
OpenError: Fallimento di Open() AEAD del Context; Sezioni 4 e 5.2.
-
MessageLimitReachedError: Overflow del numero di sequenza AEAD del Context; Sezioni 4 e 5.2.
-
DeriveKeyPairError: Fallimento della derivazione della coppia di chiavi; Sezione 7.1.3.
Possono verificarsi anche errori impliciti. Ad esempio, alcune classi di fallimenti, ad esempio chiavi pubbliche del destinatario malformate, potrebbero non produrre errori espliciti. Ad esempio, per la variante DHKEM descritta in questa specifica, l'algoritmo Encap() fallisce quando viene fornita una chiave pubblica del destinatario non valida. Tuttavia, altri algoritmi KEM potrebbero non avere un algoritmo efficiente per verificare la validità delle chiavi pubbliche. Di conseguenza, un errore equivalente potrebbe non manifestarsi fino alla decifratura AEAD presso il destinatario. Come altro esempio, la funzione AuthDecap() di DHKEM produrrà un output non valido se viene fornita la chiave pubblica del mittente sbagliata. Questo errore non è rilevabile fino alla successiva decifratura AEAD.
Gli errori in questo documento sono intesi come guida per gli implementatori. Non sono un elenco esaustivo di tutti gli errori che un'implementazione potrebbe emettere. Ad esempio, futuri KEM potrebbero avere casi di fallimento interni, o un'implementazione potrebbe esaurire la memoria.
Il modo in cui questi errori sono espressi in un'API o gestiti dalle applicazioni è un dettaglio specifico dell'implementazione. Ad esempio, alcune implementazioni potrebbero interrompere o andare in panico in caso di fallimento DeriveKeyPairError dato che si verifica solo con probabilità trascurabile, mentre altre implementazioni potrebbero riprovare l'operazione DeriveKeyPair fallita. Vedere la Sezione 7.1.3 per ulteriori informazioni. Come altro esempio, alcune implementazioni del DHKEM specificato in questo documento potrebbero scegliere di trasformare ValidationError da DH() in EncapError o DecapError da Encap() o Decap(), rispettivamente, mentre altre potrebbero scegliere di sollevare ValidationError non modificato.
Le applicazioni che utilizzano le API HPKE non dovrebbero presumere che gli errori qui siano completi, né dovrebbero presumere che determinate classi di errori si manifesteranno sempre allo stesso modo per tutte le suite crittografiche. Ad esempio, il DHKEM specificato in questo documento emetterà un DeserializationError o ValidationError se una chiave pubblica KEM non è valida. Tuttavia, un nuovo KEM potrebbe non avere un algoritmo efficiente per determinare se una chiave pubblica è valida o meno. In questo caso, una chiave pubblica non valida potrebbe invece produrre un OpenError quando si tenta di decifrare un testo cifrato.